{"version":3,"file":"js/715-3580743aae63c6954a5f.js","mappings":"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","sources":["webpack://app/./node_modules/@sentry/utils/esm/clientreport.js","webpack://app/./node_modules/@sentry/browser/esm/client.js","webpack://app/./node_modules/@sentry/core/esm/utils/sdkMetadata.js","webpack://app/./node_modules/@sentry/browser/esm/debug-build.js","webpack://app/./node_modules/@sentry/browser/esm/eventbuilder.js","webpack://app/./node_modules/@sentry/browser/esm/helpers.js","webpack://app/./node_modules/@sentry/utils/esm/eventbuilder.js","webpack://app/./node_modules/@sentry/core/esm/integrations/linkederrors.js","webpack://app/./node_modules/@sentry/core/esm/index.js","webpack://app/./node_modules/@sentry/core/esm/metadata.js","webpack://app/./node_modules/@sentry/core/esm/integrations/metadata.js","webpack://app/./node_modules/@sentry/core/esm/semanticAttributes.js","webpack://app/./node_modules/@sentry/core/esm/tracing/utils.js","webpack://app/./node_modules/@sentry/core/esm/tracing/errors.js","webpack://app/./node_modules/@sentry/core/esm/utils/handleCallbackErrors.js","webpack://app/./node_modules/@sentry/core/esm/utils/hasTracingEnabled.js","webpack://app/./node_modules/@sentry/core/esm/tracing/trace.js","webpack://app/./node_modules/@sentry/core/esm/metrics/metric-summary.js","webpack://app/./node_modules/@sentry/core/esm/tracing/spanstatus.js","webpack://app/./node_modules/@sentry/core/esm/tracing/span.js","webpack://app/./node_modules/@sentry/core/esm/tracing/transaction.js","webpack://app/./node_modules/@sentry/core/esm/tracing/idletransaction.js","webpack://app/./node_modules/@sentry/core/esm/tracing/sampling.js","webpack://app/./node_modules/@sentry/core/esm/tracing/hubextensions.js","webpack://app/./node_modules/@sentry/core/esm/transports/multiplexed.js","webpack://app/./node_modules/@sentry/core/esm/metrics/instance.js","webpack://app/./node_modules/@sentry/core/esm/metrics/browser-aggregator.js","webpack://app/./node_modules/@sentry/core/esm/metrics/constants.js","webpack://app/./node_modules/@sentry/core/esm/metrics/integration.js","webpack://app/./node_modules/@sentry/core/esm/metrics/exports.js","webpack://app/./node_modules/@sentry/core/esm/utils/parameterize.js","webpack://app/./node_modules/@sentry/core/esm/tracing/measurement.js","webpack://app/./node_modules/@sentry/utils/esm/buildPolyfills/_optionalChain.js","webpack://app/./node_modules/@sentry/core/esm/utils/isSentryRequestUrl.js","webpack://app/./node_modules/@sentry/utils/esm/isBrowser.js","webpack://app/./node_modules/@sentry-internal/tracing/esm/common/debug-build.js","webpack://app/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/bindReporter.js","webpack://app/./node_modules/@sentry-internal/tracing/esm/browser/types.js","webpack://app/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getNavigationEntry.js","webpack://app/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getActivationStart.js","webpack://app/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/initMetric.js","webpack://app/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/generateUniqueID.js","webpack://app/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/observe.js","webpack://app/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/onHidden.js","webpack://app/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getCLS.js","webpack://app/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/getVisibilityWatcher.js","webpack://app/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getFID.js","webpack://app/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/lib/polyfills/interactionCountPolyfill.js","webpack://app/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getINP.js","webpack://app/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/getLCP.js","webpack://app/./node_modules/@sentry-internal/tracing/esm/browser/web-vitals/onTTFB.js","webpack://app/./node_modules/@sentry-internal/tracing/esm/browser/instrument.js","webpack://app/./node_modules/@sentry/replay/esm/index.js","webpack://app/./node_modules/@sentry/utils/esm/buildPolyfills/_nullishCoalesce.js","webpack://app/./node_modules/@sentry-internal/replay-canvas/esm/index.js","webpack://app/./node_modules/@sentry-internal/feedback/esm/index.js","webpack://app/./node_modules/@sentry/integrations/esm/captureconsole.js","webpack://app/./node_modules/@sentry/integrations/esm/contextlines.js","webpack://app/./node_modules/@sentry/integrations/esm/debug.js","webpack://app/./node_modules/@sentry/integrations/esm/debug-build.js","webpack://app/./node_modules/@sentry/integrations/esm/dedupe.js","webpack://app/./node_modules/@sentry/integrations/esm/extraerrordata.js","webpack://app/./node_modules/@sentry/integrations/esm/httpclient.js","webpack://app/./node_modules/@sentry/integrations/esm/reportingobserver.js","webpack://app/./node_modules/@sentry/utils/esm/path.js","webpack://app/./node_modules/@sentry/integrations/esm/rewriteframes.js","webpack://app/./node_modules/@sentry/integrations/esm/sessiontiming.js","webpack://app/./node_modules/@sentry-internal/tracing/esm/browser/backgroundtab.js","webpack://app/./node_modules/@sentry/core/esm/span.js","webpack://app/./node_modules/@sentry-internal/tracing/esm/browser/metrics/utils.js","webpack://app/./node_modules/@sentry-internal/tracing/esm/browser/metrics/index.js","webpack://app/./node_modules/@sentry-internal/tracing/esm/common/fetch.js","webpack://app/./node_modules/@sentry-internal/tracing/esm/browser/request.js","webpack://app/./node_modules/@sentry-internal/tracing/esm/browser/browsertracing.js","webpack://app/./node_modules/@sentry-internal/tracing/esm/browser/router.js","webpack://app/./node_modules/@sentry-internal/tracing/esm/browser/browserTracingIntegration.js","webpack://app/./node_modules/@sentry/core/esm/transports/offline.js","webpack://app/./node_modules/@sentry/browser/esm/transports/offline.js","webpack://app/./node_modules/@sentry/browser/esm/profiling/utils.js","webpack://app/./node_modules/@sentry/browser/esm/profiling/hubextensions.js","webpack://app/./node_modules/@sentry/browser/esm/profiling/integration.js","webpack://app/./node_modules/@sentry/browser/esm/index.js","webpack://app/./node_modules/@sentry/browser/esm/integrations/breadcrumbs.js","webpack://app/./node_modules/@sentry/browser/esm/integrations/dedupe.js","webpack://app/./node_modules/@sentry/browser/esm/integrations/globalhandlers.js","webpack://app/./node_modules/@sentry/browser/esm/integrations/httpcontext.js","webpack://app/./node_modules/@sentry/browser/esm/integrations/linkederrors.js","webpack://app/./node_modules/@sentry/browser/esm/integrations/trycatch.js","webpack://app/./node_modules/@sentry/browser/esm/sdk.js","webpack://app/./node_modules/@sentry/browser/esm/stack-parsers.js","webpack://app/./node_modules/@sentry/browser/esm/transports/utils.js","webpack://app/./node_modules/@sentry/browser/esm/transports/fetch.js","webpack://app/./node_modules/@sentry/browser/esm/transports/xhr.js","webpack://app/./node_modules/@sentry/browser/esm/userfeedback.js","webpack://app/./node_modules/@sentry/core/esm/api.js","webpack://app/./node_modules/@sentry/core/esm/metrics/envelope.js","webpack://app/./node_modules/@sentry/core/esm/baseclient.js","webpack://app/./node_modules/@sentry/core/esm/constants.js","webpack://app/./node_modules/@sentry/core/esm/debug-build.js","webpack://app/./node_modules/@sentry/core/esm/envelope.js","webpack://app/./node_modules/@sentry/core/esm/eventProcessors.js","webpack://app/./node_modules/@sentry/core/esm/exports.js","webpack://app/./node_modules/@sentry/core/esm/hub.js","webpack://app/./node_modules/@sentry/core/esm/integration.js","webpack://app/./node_modules/@sentry/core/esm/integrations/functiontostring.js","webpack://app/./node_modules/@sentry/core/esm/integrations/inboundfilters.js","webpack://app/./node_modules/@sentry/core/esm/metrics/utils.js","webpack://app/./node_modules/@sentry/core/esm/scope.js","webpack://app/./node_modules/@sentry/core/esm/sdk.js","webpack://app/./node_modules/@sentry/core/esm/session.js","webpack://app/./node_modules/@sentry/core/esm/tracing/dynamicSamplingContext.js","webpack://app/./node_modules/@sentry/utils/esm/promisebuffer.js","webpack://app/./node_modules/@sentry/core/esm/transports/base.js","webpack://app/./node_modules/@sentry/core/esm/utils/applyScopeDataToEvent.js","webpack://app/./node_modules/@sentry/core/esm/utils/getRootSpan.js","webpack://app/./node_modules/@sentry/core/esm/utils/prepareEvent.js","webpack://app/./node_modules/@sentry/core/esm/utils/spanUtils.js","webpack://app/./node_modules/@sentry/core/esm/version.js","webpack://app/./node_modules/@sentry/utils/esm/aggregate-errors.js","webpack://app/./node_modules/@sentry/utils/esm/baggage.js","webpack://app/./node_modules/@sentry/utils/esm/browser.js","webpack://app/./node_modules/@sentry/utils/esm/debug-build.js","webpack://app/./node_modules/@sentry/utils/esm/dsn.js","webpack://app/./node_modules/@sentry/utils/esm/env.js","webpack://app/./node_modules/@sentry/utils/esm/envelope.js","webpack://app/./node_modules/@sentry/utils/esm/error.js","webpack://app/./node_modules/@sentry/utils/esm/instrument/_handlers.js","webpack://app/./node_modules/@sentry/utils/esm/instrument/console.js","webpack://app/./node_modules/@sentry/utils/esm/instrument/dom.js","webpack://app/./node_modules/@sentry/utils/esm/instrument/fetch.js","webpack://app/./node_modules/@sentry/utils/esm/instrument/globalError.js","webpack://app/./node_modules/@sentry/utils/esm/instrument/globalUnhandledRejection.js","webpack://app/./node_modules/@sentry/utils/esm/vendor/supportsHistory.js","webpack://app/./node_modules/@sentry/utils/esm/instrument/history.js","webpack://app/./node_modules/@sentry/utils/esm/instrument/xhr.js","webpack://app/./node_modules/@sentry/utils/esm/is.js","webpack://app/./node_modules/@sentry/utils/esm/logger.js","webpack://app/./node_modules/@sentry/utils/esm/misc.js","webpack://app/./node_modules/@sentry/utils/esm/node.js","webpack://app/./node_modules/@sentry/utils/esm/normalize.js","webpack://app/./node_modules/@sentry/utils/esm/memo.js","webpack://app/./node_modules/@sentry/utils/esm/object.js","webpack://app/./node_modules/@sentry/utils/esm/ratelimit.js","webpack://app/./node_modules/@sentry/utils/esm/severity.js","webpack://app/./node_modules/@sentry/utils/esm/stacktrace.js","webpack://app/./node_modules/@sentry/utils/esm/string.js","webpack://app/./node_modules/@sentry/utils/esm/supports.js","webpack://app/./node_modules/@sentry/utils/esm/syncpromise.js","webpack://app/./node_modules/@sentry/utils/esm/time.js","webpack://app/./node_modules/@sentry/utils/esm/tracing.js","webpack://app/./node_modules/@sentry/utils/esm/url.js","webpack://app/./node_modules/@sentry/utils/esm/worldwide.js"],"sourcesContent":["import { createEnvelope } from './envelope.js';\nimport { dateTimestampInSeconds } from './time.js';\n\n/**\n * Creates client report envelope\n * @param discarded_events An array of discard events\n * @param dsn A DSN that can be set on the header. Optional.\n */\nfunction createClientReportEnvelope(\n discarded_events,\n dsn,\n timestamp,\n) {\n const clientReportItem = [\n { type: 'client_report' },\n {\n timestamp: timestamp || dateTimestampInSeconds(),\n discarded_events,\n },\n ];\n return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]);\n}\n\nexport { createClientReportEnvelope };\n//# sourceMappingURL=clientreport.js.map\n","import { BaseClient, applySdkMetadata } from '@sentry/core';\nimport { getSDKSource, logger, createClientReportEnvelope, dsnToString } from '@sentry/utils';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { eventFromException, eventFromMessage } from './eventbuilder.js';\nimport { WINDOW } from './helpers.js';\nimport { createUserFeedbackEnvelope } from './userfeedback.js';\n\n/**\n * Configuration options for the Sentry Browser SDK.\n * @see @sentry/types Options for more information.\n */\n\n/**\n * The Sentry Browser SDK Client.\n *\n * @see BrowserOptions for documentation on configuration options.\n * @see SentryClient for usage documentation.\n */\nclass BrowserClient extends BaseClient {\n /**\n * Creates a new Browser SDK instance.\n *\n * @param options Configuration options for this SDK.\n */\n constructor(options) {\n const sdkSource = WINDOW.SENTRY_SDK_SOURCE || getSDKSource();\n applySdkMetadata(options, 'browser', ['browser'], sdkSource);\n\n super(options);\n\n if (options.sendClientReports && WINDOW.document) {\n WINDOW.document.addEventListener('visibilitychange', () => {\n if (WINDOW.document.visibilityState === 'hidden') {\n this._flushOutcomes();\n }\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n eventFromException(exception, hint) {\n return eventFromException(this._options.stackParser, exception, hint, this._options.attachStacktrace);\n }\n\n /**\n * @inheritDoc\n */\n eventFromMessage(\n message,\n // eslint-disable-next-line deprecation/deprecation\n level = 'info',\n hint,\n ) {\n return eventFromMessage(this._options.stackParser, message, level, hint, this._options.attachStacktrace);\n }\n\n /**\n * Sends user feedback to Sentry.\n */\n captureUserFeedback(feedback) {\n if (!this._isEnabled()) {\n DEBUG_BUILD && logger.warn('SDK not enabled, will not capture user feedback.');\n return;\n }\n\n const envelope = createUserFeedbackEnvelope(feedback, {\n metadata: this.getSdkMetadata(),\n dsn: this.getDsn(),\n tunnel: this.getOptions().tunnel,\n });\n\n // _sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._sendEnvelope(envelope);\n }\n\n /**\n * @inheritDoc\n */\n _prepareEvent(event, hint, scope) {\n event.platform = event.platform || 'javascript';\n return super._prepareEvent(event, hint, scope);\n }\n\n /**\n * Sends client reports as an envelope.\n */\n _flushOutcomes() {\n const outcomes = this._clearOutcomes();\n\n if (outcomes.length === 0) {\n DEBUG_BUILD && logger.log('No outcomes to send');\n return;\n }\n\n // This is really the only place where we want to check for a DSN and only send outcomes then\n if (!this._dsn) {\n DEBUG_BUILD && logger.log('No dsn provided, will not send outcomes');\n return;\n }\n\n DEBUG_BUILD && logger.log('Sending outcomes:', outcomes);\n\n const envelope = createClientReportEnvelope(outcomes, this._options.tunnel && dsnToString(this._dsn));\n\n // _sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._sendEnvelope(envelope);\n }\n}\n\nexport { BrowserClient };\n//# sourceMappingURL=client.js.map\n","import { SDK_VERSION } from '../version.js';\n\n/**\n * A builder for the SDK metadata in the options for the SDK initialization.\n *\n * Note: This function is identical to `buildMetadata` in Remix and NextJS and SvelteKit.\n * We don't extract it for bundle size reasons.\n * @see https://github.com/getsentry/sentry-javascript/pull/7404\n * @see https://github.com/getsentry/sentry-javascript/pull/4196\n *\n * If you make changes to this function consider updating the others as well.\n *\n * @param options SDK options object that gets mutated\n * @param names list of package names\n */\nfunction applySdkMetadata(options, name, names = [name], source = 'npm') {\n const metadata = options._metadata || {};\n\n if (!metadata.sdk) {\n metadata.sdk = {\n name: `sentry.javascript.${name}`,\n packages: names.map(name => ({\n name: `${source}:@sentry/${name}`,\n version: SDK_VERSION,\n })),\n version: SDK_VERSION,\n };\n }\n\n options._metadata = metadata;\n}\n\nexport { applySdkMetadata };\n//# sourceMappingURL=sdkMetadata.js.map\n","/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nexport { DEBUG_BUILD };\n//# sourceMappingURL=debug-build.js.map\n","import { getClient } from '@sentry/core';\nimport { addExceptionMechanism, resolvedSyncPromise, isErrorEvent, isDOMError, isDOMException, addExceptionTypeValue, isError, isPlainObject, isEvent, isParameterizedString, normalizeToSize, extractExceptionKeysForMessage } from '@sentry/utils';\n\n/**\n * This function creates an exception from a JavaScript Error\n */\nfunction exceptionFromError(stackParser, ex) {\n // Get the frames first since Opera can lose the stack if we touch anything else first\n const frames = parseStackFrames(stackParser, ex);\n\n const exception = {\n type: ex && ex.name,\n value: extractMessage(ex),\n };\n\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n if (exception.type === undefined && exception.value === '') {\n exception.value = 'Unrecoverable error caught';\n }\n\n return exception;\n}\n\n/**\n * @hidden\n */\nfunction eventFromPlainObject(\n stackParser,\n exception,\n syntheticException,\n isUnhandledRejection,\n) {\n const client = getClient();\n const normalizeDepth = client && client.getOptions().normalizeDepth;\n\n const event = {\n exception: {\n values: [\n {\n type: isEvent(exception) ? exception.constructor.name : isUnhandledRejection ? 'UnhandledRejection' : 'Error',\n value: getNonErrorObjectExceptionValue(exception, { isUnhandledRejection }),\n },\n ],\n },\n extra: {\n __serialized__: normalizeToSize(exception, normalizeDepth),\n },\n };\n\n if (syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n // event.exception.values[0] has been set above\n (event.exception ).values[0].stacktrace = { frames };\n }\n }\n\n return event;\n}\n\n/**\n * @hidden\n */\nfunction eventFromError(stackParser, ex) {\n return {\n exception: {\n values: [exceptionFromError(stackParser, ex)],\n },\n };\n}\n\n/** Parses stack frames from an error */\nfunction parseStackFrames(\n stackParser,\n ex,\n) {\n // Access and store the stacktrace property before doing ANYTHING\n // else to it because Opera is not very good at providing it\n // reliably in other circumstances.\n const stacktrace = ex.stacktrace || ex.stack || '';\n\n const popSize = getPopSize(ex);\n\n try {\n return stackParser(stacktrace, popSize);\n } catch (e) {\n // no-empty\n }\n\n return [];\n}\n\n// Based on our own mapping pattern - https://github.com/getsentry/sentry/blob/9f08305e09866c8bd6d0c24f5b0aabdd7dd6c59c/src/sentry/lang/javascript/errormapping.py#L83-L108\nconst reactMinifiedRegexp = /Minified React error #\\d+;/i;\n\nfunction getPopSize(ex) {\n if (ex) {\n if (typeof ex.framesToPop === 'number') {\n return ex.framesToPop;\n }\n\n if (reactMinifiedRegexp.test(ex.message)) {\n return 1;\n }\n }\n\n return 0;\n}\n\n/**\n * There are cases where stacktrace.message is an Event object\n * https://github.com/getsentry/sentry-javascript/issues/1949\n * In this specific case we try to extract stacktrace.message.error.message\n */\nfunction extractMessage(ex) {\n const message = ex && ex.message;\n if (!message) {\n return 'No error message';\n }\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n return message;\n}\n\n/**\n * Creates an {@link Event} from all inputs to `captureException` and non-primitive inputs to `captureMessage`.\n * @hidden\n */\nfunction eventFromException(\n stackParser,\n exception,\n hint,\n attachStacktrace,\n) {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromUnknownInput(stackParser, exception, syntheticException, attachStacktrace);\n addExceptionMechanism(event); // defaults to { type: 'generic', handled: true }\n event.level = 'error';\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nfunction eventFromMessage(\n stackParser,\n message,\n // eslint-disable-next-line deprecation/deprecation\n level = 'info',\n hint,\n attachStacktrace,\n) {\n const syntheticException = (hint && hint.syntheticException) || undefined;\n const event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n event.level = level;\n if (hint && hint.event_id) {\n event.event_id = hint.event_id;\n }\n return resolvedSyncPromise(event);\n}\n\n/**\n * @hidden\n */\nfunction eventFromUnknownInput(\n stackParser,\n exception,\n syntheticException,\n attachStacktrace,\n isUnhandledRejection,\n) {\n let event;\n\n if (isErrorEvent(exception ) && (exception ).error) {\n // If it is an ErrorEvent with `error` property, extract it to get actual Error\n const errorEvent = exception ;\n return eventFromError(stackParser, errorEvent.error );\n }\n\n // If it is a `DOMError` (which is a legacy API, but still supported in some browsers) then we just extract the name\n // and message, as it doesn't provide anything else. According to the spec, all `DOMExceptions` should also be\n // `Error`s, but that's not the case in IE11, so in that case we treat it the same as we do a `DOMError`.\n //\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMError\n // https://developer.mozilla.org/en-US/docs/Web/API/DOMException\n // https://webidl.spec.whatwg.org/#es-DOMException-specialness\n if (isDOMError(exception) || isDOMException(exception )) {\n const domException = exception ;\n\n if ('stack' in (exception )) {\n event = eventFromError(stackParser, exception );\n } else {\n const name = domException.name || (isDOMError(domException) ? 'DOMError' : 'DOMException');\n const message = domException.message ? `${name}: ${domException.message}` : name;\n event = eventFromString(stackParser, message, syntheticException, attachStacktrace);\n addExceptionTypeValue(event, message);\n }\n if ('code' in domException) {\n // eslint-disable-next-line deprecation/deprecation\n event.tags = { ...event.tags, 'DOMException.code': `${domException.code}` };\n }\n\n return event;\n }\n if (isError(exception)) {\n // we have a real Error object, do nothing\n return eventFromError(stackParser, exception);\n }\n if (isPlainObject(exception) || isEvent(exception)) {\n // If it's a plain object or an instance of `Event` (the built-in JS kind, not this SDK's `Event` type), serialize\n // it manually. This will allow us to group events based on top-level keys which is much better than creating a new\n // group on any key/value change.\n const objectException = exception ;\n event = eventFromPlainObject(stackParser, objectException, syntheticException, isUnhandledRejection);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n return event;\n }\n\n // If none of previous checks were valid, then it means that it's not:\n // - an instance of DOMError\n // - an instance of DOMException\n // - an instance of Event\n // - an instance of Error\n // - a valid ErrorEvent (one with an error property)\n // - a plain Object\n //\n // So bail out and capture it as a simple message:\n event = eventFromString(stackParser, exception , syntheticException, attachStacktrace);\n addExceptionTypeValue(event, `${exception}`, undefined);\n addExceptionMechanism(event, {\n synthetic: true,\n });\n\n return event;\n}\n\n/**\n * @hidden\n */\nfunction eventFromString(\n stackParser,\n message,\n syntheticException,\n attachStacktrace,\n) {\n const event = {};\n\n if (attachStacktrace && syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n event.exception = {\n values: [{ value: message, stacktrace: { frames } }],\n };\n }\n }\n\n if (isParameterizedString(message)) {\n const { __sentry_template_string__, __sentry_template_values__ } = message;\n\n event.logentry = {\n message: __sentry_template_string__,\n params: __sentry_template_values__,\n };\n return event;\n }\n\n event.message = message;\n return event;\n}\n\nfunction getNonErrorObjectExceptionValue(\n exception,\n { isUnhandledRejection },\n) {\n const keys = extractExceptionKeysForMessage(exception);\n const captureType = isUnhandledRejection ? 'promise rejection' : 'exception';\n\n // Some ErrorEvent instances do not have an `error` property, which is why they are not handled before\n // We still want to try to get a decent message for these cases\n if (isErrorEvent(exception)) {\n return `Event \\`ErrorEvent\\` captured as ${captureType} with message \\`${exception.message}\\``;\n }\n\n if (isEvent(exception)) {\n const className = getObjectClassName(exception);\n return `Event \\`${className}\\` (type=${exception.type}) captured as ${captureType}`;\n }\n\n return `Object captured as ${captureType} with keys: ${keys}`;\n}\n\nfunction getObjectClassName(obj) {\n try {\n const prototype = Object.getPrototypeOf(obj);\n return prototype ? prototype.constructor.name : undefined;\n } catch (e) {\n // ignore errors here\n }\n}\n\nexport { eventFromError, eventFromException, eventFromMessage, eventFromPlainObject, eventFromString, eventFromUnknownInput, exceptionFromError, parseStackFrames };\n//# sourceMappingURL=eventbuilder.js.map\n","import '@sentry-internal/tracing';\nimport { withScope, captureException } from '@sentry/core';\nimport { GLOBAL_OBJ, getOriginalFunction, markFunctionWrapped, addNonEnumerableProperty, addExceptionTypeValue, addExceptionMechanism } from '@sentry/utils';\n\nconst WINDOW = GLOBAL_OBJ ;\n\nlet ignoreOnError = 0;\n\n/**\n * @hidden\n */\nfunction shouldIgnoreOnError() {\n return ignoreOnError > 0;\n}\n\n/**\n * @hidden\n */\nfunction ignoreNextOnError() {\n // onerror should trigger before setTimeout\n ignoreOnError++;\n setTimeout(() => {\n ignoreOnError--;\n });\n}\n\n/**\n * Instruments the given function and sends an event to Sentry every time the\n * function throws an exception.\n *\n * @param fn A function to wrap. It is generally safe to pass an unbound function, because the returned wrapper always\n * has a correct `this` context.\n * @returns The wrapped function.\n * @hidden\n */\nfunction wrap(\n fn,\n options\n\n = {},\n before,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n) {\n // for future readers what this does is wrap a function and then create\n // a bi-directional wrapping between them.\n //\n // example: wrapped = wrap(original);\n // original.__sentry_wrapped__ -> wrapped\n // wrapped.__sentry_original__ -> original\n\n if (typeof fn !== 'function') {\n return fn;\n }\n\n try {\n // if we're dealing with a function that was previously wrapped, return\n // the original wrapper.\n const wrapper = fn.__sentry_wrapped__;\n if (wrapper) {\n return wrapper;\n }\n\n // We don't wanna wrap it twice\n if (getOriginalFunction(fn)) {\n return fn;\n }\n } catch (e) {\n // Just accessing custom props in some Selenium environments\n // can cause a \"Permission denied\" exception (see raven-js#495).\n // Bail on wrapping and return the function as-is (defers to window.onerror).\n return fn;\n }\n\n /* eslint-disable prefer-rest-params */\n // It is important that `sentryWrapped` is not an arrow function to preserve the context of `this`\n const sentryWrapped = function () {\n const args = Array.prototype.slice.call(arguments);\n\n try {\n if (before && typeof before === 'function') {\n before.apply(this, arguments);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n const wrappedArguments = args.map((arg) => wrap(arg, options));\n\n // Attempt to invoke user-land function\n // NOTE: If you are a Sentry user, and you are seeing this stack frame, it\n // means the sentry.javascript SDK caught an error invoking your application code. This\n // is expected behavior and NOT indicative of a bug with sentry.javascript.\n return fn.apply(this, wrappedArguments);\n } catch (ex) {\n ignoreNextOnError();\n\n withScope(scope => {\n scope.addEventProcessor(event => {\n if (options.mechanism) {\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, options.mechanism);\n }\n\n event.extra = {\n ...event.extra,\n arguments: args,\n };\n\n return event;\n });\n\n captureException(ex);\n });\n\n throw ex;\n }\n };\n /* eslint-enable prefer-rest-params */\n\n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n try {\n for (const property in fn) {\n if (Object.prototype.hasOwnProperty.call(fn, property)) {\n sentryWrapped[property] = fn[property];\n }\n }\n } catch (_oO) {} // eslint-disable-line no-empty\n\n // Signal that this function has been wrapped/filled already\n // for both debugging and to prevent it to being wrapped/filled twice\n markFunctionWrapped(sentryWrapped, fn);\n\n addNonEnumerableProperty(fn, '__sentry_wrapped__', sentryWrapped);\n\n // Restore original function name (not all browsers allow that)\n try {\n const descriptor = Object.getOwnPropertyDescriptor(sentryWrapped, 'name') ;\n if (descriptor.configurable) {\n Object.defineProperty(sentryWrapped, 'name', {\n get() {\n return fn.name;\n },\n });\n }\n // eslint-disable-next-line no-empty\n } catch (_oO) {}\n\n return sentryWrapped;\n}\n\nexport { WINDOW, ignoreNextOnError, shouldIgnoreOnError, wrap };\n//# sourceMappingURL=helpers.js.map\n","import { isError, isPlainObject, isParameterizedString } from './is.js';\nimport { addExceptionTypeValue, addExceptionMechanism } from './misc.js';\nimport { normalizeToSize } from './normalize.js';\nimport { extractExceptionKeysForMessage } from './object.js';\n\n/**\n * Extracts stack frames from the error.stack string\n */\nfunction parseStackFrames(stackParser, error) {\n return stackParser(error.stack || '', 1);\n}\n\n/**\n * Extracts stack frames from the error and builds a Sentry Exception\n */\nfunction exceptionFromError(stackParser, error) {\n const exception = {\n type: error.name || error.constructor.name,\n value: error.message,\n };\n\n const frames = parseStackFrames(stackParser, error);\n if (frames.length) {\n exception.stacktrace = { frames };\n }\n\n return exception;\n}\n\nfunction getMessageForObject(exception) {\n if ('name' in exception && typeof exception.name === 'string') {\n let message = `'${exception.name}' captured as exception`;\n\n if ('message' in exception && typeof exception.message === 'string') {\n message += ` with message '${exception.message}'`;\n }\n\n return message;\n } else if ('message' in exception && typeof exception.message === 'string') {\n return exception.message;\n } else {\n // This will allow us to group events based on top-level keys\n // which is much better than creating new group when any key/value change\n return `Object captured as exception with keys: ${extractExceptionKeysForMessage(\n exception ,\n )}`;\n }\n}\n\n/**\n * Builds and Event from a Exception\n *\n * TODO(v8): Remove getHub fallback\n * @hidden\n */\nfunction eventFromUnknownInput(\n // eslint-disable-next-line deprecation/deprecation\n getHubOrClient,\n stackParser,\n exception,\n hint,\n) {\n const client =\n typeof getHubOrClient === 'function'\n ? // eslint-disable-next-line deprecation/deprecation\n getHubOrClient().getClient()\n : getHubOrClient;\n\n let ex = exception;\n const providedMechanism =\n hint && hint.data && (hint.data ).mechanism;\n const mechanism = providedMechanism || {\n handled: true,\n type: 'generic',\n };\n\n let extras;\n\n if (!isError(exception)) {\n if (isPlainObject(exception)) {\n const normalizeDepth = client && client.getOptions().normalizeDepth;\n extras = { ['__serialized__']: normalizeToSize(exception , normalizeDepth) };\n\n const message = getMessageForObject(exception);\n ex = (hint && hint.syntheticException) || new Error(message);\n (ex ).message = message;\n } else {\n // This handles when someone does: `throw \"something awesome\";`\n // We use synthesized Error here so we can extract a (rough) stack trace.\n ex = (hint && hint.syntheticException) || new Error(exception );\n (ex ).message = exception ;\n }\n mechanism.synthetic = true;\n }\n\n const event = {\n exception: {\n values: [exceptionFromError(stackParser, ex )],\n },\n };\n\n if (extras) {\n event.extra = extras;\n }\n\n addExceptionTypeValue(event, undefined, undefined);\n addExceptionMechanism(event, mechanism);\n\n return {\n ...event,\n event_id: hint && hint.event_id,\n };\n}\n\n/**\n * Builds and Event from a Message\n * @hidden\n */\nfunction eventFromMessage(\n stackParser,\n message,\n // eslint-disable-next-line deprecation/deprecation\n level = 'info',\n hint,\n attachStacktrace,\n) {\n const event = {\n event_id: hint && hint.event_id,\n level,\n };\n\n if (attachStacktrace && hint && hint.syntheticException) {\n const frames = parseStackFrames(stackParser, hint.syntheticException);\n if (frames.length) {\n event.exception = {\n values: [\n {\n value: message,\n stacktrace: { frames },\n },\n ],\n };\n }\n }\n\n if (isParameterizedString(message)) {\n const { __sentry_template_string__, __sentry_template_values__ } = message;\n\n event.logentry = {\n message: __sentry_template_string__,\n params: __sentry_template_values__,\n };\n return event;\n }\n\n event.message = message;\n return event;\n}\n\nexport { eventFromMessage, eventFromUnknownInput, exceptionFromError, parseStackFrames };\n//# sourceMappingURL=eventbuilder.js.map\n","import { applyAggregateErrorsToEvent, exceptionFromError } from '@sentry/utils';\nimport { convertIntegrationFnToClass, defineIntegration } from '../integration.js';\n\nconst DEFAULT_KEY = 'cause';\nconst DEFAULT_LIMIT = 5;\n\nconst INTEGRATION_NAME = 'LinkedErrors';\n\nconst _linkedErrorsIntegration = ((options = {}) => {\n const limit = options.limit || DEFAULT_LIMIT;\n const key = options.key || DEFAULT_KEY;\n\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n preprocessEvent(event, hint, client) {\n const options = client.getOptions();\n\n applyAggregateErrorsToEvent(\n exceptionFromError,\n options.stackParser,\n options.maxValueLength,\n key,\n limit,\n event,\n hint,\n );\n },\n };\n}) ;\n\nconst linkedErrorsIntegration = defineIntegration(_linkedErrorsIntegration);\n\n/**\n * Adds SDK info to an event.\n * @deprecated Use `linkedErrorsIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nconst LinkedErrors = convertIntegrationFnToClass(INTEGRATION_NAME, linkedErrorsIntegration)\n\n;\n\nexport { LinkedErrors, linkedErrorsIntegration };\n//# sourceMappingURL=linkederrors.js.map\n","export { addTracingExtensions, startIdleTransaction } from './tracing/hubextensions.js';\nexport { IdleTransaction, TRACING_DEFAULTS } from './tracing/idletransaction.js';\nexport { Span } from './tracing/span.js';\nexport { Transaction } from './tracing/transaction.js';\nexport { extractTraceparentData, getActiveTransaction } from './tracing/utils.js';\nexport { SpanStatus, getSpanStatusFromHttpCode, setHttpStatus, spanStatusfromHttpCode } from './tracing/spanstatus.js';\nexport { continueTrace, getActiveSpan, startActiveSpan, startInactiveSpan, startSpan, startSpanManual, trace } from './tracing/trace.js';\nexport { getDynamicSamplingContextFromClient, getDynamicSamplingContextFromSpan } from './tracing/dynamicSamplingContext.js';\nexport { setMeasurement } from './tracing/measurement.js';\nexport { isValidSampleRate } from './tracing/sampling.js';\nexport { SEMANTIC_ATTRIBUTE_PROFILE_ID, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from './semanticAttributes.js';\nexport { createEventEnvelope, createSessionEnvelope } from './envelope.js';\nexport { addBreadcrumb, captureCheckIn, captureEvent, captureException, captureMessage, captureSession, close, configureScope, endSession, flush, getClient, getCurrentScope, isInitialized, lastEventId, setContext, setExtra, setExtras, setTag, setTags, setUser, startSession, startTransaction, withActiveSpan, withIsolationScope, withMonitor, withScope } from './exports.js';\nexport { Hub, ensureHubOnCarrier, getCurrentHub, getHubFromCarrier, getIsolationScope, getMainCarrier, makeMain, runWithAsyncContext, setAsyncContextStrategy, setHubOnCarrier } from './hub.js';\nexport { closeSession, makeSession, updateSession } from './session.js';\nexport { SessionFlusher } from './sessionflusher.js';\nexport { Scope, getGlobalScope, setGlobalScope } from './scope.js';\nexport { addGlobalEventProcessor, notifyEventProcessors } from './eventProcessors.js';\nexport { getEnvelopeEndpointWithUrlEncodedAuth, getReportDialogEndpoint } from './api.js';\nexport { BaseClient, addEventProcessor } from './baseclient.js';\nexport { ServerRuntimeClient } from './server-runtime-client.js';\nexport { initAndBind, setCurrentClient } from './sdk.js';\nexport { createTransport } from './transports/base.js';\nexport { makeOfflineTransport } from './transports/offline.js';\nexport { makeMultiplexedTransport } from './transports/multiplexed.js';\nexport { SDK_VERSION } from './version.js';\nexport { addIntegration, convertIntegrationFnToClass, defineIntegration, getIntegrationsToSetup } from './integration.js';\nexport { applyScopeDataToEvent, mergeScopeData } from './utils/applyScopeDataToEvent.js';\nexport { prepareEvent } from './utils/prepareEvent.js';\nexport { createCheckInEnvelope } from './checkin.js';\nexport { createSpanEnvelope } from './span.js';\nexport { hasTracingEnabled } from './utils/hasTracingEnabled.js';\nexport { isSentryRequestUrl } from './utils/isSentryRequestUrl.js';\nexport { handleCallbackErrors } from './utils/handleCallbackErrors.js';\nexport { parameterize } from './utils/parameterize.js';\nexport { spanIsSampled, spanToJSON, spanToTraceContext, spanToTraceHeader } from './utils/spanUtils.js';\nexport { getRootSpan } from './utils/getRootSpan.js';\nexport { applySdkMetadata } from './utils/sdkMetadata.js';\nexport { DEFAULT_ENVIRONMENT } from './constants.js';\nexport { ModuleMetadata, moduleMetadataIntegration } from './integrations/metadata.js';\nexport { RequestData, requestDataIntegration } from './integrations/requestdata.js';\nexport { InboundFilters, inboundFiltersIntegration } from './integrations/inboundfilters.js';\nexport { FunctionToString, functionToStringIntegration } from './integrations/functiontostring.js';\nexport { LinkedErrors, linkedErrorsIntegration } from './integrations/linkederrors.js';\nimport * as index from './integrations/index.js';\nexport { metrics } from './metrics/exports.js';\n\n/** @deprecated Import the integration function directly, e.g. `inboundFiltersIntegration()` instead of `new Integrations.InboundFilter(). */\nconst Integrations = index;\n\nexport { Integrations };\n//# sourceMappingURL=index.js.map\n","import { GLOBAL_OBJ } from '@sentry/utils';\n\n/** Keys are source filename/url, values are metadata objects. */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst filenameMetadataMap = new Map();\n/** Set of stack strings that have already been parsed. */\nconst parsedStacks = new Set();\n\nfunction ensureMetadataStacksAreParsed(parser) {\n if (!GLOBAL_OBJ._sentryModuleMetadata) {\n return;\n }\n\n for (const stack of Object.keys(GLOBAL_OBJ._sentryModuleMetadata)) {\n const metadata = GLOBAL_OBJ._sentryModuleMetadata[stack];\n\n if (parsedStacks.has(stack)) {\n continue;\n }\n\n // Ensure this stack doesn't get parsed again\n parsedStacks.add(stack);\n\n const frames = parser(stack);\n\n // Go through the frames starting from the top of the stack and find the first one with a filename\n for (const frame of frames.reverse()) {\n if (frame.filename) {\n // Save the metadata for this filename\n filenameMetadataMap.set(frame.filename, metadata);\n break;\n }\n }\n }\n}\n\n/**\n * Retrieve metadata for a specific JavaScript file URL.\n *\n * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getMetadataForUrl(parser, filename) {\n ensureMetadataStacksAreParsed(parser);\n return filenameMetadataMap.get(filename);\n}\n\n/**\n * Adds metadata to stack frames.\n *\n * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.\n */\nfunction addMetadataToStackFrames(parser, event) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values.forEach(exception => {\n if (!exception.stacktrace) {\n return;\n }\n\n for (const frame of exception.stacktrace.frames || []) {\n if (!frame.filename) {\n continue;\n }\n\n const metadata = getMetadataForUrl(parser, frame.filename);\n\n if (metadata) {\n frame.module_metadata = metadata;\n }\n }\n });\n } catch (_) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n}\n\n/**\n * Strips metadata from stack frames.\n */\nfunction stripMetadataFromStackFrames(event) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values.forEach(exception => {\n if (!exception.stacktrace) {\n return;\n }\n\n for (const frame of exception.stacktrace.frames || []) {\n delete frame.module_metadata;\n }\n });\n } catch (_) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n}\n\nexport { addMetadataToStackFrames, getMetadataForUrl, stripMetadataFromStackFrames };\n//# sourceMappingURL=metadata.js.map\n","import { forEachEnvelopeItem } from '@sentry/utils';\nimport { convertIntegrationFnToClass, defineIntegration } from '../integration.js';\nimport { stripMetadataFromStackFrames, addMetadataToStackFrames } from '../metadata.js';\n\nconst INTEGRATION_NAME = 'ModuleMetadata';\n\nconst _moduleMetadataIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n setup(client) {\n if (typeof client.on !== 'function') {\n return;\n }\n\n // We need to strip metadata from stack frames before sending them to Sentry since these are client side only.\n client.on('beforeEnvelope', envelope => {\n forEachEnvelopeItem(envelope, (item, type) => {\n if (type === 'event') {\n const event = Array.isArray(item) ? (item )[1] : undefined;\n\n if (event) {\n stripMetadataFromStackFrames(event);\n item[1] = event;\n }\n }\n });\n });\n },\n\n processEvent(event, _hint, client) {\n const stackParser = client.getOptions().stackParser;\n addMetadataToStackFrames(stackParser, event);\n return event;\n },\n };\n}) ;\n\nconst moduleMetadataIntegration = defineIntegration(_moduleMetadataIntegration);\n\n/**\n * Adds module metadata to stack frames.\n *\n * Metadata can be injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.\n *\n * When this integration is added, the metadata passed to the bundler plugin is added to the stack frames of all events\n * under the `module_metadata` property. This can be used to help in tagging or routing of events from different teams\n * our sources\n *\n * @deprecated Use `moduleMetadataIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nconst ModuleMetadata = convertIntegrationFnToClass(\n INTEGRATION_NAME,\n moduleMetadataIntegration,\n)\n\n;\n\nexport { ModuleMetadata, moduleMetadataIntegration };\n//# sourceMappingURL=metadata.js.map\n","/**\n * Use this attribute to represent the source of a span.\n * Should be one of: custom, url, route, view, component, task, unknown\n *\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_SOURCE = 'sentry.source';\n\n/**\n * Use this attribute to represent the sample rate used for a span.\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE = 'sentry.sample_rate';\n\n/**\n * Use this attribute to represent the operation of a span.\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_OP = 'sentry.op';\n\n/**\n * Use this attribute to represent the origin of a span.\n */\nconst SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN = 'sentry.origin';\n\n/**\n * The id of the profile that this span occured in.\n */\nconst SEMANTIC_ATTRIBUTE_PROFILE_ID = 'profile_id';\n\nexport { SEMANTIC_ATTRIBUTE_PROFILE_ID, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE };\n//# sourceMappingURL=semanticAttributes.js.map\n","import { extractTraceparentData as extractTraceparentData$1 } from '@sentry/utils';\nexport { stripUrlQueryAndFragment } from '@sentry/utils';\nimport { getCurrentHub } from '../hub.js';\n\n/**\n * Grabs active transaction off scope.\n *\n * @deprecated You should not rely on the transaction, but just use `startSpan()` APIs instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nfunction getActiveTransaction(maybeHub) {\n // eslint-disable-next-line deprecation/deprecation\n const hub = maybeHub || getCurrentHub();\n // eslint-disable-next-line deprecation/deprecation\n const scope = hub.getScope();\n // eslint-disable-next-line deprecation/deprecation\n return scope.getTransaction() ;\n}\n\n/**\n * The `extractTraceparentData` function and `TRACEPARENT_REGEXP` constant used\n * to be declared in this file. It was later moved into `@sentry/utils` as part of a\n * move to remove `@sentry/tracing` dependencies from `@sentry/node` (`extractTraceparentData`\n * is the only tracing function used by `@sentry/node`).\n *\n * These exports are kept here for backwards compatability's sake.\n *\n * See https://github.com/getsentry/sentry-javascript/issues/4642 for more details.\n *\n * @deprecated Import this function from `@sentry/utils` instead\n */\nconst extractTraceparentData = extractTraceparentData$1;\n\nexport { extractTraceparentData, getActiveTransaction };\n//# sourceMappingURL=utils.js.map\n","import { addGlobalErrorInstrumentationHandler, addGlobalUnhandledRejectionInstrumentationHandler, logger } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { getActiveTransaction } from './utils.js';\n\nlet errorsInstrumented = false;\n\n/**\n * Configures global error listeners\n */\nfunction registerErrorInstrumentation() {\n if (errorsInstrumented) {\n return;\n }\n\n errorsInstrumented = true;\n addGlobalErrorInstrumentationHandler(errorCallback);\n addGlobalUnhandledRejectionInstrumentationHandler(errorCallback);\n}\n\n/**\n * If an error or unhandled promise occurs, we mark the active transaction as failed\n */\nfunction errorCallback() {\n // eslint-disable-next-line deprecation/deprecation\n const activeTransaction = getActiveTransaction();\n if (activeTransaction) {\n const status = 'internal_error';\n DEBUG_BUILD && logger.log(`[Tracing] Transaction: ${status} -> Global error occured`);\n activeTransaction.setStatus(status);\n }\n}\n\n// The function name will be lost when bundling but we need to be able to identify this listener later to maintain the\n// node.js default exit behaviour\nerrorCallback.tag = 'sentry_tracingErrorCallback';\n\nexport { registerErrorInstrumentation };\n//# sourceMappingURL=errors.js.map\n","import { isThenable } from '@sentry/utils';\n\n/**\n * Wrap a callback function with error handling.\n * If an error is thrown, it will be passed to the `onError` callback and re-thrown.\n *\n * If the return value of the function is a promise, it will be handled with `maybeHandlePromiseRejection`.\n *\n * If an `onFinally` callback is provided, this will be called when the callback has finished\n * - so if it returns a promise, once the promise resolved/rejected,\n * else once the callback has finished executing.\n * The `onFinally` callback will _always_ be called, no matter if an error was thrown or not.\n */\nfunction handleCallbackErrors\n\n(\n fn,\n onError,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onFinally = () => {},\n) {\n let maybePromiseResult;\n try {\n maybePromiseResult = fn();\n } catch (e) {\n onError(e);\n onFinally();\n throw e;\n }\n\n return maybeHandlePromiseRejection(maybePromiseResult, onError, onFinally);\n}\n\n/**\n * Maybe handle a promise rejection.\n * This expects to be given a value that _may_ be a promise, or any other value.\n * If it is a promise, and it rejects, it will call the `onError` callback.\n * Other than this, it will generally return the given value as-is.\n */\nfunction maybeHandlePromiseRejection(\n value,\n onError,\n onFinally,\n) {\n if (isThenable(value)) {\n // @ts-expect-error - the isThenable check returns the \"wrong\" type here\n return value.then(\n res => {\n onFinally();\n return res;\n },\n e => {\n onError(e);\n onFinally();\n throw e;\n },\n );\n }\n\n onFinally();\n return value;\n}\n\nexport { handleCallbackErrors };\n//# sourceMappingURL=handleCallbackErrors.js.map\n","import { getClient } from '../exports.js';\n\n// Treeshakable guard to remove all code related to tracing\n\n/**\n * Determines if tracing is currently enabled.\n *\n * Tracing is enabled when at least one of `tracesSampleRate` and `tracesSampler` is defined in the SDK config.\n */\nfunction hasTracingEnabled(\n maybeOptions,\n) {\n if (typeof __SENTRY_TRACING__ === 'boolean' && !__SENTRY_TRACING__) {\n return false;\n }\n\n const client = getClient();\n const options = maybeOptions || (client && client.getOptions());\n return !!options && (options.enableTracing || 'tracesSampleRate' in options || 'tracesSampler' in options);\n}\n\nexport { hasTracingEnabled };\n//# sourceMappingURL=hasTracingEnabled.js.map\n","import { tracingContextFromHeaders, logger, dropUndefinedKeys, addNonEnumerableProperty } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { getCurrentHub, runWithAsyncContext, getIsolationScope } from '../hub.js';\nimport { spanToJSON, spanIsSampled, spanTimeInputToSeconds } from '../utils/spanUtils.js';\nimport './errors.js';\nimport './spanstatus.js';\nimport { getDynamicSamplingContextFromSpan } from './dynamicSamplingContext.js';\nimport { getCurrentScope, withScope } from '../exports.js';\nimport { handleCallbackErrors } from '../utils/handleCallbackErrors.js';\nimport { hasTracingEnabled } from '../utils/hasTracingEnabled.js';\n\n/**\n * Wraps a function with a transaction/span and finishes the span after the function is done.\n *\n * Note that if you have not enabled tracing extensions via `addTracingExtensions`\n * or you didn't set `tracesSampleRate`, this function will not generate spans\n * and the `span` returned from the callback will be undefined.\n *\n * This function is meant to be used internally and may break at any time. Use at your own risk.\n *\n * @internal\n * @private\n *\n * @deprecated Use `startSpan` instead.\n */\nfunction trace(\n context,\n callback,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n onError = () => {},\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n afterFinish = () => {},\n) {\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n const scope = getCurrentScope();\n // eslint-disable-next-line deprecation/deprecation\n const parentSpan = scope.getSpan();\n\n const spanContext = normalizeContext(context);\n const activeSpan = createChildSpanOrTransaction(hub, {\n parentSpan,\n spanContext,\n forceTransaction: false,\n scope,\n });\n\n // eslint-disable-next-line deprecation/deprecation\n scope.setSpan(activeSpan);\n\n return handleCallbackErrors(\n () => callback(activeSpan),\n error => {\n activeSpan && activeSpan.setStatus('internal_error');\n onError(error, activeSpan);\n },\n () => {\n activeSpan && activeSpan.end();\n // eslint-disable-next-line deprecation/deprecation\n scope.setSpan(parentSpan);\n afterFinish();\n },\n );\n}\n\n/**\n * Wraps a function with a transaction/span and finishes the span after the function is done.\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getSpan()`, as long as the function is executed while the scope is active.\n *\n * If you want to create a span that is not set as active, use {@link startInactiveSpan}.\n *\n * Note that if you have not enabled tracing extensions via `addTracingExtensions`\n * or you didn't set `tracesSampleRate`, this function will not generate spans\n * and the `span` returned from the callback will be undefined.\n */\nfunction startSpan(context, callback) {\n const spanContext = normalizeContext(context);\n\n return runWithAsyncContext(() => {\n return withScope(context.scope, scope => {\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n // eslint-disable-next-line deprecation/deprecation\n const parentSpan = scope.getSpan();\n\n const shouldSkipSpan = context.onlyIfParent && !parentSpan;\n const activeSpan = shouldSkipSpan\n ? undefined\n : createChildSpanOrTransaction(hub, {\n parentSpan,\n spanContext,\n forceTransaction: context.forceTransaction,\n scope,\n });\n\n return handleCallbackErrors(\n () => callback(activeSpan),\n () => {\n // Only update the span status if it hasn't been changed yet\n if (activeSpan) {\n const { status } = spanToJSON(activeSpan);\n if (!status || status === 'ok') {\n activeSpan.setStatus('internal_error');\n }\n }\n },\n () => activeSpan && activeSpan.end(),\n );\n });\n });\n}\n\n/**\n * @deprecated Use {@link startSpan} instead.\n */\nconst startActiveSpan = startSpan;\n\n/**\n * Similar to `Sentry.startSpan`. Wraps a function with a transaction/span, but does not finish the span\n * after the function is done automatically. You'll have to call `span.end()` manually.\n *\n * The created span is the active span and will be used as parent by other spans created inside the function\n * and can be accessed via `Sentry.getActiveSpan()`, as long as the function is executed while the scope is active.\n *\n * Note that if you have not enabled tracing extensions via `addTracingExtensions`\n * or you didn't set `tracesSampleRate`, this function will not generate spans\n * and the `span` returned from the callback will be undefined.\n */\nfunction startSpanManual(\n context,\n callback,\n) {\n const spanContext = normalizeContext(context);\n\n return runWithAsyncContext(() => {\n return withScope(context.scope, scope => {\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n // eslint-disable-next-line deprecation/deprecation\n const parentSpan = scope.getSpan();\n\n const shouldSkipSpan = context.onlyIfParent && !parentSpan;\n const activeSpan = shouldSkipSpan\n ? undefined\n : createChildSpanOrTransaction(hub, {\n parentSpan,\n spanContext,\n forceTransaction: context.forceTransaction,\n scope,\n });\n\n function finishAndSetSpan() {\n activeSpan && activeSpan.end();\n }\n\n return handleCallbackErrors(\n () => callback(activeSpan, finishAndSetSpan),\n () => {\n // Only update the span status if it hasn't been changed yet, and the span is not yet finished\n if (activeSpan && activeSpan.isRecording()) {\n const { status } = spanToJSON(activeSpan);\n if (!status || status === 'ok') {\n activeSpan.setStatus('internal_error');\n }\n }\n },\n );\n });\n });\n}\n\n/**\n * Creates a span. This span is not set as active, so will not get automatic instrumentation spans\n * as children or be able to be accessed via `Sentry.getSpan()`.\n *\n * If you want to create a span that is set as active, use {@link startSpan}.\n *\n * Note that if you have not enabled tracing extensions via `addTracingExtensions`\n * or you didn't set `tracesSampleRate` or `tracesSampler`, this function will not generate spans\n * and the `span` returned from the callback will be undefined.\n */\nfunction startInactiveSpan(context) {\n if (!hasTracingEnabled()) {\n return undefined;\n }\n\n const spanContext = normalizeContext(context);\n // eslint-disable-next-line deprecation/deprecation\n const hub = getCurrentHub();\n const parentSpan = context.scope\n ? // eslint-disable-next-line deprecation/deprecation\n context.scope.getSpan()\n : getActiveSpan();\n\n const shouldSkipSpan = context.onlyIfParent && !parentSpan;\n\n if (shouldSkipSpan) {\n return undefined;\n }\n\n const scope = context.scope || getCurrentScope();\n\n // Even though we don't actually want to make this span active on the current scope,\n // we need to make it active on a temporary scope that we use for event processing\n // as otherwise, it won't pick the correct span for the event when processing it\n const temporaryScope = (scope ).clone();\n\n return createChildSpanOrTransaction(hub, {\n parentSpan,\n spanContext,\n forceTransaction: context.forceTransaction,\n scope: temporaryScope,\n });\n}\n\n/**\n * Returns the currently active span.\n */\nfunction getActiveSpan() {\n // eslint-disable-next-line deprecation/deprecation\n return getCurrentScope().getSpan();\n}\n\nconst continueTrace = (\n {\n sentryTrace,\n baggage,\n }\n\n,\n callback,\n) => {\n // TODO(v8): Change this function so it doesn't do anything besides setting the propagation context on the current scope:\n /*\n return withScope((scope) => {\n const propagationContext = propagationContextFromHeaders(sentryTrace, baggage);\n scope.setPropagationContext(propagationContext);\n return callback();\n })\n */\n\n const currentScope = getCurrentScope();\n\n // eslint-disable-next-line deprecation/deprecation\n const { traceparentData, dynamicSamplingContext, propagationContext } = tracingContextFromHeaders(\n sentryTrace,\n baggage,\n );\n\n currentScope.setPropagationContext(propagationContext);\n\n if (DEBUG_BUILD && traceparentData) {\n logger.log(`[Tracing] Continuing trace ${traceparentData.traceId}.`);\n }\n\n const transactionContext = {\n ...traceparentData,\n metadata: dropUndefinedKeys({\n dynamicSamplingContext,\n }),\n };\n\n if (!callback) {\n return transactionContext;\n }\n\n return runWithAsyncContext(() => {\n return callback(transactionContext);\n });\n};\n\nfunction createChildSpanOrTransaction(\n // eslint-disable-next-line deprecation/deprecation\n hub,\n {\n parentSpan,\n spanContext,\n forceTransaction,\n scope,\n }\n\n,\n) {\n if (!hasTracingEnabled()) {\n return undefined;\n }\n\n const isolationScope = getIsolationScope();\n\n let span;\n if (parentSpan && !forceTransaction) {\n // eslint-disable-next-line deprecation/deprecation\n span = parentSpan.startChild(spanContext);\n } else if (parentSpan) {\n // If we forced a transaction but have a parent span, make sure to continue from the parent span, not the scope\n const dsc = getDynamicSamplingContextFromSpan(parentSpan);\n const { traceId, spanId: parentSpanId } = parentSpan.spanContext();\n const sampled = spanIsSampled(parentSpan);\n\n // eslint-disable-next-line deprecation/deprecation\n span = hub.startTransaction({\n traceId,\n parentSpanId,\n parentSampled: sampled,\n ...spanContext,\n metadata: {\n dynamicSamplingContext: dsc,\n // eslint-disable-next-line deprecation/deprecation\n ...spanContext.metadata,\n },\n });\n } else {\n const { traceId, dsc, parentSpanId, sampled } = {\n ...isolationScope.getPropagationContext(),\n ...scope.getPropagationContext(),\n };\n\n // eslint-disable-next-line deprecation/deprecation\n span = hub.startTransaction({\n traceId,\n parentSpanId,\n parentSampled: sampled,\n ...spanContext,\n metadata: {\n dynamicSamplingContext: dsc,\n // eslint-disable-next-line deprecation/deprecation\n ...spanContext.metadata,\n },\n });\n }\n\n // We always set this as active span on the scope\n // In the case of this being an inactive span, we ensure to pass a detached scope in here in the first place\n // But by having this here, we can ensure that the lookup through `getCapturedScopesOnSpan` results in the correct scope & span combo\n // eslint-disable-next-line deprecation/deprecation\n scope.setSpan(span);\n\n setCapturedScopesOnSpan(span, scope, isolationScope);\n\n return span;\n}\n\n/**\n * This converts StartSpanOptions to TransactionContext.\n * For the most part (for now) we accept the same options,\n * but some of them need to be transformed.\n *\n * Eventually the StartSpanOptions will be more aligned with OpenTelemetry.\n */\nfunction normalizeContext(context) {\n if (context.startTime) {\n const ctx = { ...context };\n ctx.startTimestamp = spanTimeInputToSeconds(context.startTime);\n delete ctx.startTime;\n return ctx;\n }\n\n return context;\n}\n\nconst SCOPE_ON_START_SPAN_FIELD = '_sentryScope';\nconst ISOLATION_SCOPE_ON_START_SPAN_FIELD = '_sentryIsolationScope';\n\nfunction setCapturedScopesOnSpan(span, scope, isolationScope) {\n if (span) {\n addNonEnumerableProperty(span, ISOLATION_SCOPE_ON_START_SPAN_FIELD, isolationScope);\n addNonEnumerableProperty(span, SCOPE_ON_START_SPAN_FIELD, scope);\n }\n}\n\n/**\n * Grabs the scope and isolation scope off a span that were active when the span was started.\n */\nfunction getCapturedScopesOnSpan(span) {\n return {\n scope: (span )[SCOPE_ON_START_SPAN_FIELD],\n isolationScope: (span )[ISOLATION_SCOPE_ON_START_SPAN_FIELD],\n };\n}\n\nexport { continueTrace, getActiveSpan, getCapturedScopesOnSpan, startActiveSpan, startInactiveSpan, startSpan, startSpanManual, trace };\n//# sourceMappingURL=trace.js.map\n","import { dropUndefinedKeys } from '@sentry/utils';\nimport '../debug-build.js';\nimport '../tracing/errors.js';\nimport '../tracing/spanstatus.js';\nimport { getActiveSpan } from '../tracing/trace.js';\n\n/**\n * key: bucketKey\n * value: [exportKey, MetricSummary]\n */\n\nlet SPAN_METRIC_SUMMARY;\n\nfunction getMetricStorageForSpan(span) {\n return SPAN_METRIC_SUMMARY ? SPAN_METRIC_SUMMARY.get(span) : undefined;\n}\n\n/**\n * Fetches the metric summary if it exists for the passed span\n */\nfunction getMetricSummaryJsonForSpan(span) {\n const storage = getMetricStorageForSpan(span);\n\n if (!storage) {\n return undefined;\n }\n const output = {};\n\n for (const [, [exportKey, summary]] of storage) {\n if (!output[exportKey]) {\n output[exportKey] = [];\n }\n\n output[exportKey].push(dropUndefinedKeys(summary));\n }\n\n return output;\n}\n\n/**\n * Updates the metric summary on the currently active span\n */\nfunction updateMetricSummaryOnActiveSpan(\n metricType,\n sanitizedName,\n value,\n unit,\n tags,\n bucketKey,\n) {\n const span = getActiveSpan();\n if (span) {\n const storage = getMetricStorageForSpan(span) || new Map();\n\n const exportKey = `${metricType}:${sanitizedName}@${unit}`;\n const bucketItem = storage.get(bucketKey);\n\n if (bucketItem) {\n const [, summary] = bucketItem;\n storage.set(bucketKey, [\n exportKey,\n {\n min: Math.min(summary.min, value),\n max: Math.max(summary.max, value),\n count: (summary.count += 1),\n sum: (summary.sum += value),\n tags: summary.tags,\n },\n ]);\n } else {\n storage.set(bucketKey, [\n exportKey,\n {\n min: value,\n max: value,\n count: 1,\n sum: value,\n tags,\n },\n ]);\n }\n\n if (!SPAN_METRIC_SUMMARY) {\n SPAN_METRIC_SUMMARY = new WeakMap();\n }\n\n SPAN_METRIC_SUMMARY.set(span, storage);\n }\n}\n\nexport { getMetricSummaryJsonForSpan, updateMetricSummaryOnActiveSpan };\n//# sourceMappingURL=metric-summary.js.map\n","/** The status of an Span.\n *\n * @deprecated Use string literals - if you require type casting, cast to SpanStatusType type\n */\nvar SpanStatus; (function (SpanStatus) {\n /** The operation completed successfully. */\n const Ok = 'ok'; SpanStatus[\"Ok\"] = Ok;\n /** Deadline expired before operation could complete. */\n const DeadlineExceeded = 'deadline_exceeded'; SpanStatus[\"DeadlineExceeded\"] = DeadlineExceeded;\n /** 401 Unauthorized (actually does mean unauthenticated according to RFC 7235) */\n const Unauthenticated = 'unauthenticated'; SpanStatus[\"Unauthenticated\"] = Unauthenticated;\n /** 403 Forbidden */\n const PermissionDenied = 'permission_denied'; SpanStatus[\"PermissionDenied\"] = PermissionDenied;\n /** 404 Not Found. Some requested entity (file or directory) was not found. */\n const NotFound = 'not_found'; SpanStatus[\"NotFound\"] = NotFound;\n /** 429 Too Many Requests */\n const ResourceExhausted = 'resource_exhausted'; SpanStatus[\"ResourceExhausted\"] = ResourceExhausted;\n /** Client specified an invalid argument. 4xx. */\n const InvalidArgument = 'invalid_argument'; SpanStatus[\"InvalidArgument\"] = InvalidArgument;\n /** 501 Not Implemented */\n const Unimplemented = 'unimplemented'; SpanStatus[\"Unimplemented\"] = Unimplemented;\n /** 503 Service Unavailable */\n const Unavailable = 'unavailable'; SpanStatus[\"Unavailable\"] = Unavailable;\n /** Other/generic 5xx. */\n const InternalError = 'internal_error'; SpanStatus[\"InternalError\"] = InternalError;\n /** Unknown. Any non-standard HTTP status code. */\n const UnknownError = 'unknown_error'; SpanStatus[\"UnknownError\"] = UnknownError;\n /** The operation was cancelled (typically by the user). */\n const Cancelled = 'cancelled'; SpanStatus[\"Cancelled\"] = Cancelled;\n /** Already exists (409) */\n const AlreadyExists = 'already_exists'; SpanStatus[\"AlreadyExists\"] = AlreadyExists;\n /** Operation was rejected because the system is not in a state required for the operation's */\n const FailedPrecondition = 'failed_precondition'; SpanStatus[\"FailedPrecondition\"] = FailedPrecondition;\n /** The operation was aborted, typically due to a concurrency issue. */\n const Aborted = 'aborted'; SpanStatus[\"Aborted\"] = Aborted;\n /** Operation was attempted past the valid range. */\n const OutOfRange = 'out_of_range'; SpanStatus[\"OutOfRange\"] = OutOfRange;\n /** Unrecoverable data loss or corruption */\n const DataLoss = 'data_loss'; SpanStatus[\"DataLoss\"] = DataLoss;\n})(SpanStatus || (SpanStatus = {}));\n\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nfunction getSpanStatusFromHttpCode(httpStatus) {\n if (httpStatus < 400 && httpStatus >= 100) {\n return 'ok';\n }\n\n if (httpStatus >= 400 && httpStatus < 500) {\n switch (httpStatus) {\n case 401:\n return 'unauthenticated';\n case 403:\n return 'permission_denied';\n case 404:\n return 'not_found';\n case 409:\n return 'already_exists';\n case 413:\n return 'failed_precondition';\n case 429:\n return 'resource_exhausted';\n default:\n return 'invalid_argument';\n }\n }\n\n if (httpStatus >= 500 && httpStatus < 600) {\n switch (httpStatus) {\n case 501:\n return 'unimplemented';\n case 503:\n return 'unavailable';\n case 504:\n return 'deadline_exceeded';\n default:\n return 'internal_error';\n }\n }\n\n return 'unknown_error';\n}\n\n/**\n * Converts a HTTP status code into a {@link SpanStatusType}.\n *\n * @deprecated Use {@link spanStatusFromHttpCode} instead.\n * This export will be removed in v8 as the signature contains a typo.\n *\n * @param httpStatus The HTTP response status code.\n * @returns The span status or unknown_error.\n */\nconst spanStatusfromHttpCode = getSpanStatusFromHttpCode;\n\n/**\n * Sets the Http status attributes on the current span based on the http code.\n * Additionally, the span's status is updated, depending on the http code.\n */\nfunction setHttpStatus(span, httpStatus) {\n // TODO (v8): Remove these calls\n // Relay does not require us to send the status code as a tag\n // For now, just because users might expect it to land as a tag we keep sending it.\n // Same with data.\n // In v8, we replace both, simply with\n // span.setAttribute('http.response.status_code', httpStatus);\n\n // eslint-disable-next-line deprecation/deprecation\n span.setTag('http.status_code', String(httpStatus));\n // eslint-disable-next-line deprecation/deprecation\n span.setData('http.response.status_code', httpStatus);\n\n const spanStatus = getSpanStatusFromHttpCode(httpStatus);\n if (spanStatus !== 'unknown_error') {\n span.setStatus(spanStatus);\n }\n}\n\nexport { SpanStatus, getSpanStatusFromHttpCode, setHttpStatus, spanStatusfromHttpCode };\n//# sourceMappingURL=spanstatus.js.map\n","import { uuid4, timestampInSeconds, logger, dropUndefinedKeys } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { getMetricSummaryJsonForSpan } from '../metrics/metric-summary.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_PROFILE_ID } from '../semanticAttributes.js';\nimport { getRootSpan } from '../utils/getRootSpan.js';\nimport { TRACE_FLAG_SAMPLED, TRACE_FLAG_NONE, spanToJSON, spanTimeInputToSeconds, spanToTraceHeader, spanToTraceContext } from '../utils/spanUtils.js';\nimport { setHttpStatus } from './spanstatus.js';\n\n/**\n * Keeps track of finished spans for a given transaction\n * @internal\n * @hideconstructor\n * @hidden\n */\nclass SpanRecorder {\n\n constructor(maxlen = 1000) {\n this._maxlen = maxlen;\n this.spans = [];\n }\n\n /**\n * This is just so that we don't run out of memory while recording a lot\n * of spans. At some point we just stop and flush out the start of the\n * trace tree (i.e.the first n spans with the smallest\n * start_timestamp).\n */\n add(span) {\n if (this.spans.length > this._maxlen) {\n // eslint-disable-next-line deprecation/deprecation\n span.spanRecorder = undefined;\n } else {\n this.spans.push(span);\n }\n }\n}\n\n/**\n * Span contains all data about a span\n */\nclass Span {\n /**\n * Tags for the span.\n * @deprecated Use `spanToJSON(span).atttributes` instead.\n */\n\n /**\n * Data for the span.\n * @deprecated Use `spanToJSON(span).atttributes` instead.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n /**\n * List of spans that were finalized\n *\n * @deprecated This property will no longer be public. Span recording will be handled internally.\n */\n\n /**\n * @inheritDoc\n * @deprecated Use top level `Sentry.getRootSpan()` instead\n */\n\n /**\n * The instrumenter that created this span.\n *\n * TODO (v8): This can probably be replaced by an `instanceOf` check of the span class.\n * the instrumenter can only be sentry or otel so we can check the span instance\n * to verify which one it is and remove this field entirely.\n *\n * @deprecated This field will be removed.\n */\n\n /** Epoch timestamp in seconds when the span started. */\n\n /** Epoch timestamp in seconds when the span ended. */\n\n /** Internal keeper of the status */\n\n /**\n * You should never call the constructor manually, always use `Sentry.startTransaction()`\n * or call `startChild()` on an existing span.\n * @internal\n * @hideconstructor\n * @hidden\n */\n constructor(spanContext = {}) {\n this._traceId = spanContext.traceId || uuid4();\n this._spanId = spanContext.spanId || uuid4().substring(16);\n this._startTime = spanContext.startTimestamp || timestampInSeconds();\n // eslint-disable-next-line deprecation/deprecation\n this.tags = spanContext.tags ? { ...spanContext.tags } : {};\n // eslint-disable-next-line deprecation/deprecation\n this.data = spanContext.data ? { ...spanContext.data } : {};\n // eslint-disable-next-line deprecation/deprecation\n this.instrumenter = spanContext.instrumenter || 'sentry';\n\n this._attributes = {};\n this.setAttributes({\n [SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN]: spanContext.origin || 'manual',\n [SEMANTIC_ATTRIBUTE_SENTRY_OP]: spanContext.op,\n ...spanContext.attributes,\n });\n\n // eslint-disable-next-line deprecation/deprecation\n this._name = spanContext.name || spanContext.description;\n\n if (spanContext.parentSpanId) {\n this._parentSpanId = spanContext.parentSpanId;\n }\n // We want to include booleans as well here\n if ('sampled' in spanContext) {\n this._sampled = spanContext.sampled;\n }\n if (spanContext.status) {\n this._status = spanContext.status;\n }\n if (spanContext.endTimestamp) {\n this._endTime = spanContext.endTimestamp;\n }\n if (spanContext.exclusiveTime !== undefined) {\n this._exclusiveTime = spanContext.exclusiveTime;\n }\n this._measurements = spanContext.measurements ? { ...spanContext.measurements } : {};\n }\n\n // This rule conflicts with another eslint rule :(\n /* eslint-disable @typescript-eslint/member-ordering */\n\n /**\n * An alias for `description` of the Span.\n * @deprecated Use `spanToJSON(span).description` instead.\n */\n get name() {\n return this._name || '';\n }\n\n /**\n * Update the name of the span.\n * @deprecated Use `spanToJSON(span).description` instead.\n */\n set name(name) {\n this.updateName(name);\n }\n\n /**\n * Get the description of the Span.\n * @deprecated Use `spanToJSON(span).description` instead.\n */\n get description() {\n return this._name;\n }\n\n /**\n * Get the description of the Span.\n * @deprecated Use `spanToJSON(span).description` instead.\n */\n set description(description) {\n this._name = description;\n }\n\n /**\n * The ID of the trace.\n * @deprecated Use `spanContext().traceId` instead.\n */\n get traceId() {\n return this._traceId;\n }\n\n /**\n * The ID of the trace.\n * @deprecated You cannot update the traceId of a span after span creation.\n */\n set traceId(traceId) {\n this._traceId = traceId;\n }\n\n /**\n * The ID of the span.\n * @deprecated Use `spanContext().spanId` instead.\n */\n get spanId() {\n return this._spanId;\n }\n\n /**\n * The ID of the span.\n * @deprecated You cannot update the spanId of a span after span creation.\n */\n set spanId(spanId) {\n this._spanId = spanId;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `startSpan` functions instead.\n */\n set parentSpanId(string) {\n this._parentSpanId = string;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `spanToJSON(span).parent_span_id` instead.\n */\n get parentSpanId() {\n return this._parentSpanId;\n }\n\n /**\n * Was this span chosen to be sent as part of the sample?\n * @deprecated Use `isRecording()` instead.\n */\n get sampled() {\n return this._sampled;\n }\n\n /**\n * Was this span chosen to be sent as part of the sample?\n * @deprecated You cannot update the sampling decision of a span after span creation.\n */\n set sampled(sampled) {\n this._sampled = sampled;\n }\n\n /**\n * Attributes for the span.\n * @deprecated Use `spanToJSON(span).atttributes` instead.\n */\n get attributes() {\n return this._attributes;\n }\n\n /**\n * Attributes for the span.\n * @deprecated Use `setAttributes()` instead.\n */\n set attributes(attributes) {\n this._attributes = attributes;\n }\n\n /**\n * Timestamp in seconds (epoch time) indicating when the span started.\n * @deprecated Use `spanToJSON()` instead.\n */\n get startTimestamp() {\n return this._startTime;\n }\n\n /**\n * Timestamp in seconds (epoch time) indicating when the span started.\n * @deprecated In v8, you will not be able to update the span start time after creation.\n */\n set startTimestamp(startTime) {\n this._startTime = startTime;\n }\n\n /**\n * Timestamp in seconds when the span ended.\n * @deprecated Use `spanToJSON()` instead.\n */\n get endTimestamp() {\n return this._endTime;\n }\n\n /**\n * Timestamp in seconds when the span ended.\n * @deprecated Set the end time via `span.end()` instead.\n */\n set endTimestamp(endTime) {\n this._endTime = endTime;\n }\n\n /**\n * The status of the span.\n *\n * @deprecated Use `spanToJSON().status` instead to get the status.\n */\n get status() {\n return this._status;\n }\n\n /**\n * The status of the span.\n *\n * @deprecated Use `.setStatus()` instead to set or update the status.\n */\n set status(status) {\n this._status = status;\n }\n\n /**\n * Operation of the span\n *\n * @deprecated Use `spanToJSON().op` to read the op instead.\n */\n get op() {\n return this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] ;\n }\n\n /**\n * Operation of the span\n *\n * @deprecated Use `startSpan()` functions to set or `span.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, 'op')\n * to update the span instead.\n */\n set op(op) {\n this.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_OP, op);\n }\n\n /**\n * The origin of the span, giving context about what created the span.\n *\n * @deprecated Use `spanToJSON().origin` to read the origin instead.\n */\n get origin() {\n return this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] ;\n }\n\n /**\n * The origin of the span, giving context about what created the span.\n *\n * @deprecated Use `startSpan()` functions to set the origin instead.\n */\n set origin(origin) {\n this.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN, origin);\n }\n\n /* eslint-enable @typescript-eslint/member-ordering */\n\n /** @inheritdoc */\n spanContext() {\n const { _spanId: spanId, _traceId: traceId, _sampled: sampled } = this;\n return {\n spanId,\n traceId,\n traceFlags: sampled ? TRACE_FLAG_SAMPLED : TRACE_FLAG_NONE,\n };\n }\n\n /**\n * Creates a new `Span` while setting the current `Span.id` as `parentSpanId`.\n * Also the `sampled` decision will be inherited.\n *\n * @deprecated Use `startSpan()`, `startSpanManual()` or `startInactiveSpan()` instead.\n */\n startChild(\n spanContext,\n ) {\n const childSpan = new Span({\n ...spanContext,\n parentSpanId: this._spanId,\n sampled: this._sampled,\n traceId: this._traceId,\n });\n\n // eslint-disable-next-line deprecation/deprecation\n childSpan.spanRecorder = this.spanRecorder;\n // eslint-disable-next-line deprecation/deprecation\n if (childSpan.spanRecorder) {\n // eslint-disable-next-line deprecation/deprecation\n childSpan.spanRecorder.add(childSpan);\n }\n\n const rootSpan = getRootSpan(this);\n // TODO: still set span.transaction here until we have a more permanent solution\n // Probably similarly to the weakmap we hold in node-experimental\n // eslint-disable-next-line deprecation/deprecation\n childSpan.transaction = rootSpan ;\n\n if (DEBUG_BUILD && rootSpan) {\n const opStr = (spanContext && spanContext.op) || '< unknown op >';\n const nameStr = spanToJSON(childSpan).description || '< unknown name >';\n const idStr = rootSpan.spanContext().spanId;\n\n const logMessage = `[Tracing] Starting '${opStr}' span on transaction '${nameStr}' (${idStr}).`;\n logger.log(logMessage);\n this._logMessage = logMessage;\n }\n\n return childSpan;\n }\n\n /**\n * Sets the tag attribute on the current span.\n *\n * Can also be used to unset a tag, by passing `undefined`.\n *\n * @param key Tag key\n * @param value Tag value\n * @deprecated Use `setAttribute()` instead.\n */\n setTag(key, value) {\n // eslint-disable-next-line deprecation/deprecation\n this.tags = { ...this.tags, [key]: value };\n return this;\n }\n\n /**\n * Sets the data attribute on the current span\n * @param key Data key\n * @param value Data value\n * @deprecated Use `setAttribute()` instead.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n setData(key, value) {\n // eslint-disable-next-line deprecation/deprecation\n this.data = { ...this.data, [key]: value };\n return this;\n }\n\n /** @inheritdoc */\n setAttribute(key, value) {\n if (value === undefined) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._attributes[key];\n } else {\n this._attributes[key] = value;\n }\n }\n\n /** @inheritdoc */\n setAttributes(attributes) {\n Object.keys(attributes).forEach(key => this.setAttribute(key, attributes[key]));\n }\n\n /**\n * @inheritDoc\n */\n setStatus(value) {\n this._status = value;\n return this;\n }\n\n /**\n * @inheritDoc\n * @deprecated Use top-level `setHttpStatus()` instead.\n */\n setHttpStatus(httpStatus) {\n setHttpStatus(this, httpStatus);\n return this;\n }\n\n /**\n * @inheritdoc\n *\n * @deprecated Use `.updateName()` instead.\n */\n setName(name) {\n this.updateName(name);\n }\n\n /**\n * @inheritDoc\n */\n updateName(name) {\n this._name = name;\n return this;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `spanToJSON(span).status === 'ok'` instead.\n */\n isSuccess() {\n return this._status === 'ok';\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `.end()` instead.\n */\n finish(endTimestamp) {\n return this.end(endTimestamp);\n }\n\n /** @inheritdoc */\n end(endTimestamp) {\n // If already ended, skip\n if (this._endTime) {\n return;\n }\n const rootSpan = getRootSpan(this);\n if (\n DEBUG_BUILD &&\n // Don't call this for transactions\n rootSpan &&\n rootSpan.spanContext().spanId !== this._spanId\n ) {\n const logMessage = this._logMessage;\n if (logMessage) {\n logger.log((logMessage ).replace('Starting', 'Finishing'));\n }\n }\n\n this._endTime = spanTimeInputToSeconds(endTimestamp);\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `spanToTraceHeader()` instead.\n */\n toTraceparent() {\n return spanToTraceHeader(this);\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `spanToJSON()` or access the fields directly instead.\n */\n toContext() {\n return dropUndefinedKeys({\n data: this._getData(),\n description: this._name,\n endTimestamp: this._endTime,\n // eslint-disable-next-line deprecation/deprecation\n op: this.op,\n parentSpanId: this._parentSpanId,\n sampled: this._sampled,\n spanId: this._spanId,\n startTimestamp: this._startTime,\n status: this._status,\n // eslint-disable-next-line deprecation/deprecation\n tags: this.tags,\n traceId: this._traceId,\n });\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Update the fields directly instead.\n */\n updateWithContext(spanContext) {\n // eslint-disable-next-line deprecation/deprecation\n this.data = spanContext.data || {};\n // eslint-disable-next-line deprecation/deprecation\n this._name = spanContext.name || spanContext.description;\n this._endTime = spanContext.endTimestamp;\n // eslint-disable-next-line deprecation/deprecation\n this.op = spanContext.op;\n this._parentSpanId = spanContext.parentSpanId;\n this._sampled = spanContext.sampled;\n this._spanId = spanContext.spanId || this._spanId;\n this._startTime = spanContext.startTimestamp || this._startTime;\n this._status = spanContext.status;\n // eslint-disable-next-line deprecation/deprecation\n this.tags = spanContext.tags || {};\n this._traceId = spanContext.traceId || this._traceId;\n\n return this;\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use `spanToTraceContext()` util function instead.\n */\n getTraceContext() {\n return spanToTraceContext(this);\n }\n\n /**\n * Get JSON representation of this span.\n *\n * @hidden\n * @internal This method is purely for internal purposes and should not be used outside\n * of SDK code. If you need to get a JSON representation of a span,\n * use `spanToJSON(span)` instead.\n */\n getSpanJSON() {\n return dropUndefinedKeys({\n data: this._getData(),\n description: this._name,\n op: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_OP] ,\n parent_span_id: this._parentSpanId,\n span_id: this._spanId,\n start_timestamp: this._startTime,\n status: this._status,\n // eslint-disable-next-line deprecation/deprecation\n tags: Object.keys(this.tags).length > 0 ? this.tags : undefined,\n timestamp: this._endTime,\n trace_id: this._traceId,\n origin: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN] ,\n _metrics_summary: getMetricSummaryJsonForSpan(this),\n profile_id: this._attributes[SEMANTIC_ATTRIBUTE_PROFILE_ID] ,\n exclusive_time: this._exclusiveTime,\n measurements: Object.keys(this._measurements).length > 0 ? this._measurements : undefined,\n });\n }\n\n /** @inheritdoc */\n isRecording() {\n return !this._endTime && !!this._sampled;\n }\n\n /**\n * Convert the object to JSON.\n * @deprecated Use `spanToJSON(span)` instead.\n */\n toJSON() {\n return this.getSpanJSON();\n }\n\n /**\n * Get the merged data for this span.\n * For now, this combines `data` and `attributes` together,\n * until eventually we can ingest `attributes` directly.\n */\n _getData()\n\n {\n // eslint-disable-next-line deprecation/deprecation\n const { data, _attributes: attributes } = this;\n\n const hasData = Object.keys(data).length > 0;\n const hasAttributes = Object.keys(attributes).length > 0;\n\n if (!hasData && !hasAttributes) {\n return undefined;\n }\n\n if (hasData && hasAttributes) {\n return {\n ...data,\n ...attributes,\n };\n }\n\n return hasData ? data : attributes;\n }\n}\n\nexport { Span, SpanRecorder };\n//# sourceMappingURL=span.js.map\n","import { dropUndefinedKeys, logger } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { getCurrentHub } from '../hub.js';\nimport { getMetricSummaryJsonForSpan } from '../metrics/metric-summary.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE } from '../semanticAttributes.js';\nimport { spanTimeInputToSeconds, spanToJSON, spanToTraceContext } from '../utils/spanUtils.js';\nimport { getDynamicSamplingContextFromSpan } from './dynamicSamplingContext.js';\nimport { Span, SpanRecorder } from './span.js';\nimport { getCapturedScopesOnSpan } from './trace.js';\n\n/** JSDoc */\nclass Transaction extends Span {\n /**\n * The reference to the current hub.\n */\n // eslint-disable-next-line deprecation/deprecation\n\n // DO NOT yet remove this property, it is used in a hack for v7 backwards compatibility.\n\n /**\n * This constructor should never be called manually. Those instrumenting tracing should use\n * `Sentry.startTransaction()`, and internal methods should use `hub.startTransaction()`.\n * @internal\n * @hideconstructor\n * @hidden\n *\n * @deprecated Transactions will be removed in v8. Use spans instead.\n */\n // eslint-disable-next-line deprecation/deprecation\n constructor(transactionContext, hub) {\n super(transactionContext);\n this._contexts = {};\n\n // eslint-disable-next-line deprecation/deprecation\n this._hub = hub || getCurrentHub();\n\n this._name = transactionContext.name || '';\n\n this._metadata = {\n // eslint-disable-next-line deprecation/deprecation\n ...transactionContext.metadata,\n };\n\n this._trimEnd = transactionContext.trimEnd;\n\n // this is because transactions are also spans, and spans have a transaction pointer\n // TODO (v8): Replace this with another way to set the root span\n // eslint-disable-next-line deprecation/deprecation\n this.transaction = this;\n\n // If Dynamic Sampling Context is provided during the creation of the transaction, we freeze it as it usually means\n // there is incoming Dynamic Sampling Context. (Either through an incoming request, a baggage meta-tag, or other means)\n const incomingDynamicSamplingContext = this._metadata.dynamicSamplingContext;\n if (incomingDynamicSamplingContext) {\n // We shallow copy this in case anything writes to the original reference of the passed in `dynamicSamplingContext`\n this._frozenDynamicSamplingContext = { ...incomingDynamicSamplingContext };\n }\n }\n\n // This sadly conflicts with the getter/setter ordering :(\n /* eslint-disable @typescript-eslint/member-ordering */\n\n /**\n * Getter for `name` property.\n * @deprecated Use `spanToJSON(span).description` instead.\n */\n get name() {\n return this._name;\n }\n\n /**\n * Setter for `name` property, which also sets `source` as custom.\n * @deprecated Use `updateName()` and `setMetadata()` instead.\n */\n set name(newName) {\n // eslint-disable-next-line deprecation/deprecation\n this.setName(newName);\n }\n\n /**\n * Get the metadata for this transaction.\n * @deprecated Use `spanGetMetadata(transaction)` instead.\n */\n get metadata() {\n // We merge attributes in for backwards compatibility\n return {\n // Defaults\n // eslint-disable-next-line deprecation/deprecation\n source: 'custom',\n spanMetadata: {},\n\n // Legacy metadata\n ...this._metadata,\n\n // From attributes\n ...(this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] && {\n source: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE] ,\n }),\n ...(this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] && {\n sampleRate: this._attributes[SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE] ,\n }),\n };\n }\n\n /**\n * Update the metadata for this transaction.\n * @deprecated Use `spanGetMetadata(transaction)` instead.\n */\n set metadata(metadata) {\n this._metadata = metadata;\n }\n\n /* eslint-enable @typescript-eslint/member-ordering */\n\n /**\n * Setter for `name` property, which also sets `source` on the metadata.\n *\n * @deprecated Use `.updateName()` and `.setAttribute()` instead.\n */\n setName(name, source = 'custom') {\n this._name = name;\n this.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, source);\n }\n\n /** @inheritdoc */\n updateName(name) {\n this._name = name;\n return this;\n }\n\n /**\n * Attaches SpanRecorder to the span itself\n * @param maxlen maximum number of spans that can be recorded\n */\n initSpanRecorder(maxlen = 1000) {\n // eslint-disable-next-line deprecation/deprecation\n if (!this.spanRecorder) {\n // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder = new SpanRecorder(maxlen);\n }\n // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder.add(this);\n }\n\n /**\n * Set the context of a transaction event.\n * @deprecated Use either `.setAttribute()`, or set the context on the scope before creating the transaction.\n */\n setContext(key, context) {\n if (context === null) {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this._contexts[key];\n } else {\n this._contexts[key] = context;\n }\n }\n\n /**\n * @inheritDoc\n *\n * @deprecated Use top-level `setMeasurement()` instead.\n */\n setMeasurement(name, value, unit = '') {\n this._measurements[name] = { value, unit };\n }\n\n /**\n * Store metadata on this transaction.\n * @deprecated Use attributes or store data on the scope instead.\n */\n setMetadata(newMetadata) {\n this._metadata = { ...this._metadata, ...newMetadata };\n }\n\n /**\n * @inheritDoc\n */\n end(endTimestamp) {\n const timestampInS = spanTimeInputToSeconds(endTimestamp);\n const transaction = this._finishTransaction(timestampInS);\n if (!transaction) {\n return undefined;\n }\n // eslint-disable-next-line deprecation/deprecation\n return this._hub.captureEvent(transaction);\n }\n\n /**\n * @inheritDoc\n */\n toContext() {\n // eslint-disable-next-line deprecation/deprecation\n const spanContext = super.toContext();\n\n return dropUndefinedKeys({\n ...spanContext,\n name: this._name,\n trimEnd: this._trimEnd,\n });\n }\n\n /**\n * @inheritDoc\n */\n updateWithContext(transactionContext) {\n // eslint-disable-next-line deprecation/deprecation\n super.updateWithContext(transactionContext);\n\n this._name = transactionContext.name || '';\n this._trimEnd = transactionContext.trimEnd;\n\n return this;\n }\n\n /**\n * @inheritdoc\n *\n * @experimental\n *\n * @deprecated Use top-level `getDynamicSamplingContextFromSpan` instead.\n */\n getDynamicSamplingContext() {\n return getDynamicSamplingContextFromSpan(this);\n }\n\n /**\n * Override the current hub with a new one.\n * Used if you want another hub to finish the transaction.\n *\n * @internal\n */\n // eslint-disable-next-line deprecation/deprecation\n setHub(hub) {\n this._hub = hub;\n }\n\n /**\n * Get the profile id of the transaction.\n */\n getProfileId() {\n if (this._contexts !== undefined && this._contexts['profile'] !== undefined) {\n return this._contexts['profile'].profile_id ;\n }\n return undefined;\n }\n\n /**\n * Finish the transaction & prepare the event to send to Sentry.\n */\n _finishTransaction(endTimestamp) {\n // This transaction is already finished, so we should not flush it again.\n if (this._endTime !== undefined) {\n return undefined;\n }\n\n if (!this._name) {\n DEBUG_BUILD && logger.warn('Transaction has no name, falling back to ``.');\n this._name = '';\n }\n\n // just sets the end timestamp\n super.end(endTimestamp);\n\n // eslint-disable-next-line deprecation/deprecation\n const client = this._hub.getClient();\n if (client && client.emit) {\n client.emit('finishTransaction', this);\n }\n\n if (this._sampled !== true) {\n // At this point if `sampled !== true` we want to discard the transaction.\n DEBUG_BUILD && logger.log('[Tracing] Discarding transaction because its trace was not chosen to be sampled.');\n\n if (client) {\n client.recordDroppedEvent('sample_rate', 'transaction');\n }\n\n return undefined;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n const finishedSpans = this.spanRecorder\n ? // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder.spans.filter(span => span !== this && spanToJSON(span).timestamp)\n : [];\n\n if (this._trimEnd && finishedSpans.length > 0) {\n const endTimes = finishedSpans.map(span => spanToJSON(span).timestamp).filter(Boolean) ;\n this._endTime = endTimes.reduce((prev, current) => {\n return prev > current ? prev : current;\n });\n }\n\n const { scope: capturedSpanScope, isolationScope: capturedSpanIsolationScope } = getCapturedScopesOnSpan(this);\n\n // eslint-disable-next-line deprecation/deprecation\n const { metadata } = this;\n // eslint-disable-next-line deprecation/deprecation\n const { source } = metadata;\n\n const transaction = {\n contexts: {\n ...this._contexts,\n // We don't want to override trace context\n trace: spanToTraceContext(this),\n },\n // TODO: Pass spans serialized via `spanToJSON()` here instead in v8.\n spans: finishedSpans,\n start_timestamp: this._startTime,\n // eslint-disable-next-line deprecation/deprecation\n tags: this.tags,\n timestamp: this._endTime,\n transaction: this._name,\n type: 'transaction',\n sdkProcessingMetadata: {\n ...metadata,\n capturedSpanScope,\n capturedSpanIsolationScope,\n ...dropUndefinedKeys({\n dynamicSamplingContext: getDynamicSamplingContextFromSpan(this),\n }),\n },\n _metrics_summary: getMetricSummaryJsonForSpan(this),\n ...(source && {\n transaction_info: {\n source,\n },\n }),\n };\n\n const hasMeasurements = Object.keys(this._measurements).length > 0;\n\n if (hasMeasurements) {\n DEBUG_BUILD &&\n logger.log(\n '[Measurements] Adding measurements to transaction',\n JSON.stringify(this._measurements, undefined, 2),\n );\n transaction.measurements = this._measurements;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n DEBUG_BUILD && logger.log(`[Tracing] Finishing ${this.op} transaction: ${this._name}.`);\n\n return transaction;\n }\n}\n\nexport { Transaction };\n//# sourceMappingURL=transaction.js.map\n","import { logger, timestampInSeconds } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { spanTimeInputToSeconds, spanToJSON } from '../utils/spanUtils.js';\nimport { SpanRecorder } from './span.js';\nimport { Transaction } from './transaction.js';\n\nconst TRACING_DEFAULTS = {\n idleTimeout: 1000,\n finalTimeout: 30000,\n heartbeatInterval: 5000,\n};\n\nconst FINISH_REASON_TAG = 'finishReason';\n\nconst IDLE_TRANSACTION_FINISH_REASONS = [\n 'heartbeatFailed',\n 'idleTimeout',\n 'documentHidden',\n 'finalTimeout',\n 'externalFinish',\n 'cancelled',\n];\n\n/**\n * @inheritDoc\n */\nclass IdleTransactionSpanRecorder extends SpanRecorder {\n constructor(\n _pushActivity,\n _popActivity,\n transactionSpanId,\n maxlen,\n ) {\n super(maxlen);this._pushActivity = _pushActivity;this._popActivity = _popActivity;this.transactionSpanId = transactionSpanId; }\n\n /**\n * @inheritDoc\n */\n add(span) {\n // We should make sure we do not push and pop activities for\n // the transaction that this span recorder belongs to.\n if (span.spanContext().spanId !== this.transactionSpanId) {\n // We patch span.end() to pop an activity after setting an endTimestamp.\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const originalEnd = span.end;\n span.end = (...rest) => {\n this._popActivity(span.spanContext().spanId);\n return originalEnd.apply(span, rest);\n };\n\n // We should only push new activities if the span does not have an end timestamp.\n if (spanToJSON(span).timestamp === undefined) {\n this._pushActivity(span.spanContext().spanId);\n }\n }\n\n super.add(span);\n }\n}\n\n/**\n * An IdleTransaction is a transaction that automatically finishes. It does this by tracking child spans as activities.\n * You can have multiple IdleTransactions active, but if the `onScope` option is specified, the idle transaction will\n * put itself on the scope on creation.\n */\nclass IdleTransaction extends Transaction {\n // Activities store a list of active spans\n\n // Track state of activities in previous heartbeat\n\n // Amount of times heartbeat has counted. Will cause transaction to finish after 3 beats.\n\n // We should not use heartbeat if we finished a transaction\n\n // Idle timeout was canceled and we should finish the transaction with the last span end.\n\n /**\n * Timer that tracks Transaction idleTimeout\n */\n\n /**\n * @deprecated Transactions will be removed in v8. Use spans instead.\n */\n constructor(\n transactionContext,\n // eslint-disable-next-line deprecation/deprecation\n _idleHub,\n /**\n * The time to wait in ms until the idle transaction will be finished. This timer is started each time\n * there are no active spans on this transaction.\n */\n _idleTimeout = TRACING_DEFAULTS.idleTimeout,\n /**\n * The final value in ms that a transaction cannot exceed\n */\n _finalTimeout = TRACING_DEFAULTS.finalTimeout,\n _heartbeatInterval = TRACING_DEFAULTS.heartbeatInterval,\n // Whether or not the transaction should put itself on the scope when it starts and pop itself off when it ends\n _onScope = false,\n /**\n * When set to `true`, will disable the idle timeout (`_idleTimeout` option) and heartbeat mechanisms (`_heartbeatInterval`\n * option) until the `sendAutoFinishSignal()` method is called. The final timeout mechanism (`_finalTimeout` option)\n * will not be affected by this option, meaning the transaction will definitely be finished when the final timeout is\n * reached, no matter what this option is configured to.\n *\n * Defaults to `false`.\n */\n delayAutoFinishUntilSignal = false,\n ) {\n super(transactionContext, _idleHub);this._idleHub = _idleHub;this._idleTimeout = _idleTimeout;this._finalTimeout = _finalTimeout;this._heartbeatInterval = _heartbeatInterval;this._onScope = _onScope;\n this.activities = {};\n this._heartbeatCounter = 0;\n this._finished = false;\n this._idleTimeoutCanceledPermanently = false;\n this._beforeFinishCallbacks = [];\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[4];\n this._autoFinishAllowed = !delayAutoFinishUntilSignal;\n\n if (_onScope) {\n // We set the transaction here on the scope so error events pick up the trace\n // context and attach it to the error.\n DEBUG_BUILD && logger.log(`Setting idle transaction on scope. Span ID: ${this.spanContext().spanId}`);\n // eslint-disable-next-line deprecation/deprecation\n _idleHub.getScope().setSpan(this);\n }\n\n if (!delayAutoFinishUntilSignal) {\n this._restartIdleTimeout();\n }\n\n setTimeout(() => {\n if (!this._finished) {\n this.setStatus('deadline_exceeded');\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[3];\n this.end();\n }\n }, this._finalTimeout);\n }\n\n /** {@inheritDoc} */\n end(endTimestamp) {\n const endTimestampInS = spanTimeInputToSeconds(endTimestamp);\n\n this._finished = true;\n this.activities = {};\n\n // eslint-disable-next-line deprecation/deprecation\n if (this.op === 'ui.action.click') {\n this.setAttribute(FINISH_REASON_TAG, this._finishReason);\n }\n\n // eslint-disable-next-line deprecation/deprecation\n if (this.spanRecorder) {\n DEBUG_BUILD &&\n // eslint-disable-next-line deprecation/deprecation\n logger.log('[Tracing] finishing IdleTransaction', new Date(endTimestampInS * 1000).toISOString(), this.op);\n\n for (const callback of this._beforeFinishCallbacks) {\n callback(this, endTimestampInS);\n }\n\n // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder.spans = this.spanRecorder.spans.filter((span) => {\n // If we are dealing with the transaction itself, we just return it\n if (span.spanContext().spanId === this.spanContext().spanId) {\n return true;\n }\n\n // We cancel all pending spans with status \"cancelled\" to indicate the idle transaction was finished early\n if (!spanToJSON(span).timestamp) {\n span.setStatus('cancelled');\n span.end(endTimestampInS);\n DEBUG_BUILD &&\n logger.log('[Tracing] cancelling span since transaction ended early', JSON.stringify(span, undefined, 2));\n }\n\n const { start_timestamp: startTime, timestamp: endTime } = spanToJSON(span);\n const spanStartedBeforeTransactionFinish = startTime && startTime < endTimestampInS;\n\n // Add a delta with idle timeout so that we prevent false positives\n const timeoutWithMarginOfError = (this._finalTimeout + this._idleTimeout) / 1000;\n const spanEndedBeforeFinalTimeout = endTime && startTime && endTime - startTime < timeoutWithMarginOfError;\n\n if (DEBUG_BUILD) {\n const stringifiedSpan = JSON.stringify(span, undefined, 2);\n if (!spanStartedBeforeTransactionFinish) {\n logger.log('[Tracing] discarding Span since it happened after Transaction was finished', stringifiedSpan);\n } else if (!spanEndedBeforeFinalTimeout) {\n logger.log('[Tracing] discarding Span since it finished after Transaction final timeout', stringifiedSpan);\n }\n }\n\n return spanStartedBeforeTransactionFinish && spanEndedBeforeFinalTimeout;\n });\n\n DEBUG_BUILD && logger.log('[Tracing] flushing IdleTransaction');\n } else {\n DEBUG_BUILD && logger.log('[Tracing] No active IdleTransaction');\n }\n\n // if `this._onScope` is `true`, the transaction put itself on the scope when it started\n if (this._onScope) {\n // eslint-disable-next-line deprecation/deprecation\n const scope = this._idleHub.getScope();\n // eslint-disable-next-line deprecation/deprecation\n if (scope.getTransaction() === this) {\n // eslint-disable-next-line deprecation/deprecation\n scope.setSpan(undefined);\n }\n }\n\n return super.end(endTimestamp);\n }\n\n /**\n * Register a callback function that gets executed before the transaction finishes.\n * Useful for cleanup or if you want to add any additional spans based on current context.\n *\n * This is exposed because users have no other way of running something before an idle transaction\n * finishes.\n */\n registerBeforeFinishCallback(callback) {\n this._beforeFinishCallbacks.push(callback);\n }\n\n /**\n * @inheritDoc\n */\n initSpanRecorder(maxlen) {\n // eslint-disable-next-line deprecation/deprecation\n if (!this.spanRecorder) {\n const pushActivity = (id) => {\n if (this._finished) {\n return;\n }\n this._pushActivity(id);\n };\n const popActivity = (id) => {\n if (this._finished) {\n return;\n }\n this._popActivity(id);\n };\n\n // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder = new IdleTransactionSpanRecorder(pushActivity, popActivity, this.spanContext().spanId, maxlen);\n\n // Start heartbeat so that transactions do not run forever.\n DEBUG_BUILD && logger.log('Starting heartbeat');\n this._pingHeartbeat();\n }\n // eslint-disable-next-line deprecation/deprecation\n this.spanRecorder.add(this);\n }\n\n /**\n * Cancels the existing idle timeout, if there is one.\n * @param restartOnChildSpanChange Default is `true`.\n * If set to false the transaction will end\n * with the last child span.\n */\n cancelIdleTimeout(\n endTimestamp,\n {\n restartOnChildSpanChange,\n }\n\n = {\n restartOnChildSpanChange: true,\n },\n ) {\n this._idleTimeoutCanceledPermanently = restartOnChildSpanChange === false;\n if (this._idleTimeoutID) {\n clearTimeout(this._idleTimeoutID);\n this._idleTimeoutID = undefined;\n\n if (Object.keys(this.activities).length === 0 && this._idleTimeoutCanceledPermanently) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[5];\n this.end(endTimestamp);\n }\n }\n }\n\n /**\n * Temporary method used to externally set the transaction's `finishReason`\n *\n * ** WARNING**\n * This is for the purpose of experimentation only and will be removed in the near future, do not use!\n *\n * @internal\n *\n */\n setFinishReason(reason) {\n this._finishReason = reason;\n }\n\n /**\n * Permits the IdleTransaction to automatically end itself via the idle timeout and heartbeat mechanisms when the `delayAutoFinishUntilSignal` option was set to `true`.\n */\n sendAutoFinishSignal() {\n if (!this._autoFinishAllowed) {\n DEBUG_BUILD && logger.log('[Tracing] Received finish signal for idle transaction.');\n this._restartIdleTimeout();\n this._autoFinishAllowed = true;\n }\n }\n\n /**\n * Restarts idle timeout, if there is no running idle timeout it will start one.\n */\n _restartIdleTimeout(endTimestamp) {\n this.cancelIdleTimeout();\n this._idleTimeoutID = setTimeout(() => {\n if (!this._finished && Object.keys(this.activities).length === 0) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[1];\n this.end(endTimestamp);\n }\n }, this._idleTimeout);\n }\n\n /**\n * Start tracking a specific activity.\n * @param spanId The span id that represents the activity\n */\n _pushActivity(spanId) {\n this.cancelIdleTimeout(undefined, { restartOnChildSpanChange: !this._idleTimeoutCanceledPermanently });\n DEBUG_BUILD && logger.log(`[Tracing] pushActivity: ${spanId}`);\n this.activities[spanId] = true;\n DEBUG_BUILD && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n /**\n * Remove an activity from usage\n * @param spanId The span id that represents the activity\n */\n _popActivity(spanId) {\n if (this.activities[spanId]) {\n DEBUG_BUILD && logger.log(`[Tracing] popActivity ${spanId}`);\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete this.activities[spanId];\n DEBUG_BUILD && logger.log('[Tracing] new activities count', Object.keys(this.activities).length);\n }\n\n if (Object.keys(this.activities).length === 0) {\n const endTimestamp = timestampInSeconds();\n if (this._idleTimeoutCanceledPermanently) {\n if (this._autoFinishAllowed) {\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[5];\n this.end(endTimestamp);\n }\n } else {\n // We need to add the timeout here to have the real endtimestamp of the transaction\n // Remember timestampInSeconds is in seconds, timeout is in ms\n this._restartIdleTimeout(endTimestamp + this._idleTimeout / 1000);\n }\n }\n }\n\n /**\n * Checks when entries of this.activities are not changing for 3 beats.\n * If this occurs we finish the transaction.\n */\n _beat() {\n // We should not be running heartbeat if the idle transaction is finished.\n if (this._finished) {\n return;\n }\n\n const heartbeatString = Object.keys(this.activities).join('');\n\n if (heartbeatString === this._prevHeartbeatString) {\n this._heartbeatCounter++;\n } else {\n this._heartbeatCounter = 1;\n }\n\n this._prevHeartbeatString = heartbeatString;\n\n if (this._heartbeatCounter >= 3) {\n if (this._autoFinishAllowed) {\n DEBUG_BUILD && logger.log('[Tracing] Transaction finished because of no change for 3 heart beats');\n this.setStatus('deadline_exceeded');\n this._finishReason = IDLE_TRANSACTION_FINISH_REASONS[0];\n this.end();\n }\n } else {\n this._pingHeartbeat();\n }\n }\n\n /**\n * Pings the heartbeat\n */\n _pingHeartbeat() {\n DEBUG_BUILD && logger.log(`pinging Heartbeat -> current counter: ${this._heartbeatCounter}`);\n setTimeout(() => {\n this._beat();\n }, this._heartbeatInterval);\n }\n}\n\nexport { IdleTransaction, IdleTransactionSpanRecorder, TRACING_DEFAULTS };\n//# sourceMappingURL=idletransaction.js.map\n","import { isNaN, logger } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE } from '../semanticAttributes.js';\nimport { hasTracingEnabled } from '../utils/hasTracingEnabled.js';\nimport { spanToJSON } from '../utils/spanUtils.js';\n\n/**\n * Makes a sampling decision for the given transaction and stores it on the transaction.\n *\n * Called every time a transaction is created. Only transactions which emerge with a `sampled` value of `true` will be\n * sent to Sentry.\n *\n * This method muttes the given `transaction` and will set the `sampled` value on it.\n * It returns the same transaction, for convenience.\n */\nfunction sampleTransaction(\n transaction,\n options,\n samplingContext,\n) {\n // nothing to do if tracing is not enabled\n if (!hasTracingEnabled(options)) {\n // eslint-disable-next-line deprecation/deprecation\n transaction.sampled = false;\n return transaction;\n }\n\n // if the user has forced a sampling decision by passing a `sampled` value in their transaction context, go with that\n // eslint-disable-next-line deprecation/deprecation\n if (transaction.sampled !== undefined) {\n // eslint-disable-next-line deprecation/deprecation\n transaction.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, Number(transaction.sampled));\n return transaction;\n }\n\n // we would have bailed already if neither `tracesSampler` nor `tracesSampleRate` nor `enableTracing` were defined, so one of these should\n // work; prefer the hook if so\n let sampleRate;\n if (typeof options.tracesSampler === 'function') {\n sampleRate = options.tracesSampler(samplingContext);\n transaction.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, Number(sampleRate));\n } else if (samplingContext.parentSampled !== undefined) {\n sampleRate = samplingContext.parentSampled;\n } else if (typeof options.tracesSampleRate !== 'undefined') {\n sampleRate = options.tracesSampleRate;\n transaction.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, Number(sampleRate));\n } else {\n // When `enableTracing === true`, we use a sample rate of 100%\n sampleRate = 1;\n transaction.setAttribute(SEMANTIC_ATTRIBUTE_SENTRY_SAMPLE_RATE, sampleRate);\n }\n\n // Since this is coming from the user (or from a function provided by the user), who knows what we might get. (The\n // only valid values are booleans or numbers between 0 and 1.)\n if (!isValidSampleRate(sampleRate)) {\n DEBUG_BUILD && logger.warn('[Tracing] Discarding transaction because of invalid sample rate.');\n // eslint-disable-next-line deprecation/deprecation\n transaction.sampled = false;\n return transaction;\n }\n\n // if the function returned 0 (or false), or if `tracesSampleRate` is 0, it's a sign the transaction should be dropped\n if (!sampleRate) {\n DEBUG_BUILD &&\n logger.log(\n `[Tracing] Discarding transaction because ${\n typeof options.tracesSampler === 'function'\n ? 'tracesSampler returned 0 or false'\n : 'a negative sampling decision was inherited or tracesSampleRate is set to 0'\n }`,\n );\n // eslint-disable-next-line deprecation/deprecation\n transaction.sampled = false;\n return transaction;\n }\n\n // Now we roll the dice. Math.random is inclusive of 0, but not of 1, so strict < is safe here. In case sampleRate is\n // a boolean, the < comparison will cause it to be automatically cast to 1 if it's true and 0 if it's false.\n // eslint-disable-next-line deprecation/deprecation\n transaction.sampled = Math.random() < (sampleRate );\n\n // if we're not going to keep it, we're done\n // eslint-disable-next-line deprecation/deprecation\n if (!transaction.sampled) {\n DEBUG_BUILD &&\n logger.log(\n `[Tracing] Discarding transaction because it's not included in the random sample (sampling rate = ${Number(\n sampleRate,\n )})`,\n );\n return transaction;\n }\n\n DEBUG_BUILD &&\n // eslint-disable-next-line deprecation/deprecation\n logger.log(`[Tracing] starting ${transaction.op} transaction - ${spanToJSON(transaction).description}`);\n return transaction;\n}\n\n/**\n * Checks the given sample rate to make sure it is valid type and value (a boolean, or a number between 0 and 1).\n */\nfunction isValidSampleRate(rate) {\n // we need to check NaN explicitly because it's of type 'number' and therefore wouldn't get caught by this typecheck\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (isNaN(rate) || !(typeof rate === 'number' || typeof rate === 'boolean')) {\n DEBUG_BUILD &&\n logger.warn(\n `[Tracing] Given sample rate is invalid. Sample rate must be a boolean or a number between 0 and 1. Got ${JSON.stringify(\n rate,\n )} of type ${JSON.stringify(typeof rate)}.`,\n );\n return false;\n }\n\n // in case sampleRate is a boolean, it will get automatically cast to 1 if it's true and 0 if it's false\n if (rate < 0 || rate > 1) {\n DEBUG_BUILD &&\n logger.warn(`[Tracing] Given sample rate is invalid. Sample rate must be between 0 and 1. Got ${rate}.`);\n return false;\n }\n return true;\n}\n\nexport { isValidSampleRate, sampleTransaction };\n//# sourceMappingURL=sampling.js.map\n","import { logger } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { getMainCarrier } from '../hub.js';\nimport { spanToTraceHeader } from '../utils/spanUtils.js';\nimport { registerErrorInstrumentation } from './errors.js';\nimport { IdleTransaction } from './idletransaction.js';\nimport { sampleTransaction } from './sampling.js';\nimport { Transaction } from './transaction.js';\n\n/** Returns all trace headers that are currently on the top scope. */\n// eslint-disable-next-line deprecation/deprecation\nfunction traceHeaders() {\n // eslint-disable-next-line deprecation/deprecation\n const scope = this.getScope();\n // eslint-disable-next-line deprecation/deprecation\n const span = scope.getSpan();\n\n return span\n ? {\n 'sentry-trace': spanToTraceHeader(span),\n }\n : {};\n}\n\n/**\n * Creates a new transaction and adds a sampling decision if it doesn't yet have one.\n *\n * The Hub.startTransaction method delegates to this method to do its work, passing the Hub instance in as `this`, as if\n * it had been called on the hub directly. Exists as a separate function so that it can be injected into the class as an\n * \"extension method.\"\n *\n * @param this: The Hub starting the transaction\n * @param transactionContext: Data used to configure the transaction\n * @param CustomSamplingContext: Optional data to be provided to the `tracesSampler` function (if any)\n *\n * @returns The new transaction\n *\n * @see {@link Hub.startTransaction}\n */\nfunction _startTransaction(\n // eslint-disable-next-line deprecation/deprecation\n\n transactionContext,\n customSamplingContext,\n) {\n // eslint-disable-next-line deprecation/deprecation\n const client = this.getClient();\n const options = (client && client.getOptions()) || {};\n\n const configInstrumenter = options.instrumenter || 'sentry';\n const transactionInstrumenter = transactionContext.instrumenter || 'sentry';\n\n if (configInstrumenter !== transactionInstrumenter) {\n DEBUG_BUILD &&\n logger.error(\n `A transaction was started with instrumenter=\\`${transactionInstrumenter}\\`, but the SDK is configured with the \\`${configInstrumenter}\\` instrumenter.\nThe transaction will not be sampled. Please use the ${configInstrumenter} instrumentation to start transactions.`,\n );\n\n // eslint-disable-next-line deprecation/deprecation\n transactionContext.sampled = false;\n }\n\n // eslint-disable-next-line deprecation/deprecation\n let transaction = new Transaction(transactionContext, this);\n transaction = sampleTransaction(transaction, options, {\n name: transactionContext.name,\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n attributes: {\n // eslint-disable-next-line deprecation/deprecation\n ...transactionContext.data,\n ...transactionContext.attributes,\n },\n ...customSamplingContext,\n });\n if (transaction.isRecording()) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans ));\n }\n if (client && client.emit) {\n client.emit('startTransaction', transaction);\n }\n return transaction;\n}\n\n/**\n * Create new idle transaction.\n */\nfunction startIdleTransaction(\n // eslint-disable-next-line deprecation/deprecation\n hub,\n transactionContext,\n idleTimeout,\n finalTimeout,\n onScope,\n customSamplingContext,\n heartbeatInterval,\n delayAutoFinishUntilSignal = false,\n) {\n // eslint-disable-next-line deprecation/deprecation\n const client = hub.getClient();\n const options = (client && client.getOptions()) || {};\n\n // eslint-disable-next-line deprecation/deprecation\n let transaction = new IdleTransaction(\n transactionContext,\n hub,\n idleTimeout,\n finalTimeout,\n heartbeatInterval,\n onScope,\n delayAutoFinishUntilSignal,\n );\n transaction = sampleTransaction(transaction, options, {\n name: transactionContext.name,\n parentSampled: transactionContext.parentSampled,\n transactionContext,\n attributes: {\n // eslint-disable-next-line deprecation/deprecation\n ...transactionContext.data,\n ...transactionContext.attributes,\n },\n ...customSamplingContext,\n });\n if (transaction.isRecording()) {\n transaction.initSpanRecorder(options._experiments && (options._experiments.maxSpans ));\n }\n if (client && client.emit) {\n client.emit('startTransaction', transaction);\n }\n return transaction;\n}\n\n/**\n * Adds tracing extensions to the global hub.\n */\nfunction addTracingExtensions() {\n const carrier = getMainCarrier();\n if (!carrier.__SENTRY__) {\n return;\n }\n carrier.__SENTRY__.extensions = carrier.__SENTRY__.extensions || {};\n if (!carrier.__SENTRY__.extensions.startTransaction) {\n carrier.__SENTRY__.extensions.startTransaction = _startTransaction;\n }\n if (!carrier.__SENTRY__.extensions.traceHeaders) {\n carrier.__SENTRY__.extensions.traceHeaders = traceHeaders;\n }\n\n registerErrorInstrumentation();\n}\n\nexport { addTracingExtensions, startIdleTransaction };\n//# sourceMappingURL=hubextensions.js.map\n","import { createEnvelope, dsnFromString, forEachEnvelopeItem } from '@sentry/utils';\nimport { getEnvelopeEndpointWithUrlEncodedAuth } from '../api.js';\n\n/**\n * Gets an event from an envelope.\n *\n * This is only exported for use in the tests\n */\nfunction eventFromEnvelope(env, types) {\n let event;\n\n forEachEnvelopeItem(env, (item, type) => {\n if (types.includes(type)) {\n event = Array.isArray(item) ? (item )[1] : undefined;\n }\n // bail out if we found an event\n return !!event;\n });\n\n return event;\n}\n\n/**\n * Creates a transport that overrides the release on all events.\n */\nfunction makeOverrideReleaseTransport(\n createTransport,\n release,\n) {\n return options => {\n const transport = createTransport(options);\n\n return {\n ...transport,\n send: async (envelope) => {\n const event = eventFromEnvelope(envelope, ['event', 'transaction', 'profile', 'replay_event']);\n\n if (event) {\n event.release = release;\n }\n return transport.send(envelope);\n },\n };\n };\n}\n\n/** Overrides the DSN in the envelope header */\nfunction overrideDsn(envelope, dsn) {\n return createEnvelope(\n dsn\n ? {\n ...envelope[0],\n dsn,\n }\n : envelope[0],\n envelope[1],\n );\n}\n\n/**\n * Creates a transport that can send events to different DSNs depending on the envelope contents.\n */\nfunction makeMultiplexedTransport(\n createTransport,\n matcher,\n) {\n return options => {\n const fallbackTransport = createTransport(options);\n const otherTransports = new Map();\n\n function getTransport(dsn, release) {\n // We create a transport for every unique dsn/release combination as there may be code from multiple releases in\n // use at the same time\n const key = release ? `${dsn}:${release}` : dsn;\n\n let transport = otherTransports.get(key);\n\n if (!transport) {\n const validatedDsn = dsnFromString(dsn);\n if (!validatedDsn) {\n return undefined;\n }\n\n const url = getEnvelopeEndpointWithUrlEncodedAuth(validatedDsn, options.tunnel);\n\n transport = release\n ? makeOverrideReleaseTransport(createTransport, release)({ ...options, url })\n : createTransport({ ...options, url });\n\n otherTransports.set(key, transport);\n }\n\n return [dsn, transport];\n }\n\n async function send(envelope) {\n function getEvent(types) {\n const eventTypes = types && types.length ? types : ['event'];\n return eventFromEnvelope(envelope, eventTypes);\n }\n\n const transports = matcher({ envelope, getEvent })\n .map(result => {\n if (typeof result === 'string') {\n return getTransport(result, undefined);\n } else {\n return getTransport(result.dsn, result.release);\n }\n })\n .filter((t) => !!t);\n\n // If we have no transports to send to, use the fallback transport\n if (transports.length === 0) {\n // Don't override the DSN in the header for the fallback transport. '' is falsy\n transports.push(['', fallbackTransport]);\n }\n\n const results = await Promise.all(\n transports.map(([dsn, transport]) => transport.send(overrideDsn(envelope, dsn))),\n );\n\n return results[0];\n }\n\n async function flush(timeout) {\n const promises = [await fallbackTransport.flush(timeout)];\n for (const [, transport] of otherTransports) {\n promises.push(await transport.flush(timeout));\n }\n\n return promises.every(r => r);\n }\n\n return {\n send,\n flush,\n };\n };\n}\n\nexport { eventFromEnvelope, makeMultiplexedTransport };\n//# sourceMappingURL=multiplexed.js.map\n","import { COUNTER_METRIC_TYPE, GAUGE_METRIC_TYPE, DISTRIBUTION_METRIC_TYPE, SET_METRIC_TYPE } from './constants.js';\nimport { simpleHash } from './utils.js';\n\n/**\n * A metric instance representing a counter.\n */\nclass CounterMetric {\n constructor( _value) {this._value = _value;}\n\n /** @inheritDoc */\n get weight() {\n return 1;\n }\n\n /** @inheritdoc */\n add(value) {\n this._value += value;\n }\n\n /** @inheritdoc */\n toString() {\n return `${this._value}`;\n }\n}\n\n/**\n * A metric instance representing a gauge.\n */\nclass GaugeMetric {\n\n constructor(value) {\n this._last = value;\n this._min = value;\n this._max = value;\n this._sum = value;\n this._count = 1;\n }\n\n /** @inheritDoc */\n get weight() {\n return 5;\n }\n\n /** @inheritdoc */\n add(value) {\n this._last = value;\n if (value < this._min) {\n this._min = value;\n }\n if (value > this._max) {\n this._max = value;\n }\n this._sum += value;\n this._count++;\n }\n\n /** @inheritdoc */\n toString() {\n return `${this._last}:${this._min}:${this._max}:${this._sum}:${this._count}`;\n }\n}\n\n/**\n * A metric instance representing a distribution.\n */\nclass DistributionMetric {\n\n constructor(first) {\n this._value = [first];\n }\n\n /** @inheritDoc */\n get weight() {\n return this._value.length;\n }\n\n /** @inheritdoc */\n add(value) {\n this._value.push(value);\n }\n\n /** @inheritdoc */\n toString() {\n return this._value.join(':');\n }\n}\n\n/**\n * A metric instance representing a set.\n */\nclass SetMetric {\n\n constructor( first) {this.first = first;\n this._value = new Set([first]);\n }\n\n /** @inheritDoc */\n get weight() {\n return this._value.size;\n }\n\n /** @inheritdoc */\n add(value) {\n this._value.add(value);\n }\n\n /** @inheritdoc */\n toString() {\n return Array.from(this._value)\n .map(val => (typeof val === 'string' ? simpleHash(val) : val))\n .join(':');\n }\n}\n\nconst METRIC_MAP = {\n [COUNTER_METRIC_TYPE]: CounterMetric,\n [GAUGE_METRIC_TYPE]: GaugeMetric,\n [DISTRIBUTION_METRIC_TYPE]: DistributionMetric,\n [SET_METRIC_TYPE]: SetMetric,\n};\n\nexport { CounterMetric, DistributionMetric, GaugeMetric, METRIC_MAP, SetMetric };\n//# sourceMappingURL=instance.js.map\n","import { timestampInSeconds } from '@sentry/utils';\nimport { DEFAULT_BROWSER_FLUSH_INTERVAL, SET_METRIC_TYPE } from './constants.js';\nimport { METRIC_MAP } from './instance.js';\nimport { updateMetricSummaryOnActiveSpan } from './metric-summary.js';\nimport { sanitizeMetricKey, sanitizeTags, sanitizeUnit, getBucketKey } from './utils.js';\n\n/**\n * A simple metrics aggregator that aggregates metrics in memory and flushes them periodically.\n * Default flush interval is 5 seconds.\n *\n * @experimental This API is experimental and might change in the future.\n */\nclass BrowserMetricsAggregator {\n // TODO(@anonrig): Use FinalizationRegistry to have a proper way of flushing the buckets\n // when the aggregator is garbage collected.\n // Ref: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry\n\n constructor( _client) {this._client = _client;\n this._buckets = new Map();\n this._interval = setInterval(() => this.flush(), DEFAULT_BROWSER_FLUSH_INTERVAL);\n }\n\n /**\n * @inheritDoc\n */\n add(\n metricType,\n unsanitizedName,\n value,\n unsanitizedUnit = 'none',\n unsanitizedTags = {},\n maybeFloatTimestamp = timestampInSeconds(),\n ) {\n const timestamp = Math.floor(maybeFloatTimestamp);\n const name = sanitizeMetricKey(unsanitizedName);\n const tags = sanitizeTags(unsanitizedTags);\n const unit = sanitizeUnit(unsanitizedUnit );\n\n const bucketKey = getBucketKey(metricType, name, unit, tags);\n\n let bucketItem = this._buckets.get(bucketKey);\n // If this is a set metric, we need to calculate the delta from the previous weight.\n const previousWeight = bucketItem && metricType === SET_METRIC_TYPE ? bucketItem.metric.weight : 0;\n\n if (bucketItem) {\n bucketItem.metric.add(value);\n // TODO(abhi): Do we need this check?\n if (bucketItem.timestamp < timestamp) {\n bucketItem.timestamp = timestamp;\n }\n } else {\n bucketItem = {\n // @ts-expect-error we don't need to narrow down the type of value here, saves bundle size.\n metric: new METRIC_MAP[metricType](value),\n timestamp,\n metricType,\n name,\n unit,\n tags,\n };\n this._buckets.set(bucketKey, bucketItem);\n }\n\n // If value is a string, it's a set metric so calculate the delta from the previous weight.\n const val = typeof value === 'string' ? bucketItem.metric.weight - previousWeight : value;\n updateMetricSummaryOnActiveSpan(metricType, name, val, unit, unsanitizedTags, bucketKey);\n }\n\n /**\n * @inheritDoc\n */\n flush() {\n // short circuit if buckets are empty.\n if (this._buckets.size === 0) {\n return;\n }\n\n if (this._client.captureAggregateMetrics) {\n // TODO(@anonrig): Use Object.values() when we support ES6+\n const metricBuckets = Array.from(this._buckets).map(([, bucketItem]) => bucketItem);\n this._client.captureAggregateMetrics(metricBuckets);\n }\n\n this._buckets.clear();\n }\n\n /**\n * @inheritDoc\n */\n close() {\n clearInterval(this._interval);\n this.flush();\n }\n}\n\nexport { BrowserMetricsAggregator };\n//# sourceMappingURL=browser-aggregator.js.map\n","const COUNTER_METRIC_TYPE = 'c' ;\nconst GAUGE_METRIC_TYPE = 'g' ;\nconst SET_METRIC_TYPE = 's' ;\nconst DISTRIBUTION_METRIC_TYPE = 'd' ;\n\n/**\n * This does not match spec in https://develop.sentry.dev/sdk/metrics\n * but was chosen to optimize for the most common case in browser environments.\n */\nconst DEFAULT_BROWSER_FLUSH_INTERVAL = 5000;\n\n/**\n * SDKs are required to bucket into 10 second intervals (rollup in seconds)\n * which is the current lower bound of metric accuracy.\n */\nconst DEFAULT_FLUSH_INTERVAL = 10000;\n\n/**\n * The maximum number of metrics that should be stored in memory.\n */\nconst MAX_WEIGHT = 10000;\n\nexport { COUNTER_METRIC_TYPE, DEFAULT_BROWSER_FLUSH_INTERVAL, DEFAULT_FLUSH_INTERVAL, DISTRIBUTION_METRIC_TYPE, GAUGE_METRIC_TYPE, MAX_WEIGHT, SET_METRIC_TYPE };\n//# sourceMappingURL=constants.js.map\n","import { convertIntegrationFnToClass, defineIntegration } from '../integration.js';\nimport { BrowserMetricsAggregator } from './browser-aggregator.js';\n\nconst INTEGRATION_NAME = 'MetricsAggregator';\n\nconst _metricsAggregatorIntegration = (() => {\n return {\n name: INTEGRATION_NAME,\n // TODO v8: Remove this\n setupOnce() {}, // eslint-disable-line @typescript-eslint/no-empty-function\n setup(client) {\n client.metricsAggregator = new BrowserMetricsAggregator(client);\n },\n };\n}) ;\n\nconst metricsAggregatorIntegration = defineIntegration(_metricsAggregatorIntegration);\n\n/**\n * Enables Sentry metrics monitoring.\n *\n * @experimental This API is experimental and might having breaking changes in the future.\n * @deprecated Use `metricsAggegratorIntegration()` instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nconst MetricsAggregator = convertIntegrationFnToClass(\n INTEGRATION_NAME,\n metricsAggregatorIntegration,\n) ;\n\nexport { MetricsAggregator, metricsAggregatorIntegration };\n//# sourceMappingURL=integration.js.map\n","import { logger } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { getClient, getCurrentScope } from '../exports.js';\nimport { spanToJSON } from '../utils/spanUtils.js';\nimport { COUNTER_METRIC_TYPE, DISTRIBUTION_METRIC_TYPE, SET_METRIC_TYPE, GAUGE_METRIC_TYPE } from './constants.js';\nimport { MetricsAggregator, metricsAggregatorIntegration } from './integration.js';\n\nfunction addToMetricsAggregator(\n metricType,\n name,\n value,\n data = {},\n) {\n const client = getClient();\n const scope = getCurrentScope();\n if (client) {\n if (!client.metricsAggregator) {\n DEBUG_BUILD &&\n logger.warn('No metrics aggregator enabled. Please add the MetricsAggregator integration to use metrics APIs');\n return;\n }\n const { unit, tags, timestamp } = data;\n const { release, environment } = client.getOptions();\n // eslint-disable-next-line deprecation/deprecation\n const transaction = scope.getTransaction();\n const metricTags = {};\n if (release) {\n metricTags.release = release;\n }\n if (environment) {\n metricTags.environment = environment;\n }\n if (transaction) {\n metricTags.transaction = spanToJSON(transaction).description || '';\n }\n\n DEBUG_BUILD && logger.log(`Adding value of ${value} to ${metricType} metric ${name}`);\n client.metricsAggregator.add(metricType, name, value, unit, { ...metricTags, ...tags }, timestamp);\n }\n}\n\n/**\n * Adds a value to a counter metric\n *\n * @experimental This API is experimental and might have breaking changes in the future.\n */\nfunction increment(name, value = 1, data) {\n addToMetricsAggregator(COUNTER_METRIC_TYPE, name, value, data);\n}\n\n/**\n * Adds a value to a distribution metric\n *\n * @experimental This API is experimental and might have breaking changes in the future.\n */\nfunction distribution(name, value, data) {\n addToMetricsAggregator(DISTRIBUTION_METRIC_TYPE, name, value, data);\n}\n\n/**\n * Adds a value to a set metric. Value must be a string or integer.\n *\n * @experimental This API is experimental and might have breaking changes in the future.\n */\nfunction set(name, value, data) {\n addToMetricsAggregator(SET_METRIC_TYPE, name, value, data);\n}\n\n/**\n * Adds a value to a gauge metric\n *\n * @experimental This API is experimental and might have breaking changes in the future.\n */\nfunction gauge(name, value, data) {\n addToMetricsAggregator(GAUGE_METRIC_TYPE, name, value, data);\n}\n\nconst metrics = {\n increment,\n distribution,\n set,\n gauge,\n /** @deprecated Use `metrics.metricsAggregratorIntegration()` instead. */\n // eslint-disable-next-line deprecation/deprecation\n MetricsAggregator,\n metricsAggregatorIntegration,\n};\n\nexport { distribution, gauge, increment, metrics, set };\n//# sourceMappingURL=exports.js.map\n","/**\n * Tagged template function which returns paramaterized representation of the message\n * For example: parameterize`This is a log statement with ${x} and ${y} params`, would return:\n * \"__sentry_template_string__\": 'This is a log statement with %s and %s params',\n * \"__sentry_template_values__\": ['first', 'second']\n * @param strings An array of string values splitted between expressions\n * @param values Expressions extracted from template string\n * @returns String with template information in __sentry_template_string__ and __sentry_template_values__ properties\n */\nfunction parameterize(strings, ...values) {\n const formatted = new String(String.raw(strings, ...values)) ;\n formatted.__sentry_template_string__ = strings.join('\\x00').replace(/%/g, '%%').replace(/\\0/g, '%s');\n formatted.__sentry_template_values__ = values;\n return formatted;\n}\n\nexport { parameterize };\n//# sourceMappingURL=parameterize.js.map\n","import { getActiveTransaction } from './utils.js';\n\n/**\n * Adds a measurement to the current active transaction.\n */\nfunction setMeasurement(name, value, unit) {\n // eslint-disable-next-line deprecation/deprecation\n const transaction = getActiveTransaction();\n if (transaction) {\n // eslint-disable-next-line deprecation/deprecation\n transaction.setMeasurement(name, value, unit);\n }\n}\n\nexport { setMeasurement };\n//# sourceMappingURL=measurement.js.map\n","/**\n * Polyfill for the optional chain operator, `?.`, given previous conversion of the expression into an array of values,\n * descriptors, and functions.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n * See https://github.com/alangpierce/sucrase/blob/265887868966917f3b924ce38dfad01fbab1329f/src/transformers/OptionalChainingNullishTransformer.ts#L15\n *\n * @param ops Array result of expression conversion\n * @returns The value of the expression\n */\nfunction _optionalChain(ops) {\n let lastAccessLHS = undefined;\n let value = ops[0];\n let i = 1;\n while (i < ops.length) {\n const op = ops[i] ;\n const fn = ops[i + 1] ;\n i += 2;\n // by checking for loose equality to `null`, we catch both `null` and `undefined`\n if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n // really we're meaning to return `undefined` as an actual value here, but it saves bytes not to write it\n return;\n }\n if (op === 'access' || op === 'optionalAccess') {\n lastAccessLHS = value;\n value = fn(value);\n } else if (op === 'call' || op === 'optionalCall') {\n value = fn((...args) => (value ).call(lastAccessLHS, ...args));\n lastAccessLHS = undefined;\n }\n }\n return value;\n}\n\n// Sucrase version\n// function _optionalChain(ops) {\n// let lastAccessLHS = undefined;\n// let value = ops[0];\n// let i = 1;\n// while (i < ops.length) {\n// const op = ops[i];\n// const fn = ops[i + 1];\n// i += 2;\n// if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) {\n// return undefined;\n// }\n// if (op === 'access' || op === 'optionalAccess') {\n// lastAccessLHS = value;\n// value = fn(value);\n// } else if (op === 'call' || op === 'optionalCall') {\n// value = fn((...args) => value.call(lastAccessLHS, ...args));\n// lastAccessLHS = undefined;\n// }\n// }\n// return value;\n// }\n\nexport { _optionalChain };\n//# sourceMappingURL=_optionalChain.js.map\n","/**\n * Checks whether given url points to Sentry server\n * @param url url to verify\n *\n * TODO(v8): Remove Hub fallback type\n */\n// eslint-disable-next-line deprecation/deprecation\nfunction isSentryRequestUrl(url, hubOrClient) {\n const client =\n hubOrClient && isHub(hubOrClient)\n ? // eslint-disable-next-line deprecation/deprecation\n hubOrClient.getClient()\n : hubOrClient;\n const dsn = client && client.getDsn();\n const tunnel = client && client.getOptions().tunnel;\n\n return checkDsn(url, dsn) || checkTunnel(url, tunnel);\n}\n\nfunction checkTunnel(url, tunnel) {\n if (!tunnel) {\n return false;\n }\n\n return removeTrailingSlash(url) === removeTrailingSlash(tunnel);\n}\n\nfunction checkDsn(url, dsn) {\n return dsn ? url.includes(dsn.host) : false;\n}\n\nfunction removeTrailingSlash(str) {\n return str[str.length - 1] === '/' ? str.slice(0, -1) : str;\n}\n\n// eslint-disable-next-line deprecation/deprecation\nfunction isHub(hubOrClient) {\n // eslint-disable-next-line deprecation/deprecation\n return (hubOrClient ).getClient !== undefined;\n}\n\nexport { isSentryRequestUrl };\n//# sourceMappingURL=isSentryRequestUrl.js.map\n","import { isNodeEnv } from './node.js';\nimport { GLOBAL_OBJ } from './worldwide.js';\n\n/**\n * Returns true if we are in the browser.\n */\nfunction isBrowser() {\n // eslint-disable-next-line no-restricted-globals\n return typeof window !== 'undefined' && (!isNodeEnv() || isElectronNodeRenderer());\n}\n\n// Electron renderers with nodeIntegration enabled are detected as Node.js so we specifically test for them\nfunction isElectronNodeRenderer() {\n return (\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-explicit-any\n (GLOBAL_OBJ ).process !== undefined && ((GLOBAL_OBJ ).process ).type === 'renderer'\n );\n}\n\nexport { isBrowser };\n//# sourceMappingURL=isBrowser.js.map\n","/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nexport { DEBUG_BUILD };\n//# sourceMappingURL=debug-build.js.map\n","const bindReporter = (\n callback,\n metric,\n reportAllChanges,\n) => {\n let prevValue;\n let delta;\n return (forceReport) => {\n if (metric.value >= 0) {\n if (forceReport || reportAllChanges) {\n delta = metric.value - (prevValue || 0);\n\n // Report the metric if there's a non-zero delta or if no previous\n // value exists (which can happen in the case of the document becoming\n // hidden when the metric value is 0).\n // See: https://github.com/GoogleChrome/web-vitals/issues/14\n if (delta || prevValue === undefined) {\n prevValue = metric.value;\n metric.delta = delta;\n callback(metric);\n }\n }\n }\n };\n};\n\nexport { bindReporter };\n//# sourceMappingURL=bindReporter.js.map\n","import { GLOBAL_OBJ } from '@sentry/utils';\n\nconst WINDOW = GLOBAL_OBJ\n\n;\n\nexport { WINDOW };\n//# sourceMappingURL=types.js.map\n","import { WINDOW } from '../../types.js';\n\n/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst getNavigationEntryFromPerformanceTiming = () => {\n // eslint-disable-next-line deprecation/deprecation\n const timing = WINDOW.performance.timing;\n // eslint-disable-next-line deprecation/deprecation\n const type = WINDOW.performance.navigation.type;\n\n const navigationEntry = {\n entryType: 'navigation',\n startTime: 0,\n type: type == 2 ? 'back_forward' : type === 1 ? 'reload' : 'navigate',\n };\n\n for (const key in timing) {\n if (key !== 'navigationStart' && key !== 'toJSON') {\n // eslint-disable-next-line deprecation/deprecation\n navigationEntry[key] = Math.max((timing[key ] ) - timing.navigationStart, 0);\n }\n }\n return navigationEntry ;\n};\n\nconst getNavigationEntry = () => {\n if (WINDOW.__WEB_VITALS_POLYFILL__) {\n return (\n WINDOW.performance &&\n ((performance.getEntriesByType && performance.getEntriesByType('navigation')[0]) ||\n getNavigationEntryFromPerformanceTiming())\n );\n } else {\n return WINDOW.performance && performance.getEntriesByType && performance.getEntriesByType('navigation')[0];\n }\n};\n\nexport { getNavigationEntry };\n//# sourceMappingURL=getNavigationEntry.js.map\n","import { getNavigationEntry } from './getNavigationEntry.js';\n\n/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst getActivationStart = () => {\n const navEntry = getNavigationEntry();\n return (navEntry && navEntry.activationStart) || 0;\n};\n\nexport { getActivationStart };\n//# sourceMappingURL=getActivationStart.js.map\n","import { WINDOW } from '../../types.js';\nimport { generateUniqueID } from './generateUniqueID.js';\nimport { getActivationStart } from './getActivationStart.js';\nimport { getNavigationEntry } from './getNavigationEntry.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst initMetric = (name, value) => {\n const navEntry = getNavigationEntry();\n let navigationType = 'navigate';\n\n if (navEntry) {\n if ((WINDOW.document && WINDOW.document.prerendering) || getActivationStart() > 0) {\n navigationType = 'prerender';\n } else {\n navigationType = navEntry.type.replace(/_/g, '-') ;\n }\n }\n\n return {\n name,\n value: typeof value === 'undefined' ? -1 : value,\n rating: 'good', // Will be updated if the value changes.\n delta: 0,\n entries: [],\n id: generateUniqueID(),\n navigationType,\n };\n};\n\nexport { initMetric };\n//# sourceMappingURL=initMetric.js.map\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Performantly generate a unique, 30-char string by combining a version\n * number, the current timestamp with a 13-digit number integer.\n * @return {string}\n */\nconst generateUniqueID = () => {\n return `v3-${Date.now()}-${Math.floor(Math.random() * (9e12 - 1)) + 1e12}`;\n};\n\nexport { generateUniqueID };\n//# sourceMappingURL=generateUniqueID.js.map\n","/**\n * Takes a performance entry type and a callback function, and creates a\n * `PerformanceObserver` instance that will observe the specified entry type\n * with buffering enabled and call the callback _for each entry_.\n *\n * This function also feature-detects entry support and wraps the logic in a\n * try/catch to avoid errors in unsupporting browsers.\n */\nconst observe = (\n type,\n callback,\n opts,\n) => {\n try {\n if (PerformanceObserver.supportedEntryTypes.includes(type)) {\n const po = new PerformanceObserver(list => {\n callback(list.getEntries() );\n });\n po.observe(\n Object.assign(\n {\n type,\n buffered: true,\n },\n opts || {},\n ) ,\n );\n return po;\n }\n } catch (e) {\n // Do nothing.\n }\n return;\n};\n\nexport { observe };\n//# sourceMappingURL=observe.js.map\n","import { WINDOW } from '../../types.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst onHidden = (cb, once) => {\n const onHiddenOrPageHide = (event) => {\n if (event.type === 'pagehide' || WINDOW.document.visibilityState === 'hidden') {\n cb(event);\n if (once) {\n removeEventListener('visibilitychange', onHiddenOrPageHide, true);\n removeEventListener('pagehide', onHiddenOrPageHide, true);\n }\n }\n };\n\n if (WINDOW.document) {\n addEventListener('visibilitychange', onHiddenOrPageHide, true);\n // Some browsers have buggy implementations of visibilitychange,\n // so we use pagehide in addition, just to be safe.\n addEventListener('pagehide', onHiddenOrPageHide, true);\n }\n};\n\nexport { onHidden };\n//# sourceMappingURL=onHidden.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Calculates the [CLS](https://web.dev/cls/) value for the current page and\n * calls the `callback` function once the value is ready to be reported, along\n * with all `layout-shift` performance entries that were used in the metric\n * value calculation. The reported value is a `double` (corresponding to a\n * [layout shift score](https://web.dev/cls/#layout-shift-score)).\n *\n * If the `reportAllChanges` configuration option is set to `true`, the\n * `callback` function will be called as soon as the value is initially\n * determined as well as any time the value changes throughout the page\n * lifespan.\n *\n * _**Important:** CLS should be continually monitored for changes throughout\n * the entire lifespan of a page—including if the user returns to the page after\n * it's been hidden/backgrounded. However, since browsers often [will not fire\n * additional callbacks once the user has backgrounded a\n * page](https://developer.chrome.com/blog/page-lifecycle-api/#advice-hidden),\n * `callback` is always called when the page's visibility state changes to\n * hidden. As a result, the `callback` function might be called multiple times\n * during the same page load._\n */\nconst onCLS = (\n onReport,\n options = {},\n) => {\n const metric = initMetric('CLS', 0);\n let report;\n\n let sessionValue = 0;\n let sessionEntries = [];\n\n // const handleEntries = (entries: Metric['entries']) => {\n const handleEntries = (entries) => {\n entries.forEach(entry => {\n // Only count layout shifts without recent user input.\n if (!entry.hadRecentInput) {\n const firstSessionEntry = sessionEntries[0];\n const lastSessionEntry = sessionEntries[sessionEntries.length - 1];\n\n // If the entry occurred less than 1 second after the previous entry and\n // less than 5 seconds after the first entry in the session, include the\n // entry in the current session. Otherwise, start a new session.\n if (\n sessionValue &&\n sessionEntries.length !== 0 &&\n entry.startTime - lastSessionEntry.startTime < 1000 &&\n entry.startTime - firstSessionEntry.startTime < 5000\n ) {\n sessionValue += entry.value;\n sessionEntries.push(entry);\n } else {\n sessionValue = entry.value;\n sessionEntries = [entry];\n }\n\n // If the current session value is larger than the current CLS value,\n // update CLS and the entries contributing to it.\n if (sessionValue > metric.value) {\n metric.value = sessionValue;\n metric.entries = sessionEntries;\n if (report) {\n report();\n }\n }\n }\n });\n };\n\n const po = observe('layout-shift', handleEntries);\n if (po) {\n report = bindReporter(onReport, metric, options.reportAllChanges);\n\n const stopListening = () => {\n handleEntries(po.takeRecords() );\n report(true);\n };\n\n onHidden(stopListening);\n\n return stopListening;\n }\n\n return;\n};\n\nexport { onCLS };\n//# sourceMappingURL=getCLS.js.map\n","import { WINDOW } from '../../types.js';\nimport { onHidden } from './onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nlet firstHiddenTime = -1;\n\nconst initHiddenTime = () => {\n // If the document is hidden and not prerendering, assume it was always\n // hidden and the page was loaded in the background.\n if (WINDOW.document && WINDOW.document.visibilityState) {\n firstHiddenTime = WINDOW.document.visibilityState === 'hidden' && !WINDOW.document.prerendering ? 0 : Infinity;\n }\n};\n\nconst trackChanges = () => {\n // Update the time if/when the document becomes hidden.\n onHidden(({ timeStamp }) => {\n firstHiddenTime = timeStamp;\n }, true);\n};\n\nconst getVisibilityWatcher = (\n\n) => {\n if (firstHiddenTime < 0) {\n // If the document is hidden when this code runs, assume it was hidden\n // since navigation start. This isn't a perfect heuristic, but it's the\n // best we can do until an API is available to support querying past\n // visibilityState.\n initHiddenTime();\n trackChanges();\n }\n return {\n get firstHiddenTime() {\n return firstHiddenTime;\n },\n };\n};\n\nexport { getVisibilityWatcher };\n//# sourceMappingURL=getVisibilityWatcher.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Calculates the [FID](https://web.dev/fid/) value for the current page and\n * calls the `callback` function once the value is ready, along with the\n * relevant `first-input` performance entry used to determine the value. The\n * reported value is a `DOMHighResTimeStamp`.\n *\n * _**Important:** since FID is only reported after the user interacts with the\n * page, it's possible that it will not be reported for some page loads._\n */\nconst onFID = (onReport) => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('FID');\n // eslint-disable-next-line prefer-const\n let report;\n\n const handleEntry = (entry) => {\n // Only report if the page wasn't hidden prior to the first input.\n if (entry.startTime < visibilityWatcher.firstHiddenTime) {\n metric.value = entry.processingStart - entry.startTime;\n metric.entries.push(entry);\n report(true);\n }\n };\n\n const handleEntries = (entries) => {\n (entries ).forEach(handleEntry);\n };\n\n const po = observe('first-input', handleEntries);\n report = bindReporter(onReport, metric);\n\n if (po) {\n onHidden(() => {\n handleEntries(po.takeRecords() );\n po.disconnect();\n }, true);\n }\n};\n\nexport { onFID };\n//# sourceMappingURL=getFID.js.map\n","import { observe } from '../observe.js';\n\nlet interactionCountEstimate = 0;\nlet minKnownInteractionId = Infinity;\nlet maxKnownInteractionId = 0;\n\nconst updateEstimate = (entries) => {\n (entries ).forEach(e => {\n if (e.interactionId) {\n minKnownInteractionId = Math.min(minKnownInteractionId, e.interactionId);\n maxKnownInteractionId = Math.max(maxKnownInteractionId, e.interactionId);\n\n interactionCountEstimate = maxKnownInteractionId ? (maxKnownInteractionId - minKnownInteractionId) / 7 + 1 : 0;\n }\n });\n};\n\nlet po;\n\n/**\n * Returns the `interactionCount` value using the native API (if available)\n * or the polyfill estimate in this module.\n */\nconst getInteractionCount = () => {\n return po ? interactionCountEstimate : performance.interactionCount || 0;\n};\n\n/**\n * Feature detects native support or initializes the polyfill if needed.\n */\nconst initInteractionCountPolyfill = () => {\n if ('interactionCount' in performance || po) return;\n\n po = observe('event', updateEstimate, {\n type: 'event',\n buffered: true,\n durationThreshold: 0,\n } );\n};\n\nexport { getInteractionCount, initInteractionCountPolyfill };\n//# sourceMappingURL=interactionCountPolyfill.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\nimport { initInteractionCountPolyfill, getInteractionCount } from './lib/polyfills/interactionCountPolyfill.js';\n\n/*\n * Copyright 2022 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Returns the interaction count since the last bfcache restore (or for the\n * full page lifecycle if there were no bfcache restores).\n */\nconst getInteractionCountForNavigation = () => {\n return getInteractionCount();\n};\n\n// To prevent unnecessary memory usage on pages with lots of interactions,\n// store at most 10 of the longest interactions to consider as INP candidates.\nconst MAX_INTERACTIONS_TO_CONSIDER = 10;\n\n// A list of longest interactions on the page (by latency) sorted so the\n// longest one is first. The list is as most MAX_INTERACTIONS_TO_CONSIDER long.\nconst longestInteractionList = [];\n\n// A mapping of longest interactions by their interaction ID.\n// This is used for faster lookup.\nconst longestInteractionMap = {};\n\n/**\n * Takes a performance entry and adds it to the list of worst interactions\n * if its duration is long enough to make it among the worst. If the\n * entry is part of an existing interaction, it is merged and the latency\n * and entries list is updated as needed.\n */\nconst processEntry = (entry) => {\n // The least-long of the 10 longest interactions.\n const minLongestInteraction = longestInteractionList[longestInteractionList.length - 1];\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const existingInteraction = longestInteractionMap[entry.interactionId];\n\n // Only process the entry if it's possibly one of the ten longest,\n // or if it's part of an existing interaction.\n if (\n existingInteraction ||\n longestInteractionList.length < MAX_INTERACTIONS_TO_CONSIDER ||\n entry.duration > minLongestInteraction.latency\n ) {\n // If the interaction already exists, update it. Otherwise create one.\n if (existingInteraction) {\n existingInteraction.entries.push(entry);\n existingInteraction.latency = Math.max(existingInteraction.latency, entry.duration);\n } else {\n const interaction = {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n id: entry.interactionId,\n latency: entry.duration,\n entries: [entry],\n };\n longestInteractionMap[interaction.id] = interaction;\n longestInteractionList.push(interaction);\n }\n\n // Sort the entries by latency (descending) and keep only the top ten.\n longestInteractionList.sort((a, b) => b.latency - a.latency);\n longestInteractionList.splice(MAX_INTERACTIONS_TO_CONSIDER).forEach(i => {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete longestInteractionMap[i.id];\n });\n }\n};\n\n/**\n * Returns the estimated p98 longest interaction based on the stored\n * interaction candidates and the interaction count for the current page.\n */\nconst estimateP98LongestInteraction = () => {\n const candidateInteractionIndex = Math.min(\n longestInteractionList.length - 1,\n Math.floor(getInteractionCountForNavigation() / 50),\n );\n\n return longestInteractionList[candidateInteractionIndex];\n};\n\n/**\n * Calculates the [INP](https://web.dev/responsiveness/) value for the current\n * page and calls the `callback` function once the value is ready, along with\n * the `event` performance entries reported for that interaction. The reported\n * value is a `DOMHighResTimeStamp`.\n *\n * A custom `durationThreshold` configuration option can optionally be passed to\n * control what `event-timing` entries are considered for INP reporting. The\n * default threshold is `40`, which means INP scores of less than 40 are\n * reported as 0. Note that this will not affect your 75th percentile INP value\n * unless that value is also less than 40 (well below the recommended\n * [good](https://web.dev/inp/#what-is-a-good-inp-score) threshold).\n *\n * If the `reportAllChanges` configuration option is set to `true`, the\n * `callback` function will be called as soon as the value is initially\n * determined as well as any time the value changes throughout the page\n * lifespan.\n *\n * _**Important:** INP should be continually monitored for changes throughout\n * the entire lifespan of a page—including if the user returns to the page after\n * it's been hidden/backgrounded. However, since browsers often [will not fire\n * additional callbacks once the user has backgrounded a\n * page](https://developer.chrome.com/blog/page-lifecycle-api/#advice-hidden),\n * `callback` is always called when the page's visibility state changes to\n * hidden. As a result, the `callback` function might be called multiple times\n * during the same page load._\n */\nconst onINP = (onReport, opts) => {\n // Set defaults\n // eslint-disable-next-line no-param-reassign\n opts = opts || {};\n\n // https://web.dev/inp/#what's-a-%22good%22-inp-value\n // const thresholds = [200, 500];\n\n // TODO(philipwalton): remove once the polyfill is no longer needed.\n initInteractionCountPolyfill();\n\n const metric = initMetric('INP');\n // eslint-disable-next-line prefer-const\n let report;\n\n const handleEntries = (entries) => {\n entries.forEach(entry => {\n if (entry.interactionId) {\n processEntry(entry);\n }\n\n // Entries of type `first-input` don't currently have an `interactionId`,\n // so to consider them in INP we have to first check that an existing\n // entry doesn't match the `duration` and `startTime`.\n // Note that this logic assumes that `event` entries are dispatched\n // before `first-input` entries. This is true in Chrome but it is not\n // true in Firefox; however, Firefox doesn't support interactionId, so\n // it's not an issue at the moment.\n // TODO(philipwalton): remove once crbug.com/1325826 is fixed.\n if (entry.entryType === 'first-input') {\n const noMatchingEntry = !longestInteractionList.some(interaction => {\n return interaction.entries.some(prevEntry => {\n return entry.duration === prevEntry.duration && entry.startTime === prevEntry.startTime;\n });\n });\n if (noMatchingEntry) {\n processEntry(entry);\n }\n }\n });\n\n const inp = estimateP98LongestInteraction();\n\n if (inp && inp.latency !== metric.value) {\n metric.value = inp.latency;\n metric.entries = inp.entries;\n report();\n }\n };\n\n const po = observe('event', handleEntries, {\n // Event Timing entries have their durations rounded to the nearest 8ms,\n // so a duration of 40ms would be any event that spans 2.5 or more frames\n // at 60Hz. This threshold is chosen to strike a balance between usefulness\n // and performance. Running this callback for any interaction that spans\n // just one or two frames is likely not worth the insight that could be\n // gained.\n durationThreshold: opts.durationThreshold || 40,\n } );\n\n report = bindReporter(onReport, metric, opts.reportAllChanges);\n\n if (po) {\n // Also observe entries of type `first-input`. This is useful in cases\n // where the first interaction is less than the `durationThreshold`.\n po.observe({ type: 'first-input', buffered: true });\n\n onHidden(() => {\n handleEntries(po.takeRecords() );\n\n // If the interaction count shows that there were interactions but\n // none were captured by the PerformanceObserver, report a latency of 0.\n if (metric.value < 0 && getInteractionCountForNavigation() > 0) {\n metric.value = 0;\n metric.entries = [];\n }\n\n report(true);\n });\n }\n};\n\nexport { onINP };\n//# sourceMappingURL=getINP.js.map\n","import { WINDOW } from '../types.js';\nimport { bindReporter } from './lib/bindReporter.js';\nimport { getActivationStart } from './lib/getActivationStart.js';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst reportedMetricIDs = {};\n\n/**\n * Calculates the [LCP](https://web.dev/lcp/) value for the current page and\n * calls the `callback` function once the value is ready (along with the\n * relevant `largest-contentful-paint` performance entry used to determine the\n * value). The reported value is a `DOMHighResTimeStamp`.\n */\nconst onLCP = (onReport) => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('LCP');\n let report;\n\n const handleEntries = (entries) => {\n const lastEntry = entries[entries.length - 1] ;\n if (lastEntry) {\n // The startTime attribute returns the value of the renderTime if it is\n // not 0, and the value of the loadTime otherwise. The activationStart\n // reference is used because LCP should be relative to page activation\n // rather than navigation start if the page was prerendered.\n const value = Math.max(lastEntry.startTime - getActivationStart(), 0);\n\n // Only report if the page wasn't hidden prior to LCP.\n if (value < visibilityWatcher.firstHiddenTime) {\n metric.value = value;\n metric.entries = [lastEntry];\n report();\n }\n }\n };\n\n const po = observe('largest-contentful-paint', handleEntries);\n\n if (po) {\n report = bindReporter(onReport, metric);\n\n const stopListening = () => {\n if (!reportedMetricIDs[metric.id]) {\n handleEntries(po.takeRecords() );\n po.disconnect();\n reportedMetricIDs[metric.id] = true;\n report(true);\n }\n };\n\n // Stop listening after input. Note: while scrolling is an input that\n // stop LCP observation, it's unreliable since it can be programmatically\n // generated. See: https://github.com/GoogleChrome/web-vitals/issues/75\n ['keydown', 'click'].forEach(type => {\n if (WINDOW.document) {\n addEventListener(type, stopListening, { once: true, capture: true });\n }\n });\n\n onHidden(stopListening, true);\n\n return stopListening;\n }\n\n return;\n};\n\nexport { onLCP };\n//# sourceMappingURL=getLCP.js.map\n","import { WINDOW } from '../types.js';\nimport { bindReporter } from './lib/bindReporter.js';\nimport { getActivationStart } from './lib/getActivationStart.js';\nimport { getNavigationEntry } from './lib/getNavigationEntry.js';\nimport { initMetric } from './lib/initMetric.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Runs in the next task after the page is done loading and/or prerendering.\n * @param callback\n */\nconst whenReady = (callback) => {\n if (!WINDOW.document) {\n return;\n }\n\n if (WINDOW.document.prerendering) {\n addEventListener('prerenderingchange', () => whenReady(callback), true);\n } else if (WINDOW.document.readyState !== 'complete') {\n addEventListener('load', () => whenReady(callback), true);\n } else {\n // Queue a task so the callback runs after `loadEventEnd`.\n setTimeout(callback, 0);\n }\n};\n\n/**\n * Calculates the [TTFB](https://web.dev/time-to-first-byte/) value for the\n * current page and calls the `callback` function once the page has loaded,\n * along with the relevant `navigation` performance entry used to determine the\n * value. The reported value is a `DOMHighResTimeStamp`.\n *\n * Note, this function waits until after the page is loaded to call `callback`\n * in order to ensure all properties of the `navigation` entry are populated.\n * This is useful if you want to report on other metrics exposed by the\n * [Navigation Timing API](https://w3c.github.io/navigation-timing/). For\n * example, the TTFB metric starts from the page's [time\n * origin](https://www.w3.org/TR/hr-time-2/#sec-time-origin), which means it\n * includes time spent on DNS lookup, connection negotiation, network latency,\n * and server processing time.\n */\nconst onTTFB = (onReport, opts) => {\n // Set defaults\n // eslint-disable-next-line no-param-reassign\n opts = opts || {};\n\n // https://web.dev/ttfb/#what-is-a-good-ttfb-score\n // const thresholds = [800, 1800];\n\n const metric = initMetric('TTFB');\n const report = bindReporter(onReport, metric, opts.reportAllChanges);\n\n whenReady(() => {\n const navEntry = getNavigationEntry() ;\n\n if (navEntry) {\n // The activationStart reference is used because TTFB should be\n // relative to page activation rather than navigation start if the\n // page was prerendered. But in cases where `activationStart` occurs\n // after the first byte is received, this time should be clamped at 0.\n metric.value = Math.max(navEntry.responseStart - getActivationStart(), 0);\n\n // In some cases the value reported is negative or is larger\n // than the current page time. Ignore these cases:\n // https://github.com/GoogleChrome/web-vitals/issues/137\n // https://github.com/GoogleChrome/web-vitals/issues/162\n if (metric.value < 0 || metric.value > performance.now()) return;\n\n metric.entries = [navEntry];\n\n report(true);\n }\n });\n};\n\nexport { onTTFB };\n//# sourceMappingURL=onTTFB.js.map\n","import { logger, getFunctionName } from '@sentry/utils';\nimport { DEBUG_BUILD } from '../common/debug-build.js';\nimport { onCLS } from './web-vitals/getCLS.js';\nimport { onFID } from './web-vitals/getFID.js';\nimport { onINP } from './web-vitals/getINP.js';\nimport { onLCP } from './web-vitals/getLCP.js';\nimport { observe } from './web-vitals/lib/observe.js';\nimport { onTTFB } from './web-vitals/onTTFB.js';\n\nconst handlers = {};\nconst instrumented = {};\n\nlet _previousCls;\nlet _previousFid;\nlet _previousLcp;\nlet _previousTtfb;\nlet _previousInp;\n\n/**\n * Add a callback that will be triggered when a CLS metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n *\n * Pass `stopOnCallback = true` to stop listening for CLS when the cleanup callback is called.\n * This will lead to the CLS being finalized and frozen.\n */\nfunction addClsInstrumentationHandler(\n callback,\n stopOnCallback = false,\n) {\n return addMetricObserver('cls', callback, instrumentCls, _previousCls, stopOnCallback);\n}\n\n/**\n * Add a callback that will be triggered when a LCP metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n *\n * Pass `stopOnCallback = true` to stop listening for LCP when the cleanup callback is called.\n * This will lead to the LCP being finalized and frozen.\n */\nfunction addLcpInstrumentationHandler(\n callback,\n stopOnCallback = false,\n) {\n return addMetricObserver('lcp', callback, instrumentLcp, _previousLcp, stopOnCallback);\n}\n\n/**\n * Add a callback that will be triggered when a FID metric is available.\n */\nfunction addTtfbInstrumentationHandler(callback) {\n return addMetricObserver('ttfb', callback, instrumentTtfb, _previousTtfb);\n}\n\n/**\n * Add a callback that will be triggered when a FID metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n */\nfunction addFidInstrumentationHandler(callback) {\n return addMetricObserver('fid', callback, instrumentFid, _previousFid);\n}\n\n/**\n * Add a callback that will be triggered when a INP metric is available.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n */\nfunction addInpInstrumentationHandler(\n callback,\n) {\n return addMetricObserver('inp', callback, instrumentInp, _previousInp);\n}\n\n/**\n * Add a callback that will be triggered when a performance observer is triggered,\n * and receives the entries of the observer.\n * Returns a cleanup callback which can be called to remove the instrumentation handler.\n */\nfunction addPerformanceInstrumentationHandler(\n type,\n callback,\n) {\n addHandler(type, callback);\n\n if (!instrumented[type]) {\n instrumentPerformanceObserver(type);\n instrumented[type] = true;\n }\n\n return getCleanupCallback(type, callback);\n}\n\n/** Trigger all handlers of a given type. */\nfunction triggerHandlers(type, data) {\n const typeHandlers = handlers[type];\n\n if (!typeHandlers || !typeHandlers.length) {\n return;\n }\n\n for (const handler of typeHandlers) {\n try {\n handler(data);\n } catch (e) {\n DEBUG_BUILD &&\n logger.error(\n `Error while triggering instrumentation handler.\\nType: ${type}\\nName: ${getFunctionName(handler)}\\nError:`,\n e,\n );\n }\n }\n}\n\nfunction instrumentCls() {\n return onCLS(\n metric => {\n triggerHandlers('cls', {\n metric,\n });\n _previousCls = metric;\n },\n { reportAllChanges: true },\n );\n}\n\nfunction instrumentFid() {\n return onFID(metric => {\n triggerHandlers('fid', {\n metric,\n });\n _previousFid = metric;\n });\n}\n\nfunction instrumentLcp() {\n return onLCP(metric => {\n triggerHandlers('lcp', {\n metric,\n });\n _previousLcp = metric;\n });\n}\n\nfunction instrumentTtfb() {\n return onTTFB(metric => {\n triggerHandlers('ttfb', {\n metric,\n });\n _previousTtfb = metric;\n });\n}\n\nfunction instrumentInp() {\n return onINP(metric => {\n triggerHandlers('inp', {\n metric,\n });\n _previousInp = metric;\n });\n}\n\nfunction addMetricObserver(\n type,\n callback,\n instrumentFn,\n previousValue,\n stopOnCallback = false,\n) {\n addHandler(type, callback);\n\n let stopListening;\n\n if (!instrumented[type]) {\n stopListening = instrumentFn();\n instrumented[type] = true;\n }\n\n if (previousValue) {\n callback({ metric: previousValue });\n }\n\n return getCleanupCallback(type, callback, stopOnCallback ? stopListening : undefined);\n}\n\nfunction instrumentPerformanceObserver(type) {\n const options = {};\n\n // Special per-type options we want to use\n if (type === 'event') {\n options.durationThreshold = 0;\n }\n\n observe(\n type,\n entries => {\n triggerHandlers(type, { entries });\n },\n options,\n );\n}\n\nfunction addHandler(type, handler) {\n handlers[type] = handlers[type] || [];\n (handlers[type] ).push(handler);\n}\n\n// Get a callback which can be called to remove the instrumentation handler\nfunction getCleanupCallback(\n type,\n callback,\n stopListening,\n) {\n return () => {\n if (stopListening) {\n stopListening();\n }\n\n const typeHandlers = handlers[type];\n\n if (!typeHandlers) {\n return;\n }\n\n const index = typeHandlers.indexOf(callback);\n if (index !== -1) {\n typeHandlers.splice(index, 1);\n }\n };\n}\n\nexport { addClsInstrumentationHandler, addFidInstrumentationHandler, addInpInstrumentationHandler, addLcpInstrumentationHandler, addPerformanceInstrumentationHandler, addTtfbInstrumentationHandler };\n//# sourceMappingURL=instrument.js.map\n","import { _nullishCoalesce, _optionalChain } from '@sentry/utils';\nimport { addBreadcrumb, getClient, isSentryRequestUrl, getCurrentScope, addEventProcessor, prepareEvent, getIsolationScope, setContext, captureException, spanToJSON, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE } from '@sentry/core';\nimport { GLOBAL_OBJ, normalize, fill, htmlTreeAsString, browserPerformanceTimeOrigin, logger, uuid4, SENTRY_XHR_DATA_KEY, dropUndefinedKeys, stringMatchesSomePattern, addFetchInstrumentationHandler, addXhrInstrumentationHandler, addClickKeypressInstrumentationHandler, addHistoryInstrumentationHandler, createEnvelope, createEventEnvelopeHeaders, getSdkMetadataForEnvelopeHeader, updateRateLimits, isRateLimited, consoleSandbox, isBrowser } from '@sentry/utils';\nimport { addPerformanceInstrumentationHandler, addLcpInstrumentationHandler } from '@sentry-internal/tracing';\n\n// exporting a separate copy of `WINDOW` rather than exporting the one from `@sentry/browser`\n// prevents the browser package from being bundled in the CDN bundle, and avoids a\n// circular dependency between the browser and replay packages should `@sentry/browser` import\n// from `@sentry/replay` in the future\nconst WINDOW = GLOBAL_OBJ ;\n\nconst REPLAY_SESSION_KEY = 'sentryReplaySession';\nconst REPLAY_EVENT_NAME = 'replay_event';\nconst UNABLE_TO_SEND_REPLAY = 'Unable to send Replay';\n\n// The idle limit for a session after which recording is paused.\nconst SESSION_IDLE_PAUSE_DURATION = 300000; // 5 minutes in ms\n\n// The idle limit for a session after which the session expires.\nconst SESSION_IDLE_EXPIRE_DURATION = 900000; // 15 minutes in ms\n\n/** Default flush delays */\nconst DEFAULT_FLUSH_MIN_DELAY = 5000;\n// XXX: Temp fix for our debounce logic where `maxWait` would never occur if it\n// was the same as `wait`\nconst DEFAULT_FLUSH_MAX_DELAY = 5500;\n\n/* How long to wait for error checkouts */\nconst BUFFER_CHECKOUT_TIME = 60000;\n\nconst RETRY_BASE_INTERVAL = 5000;\nconst RETRY_MAX_COUNT = 3;\n\n/* The max (uncompressed) size in bytes of a network body. Any body larger than this will be truncated. */\nconst NETWORK_BODY_MAX_SIZE = 150000;\n\n/* The max size of a single console arg that is captured. Any arg larger than this will be truncated. */\nconst CONSOLE_ARG_MAX_SIZE = 5000;\n\n/* Min. time to wait before we consider something a slow click. */\nconst SLOW_CLICK_THRESHOLD = 3000;\n/* For scroll actions after a click, we only look for a very short time period to detect programmatic scrolling. */\nconst SLOW_CLICK_SCROLL_TIMEOUT = 300;\n\n/** When encountering a total segment size exceeding this size, stop the replay (as we cannot properly ingest it). */\nconst REPLAY_MAX_EVENT_BUFFER_SIZE = 20000000; // ~20MB\n\n/** Replays must be min. 5s long before we send them. */\nconst MIN_REPLAY_DURATION = 4999;\n/* The max. allowed value that the minReplayDuration can be set to. */\nconst MIN_REPLAY_DURATION_LIMIT = 15000;\n\n/** The max. length of a replay. */\nconst MAX_REPLAY_DURATION = 3600000; // 60 minutes in ms;\n\nfunction _nullishCoalesce$1(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }function _optionalChain$5(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }var NodeType$1;\n(function (NodeType) {\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\n})(NodeType$1 || (NodeType$1 = {}));\n\nfunction isElement$1(n) {\n return n.nodeType === n.ELEMENT_NODE;\n}\nfunction isShadowRoot(n) {\n const host = _optionalChain$5([n, 'optionalAccess', _ => _.host]);\n return Boolean(_optionalChain$5([host, 'optionalAccess', _2 => _2.shadowRoot]) === n);\n}\nfunction isNativeShadowDom(shadowRoot) {\n return Object.prototype.toString.call(shadowRoot) === '[object ShadowRoot]';\n}\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\n if (cssText.includes(' background-clip: text;') &&\n !cssText.includes(' -webkit-background-clip: text;')) {\n cssText = cssText.replace(' background-clip: text;', ' -webkit-background-clip: text; background-clip: text;');\n }\n return cssText;\n}\nfunction escapeImportStatement(rule) {\n const { cssText } = rule;\n if (cssText.split('\"').length < 3)\n return cssText;\n const statement = ['@import', `url(${JSON.stringify(rule.href)})`];\n if (rule.layerName === '') {\n statement.push(`layer`);\n }\n else if (rule.layerName) {\n statement.push(`layer(${rule.layerName})`);\n }\n if (rule.supportsText) {\n statement.push(`supports(${rule.supportsText})`);\n }\n if (rule.media.length) {\n statement.push(rule.media.mediaText);\n }\n return statement.join(' ') + ';';\n}\nfunction stringifyStylesheet(s) {\n try {\n const rules = s.rules || s.cssRules;\n return rules\n ? fixBrowserCompatibilityIssuesInCSS(Array.from(rules, stringifyRule).join(''))\n : null;\n }\n catch (error) {\n return null;\n }\n}\nfunction stringifyRule(rule) {\n let importStringified;\n if (isCSSImportRule(rule)) {\n try {\n importStringified =\n stringifyStylesheet(rule.styleSheet) ||\n escapeImportStatement(rule);\n }\n catch (error) {\n }\n }\n else if (isCSSStyleRule(rule) && rule.selectorText.includes(':')) {\n return fixSafariColons(rule.cssText);\n }\n return importStringified || rule.cssText;\n}\nfunction fixSafariColons(cssStringified) {\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n return cssStringified.replace(regex, '$1\\\\$2');\n}\nfunction isCSSImportRule(rule) {\n return 'styleSheet' in rule;\n}\nfunction isCSSStyleRule(rule) {\n return 'selectorText' in rule;\n}\nclass Mirror {\n constructor() {\n this.idNodeMap = new Map();\n this.nodeMetaMap = new WeakMap();\n }\n getId(n) {\n if (!n)\n return -1;\n const id = _optionalChain$5([this, 'access', _3 => _3.getMeta, 'call', _4 => _4(n), 'optionalAccess', _5 => _5.id]);\n return _nullishCoalesce$1(id, () => ( -1));\n }\n getNode(id) {\n return this.idNodeMap.get(id) || null;\n }\n getIds() {\n return Array.from(this.idNodeMap.keys());\n }\n getMeta(n) {\n return this.nodeMetaMap.get(n) || null;\n }\n removeNodeFromMap(n) {\n const id = this.getId(n);\n this.idNodeMap.delete(id);\n if (n.childNodes) {\n n.childNodes.forEach((childNode) => this.removeNodeFromMap(childNode));\n }\n }\n has(id) {\n return this.idNodeMap.has(id);\n }\n hasNode(node) {\n return this.nodeMetaMap.has(node);\n }\n add(n, meta) {\n const id = meta.id;\n this.idNodeMap.set(id, n);\n this.nodeMetaMap.set(n, meta);\n }\n replace(id, n) {\n const oldNode = this.getNode(id);\n if (oldNode) {\n const meta = this.nodeMetaMap.get(oldNode);\n if (meta)\n this.nodeMetaMap.set(n, meta);\n }\n this.idNodeMap.set(id, n);\n }\n reset() {\n this.idNodeMap = new Map();\n this.nodeMetaMap = new WeakMap();\n }\n}\nfunction createMirror() {\n return new Mirror();\n}\nfunction shouldMaskInput({ maskInputOptions, tagName, type, }) {\n if (tagName === 'OPTION') {\n tagName = 'SELECT';\n }\n return Boolean(maskInputOptions[tagName.toLowerCase()] ||\n (type && maskInputOptions[type]) ||\n type === 'password' ||\n (tagName === 'INPUT' && !type && maskInputOptions['text']));\n}\nfunction maskInputValue({ isMasked, element, value, maskInputFn, }) {\n let text = value || '';\n if (!isMasked) {\n return text;\n }\n if (maskInputFn) {\n text = maskInputFn(text, element);\n }\n return '*'.repeat(text.length);\n}\nfunction toLowerCase(str) {\n return str.toLowerCase();\n}\nfunction toUpperCase(str) {\n return str.toUpperCase();\n}\nconst ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\nfunction is2DCanvasBlank(canvas) {\n const ctx = canvas.getContext('2d');\n if (!ctx)\n return true;\n const chunkSize = 50;\n for (let x = 0; x < canvas.width; x += chunkSize) {\n for (let y = 0; y < canvas.height; y += chunkSize) {\n const getImageData = ctx.getImageData;\n const originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData\n ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\n : getImageData;\n const pixelBuffer = new Uint32Array(originalGetImageData.call(ctx, x, y, Math.min(chunkSize, canvas.width - x), Math.min(chunkSize, canvas.height - y)).data.buffer);\n if (pixelBuffer.some((pixel) => pixel !== 0))\n return false;\n }\n }\n return true;\n}\nfunction getInputType(element) {\n const type = element.type;\n return element.hasAttribute('data-rr-is-password')\n ? 'password'\n : type\n ?\n toLowerCase(type)\n : null;\n}\nfunction getInputValue(el, tagName, type) {\n if (tagName === 'INPUT' && (type === 'radio' || type === 'checkbox')) {\n return el.getAttribute('value') || '';\n }\n return el.value;\n}\n\nlet _id = 1;\nconst tagNameRegex = new RegExp('[^a-z0-9-_:]');\nconst IGNORED_NODE = -2;\nfunction genId() {\n return _id++;\n}\nfunction getValidTagName(element) {\n if (element instanceof HTMLFormElement) {\n return 'form';\n }\n const processedTagName = toLowerCase(element.tagName);\n if (tagNameRegex.test(processedTagName)) {\n return 'div';\n }\n return processedTagName;\n}\nfunction extractOrigin(url) {\n let origin = '';\n if (url.indexOf('//') > -1) {\n origin = url.split('/').slice(0, 3).join('/');\n }\n else {\n origin = url.split('/')[0];\n }\n origin = origin.split('?')[0];\n return origin;\n}\nlet canvasService;\nlet canvasCtx;\nconst URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\nconst URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\nconst URL_WWW_MATCH = /^www\\..*/i;\nconst DATA_URI = /^(data:)([^,]*),(.*)/i;\nfunction absoluteToStylesheet(cssText, href) {\n return (cssText || '').replace(URL_IN_CSS_REF, (origin, quote1, path1, quote2, path2, path3) => {\n const filePath = path1 || path2 || path3;\n const maybeQuote = quote1 || quote2 || '';\n if (!filePath) {\n return origin;\n }\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (DATA_URI.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (filePath[0] === '/') {\n return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\n }\n const stack = href.split('/');\n const parts = filePath.split('/');\n stack.pop();\n for (const part of parts) {\n if (part === '.') {\n continue;\n }\n else if (part === '..') {\n stack.pop();\n }\n else {\n stack.push(part);\n }\n }\n return `url(${maybeQuote}${stack.join('/')}${maybeQuote})`;\n });\n}\nconst SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\nconst SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\n if (attributeValue.trim() === '') {\n return attributeValue;\n }\n let pos = 0;\n function collectCharacters(regEx) {\n let chars;\n const match = regEx.exec(attributeValue.substring(pos));\n if (match) {\n chars = match[0];\n pos += chars.length;\n return chars;\n }\n return '';\n }\n const output = [];\n while (true) {\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\n if (pos >= attributeValue.length) {\n break;\n }\n let url = collectCharacters(SRCSET_NOT_SPACES);\n if (url.slice(-1) === ',') {\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\n output.push(url);\n }\n else {\n let descriptorsStr = '';\n url = absoluteToDoc(doc, url);\n let inParens = false;\n while (true) {\n const c = attributeValue.charAt(pos);\n if (c === '') {\n output.push((url + descriptorsStr).trim());\n break;\n }\n else if (!inParens) {\n if (c === ',') {\n pos += 1;\n output.push((url + descriptorsStr).trim());\n break;\n }\n else if (c === '(') {\n inParens = true;\n }\n }\n else {\n if (c === ')') {\n inParens = false;\n }\n }\n descriptorsStr += c;\n pos += 1;\n }\n }\n }\n return output.join(', ');\n}\nfunction absoluteToDoc(doc, attributeValue) {\n if (!attributeValue || attributeValue.trim() === '') {\n return attributeValue;\n }\n const a = doc.createElement('a');\n a.href = attributeValue;\n return a.href;\n}\nfunction isSVGElement(el) {\n return Boolean(el.tagName === 'svg' || el.ownerSVGElement);\n}\nfunction getHref() {\n const a = document.createElement('a');\n a.href = '';\n return a.href;\n}\nfunction transformAttribute(doc, tagName, name, value, element, maskAttributeFn) {\n if (!value) {\n return value;\n }\n if (name === 'src' ||\n (name === 'href' && !(tagName === 'use' && value[0] === '#'))) {\n return absoluteToDoc(doc, value);\n }\n else if (name === 'xlink:href' && value[0] !== '#') {\n return absoluteToDoc(doc, value);\n }\n else if (name === 'background' &&\n (tagName === 'table' || tagName === 'td' || tagName === 'th')) {\n return absoluteToDoc(doc, value);\n }\n else if (name === 'srcset') {\n return getAbsoluteSrcsetString(doc, value);\n }\n else if (name === 'style') {\n return absoluteToStylesheet(value, getHref());\n }\n else if (tagName === 'object' && name === 'data') {\n return absoluteToDoc(doc, value);\n }\n if (typeof maskAttributeFn === 'function') {\n return maskAttributeFn(name, value, element);\n }\n return value;\n}\nfunction ignoreAttribute(tagName, name, _value) {\n return (tagName === 'video' || tagName === 'audio') && name === 'autoplay';\n}\nfunction _isBlockedElement(element, blockClass, blockSelector, unblockSelector) {\n try {\n if (unblockSelector && element.matches(unblockSelector)) {\n return false;\n }\n if (typeof blockClass === 'string') {\n if (element.classList.contains(blockClass)) {\n return true;\n }\n }\n else {\n for (let eIndex = element.classList.length; eIndex--;) {\n const className = element.classList[eIndex];\n if (blockClass.test(className)) {\n return true;\n }\n }\n }\n if (blockSelector) {\n return element.matches(blockSelector);\n }\n }\n catch (e) {\n }\n return false;\n}\nfunction elementClassMatchesRegex(el, regex) {\n for (let eIndex = el.classList.length; eIndex--;) {\n const className = el.classList[eIndex];\n if (regex.test(className)) {\n return true;\n }\n }\n return false;\n}\nfunction distanceToMatch(node, matchPredicate, limit = Infinity, distance = 0) {\n if (!node)\n return -1;\n if (node.nodeType !== node.ELEMENT_NODE)\n return -1;\n if (distance > limit)\n return -1;\n if (matchPredicate(node))\n return distance;\n return distanceToMatch(node.parentNode, matchPredicate, limit, distance + 1);\n}\nfunction createMatchPredicate(className, selector) {\n return (node) => {\n const el = node;\n if (el === null)\n return false;\n try {\n if (className) {\n if (typeof className === 'string') {\n if (el.matches(`.${className}`))\n return true;\n }\n else if (elementClassMatchesRegex(el, className)) {\n return true;\n }\n }\n if (selector && el.matches(selector))\n return true;\n return false;\n }\n catch (e2) {\n return false;\n }\n };\n}\nfunction needMaskingText(node, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, maskAllText) {\n try {\n const el = node.nodeType === node.ELEMENT_NODE\n ? node\n : node.parentElement;\n if (el === null)\n return false;\n if (el.tagName === 'INPUT') {\n const autocomplete = el.getAttribute('autocomplete');\n const disallowedAutocompleteValues = [\n 'current-password',\n 'new-password',\n 'cc-number',\n 'cc-exp',\n 'cc-exp-month',\n 'cc-exp-year',\n 'cc-csc',\n ];\n if (disallowedAutocompleteValues.includes(autocomplete)) {\n return true;\n }\n }\n let maskDistance = -1;\n let unmaskDistance = -1;\n if (maskAllText) {\n unmaskDistance = distanceToMatch(el, createMatchPredicate(unmaskTextClass, unmaskTextSelector));\n if (unmaskDistance < 0) {\n return true;\n }\n maskDistance = distanceToMatch(el, createMatchPredicate(maskTextClass, maskTextSelector), unmaskDistance >= 0 ? unmaskDistance : Infinity);\n }\n else {\n maskDistance = distanceToMatch(el, createMatchPredicate(maskTextClass, maskTextSelector));\n if (maskDistance < 0) {\n return false;\n }\n unmaskDistance = distanceToMatch(el, createMatchPredicate(unmaskTextClass, unmaskTextSelector), maskDistance >= 0 ? maskDistance : Infinity);\n }\n return maskDistance >= 0\n ? unmaskDistance >= 0\n ? maskDistance <= unmaskDistance\n : true\n : unmaskDistance >= 0\n ? false\n : !!maskAllText;\n }\n catch (e) {\n }\n return !!maskAllText;\n}\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\n const win = iframeEl.contentWindow;\n if (!win) {\n return;\n }\n let fired = false;\n let readyState;\n try {\n readyState = win.document.readyState;\n }\n catch (error) {\n return;\n }\n if (readyState !== 'complete') {\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, iframeLoadTimeout);\n iframeEl.addEventListener('load', () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n return;\n }\n const blankUrl = 'about:blank';\n if (win.location.href !== blankUrl ||\n iframeEl.src === blankUrl ||\n iframeEl.src === '') {\n setTimeout(listener, 0);\n return iframeEl.addEventListener('load', listener);\n }\n iframeEl.addEventListener('load', listener);\n}\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\n let fired = false;\n let styleSheetLoaded;\n try {\n styleSheetLoaded = link.sheet;\n }\n catch (error) {\n return;\n }\n if (styleSheetLoaded)\n return;\n const timer = setTimeout(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, styleSheetLoadTimeout);\n link.addEventListener('load', () => {\n clearTimeout(timer);\n fired = true;\n listener();\n });\n}\nfunction serializeNode(n, options) {\n const { doc, mirror, blockClass, blockSelector, unblockSelector, maskAllText, maskAttributeFn, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, inlineStylesheet, maskInputOptions = {}, maskTextFn, maskInputFn, dataURLOptions = {}, inlineImages, recordCanvas, keepIframeSrcFn, newlyAddedElement = false, } = options;\n const rootId = getRootId(doc, mirror);\n switch (n.nodeType) {\n case n.DOCUMENT_NODE:\n if (n.compatMode !== 'CSS1Compat') {\n return {\n type: NodeType$1.Document,\n childNodes: [],\n compatMode: n.compatMode,\n };\n }\n else {\n return {\n type: NodeType$1.Document,\n childNodes: [],\n };\n }\n case n.DOCUMENT_TYPE_NODE:\n return {\n type: NodeType$1.DocumentType,\n name: n.name,\n publicId: n.publicId,\n systemId: n.systemId,\n rootId,\n };\n case n.ELEMENT_NODE:\n return serializeElementNode(n, {\n doc,\n blockClass,\n blockSelector,\n unblockSelector,\n inlineStylesheet,\n maskAttributeFn,\n maskInputOptions,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n rootId,\n maskAllText,\n maskTextClass,\n unmaskTextClass,\n maskTextSelector,\n unmaskTextSelector,\n });\n case n.TEXT_NODE:\n return serializeTextNode(n, {\n maskAllText,\n maskTextClass,\n unmaskTextClass,\n maskTextSelector,\n unmaskTextSelector,\n maskTextFn,\n maskInputOptions,\n maskInputFn,\n rootId,\n });\n case n.CDATA_SECTION_NODE:\n return {\n type: NodeType$1.CDATA,\n textContent: '',\n rootId,\n };\n case n.COMMENT_NODE:\n return {\n type: NodeType$1.Comment,\n textContent: n.textContent || '',\n rootId,\n };\n default:\n return false;\n }\n}\nfunction getRootId(doc, mirror) {\n if (!mirror.hasNode(doc))\n return undefined;\n const docId = mirror.getId(doc);\n return docId === 1 ? undefined : docId;\n}\nfunction serializeTextNode(n, options) {\n const { maskAllText, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, maskTextFn, maskInputOptions, maskInputFn, rootId, } = options;\n const parentTagName = n.parentNode && n.parentNode.tagName;\n let textContent = n.textContent;\n const isStyle = parentTagName === 'STYLE' ? true : undefined;\n const isScript = parentTagName === 'SCRIPT' ? true : undefined;\n const isTextarea = parentTagName === 'TEXTAREA' ? true : undefined;\n if (isStyle && textContent) {\n try {\n if (n.nextSibling || n.previousSibling) {\n }\n else if (_optionalChain$5([n, 'access', _6 => _6.parentNode, 'access', _7 => _7.sheet, 'optionalAccess', _8 => _8.cssRules])) {\n textContent = stringifyStylesheet(n.parentNode.sheet);\n }\n }\n catch (err) {\n console.warn(`Cannot get CSS styles from text's parentNode. Error: ${err}`, n);\n }\n textContent = absoluteToStylesheet(textContent, getHref());\n }\n if (isScript) {\n textContent = 'SCRIPT_PLACEHOLDER';\n }\n const forceMask = needMaskingText(n, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, maskAllText);\n if (!isStyle && !isScript && !isTextarea && textContent && forceMask) {\n textContent = maskTextFn\n ? maskTextFn(textContent, n.parentElement)\n : textContent.replace(/[\\S]/g, '*');\n }\n if (isTextarea && textContent && (maskInputOptions.textarea || forceMask)) {\n textContent = maskInputFn\n ? maskInputFn(textContent, n.parentNode)\n : textContent.replace(/[\\S]/g, '*');\n }\n if (parentTagName === 'OPTION' && textContent) {\n const isInputMasked = shouldMaskInput({\n type: null,\n tagName: parentTagName,\n maskInputOptions,\n });\n textContent = maskInputValue({\n isMasked: needMaskingText(n, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, isInputMasked),\n element: n,\n value: textContent,\n maskInputFn,\n });\n }\n return {\n type: NodeType$1.Text,\n textContent: textContent || '',\n isStyle,\n rootId,\n };\n}\nfunction serializeElementNode(n, options) {\n const { doc, blockClass, blockSelector, unblockSelector, inlineStylesheet, maskInputOptions = {}, maskAttributeFn, maskInputFn, dataURLOptions = {}, inlineImages, recordCanvas, keepIframeSrcFn, newlyAddedElement = false, rootId, maskAllText, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, } = options;\n const needBlock = _isBlockedElement(n, blockClass, blockSelector, unblockSelector);\n const tagName = getValidTagName(n);\n let attributes = {};\n const len = n.attributes.length;\n for (let i = 0; i < len; i++) {\n const attr = n.attributes[i];\n if (attr.name && !ignoreAttribute(tagName, attr.name, attr.value)) {\n attributes[attr.name] = transformAttribute(doc, tagName, toLowerCase(attr.name), attr.value, n, maskAttributeFn);\n }\n }\n if (tagName === 'link' && inlineStylesheet) {\n const stylesheet = Array.from(doc.styleSheets).find((s) => {\n return s.href === n.href;\n });\n let cssText = null;\n if (stylesheet) {\n cssText = stringifyStylesheet(stylesheet);\n }\n if (cssText) {\n delete attributes.rel;\n delete attributes.href;\n attributes._cssText = absoluteToStylesheet(cssText, stylesheet.href);\n }\n }\n if (tagName === 'style' &&\n n.sheet &&\n !(n.innerText || n.textContent || '').trim().length) {\n const cssText = stringifyStylesheet(n.sheet);\n if (cssText) {\n attributes._cssText = absoluteToStylesheet(cssText, getHref());\n }\n }\n if (tagName === 'input' ||\n tagName === 'textarea' ||\n tagName === 'select' ||\n tagName === 'option') {\n const el = n;\n const type = getInputType(el);\n const value = getInputValue(el, toUpperCase(tagName), type);\n const checked = el.checked;\n if (type !== 'submit' && type !== 'button' && value) {\n const forceMask = needMaskingText(el, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, shouldMaskInput({\n type,\n tagName: toUpperCase(tagName),\n maskInputOptions,\n }));\n attributes.value = maskInputValue({\n isMasked: forceMask,\n element: el,\n value,\n maskInputFn,\n });\n }\n if (checked) {\n attributes.checked = checked;\n }\n }\n if (tagName === 'option') {\n if (n.selected && !maskInputOptions['select']) {\n attributes.selected = true;\n }\n else {\n delete attributes.selected;\n }\n }\n if (tagName === 'canvas' && recordCanvas) {\n if (n.__context === '2d') {\n if (!is2DCanvasBlank(n)) {\n attributes.rr_dataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n }\n }\n else if (!('__context' in n)) {\n const canvasDataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n const blankCanvas = document.createElement('canvas');\n blankCanvas.width = n.width;\n blankCanvas.height = n.height;\n const blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n if (canvasDataURL !== blankCanvasDataURL) {\n attributes.rr_dataURL = canvasDataURL;\n }\n }\n }\n if (tagName === 'img' && inlineImages) {\n if (!canvasService) {\n canvasService = doc.createElement('canvas');\n canvasCtx = canvasService.getContext('2d');\n }\n const image = n;\n const oldValue = image.crossOrigin;\n image.crossOrigin = 'anonymous';\n const recordInlineImage = () => {\n image.removeEventListener('load', recordInlineImage);\n try {\n canvasService.width = image.naturalWidth;\n canvasService.height = image.naturalHeight;\n canvasCtx.drawImage(image, 0, 0);\n attributes.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\n }\n catch (err) {\n console.warn(`Cannot inline img src=${image.currentSrc}! Error: ${err}`);\n }\n oldValue\n ? (attributes.crossOrigin = oldValue)\n : image.removeAttribute('crossorigin');\n };\n if (image.complete && image.naturalWidth !== 0)\n recordInlineImage();\n else\n image.addEventListener('load', recordInlineImage);\n }\n if (tagName === 'audio' || tagName === 'video') {\n attributes.rr_mediaState = n.paused\n ? 'paused'\n : 'played';\n attributes.rr_mediaCurrentTime = n.currentTime;\n }\n if (!newlyAddedElement) {\n if (n.scrollLeft) {\n attributes.rr_scrollLeft = n.scrollLeft;\n }\n if (n.scrollTop) {\n attributes.rr_scrollTop = n.scrollTop;\n }\n }\n if (needBlock) {\n const { width, height } = n.getBoundingClientRect();\n attributes = {\n class: attributes.class,\n rr_width: `${width}px`,\n rr_height: `${height}px`,\n };\n }\n if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src)) {\n if (!n.contentDocument) {\n attributes.rr_src = attributes.src;\n }\n delete attributes.src;\n }\n let isCustomElement;\n try {\n if (customElements.get(tagName))\n isCustomElement = true;\n }\n catch (e) {\n }\n return {\n type: NodeType$1.Element,\n tagName,\n attributes,\n childNodes: [],\n isSVG: isSVGElement(n) || undefined,\n needBlock,\n rootId,\n isCustom: isCustomElement,\n };\n}\nfunction lowerIfExists(maybeAttr) {\n if (maybeAttr === undefined || maybeAttr === null) {\n return '';\n }\n else {\n return maybeAttr.toLowerCase();\n }\n}\nfunction slimDOMExcluded(sn, slimDOMOptions) {\n if (slimDOMOptions.comment && sn.type === NodeType$1.Comment) {\n return true;\n }\n else if (sn.type === NodeType$1.Element) {\n if (slimDOMOptions.script &&\n (sn.tagName === 'script' ||\n (sn.tagName === 'link' &&\n (sn.attributes.rel === 'preload' ||\n sn.attributes.rel === 'modulepreload') &&\n sn.attributes.as === 'script') ||\n (sn.tagName === 'link' &&\n sn.attributes.rel === 'prefetch' &&\n typeof sn.attributes.href === 'string' &&\n sn.attributes.href.endsWith('.js')))) {\n return true;\n }\n else if (slimDOMOptions.headFavicon &&\n ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\n (sn.tagName === 'meta' &&\n (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) ||\n lowerIfExists(sn.attributes.name) === 'application-name' ||\n lowerIfExists(sn.attributes.rel) === 'icon' ||\n lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\n lowerIfExists(sn.attributes.rel) === 'shortcut icon')))) {\n return true;\n }\n else if (sn.tagName === 'meta') {\n if (slimDOMOptions.headMetaDescKeywords &&\n lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\n return true;\n }\n else if (slimDOMOptions.headMetaSocial &&\n (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) ||\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\n lowerIfExists(sn.attributes.name) === 'pinterest')) {\n return true;\n }\n else if (slimDOMOptions.headMetaRobots &&\n (lowerIfExists(sn.attributes.name) === 'robots' ||\n lowerIfExists(sn.attributes.name) === 'googlebot' ||\n lowerIfExists(sn.attributes.name) === 'bingbot')) {\n return true;\n }\n else if (slimDOMOptions.headMetaHttpEquiv &&\n sn.attributes['http-equiv'] !== undefined) {\n return true;\n }\n else if (slimDOMOptions.headMetaAuthorship &&\n (lowerIfExists(sn.attributes.name) === 'author' ||\n lowerIfExists(sn.attributes.name) === 'generator' ||\n lowerIfExists(sn.attributes.name) === 'framework' ||\n lowerIfExists(sn.attributes.name) === 'publisher' ||\n lowerIfExists(sn.attributes.name) === 'progid' ||\n lowerIfExists(sn.attributes.property).match(/^article:/) ||\n lowerIfExists(sn.attributes.property).match(/^product:/))) {\n return true;\n }\n else if (slimDOMOptions.headMetaVerification &&\n (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\n lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\n lowerIfExists(sn.attributes.name) === 'csrf-token' ||\n lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\n lowerIfExists(sn.attributes.name) === 'verify-v1' ||\n lowerIfExists(sn.attributes.name) === 'verification' ||\n lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')) {\n return true;\n }\n }\n }\n return false;\n}\nfunction serializeNodeWithId(n, options) {\n const { doc, mirror, blockClass, blockSelector, unblockSelector, maskAllText, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, skipChild = false, inlineStylesheet = true, maskInputOptions = {}, maskAttributeFn, maskTextFn, maskInputFn, slimDOMOptions, dataURLOptions = {}, inlineImages = false, recordCanvas = false, onSerialize, onIframeLoad, iframeLoadTimeout = 5000, onStylesheetLoad, stylesheetLoadTimeout = 5000, keepIframeSrcFn = () => false, newlyAddedElement = false, } = options;\n let { preserveWhiteSpace = true } = options;\n const _serializedNode = serializeNode(n, {\n doc,\n mirror,\n blockClass,\n blockSelector,\n maskAllText,\n unblockSelector,\n maskTextClass,\n unmaskTextClass,\n maskTextSelector,\n unmaskTextSelector,\n inlineStylesheet,\n maskInputOptions,\n maskAttributeFn,\n maskTextFn,\n maskInputFn,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n keepIframeSrcFn,\n newlyAddedElement,\n });\n if (!_serializedNode) {\n console.warn(n, 'not serialized');\n return null;\n }\n let id;\n if (mirror.hasNode(n)) {\n id = mirror.getId(n);\n }\n else if (slimDOMExcluded(_serializedNode, slimDOMOptions) ||\n (!preserveWhiteSpace &&\n _serializedNode.type === NodeType$1.Text &&\n !_serializedNode.isStyle &&\n !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)) {\n id = IGNORED_NODE;\n }\n else {\n id = genId();\n }\n const serializedNode = Object.assign(_serializedNode, { id });\n mirror.add(n, serializedNode);\n if (id === IGNORED_NODE) {\n return null;\n }\n if (onSerialize) {\n onSerialize(n);\n }\n let recordChild = !skipChild;\n if (serializedNode.type === NodeType$1.Element) {\n recordChild = recordChild && !serializedNode.needBlock;\n delete serializedNode.needBlock;\n const shadowRoot = n.shadowRoot;\n if (shadowRoot && isNativeShadowDom(shadowRoot))\n serializedNode.isShadowHost = true;\n }\n if ((serializedNode.type === NodeType$1.Document ||\n serializedNode.type === NodeType$1.Element) &&\n recordChild) {\n if (slimDOMOptions.headWhitespace &&\n serializedNode.type === NodeType$1.Element &&\n serializedNode.tagName === 'head') {\n preserveWhiteSpace = false;\n }\n const bypassOptions = {\n doc,\n mirror,\n blockClass,\n blockSelector,\n maskAllText,\n unblockSelector,\n maskTextClass,\n unmaskTextClass,\n maskTextSelector,\n unmaskTextSelector,\n skipChild,\n inlineStylesheet,\n maskInputOptions,\n maskAttributeFn,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n };\n for (const childN of Array.from(n.childNodes)) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n if (isElement$1(n) && n.shadowRoot) {\n for (const childN of Array.from(n.shadowRoot.childNodes)) {\n const serializedChildNode = serializeNodeWithId(childN, bypassOptions);\n if (serializedChildNode) {\n isNativeShadowDom(n.shadowRoot) &&\n (serializedChildNode.isShadow = true);\n serializedNode.childNodes.push(serializedChildNode);\n }\n }\n }\n }\n if (n.parentNode &&\n isShadowRoot(n.parentNode) &&\n isNativeShadowDom(n.parentNode)) {\n serializedNode.isShadow = true;\n }\n if (serializedNode.type === NodeType$1.Element &&\n serializedNode.tagName === 'iframe') {\n onceIframeLoaded(n, () => {\n const iframeDoc = n.contentDocument;\n if (iframeDoc && onIframeLoad) {\n const serializedIframeNode = serializeNodeWithId(iframeDoc, {\n doc: iframeDoc,\n mirror,\n blockClass,\n blockSelector,\n unblockSelector,\n maskAllText,\n maskTextClass,\n unmaskTextClass,\n maskTextSelector,\n unmaskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskAttributeFn,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n });\n if (serializedIframeNode) {\n onIframeLoad(n, serializedIframeNode);\n }\n }\n }, iframeLoadTimeout);\n }\n if (serializedNode.type === NodeType$1.Element &&\n serializedNode.tagName === 'link' &&\n serializedNode.attributes.rel === 'stylesheet') {\n onceStylesheetLoaded(n, () => {\n if (onStylesheetLoad) {\n const serializedLinkNode = serializeNodeWithId(n, {\n doc,\n mirror,\n blockClass,\n blockSelector,\n unblockSelector,\n maskAllText,\n maskTextClass,\n unmaskTextClass,\n maskTextSelector,\n unmaskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskAttributeFn,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n });\n if (serializedLinkNode) {\n onStylesheetLoad(n, serializedLinkNode);\n }\n }\n }, stylesheetLoadTimeout);\n }\n return serializedNode;\n}\nfunction snapshot(n, options) {\n const { mirror = new Mirror(), blockClass = 'rr-block', blockSelector = null, unblockSelector = null, maskAllText = false, maskTextClass = 'rr-mask', unmaskTextClass = null, maskTextSelector = null, unmaskTextSelector = null, inlineStylesheet = true, inlineImages = false, recordCanvas = false, maskAllInputs = false, maskAttributeFn, maskTextFn, maskInputFn, slimDOM = false, dataURLOptions, preserveWhiteSpace, onSerialize, onIframeLoad, iframeLoadTimeout, onStylesheetLoad, stylesheetLoadTimeout, keepIframeSrcFn = () => false, } = options || {};\n const maskInputOptions = maskAllInputs === true\n ? {\n color: true,\n date: true,\n 'datetime-local': true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n }\n : maskAllInputs === false\n ? {}\n : maskAllInputs;\n const slimDOMOptions = slimDOM === true || slimDOM === 'all'\n ?\n {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaDescKeywords: slimDOM === 'all',\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaAuthorship: true,\n headMetaVerification: true,\n }\n : slimDOM === false\n ? {}\n : slimDOM;\n return serializeNodeWithId(n, {\n doc: n,\n mirror,\n blockClass,\n blockSelector,\n unblockSelector,\n maskAllText,\n maskTextClass,\n unmaskTextClass,\n maskTextSelector,\n unmaskTextSelector,\n skipChild: false,\n inlineStylesheet,\n maskInputOptions,\n maskAttributeFn,\n maskTextFn,\n maskInputFn,\n slimDOMOptions,\n dataURLOptions,\n inlineImages,\n recordCanvas,\n preserveWhiteSpace,\n onSerialize,\n onIframeLoad,\n iframeLoadTimeout,\n onStylesheetLoad,\n stylesheetLoadTimeout,\n keepIframeSrcFn,\n newlyAddedElement: false,\n });\n}\n\nfunction _optionalChain$4(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }\nfunction on(type, fn, target = document) {\n const options = { capture: true, passive: true };\n target.addEventListener(type, fn, options);\n return () => target.removeEventListener(type, fn, options);\n}\nconst DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +\n '\\r\\n' +\n 'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\n '\\r\\n' +\n 'or you can use record.mirror to access the mirror instance during recording.';\nlet _mirror = {\n map: {},\n getId() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return -1;\n },\n getNode() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return null;\n },\n removeNodeFromMap() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n has() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return false;\n },\n reset() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n};\nif (typeof window !== 'undefined' && window.Proxy && window.Reflect) {\n _mirror = new Proxy(_mirror, {\n get(target, prop, receiver) {\n if (prop === 'map') {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n return Reflect.get(target, prop, receiver);\n },\n });\n}\nfunction throttle$1(func, wait, options = {}) {\n let timeout = null;\n let previous = 0;\n return function (...args) {\n const now = Date.now();\n if (!previous && options.leading === false) {\n previous = now;\n }\n const remaining = wait - (now - previous);\n const context = this;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout$1(timeout);\n timeout = null;\n }\n previous = now;\n func.apply(context, args);\n }\n else if (!timeout && options.trailing !== false) {\n timeout = setTimeout$1(() => {\n previous = options.leading === false ? 0 : Date.now();\n timeout = null;\n func.apply(context, args);\n }, remaining);\n }\n };\n}\nfunction hookSetter(target, key, d, isRevoked, win = window) {\n const original = win.Object.getOwnPropertyDescriptor(target, key);\n win.Object.defineProperty(target, key, isRevoked\n ? d\n : {\n set(value) {\n setTimeout$1(() => {\n d.set.call(this, value);\n }, 0);\n if (original && original.set) {\n original.set.call(this, value);\n }\n },\n });\n return () => hookSetter(target, key, original || {}, true);\n}\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return () => {\n };\n }\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === 'function') {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original,\n },\n });\n }\n source[name] = wrapped;\n return () => {\n source[name] = original;\n };\n }\n catch (e2) {\n return () => {\n };\n }\n}\nlet nowTimestamp = Date.now;\nif (!(/[1-9][0-9]{12}/.test(Date.now().toString()))) {\n nowTimestamp = () => new Date().getTime();\n}\nfunction getWindowScroll(win) {\n const doc = win.document;\n return {\n left: doc.scrollingElement\n ? doc.scrollingElement.scrollLeft\n : win.pageXOffset !== undefined\n ? win.pageXOffset\n : _optionalChain$4([doc, 'optionalAccess', _ => _.documentElement, 'access', _2 => _2.scrollLeft]) ||\n _optionalChain$4([doc, 'optionalAccess', _3 => _3.body, 'optionalAccess', _4 => _4.parentElement, 'optionalAccess', _5 => _5.scrollLeft]) ||\n _optionalChain$4([doc, 'optionalAccess', _6 => _6.body, 'optionalAccess', _7 => _7.scrollLeft]) ||\n 0,\n top: doc.scrollingElement\n ? doc.scrollingElement.scrollTop\n : win.pageYOffset !== undefined\n ? win.pageYOffset\n : _optionalChain$4([doc, 'optionalAccess', _8 => _8.documentElement, 'access', _9 => _9.scrollTop]) ||\n _optionalChain$4([doc, 'optionalAccess', _10 => _10.body, 'optionalAccess', _11 => _11.parentElement, 'optionalAccess', _12 => _12.scrollTop]) ||\n _optionalChain$4([doc, 'optionalAccess', _13 => _13.body, 'optionalAccess', _14 => _14.scrollTop]) ||\n 0,\n };\n}\nfunction getWindowHeight() {\n return (window.innerHeight ||\n (document.documentElement && document.documentElement.clientHeight) ||\n (document.body && document.body.clientHeight));\n}\nfunction getWindowWidth() {\n return (window.innerWidth ||\n (document.documentElement && document.documentElement.clientWidth) ||\n (document.body && document.body.clientWidth));\n}\nfunction closestElementOfNode(node) {\n if (!node) {\n return null;\n }\n const el = node.nodeType === node.ELEMENT_NODE\n ? node\n : node.parentElement;\n return el;\n}\nfunction isBlocked(node, blockClass, blockSelector, unblockSelector, checkAncestors) {\n if (!node) {\n return false;\n }\n const el = closestElementOfNode(node);\n if (!el) {\n return false;\n }\n const blockedPredicate = createMatchPredicate(blockClass, blockSelector);\n if (!checkAncestors) {\n const isUnblocked = unblockSelector && el.matches(unblockSelector);\n return blockedPredicate(el) && !isUnblocked;\n }\n const blockDistance = distanceToMatch(el, blockedPredicate);\n let unblockDistance = -1;\n if (blockDistance < 0) {\n return false;\n }\n if (unblockSelector) {\n unblockDistance = distanceToMatch(el, createMatchPredicate(null, unblockSelector));\n }\n if (blockDistance > -1 && unblockDistance < 0) {\n return true;\n }\n return blockDistance < unblockDistance;\n}\nfunction isSerialized(n, mirror) {\n return mirror.getId(n) !== -1;\n}\nfunction isIgnored(n, mirror) {\n return mirror.getId(n) === IGNORED_NODE;\n}\nfunction isAncestorRemoved(target, mirror) {\n if (isShadowRoot(target)) {\n return false;\n }\n const id = mirror.getId(target);\n if (!mirror.has(id)) {\n return true;\n }\n if (target.parentNode &&\n target.parentNode.nodeType === target.DOCUMENT_NODE) {\n return false;\n }\n if (!target.parentNode) {\n return true;\n }\n return isAncestorRemoved(target.parentNode, mirror);\n}\nfunction legacy_isTouchEvent(event) {\n return Boolean(event.changedTouches);\n}\nfunction polyfill(win = window) {\n if ('NodeList' in win && !win.NodeList.prototype.forEach) {\n win.NodeList.prototype.forEach = Array.prototype\n .forEach;\n }\n if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {\n win.DOMTokenList.prototype.forEach = Array.prototype\n .forEach;\n }\n if (!Node.prototype.contains) {\n Node.prototype.contains = (...args) => {\n let node = args[0];\n if (!(0 in args)) {\n throw new TypeError('1 argument is required');\n }\n do {\n if (this === node) {\n return true;\n }\n } while ((node = node && node.parentNode));\n return false;\n };\n }\n}\nfunction isSerializedIframe(n, mirror) {\n return Boolean(n.nodeName === 'IFRAME' && mirror.getMeta(n));\n}\nfunction isSerializedStylesheet(n, mirror) {\n return Boolean(n.nodeName === 'LINK' &&\n n.nodeType === n.ELEMENT_NODE &&\n n.getAttribute &&\n n.getAttribute('rel') === 'stylesheet' &&\n mirror.getMeta(n));\n}\nfunction hasShadowRoot(n) {\n return Boolean(_optionalChain$4([n, 'optionalAccess', _18 => _18.shadowRoot]));\n}\nclass StyleSheetMirror {\n constructor() {\n this.id = 1;\n this.styleIDMap = new WeakMap();\n this.idStyleMap = new Map();\n }\n getId(stylesheet) {\n return _nullishCoalesce(this.styleIDMap.get(stylesheet), () => ( -1));\n }\n has(stylesheet) {\n return this.styleIDMap.has(stylesheet);\n }\n add(stylesheet, id) {\n if (this.has(stylesheet))\n return this.getId(stylesheet);\n let newId;\n if (id === undefined) {\n newId = this.id++;\n }\n else\n newId = id;\n this.styleIDMap.set(stylesheet, newId);\n this.idStyleMap.set(newId, stylesheet);\n return newId;\n }\n getStyle(id) {\n return this.idStyleMap.get(id) || null;\n }\n reset() {\n this.styleIDMap = new WeakMap();\n this.idStyleMap = new Map();\n this.id = 1;\n }\n generateId() {\n return this.id++;\n }\n}\nfunction getShadowHost(n) {\n let shadowHost = null;\n if (_optionalChain$4([n, 'access', _19 => _19.getRootNode, 'optionalCall', _20 => _20(), 'optionalAccess', _21 => _21.nodeType]) === Node.DOCUMENT_FRAGMENT_NODE &&\n n.getRootNode().host)\n shadowHost = n.getRootNode().host;\n return shadowHost;\n}\nfunction getRootShadowHost(n) {\n let rootShadowHost = n;\n let shadowHost;\n while ((shadowHost = getShadowHost(rootShadowHost)))\n rootShadowHost = shadowHost;\n return rootShadowHost;\n}\nfunction shadowHostInDom(n) {\n const doc = n.ownerDocument;\n if (!doc)\n return false;\n const shadowHost = getRootShadowHost(n);\n return doc.contains(shadowHost);\n}\nfunction inDom(n) {\n const doc = n.ownerDocument;\n if (!doc)\n return false;\n return doc.contains(n) || shadowHostInDom(n);\n}\nconst cachedImplementations = {};\nfunction getImplementation(name) {\n const cached = cachedImplementations[name];\n if (cached) {\n return cached;\n }\n const document = window.document;\n let impl = window[name];\n if (document && typeof document.createElement === 'function') {\n try {\n const sandbox = document.createElement('iframe');\n sandbox.hidden = true;\n document.head.appendChild(sandbox);\n const contentWindow = sandbox.contentWindow;\n if (contentWindow && contentWindow[name]) {\n impl =\n contentWindow[name];\n }\n document.head.removeChild(sandbox);\n }\n catch (e) {\n }\n }\n return (cachedImplementations[name] = impl.bind(window));\n}\nfunction onRequestAnimationFrame(...rest) {\n return getImplementation('requestAnimationFrame')(...rest);\n}\nfunction setTimeout$1(...rest) {\n return getImplementation('setTimeout')(...rest);\n}\nfunction clearTimeout$1(...rest) {\n return getImplementation('clearTimeout')(...rest);\n}\n\nvar EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n IncrementalSource2[IncrementalSource2[\"CustomElement\"] = 16] = \"CustomElement\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar PointerTypes = /* @__PURE__ */ ((PointerTypes2) => {\n PointerTypes2[PointerTypes2[\"Mouse\"] = 0] = \"Mouse\";\n PointerTypes2[PointerTypes2[\"Pen\"] = 1] = \"Pen\";\n PointerTypes2[PointerTypes2[\"Touch\"] = 2] = \"Touch\";\n return PointerTypes2;\n})(PointerTypes || {});\n\nfunction _optionalChain$3(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }\nfunction isNodeInLinkedList(n) {\n return '__ln' in n;\n}\nclass DoubleLinkedList {\n constructor() {\n this.length = 0;\n this.head = null;\n this.tail = null;\n }\n get(position) {\n if (position >= this.length) {\n throw new Error('Position outside of list range');\n }\n let current = this.head;\n for (let index = 0; index < position; index++) {\n current = _optionalChain$3([current, 'optionalAccess', _ => _.next]) || null;\n }\n return current;\n }\n addNode(n) {\n const node = {\n value: n,\n previous: null,\n next: null,\n };\n n.__ln = node;\n if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\n const current = n.previousSibling.__ln.next;\n node.next = current;\n node.previous = n.previousSibling.__ln;\n n.previousSibling.__ln.next = node;\n if (current) {\n current.previous = node;\n }\n }\n else if (n.nextSibling &&\n isNodeInLinkedList(n.nextSibling) &&\n n.nextSibling.__ln.previous) {\n const current = n.nextSibling.__ln.previous;\n node.previous = current;\n node.next = n.nextSibling.__ln;\n n.nextSibling.__ln.previous = node;\n if (current) {\n current.next = node;\n }\n }\n else {\n if (this.head) {\n this.head.previous = node;\n }\n node.next = this.head;\n this.head = node;\n }\n if (node.next === null) {\n this.tail = node;\n }\n this.length++;\n }\n removeNode(n) {\n const current = n.__ln;\n if (!this.head) {\n return;\n }\n if (!current.previous) {\n this.head = current.next;\n if (this.head) {\n this.head.previous = null;\n }\n else {\n this.tail = null;\n }\n }\n else {\n current.previous.next = current.next;\n if (current.next) {\n current.next.previous = current.previous;\n }\n else {\n this.tail = current.previous;\n }\n }\n if (n.__ln) {\n delete n.__ln;\n }\n this.length--;\n }\n}\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\nclass MutationBuffer {\n constructor() {\n this.frozen = false;\n this.locked = false;\n this.texts = [];\n this.attributes = [];\n this.attributeMap = new WeakMap();\n this.removes = [];\n this.mapRemoves = [];\n this.movedMap = {};\n this.addedSet = new Set();\n this.movedSet = new Set();\n this.droppedSet = new Set();\n this.processMutations = (mutations) => {\n mutations.forEach(this.processMutation);\n this.emit();\n };\n this.emit = () => {\n if (this.frozen || this.locked) {\n return;\n }\n const adds = [];\n const addedIds = new Set();\n const addList = new DoubleLinkedList();\n const getNextId = (n) => {\n let ns = n;\n let nextId = IGNORED_NODE;\n while (nextId === IGNORED_NODE) {\n ns = ns && ns.nextSibling;\n nextId = ns && this.mirror.getId(ns);\n }\n return nextId;\n };\n const pushAdd = (n) => {\n if (!n.parentNode || !inDom(n)) {\n return;\n }\n const parentId = isShadowRoot(n.parentNode)\n ? this.mirror.getId(getShadowHost(n))\n : this.mirror.getId(n.parentNode);\n const nextId = getNextId(n);\n if (parentId === -1 || nextId === -1) {\n return addList.addNode(n);\n }\n const sn = serializeNodeWithId(n, {\n doc: this.doc,\n mirror: this.mirror,\n blockClass: this.blockClass,\n blockSelector: this.blockSelector,\n maskAllText: this.maskAllText,\n unblockSelector: this.unblockSelector,\n maskTextClass: this.maskTextClass,\n unmaskTextClass: this.unmaskTextClass,\n maskTextSelector: this.maskTextSelector,\n unmaskTextSelector: this.unmaskTextSelector,\n skipChild: true,\n newlyAddedElement: true,\n inlineStylesheet: this.inlineStylesheet,\n maskInputOptions: this.maskInputOptions,\n maskAttributeFn: this.maskAttributeFn,\n maskTextFn: this.maskTextFn,\n maskInputFn: this.maskInputFn,\n slimDOMOptions: this.slimDOMOptions,\n dataURLOptions: this.dataURLOptions,\n recordCanvas: this.recordCanvas,\n inlineImages: this.inlineImages,\n onSerialize: (currentN) => {\n if (isSerializedIframe(currentN, this.mirror)) {\n this.iframeManager.addIframe(currentN);\n }\n if (isSerializedStylesheet(currentN, this.mirror)) {\n this.stylesheetManager.trackLinkElement(currentN);\n }\n if (hasShadowRoot(n)) {\n this.shadowDomManager.addShadowRoot(n.shadowRoot, this.doc);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n this.iframeManager.attachIframe(iframe, childSn);\n this.shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (link, childSn) => {\n this.stylesheetManager.attachLinkElement(link, childSn);\n },\n });\n if (sn) {\n adds.push({\n parentId,\n nextId,\n node: sn,\n });\n addedIds.add(sn.id);\n }\n };\n while (this.mapRemoves.length) {\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\n }\n for (const n of this.movedSet) {\n if (isParentRemoved(this.removes, n, this.mirror) &&\n !this.movedSet.has(n.parentNode)) {\n continue;\n }\n pushAdd(n);\n }\n for (const n of this.addedSet) {\n if (!isAncestorInSet(this.droppedSet, n) &&\n !isParentRemoved(this.removes, n, this.mirror)) {\n pushAdd(n);\n }\n else if (isAncestorInSet(this.movedSet, n)) {\n pushAdd(n);\n }\n else {\n this.droppedSet.add(n);\n }\n }\n let candidate = null;\n while (addList.length) {\n let node = null;\n if (candidate) {\n const parentId = this.mirror.getId(candidate.value.parentNode);\n const nextId = getNextId(candidate.value);\n if (parentId !== -1 && nextId !== -1) {\n node = candidate;\n }\n }\n if (!node) {\n let tailNode = addList.tail;\n while (tailNode) {\n const _node = tailNode;\n tailNode = tailNode.previous;\n if (_node) {\n const parentId = this.mirror.getId(_node.value.parentNode);\n const nextId = getNextId(_node.value);\n if (nextId === -1)\n continue;\n else if (parentId !== -1) {\n node = _node;\n break;\n }\n else {\n const unhandledNode = _node.value;\n if (unhandledNode.parentNode &&\n unhandledNode.parentNode.nodeType ===\n Node.DOCUMENT_FRAGMENT_NODE) {\n const shadowHost = unhandledNode.parentNode\n .host;\n const parentId = this.mirror.getId(shadowHost);\n if (parentId !== -1) {\n node = _node;\n break;\n }\n }\n }\n }\n }\n }\n if (!node) {\n while (addList.head) {\n addList.removeNode(addList.head.value);\n }\n break;\n }\n candidate = node.previous;\n addList.removeNode(node.value);\n pushAdd(node.value);\n }\n const payload = {\n texts: this.texts\n .map((text) => ({\n id: this.mirror.getId(text.node),\n value: text.value,\n }))\n .filter((text) => !addedIds.has(text.id))\n .filter((text) => this.mirror.has(text.id)),\n attributes: this.attributes\n .map((attribute) => {\n const { attributes } = attribute;\n if (typeof attributes.style === 'string') {\n const diffAsStr = JSON.stringify(attribute.styleDiff);\n const unchangedAsStr = JSON.stringify(attribute._unchangedStyles);\n if (diffAsStr.length < attributes.style.length) {\n if ((diffAsStr + unchangedAsStr).split('var(').length ===\n attributes.style.split('var(').length) {\n attributes.style = attribute.styleDiff;\n }\n }\n }\n return {\n id: this.mirror.getId(attribute.node),\n attributes: attributes,\n };\n })\n .filter((attribute) => !addedIds.has(attribute.id))\n .filter((attribute) => this.mirror.has(attribute.id)),\n removes: this.removes,\n adds,\n };\n if (!payload.texts.length &&\n !payload.attributes.length &&\n !payload.removes.length &&\n !payload.adds.length) {\n return;\n }\n this.texts = [];\n this.attributes = [];\n this.attributeMap = new WeakMap();\n this.removes = [];\n this.addedSet = new Set();\n this.movedSet = new Set();\n this.droppedSet = new Set();\n this.movedMap = {};\n this.mutationCb(payload);\n };\n this.processMutation = (m) => {\n if (isIgnored(m.target, this.mirror)) {\n return;\n }\n switch (m.type) {\n case 'characterData': {\n const value = m.target.textContent;\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, this.unblockSelector, false) &&\n value !== m.oldValue) {\n this.texts.push({\n value: needMaskingText(m.target, this.maskTextClass, this.maskTextSelector, this.unmaskTextClass, this.unmaskTextSelector, this.maskAllText) && value\n ? this.maskTextFn\n ? this.maskTextFn(value, closestElementOfNode(m.target))\n : value.replace(/[\\S]/g, '*')\n : value,\n node: m.target,\n });\n }\n break;\n }\n case 'attributes': {\n const target = m.target;\n let attributeName = m.attributeName;\n let value = m.target.getAttribute(attributeName);\n if (attributeName === 'value') {\n const type = getInputType(target);\n const tagName = target.tagName;\n value = getInputValue(target, tagName, type);\n const isInputMasked = shouldMaskInput({\n maskInputOptions: this.maskInputOptions,\n tagName,\n type,\n });\n const forceMask = needMaskingText(m.target, this.maskTextClass, this.maskTextSelector, this.unmaskTextClass, this.unmaskTextSelector, isInputMasked);\n value = maskInputValue({\n isMasked: forceMask,\n element: target,\n value,\n maskInputFn: this.maskInputFn,\n });\n }\n if (isBlocked(m.target, this.blockClass, this.blockSelector, this.unblockSelector, false) ||\n value === m.oldValue) {\n return;\n }\n let item = this.attributeMap.get(m.target);\n if (target.tagName === 'IFRAME' &&\n attributeName === 'src' &&\n !this.keepIframeSrcFn(value)) {\n if (!target.contentDocument) {\n attributeName = 'rr_src';\n }\n else {\n return;\n }\n }\n if (!item) {\n item = {\n node: m.target,\n attributes: {},\n styleDiff: {},\n _unchangedStyles: {},\n };\n this.attributes.push(item);\n this.attributeMap.set(m.target, item);\n }\n if (attributeName === 'type' &&\n target.tagName === 'INPUT' &&\n (m.oldValue || '').toLowerCase() === 'password') {\n target.setAttribute('data-rr-is-password', 'true');\n }\n if (!ignoreAttribute(target.tagName, attributeName)) {\n item.attributes[attributeName] = transformAttribute(this.doc, toLowerCase(target.tagName), toLowerCase(attributeName), value, target, this.maskAttributeFn);\n if (attributeName === 'style') {\n if (!this.unattachedDoc) {\n try {\n this.unattachedDoc =\n document.implementation.createHTMLDocument();\n }\n catch (e) {\n this.unattachedDoc = this.doc;\n }\n }\n const old = this.unattachedDoc.createElement('span');\n if (m.oldValue) {\n old.setAttribute('style', m.oldValue);\n }\n for (const pname of Array.from(target.style)) {\n const newValue = target.style.getPropertyValue(pname);\n const newPriority = target.style.getPropertyPriority(pname);\n if (newValue !== old.style.getPropertyValue(pname) ||\n newPriority !== old.style.getPropertyPriority(pname)) {\n if (newPriority === '') {\n item.styleDiff[pname] = newValue;\n }\n else {\n item.styleDiff[pname] = [newValue, newPriority];\n }\n }\n else {\n item._unchangedStyles[pname] = [newValue, newPriority];\n }\n }\n for (const pname of Array.from(old.style)) {\n if (target.style.getPropertyValue(pname) === '') {\n item.styleDiff[pname] = false;\n }\n }\n }\n }\n break;\n }\n case 'childList': {\n if (isBlocked(m.target, this.blockClass, this.blockSelector, this.unblockSelector, true)) {\n return;\n }\n m.addedNodes.forEach((n) => this.genAdds(n, m.target));\n m.removedNodes.forEach((n) => {\n const nodeId = this.mirror.getId(n);\n const parentId = isShadowRoot(m.target)\n ? this.mirror.getId(m.target.host)\n : this.mirror.getId(m.target);\n if (isBlocked(m.target, this.blockClass, this.blockSelector, this.unblockSelector, false) ||\n isIgnored(n, this.mirror) ||\n !isSerialized(n, this.mirror)) {\n return;\n }\n if (this.addedSet.has(n)) {\n deepDelete(this.addedSet, n);\n this.droppedSet.add(n);\n }\n else if (this.addedSet.has(m.target) && nodeId === -1) ;\n else if (isAncestorRemoved(m.target, this.mirror)) ;\n else if (this.movedSet.has(n) &&\n this.movedMap[moveKey(nodeId, parentId)]) {\n deepDelete(this.movedSet, n);\n }\n else {\n this.removes.push({\n parentId,\n id: nodeId,\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target)\n ? true\n : undefined,\n });\n }\n this.mapRemoves.push(n);\n });\n break;\n }\n }\n };\n this.genAdds = (n, target) => {\n if (this.processedNodeManager.inOtherBuffer(n, this))\n return;\n if (this.addedSet.has(n) || this.movedSet.has(n))\n return;\n if (this.mirror.hasNode(n)) {\n if (isIgnored(n, this.mirror)) {\n return;\n }\n this.movedSet.add(n);\n let targetId = null;\n if (target && this.mirror.hasNode(target)) {\n targetId = this.mirror.getId(target);\n }\n if (targetId && targetId !== -1) {\n this.movedMap[moveKey(this.mirror.getId(n), targetId)] = true;\n }\n }\n else {\n this.addedSet.add(n);\n this.droppedSet.delete(n);\n }\n if (!isBlocked(n, this.blockClass, this.blockSelector, this.unblockSelector, false)) {\n n.childNodes.forEach((childN) => this.genAdds(childN));\n if (hasShadowRoot(n)) {\n n.shadowRoot.childNodes.forEach((childN) => {\n this.processedNodeManager.add(childN, this);\n this.genAdds(childN, n);\n });\n }\n }\n };\n }\n init(options) {\n [\n 'mutationCb',\n 'blockClass',\n 'blockSelector',\n 'unblockSelector',\n 'maskAllText',\n 'maskTextClass',\n 'unmaskTextClass',\n 'maskTextSelector',\n 'unmaskTextSelector',\n 'inlineStylesheet',\n 'maskInputOptions',\n 'maskAttributeFn',\n 'maskTextFn',\n 'maskInputFn',\n 'keepIframeSrcFn',\n 'recordCanvas',\n 'inlineImages',\n 'slimDOMOptions',\n 'dataURLOptions',\n 'doc',\n 'mirror',\n 'iframeManager',\n 'stylesheetManager',\n 'shadowDomManager',\n 'canvasManager',\n 'processedNodeManager',\n ].forEach((key) => {\n this[key] = options[key];\n });\n }\n freeze() {\n this.frozen = true;\n this.canvasManager.freeze();\n }\n unfreeze() {\n this.frozen = false;\n this.canvasManager.unfreeze();\n this.emit();\n }\n isFrozen() {\n return this.frozen;\n }\n lock() {\n this.locked = true;\n this.canvasManager.lock();\n }\n unlock() {\n this.locked = false;\n this.canvasManager.unlock();\n this.emit();\n }\n reset() {\n this.shadowDomManager.reset();\n this.canvasManager.reset();\n }\n}\nfunction deepDelete(addsSet, n) {\n addsSet.delete(n);\n n.childNodes.forEach((childN) => deepDelete(addsSet, childN));\n}\nfunction isParentRemoved(removes, n, mirror) {\n if (removes.length === 0)\n return false;\n return _isParentRemoved(removes, n, mirror);\n}\nfunction _isParentRemoved(removes, n, mirror) {\n const { parentNode } = n;\n if (!parentNode) {\n return false;\n }\n const parentId = mirror.getId(parentNode);\n if (removes.some((r) => r.id === parentId)) {\n return true;\n }\n return _isParentRemoved(removes, parentNode, mirror);\n}\nfunction isAncestorInSet(set, n) {\n if (set.size === 0)\n return false;\n return _isAncestorInSet(set, n);\n}\nfunction _isAncestorInSet(set, n) {\n const { parentNode } = n;\n if (!parentNode) {\n return false;\n }\n if (set.has(parentNode)) {\n return true;\n }\n return _isAncestorInSet(set, parentNode);\n}\n\nlet errorHandler;\nfunction registerErrorHandler(handler) {\n errorHandler = handler;\n}\nfunction unregisterErrorHandler() {\n errorHandler = undefined;\n}\nconst callbackWrapper = (cb) => {\n if (!errorHandler) {\n return cb;\n }\n const rrwebWrapped = ((...rest) => {\n try {\n return cb(...rest);\n }\n catch (error) {\n if (errorHandler && errorHandler(error) === true) {\n return () => {\n };\n }\n throw error;\n }\n });\n return rrwebWrapped;\n};\n\nfunction _optionalChain$2(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }\nconst mutationBuffers = [];\nfunction getEventTarget(event) {\n try {\n if ('composedPath' in event) {\n const path = event.composedPath();\n if (path.length) {\n return path[0];\n }\n }\n else if ('path' in event && event.path.length) {\n return event.path[0];\n }\n }\n catch (e2) {\n }\n return event && event.target;\n}\nfunction initMutationObserver(options, rootEl) {\n const mutationBuffer = new MutationBuffer();\n mutationBuffers.push(mutationBuffer);\n mutationBuffer.init(options);\n let mutationObserverCtor = window.MutationObserver ||\n window.__rrMutationObserver;\n const angularZoneSymbol = _optionalChain$2([window, 'optionalAccess', _ => _.Zone, 'optionalAccess', _2 => _2.__symbol__, 'optionalCall', _3 => _3('MutationObserver')]);\n if (angularZoneSymbol &&\n window[angularZoneSymbol]) {\n mutationObserverCtor = window[angularZoneSymbol];\n }\n const observer = new mutationObserverCtor(callbackWrapper((mutations) => {\n if (options.onMutation && options.onMutation(mutations) === false) {\n return;\n }\n mutationBuffer.processMutations.bind(mutationBuffer)(mutations);\n }));\n observer.observe(rootEl, {\n attributes: true,\n attributeOldValue: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true,\n });\n return observer;\n}\nfunction initMoveObserver({ mousemoveCb, sampling, doc, mirror, }) {\n if (sampling.mousemove === false) {\n return () => {\n };\n }\n const threshold = typeof sampling.mousemove === 'number' ? sampling.mousemove : 50;\n const callbackThreshold = typeof sampling.mousemoveCallback === 'number'\n ? sampling.mousemoveCallback\n : 500;\n let positions = [];\n let timeBaseline;\n const wrappedCb = throttle$1(callbackWrapper((source) => {\n const totalOffset = Date.now() - timeBaseline;\n mousemoveCb(positions.map((p) => {\n p.timeOffset -= totalOffset;\n return p;\n }), source);\n positions = [];\n timeBaseline = null;\n }), callbackThreshold);\n const updatePosition = callbackWrapper(throttle$1(callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n const { clientX, clientY } = legacy_isTouchEvent(evt)\n ? evt.changedTouches[0]\n : evt;\n if (!timeBaseline) {\n timeBaseline = nowTimestamp();\n }\n positions.push({\n x: clientX,\n y: clientY,\n id: mirror.getId(target),\n timeOffset: nowTimestamp() - timeBaseline,\n });\n wrappedCb(typeof DragEvent !== 'undefined' && evt instanceof DragEvent\n ? IncrementalSource.Drag\n : evt instanceof MouseEvent\n ? IncrementalSource.MouseMove\n : IncrementalSource.TouchMove);\n }), threshold, {\n trailing: false,\n }));\n const handlers = [\n on('mousemove', updatePosition, doc),\n on('touchmove', updatePosition, doc),\n on('drag', updatePosition, doc),\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initMouseInteractionObserver({ mouseInteractionCb, doc, mirror, blockClass, blockSelector, unblockSelector, sampling, }) {\n if (sampling.mouseInteraction === false) {\n return () => {\n };\n }\n const disableMap = sampling.mouseInteraction === true ||\n sampling.mouseInteraction === undefined\n ? {}\n : sampling.mouseInteraction;\n const handlers = [];\n let currentPointerType = null;\n const getHandler = (eventKey) => {\n return (event) => {\n const target = getEventTarget(event);\n if (isBlocked(target, blockClass, blockSelector, unblockSelector, true)) {\n return;\n }\n let pointerType = null;\n let thisEventKey = eventKey;\n if ('pointerType' in event) {\n switch (event.pointerType) {\n case 'mouse':\n pointerType = PointerTypes.Mouse;\n break;\n case 'touch':\n pointerType = PointerTypes.Touch;\n break;\n case 'pen':\n pointerType = PointerTypes.Pen;\n break;\n }\n if (pointerType === PointerTypes.Touch) {\n if (MouseInteractions[eventKey] === MouseInteractions.MouseDown) {\n thisEventKey = 'TouchStart';\n }\n else if (MouseInteractions[eventKey] === MouseInteractions.MouseUp) {\n thisEventKey = 'TouchEnd';\n }\n }\n else if (pointerType === PointerTypes.Pen) ;\n }\n else if (legacy_isTouchEvent(event)) {\n pointerType = PointerTypes.Touch;\n }\n if (pointerType !== null) {\n currentPointerType = pointerType;\n if ((thisEventKey.startsWith('Touch') &&\n pointerType === PointerTypes.Touch) ||\n (thisEventKey.startsWith('Mouse') &&\n pointerType === PointerTypes.Mouse)) {\n pointerType = null;\n }\n }\n else if (MouseInteractions[eventKey] === MouseInteractions.Click) {\n pointerType = currentPointerType;\n currentPointerType = null;\n }\n const e = legacy_isTouchEvent(event) ? event.changedTouches[0] : event;\n if (!e) {\n return;\n }\n const id = mirror.getId(target);\n const { clientX, clientY } = e;\n callbackWrapper(mouseInteractionCb)({\n type: MouseInteractions[thisEventKey],\n id,\n x: clientX,\n y: clientY,\n ...(pointerType !== null && { pointerType }),\n });\n };\n };\n Object.keys(MouseInteractions)\n .filter((key) => Number.isNaN(Number(key)) &&\n !key.endsWith('_Departed') &&\n disableMap[key] !== false)\n .forEach((eventKey) => {\n let eventName = toLowerCase(eventKey);\n const handler = getHandler(eventKey);\n if (window.PointerEvent) {\n switch (MouseInteractions[eventKey]) {\n case MouseInteractions.MouseDown:\n case MouseInteractions.MouseUp:\n eventName = eventName.replace('mouse', 'pointer');\n break;\n case MouseInteractions.TouchStart:\n case MouseInteractions.TouchEnd:\n return;\n }\n }\n handlers.push(on(eventName, handler, doc));\n });\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initScrollObserver({ scrollCb, doc, mirror, blockClass, blockSelector, unblockSelector, sampling, }) {\n const updatePosition = callbackWrapper(throttle$1(callbackWrapper((evt) => {\n const target = getEventTarget(evt);\n if (!target ||\n isBlocked(target, blockClass, blockSelector, unblockSelector, true)) {\n return;\n }\n const id = mirror.getId(target);\n if (target === doc && doc.defaultView) {\n const scrollLeftTop = getWindowScroll(doc.defaultView);\n scrollCb({\n id,\n x: scrollLeftTop.left,\n y: scrollLeftTop.top,\n });\n }\n else {\n scrollCb({\n id,\n x: target.scrollLeft,\n y: target.scrollTop,\n });\n }\n }), sampling.scroll || 100));\n return on('scroll', updatePosition, doc);\n}\nfunction initViewportResizeObserver({ viewportResizeCb }, { win }) {\n let lastH = -1;\n let lastW = -1;\n const updateDimension = callbackWrapper(throttle$1(callbackWrapper(() => {\n const height = getWindowHeight();\n const width = getWindowWidth();\n if (lastH !== height || lastW !== width) {\n viewportResizeCb({\n width: Number(width),\n height: Number(height),\n });\n lastH = height;\n lastW = width;\n }\n }), 200));\n return on('resize', updateDimension, win);\n}\nconst INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT'];\nconst lastInputValueMap = new WeakMap();\nfunction initInputObserver({ inputCb, doc, mirror, blockClass, blockSelector, unblockSelector, ignoreClass, ignoreSelector, maskInputOptions, maskInputFn, sampling, userTriggeredOnInput, maskTextClass, unmaskTextClass, maskTextSelector, unmaskTextSelector, }) {\n function eventHandler(event) {\n let target = getEventTarget(event);\n const userTriggered = event.isTrusted;\n const tagName = target && toUpperCase(target.tagName);\n if (tagName === 'OPTION')\n target = target.parentElement;\n if (!target ||\n !tagName ||\n INPUT_TAGS.indexOf(tagName) < 0 ||\n isBlocked(target, blockClass, blockSelector, unblockSelector, true)) {\n return;\n }\n const el = target;\n if (el.classList.contains(ignoreClass) ||\n (ignoreSelector && el.matches(ignoreSelector))) {\n return;\n }\n const type = getInputType(target);\n let text = getInputValue(el, tagName, type);\n let isChecked = false;\n const isInputMasked = shouldMaskInput({\n maskInputOptions,\n tagName,\n type,\n });\n const forceMask = needMaskingText(target, maskTextClass, maskTextSelector, unmaskTextClass, unmaskTextSelector, isInputMasked);\n if (type === 'radio' || type === 'checkbox') {\n isChecked = target.checked;\n }\n text = maskInputValue({\n isMasked: forceMask,\n element: target,\n value: text,\n maskInputFn,\n });\n cbWithDedup(target, userTriggeredOnInput\n ? { text, isChecked, userTriggered }\n : { text, isChecked });\n const name = target.name;\n if (type === 'radio' && name && isChecked) {\n doc\n .querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`)\n .forEach((el) => {\n if (el !== target) {\n const text = maskInputValue({\n isMasked: forceMask,\n element: el,\n value: getInputValue(el, tagName, type),\n maskInputFn,\n });\n cbWithDedup(el, userTriggeredOnInput\n ? { text, isChecked: !isChecked, userTriggered: false }\n : { text, isChecked: !isChecked });\n }\n });\n }\n }\n function cbWithDedup(target, v) {\n const lastInputValue = lastInputValueMap.get(target);\n if (!lastInputValue ||\n lastInputValue.text !== v.text ||\n lastInputValue.isChecked !== v.isChecked) {\n lastInputValueMap.set(target, v);\n const id = mirror.getId(target);\n callbackWrapper(inputCb)({\n ...v,\n id,\n });\n }\n }\n const events = sampling.input === 'last' ? ['change'] : ['input', 'change'];\n const handlers = events.map((eventName) => on(eventName, callbackWrapper(eventHandler), doc));\n const currentWindow = doc.defaultView;\n if (!currentWindow) {\n return () => {\n handlers.forEach((h) => h());\n };\n }\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(currentWindow.HTMLInputElement.prototype, 'value');\n const hookProperties = [\n [currentWindow.HTMLInputElement.prototype, 'value'],\n [currentWindow.HTMLInputElement.prototype, 'checked'],\n [currentWindow.HTMLSelectElement.prototype, 'value'],\n [currentWindow.HTMLTextAreaElement.prototype, 'value'],\n [currentWindow.HTMLSelectElement.prototype, 'selectedIndex'],\n [currentWindow.HTMLOptionElement.prototype, 'selected'],\n ];\n if (propertyDescriptor && propertyDescriptor.set) {\n handlers.push(...hookProperties.map((p) => hookSetter(p[0], p[1], {\n set() {\n callbackWrapper(eventHandler)({\n target: this,\n isTrusted: false,\n });\n },\n }, false, currentWindow)));\n }\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction getNestedCSSRulePositions(rule) {\n const positions = [];\n function recurse(childRule, pos) {\n if ((hasNestedCSSRule('CSSGroupingRule') &&\n childRule.parentRule instanceof CSSGroupingRule) ||\n (hasNestedCSSRule('CSSMediaRule') &&\n childRule.parentRule instanceof CSSMediaRule) ||\n (hasNestedCSSRule('CSSSupportsRule') &&\n childRule.parentRule instanceof CSSSupportsRule) ||\n (hasNestedCSSRule('CSSConditionRule') &&\n childRule.parentRule instanceof CSSConditionRule)) {\n const rules = Array.from(childRule.parentRule.cssRules);\n const index = rules.indexOf(childRule);\n pos.unshift(index);\n }\n else if (childRule.parentStyleSheet) {\n const rules = Array.from(childRule.parentStyleSheet.cssRules);\n const index = rules.indexOf(childRule);\n pos.unshift(index);\n }\n return pos;\n }\n return recurse(rule, positions);\n}\nfunction getIdAndStyleId(sheet, mirror, styleMirror) {\n let id, styleId;\n if (!sheet)\n return {};\n if (sheet.ownerNode)\n id = mirror.getId(sheet.ownerNode);\n else\n styleId = styleMirror.getId(sheet);\n return {\n styleId,\n id,\n };\n}\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror, stylesheetManager }, { win }) {\n if (!win.CSSStyleSheet || !win.CSSStyleSheet.prototype) {\n return () => {\n };\n }\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\n win.CSSStyleSheet.prototype.insertRule = new Proxy(insertRule, {\n apply: callbackWrapper((target, thisArg, argumentsList) => {\n const [rule, index] = argumentsList;\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [{ rule, index }],\n });\n }\n return target.apply(thisArg, argumentsList);\n }),\n });\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\n win.CSSStyleSheet.prototype.deleteRule = new Proxy(deleteRule, {\n apply: callbackWrapper((target, thisArg, argumentsList) => {\n const [index] = argumentsList;\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [{ index }],\n });\n }\n return target.apply(thisArg, argumentsList);\n }),\n });\n let replace;\n if (win.CSSStyleSheet.prototype.replace) {\n replace = win.CSSStyleSheet.prototype.replace;\n win.CSSStyleSheet.prototype.replace = new Proxy(replace, {\n apply: callbackWrapper((target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\n styleSheetRuleCb({\n id,\n styleId,\n replace: text,\n });\n }\n return target.apply(thisArg, argumentsList);\n }),\n });\n }\n let replaceSync;\n if (win.CSSStyleSheet.prototype.replaceSync) {\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\n win.CSSStyleSheet.prototype.replaceSync = new Proxy(replaceSync, {\n apply: callbackWrapper((target, thisArg, argumentsList) => {\n const [text] = argumentsList;\n const { id, styleId } = getIdAndStyleId(thisArg, mirror, stylesheetManager.styleMirror);\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\n styleSheetRuleCb({\n id,\n styleId,\n replaceSync: text,\n });\n }\n return target.apply(thisArg, argumentsList);\n }),\n });\n }\n const supportedNestedCSSRuleTypes = {};\n if (canMonkeyPatchNestedCSSRule('CSSGroupingRule')) {\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\n }\n else {\n if (canMonkeyPatchNestedCSSRule('CSSMediaRule')) {\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\n }\n if (canMonkeyPatchNestedCSSRule('CSSConditionRule')) {\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\n }\n if (canMonkeyPatchNestedCSSRule('CSSSupportsRule')) {\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\n }\n }\n const unmodifiedFunctions = {};\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n unmodifiedFunctions[typeKey] = {\n insertRule: type.prototype.insertRule,\n deleteRule: type.prototype.deleteRule,\n };\n type.prototype.insertRule = new Proxy(unmodifiedFunctions[typeKey].insertRule, {\n apply: callbackWrapper((target, thisArg, argumentsList) => {\n const [rule, index] = argumentsList;\n const { id, styleId } = getIdAndStyleId(thisArg.parentStyleSheet, mirror, stylesheetManager.styleMirror);\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\n styleSheetRuleCb({\n id,\n styleId,\n adds: [\n {\n rule,\n index: [\n ...getNestedCSSRulePositions(thisArg),\n index || 0,\n ],\n },\n ],\n });\n }\n return target.apply(thisArg, argumentsList);\n }),\n });\n type.prototype.deleteRule = new Proxy(unmodifiedFunctions[typeKey].deleteRule, {\n apply: callbackWrapper((target, thisArg, argumentsList) => {\n const [index] = argumentsList;\n const { id, styleId } = getIdAndStyleId(thisArg.parentStyleSheet, mirror, stylesheetManager.styleMirror);\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\n styleSheetRuleCb({\n id,\n styleId,\n removes: [\n { index: [...getNestedCSSRulePositions(thisArg), index] },\n ],\n });\n }\n return target.apply(thisArg, argumentsList);\n }),\n });\n });\n return callbackWrapper(() => {\n win.CSSStyleSheet.prototype.insertRule = insertRule;\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\n replace && (win.CSSStyleSheet.prototype.replace = replace);\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\n });\n });\n}\nfunction initAdoptedStyleSheetObserver({ mirror, stylesheetManager, }, host) {\n let hostId = null;\n if (host.nodeName === '#document')\n hostId = mirror.getId(host);\n else\n hostId = mirror.getId(host.host);\n const patchTarget = host.nodeName === '#document'\n ? _optionalChain$2([host, 'access', _4 => _4.defaultView, 'optionalAccess', _5 => _5.Document])\n : _optionalChain$2([host, 'access', _6 => _6.ownerDocument, 'optionalAccess', _7 => _7.defaultView, 'optionalAccess', _8 => _8.ShadowRoot]);\n const originalPropertyDescriptor = _optionalChain$2([patchTarget, 'optionalAccess', _9 => _9.prototype])\n ? Object.getOwnPropertyDescriptor(_optionalChain$2([patchTarget, 'optionalAccess', _10 => _10.prototype]), 'adoptedStyleSheets')\n : undefined;\n if (hostId === null ||\n hostId === -1 ||\n !patchTarget ||\n !originalPropertyDescriptor)\n return () => {\n };\n Object.defineProperty(host, 'adoptedStyleSheets', {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n get() {\n return _optionalChain$2([originalPropertyDescriptor, 'access', _11 => _11.get, 'optionalAccess', _12 => _12.call, 'call', _13 => _13(this)]);\n },\n set(sheets) {\n const result = _optionalChain$2([originalPropertyDescriptor, 'access', _14 => _14.set, 'optionalAccess', _15 => _15.call, 'call', _16 => _16(this, sheets)]);\n if (hostId !== null && hostId !== -1) {\n try {\n stylesheetManager.adoptStyleSheets(sheets, hostId);\n }\n catch (e) {\n }\n }\n return result;\n },\n });\n return callbackWrapper(() => {\n Object.defineProperty(host, 'adoptedStyleSheets', {\n configurable: originalPropertyDescriptor.configurable,\n enumerable: originalPropertyDescriptor.enumerable,\n get: originalPropertyDescriptor.get,\n set: originalPropertyDescriptor.set,\n });\n });\n}\nfunction initStyleDeclarationObserver({ styleDeclarationCb, mirror, ignoreCSSAttributes, stylesheetManager, }, { win }) {\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\n win.CSSStyleDeclaration.prototype.setProperty = new Proxy(setProperty, {\n apply: callbackWrapper((target, thisArg, argumentsList) => {\n const [property, value, priority] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return setProperty.apply(thisArg, [property, value, priority]);\n }\n const { id, styleId } = getIdAndStyleId(_optionalChain$2([thisArg, 'access', _17 => _17.parentRule, 'optionalAccess', _18 => _18.parentStyleSheet]), mirror, stylesheetManager.styleMirror);\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\n styleDeclarationCb({\n id,\n styleId,\n set: {\n property,\n value,\n priority,\n },\n index: getNestedCSSRulePositions(thisArg.parentRule),\n });\n }\n return target.apply(thisArg, argumentsList);\n }),\n });\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = new Proxy(removeProperty, {\n apply: callbackWrapper((target, thisArg, argumentsList) => {\n const [property] = argumentsList;\n if (ignoreCSSAttributes.has(property)) {\n return removeProperty.apply(thisArg, [property]);\n }\n const { id, styleId } = getIdAndStyleId(_optionalChain$2([thisArg, 'access', _19 => _19.parentRule, 'optionalAccess', _20 => _20.parentStyleSheet]), mirror, stylesheetManager.styleMirror);\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\n styleDeclarationCb({\n id,\n styleId,\n remove: {\n property,\n },\n index: getNestedCSSRulePositions(thisArg.parentRule),\n });\n }\n return target.apply(thisArg, argumentsList);\n }),\n });\n return callbackWrapper(() => {\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\n });\n}\nfunction initMediaInteractionObserver({ mediaInteractionCb, blockClass, blockSelector, unblockSelector, mirror, sampling, doc, }) {\n const handler = callbackWrapper((type) => throttle$1(callbackWrapper((event) => {\n const target = getEventTarget(event);\n if (!target ||\n isBlocked(target, blockClass, blockSelector, unblockSelector, true)) {\n return;\n }\n const { currentTime, volume, muted, playbackRate } = target;\n mediaInteractionCb({\n type,\n id: mirror.getId(target),\n currentTime,\n volume,\n muted,\n playbackRate,\n });\n }), sampling.media || 500));\n const handlers = [\n on('play', handler(0), doc),\n on('pause', handler(1), doc),\n on('seeked', handler(2), doc),\n on('volumechange', handler(3), doc),\n on('ratechange', handler(4), doc),\n ];\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initFontObserver({ fontCb, doc }) {\n const win = doc.defaultView;\n if (!win) {\n return () => {\n };\n }\n const handlers = [];\n const fontMap = new WeakMap();\n const originalFontFace = win.FontFace;\n win.FontFace = function FontFace(family, source, descriptors) {\n const fontFace = new originalFontFace(family, source, descriptors);\n fontMap.set(fontFace, {\n family,\n buffer: typeof source !== 'string',\n descriptors,\n fontSource: typeof source === 'string'\n ? source\n : JSON.stringify(Array.from(new Uint8Array(source))),\n });\n return fontFace;\n };\n const restoreHandler = patch(doc.fonts, 'add', function (original) {\n return function (fontFace) {\n setTimeout$1(callbackWrapper(() => {\n const p = fontMap.get(fontFace);\n if (p) {\n fontCb(p);\n fontMap.delete(fontFace);\n }\n }), 0);\n return original.apply(this, [fontFace]);\n };\n });\n handlers.push(() => {\n win.FontFace = originalFontFace;\n });\n handlers.push(restoreHandler);\n return callbackWrapper(() => {\n handlers.forEach((h) => h());\n });\n}\nfunction initSelectionObserver(param) {\n const { doc, mirror, blockClass, blockSelector, unblockSelector, selectionCb, } = param;\n let collapsed = true;\n const updateSelection = callbackWrapper(() => {\n const selection = doc.getSelection();\n if (!selection || (collapsed && _optionalChain$2([selection, 'optionalAccess', _21 => _21.isCollapsed])))\n return;\n collapsed = selection.isCollapsed || false;\n const ranges = [];\n const count = selection.rangeCount || 0;\n for (let i = 0; i < count; i++) {\n const range = selection.getRangeAt(i);\n const { startContainer, startOffset, endContainer, endOffset } = range;\n const blocked = isBlocked(startContainer, blockClass, blockSelector, unblockSelector, true) ||\n isBlocked(endContainer, blockClass, blockSelector, unblockSelector, true);\n if (blocked)\n continue;\n ranges.push({\n start: mirror.getId(startContainer),\n startOffset,\n end: mirror.getId(endContainer),\n endOffset,\n });\n }\n selectionCb({ ranges });\n });\n updateSelection();\n return on('selectionchange', updateSelection);\n}\nfunction initCustomElementObserver({ doc, customElementCb, }) {\n const win = doc.defaultView;\n if (!win || !win.customElements)\n return () => { };\n const restoreHandler = patch(win.customElements, 'define', function (original) {\n return function (name, constructor, options) {\n try {\n customElementCb({\n define: {\n name,\n },\n });\n }\n catch (e) {\n }\n return original.apply(this, [name, constructor, options]);\n };\n });\n return restoreHandler;\n}\nfunction initObservers(o, _hooks = {}) {\n const currentWindow = o.doc.defaultView;\n if (!currentWindow) {\n return () => {\n };\n }\n const mutationObserver = initMutationObserver(o, o.doc);\n const mousemoveHandler = initMoveObserver(o);\n const mouseInteractionHandler = initMouseInteractionObserver(o);\n const scrollHandler = initScrollObserver(o);\n const viewportResizeHandler = initViewportResizeObserver(o, {\n win: currentWindow,\n });\n const inputHandler = initInputObserver(o);\n const mediaInteractionHandler = initMediaInteractionObserver(o);\n const styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\n const adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o, o.doc);\n const styleDeclarationObserver = initStyleDeclarationObserver(o, {\n win: currentWindow,\n });\n const fontObserver = o.collectFonts\n ? initFontObserver(o)\n : () => {\n };\n const selectionObserver = initSelectionObserver(o);\n const customElementObserver = initCustomElementObserver(o);\n const pluginHandlers = [];\n for (const plugin of o.plugins) {\n pluginHandlers.push(plugin.observer(plugin.callback, currentWindow, plugin.options));\n }\n return callbackWrapper(() => {\n mutationBuffers.forEach((b) => b.reset());\n mutationObserver.disconnect();\n mousemoveHandler();\n mouseInteractionHandler();\n scrollHandler();\n viewportResizeHandler();\n inputHandler();\n mediaInteractionHandler();\n styleSheetObserver();\n adoptedStyleSheetObserver();\n styleDeclarationObserver();\n fontObserver();\n selectionObserver();\n customElementObserver();\n pluginHandlers.forEach((h) => h());\n });\n}\nfunction hasNestedCSSRule(prop) {\n return typeof window[prop] !== 'undefined';\n}\nfunction canMonkeyPatchNestedCSSRule(prop) {\n return Boolean(typeof window[prop] !== 'undefined' &&\n window[prop].prototype &&\n 'insertRule' in window[prop].prototype &&\n 'deleteRule' in window[prop].prototype);\n}\n\nclass CrossOriginIframeMirror {\n constructor(generateIdFn) {\n this.generateIdFn = generateIdFn;\n this.iframeIdToRemoteIdMap = new WeakMap();\n this.iframeRemoteIdToIdMap = new WeakMap();\n }\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\n let id = idToRemoteIdMap.get(remoteId);\n if (!id) {\n id = this.generateIdFn();\n idToRemoteIdMap.set(remoteId, id);\n remoteIdToIdMap.set(id, remoteId);\n }\n return id;\n }\n getIds(iframe, remoteId) {\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return remoteId.map((id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap));\n }\n getRemoteId(iframe, id, map) {\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\n if (typeof id !== 'number')\n return id;\n const remoteId = remoteIdToIdMap.get(id);\n if (!remoteId)\n return -1;\n return remoteId;\n }\n getRemoteIds(iframe, ids) {\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\n }\n reset(iframe) {\n if (!iframe) {\n this.iframeIdToRemoteIdMap = new WeakMap();\n this.iframeRemoteIdToIdMap = new WeakMap();\n return;\n }\n this.iframeIdToRemoteIdMap.delete(iframe);\n this.iframeRemoteIdToIdMap.delete(iframe);\n }\n getIdToRemoteIdMap(iframe) {\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\n if (!idToRemoteIdMap) {\n idToRemoteIdMap = new Map();\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\n }\n return idToRemoteIdMap;\n }\n getRemoteIdToIdMap(iframe) {\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\n if (!remoteIdToIdMap) {\n remoteIdToIdMap = new Map();\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\n }\n return remoteIdToIdMap;\n }\n}\n\nfunction _optionalChain$1(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }\nclass IframeManagerNoop {\n constructor() {\n this.crossOriginIframeMirror = new CrossOriginIframeMirror(genId);\n this.crossOriginIframeRootIdMap = new WeakMap();\n }\n addIframe() {\n }\n addLoadListener() {\n }\n attachIframe() {\n }\n}\nclass IframeManager {\n constructor(options) {\n this.iframes = new WeakMap();\n this.crossOriginIframeMap = new WeakMap();\n this.crossOriginIframeMirror = new CrossOriginIframeMirror(genId);\n this.crossOriginIframeRootIdMap = new WeakMap();\n this.mutationCb = options.mutationCb;\n this.wrappedEmit = options.wrappedEmit;\n this.stylesheetManager = options.stylesheetManager;\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror));\n this.mirror = options.mirror;\n if (this.recordCrossOriginIframes) {\n window.addEventListener('message', this.handleMessage.bind(this));\n }\n }\n addIframe(iframeEl) {\n this.iframes.set(iframeEl, true);\n if (iframeEl.contentWindow)\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\n }\n addLoadListener(cb) {\n this.loadListener = cb;\n }\n attachIframe(iframeEl, childSn) {\n this.mutationCb({\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: childSn,\n },\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true,\n });\n _optionalChain$1([this, 'access', _ => _.loadListener, 'optionalCall', _2 => _2(iframeEl)]);\n if (iframeEl.contentDocument &&\n iframeEl.contentDocument.adoptedStyleSheets &&\n iframeEl.contentDocument.adoptedStyleSheets.length > 0)\n this.stylesheetManager.adoptStyleSheets(iframeEl.contentDocument.adoptedStyleSheets, this.mirror.getId(iframeEl.contentDocument));\n }\n handleMessage(message) {\n const crossOriginMessageEvent = message;\n if (crossOriginMessageEvent.data.type !== 'rrweb' ||\n crossOriginMessageEvent.origin !== crossOriginMessageEvent.data.origin)\n return;\n const iframeSourceWindow = message.source;\n if (!iframeSourceWindow)\n return;\n const iframeEl = this.crossOriginIframeMap.get(message.source);\n if (!iframeEl)\n return;\n const transformedEvent = this.transformCrossOriginEvent(iframeEl, crossOriginMessageEvent.data.event);\n if (transformedEvent)\n this.wrappedEmit(transformedEvent, crossOriginMessageEvent.data.isCheckout);\n }\n transformCrossOriginEvent(iframeEl, e) {\n switch (e.type) {\n case EventType.FullSnapshot: {\n this.crossOriginIframeMirror.reset(iframeEl);\n this.crossOriginIframeStyleMirror.reset(iframeEl);\n this.replaceIdOnNode(e.data.node, iframeEl);\n const rootId = e.data.node.id;\n this.crossOriginIframeRootIdMap.set(iframeEl, rootId);\n this.patchRootIdOnNode(e.data.node, rootId);\n return {\n timestamp: e.timestamp,\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n adds: [\n {\n parentId: this.mirror.getId(iframeEl),\n nextId: null,\n node: e.data.node,\n },\n ],\n removes: [],\n texts: [],\n attributes: [],\n isAttachIframe: true,\n },\n };\n }\n case EventType.Meta:\n case EventType.Load:\n case EventType.DomContentLoaded: {\n return false;\n }\n case EventType.Plugin: {\n return e;\n }\n case EventType.Custom: {\n this.replaceIds(e.data.payload, iframeEl, ['id', 'parentId', 'previousId', 'nextId']);\n return e;\n }\n case EventType.IncrementalSnapshot: {\n switch (e.data.source) {\n case IncrementalSource.Mutation: {\n e.data.adds.forEach((n) => {\n this.replaceIds(n, iframeEl, [\n 'parentId',\n 'nextId',\n 'previousId',\n ]);\n this.replaceIdOnNode(n.node, iframeEl);\n const rootId = this.crossOriginIframeRootIdMap.get(iframeEl);\n rootId && this.patchRootIdOnNode(n.node, rootId);\n });\n e.data.removes.forEach((n) => {\n this.replaceIds(n, iframeEl, ['parentId', 'id']);\n });\n e.data.attributes.forEach((n) => {\n this.replaceIds(n, iframeEl, ['id']);\n });\n e.data.texts.forEach((n) => {\n this.replaceIds(n, iframeEl, ['id']);\n });\n return e;\n }\n case IncrementalSource.Drag:\n case IncrementalSource.TouchMove:\n case IncrementalSource.MouseMove: {\n e.data.positions.forEach((p) => {\n this.replaceIds(p, iframeEl, ['id']);\n });\n return e;\n }\n case IncrementalSource.ViewportResize: {\n return false;\n }\n case IncrementalSource.MediaInteraction:\n case IncrementalSource.MouseInteraction:\n case IncrementalSource.Scroll:\n case IncrementalSource.CanvasMutation:\n case IncrementalSource.Input: {\n this.replaceIds(e.data, iframeEl, ['id']);\n return e;\n }\n case IncrementalSource.StyleSheetRule:\n case IncrementalSource.StyleDeclaration: {\n this.replaceIds(e.data, iframeEl, ['id']);\n this.replaceStyleIds(e.data, iframeEl, ['styleId']);\n return e;\n }\n case IncrementalSource.Font: {\n return e;\n }\n case IncrementalSource.Selection: {\n e.data.ranges.forEach((range) => {\n this.replaceIds(range, iframeEl, ['start', 'end']);\n });\n return e;\n }\n case IncrementalSource.AdoptedStyleSheet: {\n this.replaceIds(e.data, iframeEl, ['id']);\n this.replaceStyleIds(e.data, iframeEl, ['styleIds']);\n _optionalChain$1([e, 'access', _3 => _3.data, 'access', _4 => _4.styles, 'optionalAccess', _5 => _5.forEach, 'call', _6 => _6((style) => {\n this.replaceStyleIds(style, iframeEl, ['styleId']);\n })]);\n return e;\n }\n }\n }\n }\n return false;\n }\n replace(iframeMirror, obj, iframeEl, keys) {\n for (const key of keys) {\n if (!Array.isArray(obj[key]) && typeof obj[key] !== 'number')\n continue;\n if (Array.isArray(obj[key])) {\n obj[key] = iframeMirror.getIds(iframeEl, obj[key]);\n }\n else {\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\n }\n }\n return obj;\n }\n replaceIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\n }\n replaceStyleIds(obj, iframeEl, keys) {\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\n }\n replaceIdOnNode(node, iframeEl) {\n this.replaceIds(node, iframeEl, ['id', 'rootId']);\n if ('childNodes' in node) {\n node.childNodes.forEach((child) => {\n this.replaceIdOnNode(child, iframeEl);\n });\n }\n }\n patchRootIdOnNode(node, rootId) {\n if (node.type !== NodeType$1.Document && !node.rootId)\n node.rootId = rootId;\n if ('childNodes' in node) {\n node.childNodes.forEach((child) => {\n this.patchRootIdOnNode(child, rootId);\n });\n }\n }\n}\n\nclass ShadowDomManagerNoop {\n init() {\n }\n addShadowRoot() {\n }\n observeAttachShadow() {\n }\n reset() {\n }\n}\nclass ShadowDomManager {\n constructor(options) {\n this.shadowDoms = new WeakSet();\n this.restoreHandlers = [];\n this.mutationCb = options.mutationCb;\n this.scrollCb = options.scrollCb;\n this.bypassOptions = options.bypassOptions;\n this.mirror = options.mirror;\n this.init();\n }\n init() {\n this.reset();\n this.patchAttachShadow(Element, document);\n }\n addShadowRoot(shadowRoot, doc) {\n if (!isNativeShadowDom(shadowRoot))\n return;\n if (this.shadowDoms.has(shadowRoot))\n return;\n this.shadowDoms.add(shadowRoot);\n const observer = initMutationObserver({\n ...this.bypassOptions,\n doc,\n mutationCb: this.mutationCb,\n mirror: this.mirror,\n shadowDomManager: this,\n }, shadowRoot);\n this.restoreHandlers.push(() => observer.disconnect());\n this.restoreHandlers.push(initScrollObserver({\n ...this.bypassOptions,\n scrollCb: this.scrollCb,\n doc: shadowRoot,\n mirror: this.mirror,\n }));\n setTimeout$1(() => {\n if (shadowRoot.adoptedStyleSheets &&\n shadowRoot.adoptedStyleSheets.length > 0)\n this.bypassOptions.stylesheetManager.adoptStyleSheets(shadowRoot.adoptedStyleSheets, this.mirror.getId(shadowRoot.host));\n this.restoreHandlers.push(initAdoptedStyleSheetObserver({\n mirror: this.mirror,\n stylesheetManager: this.bypassOptions.stylesheetManager,\n }, shadowRoot));\n }, 0);\n }\n observeAttachShadow(iframeElement) {\n if (!iframeElement.contentWindow || !iframeElement.contentDocument)\n return;\n this.patchAttachShadow(iframeElement.contentWindow.Element, iframeElement.contentDocument);\n }\n patchAttachShadow(element, doc) {\n const manager = this;\n this.restoreHandlers.push(patch(element.prototype, 'attachShadow', function (original) {\n return function (option) {\n const shadowRoot = original.call(this, option);\n if (this.shadowRoot && inDom(this))\n manager.addShadowRoot(this.shadowRoot, doc);\n return shadowRoot;\n };\n }));\n }\n reset() {\n this.restoreHandlers.forEach((handler) => {\n try {\n handler();\n }\n catch (e) {\n }\n });\n this.restoreHandlers = [];\n this.shadowDoms = new WeakSet();\n }\n}\n\nclass CanvasManagerNoop {\n reset() {\n }\n freeze() {\n }\n unfreeze() {\n }\n lock() {\n }\n unlock() {\n }\n snapshot() {\n }\n}\n\nclass StylesheetManager {\n constructor(options) {\n this.trackedLinkElements = new WeakSet();\n this.styleMirror = new StyleSheetMirror();\n this.mutationCb = options.mutationCb;\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\n }\n attachLinkElement(linkEl, childSn) {\n if ('_cssText' in childSn.attributes)\n this.mutationCb({\n adds: [],\n removes: [],\n texts: [],\n attributes: [\n {\n id: childSn.id,\n attributes: childSn\n .attributes,\n },\n ],\n });\n this.trackLinkElement(linkEl);\n }\n trackLinkElement(linkEl) {\n if (this.trackedLinkElements.has(linkEl))\n return;\n this.trackedLinkElements.add(linkEl);\n this.trackStylesheetInLinkElement(linkEl);\n }\n adoptStyleSheets(sheets, hostId) {\n if (sheets.length === 0)\n return;\n const adoptedStyleSheetData = {\n id: hostId,\n styleIds: [],\n };\n const styles = [];\n for (const sheet of sheets) {\n let styleId;\n if (!this.styleMirror.has(sheet)) {\n styleId = this.styleMirror.add(sheet);\n styles.push({\n styleId,\n rules: Array.from(sheet.rules || CSSRule, (r, index) => ({\n rule: stringifyRule(r),\n index,\n })),\n });\n }\n else\n styleId = this.styleMirror.getId(sheet);\n adoptedStyleSheetData.styleIds.push(styleId);\n }\n if (styles.length > 0)\n adoptedStyleSheetData.styles = styles;\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\n }\n reset() {\n this.styleMirror.reset();\n this.trackedLinkElements = new WeakSet();\n }\n trackStylesheetInLinkElement(linkEl) {\n }\n}\n\nclass ProcessedNodeManager {\n constructor() {\n this.nodeMap = new WeakMap();\n this.loop = true;\n this.periodicallyClear();\n }\n periodicallyClear() {\n onRequestAnimationFrame(() => {\n this.clear();\n if (this.loop)\n this.periodicallyClear();\n });\n }\n inOtherBuffer(node, thisBuffer) {\n const buffers = this.nodeMap.get(node);\n return (buffers && Array.from(buffers).some((buffer) => buffer !== thisBuffer));\n }\n add(node, buffer) {\n this.nodeMap.set(node, (this.nodeMap.get(node) || new Set()).add(buffer));\n }\n clear() {\n this.nodeMap = new WeakMap();\n }\n destroy() {\n this.loop = false;\n }\n}\n\nlet wrappedEmit;\nlet _takeFullSnapshot;\nconst mirror = createMirror();\nfunction record(options = {}) {\n const { emit, checkoutEveryNms, checkoutEveryNth, blockClass = 'rr-block', blockSelector = null, unblockSelector = null, ignoreClass = 'rr-ignore', ignoreSelector = null, maskAllText = false, maskTextClass = 'rr-mask', unmaskTextClass = null, maskTextSelector = null, unmaskTextSelector = null, inlineStylesheet = true, maskAllInputs, maskInputOptions: _maskInputOptions, slimDOMOptions: _slimDOMOptions, maskAttributeFn, maskInputFn, maskTextFn, maxCanvasSize = null, packFn, sampling = {}, dataURLOptions = {}, mousemoveWait, recordCanvas = false, recordCrossOriginIframes = false, recordAfter = options.recordAfter === 'DOMContentLoaded'\n ? options.recordAfter\n : 'load', userTriggeredOnInput = false, collectFonts = false, inlineImages = false, plugins, keepIframeSrcFn = () => false, ignoreCSSAttributes = new Set([]), errorHandler, onMutation, getCanvasManager, } = options;\n registerErrorHandler(errorHandler);\n const inEmittingFrame = recordCrossOriginIframes\n ? window.parent === window\n : true;\n let passEmitsToParent = false;\n if (!inEmittingFrame) {\n try {\n if (window.parent.document) {\n passEmitsToParent = false;\n }\n }\n catch (e) {\n passEmitsToParent = true;\n }\n }\n if (inEmittingFrame && !emit) {\n throw new Error('emit function is required');\n }\n if (mousemoveWait !== undefined && sampling.mousemove === undefined) {\n sampling.mousemove = mousemoveWait;\n }\n mirror.reset();\n const maskInputOptions = maskAllInputs === true\n ? {\n color: true,\n date: true,\n 'datetime-local': true,\n email: true,\n month: true,\n number: true,\n range: true,\n search: true,\n tel: true,\n text: true,\n time: true,\n url: true,\n week: true,\n textarea: true,\n select: true,\n radio: true,\n checkbox: true,\n }\n : _maskInputOptions !== undefined\n ? _maskInputOptions\n : {};\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === 'all'\n ? {\n script: true,\n comment: true,\n headFavicon: true,\n headWhitespace: true,\n headMetaSocial: true,\n headMetaRobots: true,\n headMetaHttpEquiv: true,\n headMetaVerification: true,\n headMetaAuthorship: _slimDOMOptions === 'all',\n headMetaDescKeywords: _slimDOMOptions === 'all',\n }\n : _slimDOMOptions\n ? _slimDOMOptions\n : {};\n polyfill();\n let lastFullSnapshotEvent;\n let incrementalSnapshotCount = 0;\n const eventProcessor = (e) => {\n for (const plugin of plugins || []) {\n if (plugin.eventProcessor) {\n e = plugin.eventProcessor(e);\n }\n }\n if (packFn &&\n !passEmitsToParent) {\n e = packFn(e);\n }\n return e;\n };\n wrappedEmit = (r, isCheckout) => {\n const e = r;\n e.timestamp = nowTimestamp();\n if (_optionalChain([mutationBuffers, 'access', _ => _[0], 'optionalAccess', _2 => _2.isFrozen, 'call', _3 => _3()]) &&\n e.type !== EventType.FullSnapshot &&\n !(e.type === EventType.IncrementalSnapshot &&\n e.data.source === IncrementalSource.Mutation)) {\n mutationBuffers.forEach((buf) => buf.unfreeze());\n }\n if (inEmittingFrame) {\n _optionalChain([emit, 'optionalCall', _4 => _4(eventProcessor(e), isCheckout)]);\n }\n else if (passEmitsToParent) {\n const message = {\n type: 'rrweb',\n event: eventProcessor(e),\n origin: window.location.origin,\n isCheckout,\n };\n window.parent.postMessage(message, '*');\n }\n if (e.type === EventType.FullSnapshot) {\n lastFullSnapshotEvent = e;\n incrementalSnapshotCount = 0;\n }\n else if (e.type === EventType.IncrementalSnapshot) {\n if (e.data.source === IncrementalSource.Mutation &&\n e.data.isAttachIframe) {\n return;\n }\n incrementalSnapshotCount++;\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\n const exceedTime = checkoutEveryNms &&\n lastFullSnapshotEvent &&\n e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\n if (exceedCount || exceedTime) {\n takeFullSnapshot(true);\n }\n }\n };\n const wrappedMutationEmit = (m) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Mutation,\n ...m,\n },\n });\n };\n const wrappedScrollEmit = (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Scroll,\n ...p,\n },\n });\n const wrappedCanvasMutationEmit = (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CanvasMutation,\n ...p,\n },\n });\n const wrappedAdoptedStyleSheetEmit = (a) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.AdoptedStyleSheet,\n ...a,\n },\n });\n const stylesheetManager = new StylesheetManager({\n mutationCb: wrappedMutationEmit,\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit,\n });\n const iframeManager = typeof __RRWEB_EXCLUDE_IFRAME__ === 'boolean' && __RRWEB_EXCLUDE_IFRAME__\n ? new IframeManagerNoop()\n : new IframeManager({\n mirror,\n mutationCb: wrappedMutationEmit,\n stylesheetManager: stylesheetManager,\n recordCrossOriginIframes,\n wrappedEmit,\n });\n for (const plugin of plugins || []) {\n if (plugin.getMirror)\n plugin.getMirror({\n nodeMirror: mirror,\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror,\n });\n }\n const processedNodeManager = new ProcessedNodeManager();\n const canvasManager = _getCanvasManager(getCanvasManager, {\n mirror,\n win: window,\n mutationCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CanvasMutation,\n ...p,\n },\n }),\n recordCanvas,\n blockClass,\n blockSelector,\n unblockSelector,\n maxCanvasSize,\n sampling: sampling['canvas'],\n dataURLOptions,\n errorHandler,\n });\n const shadowDomManager = typeof __RRWEB_EXCLUDE_SHADOW_DOM__ === 'boolean' &&\n __RRWEB_EXCLUDE_SHADOW_DOM__\n ? new ShadowDomManagerNoop()\n : new ShadowDomManager({\n mutationCb: wrappedMutationEmit,\n scrollCb: wrappedScrollEmit,\n bypassOptions: {\n onMutation,\n blockClass,\n blockSelector,\n unblockSelector,\n maskAllText,\n maskTextClass,\n unmaskTextClass,\n maskTextSelector,\n unmaskTextSelector,\n inlineStylesheet,\n maskInputOptions,\n dataURLOptions,\n maskAttributeFn,\n maskTextFn,\n maskInputFn,\n recordCanvas,\n inlineImages,\n sampling,\n slimDOMOptions,\n iframeManager,\n stylesheetManager,\n canvasManager,\n keepIframeSrcFn,\n processedNodeManager,\n },\n mirror,\n });\n const takeFullSnapshot = (isCheckout = false) => {\n wrappedEmit({\n type: EventType.Meta,\n data: {\n href: window.location.href,\n width: getWindowWidth(),\n height: getWindowHeight(),\n },\n }, isCheckout);\n stylesheetManager.reset();\n shadowDomManager.init();\n mutationBuffers.forEach((buf) => buf.lock());\n const node = snapshot(document, {\n mirror,\n blockClass,\n blockSelector,\n unblockSelector,\n maskAllText,\n maskTextClass,\n unmaskTextClass,\n maskTextSelector,\n unmaskTextSelector,\n inlineStylesheet,\n maskAllInputs: maskInputOptions,\n maskAttributeFn,\n maskInputFn,\n maskTextFn,\n slimDOM: slimDOMOptions,\n dataURLOptions,\n recordCanvas,\n inlineImages,\n onSerialize: (n) => {\n if (isSerializedIframe(n, mirror)) {\n iframeManager.addIframe(n);\n }\n if (isSerializedStylesheet(n, mirror)) {\n stylesheetManager.trackLinkElement(n);\n }\n if (hasShadowRoot(n)) {\n shadowDomManager.addShadowRoot(n.shadowRoot, document);\n }\n },\n onIframeLoad: (iframe, childSn) => {\n iframeManager.attachIframe(iframe, childSn);\n shadowDomManager.observeAttachShadow(iframe);\n },\n onStylesheetLoad: (linkEl, childSn) => {\n stylesheetManager.attachLinkElement(linkEl, childSn);\n },\n keepIframeSrcFn,\n });\n if (!node) {\n return console.warn('Failed to snapshot the document');\n }\n wrappedEmit({\n type: EventType.FullSnapshot,\n data: {\n node,\n initialOffset: getWindowScroll(window),\n },\n });\n mutationBuffers.forEach((buf) => buf.unlock());\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\n stylesheetManager.adoptStyleSheets(document.adoptedStyleSheets, mirror.getId(document));\n };\n _takeFullSnapshot = takeFullSnapshot;\n try {\n const handlers = [];\n const observe = (doc) => {\n return callbackWrapper(initObservers)({\n onMutation,\n mutationCb: wrappedMutationEmit,\n mousemoveCb: (positions, source) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source,\n positions,\n },\n }),\n mouseInteractionCb: (d) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MouseInteraction,\n ...d,\n },\n }),\n scrollCb: wrappedScrollEmit,\n viewportResizeCb: (d) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.ViewportResize,\n ...d,\n },\n }),\n inputCb: (v) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Input,\n ...v,\n },\n }),\n mediaInteractionCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.MediaInteraction,\n ...p,\n },\n }),\n styleSheetRuleCb: (r) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleSheetRule,\n ...r,\n },\n }),\n styleDeclarationCb: (r) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.StyleDeclaration,\n ...r,\n },\n }),\n canvasMutationCb: wrappedCanvasMutationEmit,\n fontCb: (p) => wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Font,\n ...p,\n },\n }),\n selectionCb: (p) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.Selection,\n ...p,\n },\n });\n },\n customElementCb: (c) => {\n wrappedEmit({\n type: EventType.IncrementalSnapshot,\n data: {\n source: IncrementalSource.CustomElement,\n ...c,\n },\n });\n },\n blockClass,\n ignoreClass,\n ignoreSelector,\n maskAllText,\n maskTextClass,\n unmaskTextClass,\n maskTextSelector,\n unmaskTextSelector,\n maskInputOptions,\n inlineStylesheet,\n sampling,\n recordCanvas,\n inlineImages,\n userTriggeredOnInput,\n collectFonts,\n doc,\n maskAttributeFn,\n maskInputFn,\n maskTextFn,\n keepIframeSrcFn,\n blockSelector,\n unblockSelector,\n slimDOMOptions,\n dataURLOptions,\n mirror,\n iframeManager,\n stylesheetManager,\n shadowDomManager,\n processedNodeManager,\n canvasManager,\n ignoreCSSAttributes,\n plugins: _optionalChain([plugins\n, 'optionalAccess', _5 => _5.filter, 'call', _6 => _6((p) => p.observer)\n, 'optionalAccess', _7 => _7.map, 'call', _8 => _8((p) => ({\n observer: p.observer,\n options: p.options,\n callback: (payload) => wrappedEmit({\n type: EventType.Plugin,\n data: {\n plugin: p.name,\n payload,\n },\n }),\n }))]) || [],\n }, {});\n };\n iframeManager.addLoadListener((iframeEl) => {\n try {\n handlers.push(observe(iframeEl.contentDocument));\n }\n catch (error) {\n console.warn(error);\n }\n });\n const init = () => {\n takeFullSnapshot();\n handlers.push(observe(document));\n };\n if (document.readyState === 'interactive' ||\n document.readyState === 'complete') {\n init();\n }\n else {\n handlers.push(on('DOMContentLoaded', () => {\n wrappedEmit({\n type: EventType.DomContentLoaded,\n data: {},\n });\n if (recordAfter === 'DOMContentLoaded')\n init();\n }));\n handlers.push(on('load', () => {\n wrappedEmit({\n type: EventType.Load,\n data: {},\n });\n if (recordAfter === 'load')\n init();\n }, window));\n }\n return () => {\n handlers.forEach((h) => h());\n processedNodeManager.destroy();\n _takeFullSnapshot = undefined;\n unregisterErrorHandler();\n };\n }\n catch (error) {\n console.warn(error);\n }\n}\nfunction takeFullSnapshot(isCheckout) {\n if (!_takeFullSnapshot) {\n throw new Error('please take full snapshot after start recording');\n }\n _takeFullSnapshot(isCheckout);\n}\nrecord.mirror = mirror;\nrecord.takeFullSnapshot = takeFullSnapshot;\nfunction _getCanvasManager(getCanvasManagerFn, options) {\n try {\n return getCanvasManagerFn\n ? getCanvasManagerFn(options)\n : new CanvasManagerNoop();\n }\n catch (e2) {\n console.warn('Unable to initialize CanvasManager');\n return new CanvasManagerNoop();\n }\n}\n\nconst ReplayEventTypeIncrementalSnapshot = 3;\nconst ReplayEventTypeCustom = 5;\n\n/**\n * Converts a timestamp to ms, if it was in s, or keeps it as ms.\n */\nfunction timestampToMs(timestamp) {\n const isMs = timestamp > 9999999999;\n return isMs ? timestamp : timestamp * 1000;\n}\n\n/**\n * Converts a timestamp to s, if it was in ms, or keeps it as s.\n */\nfunction timestampToS(timestamp) {\n const isMs = timestamp > 9999999999;\n return isMs ? timestamp / 1000 : timestamp;\n}\n\n/**\n * Add a breadcrumb event to replay.\n */\nfunction addBreadcrumbEvent(replay, breadcrumb) {\n if (breadcrumb.category === 'sentry.transaction') {\n return;\n }\n\n if (['ui.click', 'ui.input'].includes(breadcrumb.category )) {\n replay.triggerUserActivity();\n } else {\n replay.checkAndHandleExpiredSession();\n }\n\n replay.addUpdate(() => {\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n replay.throttledAddEvent({\n type: EventType.Custom,\n // TODO: We were converting from ms to seconds for breadcrumbs, spans,\n // but maybe we should just keep them as milliseconds\n timestamp: (breadcrumb.timestamp || 0) * 1000,\n data: {\n tag: 'breadcrumb',\n // normalize to max. 10 depth and 1_000 properties per object\n payload: normalize(breadcrumb, 10, 1000),\n },\n });\n\n // Do not flush after console log messages\n return breadcrumb.category === 'console';\n });\n}\n\nconst INTERACTIVE_SELECTOR = 'button,a';\n\n/** Get the closest interactive parent element, or else return the given element. */\nfunction getClosestInteractive(element) {\n const closestInteractive = element.closest(INTERACTIVE_SELECTOR);\n return closestInteractive || element;\n}\n\n/**\n * For clicks, we check if the target is inside of a button or link\n * If so, we use this as the target instead\n * This is useful because if you click on the image in ,\n * The target will be the image, not the button, which we don't want here\n */\nfunction getClickTargetNode(event) {\n const target = getTargetNode(event);\n\n if (!target || !(target instanceof Element)) {\n return target;\n }\n\n return getClosestInteractive(target);\n}\n\n/** Get the event target node. */\nfunction getTargetNode(event) {\n if (isEventWithTarget(event)) {\n return event.target ;\n }\n\n return event;\n}\n\nfunction isEventWithTarget(event) {\n return typeof event === 'object' && !!event && 'target' in event;\n}\n\nlet handlers;\n\n/**\n * Register a handler to be called when `window.open()` is called.\n * Returns a cleanup function.\n */\nfunction onWindowOpen(cb) {\n // Ensure to only register this once\n if (!handlers) {\n handlers = [];\n monkeyPatchWindowOpen();\n }\n\n handlers.push(cb);\n\n return () => {\n const pos = handlers ? handlers.indexOf(cb) : -1;\n if (pos > -1) {\n (handlers ).splice(pos, 1);\n }\n };\n}\n\nfunction monkeyPatchWindowOpen() {\n fill(WINDOW, 'open', function (originalWindowOpen) {\n return function (...args) {\n if (handlers) {\n try {\n handlers.forEach(handler => handler());\n } catch (e) {\n // ignore errors in here\n }\n }\n\n return originalWindowOpen.apply(WINDOW, args);\n };\n });\n}\n\n/** Handle a click. */\nfunction handleClick(clickDetector, clickBreadcrumb, node) {\n clickDetector.handleClick(clickBreadcrumb, node);\n}\n\n/** A click detector class that can be used to detect slow or rage clicks on elements. */\nclass ClickDetector {\n // protected for testing\n\n constructor(\n replay,\n slowClickConfig,\n // Just for easier testing\n _addBreadcrumbEvent = addBreadcrumbEvent,\n ) {\n this._lastMutation = 0;\n this._lastScroll = 0;\n this._clicks = [];\n\n // We want everything in s, but options are in ms\n this._timeout = slowClickConfig.timeout / 1000;\n this._threshold = slowClickConfig.threshold / 1000;\n this._scollTimeout = slowClickConfig.scrollTimeout / 1000;\n this._replay = replay;\n this._ignoreSelector = slowClickConfig.ignoreSelector;\n this._addBreadcrumbEvent = _addBreadcrumbEvent;\n }\n\n /** Register click detection handlers on mutation or scroll. */\n addListeners() {\n const cleanupWindowOpen = onWindowOpen(() => {\n // Treat window.open as mutation\n this._lastMutation = nowInSeconds();\n });\n\n this._teardown = () => {\n cleanupWindowOpen();\n\n this._clicks = [];\n this._lastMutation = 0;\n this._lastScroll = 0;\n };\n }\n\n /** Clean up listeners. */\n removeListeners() {\n if (this._teardown) {\n this._teardown();\n }\n\n if (this._checkClickTimeout) {\n clearTimeout(this._checkClickTimeout);\n }\n }\n\n /** @inheritDoc */\n handleClick(breadcrumb, node) {\n if (ignoreElement(node, this._ignoreSelector) || !isClickBreadcrumb(breadcrumb)) {\n return;\n }\n\n const newClick = {\n timestamp: timestampToS(breadcrumb.timestamp),\n clickBreadcrumb: breadcrumb,\n // Set this to 0 so we know it originates from the click breadcrumb\n clickCount: 0,\n node,\n };\n\n // If there was a click in the last 1s on the same element, ignore it - only keep a single reference per second\n if (\n this._clicks.some(click => click.node === newClick.node && Math.abs(click.timestamp - newClick.timestamp) < 1)\n ) {\n return;\n }\n\n this._clicks.push(newClick);\n\n // If this is the first new click, set a timeout to check for multi clicks\n if (this._clicks.length === 1) {\n this._scheduleCheckClicks();\n }\n }\n\n /** @inheritDoc */\n registerMutation(timestamp = Date.now()) {\n this._lastMutation = timestampToS(timestamp);\n }\n\n /** @inheritDoc */\n registerScroll(timestamp = Date.now()) {\n this._lastScroll = timestampToS(timestamp);\n }\n\n /** @inheritDoc */\n registerClick(element) {\n const node = getClosestInteractive(element);\n this._handleMultiClick(node );\n }\n\n /** Count multiple clicks on elements. */\n _handleMultiClick(node) {\n this._getClicks(node).forEach(click => {\n click.clickCount++;\n });\n }\n\n /** Get all pending clicks for a given node. */\n _getClicks(node) {\n return this._clicks.filter(click => click.node === node);\n }\n\n /** Check the clicks that happened. */\n _checkClicks() {\n const timedOutClicks = [];\n\n const now = nowInSeconds();\n\n this._clicks.forEach(click => {\n if (!click.mutationAfter && this._lastMutation) {\n click.mutationAfter = click.timestamp <= this._lastMutation ? this._lastMutation - click.timestamp : undefined;\n }\n if (!click.scrollAfter && this._lastScroll) {\n click.scrollAfter = click.timestamp <= this._lastScroll ? this._lastScroll - click.timestamp : undefined;\n }\n\n // All of these are in seconds!\n if (click.timestamp + this._timeout <= now) {\n timedOutClicks.push(click);\n }\n });\n\n // Remove \"old\" clicks\n for (const click of timedOutClicks) {\n const pos = this._clicks.indexOf(click);\n\n if (pos > -1) {\n this._generateBreadcrumbs(click);\n this._clicks.splice(pos, 1);\n }\n }\n\n // Trigger new check, unless no clicks left\n if (this._clicks.length) {\n this._scheduleCheckClicks();\n }\n }\n\n /** Generate matching breadcrumb(s) for the click. */\n _generateBreadcrumbs(click) {\n const replay = this._replay;\n const hadScroll = click.scrollAfter && click.scrollAfter <= this._scollTimeout;\n const hadMutation = click.mutationAfter && click.mutationAfter <= this._threshold;\n\n const isSlowClick = !hadScroll && !hadMutation;\n const { clickCount, clickBreadcrumb } = click;\n\n // Slow click\n if (isSlowClick) {\n // If `mutationAfter` is set, it means a mutation happened after the threshold, but before the timeout\n // If not, it means we just timed out without scroll & mutation\n const timeAfterClickMs = Math.min(click.mutationAfter || this._timeout, this._timeout) * 1000;\n const endReason = timeAfterClickMs < this._timeout * 1000 ? 'mutation' : 'timeout';\n\n const breadcrumb = {\n type: 'default',\n message: clickBreadcrumb.message,\n timestamp: clickBreadcrumb.timestamp,\n category: 'ui.slowClickDetected',\n data: {\n ...clickBreadcrumb.data,\n url: WINDOW.location.href,\n route: replay.getCurrentRoute(),\n timeAfterClickMs,\n endReason,\n // If clickCount === 0, it means multiClick was not correctly captured here\n // - we still want to send 1 in this case\n clickCount: clickCount || 1,\n },\n };\n\n this._addBreadcrumbEvent(replay, breadcrumb);\n return;\n }\n\n // Multi click\n if (clickCount > 1) {\n const breadcrumb = {\n type: 'default',\n message: clickBreadcrumb.message,\n timestamp: clickBreadcrumb.timestamp,\n category: 'ui.multiClick',\n data: {\n ...clickBreadcrumb.data,\n url: WINDOW.location.href,\n route: replay.getCurrentRoute(),\n clickCount,\n metric: true,\n },\n };\n\n this._addBreadcrumbEvent(replay, breadcrumb);\n }\n }\n\n /** Schedule to check current clicks. */\n _scheduleCheckClicks() {\n if (this._checkClickTimeout) {\n clearTimeout(this._checkClickTimeout);\n }\n\n this._checkClickTimeout = setTimeout(() => this._checkClicks(), 1000);\n }\n}\n\nconst SLOW_CLICK_TAGS = ['A', 'BUTTON', 'INPUT'];\n\n/** exported for tests only */\nfunction ignoreElement(node, ignoreSelector) {\n if (!SLOW_CLICK_TAGS.includes(node.tagName)) {\n return true;\n }\n\n // If tag, we only want to consider input[type='submit'] & input[type='button']\n if (node.tagName === 'INPUT' && !['submit', 'button'].includes(node.getAttribute('type') || '')) {\n return true;\n }\n\n // If tag, detect special variants that may not lead to an action\n // If target !== _self, we may open the link somewhere else, which would lead to no action\n // Also, when downloading a file, we may not leave the page, but still not trigger an action\n if (\n node.tagName === 'A' &&\n (node.hasAttribute('download') || (node.hasAttribute('target') && node.getAttribute('target') !== '_self'))\n ) {\n return true;\n }\n\n if (ignoreSelector && node.matches(ignoreSelector)) {\n return true;\n }\n\n return false;\n}\n\nfunction isClickBreadcrumb(breadcrumb) {\n return !!(breadcrumb.data && typeof breadcrumb.data.nodeId === 'number' && breadcrumb.timestamp);\n}\n\n// This is good enough for us, and is easier to test/mock than `timestampInSeconds`\nfunction nowInSeconds() {\n return Date.now() / 1000;\n}\n\n/** Update the click detector based on a recording event of rrweb. */\nfunction updateClickDetectorForRecordingEvent(clickDetector, event) {\n try {\n // note: We only consider incremental snapshots here\n // This means that any full snapshot is ignored for mutation detection - the reason is that we simply cannot know if a mutation happened here.\n // E.g. think that we are buffering, an error happens and we take a full snapshot because we switched to session mode -\n // in this scenario, we would not know if a dead click happened because of the error, which is a key dead click scenario.\n // Instead, by ignoring full snapshots, we have the risk that we generate a false positive\n // (if a mutation _did_ happen but was \"swallowed\" by the full snapshot)\n // But this should be more unlikely as we'd generally capture the incremental snapshot right away\n\n if (!isIncrementalEvent(event)) {\n return;\n }\n\n const { source } = event.data;\n if (source === IncrementalSource.Mutation) {\n clickDetector.registerMutation(event.timestamp);\n }\n\n if (source === IncrementalSource.Scroll) {\n clickDetector.registerScroll(event.timestamp);\n }\n\n if (isIncrementalMouseInteraction(event)) {\n const { type, id } = event.data;\n const node = record.mirror.getNode(id);\n\n if (node instanceof HTMLElement && type === MouseInteractions.Click) {\n clickDetector.registerClick(node);\n }\n }\n } catch (e) {\n // ignore errors here, e.g. if accessing something that does not exist\n }\n}\n\nfunction isIncrementalEvent(event) {\n return event.type === ReplayEventTypeIncrementalSnapshot;\n}\n\nfunction isIncrementalMouseInteraction(\n event,\n) {\n return event.data.source === IncrementalSource.MouseInteraction;\n}\n\n/**\n * Create a breadcrumb for a replay.\n */\nfunction createBreadcrumb(\n breadcrumb,\n) {\n return {\n timestamp: Date.now() / 1000,\n type: 'default',\n ...breadcrumb,\n };\n}\n\nvar NodeType;\n(function (NodeType) {\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\n})(NodeType || (NodeType = {}));\n\n// Note that these are the serialized attributes and not attributes directly on\n// the DOM Node. Attributes we are interested in:\nconst ATTRIBUTES_TO_RECORD = new Set([\n 'id',\n 'class',\n 'aria-label',\n 'role',\n 'name',\n 'alt',\n 'title',\n 'data-test-id',\n 'data-testid',\n 'disabled',\n 'aria-disabled',\n 'data-sentry-component',\n]);\n\n/**\n * Inclusion list of attributes that we want to record from the DOM element\n */\nfunction getAttributesToRecord(attributes) {\n const obj = {};\n for (const key in attributes) {\n if (ATTRIBUTES_TO_RECORD.has(key)) {\n let normalizedKey = key;\n\n if (key === 'data-testid' || key === 'data-test-id') {\n normalizedKey = 'testId';\n }\n\n obj[normalizedKey] = attributes[key];\n }\n }\n\n return obj;\n}\n\nconst handleDomListener = (\n replay,\n) => {\n return (handlerData) => {\n if (!replay.isEnabled()) {\n return;\n }\n\n const result = handleDom(handlerData);\n\n if (!result) {\n return;\n }\n\n const isClick = handlerData.name === 'click';\n const event = isClick ? (handlerData.event ) : undefined;\n // Ignore clicks if ctrl/alt/meta/shift keys are held down as they alter behavior of clicks (e.g. open in new tab)\n if (\n isClick &&\n replay.clickDetector &&\n event &&\n event.target &&\n !event.altKey &&\n !event.metaKey &&\n !event.ctrlKey &&\n !event.shiftKey\n ) {\n handleClick(\n replay.clickDetector,\n result ,\n getClickTargetNode(handlerData.event ) ,\n );\n }\n\n addBreadcrumbEvent(replay, result);\n };\n};\n\n/** Get the base DOM breadcrumb. */\nfunction getBaseDomBreadcrumb(target, message) {\n const nodeId = record.mirror.getId(target);\n const node = nodeId && record.mirror.getNode(nodeId);\n const meta = node && record.mirror.getMeta(node);\n const element = meta && isElement(meta) ? meta : null;\n\n return {\n message,\n data: element\n ? {\n nodeId,\n node: {\n id: nodeId,\n tagName: element.tagName,\n textContent: Array.from(element.childNodes)\n .map((node) => node.type === NodeType.Text && node.textContent)\n .filter(Boolean) // filter out empty values\n .map(text => (text ).trim())\n .join(''),\n attributes: getAttributesToRecord(element.attributes),\n },\n }\n : {},\n };\n}\n\n/**\n * An event handler to react to DOM events.\n * Exported for tests.\n */\nfunction handleDom(handlerData) {\n const { target, message } = getDomTarget(handlerData);\n\n return createBreadcrumb({\n category: `ui.${handlerData.name}`,\n ...getBaseDomBreadcrumb(target, message),\n });\n}\n\nfunction getDomTarget(handlerData) {\n const isClick = handlerData.name === 'click';\n\n let message;\n let target = null;\n\n // Accessing event.target can throw (see getsentry/raven-js#838, #768)\n try {\n target = isClick ? getClickTargetNode(handlerData.event ) : getTargetNode(handlerData.event );\n message = htmlTreeAsString(target, { maxStringLength: 200 }) || '';\n } catch (e) {\n message = '';\n }\n\n return { target, message };\n}\n\nfunction isElement(node) {\n return node.type === NodeType.Element;\n}\n\n/** Handle keyboard events & create breadcrumbs. */\nfunction handleKeyboardEvent(replay, event) {\n if (!replay.isEnabled()) {\n return;\n }\n\n // Update user activity, but do not restart recording as it can create\n // noisy/low-value replays (e.g. user comes back from idle, hits alt-tab, new\n // session with a single \"keydown\" breadcrumb is created)\n replay.updateUserActivity();\n\n const breadcrumb = getKeyboardBreadcrumb(event);\n\n if (!breadcrumb) {\n return;\n }\n\n addBreadcrumbEvent(replay, breadcrumb);\n}\n\n/** exported only for tests */\nfunction getKeyboardBreadcrumb(event) {\n const { metaKey, shiftKey, ctrlKey, altKey, key, target } = event;\n\n // never capture for input fields\n if (!target || isInputElement(target ) || !key) {\n return null;\n }\n\n // Note: We do not consider shift here, as that means \"uppercase\"\n const hasModifierKey = metaKey || ctrlKey || altKey;\n const isCharacterKey = key.length === 1; // other keys like Escape, Tab, etc have a longer length\n\n // Do not capture breadcrumb if only a word key is pressed\n // This could leak e.g. user input\n if (!hasModifierKey && isCharacterKey) {\n return null;\n }\n\n const message = htmlTreeAsString(target, { maxStringLength: 200 }) || '';\n const baseBreadcrumb = getBaseDomBreadcrumb(target , message);\n\n return createBreadcrumb({\n category: 'ui.keyDown',\n message,\n data: {\n ...baseBreadcrumb.data,\n metaKey,\n shiftKey,\n ctrlKey,\n altKey,\n key,\n },\n });\n}\n\nfunction isInputElement(target) {\n return target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable;\n}\n\n// Map entryType -> function to normalize data for event\nconst ENTRY_TYPES\n\n = {\n // @ts-expect-error TODO: entry type does not fit the create* functions entry type\n resource: createResourceEntry,\n paint: createPaintEntry,\n // @ts-expect-error TODO: entry type does not fit the create* functions entry type\n navigation: createNavigationEntry,\n};\n\n/**\n * Create replay performance entries from the browser performance entries.\n */\nfunction createPerformanceEntries(\n entries,\n) {\n return entries.map(createPerformanceEntry).filter(Boolean) ;\n}\n\nfunction createPerformanceEntry(entry) {\n if (!ENTRY_TYPES[entry.entryType]) {\n return null;\n }\n\n return ENTRY_TYPES[entry.entryType](entry);\n}\n\nfunction getAbsoluteTime(time) {\n // browserPerformanceTimeOrigin can be undefined if `performance` or\n // `performance.now` doesn't exist, but this is already checked by this integration\n return ((browserPerformanceTimeOrigin || WINDOW.performance.timeOrigin) + time) / 1000;\n}\n\nfunction createPaintEntry(entry) {\n const { duration, entryType, name, startTime } = entry;\n\n const start = getAbsoluteTime(startTime);\n return {\n type: entryType,\n name,\n start,\n end: start + duration,\n data: undefined,\n };\n}\n\nfunction createNavigationEntry(entry) {\n const {\n entryType,\n name,\n decodedBodySize,\n duration,\n domComplete,\n encodedBodySize,\n domContentLoadedEventStart,\n domContentLoadedEventEnd,\n domInteractive,\n loadEventStart,\n loadEventEnd,\n redirectCount,\n startTime,\n transferSize,\n type,\n } = entry;\n\n // Ignore entries with no duration, they do not seem to be useful and cause dupes\n if (duration === 0) {\n return null;\n }\n\n return {\n type: `${entryType}.${type}`,\n start: getAbsoluteTime(startTime),\n end: getAbsoluteTime(domComplete),\n name,\n data: {\n size: transferSize,\n decodedBodySize,\n encodedBodySize,\n duration,\n domInteractive,\n domContentLoadedEventStart,\n domContentLoadedEventEnd,\n loadEventStart,\n loadEventEnd,\n domComplete,\n redirectCount,\n },\n };\n}\n\nfunction createResourceEntry(\n entry,\n) {\n const {\n entryType,\n initiatorType,\n name,\n responseEnd,\n startTime,\n decodedBodySize,\n encodedBodySize,\n responseStatus,\n transferSize,\n } = entry;\n\n // Core SDK handles these\n if (['fetch', 'xmlhttprequest'].includes(initiatorType)) {\n return null;\n }\n\n return {\n type: `${entryType}.${initiatorType}`,\n start: getAbsoluteTime(startTime),\n end: getAbsoluteTime(responseEnd),\n name,\n data: {\n size: transferSize,\n statusCode: responseStatus,\n decodedBodySize,\n encodedBodySize,\n },\n };\n}\n\n/**\n * Add a LCP event to the replay based on an LCP metric.\n */\nfunction getLargestContentfulPaint(metric\n\n) {\n const entries = metric.entries;\n const lastEntry = entries[entries.length - 1] ;\n const element = lastEntry ? lastEntry.element : undefined;\n\n const value = metric.value;\n\n const end = getAbsoluteTime(value);\n\n const data = {\n type: 'largest-contentful-paint',\n name: 'largest-contentful-paint',\n start: end,\n end,\n data: {\n value,\n size: value,\n nodeId: element ? record.mirror.getId(element) : undefined,\n },\n };\n\n return data;\n}\n\n/**\n * Sets up a PerformanceObserver to listen to all performance entry types.\n * Returns a callback to stop observing.\n */\nfunction setupPerformanceObserver(replay) {\n function addPerformanceEntry(entry) {\n // It is possible for entries to come up multiple times\n if (!replay.performanceEntries.includes(entry)) {\n replay.performanceEntries.push(entry);\n }\n }\n\n function onEntries({ entries }) {\n entries.forEach(addPerformanceEntry);\n }\n\n const clearCallbacks = [];\n\n (['navigation', 'paint', 'resource'] ).forEach(type => {\n clearCallbacks.push(addPerformanceInstrumentationHandler(type, onEntries));\n });\n\n clearCallbacks.push(\n addLcpInstrumentationHandler(({ metric }) => {\n replay.replayPerformanceEntries.push(getLargestContentfulPaint(metric));\n }),\n );\n\n // A callback to cleanup all handlers\n return () => {\n clearCallbacks.forEach(clearCallback => clearCallback());\n };\n}\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\nconst r = `var t=Uint8Array,n=Uint16Array,r=Int32Array,e=new t([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,0,0,0]),i=new t([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,0,0]),a=new t([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),s=function(t,e){for(var i=new n(31),a=0;a<31;++a)i[a]=e+=1<>1|(21845&c)<<1;v=(61680&(v=(52428&v)>>2|(13107&v)<<2))>>4|(3855&v)<<4,u[c]=((65280&v)>>8|(255&v)<<8)>>1}var d=function(t,r,e){for(var i=t.length,a=0,s=new n(r);a>h]=l}else for(o=new n(i),a=0;a>15-t[a]);return o},g=new t(288);for(c=0;c<144;++c)g[c]=8;for(c=144;c<256;++c)g[c]=9;for(c=256;c<280;++c)g[c]=7;for(c=280;c<288;++c)g[c]=8;var w=new t(32);for(c=0;c<32;++c)w[c]=5;var p=d(g,9,0),y=d(w,5,0),m=function(t){return(t+7)/8|0},b=function(n,r,e){return(null==r||r<0)&&(r=0),(null==e||e>n.length)&&(e=n.length),new t(n.subarray(r,e))},M=[\"unexpected EOF\",\"invalid block type\",\"invalid length/literal\",\"invalid distance\",\"stream finished\",\"no stream handler\",,\"no callback\",\"invalid UTF-8 data\",\"extra field too long\",\"date not in range 1980-2099\",\"filename too long\",\"stream finishing\",\"invalid zip data\"],E=function(t,n,r){var e=new Error(n||M[t]);if(e.code=t,Error.captureStackTrace&&Error.captureStackTrace(e,E),!r)throw e;return e},z=function(t,n,r){r<<=7&n;var e=n/8|0;t[e]|=r,t[e+1]|=r>>8},A=function(t,n,r){r<<=7&n;var e=n/8|0;t[e]|=r,t[e+1]|=r>>8,t[e+2]|=r>>16},_=function(r,e){for(var i=[],a=0;ad&&(d=o[a].s);var g=new n(d+1),w=x(i[c-1],g,0);if(w>e){a=0;var p=0,y=w-e,m=1<e))break;p+=m-(1<>=y;p>0;){var M=o[a].s;g[M]=0&&p;--a){var E=o[a].s;g[E]==e&&(--g[E],++p)}w=e}return{t:new t(g),l:w}},x=function(t,n,r){return-1==t.s?Math.max(x(t.l,n,r+1),x(t.r,n,r+1)):n[t.s]=r},D=function(t){for(var r=t.length;r&&!t[--r];);for(var e=new n(++r),i=0,a=t[0],s=1,o=function(t){e[i++]=t},f=1;f<=r;++f)if(t[f]==a&&f!=r)++s;else{if(!a&&s>2){for(;s>138;s-=138)o(32754);s>2&&(o(s>10?s-11<<5|28690:s-3<<5|12305),s=0)}else if(s>3){for(o(a),--s;s>6;s-=6)o(8304);s>2&&(o(s-3<<5|8208),s=0)}for(;s--;)o(a);s=1,a=t[f]}return{c:e.subarray(0,i),n:r}},T=function(t,n){for(var r=0,e=0;e>8,t[i+2]=255^t[i],t[i+3]=255^t[i+1];for(var a=0;a4&&!H[a[K-1]];--K);var N,P,Q,R,V=v+5<<3,W=T(f,g)+T(h,w)+l,X=T(f,M)+T(h,C)+l+14+3*K+T(q,H)+2*q[16]+3*q[17]+7*q[18];if(c>=0&&V<=W&&V<=X)return k(r,m,t.subarray(c,c+v));if(z(r,m,1+(X15&&(z(r,m,tt[B]>>5&127),m+=tt[B]>>12)}}}else N=p,P=g,Q=y,R=w;for(B=0;B255){A(r,m,N[(nt=rt>>18&31)+257]),m+=P[nt+257],nt>7&&(z(r,m,rt>>23&31),m+=e[nt]);var et=31&rt;A(r,m,Q[et]),m+=R[et],et>3&&(A(r,m,rt>>5&8191),m+=i[et])}else A(r,m,N[rt]),m+=P[rt]}return A(r,m,N[256]),m+P[256]},U=new r([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),F=new t(0),I=function(){for(var t=new Int32Array(256),n=0;n<256;++n){for(var r=n,e=9;--e;)r=(1&r&&-306674912)^r>>>1;t[n]=r}return t}(),S=function(){var t=1,n=0;return{p:function(r){for(var e=t,i=n,a=0|r.length,s=0;s!=a;){for(var o=Math.min(s+2655,a);s>16),i=(65535&i)+15*(i>>16)}t=e,n=i},d:function(){return(255&(t%=65521))<<24|(65280&t)<<8|(255&(n%=65521))<<8|n>>8}}},L=function(a,s,o,f,u){if(!u&&(u={l:1},s.dictionary)){var c=s.dictionary.subarray(-32768),v=new t(c.length+a.length);v.set(c),v.set(a,c.length),a=v,u.w=c.length}return function(a,s,o,f,u,c){var v=c.z||a.length,d=new t(f+v+5*(1+Math.ceil(v/7e3))+u),g=d.subarray(f,d.length-u),w=c.l,p=7&(c.r||0);if(s){p&&(g[0]=c.r>>3);for(var y=U[s-1],M=y>>13,E=8191&y,z=(1<7e3||q>24576)&&(N>423||!w)){p=C(a,g,0,F,I,S,O,q,G,j-G,p),q=L=O=0,G=j;for(var P=0;P<286;++P)I[P]=0;for(P=0;P<30;++P)S[P]=0}var Q=2,R=0,V=E,W=J-K&32767;if(N>2&&H==T(j-W))for(var X=Math.min(M,N)-1,Y=Math.min(32767,j),Z=Math.min(258,N);W<=Y&&--V&&J!=K;){if(a[j+Q]==a[j+Q-W]){for(var $=0;$Q){if(Q=$,R=W,$>X)break;var tt=Math.min(W,$-2),nt=0;for(P=0;Pnt&&(nt=et,K=rt)}}}W+=(J=K)-(K=A[J])&32767}if(R){F[q++]=268435456|h[Q]<<18|l[R];var it=31&h[Q],at=31&l[R];O+=e[it]+i[at],++I[257+it],++S[at],B=j+Q,++L}else F[q++]=a[j],++I[a[j]]}}for(j=Math.max(j,B);j=v&&(g[p/8|0]=w,st=v),p=k(g,p+1,a.subarray(j,st))}c.i=v}return b(d,0,f+m(p)+u)}(a,null==s.level?6:s.level,null==s.mem?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(a.length)))):12+s.mem,o,f,u)},O=function(t,n,r){for(;r;++n)t[n]=r,r>>>=8},j=function(){function n(n,r){if(\"function\"==typeof n&&(r=n,n={}),this.ondata=r,this.o=n||{},this.s={l:0,i:32768,w:32768,z:32768},this.b=new t(98304),this.o.dictionary){var e=this.o.dictionary.subarray(-32768);this.b.set(e,32768-e.length),this.s.i=32768-e.length}}return n.prototype.p=function(t,n){this.ondata(L(t,this.o,0,0,this.s),n)},n.prototype.push=function(n,r){this.ondata||E(5),this.s.l&&E(4);var e=n.length+this.s.z;if(e>this.b.length){if(e>2*this.b.length-32768){var i=new t(-32768&e);i.set(this.b.subarray(0,this.s.z)),this.b=i}var a=this.b.length-this.s.z;a&&(this.b.set(n.subarray(0,a),this.s.z),this.s.z=this.b.length,this.p(this.b,!1)),this.b.set(this.b.subarray(-32768)),this.b.set(n.subarray(a),32768),this.s.z=n.length-a+32768,this.s.i=32766,this.s.w=32768}else this.b.set(n,this.s.z),this.s.z+=n.length;this.s.l=1&r,(this.s.z>this.s.w+8191||r)&&(this.p(this.b,r||!1),this.s.w=this.s.i,this.s.i-=2)},n}();function q(t,n){n||(n={});var r=function(){var t=-1;return{p:function(n){for(var r=t,e=0;e>>8;t=r},d:function(){return~t}}}(),e=t.length;r.p(t);var i,a=L(t,n,10+((i=n).filename?i.filename.length+1:0),8),s=a.length;return function(t,n){var r=n.filename;if(t[0]=31,t[1]=139,t[2]=8,t[8]=n.level<2?4:9==n.level?2:0,t[9]=3,0!=n.mtime&&O(t,4,Math.floor(new Date(n.mtime||Date.now())/1e3)),r){t[3]=8;for(var e=0;e<=r.length;++e)t[e+10]=r.charCodeAt(e)}}(a,n),O(a,s-8,r.d()),O(a,s-4,e),a}var B=function(){function t(t,n){this.c=S(),this.v=1,j.call(this,t,n)}return t.prototype.push=function(t,n){this.c.p(t),j.prototype.push.call(this,t,n)},t.prototype.p=function(t,n){var r=L(t,this.o,this.v&&(this.o.dictionary?6:2),n&&4,this.s);this.v&&(function(t,n){var r=n.level,e=0==r?0:r<6?1:9==r?3:2;if(t[0]=120,t[1]=e<<6|(n.dictionary&&32),t[1]|=31-(t[0]<<8|t[1])%31,n.dictionary){var i=S();i.p(n.dictionary),O(t,2,i.d())}}(r,this.o),this.v=0),n&&O(r,r.length-4,this.c.d()),this.ondata(r,n)},t}(),G=\"undefined\"!=typeof TextEncoder&&new TextEncoder,H=\"undefined\"!=typeof TextDecoder&&new TextDecoder;try{H.decode(F,{stream:!0})}catch(t){}var J=function(){function t(t){this.ondata=t}return t.prototype.push=function(t,n){this.ondata||E(5),this.d&&E(4),this.ondata(K(t),this.d=n||!1)},t}();function K(n,r){if(r){for(var e=new t(n.length),i=0;i>1)),o=0,f=function(t){s[o++]=t};for(i=0;is.length){var h=new t(o+8+(a-i<<1));h.set(s),s=h}var l=n.charCodeAt(i);l<128||r?f(l):l<2048?(f(192|l>>6),f(128|63&l)):l>55295&&l<57344?(f(240|(l=65536+(1047552&l)|1023&n.charCodeAt(++i))>>18),f(128|l>>12&63),f(128|l>>6&63),f(128|63&l)):(f(224|l>>12),f(128|l>>6&63),f(128|63&l))}return b(s,0,o)}const N=new class{constructor(){this._init()}clear(){this._init()}addEvent(t){if(!t)throw new Error(\"Adding invalid event\");const n=this._hasEvents?\",\":\"\";this.stream.push(n+t),this._hasEvents=!0}finish(){this.stream.push(\"]\",!0);const t=function(t){let n=0;for(let r=0,e=t.length;r{this._deflatedData.push(t)},this.stream=new J(((t,n)=>{this.deflate.push(t,n)})),this.stream.push(\"[\")}},P={clear:()=>{N.clear()},addEvent:t=>N.addEvent(t),finish:()=>N.finish(),compress:t=>function(t){return q(K(t))}(t)};addEventListener(\"message\",(function(t){const n=t.data.method,r=t.data.id,e=t.data.arg;if(n in P&&\"function\"==typeof P[n])try{const t=P[n](e);postMessage({id:r,method:n,success:!0,response:t})}catch(t){postMessage({id:r,method:n,success:!1,response:t.message}),console.error(t)}})),postMessage({id:void 0,method:\"init\",success:!0,response:void 0});`;\n\nfunction e(){const e=new Blob([r]);return URL.createObjectURL(e)}\n\n/**\n * Log a message in debug mode, and add a breadcrumb when _experiment.traceInternals is enabled.\n */\nfunction logInfo(message, shouldAddBreadcrumb) {\n if (!DEBUG_BUILD) {\n return;\n }\n\n logger.info(message);\n\n if (shouldAddBreadcrumb) {\n addLogBreadcrumb(message);\n }\n}\n\n/**\n * Log a message, and add a breadcrumb in the next tick.\n * This is necessary when the breadcrumb may be added before the replay is initialized.\n */\nfunction logInfoNextTick(message, shouldAddBreadcrumb) {\n if (!DEBUG_BUILD) {\n return;\n }\n\n logger.info(message);\n\n if (shouldAddBreadcrumb) {\n // Wait a tick here to avoid race conditions for some initial logs\n // which may be added before replay is initialized\n setTimeout(() => {\n addLogBreadcrumb(message);\n }, 0);\n }\n}\n\nfunction addLogBreadcrumb(message) {\n addBreadcrumb(\n {\n category: 'console',\n data: {\n logger: 'replay',\n },\n level: 'info',\n message,\n },\n { level: 'info' },\n );\n}\n\n/** This error indicates that the event buffer size exceeded the limit.. */\nclass EventBufferSizeExceededError extends Error {\n constructor() {\n super(`Event buffer exceeded maximum size of ${REPLAY_MAX_EVENT_BUFFER_SIZE}.`);\n }\n}\n\n/**\n * A basic event buffer that does not do any compression.\n * Used as fallback if the compression worker cannot be loaded or is disabled.\n */\nclass EventBufferArray {\n /** All the events that are buffered to be sent. */\n\n /** @inheritdoc */\n\n constructor() {\n this.events = [];\n this._totalSize = 0;\n this.hasCheckout = false;\n }\n\n /** @inheritdoc */\n get hasEvents() {\n return this.events.length > 0;\n }\n\n /** @inheritdoc */\n get type() {\n return 'sync';\n }\n\n /** @inheritdoc */\n destroy() {\n this.events = [];\n }\n\n /** @inheritdoc */\n async addEvent(event) {\n const eventSize = JSON.stringify(event).length;\n this._totalSize += eventSize;\n if (this._totalSize > REPLAY_MAX_EVENT_BUFFER_SIZE) {\n throw new EventBufferSizeExceededError();\n }\n\n this.events.push(event);\n }\n\n /** @inheritdoc */\n finish() {\n return new Promise(resolve => {\n // Make a copy of the events array reference and immediately clear the\n // events member so that we do not lose new events while uploading\n // attachment.\n const eventsRet = this.events;\n this.clear();\n resolve(JSON.stringify(eventsRet));\n });\n }\n\n /** @inheritdoc */\n clear() {\n this.events = [];\n this._totalSize = 0;\n this.hasCheckout = false;\n }\n\n /** @inheritdoc */\n getEarliestTimestamp() {\n const timestamp = this.events.map(event => event.timestamp).sort()[0];\n\n if (!timestamp) {\n return null;\n }\n\n return timestampToMs(timestamp);\n }\n}\n\n/**\n * Event buffer that uses a web worker to compress events.\n * Exported only for testing.\n */\nclass WorkerHandler {\n\n constructor(worker) {\n this._worker = worker;\n this._id = 0;\n }\n\n /**\n * Ensure the worker is ready (or not).\n * This will either resolve when the worker is ready, or reject if an error occured.\n */\n ensureReady() {\n // Ensure we only check once\n if (this._ensureReadyPromise) {\n return this._ensureReadyPromise;\n }\n\n this._ensureReadyPromise = new Promise((resolve, reject) => {\n this._worker.addEventListener(\n 'message',\n ({ data }) => {\n if ((data ).success) {\n resolve();\n } else {\n reject();\n }\n },\n { once: true },\n );\n\n this._worker.addEventListener(\n 'error',\n error => {\n reject(error);\n },\n { once: true },\n );\n });\n\n return this._ensureReadyPromise;\n }\n\n /**\n * Destroy the worker.\n */\n destroy() {\n logInfo('[Replay] Destroying compression worker');\n this._worker.terminate();\n }\n\n /**\n * Post message to worker and wait for response before resolving promise.\n */\n postMessage(method, arg) {\n const id = this._getAndIncrementId();\n\n return new Promise((resolve, reject) => {\n const listener = ({ data }) => {\n const response = data ;\n if (response.method !== method) {\n return;\n }\n\n // There can be multiple listeners for a single method, the id ensures\n // that the response matches the caller.\n if (response.id !== id) {\n return;\n }\n\n // At this point, we'll always want to remove listener regardless of result status\n this._worker.removeEventListener('message', listener);\n\n if (!response.success) {\n // TODO: Do some error handling, not sure what\n DEBUG_BUILD && logger.error('[Replay]', response.response);\n\n reject(new Error('Error in compression worker'));\n return;\n }\n\n resolve(response.response );\n };\n\n // Note: we can't use `once` option because it's possible it needs to\n // listen to multiple messages\n this._worker.addEventListener('message', listener);\n this._worker.postMessage({ id, method, arg });\n });\n }\n\n /** Get the current ID and increment it for the next call. */\n _getAndIncrementId() {\n return this._id++;\n }\n}\n\n/**\n * Event buffer that uses a web worker to compress events.\n * Exported only for testing.\n */\nclass EventBufferCompressionWorker {\n /** @inheritdoc */\n\n constructor(worker) {\n this._worker = new WorkerHandler(worker);\n this._earliestTimestamp = null;\n this._totalSize = 0;\n this.hasCheckout = false;\n }\n\n /** @inheritdoc */\n get hasEvents() {\n return !!this._earliestTimestamp;\n }\n\n /** @inheritdoc */\n get type() {\n return 'worker';\n }\n\n /**\n * Ensure the worker is ready (or not).\n * This will either resolve when the worker is ready, or reject if an error occured.\n */\n ensureReady() {\n return this._worker.ensureReady();\n }\n\n /**\n * Destroy the event buffer.\n */\n destroy() {\n this._worker.destroy();\n }\n\n /**\n * Add an event to the event buffer.\n *\n * Returns true if event was successfuly received and processed by worker.\n */\n addEvent(event) {\n const timestamp = timestampToMs(event.timestamp);\n if (!this._earliestTimestamp || timestamp < this._earliestTimestamp) {\n this._earliestTimestamp = timestamp;\n }\n\n const data = JSON.stringify(event);\n this._totalSize += data.length;\n\n if (this._totalSize > REPLAY_MAX_EVENT_BUFFER_SIZE) {\n return Promise.reject(new EventBufferSizeExceededError());\n }\n\n return this._sendEventToWorker(data);\n }\n\n /**\n * Finish the event buffer and return the compressed data.\n */\n finish() {\n return this._finishRequest();\n }\n\n /** @inheritdoc */\n clear() {\n this._earliestTimestamp = null;\n this._totalSize = 0;\n this.hasCheckout = false;\n\n // We do not wait on this, as we assume the order of messages is consistent for the worker\n this._worker.postMessage('clear').then(null, e => {\n DEBUG_BUILD && logger.warn('[Replay] Sending \"clear\" message to worker failed', e);\n });\n }\n\n /** @inheritdoc */\n getEarliestTimestamp() {\n return this._earliestTimestamp;\n }\n\n /**\n * Send the event to the worker.\n */\n _sendEventToWorker(data) {\n return this._worker.postMessage('addEvent', data);\n }\n\n /**\n * Finish the request and return the compressed data from the worker.\n */\n async _finishRequest() {\n const response = await this._worker.postMessage('finish');\n\n this._earliestTimestamp = null;\n this._totalSize = 0;\n\n return response;\n }\n}\n\n/**\n * This proxy will try to use the compression worker, and fall back to use the simple buffer if an error occurs there.\n * This can happen e.g. if the worker cannot be loaded.\n * Exported only for testing.\n */\nclass EventBufferProxy {\n\n constructor(worker) {\n this._fallback = new EventBufferArray();\n this._compression = new EventBufferCompressionWorker(worker);\n this._used = this._fallback;\n\n this._ensureWorkerIsLoadedPromise = this._ensureWorkerIsLoaded();\n }\n\n /** @inheritdoc */\n get type() {\n return this._used.type;\n }\n\n /** @inheritDoc */\n get hasEvents() {\n return this._used.hasEvents;\n }\n\n /** @inheritdoc */\n get hasCheckout() {\n return this._used.hasCheckout;\n }\n /** @inheritdoc */\n set hasCheckout(value) {\n this._used.hasCheckout = value;\n }\n\n /** @inheritDoc */\n destroy() {\n this._fallback.destroy();\n this._compression.destroy();\n }\n\n /** @inheritdoc */\n clear() {\n return this._used.clear();\n }\n\n /** @inheritdoc */\n getEarliestTimestamp() {\n return this._used.getEarliestTimestamp();\n }\n\n /**\n * Add an event to the event buffer.\n *\n * Returns true if event was successfully added.\n */\n addEvent(event) {\n return this._used.addEvent(event);\n }\n\n /** @inheritDoc */\n async finish() {\n // Ensure the worker is loaded, so the sent event is compressed\n await this.ensureWorkerIsLoaded();\n\n return this._used.finish();\n }\n\n /** Ensure the worker has loaded. */\n ensureWorkerIsLoaded() {\n return this._ensureWorkerIsLoadedPromise;\n }\n\n /** Actually check if the worker has been loaded. */\n async _ensureWorkerIsLoaded() {\n try {\n await this._compression.ensureReady();\n } catch (error) {\n // If the worker fails to load, we fall back to the simple buffer.\n // Nothing more to do from our side here\n logInfo('[Replay] Failed to load the compression worker, falling back to simple buffer');\n return;\n }\n\n // Now we need to switch over the array buffer to the compression worker\n await this._switchToCompressionWorker();\n }\n\n /** Switch the used buffer to the compression worker. */\n async _switchToCompressionWorker() {\n const { events, hasCheckout } = this._fallback;\n\n const addEventPromises = [];\n for (const event of events) {\n addEventPromises.push(this._compression.addEvent(event));\n }\n\n this._compression.hasCheckout = hasCheckout;\n\n // We switch over to the new buffer immediately - any further events will be added\n // after the previously buffered ones\n this._used = this._compression;\n\n // Wait for original events to be re-added before resolving\n try {\n await Promise.all(addEventPromises);\n } catch (error) {\n DEBUG_BUILD && logger.warn('[Replay] Failed to add events when switching buffers.', error);\n }\n }\n}\n\n/**\n * Create an event buffer for replays.\n */\nfunction createEventBuffer({\n useCompression,\n workerUrl: customWorkerUrl,\n}) {\n if (\n useCompression &&\n // eslint-disable-next-line no-restricted-globals\n window.Worker\n ) {\n const worker = _loadWorker(customWorkerUrl);\n\n if (worker) {\n return worker;\n }\n }\n\n logInfo('[Replay] Using simple buffer');\n return new EventBufferArray();\n}\n\nfunction _loadWorker(customWorkerUrl) {\n try {\n const workerUrl = customWorkerUrl || _getWorkerUrl();\n\n if (!workerUrl) {\n return;\n }\n\n logInfo(`[Replay] Using compression worker${customWorkerUrl ? ` from ${customWorkerUrl}` : ''}`);\n const worker = new Worker(workerUrl);\n return new EventBufferProxy(worker);\n } catch (error) {\n logInfo('[Replay] Failed to create compression worker');\n // Fall back to use simple event buffer array\n }\n}\n\nfunction _getWorkerUrl() {\n if (typeof __SENTRY_EXCLUDE_REPLAY_WORKER__ === 'undefined' || !__SENTRY_EXCLUDE_REPLAY_WORKER__) {\n return e();\n }\n\n return '';\n}\n\n/** If sessionStorage is available. */\nfunction hasSessionStorage() {\n try {\n // This can throw, e.g. when being accessed in a sandboxed iframe\n return 'sessionStorage' in WINDOW && !!WINDOW.sessionStorage;\n } catch (e) {\n return false;\n }\n}\n\n/**\n * Removes the session from Session Storage and unsets session in replay instance\n */\nfunction clearSession(replay) {\n deleteSession();\n replay.session = undefined;\n}\n\n/**\n * Deletes a session from storage\n */\nfunction deleteSession() {\n if (!hasSessionStorage()) {\n return;\n }\n\n try {\n WINDOW.sessionStorage.removeItem(REPLAY_SESSION_KEY);\n } catch (e) {\n // Ignore potential SecurityError exceptions\n }\n}\n\n/**\n * Given a sample rate, returns true if replay should be sampled.\n *\n * 1.0 = 100% sampling\n * 0.0 = 0% sampling\n */\nfunction isSampled(sampleRate) {\n if (sampleRate === undefined) {\n return false;\n }\n\n // Math.random() returns a number in range of 0 to 1 (inclusive of 0, but not 1)\n return Math.random() < sampleRate;\n}\n\n/**\n * Get a session with defaults & applied sampling.\n */\nfunction makeSession(session) {\n const now = Date.now();\n const id = session.id || uuid4();\n // Note that this means we cannot set a started/lastActivity of `0`, but this should not be relevant outside of tests.\n const started = session.started || now;\n const lastActivity = session.lastActivity || now;\n const segmentId = session.segmentId || 0;\n const sampled = session.sampled;\n const previousSessionId = session.previousSessionId;\n\n return {\n id,\n started,\n lastActivity,\n segmentId,\n sampled,\n previousSessionId,\n };\n}\n\n/**\n * Save a session to session storage.\n */\nfunction saveSession(session) {\n if (!hasSessionStorage()) {\n return;\n }\n\n try {\n WINDOW.sessionStorage.setItem(REPLAY_SESSION_KEY, JSON.stringify(session));\n } catch (e) {\n // Ignore potential SecurityError exceptions\n }\n}\n\n/**\n * Get the sampled status for a session based on sample rates & current sampled status.\n */\nfunction getSessionSampleType(sessionSampleRate, allowBuffering) {\n return isSampled(sessionSampleRate) ? 'session' : allowBuffering ? 'buffer' : false;\n}\n\n/**\n * Create a new session, which in its current implementation is a Sentry event\n * that all replays will be saved to as attachments. Currently, we only expect\n * one of these Sentry events per \"replay session\".\n */\nfunction createSession(\n { sessionSampleRate, allowBuffering, stickySession = false },\n { previousSessionId } = {},\n) {\n const sampled = getSessionSampleType(sessionSampleRate, allowBuffering);\n const session = makeSession({\n sampled,\n previousSessionId,\n });\n\n if (stickySession) {\n saveSession(session);\n }\n\n return session;\n}\n\n/**\n * Fetches a session from storage\n */\nfunction fetchSession(traceInternals) {\n if (!hasSessionStorage()) {\n return null;\n }\n\n try {\n // This can throw if cookies are disabled\n const sessionStringFromStorage = WINDOW.sessionStorage.getItem(REPLAY_SESSION_KEY);\n\n if (!sessionStringFromStorage) {\n return null;\n }\n\n const sessionObj = JSON.parse(sessionStringFromStorage) ;\n\n logInfoNextTick('[Replay] Loading existing session', traceInternals);\n\n return makeSession(sessionObj);\n } catch (e) {\n return null;\n }\n}\n\n/**\n * Given an initial timestamp and an expiry duration, checks to see if current\n * time should be considered as expired.\n */\nfunction isExpired(\n initialTime,\n expiry,\n targetTime = +new Date(),\n) {\n // Always expired if < 0\n if (initialTime === null || expiry === undefined || expiry < 0) {\n return true;\n }\n\n // Never expires if == 0\n if (expiry === 0) {\n return false;\n }\n\n return initialTime + expiry <= targetTime;\n}\n\n/**\n * Checks to see if session is expired\n */\nfunction isSessionExpired(\n session,\n {\n maxReplayDuration,\n sessionIdleExpire,\n targetTime = Date.now(),\n },\n) {\n return (\n // First, check that maximum session length has not been exceeded\n isExpired(session.started, maxReplayDuration, targetTime) ||\n // check that the idle timeout has not been exceeded (i.e. user has\n // performed an action within the last `sessionIdleExpire` ms)\n isExpired(session.lastActivity, sessionIdleExpire, targetTime)\n );\n}\n\n/** If the session should be refreshed or not. */\nfunction shouldRefreshSession(\n session,\n { sessionIdleExpire, maxReplayDuration },\n) {\n // If not expired, all good, just keep the session\n if (!isSessionExpired(session, { sessionIdleExpire, maxReplayDuration })) {\n return false;\n }\n\n // If we are buffering & haven't ever flushed yet, always continue\n if (session.sampled === 'buffer' && session.segmentId === 0) {\n return false;\n }\n\n return true;\n}\n\n/**\n * Get or create a session, when initializing the replay.\n * Returns a session that may be unsampled.\n */\nfunction loadOrCreateSession(\n {\n traceInternals,\n sessionIdleExpire,\n maxReplayDuration,\n previousSessionId,\n }\n\n,\n sessionOptions,\n) {\n const existingSession = sessionOptions.stickySession && fetchSession(traceInternals);\n\n // No session exists yet, just create a new one\n if (!existingSession) {\n logInfoNextTick('[Replay] Creating new session', traceInternals);\n return createSession(sessionOptions, { previousSessionId });\n }\n\n if (!shouldRefreshSession(existingSession, { sessionIdleExpire, maxReplayDuration })) {\n return existingSession;\n }\n\n logInfoNextTick('[Replay] Session in sessionStorage is expired, creating new one...');\n return createSession(sessionOptions, { previousSessionId: existingSession.id });\n}\n\nfunction isCustomEvent(event) {\n return event.type === EventType.Custom;\n}\n\n/**\n * Add an event to the event buffer.\n * In contrast to `addEvent`, this does not return a promise & does not wait for the adding of the event to succeed/fail.\n * Instead this returns `true` if we tried to add the event, else false.\n * It returns `false` e.g. if we are paused, disabled, or out of the max replay duration.\n *\n * `isCheckout` is true if this is either the very first event, or an event triggered by `checkoutEveryNms`.\n */\nfunction addEventSync(replay, event, isCheckout) {\n if (!shouldAddEvent(replay, event)) {\n return false;\n }\n\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n _addEvent(replay, event, isCheckout);\n\n return true;\n}\n\n/**\n * Add an event to the event buffer.\n * Resolves to `null` if no event was added, else to `void`.\n *\n * `isCheckout` is true if this is either the very first event, or an event triggered by `checkoutEveryNms`.\n */\nfunction addEvent(\n replay,\n event,\n isCheckout,\n) {\n if (!shouldAddEvent(replay, event)) {\n return Promise.resolve(null);\n }\n\n return _addEvent(replay, event, isCheckout);\n}\n\nasync function _addEvent(\n replay,\n event,\n isCheckout,\n) {\n if (!replay.eventBuffer) {\n return null;\n }\n\n try {\n if (isCheckout && replay.recordingMode === 'buffer') {\n replay.eventBuffer.clear();\n }\n\n if (isCheckout) {\n replay.eventBuffer.hasCheckout = true;\n }\n\n const replayOptions = replay.getOptions();\n\n const eventAfterPossibleCallback = maybeApplyCallback(event, replayOptions.beforeAddRecordingEvent);\n\n if (!eventAfterPossibleCallback) {\n return;\n }\n\n return await replay.eventBuffer.addEvent(eventAfterPossibleCallback);\n } catch (error) {\n const reason = error && error instanceof EventBufferSizeExceededError ? 'addEventSizeExceeded' : 'addEvent';\n\n DEBUG_BUILD && logger.error(error);\n await replay.stop({ reason });\n\n const client = getClient();\n\n if (client) {\n client.recordDroppedEvent('internal_sdk_error', 'replay');\n }\n }\n}\n\n/** Exported only for tests. */\nfunction shouldAddEvent(replay, event) {\n if (!replay.eventBuffer || replay.isPaused() || !replay.isEnabled()) {\n return false;\n }\n\n const timestampInMs = timestampToMs(event.timestamp);\n\n // Throw out events that happen more than 5 minutes ago. This can happen if\n // page has been left open and idle for a long period of time and user\n // comes back to trigger a new session. The performance entries rely on\n // `performance.timeOrigin`, which is when the page first opened.\n if (timestampInMs + replay.timeouts.sessionIdlePause < Date.now()) {\n return false;\n }\n\n // Throw out events that are +60min from the initial timestamp\n if (timestampInMs > replay.getContext().initialTimestamp + replay.getOptions().maxReplayDuration) {\n logInfo(\n `[Replay] Skipping event with timestamp ${timestampInMs} because it is after maxReplayDuration`,\n replay.getOptions()._experiments.traceInternals,\n );\n return false;\n }\n\n return true;\n}\n\nfunction maybeApplyCallback(\n event,\n callback,\n) {\n try {\n if (typeof callback === 'function' && isCustomEvent(event)) {\n return callback(event);\n }\n } catch (error) {\n DEBUG_BUILD &&\n logger.error('[Replay] An error occured in the `beforeAddRecordingEvent` callback, skipping the event...', error);\n return null;\n }\n\n return event;\n}\n\n/** If the event is an error event */\nfunction isErrorEvent(event) {\n return !event.type;\n}\n\n/** If the event is a transaction event */\nfunction isTransactionEvent(event) {\n return event.type === 'transaction';\n}\n\n/** If the event is an replay event */\nfunction isReplayEvent(event) {\n return event.type === 'replay_event';\n}\n\n/** If the event is a feedback event */\nfunction isFeedbackEvent(event) {\n return event.type === 'feedback';\n}\n\n/**\n * Returns a listener to be added to `client.on('afterSendErrorEvent, listener)`.\n */\nfunction handleAfterSendEvent(replay) {\n // Custom transports may still be returning `Promise`, which means we cannot expect the status code to be available there\n // TODO (v8): remove this check as it will no longer be necessary\n const enforceStatusCode = isBaseTransportSend();\n\n return (event, sendResponse) => {\n if (!replay.isEnabled() || (!isErrorEvent(event) && !isTransactionEvent(event))) {\n return;\n }\n\n const statusCode = sendResponse && sendResponse.statusCode;\n\n // We only want to do stuff on successful error sending, otherwise you get error replays without errors attached\n // If not using the base transport, we allow `undefined` response (as a custom transport may not implement this correctly yet)\n // If we do use the base transport, we skip if we encountered an non-OK status code\n if (enforceStatusCode && (!statusCode || statusCode < 200 || statusCode >= 300)) {\n return;\n }\n\n if (isTransactionEvent(event)) {\n handleTransactionEvent(replay, event);\n return;\n }\n\n handleErrorEvent(replay, event);\n };\n}\n\nfunction handleTransactionEvent(replay, event) {\n const replayContext = replay.getContext();\n\n // Collect traceIds in _context regardless of `recordingMode`\n // In error mode, _context gets cleared on every checkout\n // We limit to max. 100 transactions linked\n if (event.contexts && event.contexts.trace && event.contexts.trace.trace_id && replayContext.traceIds.size < 100) {\n replayContext.traceIds.add(event.contexts.trace.trace_id );\n }\n}\n\nfunction handleErrorEvent(replay, event) {\n const replayContext = replay.getContext();\n\n // Add error to list of errorIds of replay. This is ok to do even if not\n // sampled because context will get reset at next checkout.\n // XXX: There is also a race condition where it's possible to capture an\n // error to Sentry before Replay SDK has loaded, but response returns after\n // it was loaded, and this gets called.\n // We limit to max. 100 errors linked\n if (event.event_id && replayContext.errorIds.size < 100) {\n replayContext.errorIds.add(event.event_id);\n }\n\n // If error event is tagged with replay id it means it was sampled (when in buffer mode)\n // Need to be very careful that this does not cause an infinite loop\n if (replay.recordingMode !== 'buffer' || !event.tags || !event.tags.replayId) {\n return;\n }\n\n const { beforeErrorSampling } = replay.getOptions();\n if (typeof beforeErrorSampling === 'function' && !beforeErrorSampling(event)) {\n return;\n }\n\n setTimeout(() => {\n // Capture current event buffer as new replay\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n replay.sendBufferedReplayOrFlush();\n });\n}\n\nfunction isBaseTransportSend() {\n const client = getClient();\n if (!client) {\n return false;\n }\n\n const transport = client.getTransport();\n if (!transport) {\n return false;\n }\n\n return (\n (transport.send ).__sentry__baseTransport__ || false\n );\n}\n\n/**\n * Returns a listener to be added to `client.on('afterSendErrorEvent, listener)`.\n */\nfunction handleBeforeSendEvent(replay) {\n return (event) => {\n if (!replay.isEnabled() || !isErrorEvent(event)) {\n return;\n }\n\n handleHydrationError(replay, event);\n };\n}\n\nfunction handleHydrationError(replay, event) {\n const exceptionValue = event.exception && event.exception.values && event.exception.values[0].value;\n if (typeof exceptionValue !== 'string') {\n return;\n }\n\n if (\n // Only matches errors in production builds of react-dom\n // Example https://reactjs.org/docs/error-decoder.html?invariant=423\n exceptionValue.match(/reactjs\\.org\\/docs\\/error-decoder\\.html\\?invariant=(418|419|422|423|425)/) ||\n // Development builds of react-dom\n // Error 1: Hydration failed because the initial UI does not match what was rendered on the server.\n // Error 2: Text content does not match server-rendered HTML. Warning: Text content did not match.\n exceptionValue.match(/(does not match server-rendered HTML|Hydration failed because)/i)\n ) {\n const breadcrumb = createBreadcrumb({\n category: 'replay.hydrate-error',\n });\n addBreadcrumbEvent(replay, breadcrumb);\n }\n}\n\n/**\n * Returns true if we think the given event is an error originating inside of rrweb.\n */\nfunction isRrwebError(event, hint) {\n if (event.type || !event.exception || !event.exception.values || !event.exception.values.length) {\n return false;\n }\n\n // @ts-expect-error this may be set by rrweb when it finds errors\n if (hint.originalException && hint.originalException.__rrweb__) {\n return true;\n }\n\n return false;\n}\n\n/**\n * Add a feedback breadcrumb event to replay.\n */\nfunction addFeedbackBreadcrumb(replay, event) {\n replay.triggerUserActivity();\n replay.addUpdate(() => {\n if (!event.timestamp) {\n // Ignore events that don't have timestamps (this shouldn't happen, more of a typing issue)\n // Return true here so that we don't flush\n return true;\n }\n\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n replay.throttledAddEvent({\n type: EventType.Custom,\n timestamp: event.timestamp * 1000,\n data: {\n tag: 'breadcrumb',\n payload: {\n timestamp: event.timestamp,\n type: 'default',\n category: 'sentry.feedback',\n data: {\n feedbackId: event.event_id,\n },\n },\n },\n } );\n\n return false;\n });\n}\n\n/**\n * Determine if event should be sampled (only applies in buffer mode).\n * When an event is captured by `hanldleGlobalEvent`, when in buffer mode\n * we determine if we want to sample the error or not.\n */\nfunction shouldSampleForBufferEvent(replay, event) {\n if (replay.recordingMode !== 'buffer') {\n return false;\n }\n\n // ignore this error because otherwise we could loop indefinitely with\n // trying to capture replay and failing\n if (event.message === UNABLE_TO_SEND_REPLAY) {\n return false;\n }\n\n // Require the event to be an error event & to have an exception\n if (!event.exception || event.type) {\n return false;\n }\n\n return isSampled(replay.getOptions().errorSampleRate);\n}\n\n/**\n * Returns a listener to be added to `addEventProcessor(listener)`.\n */\nfunction handleGlobalEventListener(\n replay,\n includeAfterSendEventHandling = false,\n) {\n const afterSendHandler = includeAfterSendEventHandling ? handleAfterSendEvent(replay) : undefined;\n\n return Object.assign(\n (event, hint) => {\n // Do nothing if replay has been disabled\n if (!replay.isEnabled()) {\n return event;\n }\n\n if (isReplayEvent(event)) {\n // Replays have separate set of breadcrumbs, do not include breadcrumbs\n // from core SDK\n delete event.breadcrumbs;\n return event;\n }\n\n // We only want to handle errors, transactions, and feedbacks, nothing else\n if (!isErrorEvent(event) && !isTransactionEvent(event) && !isFeedbackEvent(event)) {\n return event;\n }\n\n // Ensure we do not add replay_id if the session is expired\n const isSessionActive = replay.checkAndHandleExpiredSession();\n if (!isSessionActive) {\n return event;\n }\n\n if (isFeedbackEvent(event)) {\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n replay.flush();\n event.contexts.feedback.replay_id = replay.getSessionId();\n // Add a replay breadcrumb for this piece of feedback\n addFeedbackBreadcrumb(replay, event);\n return event;\n }\n\n // Unless `captureExceptions` is enabled, we want to ignore errors coming from rrweb\n // As there can be a bunch of stuff going wrong in internals there, that we don't want to bubble up to users\n if (isRrwebError(event, hint) && !replay.getOptions()._experiments.captureExceptions) {\n DEBUG_BUILD && logger.log('[Replay] Ignoring error from rrweb internals', event);\n return null;\n }\n\n // When in buffer mode, we decide to sample here.\n // Later, in `handleAfterSendEvent`, if the replayId is set, we know that we sampled\n // And convert the buffer session to a full session\n const isErrorEventSampled = shouldSampleForBufferEvent(replay, event);\n\n // Tag errors if it has been sampled in buffer mode, or if it is session mode\n // Only tag transactions if in session mode\n const shouldTagReplayId = isErrorEventSampled || replay.recordingMode === 'session';\n\n if (shouldTagReplayId) {\n event.tags = { ...event.tags, replayId: replay.getSessionId() };\n }\n\n // In cases where a custom client is used that does not support the new hooks (yet),\n // we manually call this hook method here\n if (afterSendHandler) {\n // Pretend the error had a 200 response so we always capture it\n afterSendHandler(event, { statusCode: 200 });\n }\n\n return event;\n },\n { id: 'Replay' },\n );\n}\n\n/**\n * Create a \"span\" for each performance entry.\n */\nfunction createPerformanceSpans(\n replay,\n entries,\n) {\n return entries.map(({ type, start, end, name, data }) => {\n const response = replay.throttledAddEvent({\n type: EventType.Custom,\n timestamp: start,\n data: {\n tag: 'performanceSpan',\n payload: {\n op: type,\n description: name,\n startTimestamp: start,\n endTimestamp: end,\n data,\n },\n },\n });\n\n // If response is a string, it means its either THROTTLED or SKIPPED\n return typeof response === 'string' ? Promise.resolve(null) : response;\n });\n}\n\nfunction handleHistory(handlerData) {\n const { from, to } = handlerData;\n\n const now = Date.now() / 1000;\n\n return {\n type: 'navigation.push',\n start: now,\n end: now,\n name: to,\n data: {\n previous: from,\n },\n };\n}\n\n/**\n * Returns a listener to be added to `addHistoryInstrumentationHandler(listener)`.\n */\nfunction handleHistorySpanListener(replay) {\n return (handlerData) => {\n if (!replay.isEnabled()) {\n return;\n }\n\n const result = handleHistory(handlerData);\n\n if (result === null) {\n return;\n }\n\n // Need to collect visited URLs\n replay.getContext().urls.push(result.name);\n replay.triggerUserActivity();\n\n replay.addUpdate(() => {\n createPerformanceSpans(replay, [result]);\n // Returning false to flush\n return false;\n });\n };\n}\n\n/**\n * Check whether a given request URL should be filtered out. This is so we\n * don't log Sentry ingest requests.\n */\nfunction shouldFilterRequest(replay, url) {\n // If we enabled the `traceInternals` experiment, we want to trace everything\n if (DEBUG_BUILD && replay.getOptions()._experiments.traceInternals) {\n return false;\n }\n\n return isSentryRequestUrl(url, getClient());\n}\n\n/** Add a performance entry breadcrumb */\nfunction addNetworkBreadcrumb(\n replay,\n result,\n) {\n if (!replay.isEnabled()) {\n return;\n }\n\n if (result === null) {\n return;\n }\n\n if (shouldFilterRequest(replay, result.name)) {\n return;\n }\n\n replay.addUpdate(() => {\n createPerformanceSpans(replay, [result]);\n // Returning true will cause `addUpdate` to not flush\n // We do not want network requests to cause a flush. This will prevent\n // recurring/polling requests from keeping the replay session alive.\n return true;\n });\n}\n\n/** only exported for tests */\nfunction handleFetch(handlerData) {\n const { startTimestamp, endTimestamp, fetchData, response } = handlerData;\n\n if (!endTimestamp) {\n return null;\n }\n\n // This is only used as a fallback, so we know the body sizes are never set here\n const { method, url } = fetchData;\n\n return {\n type: 'resource.fetch',\n start: startTimestamp / 1000,\n end: endTimestamp / 1000,\n name: url,\n data: {\n method,\n statusCode: response ? (response ).status : undefined,\n },\n };\n}\n\n/**\n * Returns a listener to be added to `addFetchInstrumentationHandler(listener)`.\n */\nfunction handleFetchSpanListener(replay) {\n return (handlerData) => {\n if (!replay.isEnabled()) {\n return;\n }\n\n const result = handleFetch(handlerData);\n\n addNetworkBreadcrumb(replay, result);\n };\n}\n\n/** only exported for tests */\nfunction handleXhr(handlerData) {\n const { startTimestamp, endTimestamp, xhr } = handlerData;\n\n const sentryXhrData = xhr[SENTRY_XHR_DATA_KEY];\n\n if (!startTimestamp || !endTimestamp || !sentryXhrData) {\n return null;\n }\n\n // This is only used as a fallback, so we know the body sizes are never set here\n const { method, url, status_code: statusCode } = sentryXhrData;\n\n if (url === undefined) {\n return null;\n }\n\n return {\n type: 'resource.xhr',\n name: url,\n start: startTimestamp / 1000,\n end: endTimestamp / 1000,\n data: {\n method,\n statusCode,\n },\n };\n}\n\n/**\n * Returns a listener to be added to `addXhrInstrumentationHandler(listener)`.\n */\nfunction handleXhrSpanListener(replay) {\n return (handlerData) => {\n if (!replay.isEnabled()) {\n return;\n }\n\n const result = handleXhr(handlerData);\n\n addNetworkBreadcrumb(replay, result);\n };\n}\n\n/** Get the size of a body. */\nfunction getBodySize(\n body,\n textEncoder,\n) {\n if (!body) {\n return undefined;\n }\n\n try {\n if (typeof body === 'string') {\n return textEncoder.encode(body).length;\n }\n\n if (body instanceof URLSearchParams) {\n return textEncoder.encode(body.toString()).length;\n }\n\n if (body instanceof FormData) {\n const formDataStr = _serializeFormData(body);\n return textEncoder.encode(formDataStr).length;\n }\n\n if (body instanceof Blob) {\n return body.size;\n }\n\n if (body instanceof ArrayBuffer) {\n return body.byteLength;\n }\n\n // Currently unhandled types: ArrayBufferView, ReadableStream\n } catch (e) {\n // just return undefined\n }\n\n return undefined;\n}\n\n/** Convert a Content-Length header to number/undefined. */\nfunction parseContentLengthHeader(header) {\n if (!header) {\n return undefined;\n }\n\n const size = parseInt(header, 10);\n return isNaN(size) ? undefined : size;\n}\n\n/** Get the string representation of a body. */\nfunction getBodyString(body) {\n try {\n if (typeof body === 'string') {\n return [body];\n }\n\n if (body instanceof URLSearchParams) {\n return [body.toString()];\n }\n\n if (body instanceof FormData) {\n return [_serializeFormData(body)];\n }\n\n if (!body) {\n return [undefined];\n }\n } catch (e2) {\n DEBUG_BUILD && logger.warn('[Replay] Failed to serialize body', body);\n return [undefined, 'BODY_PARSE_ERROR'];\n }\n\n DEBUG_BUILD && logger.info('[Replay] Skipping network body because of body type', body);\n\n return [undefined, 'UNPARSEABLE_BODY_TYPE'];\n}\n\n/** Merge a warning into an existing network request/response. */\nfunction mergeWarning(\n info,\n warning,\n) {\n if (!info) {\n return {\n headers: {},\n size: undefined,\n _meta: {\n warnings: [warning],\n },\n };\n }\n\n const newMeta = { ...info._meta };\n const existingWarnings = newMeta.warnings || [];\n newMeta.warnings = [...existingWarnings, warning];\n\n info._meta = newMeta;\n return info;\n}\n\n/** Convert ReplayNetworkRequestData to a PerformanceEntry. */\nfunction makeNetworkReplayBreadcrumb(\n type,\n data,\n) {\n if (!data) {\n return null;\n }\n\n const { startTimestamp, endTimestamp, url, method, statusCode, request, response } = data;\n\n const result = {\n type,\n start: startTimestamp / 1000,\n end: endTimestamp / 1000,\n name: url,\n data: dropUndefinedKeys({\n method,\n statusCode,\n request,\n response,\n }),\n };\n\n return result;\n}\n\n/** Build the request or response part of a replay network breadcrumb that was skipped. */\nfunction buildSkippedNetworkRequestOrResponse(bodySize) {\n return {\n headers: {},\n size: bodySize,\n _meta: {\n warnings: ['URL_SKIPPED'],\n },\n };\n}\n\n/** Build the request or response part of a replay network breadcrumb. */\nfunction buildNetworkRequestOrResponse(\n headers,\n bodySize,\n body,\n) {\n if (!bodySize && Object.keys(headers).length === 0) {\n return undefined;\n }\n\n if (!bodySize) {\n return {\n headers,\n };\n }\n\n if (!body) {\n return {\n headers,\n size: bodySize,\n };\n }\n\n const info = {\n headers,\n size: bodySize,\n };\n\n const { body: normalizedBody, warnings } = normalizeNetworkBody(body);\n info.body = normalizedBody;\n if (warnings && warnings.length > 0) {\n info._meta = {\n warnings,\n };\n }\n\n return info;\n}\n\n/** Filter a set of headers */\nfunction getAllowedHeaders(headers, allowedHeaders) {\n return Object.keys(headers).reduce((filteredHeaders, key) => {\n const normalizedKey = key.toLowerCase();\n // Avoid putting empty strings into the headers\n if (allowedHeaders.includes(normalizedKey) && headers[key]) {\n filteredHeaders[normalizedKey] = headers[key];\n }\n return filteredHeaders;\n }, {});\n}\n\nfunction _serializeFormData(formData) {\n // This is a bit simplified, but gives us a decent estimate\n // This converts e.g. { name: 'Anne Smith', age: 13 } to 'name=Anne+Smith&age=13'\n // @ts-expect-error passing FormData to URLSearchParams actually works\n return new URLSearchParams(formData).toString();\n}\n\nfunction normalizeNetworkBody(body)\n\n {\n if (!body || typeof body !== 'string') {\n return {\n body,\n };\n }\n\n const exceedsSizeLimit = body.length > NETWORK_BODY_MAX_SIZE;\n const isProbablyJson = _strIsProbablyJson(body);\n\n if (exceedsSizeLimit) {\n const truncatedBody = body.slice(0, NETWORK_BODY_MAX_SIZE);\n\n if (isProbablyJson) {\n return {\n body: truncatedBody,\n warnings: ['MAYBE_JSON_TRUNCATED'],\n };\n }\n\n return {\n body: `${truncatedBody}…`,\n warnings: ['TEXT_TRUNCATED'],\n };\n }\n\n if (isProbablyJson) {\n try {\n const jsonBody = JSON.parse(body);\n return {\n body: jsonBody,\n };\n } catch (e3) {\n // fall back to just send the body as string\n }\n }\n\n return {\n body,\n };\n}\n\nfunction _strIsProbablyJson(str) {\n const first = str[0];\n const last = str[str.length - 1];\n\n // Simple check: If this does not start & end with {} or [], it's not JSON\n return (first === '[' && last === ']') || (first === '{' && last === '}');\n}\n\n/** Match an URL against a list of strings/Regex. */\nfunction urlMatches(url, urls) {\n const fullUrl = getFullUrl(url);\n\n return stringMatchesSomePattern(fullUrl, urls);\n}\n\n/** exported for tests */\nfunction getFullUrl(url, baseURI = WINDOW.document.baseURI) {\n // Short circuit for common cases:\n if (url.startsWith('http://') || url.startsWith('https://') || url.startsWith(WINDOW.location.origin)) {\n return url;\n }\n const fixedUrl = new URL(url, baseURI);\n\n // If these do not match, we are not dealing with a relative URL, so just return it\n if (fixedUrl.origin !== new URL(baseURI).origin) {\n return url;\n }\n\n const fullUrl = fixedUrl.href;\n\n // Remove trailing slashes, if they don't match the original URL\n if (!url.endsWith('/') && fullUrl.endsWith('/')) {\n return fullUrl.slice(0, -1);\n }\n\n return fullUrl;\n}\n\n/**\n * Capture a fetch breadcrumb to a replay.\n * This adds additional data (where approriate).\n */\nasync function captureFetchBreadcrumbToReplay(\n breadcrumb,\n hint,\n options\n\n,\n) {\n try {\n const data = await _prepareFetchData(breadcrumb, hint, options);\n\n // Create a replay performance entry from this breadcrumb\n const result = makeNetworkReplayBreadcrumb('resource.fetch', data);\n addNetworkBreadcrumb(options.replay, result);\n } catch (error) {\n DEBUG_BUILD && logger.error('[Replay] Failed to capture fetch breadcrumb', error);\n }\n}\n\n/**\n * Enrich a breadcrumb with additional data.\n * This has to be sync & mutate the given breadcrumb,\n * as the breadcrumb is afterwards consumed by other handlers.\n */\nfunction enrichFetchBreadcrumb(\n breadcrumb,\n hint,\n options,\n) {\n const { input, response } = hint;\n\n const body = input ? _getFetchRequestArgBody(input) : undefined;\n const reqSize = getBodySize(body, options.textEncoder);\n\n const resSize = response ? parseContentLengthHeader(response.headers.get('content-length')) : undefined;\n\n if (reqSize !== undefined) {\n breadcrumb.data.request_body_size = reqSize;\n }\n if (resSize !== undefined) {\n breadcrumb.data.response_body_size = resSize;\n }\n}\n\nasync function _prepareFetchData(\n breadcrumb,\n hint,\n options\n\n,\n) {\n const now = Date.now();\n const { startTimestamp = now, endTimestamp = now } = hint;\n\n const {\n url,\n method,\n status_code: statusCode = 0,\n request_body_size: requestBodySize,\n response_body_size: responseBodySize,\n } = breadcrumb.data;\n\n const captureDetails =\n urlMatches(url, options.networkDetailAllowUrls) && !urlMatches(url, options.networkDetailDenyUrls);\n\n const request = captureDetails\n ? _getRequestInfo(options, hint.input, requestBodySize)\n : buildSkippedNetworkRequestOrResponse(requestBodySize);\n const response = await _getResponseInfo(captureDetails, options, hint.response, responseBodySize);\n\n return {\n startTimestamp,\n endTimestamp,\n url,\n method,\n statusCode,\n request,\n response,\n };\n}\n\nfunction _getRequestInfo(\n { networkCaptureBodies, networkRequestHeaders },\n input,\n requestBodySize,\n) {\n const headers = input ? getRequestHeaders(input, networkRequestHeaders) : {};\n\n if (!networkCaptureBodies) {\n return buildNetworkRequestOrResponse(headers, requestBodySize, undefined);\n }\n\n // We only want to transmit string or string-like bodies\n const requestBody = _getFetchRequestArgBody(input);\n const [bodyStr, warning] = getBodyString(requestBody);\n const data = buildNetworkRequestOrResponse(headers, requestBodySize, bodyStr);\n\n if (warning) {\n return mergeWarning(data, warning);\n }\n\n return data;\n}\n\n/** Exported only for tests. */\nasync function _getResponseInfo(\n captureDetails,\n {\n networkCaptureBodies,\n textEncoder,\n networkResponseHeaders,\n }\n\n,\n response,\n responseBodySize,\n) {\n if (!captureDetails && responseBodySize !== undefined) {\n return buildSkippedNetworkRequestOrResponse(responseBodySize);\n }\n\n const headers = response ? getAllHeaders(response.headers, networkResponseHeaders) : {};\n\n if (!response || (!networkCaptureBodies && responseBodySize !== undefined)) {\n return buildNetworkRequestOrResponse(headers, responseBodySize, undefined);\n }\n\n const [bodyText, warning] = await _parseFetchResponseBody(response);\n const result = getResponseData(bodyText, {\n networkCaptureBodies,\n textEncoder,\n responseBodySize,\n captureDetails,\n headers,\n });\n\n if (warning) {\n return mergeWarning(result, warning);\n }\n\n return result;\n}\n\nfunction getResponseData(\n bodyText,\n {\n networkCaptureBodies,\n textEncoder,\n responseBodySize,\n captureDetails,\n headers,\n }\n\n,\n) {\n try {\n const size =\n bodyText && bodyText.length && responseBodySize === undefined\n ? getBodySize(bodyText, textEncoder)\n : responseBodySize;\n\n if (!captureDetails) {\n return buildSkippedNetworkRequestOrResponse(size);\n }\n\n if (networkCaptureBodies) {\n return buildNetworkRequestOrResponse(headers, size, bodyText);\n }\n\n return buildNetworkRequestOrResponse(headers, size, undefined);\n } catch (error) {\n DEBUG_BUILD && logger.warn('[Replay] Failed to serialize response body', error);\n // fallback\n return buildNetworkRequestOrResponse(headers, responseBodySize, undefined);\n }\n}\n\nasync function _parseFetchResponseBody(response) {\n const res = _tryCloneResponse(response);\n\n if (!res) {\n return [undefined, 'BODY_PARSE_ERROR'];\n }\n\n try {\n const text = await _tryGetResponseText(res);\n return [text];\n } catch (error) {\n DEBUG_BUILD && logger.warn('[Replay] Failed to get text body from response', error);\n return [undefined, 'BODY_PARSE_ERROR'];\n }\n}\n\nfunction _getFetchRequestArgBody(fetchArgs = []) {\n // We only support getting the body from the fetch options\n if (fetchArgs.length !== 2 || typeof fetchArgs[1] !== 'object') {\n return undefined;\n }\n\n return (fetchArgs[1] ).body;\n}\n\nfunction getAllHeaders(headers, allowedHeaders) {\n const allHeaders = {};\n\n allowedHeaders.forEach(header => {\n if (headers.get(header)) {\n allHeaders[header] = headers.get(header) ;\n }\n });\n\n return allHeaders;\n}\n\nfunction getRequestHeaders(fetchArgs, allowedHeaders) {\n if (fetchArgs.length === 1 && typeof fetchArgs[0] !== 'string') {\n return getHeadersFromOptions(fetchArgs[0] , allowedHeaders);\n }\n\n if (fetchArgs.length === 2) {\n return getHeadersFromOptions(fetchArgs[1] , allowedHeaders);\n }\n\n return {};\n}\n\nfunction getHeadersFromOptions(\n input,\n allowedHeaders,\n) {\n if (!input) {\n return {};\n }\n\n const headers = input.headers;\n\n if (!headers) {\n return {};\n }\n\n if (headers instanceof Headers) {\n return getAllHeaders(headers, allowedHeaders);\n }\n\n // We do not support this, as it is not really documented (anymore?)\n if (Array.isArray(headers)) {\n return {};\n }\n\n return getAllowedHeaders(headers, allowedHeaders);\n}\n\nfunction _tryCloneResponse(response) {\n try {\n // We have to clone this, as the body can only be read once\n return response.clone();\n } catch (error) {\n // this can throw if the response was already consumed before\n DEBUG_BUILD && logger.warn('[Replay] Failed to clone response body', error);\n }\n}\n\n/**\n * Get the response body of a fetch request, or timeout after 500ms.\n * Fetch can return a streaming body, that may not resolve (or not for a long time).\n * If that happens, we rather abort after a short time than keep waiting for this.\n */\nfunction _tryGetResponseText(response) {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => reject(new Error('Timeout while trying to read response body')), 500);\n\n _getResponseText(response)\n .then(\n txt => resolve(txt),\n reason => reject(reason),\n )\n .finally(() => clearTimeout(timeout));\n });\n}\n\nasync function _getResponseText(response) {\n // Force this to be a promise, just to be safe\n // eslint-disable-next-line no-return-await\n return await response.text();\n}\n\n/**\n * Capture an XHR breadcrumb to a replay.\n * This adds additional data (where approriate).\n */\nasync function captureXhrBreadcrumbToReplay(\n breadcrumb,\n hint,\n options,\n) {\n try {\n const data = _prepareXhrData(breadcrumb, hint, options);\n\n // Create a replay performance entry from this breadcrumb\n const result = makeNetworkReplayBreadcrumb('resource.xhr', data);\n addNetworkBreadcrumb(options.replay, result);\n } catch (error) {\n DEBUG_BUILD && logger.error('[Replay] Failed to capture xhr breadcrumb', error);\n }\n}\n\n/**\n * Enrich a breadcrumb with additional data.\n * This has to be sync & mutate the given breadcrumb,\n * as the breadcrumb is afterwards consumed by other handlers.\n */\nfunction enrichXhrBreadcrumb(\n breadcrumb,\n hint,\n options,\n) {\n const { xhr, input } = hint;\n\n if (!xhr) {\n return;\n }\n\n const reqSize = getBodySize(input, options.textEncoder);\n const resSize = xhr.getResponseHeader('content-length')\n ? parseContentLengthHeader(xhr.getResponseHeader('content-length'))\n : _getBodySize(xhr.response, xhr.responseType, options.textEncoder);\n\n if (reqSize !== undefined) {\n breadcrumb.data.request_body_size = reqSize;\n }\n if (resSize !== undefined) {\n breadcrumb.data.response_body_size = resSize;\n }\n}\n\nfunction _prepareXhrData(\n breadcrumb,\n hint,\n options,\n) {\n const now = Date.now();\n const { startTimestamp = now, endTimestamp = now, input, xhr } = hint;\n\n const {\n url,\n method,\n status_code: statusCode = 0,\n request_body_size: requestBodySize,\n response_body_size: responseBodySize,\n } = breadcrumb.data;\n\n if (!url) {\n return null;\n }\n\n if (!xhr || !urlMatches(url, options.networkDetailAllowUrls) || urlMatches(url, options.networkDetailDenyUrls)) {\n const request = buildSkippedNetworkRequestOrResponse(requestBodySize);\n const response = buildSkippedNetworkRequestOrResponse(responseBodySize);\n return {\n startTimestamp,\n endTimestamp,\n url,\n method,\n statusCode,\n request,\n response,\n };\n }\n\n const xhrInfo = xhr[SENTRY_XHR_DATA_KEY];\n const networkRequestHeaders = xhrInfo\n ? getAllowedHeaders(xhrInfo.request_headers, options.networkRequestHeaders)\n : {};\n const networkResponseHeaders = getAllowedHeaders(getResponseHeaders(xhr), options.networkResponseHeaders);\n\n const [requestBody, requestWarning] = options.networkCaptureBodies ? getBodyString(input) : [undefined];\n const [responseBody, responseWarning] = options.networkCaptureBodies ? _getXhrResponseBody(xhr) : [undefined];\n\n const request = buildNetworkRequestOrResponse(networkRequestHeaders, requestBodySize, requestBody);\n const response = buildNetworkRequestOrResponse(networkResponseHeaders, responseBodySize, responseBody);\n\n return {\n startTimestamp,\n endTimestamp,\n url,\n method,\n statusCode,\n request: requestWarning ? mergeWarning(request, requestWarning) : request,\n response: responseWarning ? mergeWarning(response, responseWarning) : response,\n };\n}\n\nfunction getResponseHeaders(xhr) {\n const headers = xhr.getAllResponseHeaders();\n\n if (!headers) {\n return {};\n }\n\n return headers.split('\\r\\n').reduce((acc, line) => {\n const [key, value] = line.split(': ');\n acc[key.toLowerCase()] = value;\n return acc;\n }, {});\n}\n\nfunction _getXhrResponseBody(xhr) {\n // We collect errors that happen, but only log them if we can't get any response body\n const errors = [];\n\n try {\n return [xhr.responseText];\n } catch (e) {\n errors.push(e);\n }\n\n // Try to manually parse the response body, if responseText fails\n try {\n return _parseXhrResponse(xhr.response, xhr.responseType);\n } catch (e) {\n errors.push(e);\n }\n\n DEBUG_BUILD && logger.warn('[Replay] Failed to get xhr response body', ...errors);\n\n return [undefined];\n}\n\n/**\n * Get the string representation of the XHR response.\n * Based on MDN, these are the possible types of the response:\n * string\n * ArrayBuffer\n * Blob\n * Document\n * POJO\n *\n * Exported only for tests.\n */\nfunction _parseXhrResponse(\n body,\n responseType,\n) {\n try {\n if (typeof body === 'string') {\n return [body];\n }\n\n if (body instanceof Document) {\n return [body.body.outerHTML];\n }\n\n if (responseType === 'json' && body && typeof body === 'object') {\n return [JSON.stringify(body)];\n }\n\n if (!body) {\n return [undefined];\n }\n } catch (e2) {\n DEBUG_BUILD && logger.warn('[Replay] Failed to serialize body', body);\n return [undefined, 'BODY_PARSE_ERROR'];\n }\n\n DEBUG_BUILD && logger.info('[Replay] Skipping network body because of body type', body);\n\n return [undefined, 'UNPARSEABLE_BODY_TYPE'];\n}\n\nfunction _getBodySize(\n body,\n responseType,\n textEncoder,\n) {\n try {\n const bodyStr = responseType === 'json' && body && typeof body === 'object' ? JSON.stringify(body) : body;\n return getBodySize(bodyStr, textEncoder);\n } catch (e3) {\n return undefined;\n }\n}\n\n/**\n * This method does two things:\n * - It enriches the regular XHR/fetch breadcrumbs with request/response size data\n * - It captures the XHR/fetch breadcrumbs to the replay\n * (enriching it with further data that is _not_ added to the regular breadcrumbs)\n */\nfunction handleNetworkBreadcrumbs(replay) {\n const client = getClient();\n\n try {\n const textEncoder = new TextEncoder();\n\n const {\n networkDetailAllowUrls,\n networkDetailDenyUrls,\n networkCaptureBodies,\n networkRequestHeaders,\n networkResponseHeaders,\n } = replay.getOptions();\n\n const options = {\n replay,\n textEncoder,\n networkDetailAllowUrls,\n networkDetailDenyUrls,\n networkCaptureBodies,\n networkRequestHeaders,\n networkResponseHeaders,\n };\n\n if (client && client.on) {\n client.on('beforeAddBreadcrumb', (breadcrumb, hint) => beforeAddNetworkBreadcrumb(options, breadcrumb, hint));\n } else {\n // Fallback behavior\n addFetchInstrumentationHandler(handleFetchSpanListener(replay));\n addXhrInstrumentationHandler(handleXhrSpanListener(replay));\n }\n } catch (e2) {\n // Do nothing\n }\n}\n\n/** just exported for tests */\nfunction beforeAddNetworkBreadcrumb(\n options,\n breadcrumb,\n hint,\n) {\n if (!breadcrumb.data) {\n return;\n }\n\n try {\n if (_isXhrBreadcrumb(breadcrumb) && _isXhrHint(hint)) {\n // This has to be sync, as we need to ensure the breadcrumb is enriched in the same tick\n // Because the hook runs synchronously, and the breadcrumb is afterwards passed on\n // So any async mutations to it will not be reflected in the final breadcrumb\n enrichXhrBreadcrumb(breadcrumb, hint, options);\n\n // This call should not reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n captureXhrBreadcrumbToReplay(breadcrumb, hint, options);\n }\n\n if (_isFetchBreadcrumb(breadcrumb) && _isFetchHint(hint)) {\n // This has to be sync, as we need to ensure the breadcrumb is enriched in the same tick\n // Because the hook runs synchronously, and the breadcrumb is afterwards passed on\n // So any async mutations to it will not be reflected in the final breadcrumb\n enrichFetchBreadcrumb(breadcrumb, hint, options);\n\n // This call should not reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n captureFetchBreadcrumbToReplay(breadcrumb, hint, options);\n }\n } catch (e) {\n DEBUG_BUILD && logger.warn('Error when enriching network breadcrumb');\n }\n}\n\nfunction _isXhrBreadcrumb(breadcrumb) {\n return breadcrumb.category === 'xhr';\n}\n\nfunction _isFetchBreadcrumb(breadcrumb) {\n return breadcrumb.category === 'fetch';\n}\n\nfunction _isXhrHint(hint) {\n return hint && hint.xhr;\n}\n\nfunction _isFetchHint(hint) {\n return hint && hint.response;\n}\n\nlet _LAST_BREADCRUMB = null;\n\nfunction isBreadcrumbWithCategory(breadcrumb) {\n return !!breadcrumb.category;\n}\n\nconst handleScopeListener =\n (replay) =>\n (scope) => {\n if (!replay.isEnabled()) {\n return;\n }\n\n const result = handleScope(scope);\n\n if (!result) {\n return;\n }\n\n addBreadcrumbEvent(replay, result);\n };\n\n/**\n * An event handler to handle scope changes.\n */\nfunction handleScope(scope) {\n // TODO (v8): Remove this guard. This was put in place because we introduced\n // Scope.getLastBreadcrumb mid-v7 which caused incompatibilities with older SDKs.\n // For now, we'll just return null if the method doesn't exist but we should eventually\n // get rid of this guard.\n const newBreadcrumb = scope.getLastBreadcrumb && scope.getLastBreadcrumb();\n\n // Listener can be called when breadcrumbs have not changed, so we store the\n // reference to the last crumb and only return a crumb if it has changed\n if (_LAST_BREADCRUMB === newBreadcrumb || !newBreadcrumb) {\n return null;\n }\n\n _LAST_BREADCRUMB = newBreadcrumb;\n\n if (\n !isBreadcrumbWithCategory(newBreadcrumb) ||\n ['fetch', 'xhr', 'sentry.event', 'sentry.transaction'].includes(newBreadcrumb.category) ||\n newBreadcrumb.category.startsWith('ui.')\n ) {\n return null;\n }\n\n if (newBreadcrumb.category === 'console') {\n return normalizeConsoleBreadcrumb(newBreadcrumb);\n }\n\n return createBreadcrumb(newBreadcrumb);\n}\n\n/** exported for tests only */\nfunction normalizeConsoleBreadcrumb(\n breadcrumb,\n) {\n const args = breadcrumb.data && breadcrumb.data.arguments;\n\n if (!Array.isArray(args) || args.length === 0) {\n return createBreadcrumb(breadcrumb);\n }\n\n let isTruncated = false;\n\n // Avoid giant args captures\n const normalizedArgs = args.map(arg => {\n if (!arg) {\n return arg;\n }\n if (typeof arg === 'string') {\n if (arg.length > CONSOLE_ARG_MAX_SIZE) {\n isTruncated = true;\n return `${arg.slice(0, CONSOLE_ARG_MAX_SIZE)}…`;\n }\n\n return arg;\n }\n if (typeof arg === 'object') {\n try {\n const normalizedArg = normalize(arg, 7);\n const stringified = JSON.stringify(normalizedArg);\n if (stringified.length > CONSOLE_ARG_MAX_SIZE) {\n isTruncated = true;\n // We use the pretty printed JSON string here as a base\n return `${JSON.stringify(normalizedArg, null, 2).slice(0, CONSOLE_ARG_MAX_SIZE)}…`;\n }\n return normalizedArg;\n } catch (e) {\n // fall back to default\n }\n }\n\n return arg;\n });\n\n return createBreadcrumb({\n ...breadcrumb,\n data: {\n ...breadcrumb.data,\n arguments: normalizedArgs,\n ...(isTruncated ? { _meta: { warnings: ['CONSOLE_ARG_TRUNCATED'] } } : {}),\n },\n });\n}\n\n/**\n * Add global listeners that cannot be removed.\n */\nfunction addGlobalListeners(replay) {\n // Listeners from core SDK //\n const scope = getCurrentScope();\n const client = getClient();\n\n scope.addScopeListener(handleScopeListener(replay));\n addClickKeypressInstrumentationHandler(handleDomListener(replay));\n addHistoryInstrumentationHandler(handleHistorySpanListener(replay));\n handleNetworkBreadcrumbs(replay);\n\n // Tag all (non replay) events that get sent to Sentry with the current\n // replay ID so that we can reference them later in the UI\n const eventProcessor = handleGlobalEventListener(replay, !hasHooks(client));\n if (client && client.addEventProcessor) {\n client.addEventProcessor(eventProcessor);\n } else {\n addEventProcessor(eventProcessor);\n }\n\n // If a custom client has no hooks yet, we continue to use the \"old\" implementation\n if (hasHooks(client)) {\n client.on('beforeSendEvent', handleBeforeSendEvent(replay));\n client.on('afterSendEvent', handleAfterSendEvent(replay));\n client.on('createDsc', (dsc) => {\n const replayId = replay.getSessionId();\n // We do not want to set the DSC when in buffer mode, as that means the replay has not been sent (yet)\n if (replayId && replay.isEnabled() && replay.recordingMode === 'session') {\n // Ensure to check that the session is still active - it could have expired in the meanwhile\n const isSessionActive = replay.checkAndHandleExpiredSession();\n if (isSessionActive) {\n dsc.replay_id = replayId;\n }\n }\n });\n\n client.on('startTransaction', transaction => {\n replay.lastTransaction = transaction;\n });\n\n // We may be missing the initial startTransaction due to timing issues,\n // so we capture it on finish again.\n client.on('finishTransaction', transaction => {\n replay.lastTransaction = transaction;\n });\n\n // We want to flush replay\n client.on('beforeSendFeedback', (feedbackEvent, options) => {\n const replayId = replay.getSessionId();\n if (options && options.includeReplay && replay.isEnabled() && replayId) {\n // This should never reject\n if (feedbackEvent.contexts && feedbackEvent.contexts.feedback) {\n feedbackEvent.contexts.feedback.replay_id = replayId;\n }\n }\n });\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction hasHooks(client) {\n return !!(client && client.on);\n}\n\n/**\n * Create a \"span\" for the total amount of memory being used by JS objects\n * (including v8 internal objects).\n */\nasync function addMemoryEntry(replay) {\n // window.performance.memory is a non-standard API and doesn't work on all browsers, so we try-catch this\n try {\n return Promise.all(\n createPerformanceSpans(replay, [\n // @ts-expect-error memory doesn't exist on type Performance as the API is non-standard (we check that it exists above)\n createMemoryEntry(WINDOW.performance.memory),\n ]),\n );\n } catch (error) {\n // Do nothing\n return [];\n }\n}\n\nfunction createMemoryEntry(memoryEntry) {\n const { jsHeapSizeLimit, totalJSHeapSize, usedJSHeapSize } = memoryEntry;\n // we don't want to use `getAbsoluteTime` because it adds the event time to the\n // time origin, so we get the current timestamp instead\n const time = Date.now() / 1000;\n return {\n type: 'memory',\n name: 'memory',\n start: time,\n end: time,\n data: {\n memory: {\n jsHeapSizeLimit,\n totalJSHeapSize,\n usedJSHeapSize,\n },\n },\n };\n}\n\n/**\n * Heavily simplified debounce function based on lodash.debounce.\n *\n * This function takes a callback function (@param fun) and delays its invocation\n * by @param wait milliseconds. Optionally, a maxWait can be specified in @param options,\n * which ensures that the callback is invoked at least once after the specified max. wait time.\n *\n * @param func the function whose invocation is to be debounced\n * @param wait the minimum time until the function is invoked after it was called once\n * @param options the options object, which can contain the `maxWait` property\n *\n * @returns the debounced version of the function, which needs to be called at least once to start the\n * debouncing process. Subsequent calls will reset the debouncing timer and, in case @paramfunc\n * was already invoked in the meantime, return @param func's return value.\n * The debounced function has two additional properties:\n * - `flush`: Invokes the debounced function immediately and returns its return value\n * - `cancel`: Cancels the debouncing process and resets the debouncing timer\n */\nfunction debounce(func, wait, options) {\n let callbackReturnValue;\n\n let timerId;\n let maxTimerId;\n\n const maxWait = options && options.maxWait ? Math.max(options.maxWait, wait) : 0;\n\n function invokeFunc() {\n cancelTimers();\n callbackReturnValue = func();\n return callbackReturnValue;\n }\n\n function cancelTimers() {\n timerId !== undefined && clearTimeout(timerId);\n maxTimerId !== undefined && clearTimeout(maxTimerId);\n timerId = maxTimerId = undefined;\n }\n\n function flush() {\n if (timerId !== undefined || maxTimerId !== undefined) {\n return invokeFunc();\n }\n return callbackReturnValue;\n }\n\n function debounced() {\n if (timerId) {\n clearTimeout(timerId);\n }\n timerId = setTimeout(invokeFunc, wait);\n\n if (maxWait && maxTimerId === undefined) {\n maxTimerId = setTimeout(invokeFunc, maxWait);\n }\n\n return callbackReturnValue;\n }\n\n debounced.cancel = cancelTimers;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Handler for recording events.\n *\n * Adds to event buffer, and has varying flushing behaviors if the event was a checkout.\n */\nfunction getHandleRecordingEmit(replay) {\n let hadFirstEvent = false;\n\n return (event, _isCheckout) => {\n // If this is false, it means session is expired, create and a new session and wait for checkout\n if (!replay.checkAndHandleExpiredSession()) {\n DEBUG_BUILD && logger.warn('[Replay] Received replay event after session expired.');\n\n return;\n }\n\n // `_isCheckout` is only set when the checkout is due to `checkoutEveryNms`\n // We also want to treat the first event as a checkout, so we handle this specifically here\n const isCheckout = _isCheckout || !hadFirstEvent;\n hadFirstEvent = true;\n\n if (replay.clickDetector) {\n updateClickDetectorForRecordingEvent(replay.clickDetector, event);\n }\n\n // The handler returns `true` if we do not want to trigger debounced flush, `false` if we want to debounce flush.\n replay.addUpdate(() => {\n // The session is always started immediately on pageload/init, but for\n // error-only replays, it should reflect the most recent checkout\n // when an error occurs. Clear any state that happens before this current\n // checkout. This needs to happen before `addEvent()` which updates state\n // dependent on this reset.\n if (replay.recordingMode === 'buffer' && isCheckout) {\n replay.setInitialState();\n }\n\n // If the event is not added (e.g. due to being paused, disabled, or out of the max replay duration),\n // Skip all further steps\n if (!addEventSync(replay, event, isCheckout)) {\n // Return true to skip scheduling a debounced flush\n return true;\n }\n\n // Different behavior for full snapshots (type=2), ignore other event types\n // See https://github.com/rrweb-io/rrweb/blob/d8f9290ca496712aa1e7d472549480c4e7876594/packages/rrweb/src/types.ts#L16\n if (!isCheckout) {\n return false;\n }\n\n // Additionally, create a meta event that will capture certain SDK settings.\n // In order to handle buffer mode, this needs to either be done when we\n // receive checkout events or at flush time.\n //\n // `isCheckout` is always true, but want to be explicit that it should\n // only be added for checkouts\n addSettingsEvent(replay, isCheckout);\n\n // If there is a previousSessionId after a full snapshot occurs, then\n // the replay session was started due to session expiration. The new session\n // is started before triggering a new checkout and contains the id\n // of the previous session. Do not immediately flush in this case\n // to avoid capturing only the checkout and instead the replay will\n // be captured if they perform any follow-up actions.\n if (replay.session && replay.session.previousSessionId) {\n return true;\n }\n\n // When in buffer mode, make sure we adjust the session started date to the current earliest event of the buffer\n // this should usually be the timestamp of the checkout event, but to be safe...\n if (replay.recordingMode === 'buffer' && replay.session && replay.eventBuffer) {\n const earliestEvent = replay.eventBuffer.getEarliestTimestamp();\n if (earliestEvent) {\n logInfo(\n `[Replay] Updating session start time to earliest event in buffer to ${new Date(earliestEvent)}`,\n replay.getOptions()._experiments.traceInternals,\n );\n\n replay.session.started = earliestEvent;\n\n if (replay.getOptions().stickySession) {\n saveSession(replay.session);\n }\n }\n }\n\n if (replay.recordingMode === 'session') {\n // If the full snapshot is due to an initial load, we will not have\n // a previous session ID. In this case, we want to buffer events\n // for a set amount of time before flushing. This can help avoid\n // capturing replays of users that immediately close the window.\n\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n void replay.flush();\n }\n\n return true;\n });\n };\n}\n\n/**\n * Exported for tests\n */\nfunction createOptionsEvent(replay) {\n const options = replay.getOptions();\n return {\n type: EventType.Custom,\n timestamp: Date.now(),\n data: {\n tag: 'options',\n payload: {\n shouldRecordCanvas: replay.isRecordingCanvas(),\n sessionSampleRate: options.sessionSampleRate,\n errorSampleRate: options.errorSampleRate,\n useCompressionOption: options.useCompression,\n blockAllMedia: options.blockAllMedia,\n maskAllText: options.maskAllText,\n maskAllInputs: options.maskAllInputs,\n useCompression: replay.eventBuffer ? replay.eventBuffer.type === 'worker' : false,\n networkDetailHasUrls: options.networkDetailAllowUrls.length > 0,\n networkCaptureBodies: options.networkCaptureBodies,\n networkRequestHasHeaders: options.networkRequestHeaders.length > 0,\n networkResponseHasHeaders: options.networkResponseHeaders.length > 0,\n },\n },\n };\n}\n\n/**\n * Add a \"meta\" event that contains a simplified view on current configuration\n * options. This should only be included on the first segment of a recording.\n */\nfunction addSettingsEvent(replay, isCheckout) {\n // Only need to add this event when sending the first segment\n if (!isCheckout || !replay.session || replay.session.segmentId !== 0) {\n return;\n }\n\n addEventSync(replay, createOptionsEvent(replay), false);\n}\n\n/**\n * Create a replay envelope ready to be sent.\n * This includes both the replay event, as well as the recording data.\n */\nfunction createReplayEnvelope(\n replayEvent,\n recordingData,\n dsn,\n tunnel,\n) {\n return createEnvelope(\n createEventEnvelopeHeaders(replayEvent, getSdkMetadataForEnvelopeHeader(replayEvent), tunnel, dsn),\n [\n [{ type: 'replay_event' }, replayEvent],\n [\n {\n type: 'replay_recording',\n // If string then we need to encode to UTF8, otherwise will have\n // wrong size. TextEncoder has similar browser support to\n // MutationObserver, although it does not accept IE11.\n length:\n typeof recordingData === 'string' ? new TextEncoder().encode(recordingData).length : recordingData.length,\n },\n recordingData,\n ],\n ],\n );\n}\n\n/**\n * Prepare the recording data ready to be sent.\n */\nfunction prepareRecordingData({\n recordingData,\n headers,\n}\n\n) {\n let payloadWithSequence;\n\n // XXX: newline is needed to separate sequence id from events\n const replayHeaders = `${JSON.stringify(headers)}\n`;\n\n if (typeof recordingData === 'string') {\n payloadWithSequence = `${replayHeaders}${recordingData}`;\n } else {\n const enc = new TextEncoder();\n // XXX: newline is needed to separate sequence id from events\n const sequence = enc.encode(replayHeaders);\n // Merge the two Uint8Arrays\n payloadWithSequence = new Uint8Array(sequence.length + recordingData.length);\n payloadWithSequence.set(sequence);\n payloadWithSequence.set(recordingData, sequence.length);\n }\n\n return payloadWithSequence;\n}\n\n/**\n * Prepare a replay event & enrich it with the SDK metadata.\n */\nasync function prepareReplayEvent({\n client,\n scope,\n replayId: event_id,\n event,\n}\n\n) {\n const integrations =\n typeof client._integrations === 'object' && client._integrations !== null && !Array.isArray(client._integrations)\n ? Object.keys(client._integrations)\n : undefined;\n\n const eventHint = { event_id, integrations };\n\n if (client.emit) {\n client.emit('preprocessEvent', event, eventHint);\n }\n\n const preparedEvent = (await prepareEvent(\n client.getOptions(),\n event,\n eventHint,\n scope,\n client,\n getIsolationScope(),\n )) ;\n\n // If e.g. a global event processor returned null\n if (!preparedEvent) {\n return null;\n }\n\n // This normally happens in browser client \"_prepareEvent\"\n // but since we do not use this private method from the client, but rather the plain import\n // we need to do this manually.\n preparedEvent.platform = preparedEvent.platform || 'javascript';\n\n // extract the SDK name because `client._prepareEvent` doesn't add it to the event\n const metadata = client.getSdkMetadata && client.getSdkMetadata();\n const { name, version } = (metadata && metadata.sdk) || {};\n\n preparedEvent.sdk = {\n ...preparedEvent.sdk,\n name: name || 'sentry.javascript.unknown',\n version: version || '0.0.0',\n };\n\n return preparedEvent;\n}\n\n/**\n * Send replay attachment using `fetch()`\n */\nasync function sendReplayRequest({\n recordingData,\n replayId,\n segmentId: segment_id,\n eventContext,\n timestamp,\n session,\n}) {\n const preparedRecordingData = prepareRecordingData({\n recordingData,\n headers: {\n segment_id,\n },\n });\n\n const { urls, errorIds, traceIds, initialTimestamp } = eventContext;\n\n const client = getClient();\n const scope = getCurrentScope();\n const transport = client && client.getTransport();\n const dsn = client && client.getDsn();\n\n if (!client || !transport || !dsn || !session.sampled) {\n return;\n }\n\n const baseEvent = {\n type: REPLAY_EVENT_NAME,\n replay_start_timestamp: initialTimestamp / 1000,\n timestamp: timestamp / 1000,\n error_ids: errorIds,\n trace_ids: traceIds,\n urls,\n replay_id: replayId,\n segment_id,\n replay_type: session.sampled,\n };\n\n const replayEvent = await prepareReplayEvent({ scope, client, replayId, event: baseEvent });\n\n if (!replayEvent) {\n // Taken from baseclient's `_processEvent` method, where this is handled for errors/transactions\n client.recordDroppedEvent('event_processor', 'replay', baseEvent);\n logInfo('An event processor returned `null`, will not send event.');\n return;\n }\n\n /*\n For reference, the fully built event looks something like this:\n {\n \"type\": \"replay_event\",\n \"timestamp\": 1670837008.634,\n \"error_ids\": [\n \"errorId\"\n ],\n \"trace_ids\": [\n \"traceId\"\n ],\n \"urls\": [\n \"https://example.com\"\n ],\n \"replay_id\": \"eventId\",\n \"segment_id\": 3,\n \"replay_type\": \"error\",\n \"platform\": \"javascript\",\n \"event_id\": \"eventId\",\n \"environment\": \"production\",\n \"sdk\": {\n \"integrations\": [\n \"BrowserTracing\",\n \"Replay\"\n ],\n \"name\": \"sentry.javascript.browser\",\n \"version\": \"7.25.0\"\n },\n \"sdkProcessingMetadata\": {},\n \"contexts\": {\n },\n }\n */\n\n // Prevent this data (which, if it exists, was used in earlier steps in the processing pipeline) from being sent to\n // sentry. (Note: Our use of this property comes and goes with whatever we might be debugging, whatever hacks we may\n // have temporarily added, etc. Even if we don't happen to be using it at some point in the future, let's not get rid\n // of this `delete`, lest we miss putting it back in the next time the property is in use.)\n delete replayEvent.sdkProcessingMetadata;\n\n const envelope = createReplayEnvelope(replayEvent, preparedRecordingData, dsn, client.getOptions().tunnel);\n\n let response;\n\n try {\n response = await transport.send(envelope);\n } catch (err) {\n const error = new Error(UNABLE_TO_SEND_REPLAY);\n\n try {\n // In case browsers don't allow this property to be writable\n // @ts-expect-error This needs lib es2022 and newer\n error.cause = err;\n } catch (e) {\n // nothing to do\n }\n throw error;\n }\n\n // TODO (v8): we can remove this guard once transport.send's type signature doesn't include void anymore\n if (!response) {\n return response;\n }\n\n // If the status code is invalid, we want to immediately stop & not retry\n if (typeof response.statusCode === 'number' && (response.statusCode < 200 || response.statusCode >= 300)) {\n throw new TransportStatusCodeError(response.statusCode);\n }\n\n const rateLimits = updateRateLimits({}, response);\n if (isRateLimited(rateLimits, 'replay')) {\n throw new RateLimitError(rateLimits);\n }\n\n return response;\n}\n\n/**\n * This error indicates that the transport returned an invalid status code.\n */\nclass TransportStatusCodeError extends Error {\n constructor(statusCode) {\n super(`Transport returned status code ${statusCode}`);\n }\n}\n\n/**\n * This error indicates that we hit a rate limit API error.\n */\nclass RateLimitError extends Error {\n\n constructor(rateLimits) {\n super('Rate limit hit');\n this.rateLimits = rateLimits;\n }\n}\n\n/**\n * Finalize and send the current replay event to Sentry\n */\nasync function sendReplay(\n replayData,\n retryConfig = {\n count: 0,\n interval: RETRY_BASE_INTERVAL,\n },\n) {\n const { recordingData, options } = replayData;\n\n // short circuit if there's no events to upload (this shouldn't happen as _runFlush makes this check)\n if (!recordingData.length) {\n return;\n }\n\n try {\n await sendReplayRequest(replayData);\n return true;\n } catch (err) {\n if (err instanceof TransportStatusCodeError || err instanceof RateLimitError) {\n throw err;\n }\n\n // Capture error for every failed replay\n setContext('Replays', {\n _retryCount: retryConfig.count,\n });\n\n if (DEBUG_BUILD && options._experiments && options._experiments.captureExceptions) {\n captureException(err);\n }\n\n // If an error happened here, it's likely that uploading the attachment\n // failed, we'll can retry with the same events payload\n if (retryConfig.count >= RETRY_MAX_COUNT) {\n const error = new Error(`${UNABLE_TO_SEND_REPLAY} - max retries exceeded`);\n\n try {\n // In case browsers don't allow this property to be writable\n // @ts-expect-error This needs lib es2022 and newer\n error.cause = err;\n } catch (e) {\n // nothing to do\n }\n\n throw error;\n }\n\n // will retry in intervals of 5, 10, 30\n retryConfig.interval *= ++retryConfig.count;\n\n return new Promise((resolve, reject) => {\n setTimeout(async () => {\n try {\n await sendReplay(replayData, retryConfig);\n resolve(true);\n } catch (err) {\n reject(err);\n }\n }, retryConfig.interval);\n });\n }\n}\n\nconst THROTTLED = '__THROTTLED';\nconst SKIPPED = '__SKIPPED';\n\n/**\n * Create a throttled function off a given function.\n * When calling the throttled function, it will call the original function only\n * if it hasn't been called more than `maxCount` times in the last `durationSeconds`.\n *\n * Returns `THROTTLED` if throttled for the first time, after that `SKIPPED`,\n * or else the return value of the original function.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction throttle(\n fn,\n maxCount,\n durationSeconds,\n) {\n const counter = new Map();\n\n const _cleanup = (now) => {\n const threshold = now - durationSeconds;\n counter.forEach((_value, key) => {\n if (key < threshold) {\n counter.delete(key);\n }\n });\n };\n\n const _getTotalCount = () => {\n return [...counter.values()].reduce((a, b) => a + b, 0);\n };\n\n let isThrottled = false;\n\n return (...rest) => {\n // Date in second-precision, which we use as basis for the throttling\n const now = Math.floor(Date.now() / 1000);\n\n // First, make sure to delete any old entries\n _cleanup(now);\n\n // If already over limit, do nothing\n if (_getTotalCount() >= maxCount) {\n const wasThrottled = isThrottled;\n isThrottled = true;\n return wasThrottled ? SKIPPED : THROTTLED;\n }\n\n isThrottled = false;\n const count = counter.get(now) || 0;\n counter.set(now, count + 1);\n\n return fn(...rest);\n };\n}\n\n/* eslint-disable max-lines */ // TODO: We might want to split this file up\n\n/**\n * The main replay container class, which holds all the state and methods for recording and sending replays.\n */\nclass ReplayContainer {\n\n /**\n * Recording can happen in one of three modes:\n * - session: Record the whole session, sending it continuously\n * - buffer: Always keep the last 60s of recording, requires:\n * - having replaysOnErrorSampleRate > 0 to capture replay when an error occurs\n * - or calling `flush()` to send the replay\n */\n\n /**\n * The current or last active transcation.\n * This is only available when performance is enabled.\n */\n\n /**\n * These are here so we can overwrite them in tests etc.\n * @hidden\n */\n\n /**\n * Options to pass to `rrweb.record()`\n */\n\n /**\n * Timestamp of the last user activity. This lives across sessions.\n */\n\n /**\n * Is the integration currently active?\n */\n\n /**\n * Paused is a state where:\n * - DOM Recording is not listening at all\n * - Nothing will be added to event buffer (e.g. core SDK events)\n */\n\n /**\n * Have we attached listeners to the core SDK?\n * Note we have to track this as there is no way to remove instrumentation handlers.\n */\n\n /**\n * Function to stop recording\n */\n\n /**\n * Internal use for canvas recording options\n */\n\n constructor({\n options,\n recordingOptions,\n }\n\n) {ReplayContainer.prototype.__init.call(this);ReplayContainer.prototype.__init2.call(this);ReplayContainer.prototype.__init3.call(this);ReplayContainer.prototype.__init4.call(this);ReplayContainer.prototype.__init5.call(this);ReplayContainer.prototype.__init6.call(this);\n this.eventBuffer = null;\n this.performanceEntries = [];\n this.replayPerformanceEntries = [];\n this.recordingMode = 'session';\n this.timeouts = {\n sessionIdlePause: SESSION_IDLE_PAUSE_DURATION,\n sessionIdleExpire: SESSION_IDLE_EXPIRE_DURATION,\n } ;\n this._lastActivity = Date.now();\n this._isEnabled = false;\n this._isPaused = false;\n this._hasInitializedCoreListeners = false;\n this._context = {\n errorIds: new Set(),\n traceIds: new Set(),\n urls: [],\n initialTimestamp: Date.now(),\n initialUrl: '',\n };\n\n this._recordingOptions = recordingOptions;\n this._options = options;\n\n this._debouncedFlush = debounce(() => this._flush(), this._options.flushMinDelay, {\n maxWait: this._options.flushMaxDelay,\n });\n\n this._throttledAddEvent = throttle(\n (event, isCheckout) => addEvent(this, event, isCheckout),\n // Max 300 events...\n 300,\n // ... per 5s\n 5,\n );\n\n const { slowClickTimeout, slowClickIgnoreSelectors } = this.getOptions();\n\n const slowClickConfig = slowClickTimeout\n ? {\n threshold: Math.min(SLOW_CLICK_THRESHOLD, slowClickTimeout),\n timeout: slowClickTimeout,\n scrollTimeout: SLOW_CLICK_SCROLL_TIMEOUT,\n ignoreSelector: slowClickIgnoreSelectors ? slowClickIgnoreSelectors.join(',') : '',\n }\n : undefined;\n\n if (slowClickConfig) {\n this.clickDetector = new ClickDetector(this, slowClickConfig);\n }\n }\n\n /** Get the event context. */\n getContext() {\n return this._context;\n }\n\n /** If recording is currently enabled. */\n isEnabled() {\n return this._isEnabled;\n }\n\n /** If recording is currently paused. */\n isPaused() {\n return this._isPaused;\n }\n\n /**\n * Determine if canvas recording is enabled\n */\n isRecordingCanvas() {\n return Boolean(this._canvas);\n }\n\n /** Get the replay integration options. */\n getOptions() {\n return this._options;\n }\n\n /**\n * Initializes the plugin based on sampling configuration. Should not be\n * called outside of constructor.\n */\n initializeSampling(previousSessionId) {\n const { errorSampleRate, sessionSampleRate } = this._options;\n\n // If neither sample rate is > 0, then do nothing - user will need to call one of\n // `start()` or `startBuffering` themselves.\n if (errorSampleRate <= 0 && sessionSampleRate <= 0) {\n return;\n }\n\n // Otherwise if there is _any_ sample rate set, try to load an existing\n // session, or create a new one.\n this._initializeSessionForSampling(previousSessionId);\n\n if (!this.session) {\n // This should not happen, something wrong has occurred\n this._handleException(new Error('Unable to initialize and create session'));\n return;\n }\n\n if (this.session.sampled === false) {\n // This should only occur if `errorSampleRate` is 0 and was unsampled for\n // session-based replay. In this case there is nothing to do.\n return;\n }\n\n // If segmentId > 0, it means we've previously already captured this session\n // In this case, we still want to continue in `session` recording mode\n this.recordingMode = this.session.sampled === 'buffer' && this.session.segmentId === 0 ? 'buffer' : 'session';\n\n logInfoNextTick(\n `[Replay] Starting replay in ${this.recordingMode} mode`,\n this._options._experiments.traceInternals,\n );\n\n this._initializeRecording();\n }\n\n /**\n * Start a replay regardless of sampling rate. Calling this will always\n * create a new session. Will throw an error if replay is already in progress.\n *\n * Creates or loads a session, attaches listeners to varying events (DOM,\n * _performanceObserver, Recording, Sentry SDK, etc)\n */\n start() {\n if (this._isEnabled && this.recordingMode === 'session') {\n throw new Error('Replay recording is already in progress');\n }\n\n if (this._isEnabled && this.recordingMode === 'buffer') {\n throw new Error('Replay buffering is in progress, call `flush()` to save the replay');\n }\n\n logInfoNextTick('[Replay] Starting replay in session mode', this._options._experiments.traceInternals);\n\n const session = loadOrCreateSession(\n {\n maxReplayDuration: this._options.maxReplayDuration,\n sessionIdleExpire: this.timeouts.sessionIdleExpire,\n traceInternals: this._options._experiments.traceInternals,\n },\n {\n stickySession: this._options.stickySession,\n // This is intentional: create a new session-based replay when calling `start()`\n sessionSampleRate: 1,\n allowBuffering: false,\n },\n );\n\n this.session = session;\n\n this._initializeRecording();\n }\n\n /**\n * Start replay buffering. Buffers until `flush()` is called or, if\n * `replaysOnErrorSampleRate` > 0, an error occurs.\n */\n startBuffering() {\n if (this._isEnabled) {\n throw new Error('Replay recording is already in progress');\n }\n\n logInfoNextTick('[Replay] Starting replay in buffer mode', this._options._experiments.traceInternals);\n\n const session = loadOrCreateSession(\n {\n sessionIdleExpire: this.timeouts.sessionIdleExpire,\n maxReplayDuration: this._options.maxReplayDuration,\n traceInternals: this._options._experiments.traceInternals,\n },\n {\n stickySession: this._options.stickySession,\n sessionSampleRate: 0,\n allowBuffering: true,\n },\n );\n\n this.session = session;\n\n this.recordingMode = 'buffer';\n this._initializeRecording();\n }\n\n /**\n * Start recording.\n *\n * Note that this will cause a new DOM checkout\n */\n startRecording() {\n try {\n const canvasOptions = this._canvas;\n\n this._stopRecording = record({\n ...this._recordingOptions,\n // When running in error sampling mode, we need to overwrite `checkoutEveryNms`\n // Without this, it would record forever, until an error happens, which we don't want\n // instead, we'll always keep the last 60 seconds of replay before an error happened\n ...(this.recordingMode === 'buffer' && { checkoutEveryNms: BUFFER_CHECKOUT_TIME }),\n emit: getHandleRecordingEmit(this),\n onMutation: this._onMutationHandler,\n ...(canvasOptions\n ? {\n recordCanvas: canvasOptions.recordCanvas,\n getCanvasManager: canvasOptions.getCanvasManager,\n sampling: canvasOptions.sampling,\n dataURLOptions: canvasOptions.dataURLOptions,\n }\n : {}),\n });\n } catch (err) {\n this._handleException(err);\n }\n }\n\n /**\n * Stops the recording, if it was running.\n *\n * Returns true if it was previously stopped, or is now stopped,\n * otherwise false.\n */\n stopRecording() {\n try {\n if (this._stopRecording) {\n this._stopRecording();\n this._stopRecording = undefined;\n }\n\n return true;\n } catch (err) {\n this._handleException(err);\n return false;\n }\n }\n\n /**\n * Currently, this needs to be manually called (e.g. for tests). Sentry SDK\n * does not support a teardown\n */\n async stop({ forceFlush = false, reason } = {}) {\n if (!this._isEnabled) {\n return;\n }\n\n // We can't move `_isEnabled` after awaiting a flush, otherwise we can\n // enter into an infinite loop when `stop()` is called while flushing.\n this._isEnabled = false;\n\n try {\n logInfo(\n `[Replay] Stopping Replay${reason ? ` triggered by ${reason}` : ''}`,\n this._options._experiments.traceInternals,\n );\n\n this._removeListeners();\n this.stopRecording();\n\n this._debouncedFlush.cancel();\n // See comment above re: `_isEnabled`, we \"force\" a flush, ignoring the\n // `_isEnabled` state of the plugin since it was disabled above.\n if (forceFlush) {\n await this._flush({ force: true });\n }\n\n // After flush, destroy event buffer\n this.eventBuffer && this.eventBuffer.destroy();\n this.eventBuffer = null;\n\n // Clear session from session storage, note this means if a new session\n // is started after, it will not have `previousSessionId`\n clearSession(this);\n } catch (err) {\n this._handleException(err);\n }\n }\n\n /**\n * Pause some replay functionality. See comments for `_isPaused`.\n * This differs from stop as this only stops DOM recording, it is\n * not as thorough of a shutdown as `stop()`.\n */\n pause() {\n if (this._isPaused) {\n return;\n }\n\n this._isPaused = true;\n this.stopRecording();\n\n logInfo('[Replay] Pausing replay', this._options._experiments.traceInternals);\n }\n\n /**\n * Resumes recording, see notes for `pause().\n *\n * Note that calling `startRecording()` here will cause a\n * new DOM checkout.`\n */\n resume() {\n if (!this._isPaused || !this._checkSession()) {\n return;\n }\n\n this._isPaused = false;\n this.startRecording();\n\n logInfo('[Replay] Resuming replay', this._options._experiments.traceInternals);\n }\n\n /**\n * If not in \"session\" recording mode, flush event buffer which will create a new replay.\n * Unless `continueRecording` is false, the replay will continue to record and\n * behave as a \"session\"-based replay.\n *\n * Otherwise, queue up a flush.\n */\n async sendBufferedReplayOrFlush({ continueRecording = true } = {}) {\n if (this.recordingMode === 'session') {\n return this.flushImmediate();\n }\n\n const activityTime = Date.now();\n\n logInfo('[Replay] Converting buffer to session', this._options._experiments.traceInternals);\n\n // Allow flush to complete before resuming as a session recording, otherwise\n // the checkout from `startRecording` may be included in the payload.\n // Prefer to keep the error replay as a separate (and smaller) segment\n // than the session replay.\n await this.flushImmediate();\n\n const hasStoppedRecording = this.stopRecording();\n\n if (!continueRecording || !hasStoppedRecording) {\n return;\n }\n\n // To avoid race conditions where this is called multiple times, we check here again that we are still buffering\n if ((this.recordingMode ) === 'session') {\n return;\n }\n\n // Re-start recording in session-mode\n this.recordingMode = 'session';\n\n // Once this session ends, we do not want to refresh it\n if (this.session) {\n this._updateUserActivity(activityTime);\n this._updateSessionActivity(activityTime);\n this._maybeSaveSession();\n }\n\n this.startRecording();\n }\n\n /**\n * We want to batch uploads of replay events. Save events only if\n * `` milliseconds have elapsed since the last event\n * *OR* if `` milliseconds have elapsed.\n *\n * Accepts a callback to perform side-effects and returns true to stop batch\n * processing and hand back control to caller.\n */\n addUpdate(cb) {\n // We need to always run `cb` (e.g. in the case of `this.recordingMode == 'buffer'`)\n const cbResult = cb();\n\n // If this option is turned on then we will only want to call `flush`\n // explicitly\n if (this.recordingMode === 'buffer') {\n return;\n }\n\n // If callback is true, we do not want to continue with flushing -- the\n // caller will need to handle it.\n if (cbResult === true) {\n return;\n }\n\n // addUpdate is called quite frequently - use _debouncedFlush so that it\n // respects the flush delays and does not flush immediately\n this._debouncedFlush();\n }\n\n /**\n * Updates the user activity timestamp and resumes recording. This should be\n * called in an event handler for a user action that we consider as the user\n * being \"active\" (e.g. a mouse click).\n */\n triggerUserActivity() {\n this._updateUserActivity();\n\n // This case means that recording was once stopped due to inactivity.\n // Ensure that recording is resumed.\n if (!this._stopRecording) {\n // Create a new session, otherwise when the user action is flushed, it\n // will get rejected due to an expired session.\n if (!this._checkSession()) {\n return;\n }\n\n // Note: This will cause a new DOM checkout\n this.resume();\n return;\n }\n\n // Otherwise... recording was never suspended, continue as normalish\n this.checkAndHandleExpiredSession();\n\n this._updateSessionActivity();\n }\n\n /**\n * Updates the user activity timestamp *without* resuming\n * recording. Some user events (e.g. keydown) can be create\n * low-value replays that only contain the keypress as a\n * breadcrumb. Instead this would require other events to\n * create a new replay after a session has expired.\n */\n updateUserActivity() {\n this._updateUserActivity();\n this._updateSessionActivity();\n }\n\n /**\n * Only flush if `this.recordingMode === 'session'`\n */\n conditionalFlush() {\n if (this.recordingMode === 'buffer') {\n return Promise.resolve();\n }\n\n return this.flushImmediate();\n }\n\n /**\n * Flush using debounce flush\n */\n flush() {\n return this._debouncedFlush() ;\n }\n\n /**\n * Always flush via `_debouncedFlush` so that we do not have flushes triggered\n * from calling both `flush` and `_debouncedFlush`. Otherwise, there could be\n * cases of mulitple flushes happening closely together.\n */\n flushImmediate() {\n this._debouncedFlush();\n // `.flush` is provided by the debounced function, analogously to lodash.debounce\n return this._debouncedFlush.flush() ;\n }\n\n /**\n * Cancels queued up flushes.\n */\n cancelFlush() {\n this._debouncedFlush.cancel();\n }\n\n /** Get the current sesion (=replay) ID */\n getSessionId() {\n return this.session && this.session.id;\n }\n\n /**\n * Checks if recording should be stopped due to user inactivity. Otherwise\n * check if session is expired and create a new session if so. Triggers a new\n * full snapshot on new session.\n *\n * Returns true if session is not expired, false otherwise.\n * @hidden\n */\n checkAndHandleExpiredSession() {\n // Prevent starting a new session if the last user activity is older than\n // SESSION_IDLE_PAUSE_DURATION. Otherwise non-user activity can trigger a new\n // session+recording. This creates noisy replays that do not have much\n // content in them.\n if (\n this._lastActivity &&\n isExpired(this._lastActivity, this.timeouts.sessionIdlePause) &&\n this.session &&\n this.session.sampled === 'session'\n ) {\n // Pause recording only for session-based replays. Otherwise, resuming\n // will create a new replay and will conflict with users who only choose\n // to record error-based replays only. (e.g. the resumed replay will not\n // contain a reference to an error)\n this.pause();\n return;\n }\n\n // --- There is recent user activity --- //\n // This will create a new session if expired, based on expiry length\n if (!this._checkSession()) {\n // Check session handles the refreshing itself\n return false;\n }\n\n return true;\n }\n\n /**\n * Capture some initial state that can change throughout the lifespan of the\n * replay. This is required because otherwise they would be captured at the\n * first flush.\n */\n setInitialState() {\n const urlPath = `${WINDOW.location.pathname}${WINDOW.location.hash}${WINDOW.location.search}`;\n const url = `${WINDOW.location.origin}${urlPath}`;\n\n this.performanceEntries = [];\n this.replayPerformanceEntries = [];\n\n // Reset _context as well\n this._clearContext();\n\n this._context.initialUrl = url;\n this._context.initialTimestamp = Date.now();\n this._context.urls.push(url);\n }\n\n /**\n * Add a breadcrumb event, that may be throttled.\n * If it was throttled, we add a custom breadcrumb to indicate that.\n */\n throttledAddEvent(\n event,\n isCheckout,\n ) {\n const res = this._throttledAddEvent(event, isCheckout);\n\n // If this is THROTTLED, it means we have throttled the event for the first time\n // In this case, we want to add a breadcrumb indicating that something was skipped\n if (res === THROTTLED) {\n const breadcrumb = createBreadcrumb({\n category: 'replay.throttled',\n });\n\n this.addUpdate(() => {\n // Return `false` if the event _was_ added, as that means we schedule a flush\n return !addEventSync(this, {\n type: ReplayEventTypeCustom,\n timestamp: breadcrumb.timestamp || 0,\n data: {\n tag: 'breadcrumb',\n payload: breadcrumb,\n metric: true,\n },\n });\n });\n }\n\n return res;\n }\n\n /**\n * This will get the parametrized route name of the current page.\n * This is only available if performance is enabled, and if an instrumented router is used.\n */\n getCurrentRoute() {\n // eslint-disable-next-line deprecation/deprecation\n const lastTransaction = this.lastTransaction || getCurrentScope().getTransaction();\n\n const attributes = (lastTransaction && spanToJSON(lastTransaction).data) || {};\n const source = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n if (!lastTransaction || !source || !['route', 'custom'].includes(source)) {\n return undefined;\n }\n\n return spanToJSON(lastTransaction).description;\n }\n\n /**\n * Initialize and start all listeners to varying events (DOM,\n * Performance Observer, Recording, Sentry SDK, etc)\n */\n _initializeRecording() {\n this.setInitialState();\n\n // this method is generally called on page load or manually - in both cases\n // we should treat it as an activity\n this._updateSessionActivity();\n\n this.eventBuffer = createEventBuffer({\n useCompression: this._options.useCompression,\n workerUrl: this._options.workerUrl,\n });\n\n this._removeListeners();\n this._addListeners();\n\n // Need to set as enabled before we start recording, as `record()` can trigger a flush with a new checkout\n this._isEnabled = true;\n this._isPaused = false;\n\n this.startRecording();\n }\n\n /** A wrapper to conditionally capture exceptions. */\n _handleException(error) {\n DEBUG_BUILD && logger.error('[Replay]', error);\n\n if (DEBUG_BUILD && this._options._experiments && this._options._experiments.captureExceptions) {\n captureException(error);\n }\n }\n\n /**\n * Loads (or refreshes) the current session.\n */\n _initializeSessionForSampling(previousSessionId) {\n // Whenever there is _any_ error sample rate, we always allow buffering\n // Because we decide on sampling when an error occurs, we need to buffer at all times if sampling for errors\n const allowBuffering = this._options.errorSampleRate > 0;\n\n const session = loadOrCreateSession(\n {\n sessionIdleExpire: this.timeouts.sessionIdleExpire,\n maxReplayDuration: this._options.maxReplayDuration,\n traceInternals: this._options._experiments.traceInternals,\n previousSessionId,\n },\n {\n stickySession: this._options.stickySession,\n sessionSampleRate: this._options.sessionSampleRate,\n allowBuffering,\n },\n );\n\n this.session = session;\n }\n\n /**\n * Checks and potentially refreshes the current session.\n * Returns false if session is not recorded.\n */\n _checkSession() {\n // If there is no session yet, we do not want to refresh anything\n // This should generally not happen, but to be safe....\n if (!this.session) {\n return false;\n }\n\n const currentSession = this.session;\n\n if (\n shouldRefreshSession(currentSession, {\n sessionIdleExpire: this.timeouts.sessionIdleExpire,\n maxReplayDuration: this._options.maxReplayDuration,\n })\n ) {\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this._refreshSession(currentSession);\n return false;\n }\n\n return true;\n }\n\n /**\n * Refresh a session with a new one.\n * This stops the current session (without forcing a flush, as that would never work since we are expired),\n * and then does a new sampling based on the refreshed session.\n */\n async _refreshSession(session) {\n if (!this._isEnabled) {\n return;\n }\n await this.stop({ reason: 'refresh session' });\n this.initializeSampling(session.id);\n }\n\n /**\n * Adds listeners to record events for the replay\n */\n _addListeners() {\n try {\n WINDOW.document.addEventListener('visibilitychange', this._handleVisibilityChange);\n WINDOW.addEventListener('blur', this._handleWindowBlur);\n WINDOW.addEventListener('focus', this._handleWindowFocus);\n WINDOW.addEventListener('keydown', this._handleKeyboardEvent);\n\n if (this.clickDetector) {\n this.clickDetector.addListeners();\n }\n\n // There is no way to remove these listeners, so ensure they are only added once\n if (!this._hasInitializedCoreListeners) {\n addGlobalListeners(this);\n\n this._hasInitializedCoreListeners = true;\n }\n } catch (err) {\n this._handleException(err);\n }\n\n this._performanceCleanupCallback = setupPerformanceObserver(this);\n }\n\n /**\n * Cleans up listeners that were created in `_addListeners`\n */\n _removeListeners() {\n try {\n WINDOW.document.removeEventListener('visibilitychange', this._handleVisibilityChange);\n\n WINDOW.removeEventListener('blur', this._handleWindowBlur);\n WINDOW.removeEventListener('focus', this._handleWindowFocus);\n WINDOW.removeEventListener('keydown', this._handleKeyboardEvent);\n\n if (this.clickDetector) {\n this.clickDetector.removeListeners();\n }\n\n if (this._performanceCleanupCallback) {\n this._performanceCleanupCallback();\n }\n } catch (err) {\n this._handleException(err);\n }\n }\n\n /**\n * Handle when visibility of the page content changes. Opening a new tab will\n * cause the state to change to hidden because of content of current page will\n * be hidden. Likewise, moving a different window to cover the contents of the\n * page will also trigger a change to a hidden state.\n */\n __init() {this._handleVisibilityChange = () => {\n if (WINDOW.document.visibilityState === 'visible') {\n this._doChangeToForegroundTasks();\n } else {\n this._doChangeToBackgroundTasks();\n }\n };}\n\n /**\n * Handle when page is blurred\n */\n __init2() {this._handleWindowBlur = () => {\n const breadcrumb = createBreadcrumb({\n category: 'ui.blur',\n });\n\n // Do not count blur as a user action -- it's part of the process of them\n // leaving the page\n this._doChangeToBackgroundTasks(breadcrumb);\n };}\n\n /**\n * Handle when page is focused\n */\n __init3() {this._handleWindowFocus = () => {\n const breadcrumb = createBreadcrumb({\n category: 'ui.focus',\n });\n\n // Do not count focus as a user action -- instead wait until they focus and\n // interactive with page\n this._doChangeToForegroundTasks(breadcrumb);\n };}\n\n /** Ensure page remains active when a key is pressed. */\n __init4() {this._handleKeyboardEvent = (event) => {\n handleKeyboardEvent(this, event);\n };}\n\n /**\n * Tasks to run when we consider a page to be hidden (via blurring and/or visibility)\n */\n _doChangeToBackgroundTasks(breadcrumb) {\n if (!this.session) {\n return;\n }\n\n const expired = isSessionExpired(this.session, {\n maxReplayDuration: this._options.maxReplayDuration,\n sessionIdleExpire: this.timeouts.sessionIdleExpire,\n });\n\n if (expired) {\n return;\n }\n\n if (breadcrumb) {\n this._createCustomBreadcrumb(breadcrumb);\n }\n\n // Send replay when the page/tab becomes hidden. There is no reason to send\n // replay if it becomes visible, since no actions we care about were done\n // while it was hidden\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n void this.conditionalFlush();\n }\n\n /**\n * Tasks to run when we consider a page to be visible (via focus and/or visibility)\n */\n _doChangeToForegroundTasks(breadcrumb) {\n if (!this.session) {\n return;\n }\n\n const isSessionActive = this.checkAndHandleExpiredSession();\n\n if (!isSessionActive) {\n // If the user has come back to the page within SESSION_IDLE_PAUSE_DURATION\n // ms, we will re-use the existing session, otherwise create a new\n // session\n logInfo('[Replay] Document has become active, but session has expired');\n return;\n }\n\n if (breadcrumb) {\n this._createCustomBreadcrumb(breadcrumb);\n }\n }\n\n /**\n * Update user activity (across session lifespans)\n */\n _updateUserActivity(_lastActivity = Date.now()) {\n this._lastActivity = _lastActivity;\n }\n\n /**\n * Updates the session's last activity timestamp\n */\n _updateSessionActivity(_lastActivity = Date.now()) {\n if (this.session) {\n this.session.lastActivity = _lastActivity;\n this._maybeSaveSession();\n }\n }\n\n /**\n * Helper to create (and buffer) a replay breadcrumb from a core SDK breadcrumb\n */\n _createCustomBreadcrumb(breadcrumb) {\n this.addUpdate(() => {\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.throttledAddEvent({\n type: EventType.Custom,\n timestamp: breadcrumb.timestamp || 0,\n data: {\n tag: 'breadcrumb',\n payload: breadcrumb,\n },\n });\n });\n }\n\n /**\n * Observed performance events are added to `this.performanceEntries`. These\n * are included in the replay event before it is finished and sent to Sentry.\n */\n _addPerformanceEntries() {\n const performanceEntries = createPerformanceEntries(this.performanceEntries).concat(this.replayPerformanceEntries);\n\n this.performanceEntries = [];\n this.replayPerformanceEntries = [];\n\n return Promise.all(createPerformanceSpans(this, performanceEntries));\n }\n\n /**\n * Clear _context\n */\n _clearContext() {\n // XXX: `initialTimestamp` and `initialUrl` do not get cleared\n this._context.errorIds.clear();\n this._context.traceIds.clear();\n this._context.urls = [];\n }\n\n /** Update the initial timestamp based on the buffer content. */\n _updateInitialTimestampFromEventBuffer() {\n const { session, eventBuffer } = this;\n if (!session || !eventBuffer) {\n return;\n }\n\n // we only ever update this on the initial segment\n if (session.segmentId) {\n return;\n }\n\n const earliestEvent = eventBuffer.getEarliestTimestamp();\n if (earliestEvent && earliestEvent < this._context.initialTimestamp) {\n this._context.initialTimestamp = earliestEvent;\n }\n }\n\n /**\n * Return and clear _context\n */\n _popEventContext() {\n const _context = {\n initialTimestamp: this._context.initialTimestamp,\n initialUrl: this._context.initialUrl,\n errorIds: Array.from(this._context.errorIds),\n traceIds: Array.from(this._context.traceIds),\n urls: this._context.urls,\n };\n\n this._clearContext();\n\n return _context;\n }\n\n /**\n * Flushes replay event buffer to Sentry.\n *\n * Performance events are only added right before flushing - this is\n * due to the buffered performance observer events.\n *\n * Should never be called directly, only by `flush`\n */\n async _runFlush() {\n const replayId = this.getSessionId();\n\n if (!this.session || !this.eventBuffer || !replayId) {\n DEBUG_BUILD && logger.error('[Replay] No session or eventBuffer found to flush.');\n return;\n }\n\n await this._addPerformanceEntries();\n\n // Check eventBuffer again, as it could have been stopped in the meanwhile\n if (!this.eventBuffer || !this.eventBuffer.hasEvents) {\n return;\n }\n\n // Only attach memory event if eventBuffer is not empty\n await addMemoryEntry(this);\n\n // Check eventBuffer again, as it could have been stopped in the meanwhile\n if (!this.eventBuffer) {\n return;\n }\n\n // if this changed in the meanwhile, e.g. because the session was refreshed or similar, we abort here\n if (replayId !== this.getSessionId()) {\n return;\n }\n\n try {\n // This uses the data from the eventBuffer, so we need to call this before `finish()\n this._updateInitialTimestampFromEventBuffer();\n\n const timestamp = Date.now();\n\n // Check total duration again, to avoid sending outdated stuff\n // We leave 30s wiggle room to accomodate late flushing etc.\n // This _could_ happen when the browser is suspended during flushing, in which case we just want to stop\n if (timestamp - this._context.initialTimestamp > this._options.maxReplayDuration + 30000) {\n throw new Error('Session is too long, not sending replay');\n }\n\n const eventContext = this._popEventContext();\n // Always increment segmentId regardless of outcome of sending replay\n const segmentId = this.session.segmentId++;\n this._maybeSaveSession();\n\n // Note this empties the event buffer regardless of outcome of sending replay\n const recordingData = await this.eventBuffer.finish();\n\n await sendReplay({\n replayId,\n recordingData,\n segmentId,\n eventContext,\n session: this.session,\n options: this.getOptions(),\n timestamp,\n });\n } catch (err) {\n this._handleException(err);\n\n // This means we retried 3 times and all of them failed,\n // or we ran into a problem we don't want to retry, like rate limiting.\n // In this case, we want to completely stop the replay - otherwise, we may get inconsistent segments\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.stop({ reason: 'sendReplay' });\n\n const client = getClient();\n\n if (client) {\n client.recordDroppedEvent('send_error', 'replay');\n }\n }\n }\n\n /**\n * Flush recording data to Sentry. Creates a lock so that only a single flush\n * can be active at a time. Do not call this directly.\n */\n __init5() {this._flush = async ({\n force = false,\n }\n\n = {}) => {\n if (!this._isEnabled && !force) {\n // This can happen if e.g. the replay was stopped because of exceeding the retry limit\n return;\n }\n\n if (!this.checkAndHandleExpiredSession()) {\n DEBUG_BUILD && logger.error('[Replay] Attempting to finish replay event after session expired.');\n return;\n }\n\n if (!this.session) {\n // should never happen, as we would have bailed out before\n return;\n }\n\n const start = this.session.started;\n const now = Date.now();\n const duration = now - start;\n\n // A flush is about to happen, cancel any queued flushes\n this._debouncedFlush.cancel();\n\n // If session is too short, or too long (allow some wiggle room over maxReplayDuration), do not send it\n // This _should_ not happen, but it may happen if flush is triggered due to a page activity change or similar\n const tooShort = duration < this._options.minReplayDuration;\n const tooLong = duration > this._options.maxReplayDuration + 5000;\n if (tooShort || tooLong) {\n logInfo(\n `[Replay] Session duration (${Math.floor(duration / 1000)}s) is too ${\n tooShort ? 'short' : 'long'\n }, not sending replay.`,\n this._options._experiments.traceInternals,\n );\n\n if (tooShort) {\n this._debouncedFlush();\n }\n return;\n }\n\n const eventBuffer = this.eventBuffer;\n if (eventBuffer && this.session.segmentId === 0 && !eventBuffer.hasCheckout) {\n logInfo('[Replay] Flushing initial segment without checkout.', this._options._experiments.traceInternals);\n // TODO FN: Evaluate if we want to stop here, or remove this again?\n }\n\n // this._flushLock acts as a lock so that future calls to `_flush()`\n // will be blocked until this promise resolves\n if (!this._flushLock) {\n this._flushLock = this._runFlush();\n await this._flushLock;\n this._flushLock = undefined;\n return;\n }\n\n // Wait for previous flush to finish, then call the debounced `_flush()`.\n // It's possible there are other flush requests queued and waiting for it\n // to resolve. We want to reduce all outstanding requests (as well as any\n // new flush requests that occur within a second of the locked flush\n // completing) into a single flush.\n\n try {\n await this._flushLock;\n } catch (err) {\n DEBUG_BUILD && logger.error(err);\n } finally {\n this._debouncedFlush();\n }\n };}\n\n /** Save the session, if it is sticky */\n _maybeSaveSession() {\n if (this.session && this._options.stickySession) {\n saveSession(this.session);\n }\n }\n\n /** Handler for rrweb.record.onMutation */\n __init6() {this._onMutationHandler = (mutations) => {\n const count = mutations.length;\n\n const mutationLimit = this._options.mutationLimit;\n const mutationBreadcrumbLimit = this._options.mutationBreadcrumbLimit;\n const overMutationLimit = mutationLimit && count > mutationLimit;\n\n // Create a breadcrumb if a lot of mutations happen at the same time\n // We can show this in the UI as an information with potential performance improvements\n if (count > mutationBreadcrumbLimit || overMutationLimit) {\n const breadcrumb = createBreadcrumb({\n category: 'replay.mutations',\n data: {\n count,\n limit: overMutationLimit,\n },\n });\n this._createCustomBreadcrumb(breadcrumb);\n }\n\n // Stop replay if over the mutation limit\n if (overMutationLimit) {\n // This should never reject\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.stop({ reason: 'mutationLimit', forceFlush: this.recordingMode === 'session' });\n return false;\n }\n\n // `true` means we use the regular mutation handling by rrweb\n return true;\n };}\n}\n\nfunction getOption(\n selectors,\n defaultSelectors,\n deprecatedClassOption,\n deprecatedSelectorOption,\n) {\n const deprecatedSelectors = typeof deprecatedSelectorOption === 'string' ? deprecatedSelectorOption.split(',') : [];\n\n const allSelectors = [\n ...selectors,\n // @deprecated\n ...deprecatedSelectors,\n\n // sentry defaults\n ...defaultSelectors,\n ];\n\n // @deprecated\n if (typeof deprecatedClassOption !== 'undefined') {\n // NOTE: No support for RegExp\n if (typeof deprecatedClassOption === 'string') {\n allSelectors.push(`.${deprecatedClassOption}`);\n }\n\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n '[Replay] You are using a deprecated configuration item for privacy. Read the documentation on how to use the new privacy configuration.',\n );\n });\n }\n\n return allSelectors.join(',');\n}\n\n/**\n * Returns privacy related configuration for use in rrweb\n */\nfunction getPrivacyOptions({\n mask,\n unmask,\n block,\n unblock,\n ignore,\n\n // eslint-disable-next-line deprecation/deprecation\n blockClass,\n // eslint-disable-next-line deprecation/deprecation\n blockSelector,\n // eslint-disable-next-line deprecation/deprecation\n maskTextClass,\n // eslint-disable-next-line deprecation/deprecation\n maskTextSelector,\n // eslint-disable-next-line deprecation/deprecation\n ignoreClass,\n}) {\n const defaultBlockedElements = ['base[href=\"/\"]'];\n\n const maskSelector = getOption(mask, ['.sentry-mask', '[data-sentry-mask]'], maskTextClass, maskTextSelector);\n const unmaskSelector = getOption(unmask, ['.sentry-unmask', '[data-sentry-unmask]']);\n\n const options = {\n // We are making the decision to make text and input selectors the same\n maskTextSelector: maskSelector,\n unmaskTextSelector: unmaskSelector,\n\n blockSelector: getOption(\n block,\n ['.sentry-block', '[data-sentry-block]', ...defaultBlockedElements],\n blockClass,\n blockSelector,\n ),\n unblockSelector: getOption(unblock, ['.sentry-unblock', '[data-sentry-unblock]']),\n ignoreSelector: getOption(ignore, ['.sentry-ignore', '[data-sentry-ignore]', 'input[type=\"file\"]'], ignoreClass),\n };\n\n if (blockClass instanceof RegExp) {\n options.blockClass = blockClass;\n }\n\n if (maskTextClass instanceof RegExp) {\n options.maskTextClass = maskTextClass;\n }\n\n return options;\n}\n\n/**\n * Masks an attribute if necessary, otherwise return attribute value as-is.\n */\nfunction maskAttribute({\n el,\n key,\n maskAttributes,\n maskAllText,\n privacyOptions,\n value,\n}) {\n // We only mask attributes if `maskAllText` is true\n if (!maskAllText) {\n return value;\n }\n\n // unmaskTextSelector takes precendence\n if (privacyOptions.unmaskTextSelector && el.matches(privacyOptions.unmaskTextSelector)) {\n return value;\n }\n\n if (\n maskAttributes.includes(key) ||\n // Need to mask `value` attribute for `` if it's a button-like\n // type\n (key === 'value' && el.tagName === 'INPUT' && ['submit', 'button'].includes(el.getAttribute('type') || ''))\n ) {\n return value.replace(/[\\S]/g, '*');\n }\n\n return value;\n}\n\nconst MEDIA_SELECTORS =\n 'img,image,svg,video,object,picture,embed,map,audio,link[rel=\"icon\"],link[rel=\"apple-touch-icon\"]';\n\nconst DEFAULT_NETWORK_HEADERS = ['content-length', 'content-type', 'accept'];\n\nlet _initialized = false;\n\nconst replayIntegration$1 = ((options) => {\n // eslint-disable-next-line deprecation/deprecation\n return new Replay$1(options);\n}) ;\n\n/**\n * The main replay integration class, to be passed to `init({ integrations: [] })`.\n * @deprecated Use `replayIntegration()` instead.\n */\nclass Replay$1 {\n /**\n * @inheritDoc\n */\n static __initStatic() {this.id = 'Replay';}\n\n /**\n * @inheritDoc\n */\n\n /**\n * Options to pass to `rrweb.record()`\n */\n\n /**\n * Initial options passed to the replay integration, merged with default values.\n * Note: `sessionSampleRate` and `errorSampleRate` are not required here, as they\n * can only be finally set when setupOnce() is called.\n *\n * @private\n */\n\n constructor({\n flushMinDelay = DEFAULT_FLUSH_MIN_DELAY,\n flushMaxDelay = DEFAULT_FLUSH_MAX_DELAY,\n minReplayDuration = MIN_REPLAY_DURATION,\n maxReplayDuration = MAX_REPLAY_DURATION,\n stickySession = true,\n useCompression = true,\n workerUrl,\n _experiments = {},\n sessionSampleRate,\n errorSampleRate,\n maskAllText = true,\n maskAllInputs = true,\n blockAllMedia = true,\n\n mutationBreadcrumbLimit = 750,\n mutationLimit = 10000,\n\n slowClickTimeout = 7000,\n slowClickIgnoreSelectors = [],\n\n networkDetailAllowUrls = [],\n networkDetailDenyUrls = [],\n networkCaptureBodies = true,\n networkRequestHeaders = [],\n networkResponseHeaders = [],\n\n mask = [],\n maskAttributes = ['title', 'placeholder'],\n unmask = [],\n block = [],\n unblock = [],\n ignore = [],\n maskFn,\n\n beforeAddRecordingEvent,\n beforeErrorSampling,\n\n // eslint-disable-next-line deprecation/deprecation\n blockClass,\n // eslint-disable-next-line deprecation/deprecation\n blockSelector,\n // eslint-disable-next-line deprecation/deprecation\n maskInputOptions,\n // eslint-disable-next-line deprecation/deprecation\n maskTextClass,\n // eslint-disable-next-line deprecation/deprecation\n maskTextSelector,\n // eslint-disable-next-line deprecation/deprecation\n ignoreClass,\n } = {}) {\n // eslint-disable-next-line deprecation/deprecation\n this.name = Replay$1.id;\n\n const privacyOptions = getPrivacyOptions({\n mask,\n unmask,\n block,\n unblock,\n ignore,\n blockClass,\n blockSelector,\n maskTextClass,\n maskTextSelector,\n ignoreClass,\n });\n\n this._recordingOptions = {\n maskAllInputs,\n maskAllText,\n maskInputOptions: { ...(maskInputOptions || {}), password: true },\n maskTextFn: maskFn,\n maskInputFn: maskFn,\n maskAttributeFn: (key, value, el) =>\n maskAttribute({\n maskAttributes,\n maskAllText,\n privacyOptions,\n key,\n value,\n el,\n }),\n\n ...privacyOptions,\n\n // Our defaults\n slimDOMOptions: 'all',\n inlineStylesheet: true,\n // Disable inline images as it will increase segment/replay size\n inlineImages: false,\n // collect fonts, but be aware that `sentry.io` needs to be an allowed\n // origin for playback\n collectFonts: true,\n errorHandler: (err) => {\n try {\n err.__rrweb__ = true;\n } catch (error) {\n // ignore errors here\n // this can happen if the error is frozen or does not allow mutation for other reasons\n }\n },\n };\n\n this._initialOptions = {\n flushMinDelay,\n flushMaxDelay,\n minReplayDuration: Math.min(minReplayDuration, MIN_REPLAY_DURATION_LIMIT),\n maxReplayDuration: Math.min(maxReplayDuration, MAX_REPLAY_DURATION),\n stickySession,\n sessionSampleRate,\n errorSampleRate,\n useCompression,\n workerUrl,\n blockAllMedia,\n maskAllInputs,\n maskAllText,\n mutationBreadcrumbLimit,\n mutationLimit,\n slowClickTimeout,\n slowClickIgnoreSelectors,\n networkDetailAllowUrls,\n networkDetailDenyUrls,\n networkCaptureBodies,\n networkRequestHeaders: _getMergedNetworkHeaders(networkRequestHeaders),\n networkResponseHeaders: _getMergedNetworkHeaders(networkResponseHeaders),\n beforeAddRecordingEvent,\n beforeErrorSampling,\n\n _experiments,\n };\n\n if (typeof sessionSampleRate === 'number') {\n // eslint-disable-next-line\n console.warn(\n `[Replay] You are passing \\`sessionSampleRate\\` to the Replay integration.\nThis option is deprecated and will be removed soon.\nInstead, configure \\`replaysSessionSampleRate\\` directly in the SDK init options, e.g.:\nSentry.init({ replaysSessionSampleRate: ${sessionSampleRate} })`,\n );\n\n this._initialOptions.sessionSampleRate = sessionSampleRate;\n }\n\n if (typeof errorSampleRate === 'number') {\n // eslint-disable-next-line\n console.warn(\n `[Replay] You are passing \\`errorSampleRate\\` to the Replay integration.\nThis option is deprecated and will be removed soon.\nInstead, configure \\`replaysOnErrorSampleRate\\` directly in the SDK init options, e.g.:\nSentry.init({ replaysOnErrorSampleRate: ${errorSampleRate} })`,\n );\n\n this._initialOptions.errorSampleRate = errorSampleRate;\n }\n\n if (this._initialOptions.blockAllMedia) {\n // `blockAllMedia` is a more user friendly option to configure blocking\n // embedded media elements\n this._recordingOptions.blockSelector = !this._recordingOptions.blockSelector\n ? MEDIA_SELECTORS\n : `${this._recordingOptions.blockSelector},${MEDIA_SELECTORS}`;\n }\n\n if (this._isInitialized && isBrowser()) {\n throw new Error('Multiple Sentry Session Replay instances are not supported');\n }\n\n this._isInitialized = true;\n }\n\n /** If replay has already been initialized */\n get _isInitialized() {\n return _initialized;\n }\n\n /** Update _isInitialized */\n set _isInitialized(value) {\n _initialized = value;\n }\n\n /**\n * Setup and initialize replay container\n */\n setupOnce() {\n if (!isBrowser()) {\n return;\n }\n\n this._setup();\n\n // Once upon a time, we tried to create a transaction in `setupOnce` and it would\n // potentially create a transaction before some native SDK integrations have run\n // and applied their own global event processor. An example is:\n // https://github.com/getsentry/sentry-javascript/blob/b47ceafbdac7f8b99093ce6023726ad4687edc48/packages/browser/src/integrations/useragent.ts\n //\n // So we call `this._initialize()` in next event loop as a workaround to wait for other\n // global event processors to finish. This is no longer needed, but keeping it\n // here to avoid any future issues.\n setTimeout(() => this._initialize());\n }\n\n /**\n * Start a replay regardless of sampling rate. Calling this will always\n * create a new session. Will throw an error if replay is already in progress.\n *\n * Creates or loads a session, attaches listeners to varying events (DOM,\n * PerformanceObserver, Recording, Sentry SDK, etc)\n */\n start() {\n if (!this._replay) {\n return;\n }\n\n this._replay.start();\n }\n\n /**\n * Start replay buffering. Buffers until `flush()` is called or, if\n * `replaysOnErrorSampleRate` > 0, until an error occurs.\n */\n startBuffering() {\n if (!this._replay) {\n return;\n }\n\n this._replay.startBuffering();\n }\n\n /**\n * Currently, this needs to be manually called (e.g. for tests). Sentry SDK\n * does not support a teardown\n */\n stop() {\n if (!this._replay) {\n return Promise.resolve();\n }\n\n return this._replay.stop({ forceFlush: this._replay.recordingMode === 'session' });\n }\n\n /**\n * If not in \"session\" recording mode, flush event buffer which will create a new replay.\n * Unless `continueRecording` is false, the replay will continue to record and\n * behave as a \"session\"-based replay.\n *\n * Otherwise, queue up a flush.\n */\n flush(options) {\n if (!this._replay || !this._replay.isEnabled()) {\n return Promise.resolve();\n }\n\n return this._replay.sendBufferedReplayOrFlush(options);\n }\n\n /**\n * Get the current session ID.\n */\n getReplayId() {\n if (!this._replay || !this._replay.isEnabled()) {\n return;\n }\n\n return this._replay.getSessionId();\n }\n\n /**\n * Initializes replay.\n */\n _initialize() {\n if (!this._replay) {\n return;\n }\n\n // We have to run this in _initialize, because this runs in setTimeout\n // So when this runs all integrations have been added\n // Before this, we cannot access integrations on the client,\n // so we need to mutate the options here\n this._maybeLoadFromReplayCanvasIntegration();\n\n this._replay.initializeSampling();\n }\n\n /** Setup the integration. */\n _setup() {\n // Client is not available in constructor, so we need to wait until setupOnce\n const finalOptions = loadReplayOptionsFromClient(this._initialOptions);\n\n this._replay = new ReplayContainer({\n options: finalOptions,\n recordingOptions: this._recordingOptions,\n });\n }\n\n /** Get canvas options from ReplayCanvas integration, if it is also added. */\n _maybeLoadFromReplayCanvasIntegration() {\n // To save bundle size, we skip checking for stuff here\n // and instead just try-catch everything - as generally this should all be defined\n /* eslint-disable @typescript-eslint/no-non-null-assertion */\n try {\n const client = getClient();\n const canvasIntegration = client.getIntegrationByName('ReplayCanvas')\n\n;\n if (!canvasIntegration) {\n return;\n }\n\n this._replay['_canvas'] = canvasIntegration.getOptions();\n } catch (e) {\n // ignore errors here\n }\n /* eslint-enable @typescript-eslint/no-non-null-assertion */\n }\n}Replay$1.__initStatic();\n\n/** Parse Replay-related options from SDK options */\nfunction loadReplayOptionsFromClient(initialOptions) {\n const client = getClient();\n const opt = client && (client.getOptions() );\n\n const finalOptions = { sessionSampleRate: 0, errorSampleRate: 0, ...dropUndefinedKeys(initialOptions) };\n\n if (!opt) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn('SDK client is not available.');\n });\n return finalOptions;\n }\n\n if (\n initialOptions.sessionSampleRate == null && // TODO remove once deprecated rates are removed\n initialOptions.errorSampleRate == null && // TODO remove once deprecated rates are removed\n opt.replaysSessionSampleRate == null &&\n opt.replaysOnErrorSampleRate == null\n ) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n 'Replay is disabled because neither `replaysSessionSampleRate` nor `replaysOnErrorSampleRate` are set.',\n );\n });\n }\n\n if (typeof opt.replaysSessionSampleRate === 'number') {\n finalOptions.sessionSampleRate = opt.replaysSessionSampleRate;\n }\n\n if (typeof opt.replaysOnErrorSampleRate === 'number') {\n finalOptions.errorSampleRate = opt.replaysOnErrorSampleRate;\n }\n\n return finalOptions;\n}\n\nfunction _getMergedNetworkHeaders(headers) {\n return [...DEFAULT_NETWORK_HEADERS, ...headers.map(header => header.toLowerCase())];\n}\n\n/**\n * This is a small utility to get a type-safe instance of the Replay integration.\n */\n// eslint-disable-next-line deprecation/deprecation\nfunction getReplay$1() {\n const client = getClient();\n return (\n client && client.getIntegrationByName && client.getIntegrationByName('Replay')\n );\n}\n\n// eslint-disable-next-line deprecation/deprecation\n\n/** @deprecated Use the export from `@sentry/replay` or from framework-specific SDKs like `@sentry/react` or `@sentry/vue` */\nconst getReplay = getReplay$1;\n\n/** @deprecated Use the export from `@sentry/replay` or from framework-specific SDKs like `@sentry/react` or `@sentry/vue` */\nconst replayIntegration = replayIntegration$1;\n\n/** @deprecated Use the export from `@sentry/replay` or from framework-specific SDKs like `@sentry/react` or `@sentry/vue` */\n// eslint-disable-next-line deprecation/deprecation\nclass Replay extends Replay$1 {}\n\nexport { Replay$1 as InternalReplay, Replay, getReplay, getReplay$1 as internalGetReplay, replayIntegration$1 as internalReplayIntegration, replayIntegration };\n//# sourceMappingURL=index.js.map\n","// https://github.com/alangpierce/sucrase/tree/265887868966917f3b924ce38dfad01fbab1329f\n//\n// The MIT License (MIT)\n//\n// Copyright (c) 2012-2018 various contributors (see AUTHORS)\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n// SOFTWARE.\n\n/**\n * Polyfill for the nullish coalescing operator (`??`).\n *\n * Note that the RHS is wrapped in a function so that if it's a computed value, that evaluation won't happen unless the\n * LHS evaluates to a nullish value, to mimic the operator's short-circuiting behavior.\n *\n * Adapted from Sucrase (https://github.com/alangpierce/sucrase)\n *\n * @param lhs The value of the expression to the left of the `??`\n * @param rhsFn A function returning the value of the expression to the right of the `??`\n * @returns The LHS value, unless it's `null` or `undefined`, in which case, the RHS value\n */\nfunction _nullishCoalesce(lhs, rhsFn) {\n // by checking for loose equality to `null`, we catch both `null` and `undefined`\n return lhs != null ? lhs : rhsFn();\n}\n\n// Sucrase version:\n// function _nullishCoalesce(lhs, rhsFn) {\n// if (lhs != null) {\n// return lhs;\n// } else {\n// return rhsFn();\n// }\n// }\n\nexport { _nullishCoalesce };\n//# sourceMappingURL=_nullishCoalesce.js.map\n","import { _optionalChain } from '@sentry/utils';\nimport { defineIntegration, convertIntegrationFnToClass } from '@sentry/core';\n\nvar NodeType;\n(function (NodeType) {\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\n})(NodeType || (NodeType = {}));\nfunction elementClassMatchesRegex(el, regex) {\n for (let eIndex = el.classList.length; eIndex--;) {\n const className = el.classList[eIndex];\n if (regex.test(className)) {\n return true;\n }\n }\n return false;\n}\nfunction distanceToMatch(node, matchPredicate, limit = Infinity, distance = 0) {\n if (!node)\n return -1;\n if (node.nodeType !== node.ELEMENT_NODE)\n return -1;\n if (distance > limit)\n return -1;\n if (matchPredicate(node))\n return distance;\n return distanceToMatch(node.parentNode, matchPredicate, limit, distance + 1);\n}\nfunction createMatchPredicate(className, selector) {\n return (node) => {\n const el = node;\n if (el === null)\n return false;\n try {\n if (className) {\n if (typeof className === 'string') {\n if (el.matches(`.${className}`))\n return true;\n }\n else if (elementClassMatchesRegex(el, className)) {\n return true;\n }\n }\n if (selector && el.matches(selector))\n return true;\n return false;\n }\n catch (e2) {\n return false;\n }\n };\n}\n\nconst DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +\n '\\r\\n' +\n 'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\n '\\r\\n' +\n 'or you can use record.mirror to access the mirror instance during recording.';\nlet _mirror = {\n map: {},\n getId() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return -1;\n },\n getNode() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return null;\n },\n removeNodeFromMap() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n has() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n return false;\n },\n reset() {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n },\n};\nif (typeof window !== 'undefined' && window.Proxy && window.Reflect) {\n _mirror = new Proxy(_mirror, {\n get(target, prop, receiver) {\n if (prop === 'map') {\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\n }\n return Reflect.get(target, prop, receiver);\n },\n });\n}\nfunction hookSetter(target, key, d, isRevoked, win = window) {\n const original = win.Object.getOwnPropertyDescriptor(target, key);\n win.Object.defineProperty(target, key, isRevoked\n ? d\n : {\n set(value) {\n setTimeout(() => {\n d.set.call(this, value);\n }, 0);\n if (original && original.set) {\n original.set.call(this, value);\n }\n },\n });\n return () => hookSetter(target, key, original || {}, true);\n}\nfunction patch(source, name, replacement) {\n try {\n if (!(name in source)) {\n return () => {\n };\n }\n const original = source[name];\n const wrapped = replacement(original);\n if (typeof wrapped === 'function') {\n wrapped.prototype = wrapped.prototype || {};\n Object.defineProperties(wrapped, {\n __rrweb_original__: {\n enumerable: false,\n value: original,\n },\n });\n }\n source[name] = wrapped;\n return () => {\n source[name] = original;\n };\n }\n catch (e2) {\n return () => {\n };\n }\n}\nif (!(/[1-9][0-9]{12}/.test(Date.now().toString()))) ;\nfunction closestElementOfNode(node) {\n if (!node) {\n return null;\n }\n const el = node.nodeType === node.ELEMENT_NODE\n ? node\n : node.parentElement;\n return el;\n}\nfunction isBlocked(node, blockClass, blockSelector, unblockSelector, checkAncestors) {\n if (!node) {\n return false;\n }\n const el = closestElementOfNode(node);\n if (!el) {\n return false;\n }\n const blockedPredicate = createMatchPredicate(blockClass, blockSelector);\n if (!checkAncestors) {\n const isUnblocked = unblockSelector && el.matches(unblockSelector);\n return blockedPredicate(el) && !isUnblocked;\n }\n const blockDistance = distanceToMatch(el, blockedPredicate);\n let unblockDistance = -1;\n if (blockDistance < 0) {\n return false;\n }\n if (unblockSelector) {\n unblockDistance = distanceToMatch(el, createMatchPredicate(null, unblockSelector));\n }\n if (blockDistance > -1 && unblockDistance < 0) {\n return true;\n }\n return blockDistance < unblockDistance;\n}\nconst cachedImplementations = {};\nfunction getImplementation(name) {\n const cached = cachedImplementations[name];\n if (cached) {\n return cached;\n }\n const document = window.document;\n let impl = window[name];\n if (document && typeof document.createElement === 'function') {\n try {\n const sandbox = document.createElement('iframe');\n sandbox.hidden = true;\n document.head.appendChild(sandbox);\n const contentWindow = sandbox.contentWindow;\n if (contentWindow && contentWindow[name]) {\n impl =\n contentWindow[name];\n }\n document.head.removeChild(sandbox);\n }\n catch (e) {\n }\n }\n return (cachedImplementations[name] = impl.bind(window));\n}\nfunction onRequestAnimationFrame(...rest) {\n return getImplementation('requestAnimationFrame')(...rest);\n}\nfunction setTimeout(...rest) {\n return getImplementation('setTimeout')(...rest);\n}\n\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\n\nlet errorHandler;\nfunction registerErrorHandler(handler) {\n errorHandler = handler;\n}\nconst callbackWrapper = (cb) => {\n if (!errorHandler) {\n return cb;\n }\n const rrwebWrapped = ((...rest) => {\n try {\n return cb(...rest);\n }\n catch (error) {\n if (errorHandler && errorHandler(error) === true) {\n return () => {\n };\n }\n throw error;\n }\n });\n return rrwebWrapped;\n};\n\n/*\n * base64-arraybuffer 1.0.1 \n * Copyright (c) 2021 Niklas von Hertzen \n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\n\nconst canvasVarMap = new Map();\nfunction variableListFor(ctx, ctor) {\n let contextMap = canvasVarMap.get(ctx);\n if (!contextMap) {\n contextMap = new Map();\n canvasVarMap.set(ctx, contextMap);\n }\n if (!contextMap.has(ctor)) {\n contextMap.set(ctor, []);\n }\n return contextMap.get(ctor);\n}\nconst saveWebGLVar = (value, win, ctx) => {\n if (!value ||\n !(isInstanceOfWebGLObject(value, win) || typeof value === 'object'))\n return;\n const name = value.constructor.name;\n const list = variableListFor(ctx, name);\n let index = list.indexOf(value);\n if (index === -1) {\n index = list.length;\n list.push(value);\n }\n return index;\n};\nfunction serializeArg(value, win, ctx) {\n if (value instanceof Array) {\n return value.map((arg) => serializeArg(arg, win, ctx));\n }\n else if (value === null) {\n return value;\n }\n else if (value instanceof Float32Array ||\n value instanceof Float64Array ||\n value instanceof Int32Array ||\n value instanceof Uint32Array ||\n value instanceof Uint8Array ||\n value instanceof Uint16Array ||\n value instanceof Int16Array ||\n value instanceof Int8Array ||\n value instanceof Uint8ClampedArray) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [Object.values(value)],\n };\n }\n else if (value instanceof ArrayBuffer) {\n const name = value.constructor.name;\n const base64 = encode(value);\n return {\n rr_type: name,\n base64,\n };\n }\n else if (value instanceof DataView) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [\n serializeArg(value.buffer, win, ctx),\n value.byteOffset,\n value.byteLength,\n ],\n };\n }\n else if (value instanceof HTMLImageElement) {\n const name = value.constructor.name;\n const { src } = value;\n return {\n rr_type: name,\n src,\n };\n }\n else if (value instanceof HTMLCanvasElement) {\n const name = 'HTMLImageElement';\n const src = value.toDataURL();\n return {\n rr_type: name,\n src,\n };\n }\n else if (value instanceof ImageData) {\n const name = value.constructor.name;\n return {\n rr_type: name,\n args: [serializeArg(value.data, win, ctx), value.width, value.height],\n };\n }\n else if (isInstanceOfWebGLObject(value, win) || typeof value === 'object') {\n const name = value.constructor.name;\n const index = saveWebGLVar(value, win, ctx);\n return {\n rr_type: name,\n index: index,\n };\n }\n return value;\n}\nconst serializeArgs = (args, win, ctx) => {\n return args.map((arg) => serializeArg(arg, win, ctx));\n};\nconst isInstanceOfWebGLObject = (value, win) => {\n const webGLConstructorNames = [\n 'WebGLActiveInfo',\n 'WebGLBuffer',\n 'WebGLFramebuffer',\n 'WebGLProgram',\n 'WebGLRenderbuffer',\n 'WebGLShader',\n 'WebGLShaderPrecisionFormat',\n 'WebGLTexture',\n 'WebGLUniformLocation',\n 'WebGLVertexArrayObject',\n 'WebGLVertexArrayObjectOES',\n ];\n const supportedWebGLConstructorNames = webGLConstructorNames.filter((name) => typeof win[name] === 'function');\n return Boolean(supportedWebGLConstructorNames.find((name) => value instanceof win[name]));\n};\n\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector, unblockSelector) {\n const handlers = [];\n const props2D = Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype);\n for (const prop of props2D) {\n try {\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== 'function') {\n continue;\n }\n const restoreHandler = patch(win.CanvasRenderingContext2D.prototype, prop, function (original) {\n return function (...args) {\n if (!isBlocked(this.canvas, blockClass, blockSelector, unblockSelector, true)) {\n setTimeout(() => {\n const recordArgs = serializeArgs(args, win, this);\n cb(this.canvas, {\n type: CanvasContext['2D'],\n property: prop,\n args: recordArgs,\n });\n }, 0);\n }\n return original.apply(this, args);\n };\n });\n handlers.push(restoreHandler);\n }\n catch (e) {\n const hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, {\n set(v) {\n cb(this.canvas, {\n type: CanvasContext['2D'],\n property: prop,\n args: [v],\n setter: true,\n });\n },\n });\n handlers.push(hookHandler);\n }\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\n\nfunction getNormalizedContextName(contextType) {\n return contextType === 'experimental-webgl' ? 'webgl' : contextType;\n}\nfunction initCanvasContextObserver(win, blockClass, blockSelector, unblockSelector, setPreserveDrawingBufferToTrue) {\n const handlers = [];\n try {\n const restoreHandler = patch(win.HTMLCanvasElement.prototype, 'getContext', function (original) {\n return function (contextType, ...args) {\n if (!isBlocked(this, blockClass, blockSelector, unblockSelector, true)) {\n const ctxName = getNormalizedContextName(contextType);\n if (!('__context' in this))\n this.__context = ctxName;\n if (setPreserveDrawingBufferToTrue &&\n ['webgl', 'webgl2'].includes(ctxName)) {\n if (args[0] && typeof args[0] === 'object') {\n const contextAttributes = args[0];\n if (!contextAttributes.preserveDrawingBuffer) {\n contextAttributes.preserveDrawingBuffer = true;\n }\n }\n else {\n args.splice(0, 1, {\n preserveDrawingBuffer: true,\n });\n }\n }\n }\n return original.apply(this, [contextType, ...args]);\n };\n });\n handlers.push(restoreHandler);\n }\n catch (e) {\n console.error('failed to patch HTMLCanvasElement.prototype.getContext');\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\n\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, unblockSelector, mirror, win) {\n const handlers = [];\n const props = Object.getOwnPropertyNames(prototype);\n for (const prop of props) {\n if ([\n 'isContextLost',\n 'canvas',\n 'drawingBufferWidth',\n 'drawingBufferHeight',\n ].includes(prop)) {\n continue;\n }\n try {\n if (typeof prototype[prop] !== 'function') {\n continue;\n }\n const restoreHandler = patch(prototype, prop, function (original) {\n return function (...args) {\n const result = original.apply(this, args);\n saveWebGLVar(result, win, this);\n if ('tagName' in this.canvas &&\n !isBlocked(this.canvas, blockClass, blockSelector, unblockSelector, true)) {\n const recordArgs = serializeArgs(args, win, this);\n const mutation = {\n type,\n property: prop,\n args: recordArgs,\n };\n cb(this.canvas, mutation);\n }\n return result;\n };\n });\n handlers.push(restoreHandler);\n }\n catch (e) {\n const hookHandler = hookSetter(prototype, prop, {\n set(v) {\n cb(this.canvas, {\n type,\n property: prop,\n args: [v],\n setter: true,\n });\n },\n });\n handlers.push(hookHandler);\n }\n }\n return handlers;\n}\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector, unblockSelector, mirror) {\n const handlers = [];\n handlers.push(...patchGLPrototype(win.WebGLRenderingContext.prototype, CanvasContext.WebGL, cb, blockClass, blockSelector, unblockSelector, mirror, win));\n if (typeof win.WebGL2RenderingContext !== 'undefined') {\n handlers.push(...patchGLPrototype(win.WebGL2RenderingContext.prototype, CanvasContext.WebGL2, cb, blockClass, blockSelector, unblockSelector, mirror, win));\n }\n return () => {\n handlers.forEach((h) => h());\n };\n}\n\nvar r = `for(var e=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",t=\"undefined\"==typeof Uint8Array?[]:new Uint8Array(256),a=0;a<64;a++)t[e.charCodeAt(a)]=a;var n=function(t){var a,n=new Uint8Array(t),r=n.length,s=\"\";for(a=0;a>2],s+=e[(3&n[a])<<4|n[a+1]>>4],s+=e[(15&n[a+1])<<2|n[a+2]>>6],s+=e[63&n[a+2]];return r%3==2?s=s.substring(0,s.length-1)+\"=\":r%3==1&&(s=s.substring(0,s.length-2)+\"==\"),s};const r=new Map,s=new Map;const i=self;i.onmessage=async function(e){if(!(\"OffscreenCanvas\"in globalThis))return i.postMessage({id:e.data.id});{const{id:t,bitmap:a,width:o,height:f,maxCanvasSize:c,dataURLOptions:g}=e.data,u=async function(e,t,a){const r=e+\"-\"+t;if(\"OffscreenCanvas\"in globalThis){if(s.has(r))return s.get(r);const i=new OffscreenCanvas(e,t);i.getContext(\"2d\");const o=await i.convertToBlob(a),f=await o.arrayBuffer(),c=n(f);return s.set(r,c),c}return\"\"}(o,f,g),[h,d]=function(e,t,a){if(!a)return[e,t];const[n,r]=a;if(e<=n&&t<=r)return[e,t];let s=e,i=t;return s>n&&(i=Math.floor(n*t/e),s=n),i>r&&(s=Math.floor(r*e/t),i=r),[s,i]}(o,f,c),l=new OffscreenCanvas(h,d),w=l.getContext(\"bitmaprenderer\"),p=h===o&&d===f?a:await createImageBitmap(a,{resizeWidth:h,resizeHeight:d,resizeQuality:\"low\"});w.transferFromImageBitmap(p),a.close();const y=await l.convertToBlob(g),v=y.type,b=await y.arrayBuffer(),m=n(b);if(p.close(),!r.has(t)&&await u===m)return r.set(t,m),i.postMessage({id:t});if(r.get(t)===m)return i.postMessage({id:t});i.postMessage({id:t,type:v,base64:m,width:o,height:f}),r.set(t,m)}};`;\n\nfunction t(){const t=new Blob([r]);return URL.createObjectURL(t)}\n\nclass CanvasManager {\n reset() {\n this.pendingCanvasMutations.clear();\n this.resetObservers && this.resetObservers();\n }\n freeze() {\n this.frozen = true;\n }\n unfreeze() {\n this.frozen = false;\n }\n lock() {\n this.locked = true;\n }\n unlock() {\n this.locked = false;\n }\n constructor(options) {\n this.pendingCanvasMutations = new Map();\n this.rafStamps = { latestId: 0, invokeId: null };\n this.frozen = false;\n this.locked = false;\n this.processMutation = (target, mutation) => {\n const newFrame = this.rafStamps.invokeId &&\n this.rafStamps.latestId !== this.rafStamps.invokeId;\n if (newFrame || !this.rafStamps.invokeId)\n this.rafStamps.invokeId = this.rafStamps.latestId;\n if (!this.pendingCanvasMutations.has(target)) {\n this.pendingCanvasMutations.set(target, []);\n }\n this.pendingCanvasMutations.get(target).push(mutation);\n };\n const { sampling = 'all', win, blockClass, blockSelector, unblockSelector, maxCanvasSize, recordCanvas, dataURLOptions, errorHandler, } = options;\n this.mutationCb = options.mutationCb;\n this.mirror = options.mirror;\n this.options = options;\n if (errorHandler) {\n registerErrorHandler(errorHandler);\n }\n if (options.enableManualSnapshot) {\n return;\n }\n callbackWrapper(() => {\n if (recordCanvas && sampling === 'all')\n this.initCanvasMutationObserver(win, blockClass, blockSelector, unblockSelector);\n if (recordCanvas && typeof sampling === 'number')\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, unblockSelector, maxCanvasSize, {\n dataURLOptions,\n });\n })();\n }\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, unblockSelector, maxCanvasSize, options) {\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, unblockSelector, true);\n const rafId = this.takeSnapshot(false, fps, win, blockClass, blockSelector, unblockSelector, maxCanvasSize, options.dataURLOptions);\n this.resetObservers = () => {\n canvasContextReset();\n cancelAnimationFrame(rafId);\n };\n }\n initCanvasMutationObserver(win, blockClass, blockSelector, unblockSelector) {\n this.startRAFTimestamping();\n this.startPendingCanvasMutationFlusher();\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, unblockSelector, false);\n const canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector, unblockSelector);\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector, unblockSelector, this.mirror);\n this.resetObservers = () => {\n canvasContextReset();\n canvas2DReset();\n canvasWebGL1and2Reset();\n };\n }\n snapshot(canvasElement) {\n const { options } = this;\n const rafId = this.takeSnapshot(true, options.sampling === 'all' ? 2 : options.sampling || 2, options.win, options.blockClass, options.blockSelector, options.unblockSelector, options.maxCanvasSize, options.dataURLOptions, canvasElement);\n this.resetObservers = () => {\n cancelAnimationFrame(rafId);\n };\n }\n takeSnapshot(isManualSnapshot, fps, win, blockClass, blockSelector, unblockSelector, maxCanvasSize, dataURLOptions, canvasElement) {\n const snapshotInProgressMap = new Map();\n const worker = new Worker(t());\n worker.onmessage = (e) => {\n const data = e.data;\n const { id } = data;\n snapshotInProgressMap.set(id, false);\n if (!('base64' in data))\n return;\n const { base64, type, width, height } = data;\n this.mutationCb({\n id,\n type: CanvasContext['2D'],\n commands: [\n {\n property: 'clearRect',\n args: [0, 0, width, height],\n },\n {\n property: 'drawImage',\n args: [\n {\n rr_type: 'ImageBitmap',\n args: [\n {\n rr_type: 'Blob',\n data: [{ rr_type: 'ArrayBuffer', base64 }],\n type,\n },\n ],\n },\n 0,\n 0,\n width,\n height,\n ],\n },\n ],\n });\n };\n const timeBetweenSnapshots = 1000 / fps;\n let lastSnapshotTime = 0;\n let rafId;\n const getCanvas = (canvasElement) => {\n if (canvasElement) {\n return [canvasElement];\n }\n const matchedCanvas = [];\n win.document.querySelectorAll('canvas').forEach((canvas) => {\n if (!isBlocked(canvas, blockClass, blockSelector, unblockSelector, true)) {\n matchedCanvas.push(canvas);\n }\n });\n return matchedCanvas;\n };\n const takeCanvasSnapshots = (timestamp) => {\n if (lastSnapshotTime &&\n timestamp - lastSnapshotTime < timeBetweenSnapshots) {\n rafId = onRequestAnimationFrame(takeCanvasSnapshots);\n return;\n }\n lastSnapshotTime = timestamp;\n getCanvas(canvasElement).forEach((canvas) => {\n const id = this.mirror.getId(canvas);\n if (snapshotInProgressMap.get(id))\n return;\n if (!canvas.width || !canvas.height)\n return;\n snapshotInProgressMap.set(id, true);\n if (!isManualSnapshot &&\n ['webgl', 'webgl2'].includes(canvas.__context)) {\n const context = canvas.getContext(canvas.__context);\n if (_optionalChain([context, 'optionalAccess', _ => _.getContextAttributes, 'call', _2 => _2(), 'optionalAccess', _3 => _3.preserveDrawingBuffer]) === false) {\n context.clear(context.COLOR_BUFFER_BIT);\n }\n }\n createImageBitmap(canvas)\n .then((bitmap) => {\n worker.postMessage({\n id,\n bitmap,\n width: canvas.width,\n height: canvas.height,\n dataURLOptions,\n maxCanvasSize,\n }, [bitmap]);\n })\n .catch((error) => {\n callbackWrapper(() => {\n throw error;\n })();\n });\n });\n rafId = onRequestAnimationFrame(takeCanvasSnapshots);\n };\n rafId = onRequestAnimationFrame(takeCanvasSnapshots);\n return rafId;\n }\n startPendingCanvasMutationFlusher() {\n onRequestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n startRAFTimestamping() {\n const setLatestRAFTimestamp = (timestamp) => {\n this.rafStamps.latestId = timestamp;\n onRequestAnimationFrame(setLatestRAFTimestamp);\n };\n onRequestAnimationFrame(setLatestRAFTimestamp);\n }\n flushPendingCanvasMutations() {\n this.pendingCanvasMutations.forEach((values, canvas) => {\n const id = this.mirror.getId(canvas);\n this.flushPendingCanvasMutationFor(canvas, id);\n });\n onRequestAnimationFrame(() => this.flushPendingCanvasMutations());\n }\n flushPendingCanvasMutationFor(canvas, id) {\n if (this.frozen || this.locked) {\n return;\n }\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\n if (!valuesWithType || id === -1)\n return;\n const values = valuesWithType.map((value) => {\n const { type, ...rest } = value;\n return rest;\n });\n const { type } = valuesWithType[0];\n this.mutationCb({ id, type, commands: values });\n this.pendingCanvasMutations.delete(canvas);\n }\n}\n\nconst CANVAS_QUALITY = {\n low: {\n sampling: {\n canvas: 1,\n },\n dataURLOptions: {\n type: 'image/webp',\n quality: 0.25,\n },\n },\n medium: {\n sampling: {\n canvas: 2,\n },\n dataURLOptions: {\n type: 'image/webp',\n quality: 0.4,\n },\n },\n high: {\n sampling: {\n canvas: 4,\n },\n dataURLOptions: {\n type: 'image/webp',\n quality: 0.5,\n },\n },\n};\n\nconst INTEGRATION_NAME = 'ReplayCanvas';\nconst DEFAULT_MAX_CANVAS_SIZE = 1280;\n\n/** Exported only for type safe tests. */\nconst _replayCanvasIntegration = ((options = {}) => {\n const [maxCanvasWidth, maxCanvasHeight] = options.maxCanvasSize || [];\n const _canvasOptions = {\n quality: options.quality || 'medium',\n enableManualSnapshot: options.enableManualSnapshot,\n maxCanvasSize: [\n maxCanvasWidth ? Math.min(maxCanvasWidth, DEFAULT_MAX_CANVAS_SIZE) : DEFAULT_MAX_CANVAS_SIZE,\n maxCanvasHeight ? Math.min(maxCanvasHeight, DEFAULT_MAX_CANVAS_SIZE) : DEFAULT_MAX_CANVAS_SIZE,\n ] ,\n };\n\n let canvasManagerResolve;\n const _canvasManager = new Promise(resolve => (canvasManagerResolve = resolve));\n\n return {\n name: INTEGRATION_NAME,\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n setupOnce() {},\n getOptions() {\n const { quality, enableManualSnapshot, maxCanvasSize } = _canvasOptions;\n\n return {\n enableManualSnapshot,\n recordCanvas: true,\n getCanvasManager: (getCanvasManagerOptions) => {\n const manager = new CanvasManager({\n ...getCanvasManagerOptions,\n enableManualSnapshot,\n maxCanvasSize,\n errorHandler: (err) => {\n try {\n if (typeof err === 'object') {\n (err ).__rrweb__ = true;\n }\n } catch (error) {\n // ignore errors here\n // this can happen if the error is frozen or does not allow mutation for other reasons\n }\n },\n });\n canvasManagerResolve(manager);\n return manager;\n },\n ...(CANVAS_QUALITY[quality || 'medium'] || CANVAS_QUALITY.medium),\n };\n },\n async snapshot(canvasElement) {\n const canvasManager = await _canvasManager;\n canvasManager.snapshot(canvasElement);\n },\n };\n}) ;\n\n/**\n * Add this in addition to `replayIntegration()` to enable canvas recording.\n */\nconst replayCanvasIntegration = defineIntegration(_replayCanvasIntegration);\n\n/**\n * @deprecated Use `replayCanvasIntegration()` instead\n */\n// eslint-disable-next-line deprecation/deprecation\nconst ReplayCanvas = convertIntegrationFnToClass(INTEGRATION_NAME, replayCanvasIntegration)\n\n;\n\nexport { ReplayCanvas, replayCanvasIntegration };\n//# sourceMappingURL=index.js.map\n","import { GLOBAL_OBJ, getLocationHref, logger, isBrowser } from '@sentry/utils';\nimport { prepareEvent, getIsolationScope, getClient, withScope, createEventEnvelope, getCurrentScope } from '@sentry/core';\n\n// exporting a separate copy of `WINDOW` rather than exporting the one from `@sentry/browser`\n// prevents the browser package from being bundled in the CDN bundle, and avoids a\n// circular dependency between the browser and feedback packages\nconst WINDOW = GLOBAL_OBJ ;\n\nconst LIGHT_BACKGROUND = '#ffffff';\nconst INHERIT = 'inherit';\nconst SUBMIT_COLOR = 'rgba(108, 95, 199, 1)';\nconst LIGHT_THEME = {\n fontFamily: \"system-ui, 'Helvetica Neue', Arial, sans-serif\",\n fontSize: '14px',\n\n background: LIGHT_BACKGROUND,\n backgroundHover: '#f6f6f7',\n foreground: '#2b2233',\n border: '1.5px solid rgba(41, 35, 47, 0.13)',\n borderRadius: '25px',\n boxShadow: '0px 4px 24px 0px rgba(43, 34, 51, 0.12)',\n\n success: '#268d75',\n error: '#df3338',\n\n submitBackground: 'rgba(88, 74, 192, 1)',\n submitBackgroundHover: SUBMIT_COLOR,\n submitBorder: SUBMIT_COLOR,\n submitOutlineFocus: '#29232f',\n submitForeground: LIGHT_BACKGROUND,\n submitForegroundHover: LIGHT_BACKGROUND,\n\n cancelBackground: 'transparent',\n cancelBackgroundHover: 'var(--background-hover)',\n cancelBorder: 'var(--border)',\n cancelOutlineFocus: 'var(--input-outline-focus)',\n cancelForeground: 'var(--foreground)',\n cancelForegroundHover: 'var(--foreground)',\n\n inputBackground: INHERIT,\n inputForeground: INHERIT,\n inputBorder: 'var(--border)',\n inputOutlineFocus: SUBMIT_COLOR,\n\n formBorderRadius: '20px',\n formContentBorderRadius: '6px',\n};\n\nconst DEFAULT_THEME = {\n light: LIGHT_THEME,\n dark: {\n ...LIGHT_THEME,\n\n background: '#29232f',\n backgroundHover: '#352f3b',\n foreground: '#ebe6ef',\n border: '1.5px solid rgba(235, 230, 239, 0.15)',\n\n success: '#2da98c',\n error: '#f55459',\n },\n};\n\nconst ACTOR_LABEL = 'Report a Bug';\nconst CANCEL_BUTTON_LABEL = 'Cancel';\nconst SUBMIT_BUTTON_LABEL = 'Send Bug Report';\nconst FORM_TITLE = 'Report a Bug';\nconst EMAIL_PLACEHOLDER = 'your.email@example.org';\nconst EMAIL_LABEL = 'Email';\nconst MESSAGE_PLACEHOLDER = \"What's the bug? What did you expect?\";\nconst MESSAGE_LABEL = 'Description';\nconst NAME_PLACEHOLDER = 'Your Name';\nconst NAME_LABEL = 'Name';\nconst IS_REQUIRED_LABEL = '(required)';\nconst SUCCESS_MESSAGE_TEXT = 'Thank you for your report!';\n\nconst FEEDBACK_WIDGET_SOURCE = 'widget';\nconst FEEDBACK_API_SOURCE = 'api';\n\n/**\n * Prepare a feedback event & enrich it with the SDK metadata.\n */\nasync function prepareFeedbackEvent({\n client,\n scope,\n event,\n}) {\n const eventHint = {};\n if (client.emit) {\n client.emit('preprocessEvent', event, eventHint);\n }\n\n const preparedEvent = (await prepareEvent(\n client.getOptions(),\n event,\n eventHint,\n scope,\n client,\n getIsolationScope(),\n )) ;\n\n if (preparedEvent === null) {\n // Taken from baseclient's `_processEvent` method, where this is handled for errors/transactions\n client.recordDroppedEvent('event_processor', 'feedback', event);\n return null;\n }\n\n // This normally happens in browser client \"_prepareEvent\"\n // but since we do not use this private method from the client, but rather the plain import\n // we need to do this manually.\n preparedEvent.platform = preparedEvent.platform || 'javascript';\n\n return preparedEvent;\n}\n\n/**\n * Send feedback using transport\n */\nasync function sendFeedbackRequest(\n { feedback: { message, email, name, source, url } },\n { includeReplay = true } = {},\n) {\n const client = getClient();\n const transport = client && client.getTransport();\n const dsn = client && client.getDsn();\n\n if (!client || !transport || !dsn) {\n return;\n }\n\n const baseEvent = {\n contexts: {\n feedback: {\n contact_email: email,\n name,\n message,\n url,\n source,\n },\n },\n type: 'feedback',\n };\n\n return withScope(async scope => {\n // No use for breadcrumbs in feedback\n scope.clearBreadcrumbs();\n\n if ([FEEDBACK_API_SOURCE, FEEDBACK_WIDGET_SOURCE].includes(String(source))) {\n scope.setLevel('info');\n }\n\n const feedbackEvent = await prepareFeedbackEvent({\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n scope: scope ,\n client,\n event: baseEvent,\n });\n\n if (!feedbackEvent) {\n return;\n }\n\n if (client.emit) {\n client.emit('beforeSendFeedback', feedbackEvent, { includeReplay: Boolean(includeReplay) });\n }\n\n const envelope = createEventEnvelope(feedbackEvent, dsn, client.getOptions()._metadata, client.getOptions().tunnel);\n\n let response;\n\n try {\n response = await transport.send(envelope);\n } catch (err) {\n const error = new Error('Unable to send Feedback');\n\n try {\n // In case browsers don't allow this property to be writable\n // @ts-expect-error This needs lib es2022 and newer\n error.cause = err;\n } catch (e) {\n // nothing to do\n }\n throw error;\n }\n\n // TODO (v8): we can remove this guard once transport.send's type signature doesn't include void anymore\n if (!response) {\n return;\n }\n\n // Require valid status codes, otherwise can assume feedback was not sent successfully\n if (typeof response.statusCode === 'number' && (response.statusCode < 200 || response.statusCode >= 300)) {\n throw new Error('Unable to send Feedback');\n }\n\n return response;\n });\n}\n\n/*\n * For reference, the fully built event looks something like this:\n * {\n * \"type\": \"feedback\",\n * \"event_id\": \"d2132d31b39445f1938d7e21b6bf0ec4\",\n * \"timestamp\": 1597977777.6189718,\n * \"dist\": \"1.12\",\n * \"platform\": \"javascript\",\n * \"environment\": \"production\",\n * \"release\": 42,\n * \"tags\": {\"transaction\": \"/organizations/:orgId/performance/:eventSlug/\"},\n * \"sdk\": {\"name\": \"name\", \"version\": \"version\"},\n * \"user\": {\n * \"id\": \"123\",\n * \"username\": \"user\",\n * \"email\": \"user@site.com\",\n * \"ip_address\": \"192.168.11.12\",\n * },\n * \"request\": {\n * \"url\": None,\n * \"headers\": {\n * \"user-Agent\": \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.5 Safari/605.1.15\"\n * },\n * },\n * \"contexts\": {\n * \"feedback\": {\n * \"message\": \"test message\",\n * \"contact_email\": \"test@example.com\",\n * \"type\": \"feedback\",\n * },\n * \"trace\": {\n * \"trace_id\": \"4C79F60C11214EB38604F4AE0781BFB2\",\n * \"span_id\": \"FA90FDEAD5F74052\",\n * \"type\": \"trace\",\n * },\n * \"replay\": {\n * \"replay_id\": \"e2d42047b1c5431c8cba85ee2a8ab25d\",\n * },\n * },\n * }\n */\n\n/**\n * Public API to send a Feedback item to Sentry\n */\nfunction sendFeedback(\n { name, email, message, source = FEEDBACK_API_SOURCE, url = getLocationHref() },\n options = {},\n) {\n if (!message) {\n throw new Error('Unable to submit feedback with empty message');\n }\n\n return sendFeedbackRequest(\n {\n feedback: {\n name,\n email,\n message,\n url,\n source,\n },\n },\n options,\n );\n}\n\n/**\n * This serves as a build time flag that will be true by default, but false in non-debug builds or if users replace `__SENTRY_DEBUG__` in their generated code.\n *\n * ATTENTION: This constant must never cross package boundaries (i.e. be exported) to guarantee that it can be used for tree shaking.\n */\nconst DEBUG_BUILD = (typeof __SENTRY_DEBUG__ === 'undefined' || __SENTRY_DEBUG__);\n\n/**\n * Quick and dirty deep merge for the Feedback integration options\n */\nfunction mergeOptions(\n defaultOptions,\n optionOverrides,\n) {\n return {\n ...defaultOptions,\n ...optionOverrides,\n themeDark: {\n ...defaultOptions.themeDark,\n ...optionOverrides.themeDark,\n },\n themeLight: {\n ...defaultOptions.themeLight,\n ...optionOverrides.themeLight,\n },\n };\n}\n\n/**\n * Creates