{"version":3,"file":"js/593-e0db9732735a0a3895a3.js","mappings":"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","sources":["webpack://artfully-walls/./node_modules/@sentry-internal/browser-utils/build/esm/debug-build.js","webpack://artfully-walls/./node_modules/@sentry-internal/browser-utils/build/esm/getNativeImplementation.js","webpack://artfully-walls/./node_modules/@sentry-internal/browser-utils/build/esm/instrument/dom.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/vendor/supportsHistory.js","webpack://artfully-walls/./node_modules/@sentry-internal/browser-utils/build/esm/instrument/history.js","webpack://artfully-walls/./node_modules/@sentry-internal/browser-utils/build/esm/instrument/xhr.js","webpack://artfully-walls/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/lib/bindReporter.js","webpack://artfully-walls/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/lib/initMetric.js","webpack://artfully-walls/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/lib/generateUniqueID.js","webpack://artfully-walls/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/lib/observe.js","webpack://artfully-walls/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/lib/runOnce.js","webpack://artfully-walls/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/lib/whenActivated.js","webpack://artfully-walls/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/onFCP.js","webpack://artfully-walls/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/getCLS.js","webpack://artfully-walls/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/getFID.js","webpack://artfully-walls/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/lib/polyfills/interactionCountPolyfill.js","webpack://artfully-walls/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/lib/interactions.js","webpack://artfully-walls/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/lib/whenIdle.js","webpack://artfully-walls/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/getINP.js","webpack://artfully-walls/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/getLCP.js","webpack://artfully-walls/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/onTTFB.js","webpack://artfully-walls/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/instrument.js","webpack://artfully-walls/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/lib/getActivationStart.js","webpack://artfully-walls/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/lib/getNavigationEntry.js","webpack://artfully-walls/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/lib/getVisibilityWatcher.js","webpack://artfully-walls/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/web-vitals/lib/onHidden.js","webpack://artfully-walls/./node_modules/@sentry-internal/browser-utils/build/esm/types.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/baseclient.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/clientreport.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/client.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils/sdkMetadata.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/debug-build.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/eventbuilder.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/helpers.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/tracing/hubextensions.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/integrations/captureconsole.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/feedback.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/integrations/debug.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/integrations/extraerrordata.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/getCurrentHubShim.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/transports/multiplexed.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/metadata.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/integrations/metadata.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils/parameterize.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/path.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/integrations/rewriteframes.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/integrations/sessiontiming.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/integrations/third-party-errors-filter.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/integrations/zoderrors.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/utils/lazyLoadIntegration.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/integrations/reportingobserver.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils/isSentryRequestUrl.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/integrations/httpclient.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/integrations/contextlines.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/buildPolyfills/_optionalChain.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/isBrowser.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/node.js","webpack://artfully-walls/./node_modules/@sentry-internal/replay/build/npm/esm/index.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/buildPolyfills/_nullishCoalesce.js","webpack://artfully-walls/./node_modules/@sentry-internal/replay-canvas/build/npm/esm/index.js","webpack://artfully-walls/./node_modules/@sentry-internal/feedback/build/npm/esm/index.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/feedbackAsync.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/feedbackSync.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/metrics/constants.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/metrics/exports.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/metrics/utils.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/metrics/envelope.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/metrics/instance.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/metrics/browser-aggregator.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/metrics.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/transports/offline.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/transports/offline.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/profiling/utils.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/profiling/startProfileForSpan.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/profiling/integration.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/integrations/spotlight.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/utils/featureFlags.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/integrations/featureFlags/featureFlagsIntegration.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/integrations/featureFlags/launchdarkly/integration.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/integrations/featureFlags/openfeature/integration.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/breadcrumb-log-level.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/integrations/breadcrumbs.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/integrations/browserapierrors.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/integrations/browsersession.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/integrations/globalhandlers.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/integrations/httpcontext.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/aggregate-errors.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/integrations/linkederrors.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/sdk.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/stack-parsers.js","webpack://artfully-walls/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/utils.js","webpack://artfully-walls/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/cls.js","webpack://artfully-walls/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/browserMetrics.js","webpack://artfully-walls/./node_modules/@sentry-internal/browser-utils/build/esm/metrics/inp.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/tracing/idleSpan.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/tracing/browserTracingIntegration.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/tracing/backgroundtab.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils/traceData.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/fetch.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/tracing/request.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/transports/fetch.js","webpack://artfully-walls/./node_modules/@sentry/browser/build/npm/esm/userfeedback.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/api.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/asyncContext/stackStrategy.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/defaultScopes.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/asyncContext/index.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/breadcrumbs.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/carrier.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/constants.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/currentScopes.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/debug-build.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/envelope.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/exports.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/integration.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/integrations/dedupe.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/integrations/functiontostring.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/integrations/inboundfilters.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/metrics/metric-summary.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/scope.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/sdk.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/semanticAttributes.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/session.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/tracing/dynamicSamplingContext.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/tracing/errors.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/tracing/measurement.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/tracing/sentryNonRecordingSpan.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/tracing/spanstatus.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/tracing/utils.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/tracing/sentrySpan.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/tracing/logSpans.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/tracing/trace.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/tracing/sampling.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/promisebuffer.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/transports/base.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/baggage.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/browser.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/debug-build.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/debug-ids.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/dsn.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/env.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/envelope.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/error.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/instrument/console.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/instrument/fetch.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/instrument/globalError.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/instrument/globalUnhandledRejection.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/instrument/handlers.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/is.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/logger.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/misc.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/normalize.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/memo.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/object.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/propagationContext.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/ratelimit.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/severity.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/stacktrace.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/string.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/supports.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/syncpromise.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/time.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/tracing.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/url.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/version.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils-hoist/worldwide.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils/handleCallbackErrors.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils/hasTracingEnabled.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils/merge.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils/parseSampleRate.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/eventProcessors.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils/applyScopeDataToEvent.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils/prepareEvent.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils/spanOnScope.js","webpack://artfully-walls/./node_modules/@sentry/core/build/esm/utils/spanUtils.js"],"sourcesContent":["/**\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 { isNativeFunction, logger } from '@sentry/core';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { WINDOW } from './types.js';\n\n/**\n * We generally want to use window.fetch / window.setTimeout.\n * However, in some cases this may be wrapped (e.g. by Zone.js for Angular),\n * so we try to get an unpatched version of this from a sandboxed iframe.\n */\n\nconst cachedImplementations = {};\n\n/**\n * Get the native implementation of a browser function.\n *\n * This can be used to ensure we get an unwrapped version of a function, in cases where a wrapped function can lead to problems.\n *\n * The following methods can be retrieved:\n * - `setTimeout`: This can be wrapped by e.g. Angular, causing change detection to be triggered.\n * - `fetch`: This can be wrapped by e.g. ad-blockers, causing an infinite loop when a request is blocked.\n */\nfunction getNativeImplementation(\n name,\n) {\n const cached = cachedImplementations[name];\n if (cached) {\n return cached;\n }\n\n let impl = WINDOW[name] ;\n\n // Fast path to avoid DOM I/O\n if (isNativeFunction(impl)) {\n return (cachedImplementations[name] = impl.bind(WINDOW) );\n }\n\n const document = WINDOW.document;\n // eslint-disable-next-line deprecation/deprecation\n if (document && typeof document.createElement === 'function') {\n try {\n const sandbox = document.createElement('iframe');\n sandbox.hidden = true;\n document.head.appendChild(sandbox);\n const contentWindow = sandbox.contentWindow;\n if (contentWindow && contentWindow[name]) {\n impl = contentWindow[name] ;\n }\n document.head.removeChild(sandbox);\n } catch (e) {\n // Could not create sandbox iframe, just use window.xxx\n DEBUG_BUILD && logger.warn(`Could not create sandbox iframe for ${name} check, bailing to window.${name}: `, e);\n }\n }\n\n // Sanity check: This _should_ not happen, but if it does, we just skip caching...\n // This can happen e.g. in tests where fetch may not be available in the env, or similar.\n if (!impl) {\n return impl;\n }\n\n return (cachedImplementations[name] = impl.bind(WINDOW) );\n}\n\n/** Clear a cached implementation. */\nfunction clearCachedImplementation(name) {\n cachedImplementations[name] = undefined;\n}\n\n/**\n * A special usecase for incorrectly wrapped Fetch APIs in conjunction with ad-blockers.\n * Whenever someone wraps the Fetch API and returns the wrong promise chain,\n * this chain becomes orphaned and there is no possible way to capture it's rejections\n * other than allowing it bubble up to this very handler. eg.\n *\n * const f = window.fetch;\n * window.fetch = function () {\n * const p = f.apply(this, arguments);\n *\n * p.then(function() {\n * console.log('hi.');\n * });\n *\n * return p;\n * }\n *\n * `p.then(function () { ... })` is producing a completely separate promise chain,\n * however, what's returned is `p` - the result of original `fetch` call.\n *\n * This mean, that whenever we use the Fetch API to send our own requests, _and_\n * some ad-blocker blocks it, this orphaned chain will _always_ reject,\n * effectively causing another event to be captured.\n * This makes a whole process become an infinite loop, which we need to somehow\n * deal with, and break it in one way or another.\n *\n * To deal with this issue, we are making sure that we _always_ use the real\n * browser Fetch API, instead of relying on what `window.fetch` exposes.\n * The only downside to this would be missing our own requests as breadcrumbs,\n * but because we are already not doing this, it should be just fine.\n *\n * Possible failed fetch error messages per-browser:\n *\n * Chrome: Failed to fetch\n * Edge: Failed to Fetch\n * Firefox: NetworkError when attempting to fetch resource\n * Safari: resource blocked by content blocker\n */\nfunction fetch(...rest) {\n return getNativeImplementation('fetch')(...rest);\n}\n\n/**\n * Get an unwrapped `setTimeout` method.\n * This ensures that even if e.g. Angular wraps `setTimeout`, we get the native implementation,\n * avoiding triggering change detection.\n */\nfunction setTimeout(...rest) {\n return getNativeImplementation('setTimeout')(...rest);\n}\n\nexport { clearCachedImplementation, fetch, getNativeImplementation, setTimeout };\n//# sourceMappingURL=getNativeImplementation.js.map\n","import { addHandler, maybeInstrument, triggerHandlers, fill, addNonEnumerableProperty, uuid4 } from '@sentry/core';\nimport { WINDOW } from '../types.js';\n\nconst DEBOUNCE_DURATION = 1000;\n\nlet debounceTimerID;\nlet lastCapturedEventType;\nlet lastCapturedEventTargetId;\n\n/**\n * Add an instrumentation handler for when a click or a keypress happens.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addClickKeypressInstrumentationHandler(handler) {\n const type = 'dom';\n addHandler(type, handler);\n maybeInstrument(type, instrumentDOM);\n}\n\n/** Exported for tests only. */\nfunction instrumentDOM() {\n if (!WINDOW.document) {\n return;\n }\n\n // Make it so that any click or keypress that is unhandled / bubbled up all the way to the document triggers our dom\n // handlers. (Normally we have only one, which captures a breadcrumb for each click or keypress.) Do this before\n // we instrument `addEventListener` so that we don't end up attaching this handler twice.\n const triggerDOMHandler = triggerHandlers.bind(null, 'dom');\n const globalDOMEventHandler = makeDOMEventHandler(triggerDOMHandler, true);\n WINDOW.document.addEventListener('click', globalDOMEventHandler, false);\n WINDOW.document.addEventListener('keypress', globalDOMEventHandler, false);\n\n // After hooking into click and keypress events bubbled up to `document`, we also hook into user-handled\n // clicks & keypresses, by adding an event listener of our own to any element to which they add a listener. That\n // way, whenever one of their handlers is triggered, ours will be, too. (This is needed because their handler\n // could potentially prevent the event from bubbling up to our global listeners. This way, our handler are still\n // guaranteed to fire at least once.)\n ['EventTarget', 'Node'].forEach((target) => {\n const globalObject = WINDOW ;\n const targetObj = globalObject[target];\n const proto = targetObj && targetObj.prototype;\n\n // eslint-disable-next-line no-prototype-builtins\n if (!proto || !proto.hasOwnProperty || !proto.hasOwnProperty('addEventListener')) {\n return;\n }\n\n fill(proto, 'addEventListener', function (originalAddEventListener) {\n return function ( type, listener, options) {\n if (type === 'click' || type == 'keypress') {\n try {\n const handlers = (this.__sentry_instrumentation_handlers__ =\n this.__sentry_instrumentation_handlers__ || {});\n const handlerForType = (handlers[type] = handlers[type] || { refCount: 0 });\n\n if (!handlerForType.handler) {\n const handler = makeDOMEventHandler(triggerDOMHandler);\n handlerForType.handler = handler;\n originalAddEventListener.call(this, type, handler, options);\n }\n\n handlerForType.refCount++;\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListeners` calls with no proper `this` context.\n }\n }\n\n return originalAddEventListener.call(this, type, listener, options);\n };\n });\n\n fill(\n proto,\n 'removeEventListener',\n function (originalRemoveEventListener) {\n return function ( type, listener, options) {\n if (type === 'click' || type == 'keypress') {\n try {\n const handlers = this.__sentry_instrumentation_handlers__ || {};\n const handlerForType = handlers[type];\n\n if (handlerForType) {\n handlerForType.refCount--;\n // If there are no longer any custom handlers of the current type on this element, we can remove ours, too.\n if (handlerForType.refCount <= 0) {\n originalRemoveEventListener.call(this, type, handlerForType.handler, options);\n handlerForType.handler = undefined;\n delete handlers[type]; // eslint-disable-line @typescript-eslint/no-dynamic-delete\n }\n\n // If there are no longer any custom handlers of any type on this element, cleanup everything.\n if (Object.keys(handlers).length === 0) {\n delete this.__sentry_instrumentation_handlers__;\n }\n }\n } catch (e) {\n // Accessing dom properties is always fragile.\n // Also allows us to skip `addEventListeners` calls with no proper `this` context.\n }\n }\n\n return originalRemoveEventListener.call(this, type, listener, options);\n };\n },\n );\n });\n}\n\n/**\n * Check whether the event is similar to the last captured one. For example, two click events on the same button.\n */\nfunction isSimilarToLastCapturedEvent(event) {\n // If both events have different type, then user definitely performed two separate actions. e.g. click + keypress.\n if (event.type !== lastCapturedEventType) {\n return false;\n }\n\n try {\n // If both events have the same type, it's still possible that actions were performed on different targets.\n // e.g. 2 clicks on different buttons.\n if (!event.target || (event.target )._sentryId !== lastCapturedEventTargetId) {\n return false;\n }\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n }\n\n // If both events have the same type _and_ same `target` (an element which triggered an event, _not necessarily_\n // to which an event listener was attached), we treat them as the same action, as we want to capture\n // only one breadcrumb. e.g. multiple clicks on the same button, or typing inside a user input box.\n return true;\n}\n\n/**\n * Decide whether an event should be captured.\n * @param event event to be captured\n */\nfunction shouldSkipDOMEvent(eventType, target) {\n // We are only interested in filtering `keypress` events for now.\n if (eventType !== 'keypress') {\n return false;\n }\n\n if (!target || !target.tagName) {\n return true;\n }\n\n // Only consider keypress events on actual input elements. This will disregard keypresses targeting body\n // e.g.tabbing through elements, hotkeys, etc.\n if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) {\n return false;\n }\n\n return true;\n}\n\n/**\n * Wraps addEventListener to capture UI breadcrumbs\n */\nfunction makeDOMEventHandler(\n handler,\n globalListener = false,\n) {\n return (event) => {\n // It's possible this handler might trigger multiple times for the same\n // event (e.g. event propagation through node ancestors).\n // Ignore if we've already captured that event.\n if (!event || event['_sentryCaptured']) {\n return;\n }\n\n const target = getEventTarget(event);\n\n // We always want to skip _some_ events.\n if (shouldSkipDOMEvent(event.type, target)) {\n return;\n }\n\n // Mark event as \"seen\"\n addNonEnumerableProperty(event, '_sentryCaptured', true);\n\n if (target && !target._sentryId) {\n // Add UUID to event target so we can identify if\n addNonEnumerableProperty(target, '_sentryId', uuid4());\n }\n\n const name = event.type === 'keypress' ? 'input' : event.type;\n\n // If there is no last captured event, it means that we can safely capture the new event and store it for future comparisons.\n // If there is a last captured event, see if the new event is different enough to treat it as a unique one.\n // If that's the case, emit the previous event and store locally the newly-captured DOM event.\n if (!isSimilarToLastCapturedEvent(event)) {\n const handlerData = { event, name, global: globalListener };\n handler(handlerData);\n lastCapturedEventType = event.type;\n lastCapturedEventTargetId = target ? target._sentryId : undefined;\n }\n\n // Start a new debounce timer that will prevent us from capturing multiple events that should be grouped together.\n clearTimeout(debounceTimerID);\n debounceTimerID = WINDOW.setTimeout(() => {\n lastCapturedEventTargetId = undefined;\n lastCapturedEventType = undefined;\n }, DEBOUNCE_DURATION);\n };\n}\n\nfunction getEventTarget(event) {\n try {\n return event.target ;\n } catch (e) {\n // just accessing `target` property can throw an exception in some rare circumstances\n // see: https://github.com/getsentry/sentry-javascript/issues/838\n return null;\n }\n}\n\nexport { addClickKeypressInstrumentationHandler, instrumentDOM };\n//# sourceMappingURL=dom.js.map\n","import { GLOBAL_OBJ } from '../worldwide.js';\n\n// Based on https://github.com/angular/angular.js/pull/13945/files\n// The MIT License\n\n\nconst WINDOW = GLOBAL_OBJ ;\n\n/**\n * Tells whether current environment supports History API\n * {@link supportsHistory}.\n *\n * @returns Answer to the given question.\n */\nfunction supportsHistory() {\n // NOTE: in Chrome App environment, touching history.pushState, *even inside\n // a try/catch block*, will cause Chrome to output an error to console.error\n // borrowed from: https://github.com/angular/angular.js/pull/13945/files\n // TODO(v9): Remove this custom check, it is pretty old and likely not needed anymore\n const chromeVar = (WINDOW ).chrome;\n const isChromePackagedApp = chromeVar && chromeVar.app && chromeVar.app.runtime;\n const hasHistoryApi = 'history' in WINDOW && !!WINDOW.history.pushState && !!WINDOW.history.replaceState;\n\n return !isChromePackagedApp && hasHistoryApi;\n}\n\nexport { supportsHistory };\n//# sourceMappingURL=supportsHistory.js.map\n","import { addHandler, maybeInstrument, supportsHistory, triggerHandlers, fill } from '@sentry/core';\nimport { WINDOW } from '../types.js';\n\nlet lastHref;\n\n/**\n * Add an instrumentation handler for when a fetch request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addHistoryInstrumentationHandler(handler) {\n const type = 'history';\n addHandler(type, handler);\n maybeInstrument(type, instrumentHistory);\n}\n\nfunction instrumentHistory() {\n if (!supportsHistory()) {\n return;\n }\n\n const oldOnPopState = WINDOW.onpopstate;\n WINDOW.onpopstate = function ( ...args) {\n const to = WINDOW.location.href;\n // keep track of the current URL state, as we always receive only the updated state\n const from = lastHref;\n lastHref = to;\n const handlerData = { from, to };\n triggerHandlers('history', handlerData);\n if (oldOnPopState) {\n // Apparently this can throw in Firefox when incorrectly implemented plugin is installed.\n // https://github.com/getsentry/sentry-javascript/issues/3344\n // https://github.com/bugsnag/bugsnag-js/issues/469\n try {\n return oldOnPopState.apply(this, args);\n } catch (_oO) {\n // no-empty\n }\n }\n };\n\n function historyReplacementFunction(originalHistoryFunction) {\n return function ( ...args) {\n const url = args.length > 2 ? args[2] : undefined;\n if (url) {\n // coerce to string (this is what pushState does)\n const from = lastHref;\n const to = String(url);\n // keep track of the current URL state, as we always receive only the updated state\n lastHref = to;\n const handlerData = { from, to };\n triggerHandlers('history', handlerData);\n }\n return originalHistoryFunction.apply(this, args);\n };\n }\n\n fill(WINDOW.history, 'pushState', historyReplacementFunction);\n fill(WINDOW.history, 'replaceState', historyReplacementFunction);\n}\n\nexport { addHistoryInstrumentationHandler };\n//# sourceMappingURL=history.js.map\n","import { addHandler, maybeInstrument, timestampInSeconds, isString, triggerHandlers } from '@sentry/core';\nimport { WINDOW } from '../types.js';\n\nconst SENTRY_XHR_DATA_KEY = '__sentry_xhr_v3__';\n\n/**\n * Add an instrumentation handler for when an XHR request happens.\n * The handler function is called once when the request starts and once when it ends,\n * which can be identified by checking if it has an `endTimestamp`.\n *\n * Use at your own risk, this might break without changelog notice, only used internally.\n * @hidden\n */\nfunction addXhrInstrumentationHandler(handler) {\n const type = 'xhr';\n addHandler(type, handler);\n maybeInstrument(type, instrumentXHR);\n}\n\n/** Exported only for tests. */\nfunction instrumentXHR() {\n if (!(WINDOW ).XMLHttpRequest) {\n return;\n }\n\n const xhrproto = XMLHttpRequest.prototype;\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n xhrproto.open = new Proxy(xhrproto.open, {\n apply(originalOpen, xhrOpenThisArg, xhrOpenArgArray) {\n // NOTE: If you are a Sentry user, and you are seeing this stack frame,\n // it means the error, that was caused by your XHR call did not\n // have a stack trace. If you are using HttpClient integration,\n // this is the expected behavior, as we are using this virtual error to capture\n // the location of your XHR call, and group your HttpClient events accordingly.\n const virtualError = new Error();\n\n const startTimestamp = timestampInSeconds() * 1000;\n\n // open() should always be called with two or more arguments\n // But to be on the safe side, we actually validate this and bail out if we don't have a method & url\n const method = isString(xhrOpenArgArray[0]) ? xhrOpenArgArray[0].toUpperCase() : undefined;\n const url = parseUrl(xhrOpenArgArray[1]);\n\n if (!method || !url) {\n return originalOpen.apply(xhrOpenThisArg, xhrOpenArgArray);\n }\n\n xhrOpenThisArg[SENTRY_XHR_DATA_KEY] = {\n method,\n url,\n request_headers: {},\n };\n\n // if Sentry key appears in URL, don't capture it as a request\n if (method === 'POST' && url.match(/sentry_key/)) {\n xhrOpenThisArg.__sentry_own_request__ = true;\n }\n\n const onreadystatechangeHandler = () => {\n // For whatever reason, this is not the same instance here as from the outer method\n const xhrInfo = xhrOpenThisArg[SENTRY_XHR_DATA_KEY];\n\n if (!xhrInfo) {\n return;\n }\n\n if (xhrOpenThisArg.readyState === 4) {\n try {\n // touching statusCode in some platforms throws\n // an exception\n xhrInfo.status_code = xhrOpenThisArg.status;\n } catch (e) {\n /* do nothing */\n }\n\n const handlerData = {\n endTimestamp: timestampInSeconds() * 1000,\n startTimestamp,\n xhr: xhrOpenThisArg,\n virtualError,\n };\n triggerHandlers('xhr', handlerData);\n }\n };\n\n if ('onreadystatechange' in xhrOpenThisArg && typeof xhrOpenThisArg.onreadystatechange === 'function') {\n xhrOpenThisArg.onreadystatechange = new Proxy(xhrOpenThisArg.onreadystatechange, {\n apply(originalOnreadystatechange, onreadystatechangeThisArg, onreadystatechangeArgArray) {\n onreadystatechangeHandler();\n return originalOnreadystatechange.apply(onreadystatechangeThisArg, onreadystatechangeArgArray);\n },\n });\n } else {\n xhrOpenThisArg.addEventListener('readystatechange', onreadystatechangeHandler);\n }\n\n // Intercepting `setRequestHeader` to access the request headers of XHR instance.\n // This will only work for user/library defined headers, not for the default/browser-assigned headers.\n // Request cookies are also unavailable for XHR, as `Cookie` header can't be defined by `setRequestHeader`.\n xhrOpenThisArg.setRequestHeader = new Proxy(xhrOpenThisArg.setRequestHeader, {\n apply(\n originalSetRequestHeader,\n setRequestHeaderThisArg,\n setRequestHeaderArgArray,\n ) {\n const [header, value] = setRequestHeaderArgArray;\n\n const xhrInfo = setRequestHeaderThisArg[SENTRY_XHR_DATA_KEY];\n\n if (xhrInfo && isString(header) && isString(value)) {\n xhrInfo.request_headers[header.toLowerCase()] = value;\n }\n\n return originalSetRequestHeader.apply(setRequestHeaderThisArg, setRequestHeaderArgArray);\n },\n });\n\n return originalOpen.apply(xhrOpenThisArg, xhrOpenArgArray);\n },\n });\n\n // eslint-disable-next-line @typescript-eslint/unbound-method\n xhrproto.send = new Proxy(xhrproto.send, {\n apply(originalSend, sendThisArg, sendArgArray) {\n const sentryXhrData = sendThisArg[SENTRY_XHR_DATA_KEY];\n\n if (!sentryXhrData) {\n return originalSend.apply(sendThisArg, sendArgArray);\n }\n\n if (sendArgArray[0] !== undefined) {\n sentryXhrData.body = sendArgArray[0];\n }\n\n const handlerData = {\n startTimestamp: timestampInSeconds() * 1000,\n xhr: sendThisArg,\n };\n triggerHandlers('xhr', handlerData);\n\n return originalSend.apply(sendThisArg, sendArgArray);\n },\n });\n}\n\nfunction parseUrl(url) {\n if (isString(url)) {\n return url;\n }\n\n try {\n // url can be a string or URL\n // but since URL is not available in IE11, we do not check for it,\n // but simply assume it is an URL and return `toString()` from it (which returns the full URL)\n // If that fails, we just return undefined\n return (url ).toString();\n } catch (e2) {} // eslint-disable-line no-empty\n\n return undefined;\n}\n\nexport { SENTRY_XHR_DATA_KEY, addXhrInstrumentationHandler, instrumentXHR };\n//# sourceMappingURL=xhr.js.map\n","const getRating = (value, thresholds) => {\n if (value > thresholds[1]) {\n return 'poor';\n }\n if (value > thresholds[0]) {\n return 'needs-improvement';\n }\n return 'good';\n};\n\nconst bindReporter = (\n callback,\n metric,\n thresholds,\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 metric.rating = getRating(metric.value, thresholds);\n callback(metric);\n }\n }\n }\n };\n};\n\nexport { bindReporter };\n//# sourceMappingURL=bindReporter.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\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 if (WINDOW.document && WINDOW.document.wasDiscarded) {\n navigationType = 'restore';\n } else if (navEntry.type) {\n navigationType = navEntry.type.replace(/_/g, '-') ;\n }\n }\n\n // Use `entries` type specific for the metric.\n const entries = [];\n\n return {\n name,\n value: typeof value === 'undefined' ? -1 : value,\n rating: 'good' , // If needed, will be updated when reported. `const` to keep the type from widening to `string`.\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 `v4-${Date.now()}-${Math.floor(Math.random() * (9e12 - 1)) + 1e12}`;\n};\n\nexport { generateUniqueID };\n//# sourceMappingURL=generateUniqueID.js.map\n","/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Takes a performance entry type and a callback function, and creates a\n * `PerformanceObserver` instance that will observe the specified entry type\n * with buffering enabled and call the callback _for each entry_.\n *\n * This function also feature-detects entry support and wraps the logic in a\n * try/catch to avoid errors in unsupporting browsers.\n */\nconst observe = (\n type,\n callback,\n opts,\n) => {\n try {\n if (PerformanceObserver.supportedEntryTypes.includes(type)) {\n const po = new PerformanceObserver(list => {\n // Delay by a microtask to workaround a bug in Safari where the\n // callback is invoked immediately, rather than in a separate task.\n // See: https://github.com/GoogleChrome/web-vitals/issues/277\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n Promise.resolve().then(() => {\n callback(list.getEntries() );\n });\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","/*\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 runOnce = (cb) => {\n let called = false;\n return () => {\n if (!called) {\n cb();\n called = true;\n }\n };\n};\n\nexport { runOnce };\n//# sourceMappingURL=runOnce.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\n\nconst whenActivated = (callback) => {\n if (WINDOW.document && WINDOW.document.prerendering) {\n addEventListener('prerenderingchange', () => callback(), true);\n } else {\n callback();\n }\n};\n\nexport { whenActivated };\n//# sourceMappingURL=whenActivated.js.map\n","import { 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 { whenActivated } from './lib/whenActivated.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/** Thresholds for FCP. See https://web.dev/articles/fcp#what_is_a_good_fcp_score */\nconst FCPThresholds = [1800, 3000];\n\n/**\n * Calculates the [FCP](https://web.dev/articles/fcp) value for the current page and\n * calls the `callback` function once the value is ready, along with the\n * relevant `paint` performance entry used to determine the value. The reported\n * value is a `DOMHighResTimeStamp`.\n */\nconst onFCP = (onReport, opts = {}) => {\n whenActivated(() => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('FCP');\n let report;\n\n const handleEntries = (entries) => {\n entries.forEach(entry => {\n if (entry.name === 'first-contentful-paint') {\n po.disconnect();\n\n // Only report if the page wasn't hidden prior to the first paint.\n if (entry.startTime < visibilityWatcher.firstHiddenTime) {\n // The activationStart reference is used because FCP 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 FCP, this time should be clamped at 0.\n metric.value = Math.max(entry.startTime - getActivationStart(), 0);\n metric.entries.push(entry);\n report(true);\n }\n }\n });\n };\n\n const po = observe('paint', handleEntries);\n\n if (po) {\n report = bindReporter(onReport, metric, FCPThresholds, opts.reportAllChanges);\n }\n });\n};\n\nexport { FCPThresholds, onFCP };\n//# sourceMappingURL=onFCP.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 { runOnce } from './lib/runOnce.js';\nimport { onFCP } from './onFCP.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/** Thresholds for CLS. See https://web.dev/articles/cls#what_is_a_good_cls_score */\nconst CLSThresholds = [0.1, 0.25];\n\n/**\n * Calculates the [CLS](https://web.dev/articles/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/articles/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 = (onReport, opts = {}) => {\n // Start monitoring FCP so we can only report CLS if FCP is also reported.\n // Note: this is done to match the current behavior of CrUX.\n onFCP(\n runOnce(() => {\n const metric = initMetric('CLS', 0);\n let report;\n\n let sessionValue = 0;\n let sessionEntries = [];\n\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\n // and less than 5 seconds after the first entry in the session,\n // include the entry in the current session. Otherwise, start a new\n // session.\n if (\n sessionValue &&\n firstSessionEntry &&\n lastSessionEntry &&\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 });\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 report();\n }\n };\n\n const po = observe('layout-shift', handleEntries);\n if (po) {\n report = bindReporter(onReport, metric, CLSThresholds, opts.reportAllChanges);\n\n onHidden(() => {\n handleEntries(po.takeRecords() );\n report(true);\n });\n\n // Queue a task to report (if nothing else triggers a report first).\n // This allows CLS to be reported as soon as FCP fires when\n // `reportAllChanges` is true.\n setTimeout(report, 0);\n }\n }),\n );\n};\n\nexport { CLSThresholds, onCLS };\n//# sourceMappingURL=getCLS.js.map\n","import { bindReporter } from './lib/bindReporter.js';\nimport { getVisibilityWatcher } from './lib/getVisibilityWatcher.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\nimport { runOnce } from './lib/runOnce.js';\nimport { whenActivated } from './lib/whenActivated.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/** Thresholds for FID. See https://web.dev/articles/fid#what_is_a_good_fid_score */\nconst FIDThresholds = [100, 300];\n\n/**\n * Calculates the [FID](https://web.dev/articles/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, opts = {}) => {\n whenActivated(() => {\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\n report = bindReporter(onReport, metric, FIDThresholds, opts.reportAllChanges);\n\n if (po) {\n onHidden(\n runOnce(() => {\n handleEntries(po.takeRecords() );\n po.disconnect();\n }),\n );\n }\n });\n};\n\nexport { FIDThresholds, onFID };\n//# sourceMappingURL=getFID.js.map\n","import { observe } from '../observe.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\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 { getInteractionCount } from './polyfills/interactionCountPolyfill.js';\n\n/*\n * Copyright 2024 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// A list of longest interactions on the page (by latency) sorted so the\n// longest one is first. The list is at 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 = new Map();\n\n// The default `durationThreshold` used across this library for observing\n// `event` entries via PerformanceObserver.\nconst DEFAULT_DURATION_THRESHOLD = 40;\n\n// Used to store the interaction count after a bfcache restore, since p98\n// interaction latencies should only consider the current navigation.\nlet prevInteractionCount = 0;\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() - prevInteractionCount;\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// 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/**\n * A list of callback functions to run before each entry is processed.\n * Exposing this list allows the attribution build to hook into the\n * entry processing pipeline.\n */\nconst entryPreProcessingCallbacks = [];\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 processInteractionEntry = (entry) => {\n entryPreProcessingCallbacks.forEach(cb => cb(entry));\n\n // Skip further processing for entries that cannot be INP candidates.\n if (!(entry.interactionId || entry.entryType === 'first-input')) return;\n\n // The least-long of the 10 longest interactions.\n const minLongestInteraction = longestInteractionList[longestInteractionList.length - 1];\n\n const existingInteraction = longestInteractionMap.get(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 (minLongestInteraction && entry.duration > minLongestInteraction.latency)\n ) {\n // If the interaction already exists, update it. Otherwise create one.\n if (existingInteraction) {\n // If the new entry has a longer duration, replace the old entries,\n // otherwise add to the array.\n if (entry.duration > existingInteraction.latency) {\n existingInteraction.entries = [entry];\n existingInteraction.latency = entry.duration;\n } else if (\n entry.duration === existingInteraction.latency &&\n entry.startTime === (existingInteraction.entries[0] && existingInteraction.entries[0].startTime)\n ) {\n existingInteraction.entries.push(entry);\n }\n } else {\n const interaction = {\n id: entry.interactionId,\n latency: entry.duration,\n entries: [entry],\n };\n longestInteractionMap.set(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 if (longestInteractionList.length > MAX_INTERACTIONS_TO_CONSIDER) {\n longestInteractionList.splice(MAX_INTERACTIONS_TO_CONSIDER).forEach(i => longestInteractionMap.delete(i.id));\n }\n }\n};\n\nexport { DEFAULT_DURATION_THRESHOLD, entryPreProcessingCallbacks, estimateP98LongestInteraction, longestInteractionList, longestInteractionMap, processInteractionEntry };\n//# sourceMappingURL=interactions.js.map\n","import { WINDOW } from '../../../types.js';\nimport { onHidden } from './onHidden.js';\nimport { runOnce } from './runOnce.js';\n\n/*\n * Copyright 2024 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/**\n * Runs the passed callback during the next idle period, or immediately\n * if the browser's visibility state is (or becomes) hidden.\n */\nconst whenIdle = (cb) => {\n const rIC = WINDOW.requestIdleCallback || WINDOW.setTimeout;\n\n let handle = -1;\n // eslint-disable-next-line no-param-reassign\n cb = runOnce(cb) ;\n // If the document is hidden, run the callback immediately, otherwise\n // race an idle callback with the next `visibilitychange` event.\n if (WINDOW.document && WINDOW.document.visibilityState === 'hidden') {\n cb();\n } else {\n handle = rIC(cb);\n onHidden(cb);\n }\n return handle;\n};\n\nexport { whenIdle };\n//# sourceMappingURL=whenIdle.js.map\n","import { WINDOW } from '../../types.js';\nimport { bindReporter } from './lib/bindReporter.js';\nimport { initMetric } from './lib/initMetric.js';\nimport { DEFAULT_DURATION_THRESHOLD, processInteractionEntry, estimateP98LongestInteraction } from './lib/interactions.js';\nimport { observe } from './lib/observe.js';\nimport { onHidden } from './lib/onHidden.js';\nimport { initInteractionCountPolyfill } from './lib/polyfills/interactionCountPolyfill.js';\nimport { whenActivated } from './lib/whenActivated.js';\nimport { whenIdle } from './lib/whenIdle.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/** Thresholds for INP. See https://web.dev/articles/inp#what_is_a_good_inp_score */\nconst INPThresholds = [200, 500];\n\n/**\n * Calculates the [INP](https://web.dev/articles/inp) 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/articles/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 // Return if the browser doesn't support all APIs needed to measure INP.\n if (!('PerformanceEventTiming' in WINDOW && 'interactionId' in PerformanceEventTiming.prototype)) {\n return;\n }\n\n whenActivated(() => {\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 // Queue the `handleEntries()` callback in the next idle task.\n // This is needed to increase the chances that all event entries that\n // occurred between the user interaction and the next paint\n // have been dispatched. Note: there is currently an experiment\n // running in Chrome (EventTimingKeypressAndCompositionInteractionId)\n // 123+ that if rolled out fully may make this no longer necessary.\n whenIdle(() => {\n entries.forEach(processInteractionEntry);\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\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 != null ? opts.durationThreshold : DEFAULT_DURATION_THRESHOLD,\n });\n\n report = bindReporter(onReport, metric, INPThresholds, 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 report(true);\n });\n }\n });\n};\n\nexport { INPThresholds, 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';\nimport { runOnce } from './lib/runOnce.js';\nimport { whenActivated } from './lib/whenActivated.js';\nimport { whenIdle } from './lib/whenIdle.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/** Thresholds for LCP. See https://web.dev/articles/lcp#what_is_a_good_lcp_score */\nconst LCPThresholds = [2500, 4000];\n\nconst reportedMetricIDs = {};\n\n/**\n * Calculates the [LCP](https://web.dev/articles/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 *\n * If the `reportAllChanges` configuration option is set to `true`, the\n * `callback` function will be called any time a new `largest-contentful-paint`\n * performance entry is dispatched, or once the final value of the metric has\n * been determined.\n */\nconst onLCP = (onReport, opts = {}) => {\n whenActivated(() => {\n const visibilityWatcher = getVisibilityWatcher();\n const metric = initMetric('LCP');\n let report;\n\n const handleEntries = (entries) => {\n // If reportAllChanges is set then call this function for each entry,\n // otherwise only consider the last one.\n if (!opts.reportAllChanges) {\n // eslint-disable-next-line no-param-reassign\n entries = entries.slice(-1);\n }\n\n entries.forEach(entry => {\n // Only report if the page wasn't hidden prior to LCP.\n if (entry.startTime < visibilityWatcher.firstHiddenTime) {\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 pre-rendered. But in cases\n // where `activationStart` occurs after the LCP, this time should be\n // clamped at 0.\n metric.value = Math.max(entry.startTime - getActivationStart(), 0);\n metric.entries = [entry];\n report();\n }\n });\n };\n\n const po = observe('largest-contentful-paint', handleEntries);\n\n if (po) {\n report = bindReporter(onReport, metric, LCPThresholds, opts.reportAllChanges);\n\n const stopListening = runOnce(() => {\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 // stops 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 // Wrap in a setTimeout so the callback is run in a separate task\n // to avoid extending the keyboard/click handler to reduce INP impact\n // https://github.com/GoogleChrome/web-vitals/issues/383\n if (WINDOW.document) {\n addEventListener(type, () => whenIdle(stopListening ), {\n once: true,\n capture: true,\n });\n }\n });\n\n onHidden(stopListening);\n }\n });\n};\n\nexport { LCPThresholds, 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';\nimport { whenActivated } from './lib/whenActivated.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/** Thresholds for TTFB. See https://web.dev/articles/ttfb#what_is_a_good_ttfb_score */\nconst TTFBThresholds = [800, 1800];\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 && WINDOW.document.prerendering) {\n whenActivated(() => whenReady(callback));\n } else if (WINDOW.document && 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/articles/ttfb) 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 const metric = initMetric('TTFB');\n const report = bindReporter(onReport, metric, TTFBThresholds, opts.reportAllChanges);\n\n whenReady(() => {\n const navigationEntry = getNavigationEntry();\n\n if (navigationEntry) {\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(navigationEntry.responseStart - getActivationStart(), 0);\n\n metric.entries = [navigationEntry];\n report(true);\n }\n });\n};\n\nexport { TTFBThresholds, onTTFB };\n//# sourceMappingURL=onTTFB.js.map\n","import { logger, getFunctionName } from '@sentry/core';\nimport { DEBUG_BUILD } from '../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 * 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 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 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 // We want the callback to be called whenever the CLS value updates.\n // By default, the callback is only called when the tab goes to the background.\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(\n metric => {\n triggerHandlers('lcp', {\n metric,\n });\n _previousLcp = metric;\n },\n // We want the callback to be called whenever the LCP value updates.\n // By default, the callback is only called when the tab goes to the background.\n { reportAllChanges: true },\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\n/**\n * Check if a PerformanceEntry is a PerformanceEventTiming by checking for the `duration` property.\n */\nfunction isPerformanceEventTiming(entry) {\n return 'duration' in entry;\n}\n\nexport { addClsInstrumentationHandler, addFidInstrumentationHandler, addInpInstrumentationHandler, addLcpInstrumentationHandler, addPerformanceInstrumentationHandler, addTtfbInstrumentationHandler, isPerformanceEventTiming };\n//# sourceMappingURL=instrument.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\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';\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// sentry-specific change:\n// add optional param to not check for responseStart (see comment below)\nconst getNavigationEntry = (checkResponseStart = true) => {\n const navigationEntry =\n WINDOW.performance && WINDOW.performance.getEntriesByType && WINDOW.performance.getEntriesByType('navigation')[0];\n // Check to ensure the `responseStart` property is present and valid.\n // In some cases no value is reported by the browser (for\n // privacy/security reasons), and in other cases (bugs) the value is\n // negative or is larger 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 // https://github.com/GoogleChrome/web-vitals/issues/275\n if (\n // sentry-specific change:\n // We don't want to check for responseStart for our own use of `getNavigationEntry`\n !checkResponseStart ||\n (navigationEntry && navigationEntry.responseStart > 0 && navigationEntry.responseStart < performance.now())\n ) {\n return navigationEntry;\n }\n};\n\nexport { getNavigationEntry };\n//# sourceMappingURL=getNavigationEntry.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\n\nlet firstHiddenTime = -1;\n\nconst initHiddenTime = () => {\n // If the document is hidden when this code runs, assume it was always\n // hidden and the page was loaded in the background, with the one exception\n // that visibility state is always 'hidden' during prerendering, so we have\n // to ignore that case until prerendering finishes (see: `prerenderingchange`\n // event logic below).\n return WINDOW.document.visibilityState === 'hidden' && !WINDOW.document.prerendering ? 0 : Infinity;\n};\n\nconst onVisibilityUpdate = (event) => {\n // If the document is 'hidden' and no previous hidden timestamp has been\n // set, update it based on the current event data.\n if (WINDOW.document.visibilityState === 'hidden' && firstHiddenTime > -1) {\n // If the event is a 'visibilitychange' event, it means the page was\n // visible prior to this change, so the event timestamp is the first\n // hidden time.\n // However, if the event is not a 'visibilitychange' event, then it must\n // be a 'prerenderingchange' event, and the fact that the document is\n // still 'hidden' from the above check means the tab was activated\n // in a background state and so has always been hidden.\n firstHiddenTime = event.type === 'visibilitychange' ? event.timeStamp : 0;\n\n // Remove all listeners now that a `firstHiddenTime` value has been set.\n removeChangeListeners();\n }\n};\n\nconst addChangeListeners = () => {\n addEventListener('visibilitychange', onVisibilityUpdate, true);\n // IMPORTANT: when a page is prerendering, its `visibilityState` is\n // 'hidden', so in order to account for cases where this module checks for\n // visibility during prerendering, an additional check after prerendering\n // completes is also required.\n addEventListener('prerenderingchange', onVisibilityUpdate, true);\n};\n\nconst removeChangeListeners = () => {\n removeEventListener('visibilitychange', onVisibilityUpdate, true);\n removeEventListener('prerenderingchange', onVisibilityUpdate, true);\n};\n\nconst getVisibilityWatcher = () => {\n if (WINDOW.document && firstHiddenTime < 0) {\n // If the document is hidden when this code runs, assume it was hidden\n // since navigation start. This isn't a perfect heuristic, but it's the\n // best we can do until an API is available to support querying past\n // visibilityState.\n firstHiddenTime = initHiddenTime();\n addChangeListeners();\n }\n return {\n get firstHiddenTime() {\n return firstHiddenTime;\n },\n };\n};\n\nexport { getVisibilityWatcher };\n//# sourceMappingURL=getVisibilityWatcher.js.map\n","import { WINDOW } from '../../../types.js';\n\n/*\n * Copyright 2020 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n// Sentry-specific change:\n// This function's logic was NOT updated to web-vitals 4.2.4 but we continue\n// to use the web-vitals 3.5.2 due to us having stricter browser support.\n// PR with context that made the changes: https://github.com/GoogleChrome/web-vitals/pull/442/files#r1530492402\n// The PR removed listening to the `pagehide` event, in favour of only listening to `visibilitychange` event.\n// This is \"more correct\" but some browsers we still support (Safari 12.1-14.0) don't fully support `visibilitychange`\n// or have known bugs w.r.t the `visibilitychange` event.\n// TODO (v9): If we decide to drop support for Safari 12.1-14.0, we can use the logic from web-vitals 4.2.4\n// In this case, we also need to update the integration tests that currently trigger the `pagehide` event to\n// simulate the page being hidden.\nconst onHidden = (cb) => {\n const onHiddenOrPageHide = (event) => {\n if (event.type === 'pagehide' || (WINDOW.document && WINDOW.document.visibilityState === 'hidden')) {\n cb(event);\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 { GLOBAL_OBJ } from '@sentry/core';\n\nconst WINDOW = GLOBAL_OBJ\n\n;\n\nexport { WINDOW };\n//# sourceMappingURL=types.js.map\n","import { getEnvelopeEndpointWithUrlEncodedAuth } from './api.js';\nimport { getTraceContextFromScope, getCurrentScope, getIsolationScope } from './currentScopes.js';\nimport { DEBUG_BUILD } from './debug-build.js';\nimport { createEventEnvelope, createSessionEnvelope } from './envelope.js';\nimport { setupIntegration, afterSetupIntegrations, setupIntegrations } from './integration.js';\nimport { updateSession } from './session.js';\nimport { getDynamicSamplingContextFromScope } from './tracing/dynamicSamplingContext.js';\nimport { createClientReportEnvelope } from './utils-hoist/clientreport.js';\nimport { makeDsn, dsnToString } from './utils-hoist/dsn.js';\nimport { addItemToEnvelope, createAttachmentEnvelopeItem } from './utils-hoist/envelope.js';\nimport { SentryError } from './utils-hoist/error.js';\nimport { isPrimitive, isThenable, isPlainObject, isParameterizedString } from './utils-hoist/is.js';\nimport { logger, consoleSandbox } from './utils-hoist/logger.js';\nimport { uuid4, checkOrSetAlreadyCaught } from './utils-hoist/misc.js';\nimport { resolvedSyncPromise, SyncPromise, rejectedSyncPromise } from './utils-hoist/syncpromise.js';\nimport { parseSampleRate } from './utils/parseSampleRate.js';\nimport { prepareEvent } from './utils/prepareEvent.js';\nimport { showSpanDropWarning } from './utils/spanUtils.js';\n\nconst ALREADY_SEEN_ERROR = \"Not capturing exception because it's already been captured.\";\n\n/**\n * Base implementation for all JavaScript SDK clients.\n *\n * Call the constructor with the corresponding options\n * specific to the client subclass. To access these options later, use\n * {@link Client.getOptions}.\n *\n * If a Dsn is specified in the options, it will be parsed and stored. Use\n * {@link Client.getDsn} to retrieve the Dsn at any moment. In case the Dsn is\n * invalid, the constructor will throw a {@link SentryException}. Note that\n * without a valid Dsn, the SDK will not send any events to Sentry.\n *\n * Before sending an event, it is passed through\n * {@link BaseClient._prepareEvent} to add SDK information and scope data\n * (breadcrumbs and context). To add more custom information, override this\n * method and extend the resulting prepared event.\n *\n * To issue automatically created events (e.g. via instrumentation), use\n * {@link Client.captureEvent}. It will prepare the event and pass it through\n * the callback lifecycle. To issue auto-breadcrumbs, use\n * {@link Client.addBreadcrumb}.\n *\n * @example\n * class NodeClient extends BaseClient {\n * public constructor(options: NodeOptions) {\n * super(options);\n * }\n *\n * // ...\n * }\n */\nclass BaseClient {\n /** Options passed to the SDK. */\n\n /** The client Dsn, if specified in options. Without this Dsn, the SDK will be disabled. */\n\n /** Array of set up integrations. */\n\n /** Number of calls being processed */\n\n /** Holds flushable */\n\n // eslint-disable-next-line @typescript-eslint/ban-types\n\n /**\n * Initializes this client instance.\n *\n * @param options Options for the client.\n */\n constructor(options) {\n this._options = options;\n this._integrations = {};\n this._numProcessing = 0;\n this._outcomes = {};\n this._hooks = {};\n this._eventProcessors = [];\n\n if (options.dsn) {\n this._dsn = makeDsn(options.dsn);\n } else {\n DEBUG_BUILD && logger.warn('No DSN provided, client will not send events.');\n }\n\n if (this._dsn) {\n const url = getEnvelopeEndpointWithUrlEncodedAuth(\n this._dsn,\n options.tunnel,\n options._metadata ? options._metadata.sdk : undefined,\n );\n this._transport = options.transport({\n tunnel: this._options.tunnel,\n recordDroppedEvent: this.recordDroppedEvent.bind(this),\n ...options.transportOptions,\n url,\n });\n }\n\n // TODO(v9): Remove this deprecation warning\n const tracingOptions = ['enableTracing', 'tracesSampleRate', 'tracesSampler'] ;\n const undefinedOption = tracingOptions.find(option => option in options && options[option] == undefined);\n if (undefinedOption) {\n consoleSandbox(() => {\n // eslint-disable-next-line no-console\n console.warn(\n `[Sentry] Deprecation warning: \\`${undefinedOption}\\` is set to undefined, which leads to tracing being enabled. In v9, a value of \\`undefined\\` will result in tracing being disabled.`,\n );\n });\n }\n }\n\n /**\n * @inheritDoc\n */\n captureException(exception, hint, scope) {\n const eventId = uuid4();\n\n // ensure we haven't captured this very object before\n if (checkOrSetAlreadyCaught(exception)) {\n DEBUG_BUILD && logger.log(ALREADY_SEEN_ERROR);\n return eventId;\n }\n\n const hintWithEventId = {\n event_id: eventId,\n ...hint,\n };\n\n this._process(\n this.eventFromException(exception, hintWithEventId).then(event =>\n this._captureEvent(event, hintWithEventId, scope),\n ),\n );\n\n return hintWithEventId.event_id;\n }\n\n /**\n * @inheritDoc\n */\n captureMessage(\n message,\n level,\n hint,\n currentScope,\n ) {\n const hintWithEventId = {\n event_id: uuid4(),\n ...hint,\n };\n\n const eventMessage = isParameterizedString(message) ? message : String(message);\n\n const promisedEvent = isPrimitive(message)\n ? this.eventFromMessage(eventMessage, level, hintWithEventId)\n : this.eventFromException(message, hintWithEventId);\n\n this._process(promisedEvent.then(event => this._captureEvent(event, hintWithEventId, currentScope)));\n\n return hintWithEventId.event_id;\n }\n\n /**\n * @inheritDoc\n */\n captureEvent(event, hint, currentScope) {\n const eventId = uuid4();\n\n // ensure we haven't captured this very object before\n if (hint && hint.originalException && checkOrSetAlreadyCaught(hint.originalException)) {\n DEBUG_BUILD && logger.log(ALREADY_SEEN_ERROR);\n return eventId;\n }\n\n const hintWithEventId = {\n event_id: eventId,\n ...hint,\n };\n\n const sdkProcessingMetadata = event.sdkProcessingMetadata || {};\n const capturedSpanScope = sdkProcessingMetadata.capturedSpanScope;\n\n this._process(this._captureEvent(event, hintWithEventId, capturedSpanScope || currentScope));\n\n return hintWithEventId.event_id;\n }\n\n /**\n * @inheritDoc\n */\n captureSession(session) {\n if (!(typeof session.release === 'string')) {\n DEBUG_BUILD && logger.warn('Discarded session because of missing or non-string release');\n } else {\n this.sendSession(session);\n // After sending, we set init false to indicate it's not the first occurrence\n updateSession(session, { init: false });\n }\n }\n\n /**\n * @inheritDoc\n */\n getDsn() {\n return this._dsn;\n }\n\n /**\n * @inheritDoc\n */\n getOptions() {\n return this._options;\n }\n\n /**\n * @see SdkMetadata\n *\n * @return The metadata of the SDK\n */\n getSdkMetadata() {\n return this._options._metadata;\n }\n\n /**\n * @inheritDoc\n */\n getTransport() {\n return this._transport;\n }\n\n /**\n * @inheritDoc\n */\n flush(timeout) {\n const transport = this._transport;\n if (transport) {\n this.emit('flush');\n return this._isClientDoneProcessing(timeout).then(clientFinished => {\n return transport.flush(timeout).then(transportFlushed => clientFinished && transportFlushed);\n });\n } else {\n return resolvedSyncPromise(true);\n }\n }\n\n /**\n * @inheritDoc\n */\n close(timeout) {\n return this.flush(timeout).then(result => {\n this.getOptions().enabled = false;\n this.emit('close');\n return result;\n });\n }\n\n /** Get all installed event processors. */\n getEventProcessors() {\n return this._eventProcessors;\n }\n\n /** @inheritDoc */\n addEventProcessor(eventProcessor) {\n this._eventProcessors.push(eventProcessor);\n }\n\n /** @inheritdoc */\n init() {\n if (\n this._isEnabled() ||\n // Force integrations to be setup even if no DSN was set when we have\n // Spotlight enabled. This is particularly important for browser as we\n // don't support the `spotlight` option there and rely on the users\n // adding the `spotlightBrowserIntegration()` to their integrations which\n // wouldn't get initialized with the check below when there's no DSN set.\n this._options.integrations.some(({ name }) => name.startsWith('Spotlight'))\n ) {\n this._setupIntegrations();\n }\n }\n\n /**\n * Gets an installed integration by its name.\n *\n * @returns The installed integration or `undefined` if no integration with that `name` was installed.\n */\n getIntegrationByName(integrationName) {\n return this._integrations[integrationName] ;\n }\n\n /**\n * @inheritDoc\n */\n addIntegration(integration) {\n const isAlreadyInstalled = this._integrations[integration.name];\n\n // This hook takes care of only installing if not already installed\n setupIntegration(this, integration, this._integrations);\n // Here we need to check manually to make sure to not run this multiple times\n if (!isAlreadyInstalled) {\n afterSetupIntegrations(this, [integration]);\n }\n }\n\n /**\n * @inheritDoc\n */\n sendEvent(event, hint = {}) {\n this.emit('beforeSendEvent', event, hint);\n\n let env = createEventEnvelope(event, this._dsn, this._options._metadata, this._options.tunnel);\n\n for (const attachment of hint.attachments || []) {\n env = addItemToEnvelope(env, createAttachmentEnvelopeItem(attachment));\n }\n\n const promise = this.sendEnvelope(env);\n if (promise) {\n promise.then(sendResponse => this.emit('afterSendEvent', event, sendResponse), null);\n }\n }\n\n /**\n * @inheritDoc\n */\n sendSession(session) {\n const env = createSessionEnvelope(session, this._dsn, this._options._metadata, this._options.tunnel);\n\n // sendEnvelope should not throw\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n this.sendEnvelope(env);\n }\n\n /**\n * @inheritDoc\n */\n recordDroppedEvent(reason, category, eventOrCount) {\n if (this._options.sendClientReports) {\n // TODO v9: We do not need the `event` passed as third argument anymore, and can possibly remove this overload\n // If event is passed as third argument, we assume this is a count of 1\n const count = typeof eventOrCount === 'number' ? eventOrCount : 1;\n\n // We want to track each category (error, transaction, session, replay_event) separately\n // but still keep the distinction between different type of outcomes.\n // We could use nested maps, but it's much easier to read and type this way.\n // A correct type for map-based implementation if we want to go that route\n // would be `Partial>>>`\n // With typescript 4.1 we could even use template literal types\n const key = `${reason}:${category}`;\n DEBUG_BUILD && logger.log(`Recording outcome: \"${key}\"${count > 1 ? ` (${count} times)` : ''}`);\n this._outcomes[key] = (this._outcomes[key] || 0) + count;\n }\n }\n\n // Keep on() & emit() signatures in sync with types' client.ts interface\n /* eslint-disable @typescript-eslint/unified-signatures */\n\n /** @inheritdoc */\n\n /** @inheritdoc */\n on(hook, callback) {\n const hooks = (this._hooks[hook] = this._hooks[hook] || []);\n\n // @ts-expect-error We assume the types are correct\n hooks.push(callback);\n\n // This function returns a callback execution handler that, when invoked,\n // deregisters a callback. This is crucial for managing instances where callbacks\n // need to be unregistered to prevent self-referencing in callback closures,\n // ensuring proper garbage collection.\n return () => {\n // @ts-expect-error We assume the types are correct\n const cbIndex = hooks.indexOf(callback);\n if (cbIndex > -1) {\n hooks.splice(cbIndex, 1);\n }\n };\n }\n\n /** @inheritdoc */\n\n /** @inheritdoc */\n emit(hook, ...rest) {\n const callbacks = this._hooks[hook];\n if (callbacks) {\n callbacks.forEach(callback => callback(...rest));\n }\n }\n\n /**\n * @inheritdoc\n */\n sendEnvelope(envelope) {\n this.emit('beforeEnvelope', envelope);\n\n if (this._isEnabled() && this._transport) {\n return this._transport.send(envelope).then(null, reason => {\n DEBUG_BUILD && logger.error('Error while sending envelope:', reason);\n return reason;\n });\n }\n\n DEBUG_BUILD && logger.error('Transport disabled');\n\n return resolvedSyncPromise({});\n }\n\n /* eslint-enable @typescript-eslint/unified-signatures */\n\n /** Setup integrations for this client. */\n _setupIntegrations() {\n const { integrations } = this._options;\n this._integrations = setupIntegrations(this, integrations);\n afterSetupIntegrations(this, integrations);\n }\n\n /** Updates existing session based on the provided event */\n _updateSessionFromEvent(session, event) {\n let crashed = false;\n let errored = false;\n const exceptions = event.exception && event.exception.values;\n\n if (exceptions) {\n errored = true;\n\n for (const ex of exceptions) {\n const mechanism = ex.mechanism;\n if (mechanism && mechanism.handled === false) {\n crashed = true;\n break;\n }\n }\n }\n\n // A session is updated and that session update is sent in only one of the two following scenarios:\n // 1. Session with non terminal status and 0 errors + an error occurred -> Will set error count to 1 and send update\n // 2. Session with non terminal status and 1 error + a crash occurred -> Will set status crashed and send update\n const sessionNonTerminal = session.status === 'ok';\n const shouldUpdateAndSend = (sessionNonTerminal && session.errors === 0) || (sessionNonTerminal && crashed);\n\n if (shouldUpdateAndSend) {\n updateSession(session, {\n ...(crashed && { status: 'crashed' }),\n errors: session.errors || Number(errored || crashed),\n });\n this.captureSession(session);\n }\n }\n\n /**\n * Determine if the client is finished processing. Returns a promise because it will wait `timeout` ms before saying\n * \"no\" (resolving to `false`) in order to give the client a chance to potentially finish first.\n *\n * @param timeout The time, in ms, after which to resolve to `false` if the client is still busy. Passing `0` (or not\n * passing anything) will make the promise wait as long as it takes for processing to finish before resolving to\n * `true`.\n * @returns A promise which will resolve to `true` if processing is already done or finishes before the timeout, and\n * `false` otherwise\n */\n _isClientDoneProcessing(timeout) {\n return new SyncPromise(resolve => {\n let ticked = 0;\n const tick = 1;\n\n const interval = setInterval(() => {\n if (this._numProcessing == 0) {\n clearInterval(interval);\n resolve(true);\n } else {\n ticked += tick;\n if (timeout && ticked >= timeout) {\n clearInterval(interval);\n resolve(false);\n }\n }\n }, tick);\n });\n }\n\n /** Determines whether this SDK is enabled and a transport is present. */\n _isEnabled() {\n return this.getOptions().enabled !== false && this._transport !== undefined;\n }\n\n /**\n * Adds common information to events.\n *\n * The information includes release and environment from `options`,\n * breadcrumbs and context (extra, tags and user) from the scope.\n *\n * Information that is already present in the event is never overwritten. For\n * nested objects, such as the context, keys are merged.\n *\n * @param event The original event.\n * @param hint May contain additional information about the original exception.\n * @param currentScope A scope containing event metadata.\n * @returns A new event with more information.\n */\n _prepareEvent(\n event,\n hint,\n currentScope = getCurrentScope(),\n isolationScope = getIsolationScope(),\n ) {\n const options = this.getOptions();\n const integrations = Object.keys(this._integrations);\n if (!hint.integrations && integrations.length > 0) {\n hint.integrations = integrations;\n }\n\n this.emit('preprocessEvent', event, hint);\n\n if (!event.type) {\n isolationScope.setLastEventId(event.event_id || hint.event_id);\n }\n\n return prepareEvent(options, event, hint, currentScope, this, isolationScope).then(evt => {\n if (evt === null) {\n return evt;\n }\n\n evt.contexts = {\n trace: getTraceContextFromScope(currentScope),\n ...evt.contexts,\n };\n\n const dynamicSamplingContext = getDynamicSamplingContextFromScope(this, currentScope);\n\n evt.sdkProcessingMetadata = {\n dynamicSamplingContext,\n ...evt.sdkProcessingMetadata,\n };\n\n return evt;\n });\n }\n\n /**\n * Processes the event and logs an error in case of rejection\n * @param event\n * @param hint\n * @param scope\n */\n _captureEvent(event, hint = {}, scope) {\n return this._processEvent(event, hint, scope).then(\n finalEvent => {\n return finalEvent.event_id;\n },\n reason => {\n if (DEBUG_BUILD) {\n // If something's gone wrong, log the error as a warning. If it's just us having used a `SentryError` for\n // control flow, log just the message (no stack) as a log-level log.\n const sentryError = reason ;\n if (sentryError.logLevel === 'log') {\n logger.log(sentryError.message);\n } else {\n logger.warn(sentryError);\n }\n }\n return undefined;\n },\n );\n }\n\n /**\n * Processes an event (either error or message) and sends it to Sentry.\n *\n * This also adds breadcrumbs and context information to the event. However,\n * platform specific meta data (such as the User's IP address) must be added\n * by the SDK implementor.\n *\n *\n * @param event The event to send to Sentry.\n * @param hint May contain additional information about the original exception.\n * @param currentScope A scope containing event metadata.\n * @returns A SyncPromise that resolves with the event or rejects in case event was/will not be send.\n */\n _processEvent(event, hint, currentScope) {\n const options = this.getOptions();\n const { sampleRate } = options;\n\n const isTransaction = isTransactionEvent(event);\n const isError = isErrorEvent(event);\n const eventType = event.type || 'error';\n const beforeSendLabel = `before send for type \\`${eventType}\\``;\n\n // 1.0 === 100% events are sent\n // 0.0 === 0% events are sent\n // Sampling for transaction happens somewhere else\n const parsedSampleRate = typeof sampleRate === 'undefined' ? undefined : parseSampleRate(sampleRate);\n if (isError && typeof parsedSampleRate === 'number' && Math.random() > parsedSampleRate) {\n this.recordDroppedEvent('sample_rate', 'error', event);\n return rejectedSyncPromise(\n new SentryError(\n `Discarding event because it's not included in the random sample (sampling rate = ${sampleRate})`,\n 'log',\n ),\n );\n }\n\n const dataCategory = eventType === 'replay_event' ? 'replay' : eventType;\n\n const sdkProcessingMetadata = event.sdkProcessingMetadata || {};\n const capturedSpanIsolationScope = sdkProcessingMetadata.capturedSpanIsolationScope;\n\n return this._prepareEvent(event, hint, currentScope, capturedSpanIsolationScope)\n .then(prepared => {\n if (prepared === null) {\n this.recordDroppedEvent('event_processor', dataCategory, event);\n throw new SentryError('An event processor returned `null`, will not send event.', 'log');\n }\n\n const isInternalException = hint.data && (hint.data ).__sentry__ === true;\n if (isInternalException) {\n return prepared;\n }\n\n const result = processBeforeSend(this, options, prepared, hint);\n return _validateBeforeSendResult(result, beforeSendLabel);\n })\n .then(processedEvent => {\n if (processedEvent === null) {\n this.recordDroppedEvent('before_send', dataCategory, event);\n if (isTransaction) {\n const spans = event.spans || [];\n // the transaction itself counts as one span, plus all the child spans that are added\n const spanCount = 1 + spans.length;\n this.recordDroppedEvent('before_send', 'span', spanCount);\n }\n throw new SentryError(`${beforeSendLabel} returned \\`null\\`, will not send event.`, 'log');\n }\n\n const session = currentScope && currentScope.getSession();\n if (!isTransaction && session) {\n this._updateSessionFromEvent(session, processedEvent);\n }\n\n if (isTransaction) {\n const spanCountBefore =\n (processedEvent.sdkProcessingMetadata && processedEvent.sdkProcessingMetadata.spanCountBeforeProcessing) ||\n 0;\n const spanCountAfter = processedEvent.spans ? processedEvent.spans.length : 0;\n\n const droppedSpanCount = spanCountBefore - spanCountAfter;\n if (droppedSpanCount > 0) {\n this.recordDroppedEvent('before_send', 'span', droppedSpanCount);\n }\n }\n\n // None of the Sentry built event processor will update transaction name,\n // so if the transaction name has been changed by an event processor, we know\n // it has to come from custom event processor added by a user\n const transactionInfo = processedEvent.transaction_info;\n if (isTransaction && transactionInfo && processedEvent.transaction !== event.transaction) {\n const source = 'custom';\n processedEvent.transaction_info = {\n ...transactionInfo,\n source,\n };\n }\n\n this.sendEvent(processedEvent, hint);\n return processedEvent;\n })\n .then(null, reason => {\n if (reason instanceof SentryError) {\n throw reason;\n }\n\n this.captureException(reason, {\n data: {\n __sentry__: true,\n },\n originalException: reason,\n });\n throw new SentryError(\n `Event processing pipeline threw an error, original event will not be sent. Details have been sent as a new event.\\nReason: ${reason}`,\n );\n });\n }\n\n /**\n * Occupies the client with processing and event\n */\n _process(promise) {\n this._numProcessing++;\n void promise.then(\n value => {\n this._numProcessing--;\n return value;\n },\n reason => {\n this._numProcessing--;\n return reason;\n },\n );\n }\n\n /**\n * Clears outcomes on this client and returns them.\n */\n _clearOutcomes() {\n const outcomes = this._outcomes;\n this._outcomes = {};\n return Object.entries(outcomes).map(([key, quantity]) => {\n const [reason, category] = key.split(':') ;\n return {\n reason,\n category,\n quantity,\n };\n });\n }\n\n /**\n * Sends client reports as an envelope.\n */\n _flushOutcomes() {\n DEBUG_BUILD && logger.log('Flushing outcomes...');\n\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 /**\n * @inheritDoc\n */\n\n}\n\n/**\n * Verifies that return value of configured `beforeSend` or `beforeSendTransaction` is of expected type, and returns the value if so.\n */\nfunction _validateBeforeSendResult(\n beforeSendResult,\n beforeSendLabel,\n) {\n const invalidValueError = `${beforeSendLabel} must return \\`null\\` or a valid event.`;\n if (isThenable(beforeSendResult)) {\n return beforeSendResult.then(\n event => {\n if (!isPlainObject(event) && event !== null) {\n throw new SentryError(invalidValueError);\n }\n return event;\n },\n e => {\n throw new SentryError(`${beforeSendLabel} rejected with ${e}`);\n },\n );\n } else if (!isPlainObject(beforeSendResult) && beforeSendResult !== null) {\n throw new SentryError(invalidValueError);\n }\n return beforeSendResult;\n}\n\n/**\n * Process the matching `beforeSendXXX` callback.\n */\nfunction processBeforeSend(\n client,\n options,\n event,\n hint,\n) {\n const { beforeSend, beforeSendTransaction, beforeSendSpan } = options;\n\n if (isErrorEvent(event) && beforeSend) {\n return beforeSend(event, hint);\n }\n\n if (isTransactionEvent(event)) {\n if (event.spans && beforeSendSpan) {\n const processedSpans = [];\n for (const span of event.spans) {\n const processedSpan = beforeSendSpan(span);\n if (processedSpan) {\n processedSpans.push(processedSpan);\n } else {\n showSpanDropWarning();\n client.recordDroppedEvent('before_send', 'span');\n }\n }\n event.spans = processedSpans;\n }\n\n if (beforeSendTransaction) {\n if (event.spans) {\n // We store the # of spans before processing in SDK metadata,\n // so we can compare it afterwards to determine how many spans were dropped\n const spanCountBefore = event.spans.length;\n event.sdkProcessingMetadata = {\n ...event.sdkProcessingMetadata,\n spanCountBeforeProcessing: spanCountBefore,\n };\n }\n return beforeSendTransaction(event, hint);\n }\n }\n\n return event;\n}\n\nfunction isErrorEvent(event) {\n return event.type === undefined;\n}\n\nfunction isTransactionEvent(event) {\n return event.type === 'transaction';\n}\n\nexport { BaseClient };\n//# sourceMappingURL=baseclient.js.map\n","import { createEnvelope } from './envelope.js';\nimport { dateTimestampInSeconds } from './time.js';\n\n/**\n * Creates client report envelope\n * @param discarded_events An array of discard events\n * @param dsn A DSN that can be set on the header. Optional.\n */\nfunction createClientReportEnvelope(\n discarded_events,\n dsn,\n timestamp,\n) {\n const clientReportItem = [\n { type: 'client_report' },\n {\n timestamp: timestamp || dateTimestampInSeconds(),\n discarded_events,\n },\n ];\n return createEnvelope(dsn ? { dsn } : {}, [clientReportItem]);\n}\n\nexport { createClientReportEnvelope };\n//# sourceMappingURL=clientreport.js.map\n","import { BaseClient, getSDKSource, applySdkMetadata, logger } from '@sentry/core';\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/core 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 opts = {\n // We default this to true, as it is the safer scenario\n parentSpanIsAlwaysRootSpan: true,\n ...options,\n };\n const sdkSource = WINDOW.SENTRY_SDK_SOURCE || getSDKSource();\n applySdkMetadata(opts, 'browser', ['browser'], sdkSource);\n\n super(opts);\n\n if (opts.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 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 * @deprecated Use `captureFeedback` instead.\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\nexport { BrowserClient };\n//# sourceMappingURL=client.js.map\n","import { SDK_VERSION } from '../utils-hoist/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 { addExceptionMechanism, resolvedSyncPromise, isErrorEvent, isDOMError, isDOMException, addExceptionTypeValue, isError, isPlainObject, isEvent, isParameterizedString, getClient, normalizeToSize, extractExceptionKeysForMessage } from '@sentry/core';\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: extractType(ex),\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\nfunction eventFromPlainObject(\n stackParser,\n exception,\n syntheticException,\n isUnhandledRejection,\n) {\n const client = getClient();\n const normalizeDepth = client && client.getOptions().normalizeDepth;\n\n // If we can, we extract an exception from the object properties\n const errorFromProp = getErrorPropertyFromObject(exception);\n\n const extra = {\n __serialized__: normalizeToSize(exception, normalizeDepth),\n };\n\n if (errorFromProp) {\n return {\n exception: {\n values: [exceptionFromError(stackParser, errorFromProp)],\n },\n extra,\n };\n }\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 } ;\n\n if (syntheticException) {\n const frames = parseStackFrames(stackParser, syntheticException);\n if (frames.length) {\n // event.exception.values[0] has been set above\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values[0].stacktrace = { frames };\n }\n }\n\n return event;\n}\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 skipLines = getSkipFirstStackStringLines(ex);\n const framesToPop = getPopFirstTopFrames(ex);\n\n try {\n return stackParser(stacktrace, skipLines, framesToPop);\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\n/**\n * Certain known React errors contain links that would be falsely\n * parsed as frames. This function check for these errors and\n * returns number of the stack string lines to skip.\n */\nfunction getSkipFirstStackStringLines(ex) {\n if (ex && reactMinifiedRegexp.test(ex.message)) {\n return 1;\n }\n\n return 0;\n}\n\n/**\n * If error has `framesToPop` property, it means that the\n * creator tells us the first x frames will be useless\n * and should be discarded. Typically error from wrapper function\n * which don't point to the actual location in the developer's code.\n *\n * Example: https://github.com/zertosh/invariant/blob/master/invariant.js#L46\n */\nfunction getPopFirstTopFrames(ex) {\n if (typeof ex.framesToPop === 'number') {\n return ex.framesToPop;\n }\n\n return 0;\n}\n\n// https://developer.mozilla.org/en-US/docs/WebAssembly/JavaScript_interface/Exception\n// @ts-expect-error - WebAssembly.Exception is a valid class\nfunction isWebAssemblyException(exception) {\n // Check for support\n // @ts-expect-error - WebAssembly.Exception is a valid class\n if (typeof WebAssembly !== 'undefined' && typeof WebAssembly.Exception !== 'undefined') {\n // @ts-expect-error - WebAssembly.Exception is a valid class\n return exception instanceof WebAssembly.Exception;\n } else {\n return false;\n }\n}\n\n/**\n * Extracts from errors what we use as the exception `type` in error events.\n *\n * Usually, this is the `name` property on Error objects but WASM errors need to be treated differently.\n */\nfunction extractType(ex) {\n const name = ex && ex.name;\n\n // The name for WebAssembly.Exception Errors needs to be extracted differently.\n // Context: https://github.com/getsentry/sentry-javascript/issues/13787\n if (!name && isWebAssemblyException(ex)) {\n // Emscripten sets array[type, message] to the \"message\" property on the WebAssembly.Exception object\n const hasTypeInMessage = ex.message && Array.isArray(ex.message) && ex.message.length == 2;\n return hasTypeInMessage ? ex.message[0] : 'WebAssembly.Exception';\n }\n\n return name;\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\n if (!message) {\n return 'No error message';\n }\n\n if (message.error && typeof message.error.message === 'string') {\n return message.error.message;\n }\n\n // Emscripten sets array[type, message] to the \"message\" property on the WebAssembly.Exception object\n if (isWebAssemblyException(ex) && Array.isArray(ex.message) && ex.message.length == 2) {\n return ex.message[1];\n }\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 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\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 addExceptionMechanism(event, { synthetic: true });\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\n/** If a plain object has a property that is an `Error`, return this error. */\nfunction getErrorPropertyFromObject(obj) {\n for (const prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n const value = obj[prop];\n if (value instanceof Error) {\n return value;\n }\n }\n }\n\n return undefined;\n}\n\nexport { eventFromException, eventFromMessage, eventFromUnknownInput, exceptionFromError, extractMessage, extractType };\n//# sourceMappingURL=eventbuilder.js.map\n","import { GLOBAL_OBJ, getOriginalFunction, markFunctionWrapped, addNonEnumerableProperty, withScope, addExceptionTypeValue, addExceptionMechanism, captureException } from '@sentry/core';\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// eslint-disable-next-line @typescript-eslint/ban-types\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) {\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 function isFunction(fn) {\n return typeof fn === 'function';\n }\n\n if (!isFunction(fn)) {\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 if (typeof wrapper === 'function') {\n return wrapper;\n } else {\n // If we find that the `__sentry_wrapped__` function is not a function at the time of accessing it, it means\n // that something messed with it. In that case we want to return the originally passed function.\n return fn;\n }\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 // Wrap the function itself\n // It is important that `sentryWrapped` is not an arrow function to preserve the context of `this`\n const sentryWrapped = function ( ...args) {\n try {\n // Also wrap arguments that are themselves functions\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\n // Wrap the wrapped function in a proxy, to ensure any other properties of the original function remain available\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 (e2) {\n // Accessing some objects may throw\n // ref: https://github.com/getsentry/sentry-javascript/issues/1168\n }\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 // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\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 } catch (e3) {\n // This may throw if e.g. the descriptor does not exist, or a browser does not allow redefining `name`.\n // to save some bytes we simply try-catch this\n }\n\n return sentryWrapped;\n}\n\nexport { WINDOW, ignoreNextOnError, shouldIgnoreOnError, wrap };\n//# sourceMappingURL=helpers.js.map\n","import { registerSpanErrorInstrumentation } from './errors.js';\n\n/**\n * @deprecated Use `registerSpanErrorInstrumentation()` instead. In v9, this function will be removed. Note that you don't need to call this in Node-based SDKs or when using `browserTracingIntegration`.\n */\nfunction addTracingExtensions() {\n registerSpanErrorInstrumentation();\n}\n\nexport { addTracingExtensions };\n//# sourceMappingURL=hubextensions.js.map\n","import { getClient, withScope } from '../currentScopes.js';\nimport { captureMessage, captureException } from '../exports.js';\nimport { defineIntegration } from '../integration.js';\nimport { addConsoleInstrumentationHandler } from '../utils-hoist/instrument/console.js';\nimport { CONSOLE_LEVELS } from '../utils-hoist/logger.js';\nimport { addExceptionMechanism } from '../utils-hoist/misc.js';\nimport { severityLevelFromString } from '../utils-hoist/severity.js';\nimport { safeJoin } from '../utils-hoist/string.js';\nimport { GLOBAL_OBJ } from '../utils-hoist/worldwide.js';\n\nconst INTEGRATION_NAME = 'CaptureConsole';\n\nconst _captureConsoleIntegration = ((options = {}) => {\n const levels = options.levels || CONSOLE_LEVELS;\n // TODO(v9): Flip default value to `true`\n const handled = !!options.handled;\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n if (!('console' in GLOBAL_OBJ)) {\n return;\n }\n\n addConsoleInstrumentationHandler(({ args, level }) => {\n if (getClient() !== client || !levels.includes(level)) {\n return;\n }\n\n consoleHandler(args, level, handled);\n });\n },\n };\n}) ;\n\n/**\n * Send Console API calls as Sentry Events.\n */\nconst captureConsoleIntegration = defineIntegration(_captureConsoleIntegration);\n\nfunction consoleHandler(args, level, handled) {\n const captureContext = {\n level: severityLevelFromString(level),\n extra: {\n arguments: args,\n },\n };\n\n withScope(scope => {\n scope.addEventProcessor(event => {\n event.logger = 'console';\n\n addExceptionMechanism(event, {\n handled,\n type: 'console',\n });\n\n return event;\n });\n\n if (level === 'assert') {\n if (!args[0]) {\n const message = `Assertion failed: ${safeJoin(args.slice(1), ' ') || 'console.assert'}`;\n scope.setExtra('arguments', args.slice(1));\n captureMessage(message, captureContext);\n }\n return;\n }\n\n const error = args.find(arg => arg instanceof Error);\n if (error) {\n captureException(error, captureContext);\n return;\n }\n\n const message = safeJoin(args, ' ');\n captureMessage(message, captureContext);\n });\n}\n\nexport { captureConsoleIntegration };\n//# sourceMappingURL=captureconsole.js.map\n","import { getClient, getCurrentScope } from './currentScopes.js';\nimport { dropUndefinedKeys } from './utils-hoist/object.js';\n\n/**\n * Send user feedback to Sentry.\n */\nfunction captureFeedback(\n params,\n hint = {},\n scope = getCurrentScope(),\n) {\n const { message, name, email, url, source, associatedEventId, tags } = params;\n\n const feedbackEvent = {\n contexts: {\n feedback: dropUndefinedKeys({\n contact_email: email,\n name,\n message,\n url,\n source,\n associated_event_id: associatedEventId,\n }),\n },\n type: 'feedback',\n level: 'info',\n tags,\n };\n\n const client = (scope && scope.getClient()) || getClient();\n\n if (client) {\n client.emit('beforeSendFeedback', feedbackEvent, hint);\n }\n\n const eventId = scope.captureEvent(feedbackEvent, hint);\n\n return eventId;\n}\n\nexport { captureFeedback };\n//# sourceMappingURL=feedback.js.map\n","import { defineIntegration } from '../integration.js';\nimport { consoleSandbox } from '../utils-hoist/logger.js';\n\nconst INTEGRATION_NAME = 'Debug';\n\nconst _debugIntegration = ((options = {}) => {\n const _options = {\n debugger: false,\n stringify: false,\n ...options,\n };\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n client.on('beforeSendEvent', (event, hint) => {\n if (_options.debugger) {\n // eslint-disable-next-line no-debugger\n debugger;\n }\n\n /* eslint-disable no-console */\n consoleSandbox(() => {\n if (_options.stringify) {\n console.log(JSON.stringify(event, null, 2));\n if (hint && Object.keys(hint).length) {\n console.log(JSON.stringify(hint, null, 2));\n }\n } else {\n console.log(event);\n if (hint && Object.keys(hint).length) {\n console.log(hint);\n }\n }\n });\n /* eslint-enable no-console */\n });\n },\n };\n}) ;\n\n/**\n * Integration to debug sent Sentry events.\n * This integration should not be used in production.\n *\n * @deprecated This integration is deprecated and will be removed in the next major version of the SDK.\n * To log outgoing events, use [Hook Options](https://docs.sentry.io/platforms/javascript/configuration/options/#hooks) (`beforeSend`, `beforeSendTransaction`, ...).\n */\nconst debugIntegration = defineIntegration(_debugIntegration);\n\nexport { debugIntegration };\n//# sourceMappingURL=debug.js.map\n","import { defineIntegration } from '../integration.js';\nimport { DEBUG_BUILD } from '../debug-build.js';\nimport { isError, isPlainObject } from '../utils-hoist/is.js';\nimport { logger } from '../utils-hoist/logger.js';\nimport { normalize } from '../utils-hoist/normalize.js';\nimport { addNonEnumerableProperty } from '../utils-hoist/object.js';\nimport { truncate } from '../utils-hoist/string.js';\n\nconst INTEGRATION_NAME = 'ExtraErrorData';\n\n/**\n * Extract additional data for from original exceptions.\n */\nconst _extraErrorDataIntegration = ((options = {}) => {\n const { depth = 3, captureErrorCause = true } = options;\n return {\n name: INTEGRATION_NAME,\n processEvent(event, hint, client) {\n const { maxValueLength = 250 } = client.getOptions();\n return _enhanceEventWithErrorData(event, hint, depth, captureErrorCause, maxValueLength);\n },\n };\n}) ;\n\nconst extraErrorDataIntegration = defineIntegration(_extraErrorDataIntegration);\n\nfunction _enhanceEventWithErrorData(\n event,\n hint = {},\n depth,\n captureErrorCause,\n maxValueLength,\n) {\n if (!hint.originalException || !isError(hint.originalException)) {\n return event;\n }\n const exceptionName = (hint.originalException ).name || hint.originalException.constructor.name;\n\n const errorData = _extractErrorData(hint.originalException , captureErrorCause, maxValueLength);\n\n if (errorData) {\n const contexts = {\n ...event.contexts,\n };\n\n const normalizedErrorData = normalize(errorData, depth);\n\n if (isPlainObject(normalizedErrorData)) {\n // We mark the error data as \"already normalized\" here, because we don't want other normalization procedures to\n // potentially truncate the data we just already normalized, with a certain depth setting.\n addNonEnumerableProperty(normalizedErrorData, '__sentry_skip_normalization__', true);\n contexts[exceptionName] = normalizedErrorData;\n }\n\n return {\n ...event,\n contexts,\n };\n }\n\n return event;\n}\n\n/**\n * Extract extra information from the Error object\n */\nfunction _extractErrorData(\n error,\n captureErrorCause,\n maxValueLength,\n) {\n // We are trying to enhance already existing event, so no harm done if it won't succeed\n try {\n const nativeKeys = [\n 'name',\n 'message',\n 'stack',\n 'line',\n 'column',\n 'fileName',\n 'lineNumber',\n 'columnNumber',\n 'toJSON',\n ];\n\n const extraErrorInfo = {};\n\n // We want only enumerable properties, thus `getOwnPropertyNames` is redundant here, as we filter keys anyway.\n for (const key of Object.keys(error)) {\n if (nativeKeys.indexOf(key) !== -1) {\n continue;\n }\n const value = error[key];\n extraErrorInfo[key] = isError(value) || typeof value === 'string' ? truncate(`${value}`, maxValueLength) : value;\n }\n\n // Error.cause is a standard property that is non enumerable, we therefore need to access it separately.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/cause\n if (captureErrorCause && error.cause !== undefined) {\n extraErrorInfo.cause = isError(error.cause) ? error.cause.toString() : error.cause;\n }\n\n // Check if someone attached `toJSON` method to grab even more properties (eg. axios is doing that)\n if (typeof error.toJSON === 'function') {\n const serializedError = error.toJSON() ;\n\n for (const key of Object.keys(serializedError)) {\n const value = serializedError[key];\n extraErrorInfo[key] = isError(value) ? value.toString() : value;\n }\n }\n\n return extraErrorInfo;\n } catch (oO) {\n DEBUG_BUILD && logger.error('Unable to extract extra data from the Error object:', oO);\n }\n\n return null;\n}\n\nexport { extraErrorDataIntegration };\n//# sourceMappingURL=extraerrordata.js.map\n","import { addBreadcrumb } from './breadcrumbs.js';\nimport { getCurrentScope, withScope, getClient, getIsolationScope } from './currentScopes.js';\nimport { captureEvent, setUser, setTags, setTag, setExtra, setExtras, setContext, startSession, endSession } from './exports.js';\n\n/**\n * This is for legacy reasons, and returns a proxy object instead of a hub to be used.\n *\n * @deprecated Use the methods directly from the top level Sentry API (e.g. `Sentry.withScope`)\n * For more information see our migration guide for\n * [replacing `getCurrentHub` and `Hub`](https://github.com/getsentry/sentry-javascript/blob/develop/MIGRATION.md#deprecate-hub)\n * usage\n */\n// eslint-disable-next-line deprecation/deprecation\nfunction getCurrentHubShim() {\n return {\n bindClient(client) {\n const scope = getCurrentScope();\n scope.setClient(client);\n },\n\n withScope,\n getClient: () => getClient() ,\n getScope: getCurrentScope,\n getIsolationScope,\n captureException: (exception, hint) => {\n return getCurrentScope().captureException(exception, hint);\n },\n captureMessage: (message, level, hint) => {\n return getCurrentScope().captureMessage(message, level, hint);\n },\n captureEvent,\n addBreadcrumb,\n setUser,\n setTags,\n setTag,\n setExtra,\n setExtras,\n setContext,\n\n getIntegration(integration) {\n const client = getClient();\n return (client && client.getIntegrationByName(integration.id)) || null;\n },\n\n startSession,\n endSession,\n captureSession(end) {\n // both send the update and pull the session from the scope\n if (end) {\n return endSession();\n }\n\n // only send the update\n _sendSessionUpdate();\n },\n };\n}\n\n/**\n * Returns the default hub instance.\n *\n * If a hub is already registered in the global carrier but this module\n * contains a more recent version, it replaces the registered version.\n * Otherwise, the currently registered hub will be returned.\n *\n * @deprecated Use the respective replacement method directly instead.\n */\n// eslint-disable-next-line deprecation/deprecation\nconst getCurrentHub = getCurrentHubShim;\n\n/**\n * Sends the current Session on the scope\n */\nfunction _sendSessionUpdate() {\n const scope = getCurrentScope();\n const client = getClient();\n\n const session = scope.getSession();\n if (client && session) {\n client.captureSession(session);\n }\n}\n\nexport { getCurrentHub, getCurrentHubShim };\n//# sourceMappingURL=getCurrentHubShim.js.map\n","import { getEnvelopeEndpointWithUrlEncodedAuth } from '../api.js';\nimport { dsnFromString } from '../utils-hoist/dsn.js';\nimport { createEnvelope, forEachEnvelopeItem } from '../utils-hoist/envelope.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 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 // Don't override the DSN in the header for the fallback transport. '' is falsy\n const transportsWithFallback = transports.length ? transports : [['', fallbackTransport]];\n\n const results = (await Promise.all(\n transportsWithFallback.map(([dsn, transport]) => transport.send(overrideDsn(envelope, dsn))),\n )) ;\n\n return results[0];\n }\n\n async function flush(timeout) {\n const allTransports = [...otherTransports.values(), fallbackTransport];\n const results = await Promise.all(allTransports.map(transport => transport.flush(timeout)));\n return results.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 { GLOBAL_OBJ } from './utils-hoist/worldwide.js';\n\n/** Keys are source filename/url, values are metadata objects. */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst filenameMetadataMap = new Map();\n/** Set of stack strings that have already been parsed. */\nconst parsedStacks = new Set();\n\nfunction ensureMetadataStacksAreParsed(parser) {\n if (!GLOBAL_OBJ._sentryModuleMetadata) {\n return;\n }\n\n for (const stack of Object.keys(GLOBAL_OBJ._sentryModuleMetadata)) {\n const metadata = GLOBAL_OBJ._sentryModuleMetadata[stack];\n\n if (parsedStacks.has(stack)) {\n continue;\n }\n\n // Ensure this stack doesn't get parsed again\n parsedStacks.add(stack);\n\n const frames = parser(stack);\n\n // Go through the frames starting from the top of the stack and find the first one with a filename\n for (const frame of frames.reverse()) {\n if (frame.filename) {\n // Save the metadata for this filename\n filenameMetadataMap.set(frame.filename, metadata);\n break;\n }\n }\n }\n}\n\n/**\n * Retrieve metadata for a specific JavaScript file URL.\n *\n * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getMetadataForUrl(parser, filename) {\n ensureMetadataStacksAreParsed(parser);\n return filenameMetadataMap.get(filename);\n}\n\n/**\n * Adds metadata to stack frames.\n *\n * Metadata is injected by the Sentry bundler plugins using the `_experiments.moduleMetadata` config option.\n */\nfunction addMetadataToStackFrames(parser, event) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values.forEach(exception => {\n if (!exception.stacktrace) {\n return;\n }\n\n for (const frame of exception.stacktrace.frames || []) {\n if (!frame.filename || frame.module_metadata) {\n continue;\n }\n\n const metadata = getMetadataForUrl(parser, frame.filename);\n\n if (metadata) {\n frame.module_metadata = metadata;\n }\n }\n });\n } catch (_) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n}\n\n/**\n * Strips metadata from stack frames.\n */\nfunction stripMetadataFromStackFrames(event) {\n try {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n event.exception.values.forEach(exception => {\n if (!exception.stacktrace) {\n return;\n }\n\n for (const frame of exception.stacktrace.frames || []) {\n delete frame.module_metadata;\n }\n });\n } catch (_) {\n // To save bundle size we're just try catching here instead of checking for the existence of all the different objects.\n }\n}\n\nexport { addMetadataToStackFrames, getMetadataForUrl, stripMetadataFromStackFrames };\n//# sourceMappingURL=metadata.js.map\n","import { defineIntegration } from '../integration.js';\nimport { stripMetadataFromStackFrames, addMetadataToStackFrames } from '../metadata.js';\nimport { forEachEnvelopeItem } from '../utils-hoist/envelope.js';\n\n/**\n * Adds module metadata to stack frames.\n *\n * Metadata can be injected by the Sentry bundler plugins using the `moduleMetadata` config option.\n *\n * When this integration is added, the metadata passed to the bundler plugin is added to the stack frames of all events\n * under the `module_metadata` property. This can be used to help in tagging or routing of events from different teams\n * our sources\n */\nconst moduleMetadataIntegration = defineIntegration(() => {\n return {\n name: 'ModuleMetadata',\n setup(client) {\n // We need to strip metadata from stack frames before sending them to Sentry since these are client side only.\n client.on('beforeEnvelope', envelope => {\n forEachEnvelopeItem(envelope, (item, type) => {\n if (type === 'event') {\n const event = Array.isArray(item) ? (item )[1] : undefined;\n\n if (event) {\n stripMetadataFromStackFrames(event);\n item[1] = event;\n }\n }\n });\n });\n\n client.on('applyFrameMetadata', event => {\n // Only apply stack frame metadata to error events\n if (event.type) {\n return;\n }\n\n const stackParser = client.getOptions().stackParser;\n addMetadataToStackFrames(stackParser, event);\n });\n },\n };\n});\n\nexport { moduleMetadataIntegration };\n//# sourceMappingURL=metadata.js.map\n","/**\n * Tagged template function which returns parameterized 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","// Slightly modified (no IE8 support, ES6) and transcribed to TypeScript\n// https://github.com/calvinmetcalf/rollup-plugin-node-builtins/blob/63ab8aacd013767445ca299e468d9a60a95328d7/src/es6/path.js\n//\n// Copyright Joyent, Inc.and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n/** JSDoc */\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n let up = 0;\n for (let i = parts.length - 1; i >= 0; i--) {\n const last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// Split a filename into [root, dir, basename, ext], unix version\n// 'root' is just a slash, or nothing.\nconst splitPathRe = /^(\\S+:\\\\|\\/?)([\\s\\S]*?)((?:\\.{1,2}|[^/\\\\]+?|)(\\.[^./\\\\]*|))(?:[/\\\\]*)$/;\n/** JSDoc */\nfunction splitPath(filename) {\n // Truncate files names greater than 1024 characters to avoid regex dos\n // https://github.com/getsentry/sentry-javascript/pull/8737#discussion_r1285719172\n const truncated = filename.length > 1024 ? `${filename.slice(-1024)}` : filename;\n const parts = splitPathRe.exec(truncated);\n return parts ? parts.slice(1) : [];\n}\n\n// path.resolve([from ...], to)\n// posix version\n/** JSDoc */\nfunction resolve(...args) {\n let resolvedPath = '';\n let resolvedAbsolute = false;\n\n for (let i = args.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n const path = i >= 0 ? args[i] : '/';\n\n // Skip empty entries\n if (!path) {\n continue;\n }\n\n resolvedPath = `${path}/${resolvedPath}`;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(\n resolvedPath.split('/').filter(p => !!p),\n !resolvedAbsolute,\n ).join('/');\n\n return (resolvedAbsolute ? '/' : '') + resolvedPath || '.';\n}\n\n/** JSDoc */\nfunction trim(arr) {\n let start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') {\n break;\n }\n }\n\n let end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') {\n break;\n }\n }\n\n if (start > end) {\n return [];\n }\n return arr.slice(start, end - start + 1);\n}\n\n// path.relative(from, to)\n// posix version\n/** JSDoc */\nfunction relative(from, to) {\n /* eslint-disable no-param-reassign */\n from = resolve(from).slice(1);\n to = resolve(to).slice(1);\n /* eslint-enable no-param-reassign */\n\n const fromParts = trim(from.split('/'));\n const toParts = trim(to.split('/'));\n\n const length = Math.min(fromParts.length, toParts.length);\n let samePartsLength = length;\n for (let i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n let outputParts = [];\n for (let i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n}\n\n// path.normalize(path)\n// posix version\n/** JSDoc */\nfunction normalizePath(path) {\n const isPathAbsolute = isAbsolute(path);\n const trailingSlash = path.slice(-1) === '/';\n\n // Normalize the path\n let normalizedPath = normalizeArray(\n path.split('/').filter(p => !!p),\n !isPathAbsolute,\n ).join('/');\n\n if (!normalizedPath && !isPathAbsolute) {\n normalizedPath = '.';\n }\n if (normalizedPath && trailingSlash) {\n normalizedPath += '/';\n }\n\n return (isPathAbsolute ? '/' : '') + normalizedPath;\n}\n\n// posix version\n/** JSDoc */\nfunction isAbsolute(path) {\n return path.charAt(0) === '/';\n}\n\n// posix version\n/** JSDoc */\nfunction join(...args) {\n return normalizePath(args.join('/'));\n}\n\n/** JSDoc */\nfunction dirname(path) {\n const result = splitPath(path);\n const root = result[0] || '';\n let dir = result[1];\n\n if (!root && !dir) {\n // No dirname whatsoever\n return '.';\n }\n\n if (dir) {\n // It has a dirname, strip trailing slash\n dir = dir.slice(0, dir.length - 1);\n }\n\n return root + dir;\n}\n\n/** JSDoc */\nfunction basename(path, ext) {\n let f = splitPath(path)[2] || '';\n if (ext && f.slice(ext.length * -1) === ext) {\n f = f.slice(0, f.length - ext.length);\n }\n return f;\n}\n\nexport { basename, dirname, isAbsolute, join, normalizePath, relative, resolve };\n//# sourceMappingURL=path.js.map\n","import { defineIntegration } from '../integration.js';\nimport { relative, basename } from '../utils-hoist/path.js';\nimport { GLOBAL_OBJ } from '../utils-hoist/worldwide.js';\n\nconst INTEGRATION_NAME = 'RewriteFrames';\n\n/**\n * Rewrite event frames paths.\n */\nconst rewriteFramesIntegration = defineIntegration((options = {}) => {\n const root = options.root;\n const prefix = options.prefix || 'app:///';\n\n const isBrowser = 'window' in GLOBAL_OBJ && GLOBAL_OBJ.window !== undefined;\n\n const iteratee = options.iteratee || generateIteratee({ isBrowser, root, prefix });\n\n /** Process an exception event. */\n function _processExceptionsEvent(event) {\n try {\n return {\n ...event,\n exception: {\n ...event.exception,\n // The check for this is performed inside `process` call itself, safe to skip here\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n values: event.exception.values.map(value => ({\n ...value,\n ...(value.stacktrace && { stacktrace: _processStacktrace(value.stacktrace) }),\n })),\n },\n };\n } catch (_oO) {\n return event;\n }\n }\n\n /** Process a stack trace. */\n function _processStacktrace(stacktrace) {\n return {\n ...stacktrace,\n frames: stacktrace && stacktrace.frames && stacktrace.frames.map(f => iteratee(f)),\n };\n }\n\n return {\n name: INTEGRATION_NAME,\n processEvent(originalEvent) {\n let processedEvent = originalEvent;\n\n if (originalEvent.exception && Array.isArray(originalEvent.exception.values)) {\n processedEvent = _processExceptionsEvent(processedEvent);\n }\n\n return processedEvent;\n },\n };\n});\n\n/**\n * Exported only for tests.\n */\nfunction generateIteratee({\n isBrowser,\n root,\n prefix,\n}\n\n) {\n return (frame) => {\n if (!frame.filename) {\n return frame;\n }\n\n // Determine if this is a Windows frame by checking for a Windows-style prefix such as `C:\\`\n const isWindowsFrame =\n /^[a-zA-Z]:\\\\/.test(frame.filename) ||\n // or the presence of a backslash without a forward slash (which are not allowed on Windows)\n (frame.filename.includes('\\\\') && !frame.filename.includes('/'));\n\n // Check if the frame filename begins with `/`\n const startsWithSlash = /^\\//.test(frame.filename);\n\n if (isBrowser) {\n if (root) {\n const oldFilename = frame.filename;\n if (oldFilename.indexOf(root) === 0) {\n frame.filename = oldFilename.replace(root, prefix);\n }\n }\n } else {\n if (isWindowsFrame || startsWithSlash) {\n const filename = isWindowsFrame\n ? frame.filename\n .replace(/^[a-zA-Z]:/, '') // remove Windows-style prefix\n .replace(/\\\\/g, '/') // replace all `\\\\` instances with `/`\n : frame.filename;\n const base = root ? relative(root, filename) : basename(filename);\n frame.filename = `${prefix}${base}`;\n }\n }\n\n return frame;\n };\n}\n\nexport { generateIteratee, rewriteFramesIntegration };\n//# sourceMappingURL=rewriteframes.js.map\n","import { defineIntegration } from '../integration.js';\nimport { timestampInSeconds } from '../utils-hoist/time.js';\n\nconst INTEGRATION_NAME = 'SessionTiming';\n\nconst _sessionTimingIntegration = (() => {\n const startTime = timestampInSeconds() * 1000;\n\n return {\n name: INTEGRATION_NAME,\n processEvent(event) {\n const now = timestampInSeconds() * 1000;\n\n return {\n ...event,\n extra: {\n ...event.extra,\n ['session:start']: startTime,\n ['session:duration']: now - startTime,\n ['session:end']: now,\n },\n };\n },\n };\n}) ;\n\n/**\n * This function adds duration since the sessionTimingIntegration was initialized\n * till the time event was sent.\n *\n * @deprecated This integration is deprecated and will be removed in the next major version of the SDK.\n * To capture session durations alongside events, use [Context](https://docs.sentry.io/platforms/javascript/enriching-events/context/) (`Sentry.setContext()`).\n */\nconst sessionTimingIntegration = defineIntegration(_sessionTimingIntegration);\n\nexport { sessionTimingIntegration };\n//# sourceMappingURL=sessiontiming.js.map\n","import { defineIntegration } from '../integration.js';\nimport { stripMetadataFromStackFrames, addMetadataToStackFrames } from '../metadata.js';\nimport { forEachEnvelopeItem } from '../utils-hoist/envelope.js';\nimport { getFramesFromEvent } from '../utils-hoist/stacktrace.js';\n\n/**\n * This integration allows you to filter out, or tag error events that do not come from user code marked with a bundle key via the Sentry bundler plugins.\n */\nconst thirdPartyErrorFilterIntegration = defineIntegration((options) => {\n return {\n name: 'ThirdPartyErrorsFilter',\n setup(client) {\n // We need to strip metadata from stack frames before sending them to Sentry since these are client side only.\n // TODO(lforst): Move this cleanup logic into a more central place in the SDK.\n client.on('beforeEnvelope', envelope => {\n forEachEnvelopeItem(envelope, (item, type) => {\n if (type === 'event') {\n const event = Array.isArray(item) ? (item )[1] : undefined;\n\n if (event) {\n stripMetadataFromStackFrames(event);\n item[1] = event;\n }\n }\n });\n });\n\n client.on('applyFrameMetadata', event => {\n // Only apply stack frame metadata to error events\n if (event.type) {\n return;\n }\n\n const stackParser = client.getOptions().stackParser;\n addMetadataToStackFrames(stackParser, event);\n });\n },\n\n processEvent(event) {\n const frameKeys = getBundleKeysForAllFramesWithFilenames(event);\n\n if (frameKeys) {\n const arrayMethod =\n options.behaviour === 'drop-error-if-contains-third-party-frames' ||\n options.behaviour === 'apply-tag-if-contains-third-party-frames'\n ? 'some'\n : 'every';\n\n const behaviourApplies = frameKeys[arrayMethod](keys => !keys.some(key => options.filterKeys.includes(key)));\n\n if (behaviourApplies) {\n const shouldDrop =\n options.behaviour === 'drop-error-if-contains-third-party-frames' ||\n options.behaviour === 'drop-error-if-exclusively-contains-third-party-frames';\n if (shouldDrop) {\n return null;\n } else {\n event.tags = {\n ...event.tags,\n third_party_code: true,\n };\n }\n }\n }\n\n return event;\n },\n };\n});\n\nfunction getBundleKeysForAllFramesWithFilenames(event) {\n const frames = getFramesFromEvent(event);\n\n if (!frames) {\n return undefined;\n }\n\n return (\n frames\n // Exclude frames without a filename since these are likely native code or built-ins\n .filter(frame => !!frame.filename)\n .map(frame => {\n if (frame.module_metadata) {\n return Object.keys(frame.module_metadata)\n .filter(key => key.startsWith(BUNDLER_PLUGIN_APP_KEY_PREFIX))\n .map(key => key.slice(BUNDLER_PLUGIN_APP_KEY_PREFIX.length));\n }\n return [];\n })\n );\n}\n\nconst BUNDLER_PLUGIN_APP_KEY_PREFIX = '_sentryBundlerPluginAppKey:';\n\nexport { thirdPartyErrorFilterIntegration };\n//# sourceMappingURL=third-party-errors-filter.js.map\n","import { defineIntegration } from '../integration.js';\nimport { isError } from '../utils-hoist/is.js';\nimport { truncate } from '../utils-hoist/string.js';\n\nconst DEFAULT_LIMIT = 10;\nconst INTEGRATION_NAME = 'ZodErrors';\n\n// Simplified ZodIssue type definition\n\nfunction originalExceptionIsZodError(originalException) {\n return (\n isError(originalException) &&\n originalException.name === 'ZodError' &&\n Array.isArray((originalException ).errors)\n );\n}\n\n/**\n * Formats child objects or arrays to a string\n * That is preserved when sent to Sentry\n */\nfunction formatIssueTitle(issue) {\n return {\n ...issue,\n path: 'path' in issue && Array.isArray(issue.path) ? issue.path.join('.') : undefined,\n keys: 'keys' in issue ? JSON.stringify(issue.keys) : undefined,\n unionErrors: 'unionErrors' in issue ? JSON.stringify(issue.unionErrors) : undefined,\n };\n}\n\n/**\n * Zod error message is a stringified version of ZodError.issues\n * This doesn't display well in the Sentry UI. Replace it with something shorter.\n */\nfunction formatIssueMessage(zodError) {\n const errorKeyMap = new Set();\n for (const iss of zodError.issues) {\n if (iss.path && iss.path[0]) {\n errorKeyMap.add(iss.path[0]);\n }\n }\n const errorKeys = Array.from(errorKeyMap);\n\n return `Failed to validate keys: ${truncate(errorKeys.join(', '), 100)}`;\n}\n\n/**\n * Applies ZodError issues to an event extras and replaces the error message\n */\nfunction applyZodErrorsToEvent(limit, event, hint) {\n if (\n !event.exception ||\n !event.exception.values ||\n !hint ||\n !hint.originalException ||\n !originalExceptionIsZodError(hint.originalException) ||\n hint.originalException.issues.length === 0\n ) {\n return event;\n }\n\n return {\n ...event,\n exception: {\n ...event.exception,\n values: [\n {\n ...event.exception.values[0],\n value: formatIssueMessage(hint.originalException),\n },\n ...event.exception.values.slice(1),\n ],\n },\n extra: {\n ...event.extra,\n 'zoderror.issues': hint.originalException.errors.slice(0, limit).map(formatIssueTitle),\n },\n };\n}\n\nconst _zodErrorsIntegration = ((options = {}) => {\n const limit = options.limit || DEFAULT_LIMIT;\n\n return {\n name: INTEGRATION_NAME,\n processEvent(originalEvent, hint) {\n const processedEvent = applyZodErrorsToEvent(limit, originalEvent, hint);\n return processedEvent;\n },\n };\n}) ;\n\nconst zodErrorsIntegration = defineIntegration(_zodErrorsIntegration);\n\nexport { applyZodErrorsToEvent, zodErrorsIntegration };\n//# sourceMappingURL=zoderrors.js.map\n","import { getClient, SDK_VERSION } from '@sentry/core';\nimport { WINDOW } from '../helpers.js';\n\n// This is a map of integration function method to bundle file name.\nconst LazyLoadableIntegrations = {\n replayIntegration: 'replay',\n replayCanvasIntegration: 'replay-canvas',\n feedbackIntegration: 'feedback',\n feedbackModalIntegration: 'feedback-modal',\n feedbackScreenshotIntegration: 'feedback-screenshot',\n captureConsoleIntegration: 'captureconsole',\n contextLinesIntegration: 'contextlines',\n linkedErrorsIntegration: 'linkederrors',\n debugIntegration: 'debug',\n dedupeIntegration: 'dedupe',\n extraErrorDataIntegration: 'extraerrordata',\n httpClientIntegration: 'httpclient',\n reportingObserverIntegration: 'reportingobserver',\n rewriteFramesIntegration: 'rewriteframes',\n sessionTimingIntegration: 'sessiontiming',\n browserProfilingIntegration: 'browserprofiling',\n moduleMetadataIntegration: 'modulemetadata',\n} ;\n\nconst WindowWithMaybeIntegration = WINDOW\n\n;\n\n/**\n * Lazy load an integration from the CDN.\n * Rejects if the integration cannot be loaded.\n */\nasync function lazyLoadIntegration(\n name,\n scriptNonce,\n) {\n const bundle = LazyLoadableIntegrations[name];\n\n // `window.Sentry` is only set when using a CDN bundle, but this method can also be used via the NPM package\n const sentryOnWindow = (WindowWithMaybeIntegration.Sentry = WindowWithMaybeIntegration.Sentry || {});\n\n if (!bundle) {\n throw new Error(`Cannot lazy load integration: ${name}`);\n }\n\n // Bail if the integration already exists\n const existing = sentryOnWindow[name];\n // The `feedbackIntegration` is loaded by default in the CDN bundles,\n // so we need to differentiate between the real integration and the shim.\n // if only the shim exists, we still want to lazy load the real integration.\n if (typeof existing === 'function' && !('_isShim' in existing)) {\n return existing;\n }\n\n const url = getScriptURL(bundle);\n const script = WINDOW.document.createElement('script');\n script.src = url;\n script.crossOrigin = 'anonymous';\n script.referrerPolicy = 'origin';\n\n if (scriptNonce) {\n script.setAttribute('nonce', scriptNonce);\n }\n\n const waitForLoad = new Promise((resolve, reject) => {\n script.addEventListener('load', () => resolve());\n script.addEventListener('error', reject);\n });\n\n const currentScript = WINDOW.document.currentScript;\n const parent = WINDOW.document.body || WINDOW.document.head || (currentScript && currentScript.parentElement);\n\n if (parent) {\n parent.appendChild(script);\n } else {\n throw new Error(`Could not find parent element to insert lazy-loaded ${name} script`);\n }\n\n try {\n await waitForLoad;\n } catch (e) {\n throw new Error(`Error when loading integration: ${name}`);\n }\n\n const integrationFn = sentryOnWindow[name];\n\n if (typeof integrationFn !== 'function') {\n throw new Error(`Could not load integration: ${name}`);\n }\n\n return integrationFn;\n}\n\nfunction getScriptURL(bundle) {\n const client = getClient();\n const options = client && client.getOptions();\n const baseURL = (options && options.cdnBaseUrl) || 'https://browser.sentry-cdn.com';\n\n return new URL(`/${SDK_VERSION}/${bundle}.min.js`, baseURL).toString();\n}\n\nexport { lazyLoadIntegration };\n//# sourceMappingURL=lazyLoadIntegration.js.map\n","import { defineIntegration, supportsReportingObserver, GLOBAL_OBJ, getClient, withScope, captureMessage } from '@sentry/core';\n\nconst WINDOW = GLOBAL_OBJ ;\n\nconst INTEGRATION_NAME = 'ReportingObserver';\n\nconst SETUP_CLIENTS = new WeakMap();\n\nconst _reportingObserverIntegration = ((options = {}) => {\n const types = options.types || ['crash', 'deprecation', 'intervention'];\n\n /** Handler for the reporting observer. */\n function handler(reports) {\n if (!SETUP_CLIENTS.has(getClient() )) {\n return;\n }\n\n for (const report of reports) {\n withScope(scope => {\n scope.setExtra('url', report.url);\n\n const label = `ReportingObserver [${report.type}]`;\n let details = 'No details available';\n\n if (report.body) {\n // Object.keys doesn't work on ReportBody, as all properties are inherited\n const plainBody\n\n = {};\n\n // eslint-disable-next-line guard-for-in\n for (const prop in report.body) {\n plainBody[prop] = report.body[prop];\n }\n\n scope.setExtra('body', plainBody);\n\n if (report.type === 'crash') {\n const body = report.body ;\n // A fancy way to create a message out of crashId OR reason OR both OR fallback\n details = [body.crashId || '', body.reason || ''].join(' ').trim() || details;\n } else {\n const body = report.body ;\n details = body.message || details;\n }\n }\n\n captureMessage(`${label}: ${details}`);\n });\n }\n }\n\n return {\n name: INTEGRATION_NAME,\n setupOnce() {\n if (!supportsReportingObserver()) {\n return;\n }\n\n const observer = new (WINDOW ).ReportingObserver(\n handler,\n {\n buffered: true,\n types,\n },\n );\n\n observer.observe();\n },\n\n setup(client) {\n SETUP_CLIENTS.set(client, true);\n },\n };\n}) ;\n\n/**\n * Reporting API integration - https://w3c.github.io/reporting/\n */\nconst reportingObserverIntegration = defineIntegration(_reportingObserverIntegration);\n\nexport { reportingObserverIntegration };\n//# sourceMappingURL=reportingobserver.js.map\n","/**\n * Checks whether given url points to Sentry server\n *\n * @param url url to verify\n */\nfunction isSentryRequestUrl(url, client) {\n const dsn = client && client.getDsn();\n const tunnel = client && client.getOptions().tunnel;\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\nexport { isSentryRequestUrl };\n//# sourceMappingURL=isSentryRequestUrl.js.map\n","import { addXhrInstrumentationHandler, SENTRY_XHR_DATA_KEY } from '@sentry-internal/browser-utils';\nimport { defineIntegration, supportsNativeFetch, addFetchInstrumentationHandler, getClient, GLOBAL_OBJ, logger, captureEvent, isSentryRequestUrl, addExceptionMechanism } from '@sentry/core';\nimport { DEBUG_BUILD } from '../debug-build.js';\n\nconst INTEGRATION_NAME = 'HttpClient';\n\nconst _httpClientIntegration = ((options = {}) => {\n const _options = {\n failedRequestStatusCodes: [[500, 599]],\n failedRequestTargets: [/.*/],\n ...options,\n };\n\n return {\n name: INTEGRATION_NAME,\n setup(client) {\n _wrapFetch(client, _options);\n _wrapXHR(client, _options);\n },\n };\n}) ;\n\n/**\n * Create events for failed client side HTTP requests.\n */\nconst httpClientIntegration = defineIntegration(_httpClientIntegration);\n\n/**\n * Interceptor function for fetch requests\n *\n * @param requestInfo The Fetch API request info\n * @param response The Fetch API response\n * @param requestInit The request init object\n */\nfunction _fetchResponseHandler(\n options,\n requestInfo,\n response,\n requestInit,\n error,\n) {\n if (_shouldCaptureResponse(options, response.status, response.url)) {\n const request = _getRequest(requestInfo, requestInit);\n\n let requestHeaders, responseHeaders, requestCookies, responseCookies;\n\n if (_shouldSendDefaultPii()) {\n [requestHeaders, requestCookies] = _parseCookieHeaders('Cookie', request);\n [responseHeaders, responseCookies] = _parseCookieHeaders('Set-Cookie', response);\n }\n\n const event = _createEvent({\n url: request.url,\n method: request.method,\n status: response.status,\n requestHeaders,\n responseHeaders,\n requestCookies,\n responseCookies,\n error,\n });\n\n captureEvent(event);\n }\n}\n\nfunction _parseCookieHeaders(\n cookieHeader,\n obj,\n) {\n const headers = _extractFetchHeaders(obj.headers);\n let cookies;\n\n try {\n const cookieString = headers[cookieHeader] || headers[cookieHeader.toLowerCase()] || undefined;\n\n if (cookieString) {\n cookies = _parseCookieString(cookieString);\n }\n } catch (e2) {\n // ignore it if parsing fails\n }\n\n return [headers, cookies];\n}\n\n/**\n * Interceptor function for XHR requests\n *\n * @param xhr The XHR request\n * @param method The HTTP method\n * @param headers The HTTP headers\n */\nfunction _xhrResponseHandler(\n options,\n xhr,\n method,\n headers,\n error,\n) {\n if (_shouldCaptureResponse(options, xhr.status, xhr.responseURL)) {\n let requestHeaders, responseCookies, responseHeaders;\n\n if (_shouldSendDefaultPii()) {\n try {\n const cookieString = xhr.getResponseHeader('Set-Cookie') || xhr.getResponseHeader('set-cookie') || undefined;\n\n if (cookieString) {\n responseCookies = _parseCookieString(cookieString);\n }\n } catch (e3) {\n // ignore it if parsing fails\n }\n\n try {\n responseHeaders = _getXHRResponseHeaders(xhr);\n } catch (e4) {\n // ignore it if parsing fails\n }\n\n requestHeaders = headers;\n }\n\n const event = _createEvent({\n url: xhr.responseURL,\n method,\n status: xhr.status,\n requestHeaders,\n // Can't access request cookies from XHR\n responseHeaders,\n responseCookies,\n error,\n });\n\n captureEvent(event);\n }\n}\n\n/**\n * Extracts response size from `Content-Length` header when possible\n *\n * @param headers\n * @returns The response size in bytes or undefined\n */\nfunction _getResponseSizeFromHeaders(headers) {\n if (headers) {\n const contentLength = headers['Content-Length'] || headers['content-length'];\n\n if (contentLength) {\n return parseInt(contentLength, 10);\n }\n }\n\n return undefined;\n}\n\n/**\n * Creates an object containing cookies from the given cookie string\n *\n * @param cookieString The cookie string to parse\n * @returns The parsed cookies\n */\nfunction _parseCookieString(cookieString) {\n return cookieString.split('; ').reduce((acc, cookie) => {\n const [key, value] = cookie.split('=');\n if (key && value) {\n acc[key] = value;\n }\n return acc;\n }, {});\n}\n\n/**\n * Extracts the headers as an object from the given Fetch API request or response object\n *\n * @param headers The headers to extract\n * @returns The extracted headers as an object\n */\nfunction _extractFetchHeaders(headers) {\n const result = {};\n\n headers.forEach((value, key) => {\n result[key] = value;\n });\n\n return result;\n}\n\n/**\n * Extracts the response headers as an object from the given XHR object\n *\n * @param xhr The XHR object to extract the response headers from\n * @returns The response headers as an object\n */\nfunction _getXHRResponseHeaders(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 if (key && value) {\n acc[key] = value;\n }\n return acc;\n }, {});\n}\n\n/**\n * Checks if the given target url is in the given list of targets\n *\n * @param target The target url to check\n * @returns true if the target url is in the given list of targets, false otherwise\n */\nfunction _isInGivenRequestTargets(\n failedRequestTargets,\n target,\n) {\n return failedRequestTargets.some((givenRequestTarget) => {\n if (typeof givenRequestTarget === 'string') {\n return target.includes(givenRequestTarget);\n }\n\n return givenRequestTarget.test(target);\n });\n}\n\n/**\n * Checks if the given status code is in the given range\n *\n * @param status The status code to check\n * @returns true if the status code is in the given range, false otherwise\n */\nfunction _isInGivenStatusRanges(\n failedRequestStatusCodes,\n status,\n) {\n return failedRequestStatusCodes.some((range) => {\n if (typeof range === 'number') {\n return range === status;\n }\n\n return status >= range[0] && status <= range[1];\n });\n}\n\n/**\n * Wraps `fetch` function to capture request and response data\n */\nfunction _wrapFetch(client, options) {\n if (!supportsNativeFetch()) {\n return;\n }\n\n addFetchInstrumentationHandler(handlerData => {\n if (getClient() !== client) {\n return;\n }\n\n const { response, args, error, virtualError } = handlerData;\n const [requestInfo, requestInit] = args ;\n\n if (!response) {\n return;\n }\n\n _fetchResponseHandler(options, requestInfo, response , requestInit, error || virtualError);\n }, false);\n}\n\n/**\n * Wraps XMLHttpRequest to capture request and response data\n */\nfunction _wrapXHR(client, options) {\n if (!('XMLHttpRequest' in GLOBAL_OBJ)) {\n return;\n }\n\n addXhrInstrumentationHandler(handlerData => {\n if (getClient() !== client) {\n return;\n }\n\n const { error, virtualError } = handlerData;\n\n const xhr = handlerData.xhr ;\n\n const sentryXhrData = xhr[SENTRY_XHR_DATA_KEY];\n\n if (!sentryXhrData) {\n return;\n }\n\n const { method, request_headers: headers } = sentryXhrData;\n\n try {\n _xhrResponseHandler(options, xhr, method, headers, error || virtualError);\n } catch (e) {\n DEBUG_BUILD && logger.warn('Error while extracting response event form XHR response', e);\n }\n });\n}\n\n/**\n * Checks whether to capture given response as an event\n *\n * @param status response status code\n * @param url response url\n */\nfunction _shouldCaptureResponse(options, status, url) {\n return (\n _isInGivenStatusRanges(options.failedRequestStatusCodes, status) &&\n _isInGivenRequestTargets(options.failedRequestTargets, url) &&\n !isSentryRequestUrl(url, getClient())\n );\n}\n\n/**\n * Creates a synthetic Sentry event from given response data\n *\n * @param data response data\n * @returns event\n */\nfunction _createEvent(data\n\n) {\n const client = getClient();\n const virtualStackTrace = client && data.error && data.error instanceof Error ? data.error.stack : undefined;\n // Remove the first frame from the stack as it's the HttpClient call\n const stack = virtualStackTrace && client ? client.getOptions().stackParser(virtualStackTrace, 0, 1) : undefined;\n const message = `HTTP Client Error with status code: ${data.status}`;\n\n const event = {\n message,\n exception: {\n values: [\n {\n type: 'Error',\n value: message,\n stacktrace: stack ? { frames: stack } : undefined,\n },\n ],\n },\n request: {\n url: data.url,\n method: data.method,\n headers: data.requestHeaders,\n cookies: data.requestCookies,\n },\n contexts: {\n response: {\n status_code: data.status,\n headers: data.responseHeaders,\n cookies: data.responseCookies,\n body_size: _getResponseSizeFromHeaders(data.responseHeaders),\n },\n },\n };\n\n addExceptionMechanism(event, {\n type: 'http.client',\n handled: false,\n });\n\n return event;\n}\n\nfunction _getRequest(requestInfo, requestInit) {\n if (!requestInit && requestInfo instanceof Request) {\n return requestInfo;\n }\n\n // If both are set, we try to construct a new Request with the given arguments\n // However, if e.g. the original request has a `body`, this will throw an error because it was already accessed\n // In this case, as a fallback, we just use the original request - using both is rather an edge case\n if (requestInfo instanceof Request && requestInfo.bodyUsed) {\n return requestInfo;\n }\n\n return new Request(requestInfo, requestInit);\n}\n\nfunction _shouldSendDefaultPii() {\n const client = getClient();\n return client ? Boolean(client.getOptions().sendDefaultPii) : false;\n}\n\nexport { httpClientIntegration };\n//# sourceMappingURL=httpclient.js.map\n","import { defineIntegration, stripUrlQueryAndFragment, addContextToFrame, GLOBAL_OBJ } from '@sentry/core';\n\nconst WINDOW = GLOBAL_OBJ ;\n\nconst DEFAULT_LINES_OF_CONTEXT = 7;\n\nconst INTEGRATION_NAME = 'ContextLines';\n\nconst _contextLinesIntegration = ((options = {}) => {\n const contextLines = options.frameContextLines != null ? options.frameContextLines : DEFAULT_LINES_OF_CONTEXT;\n\n return {\n name: INTEGRATION_NAME,\n processEvent(event) {\n return addSourceContext(event, contextLines);\n },\n };\n}) ;\n\n/**\n * Collects source context lines around the lines of stackframes pointing to JS embedded in\n * the current page's HTML.\n *\n * This integration DOES NOT work for stack frames pointing to JS files that are loaded by the browser.\n * For frames pointing to files, context lines are added during ingestion and symbolication\n * by attempting to download the JS files to the Sentry backend.\n *\n * Use this integration if you have inline JS code in HTML pages that can't be accessed\n * by our backend (e.g. due to a login-protected page).\n */\nconst contextLinesIntegration = defineIntegration(_contextLinesIntegration);\n\n/**\n * Processes an event and adds context lines.\n */\nfunction addSourceContext(event, contextLines) {\n const doc = WINDOW.document;\n const htmlFilename = WINDOW.location && stripUrlQueryAndFragment(WINDOW.location.href);\n if (!doc || !htmlFilename) {\n return event;\n }\n\n const exceptions = event.exception && event.exception.values;\n if (!exceptions || !exceptions.length) {\n return event;\n }\n\n const html = doc.documentElement.innerHTML;\n if (!html) {\n return event;\n }\n\n const htmlLines = ['', '', ...html.split('\\n'), ''];\n\n exceptions.forEach(exception => {\n const stacktrace = exception.stacktrace;\n if (stacktrace && stacktrace.frames) {\n stacktrace.frames = stacktrace.frames.map(frame =>\n applySourceContextToFrame(frame, htmlLines, htmlFilename, contextLines),\n );\n }\n });\n\n return event;\n}\n\n/**\n * Only exported for testing\n */\nfunction applySourceContextToFrame(\n frame,\n htmlLines,\n htmlFilename,\n linesOfContext,\n) {\n if (frame.filename !== htmlFilename || !frame.lineno || !htmlLines.length) {\n return frame;\n }\n\n addContextToFrame(htmlLines, frame, linesOfContext);\n\n return frame;\n}\n\nexport { applySourceContextToFrame, contextLinesIntegration };\n//# sourceMappingURL=contextlines.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","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 const process = (GLOBAL_OBJ ).process;\n return !!process && process.type === 'renderer';\n}\n\nexport { isBrowser };\n//# sourceMappingURL=isBrowser.js.map\n","import { isBrowserBundle } from './env.js';\n\n/**\n * NOTE: In order to avoid circular dependencies, if you add a function to this module and it needs to print something,\n * you must either a) use `console.log` rather than the logger, or b) put your function elsewhere.\n */\n\n\n/**\n * Checks whether we're in the Node.js or Browser environment\n *\n * @returns Answer to given question\n */\nfunction isNodeEnv() {\n // explicitly check for browser bundles as those can be optimized statically\n // by terser/rollup.\n return (\n !isBrowserBundle() &&\n Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]'\n );\n}\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param request The module path to resolve\n * @deprecated This function will be removed in the next major version.\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction dynamicRequire(mod, request) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n return mod.require(request);\n}\n\n/**\n * Helper for dynamically loading module that should work with linked dependencies.\n * The problem is that we _should_ be using `require(require.resolve(moduleName, { paths: [cwd()] }))`\n * However it's _not possible_ to do that with Webpack, as it has to know all the dependencies during\n * build time. `require.resolve` is also not available in any other way, so we cannot create,\n * a fake helper like we do with `dynamicRequire`.\n *\n * We always prefer to use local package, thus the value is not returned early from each `try/catch` block.\n * That is to mimic the behavior of `require.resolve` exactly.\n *\n * @param moduleName module name to require\n * @returns possibly required module\n */\nfunction loadModule(moduleName) {\n let mod;\n\n try {\n // eslint-disable-next-line deprecation/deprecation\n mod = dynamicRequire(module, moduleName);\n } catch (e) {\n // no-empty\n }\n\n if (!mod) {\n try {\n // eslint-disable-next-line deprecation/deprecation\n const { cwd } = dynamicRequire(module, 'process');\n // eslint-disable-next-line deprecation/deprecation\n mod = dynamicRequire(module, `${cwd()}/node_modules/${moduleName}`) ;\n } catch (e) {\n // no-empty\n }\n }\n\n return mod;\n}\n\nexport { dynamicRequire, isNodeEnv, loadModule };\n//# sourceMappingURL=node.js.map\n","import { _nullishCoalesce, _optionalChain } from '@sentry/core';\nimport { GLOBAL_OBJ, normalize, fill, htmlTreeAsString, browserPerformanceTimeOrigin, logger as logger$1, severityLevelFromString, captureException, addBreadcrumb, uuid4, getClient, getLocationHref, getCurrentScope, getActiveSpan, getDynamicSamplingContextFromSpan, isSentryRequestUrl, dropUndefinedKeys, stringMatchesSomePattern, addEventProcessor, createEnvelope, createEventEnvelopeHeaders, getSdkMetadataForEnvelopeHeader, prepareEvent, getIsolationScope, resolvedSyncPromise, updateRateLimits, isRateLimited, setContext, getRootSpan, spanToJSON, SEMANTIC_ATTRIBUTE_SENTRY_SOURCE, isBrowser, parseSampleRate, consoleSandbox } from '@sentry/core';\nimport { setTimeout as setTimeout$3, addPerformanceInstrumentationHandler, addLcpInstrumentationHandler, addClsInstrumentationHandler, addFidInstrumentationHandler, addInpInstrumentationHandler, SENTRY_XHR_DATA_KEY, addClickKeypressInstrumentationHandler, addHistoryInstrumentationHandler } from '@sentry-internal/browser-utils';\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$3;\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$3 || (NodeType$3 = {}));\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(/\\sbackground-clip:\\s*text;/g, ' -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 fixAllCssProperty(rule) {\n let styles = '';\n for (let i = 0; i < rule.style.length; i++) {\n const styleDeclaration = rule.style;\n const attribute = styleDeclaration[i];\n const isImportant = styleDeclaration.getPropertyPriority(attribute);\n styles += `${attribute}:${styleDeclaration.getPropertyValue(attribute)}${isImportant ? ` !important` : ''};`;\n }\n return `${rule.selectorText} { ${styles} }`;\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)) {\n let cssText = rule.cssText;\n const needsSafariColonFix = rule.selectorText.includes(':');\n const needsAllFix = typeof rule.style['all'] === 'string' && rule.style['all'];\n if (needsAllFix) {\n cssText = fixAllCssProperty(rule);\n }\n if (needsSafariColonFix) {\n cssText = fixSafariColons(cssText);\n }\n if (needsSafariColonFix || needsAllFix) {\n return cssText;\n }\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}\nfunction extractFileExtension(path, baseURL) {\n let url;\n try {\n url = new URL(path, _nullishCoalesce$1(baseURL, () => ( window.location.href)));\n }\n catch (err) {\n return null;\n }\n const regex = /\\.([0-9a-z]+)(?:$)/i;\n const match = url.pathname.match(regex);\n return _nullishCoalesce$1(_optionalChain$5([match, 'optionalAccess', _6 => _6[1]]), () => ( null));\n}\nconst cachedImplementations$1 = {};\nfunction getImplementation$1(name) {\n const cached = cachedImplementations$1[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$1[name] = impl.bind(window));\n}\nfunction setTimeout$2(...rest) {\n return getImplementation$1('setTimeout')(...rest);\n}\nfunction clearTimeout$2(...rest) {\n return getImplementation$1('clearTimeout')(...rest);\n}\nfunction getIframeContentDocument(iframe) {\n try {\n return iframe.contentDocument;\n }\n catch (e) {\n }\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}\nconst cachedDocument = new WeakMap();\nfunction absoluteToDoc(doc, attributeValue) {\n if (!attributeValue || attributeValue.trim() === '') {\n return attributeValue;\n }\n return getHref(doc, attributeValue);\n}\nfunction isSVGElement(el) {\n return Boolean(el.tagName === 'svg' || el.ownerSVGElement);\n}\nfunction getHref(doc, customHref) {\n let a = cachedDocument.get(doc);\n if (!a) {\n a = doc.createElement('a');\n cachedDocument.set(doc, a);\n }\n if (!customHref) {\n customHref = '';\n }\n else if (customHref.startsWith('blob:') || customHref.startsWith('data:')) {\n return customHref;\n }\n a.setAttribute('href', customHref);\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(doc));\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$2(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, iframeLoadTimeout);\n iframeEl.addEventListener('load', () => {\n clearTimeout$2(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$2(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$2(() => {\n if (!fired) {\n listener();\n fired = true;\n }\n }, styleSheetLoadTimeout);\n link.addEventListener('load', () => {\n clearTimeout$2(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$3.Document,\n childNodes: [],\n compatMode: n.compatMode,\n };\n }\n else {\n return {\n type: NodeType$3.Document,\n childNodes: [],\n };\n }\n case n.DOCUMENT_TYPE_NODE:\n return {\n type: NodeType$3.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 doc,\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$3.CDATA,\n textContent: '',\n rootId,\n };\n case n.COMMENT_NODE:\n return {\n type: NodeType$3.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', _7 => _7.parentNode, 'access', _8 => _8.sheet, 'optionalAccess', _9 => _9.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(options.doc));\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$3.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 attributes.rel = null;\n attributes.href = null;\n attributes.crossorigin = null;\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(doc));\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 = doc.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 imageSrc = image.currentSrc || image.getAttribute('src') || '';\n const priorCrossOrigin = image.crossOrigin;\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 if (image.crossOrigin !== 'anonymous') {\n image.crossOrigin = 'anonymous';\n if (image.complete && image.naturalWidth !== 0)\n recordInlineImage();\n else\n image.addEventListener('load', recordInlineImage);\n return;\n }\n else {\n console.warn(`Cannot inline img src=${imageSrc}! Error: ${err}`);\n }\n }\n if (image.crossOrigin === 'anonymous') {\n priorCrossOrigin\n ? (attributes.crossOrigin = priorCrossOrigin)\n : image.removeAttribute('crossorigin');\n }\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 (!needBlock && !getIframeContentDocument(n)) {\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$3.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$3.Comment) {\n return true;\n }\n else if (sn.type === NodeType$3.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.tagName === 'link' &&\n sn.attributes.rel === 'prefetch' &&\n typeof sn.attributes.href === 'string' &&\n extractFileExtension(sn.attributes.href) === '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$3.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$3.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$3.Document ||\n serializedNode.type === NodeType$3.Element) &&\n recordChild) {\n if (slimDOMOptions.headWhitespace &&\n serializedNode.type === NodeType$3.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$3.Element &&\n serializedNode.tagName === 'iframe') {\n onceIframeLoaded(n, () => {\n const iframeDoc = getIframeContentDocument(n);\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$3.Element &&\n serializedNode.tagName === 'link' &&\n typeof serializedNode.attributes.rel === 'string' &&\n (serializedNode.attributes.rel === 'stylesheet' ||\n (serializedNode.attributes.rel === 'preload' &&\n typeof serializedNode.attributes.href === 'string' &&\n extractFileExtension(serializedNode.attributes.href) === 'css'))) {\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\nvar 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 = {}));\nvar NodeType$2;\n(function (NodeType) {\n NodeType[NodeType[\"PLACEHOLDER\"] = 0] = \"PLACEHOLDER\";\n NodeType[NodeType[\"ELEMENT_NODE\"] = 1] = \"ELEMENT_NODE\";\n NodeType[NodeType[\"ATTRIBUTE_NODE\"] = 2] = \"ATTRIBUTE_NODE\";\n NodeType[NodeType[\"TEXT_NODE\"] = 3] = \"TEXT_NODE\";\n NodeType[NodeType[\"CDATA_SECTION_NODE\"] = 4] = \"CDATA_SECTION_NODE\";\n NodeType[NodeType[\"ENTITY_REFERENCE_NODE\"] = 5] = \"ENTITY_REFERENCE_NODE\";\n NodeType[NodeType[\"ENTITY_NODE\"] = 6] = \"ENTITY_NODE\";\n NodeType[NodeType[\"PROCESSING_INSTRUCTION_NODE\"] = 7] = \"PROCESSING_INSTRUCTION_NODE\";\n NodeType[NodeType[\"COMMENT_NODE\"] = 8] = \"COMMENT_NODE\";\n NodeType[NodeType[\"DOCUMENT_NODE\"] = 9] = \"DOCUMENT_NODE\";\n NodeType[NodeType[\"DOCUMENT_TYPE_NODE\"] = 10] = \"DOCUMENT_TYPE_NODE\";\n NodeType[NodeType[\"DOCUMENT_FRAGMENT_NODE\"] = 11] = \"DOCUMENT_FRAGMENT_NODE\";\n})(NodeType$2 || (NodeType$2 = {}));\n\nfunction getIFrameContentDocument(iframe) {\n try {\n return iframe.contentDocument;\n }\n catch (e) {\n }\n}\nfunction getIFrameContentWindow(iframe) {\n try {\n return iframe.contentWindow;\n }\n catch (e) {\n }\n}\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 !isBlocked(currentN, this.blockClass, this.blockSelector, this.unblockSelector, false)) {\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 if (isBlocked(iframe, this.blockClass, this.blockSelector, this.unblockSelector, false)) {\n return;\n }\n this.iframeManager.attachIframe(iframe, childSn);\n if (iframe.contentWindow) {\n this.canvasManager.addWindow(iframe.contentWindow);\n }\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 const iframeDoc = getIFrameContentDocument(target);\n if (!iframeDoc) {\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 let node = n.parentNode;\n while (node) {\n const parentId = mirror.getId(node);\n if (removes.some((r) => r.id === parentId)) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\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 let mutationObserver;\n if (o.recordDOM) {\n mutationObserver = initMutationObserver(o, o.doc);\n }\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 let styleSheetObserver = () => { };\n let adoptedStyleSheetObserver = () => { };\n let styleDeclarationObserver = () => { };\n let fontObserver = () => { };\n if (o.recordDOM) {\n styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\n adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o, o.doc);\n styleDeclarationObserver = initStyleDeclarationObserver(o, {\n win: currentWindow,\n });\n if (o.collectFonts) {\n fontObserver = 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 _optionalChain$2([mutationObserver, 'optionalAccess', _22 => _22.disconnect, 'call', _23 => _23()]);\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 const iframeDoc = getIFrameContentDocument(iframeEl);\n if (iframeDoc &&\n iframeDoc.adoptedStyleSheets &&\n iframeDoc.adoptedStyleSheets.length > 0)\n this.stylesheetManager.adoptStyleSheets(iframeDoc.adoptedStyleSheets, this.mirror.getId(iframeDoc));\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$3.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 this.bypassOptions.canvasManager.addShadowRoot(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 const iframeDoc = getIFrameContentDocument(iframeElement);\n const iframeWindow = getIFrameContentWindow(iframeElement);\n if (!iframeDoc || !iframeWindow)\n return;\n this.patchAttachShadow(iframeWindow.Element, iframeDoc);\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 this.bypassOptions.canvasManager.resetShadowRoots();\n }\n}\n\nclass CanvasManagerNoop {\n reset() {\n }\n freeze() {\n }\n unfreeze() {\n }\n lock() {\n }\n unlock() {\n }\n snapshot() {\n }\n addWindow() {\n }\n addShadowRoot() {\n }\n resetShadowRoots() {\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.active = false;\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 if (!this.active) {\n this.active = true;\n onRequestAnimationFrame(() => {\n this.nodeMap = new WeakMap();\n this.active = false;\n });\n }\n this.nodeMap.set(node, (this.nodeMap.get(node) || new Set()).add(buffer));\n }\n destroy() {\n }\n}\n\nlet wrappedEmit;\nlet _takeFullSnapshot;\ntry {\n if (Array.from([1], (x) => x * 2)[0] !== 2) {\n const cleanFrame = document.createElement('iframe');\n document.body.appendChild(cleanFrame);\n Array.from = _optionalChain([cleanFrame, 'access', _ => _.contentWindow, 'optionalAccess', _2 => _2.Array, 'access', _3 => _3.from]) || Array.from;\n document.body.removeChild(cleanFrame);\n }\n}\ncatch (err) {\n console.debug('Unable to override Array.from', err);\n}\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, recordDOM = true, 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 (!inEmittingFrame && !passEmitsToParent) {\n return () => {\n };\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', _4 => _4[0], 'optionalAccess', _5 => _5.isFrozen, 'call', _6 => _6()]) &&\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', _7 => _7(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 if (!recordDOM) {\n return;\n }\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 if (iframe.contentWindow) {\n canvasManager.addWindow(iframe.contentWindow);\n }\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 recordDOM,\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', _8 => _8.filter, 'call', _9 => _9((p) => p.observer)\n, 'optionalAccess', _10 => _10.map, 'call', _11 => _11((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/** Any IncrementalSource for rrweb that we interpret as a kind of mutation. */\nconst IncrementalMutationSources = new Set([\n IncrementalSource.Mutation,\n IncrementalSource.StyleSheetRule,\n IncrementalSource.StyleDeclaration,\n IncrementalSource.AdoptedStyleSheet,\n IncrementalSource.CanvasMutation,\n IncrementalSource.Selection,\n IncrementalSource.MediaInteraction,\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._scrollTimeout = 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._scrollTimeout;\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$3(() => 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 (IncrementalMutationSources.has(source)) {\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 if (!attributes['data-sentry-component'] && attributes['data-sentry-element']) {\n attributes['data-sentry-component'] = attributes['data-sentry-element'];\n }\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 * Handler creater for web vitals\n */\nfunction webVitalHandler(\n getter,\n replay,\n) {\n return ({ metric }) => void replay.replayPerformanceEntries.push(getter(metric));\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 const entryType = ENTRY_TYPES[entry.entryType];\n if (!entryType) {\n return null;\n }\n\n return 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 a LCP metric.\n */\nfunction getLargestContentfulPaint(metric) {\n const lastEntry = metric.entries[metric.entries.length - 1] ;\n const node = lastEntry && lastEntry.element ? [lastEntry.element] : undefined;\n return getWebVital(metric, 'largest-contentful-paint', node);\n}\n\nfunction isLayoutShift(entry) {\n return (entry ).sources !== undefined;\n}\n\n/**\n * Add a CLS event to the replay based on a CLS metric.\n */\nfunction getCumulativeLayoutShift(metric) {\n const layoutShifts = [];\n const nodes = [];\n for (const entry of metric.entries) {\n if (isLayoutShift(entry)) {\n const nodeIds = [];\n for (const source of entry.sources) {\n if (source.node) {\n nodes.push(source.node);\n const nodeId = record.mirror.getId(source.node);\n if (nodeId) {\n nodeIds.push(nodeId);\n }\n }\n }\n layoutShifts.push({ value: entry.value, nodeIds: nodeIds.length ? nodeIds : undefined });\n }\n }\n\n return getWebVital(metric, 'cumulative-layout-shift', nodes, layoutShifts);\n}\n\n/**\n * Add a FID event to the replay based on a FID metric.\n */\nfunction getFirstInputDelay(metric) {\n const lastEntry = metric.entries[metric.entries.length - 1] ;\n const node = lastEntry && lastEntry.target ? [lastEntry.target] : undefined;\n return getWebVital(metric, 'first-input-delay', node);\n}\n\n/**\n * Add an INP event to the replay based on an INP metric.\n */\nfunction getInteractionToNextPaint(metric) {\n const lastEntry = metric.entries[metric.entries.length - 1] ;\n const node = lastEntry && lastEntry.target ? [lastEntry.target] : undefined;\n return getWebVital(metric, 'interaction-to-next-paint', node);\n}\n\n/**\n * Add an web vital event to the replay based on the web vital metric.\n */\nfunction getWebVital(\n metric,\n name,\n nodes,\n attributions,\n) {\n const value = metric.value;\n const rating = metric.rating;\n\n const end = getAbsoluteTime(value);\n\n return {\n type: 'web-vital',\n name,\n start: end,\n end,\n data: {\n value,\n size: value,\n rating,\n nodeIds: nodes ? nodes.map(node => record.mirror.getId(node)) : undefined,\n attributions,\n },\n };\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(webVitalHandler(getLargestContentfulPaint, replay)),\n addClsInstrumentationHandler(webVitalHandler(getCumulativeLayoutShift, replay)),\n addFidInstrumentationHandler(webVitalHandler(getFirstInputDelay, replay)),\n addInpInstrumentationHandler(webVitalHandler(getInteractionToNextPaint, replay)),\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==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},_=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},x=function(r,e){for(var i=[],a=0;ad&&(d=o[a].s);var g=new n(d+1),w=A(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}},A=function(t,n,r){return-1==t.s?Math.max(A(t.l,n,r+1),A(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,U)+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){_(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;_(r,m,Q[et]),m+=R[et],et>3&&(_(r,m,rt>>5&8191),m+=i[et])}else _(r,m,N[rt]),m+=P[rt]}return _(r,m,N[256]),m+P[256]},C=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;return{p:function(n){for(var r=t,e=0;e>>8;t=r},d:function(){return~t}}},L=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}}},O=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=C[s-1],M=y>>13,E=8191&y,z=(1<7e3||q>24576)&&(N>423||!w)){p=U(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=_[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)},j=function(t,n,r){for(;r;++n)t[n]=r,r>>>=8},q=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&&j(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)}},B=function(t){return 10+(t.filename?t.filename.length+1:0)},G=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(O(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}();var H=function(){function t(t,n){this.c=L(),this.v=1,G.call(this,t,n)}return t.prototype.push=function(t,n){this.c.p(t),G.prototype.push.call(this,t,n)},t.prototype.p=function(t,n){var r=O(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=L();i.p(n.dictionary),j(t,2,i.d())}}(r,this.o),this.v=0),n&&j(r,r.length-4,this.c.d()),this.ondata(r,n)},t}(),J=\"undefined\"!=typeof TextEncoder&&new TextEncoder,K=\"undefined\"!=typeof TextDecoder&&new TextDecoder;try{K.decode(F,{stream:!0})}catch(t){}var N=function(){function t(t){this.ondata=t}return t.prototype.push=function(t,n){this.ondata||E(5),this.d&&E(4),this.ondata(P(t),this.d=n||!1)},t}();function P(n,r){if(J)return J.encode(n);for(var e=n.length,i=new t(n.length+(n.length>>1)),a=0,s=function(t){i[a++]=t},o=0;oi.length){var f=new t(a+8+(e-o<<1));f.set(i),i=f}var h=n.charCodeAt(o);h<128||r?s(h):h<2048?(s(192|h>>6),s(128|63&h)):h>55295&&h<57344?(s(240|(h=65536+(1047552&h)|1023&n.charCodeAt(++o))>>18),s(128|h>>12&63),s(128|h>>6&63),s(128|63&h)):(s(224|h>>12),s(128|h>>6&63),s(128|63&h))}return b(i,0,a)}function Q(t){return function(t,n){n||(n={});var r=S(),e=t.length;r.p(t);var i=O(t,n,B(n),8),a=i.length;return q(i,n),j(i,a-8,r.d()),j(i,a-4,e),i}(P(t))}const R=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(const r of t)n+=r.length;const r=new Uint8Array(n);for(let n=0,e=0,i=t.length;n{this._deflatedData.push(t)},this.stream=new N(((t,n)=>{this.deflate.push(t,n)})),this.stream.push(\"[\")}},V={clear:()=>{R.clear()},addEvent:t=>R.addEvent(t),finish:()=>R.finish(),compress:t=>Q(t)};addEventListener(\"message\",(function(t){const n=t.data.method,r=t.data.id,e=t.data.arg;if(n in V&&\"function\"==typeof V[n])try{const t=V[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\nconst CONSOLE_LEVELS = ['info', 'warn', 'error', 'log'] ;\nconst PREFIX = '[Replay] ';\n\nfunction _addBreadcrumb(message, level = 'info') {\n addBreadcrumb(\n {\n category: 'console',\n data: {\n logger: 'replay',\n },\n level,\n message: `${PREFIX}${message}`,\n },\n { level },\n );\n}\n\nfunction makeReplayLogger() {\n let _capture = false;\n let _trace = false;\n\n const _logger = {\n exception: () => undefined,\n infoTick: () => undefined,\n setConfig: (opts) => {\n _capture = opts.captureExceptions;\n _trace = opts.traceInternals;\n },\n };\n\n if (DEBUG_BUILD) {\n CONSOLE_LEVELS.forEach(name => {\n _logger[name] = (...args) => {\n logger$1[name](PREFIX, ...args);\n if (_trace) {\n _addBreadcrumb(args.join(''), severityLevelFromString(name));\n }\n };\n });\n\n _logger.exception = (error, ...message) => {\n if (message.length && _logger.error) {\n _logger.error(...message);\n }\n\n logger$1.error(PREFIX, error);\n\n if (_capture) {\n captureException(error);\n } else if (_trace) {\n // No need for a breadcrumb if `_capture` is enabled since it should be\n // captured as an exception\n _addBreadcrumb(error, 'error');\n }\n };\n\n _logger.infoTick = (...args) => {\n logger$1.info(PREFIX, ...args);\n if (_trace) {\n // Wait a tick here to avoid race conditions for some initial logs\n // which may be added before replay is initialized\n setTimeout(() => _addBreadcrumb(args[0]), 0);\n }\n };\n } else {\n CONSOLE_LEVELS.forEach(name => {\n _logger[name] = () => undefined;\n });\n }\n\n return _logger ;\n}\n\nconst logger = makeReplayLogger();\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 /** @inheritdoc */\n\n constructor() {\n this.events = [];\n this._totalSize = 0;\n this.hasCheckout = false;\n this.waitForCheckout = 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 occurred.\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 DEBUG_BUILD && logger.info('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('Error in compression worker: ', 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 /** @inheritdoc */\n\n constructor(worker) {\n this._worker = new WorkerHandler(worker);\n this._earliestTimestamp = null;\n this._totalSize = 0;\n this.hasCheckout = false;\n this.waitForCheckout = 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 occurred.\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 successfully 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.exception(e, '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 waitForCheckout() {\n return this._used.waitForCheckout;\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 // eslint-disable-next-line @typescript-eslint/adjacent-overload-signatures\n set waitForCheckout(value) {\n this._used.waitForCheckout = 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 DEBUG_BUILD && logger.exception(error, '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, waitForCheckout } = 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 this._compression.waitForCheckout = waitForCheckout;\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\n // Can now clear fallback buffer as it's no longer necessary\n this._fallback.clear();\n } catch (error) {\n DEBUG_BUILD && logger.exception(error, 'Failed to add events when switching buffers.');\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 DEBUG_BUILD && logger.info('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 DEBUG_BUILD && logger.info(`Using compression worker${customWorkerUrl ? ` from ${customWorkerUrl}` : ''}`);\n const worker = new Worker(workerUrl);\n return new EventBufferProxy(worker);\n } catch (error) {\n DEBUG_BUILD && logger.exception(error, '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() {\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 DEBUG_BUILD && logger.infoTick('Loading existing session');\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 sessionIdleExpire,\n maxReplayDuration,\n previousSessionId,\n }\n\n,\n sessionOptions,\n) {\n const existingSession = sessionOptions.stickySession && fetchSession();\n\n // No session exists yet, just create a new one\n if (!existingSession) {\n DEBUG_BUILD && logger.infoTick('Creating new session');\n return createSession(sessionOptions, { previousSessionId });\n }\n\n if (!shouldRefreshSession(existingSession, { sessionIdleExpire, maxReplayDuration })) {\n return existingSession;\n }\n\n DEBUG_BUILD && logger.infoTick('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 const { eventBuffer } = replay;\n\n if (!eventBuffer || (eventBuffer.waitForCheckout && !isCheckout)) {\n return null;\n }\n\n const isBufferMode = replay.recordingMode === 'buffer';\n\n try {\n if (isCheckout && isBufferMode) {\n eventBuffer.clear();\n }\n\n if (isCheckout) {\n eventBuffer.hasCheckout = true;\n eventBuffer.waitForCheckout = false;\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 eventBuffer.addEvent(eventAfterPossibleCallback);\n } catch (error) {\n const isExceeded = error && error instanceof EventBufferSizeExceededError;\n const reason = isExceeded ? 'addEventSizeExceeded' : 'addEvent';\n\n if (isExceeded && isBufferMode) {\n // Clear buffer and wait for next checkout\n eventBuffer.clear();\n eventBuffer.waitForCheckout = true;\n\n return null;\n }\n\n replay.handleException(error);\n\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 DEBUG_BUILD &&\n logger.infoTick(`Skipping event with timestamp ${timestampInMs} because it is after maxReplayDuration`);\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.exception(error, 'An error occurred in the `beforeAddRecordingEvent` callback, skipping the event...');\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 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 (!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$3(async () => {\n try {\n // Capture current event buffer as new replay\n await replay.sendBufferedReplayOrFlush();\n } catch (err) {\n replay.handleException(err);\n }\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 =\n event.exception && event.exception.values && event.exception.values[0] && 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 // With newer React versions, the messages changed to a different website https://react.dev/errors/418\n exceptionValue.match(\n /(reactjs\\.org\\/docs\\/error-decoder\\.html\\?invariant=|react\\.dev\\/errors\\/)(418|419|422|423|425)/,\n ) ||\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 data: {\n url: getLocationHref(),\n },\n });\n addBreadcrumbEvent(replay, breadcrumb);\n }\n}\n\n/**\n * Handle breadcrumbs that Sentry captures, and make sure to capture relevant breadcrumbs to Replay as well.\n */\nfunction handleBreadcrumbs(replay) {\n const client = getClient();\n\n if (!client) {\n return;\n }\n\n client.on('beforeAddBreadcrumb', breadcrumb => beforeAddBreadcrumb(replay, breadcrumb));\n}\n\nfunction beforeAddBreadcrumb(replay, breadcrumb) {\n if (!replay.isEnabled() || !isBreadcrumbWithCategory(breadcrumb)) {\n return;\n }\n\n const result = normalizeBreadcrumb(breadcrumb);\n if (result) {\n addBreadcrumbEvent(replay, result);\n }\n}\n\n/** Exported only for tests. */\nfunction normalizeBreadcrumb(breadcrumb) {\n if (\n !isBreadcrumbWithCategory(breadcrumb) ||\n [\n // fetch & xhr are handled separately,in handleNetworkBreadcrumbs\n 'fetch',\n 'xhr',\n // These two are breadcrumbs for emitted sentry events, we don't care about them\n 'sentry.event',\n 'sentry.transaction',\n ].includes(breadcrumb.category) ||\n // We capture UI breadcrumbs separately\n breadcrumb.category.startsWith('ui.')\n ) {\n return null;\n }\n\n if (breadcrumb.category === 'console') {\n return normalizeConsoleBreadcrumb(breadcrumb);\n }\n\n return createBreadcrumb(breadcrumb);\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\nfunction isBreadcrumbWithCategory(breadcrumb) {\n return !!breadcrumb.category;\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 * Reset the `replay_id` field on the DSC.\n */\nfunction resetReplayIdOnDynamicSamplingContext() {\n // Reset DSC on the current scope, if there is one\n const dsc = getCurrentScope().getPropagationContext().dsc;\n if (dsc) {\n delete dsc.replay_id;\n }\n\n // Clear it from frozen DSC on the active span\n const activeSpan = getActiveSpan();\n if (activeSpan) {\n const dsc = getDynamicSamplingContextFromSpan(activeSpan);\n delete (dsc ).replay_id;\n }\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 `handleGlobalEvent`, 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(replay) {\n return Object.assign(\n (event, hint) => {\n // Do nothing if replay has been disabled or paused\n if (!replay.isEnabled() || replay.isPaused()) {\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 // prevent exceeding replay durations by removing the expired replayId from the DSC\n resetReplayIdOnDynamicSamplingContext();\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('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 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/** Get the size of a body. */\nfunction getBodySize(body) {\n if (!body) {\n return undefined;\n }\n\n const textEncoder = new TextEncoder();\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 (error) {\n DEBUG_BUILD && logger.exception(error, 'Failed to serialize body', body);\n return [undefined, 'BODY_PARSE_ERROR'];\n }\n\n DEBUG_BUILD && logger.info('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.entries(headers).reduce((filteredHeaders, [key, value]) => {\n const normalizedKey = key.toLowerCase();\n // Avoid putting empty strings into the headers\n if (allowedHeaders.includes(normalizedKey) && headers[key]) {\n filteredHeaders[normalizedKey] = value;\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 (e2) {\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 appropriate).\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.exception(error, 'Failed to capture fetch breadcrumb');\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) {\n const { input, response } = hint;\n\n const body = input ? _getFetchRequestArgBody(input) : undefined;\n const reqSize = getBodySize(body);\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 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 networkResponseHeaders,\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\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 responseBodySize,\n captureDetails,\n headers,\n }\n\n,\n) {\n try {\n const size =\n bodyText && bodyText.length && responseBodySize === undefined ? getBodySize(bodyText) : 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.exception(error, 'Failed to serialize response body');\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 if (error instanceof Error && error.message.indexOf('Timeout') > -1) {\n DEBUG_BUILD && logger.warn('Parsing text body from response timed out');\n return [undefined, 'BODY_PARSE_TIMEOUT'];\n }\n\n DEBUG_BUILD && logger.exception(error, 'Failed to get text body from response');\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.exception(error, 'Failed to clone response body');\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$3(() => 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 appropriate).\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.exception(error, 'Failed to capture xhr breadcrumb');\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) {\n const { xhr, input } = hint;\n\n if (!xhr) {\n return;\n }\n\n const reqSize = getBodySize(input);\n const resSize = xhr.getResponseHeader('content-length')\n ? parseContentLengthHeader(xhr.getResponseHeader('content-length'))\n : _getBodySize(xhr.response, xhr.responseType);\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 if (value) {\n acc[key.toLowerCase()] = value;\n }\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('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 (error) {\n DEBUG_BUILD && logger.exception(error, 'Failed to serialize body', body);\n return [undefined, 'BODY_PARSE_ERROR'];\n }\n\n DEBUG_BUILD && logger.info('Skipping network body because of body type', body);\n\n return [undefined, 'UNPARSEABLE_BODY_TYPE'];\n}\n\nfunction _getBodySize(\n body,\n responseType,\n) {\n try {\n const bodyStr = responseType === 'json' && body && typeof body === 'object' ? JSON.stringify(body) : body;\n return getBodySize(bodyStr);\n } catch (e2) {\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 {\n networkDetailAllowUrls,\n networkDetailDenyUrls,\n networkCaptureBodies,\n networkRequestHeaders,\n networkResponseHeaders,\n } = replay.getOptions();\n\n const options = {\n replay,\n networkDetailAllowUrls,\n networkDetailDenyUrls,\n networkCaptureBodies,\n networkRequestHeaders,\n networkResponseHeaders,\n };\n\n if (client) {\n client.on('beforeAddBreadcrumb', (breadcrumb, hint) => beforeAddNetworkBreadcrumb(options, breadcrumb, hint));\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);\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);\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.exception(e, '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\n/**\n * Add global listeners that cannot be removed.\n */\nfunction addGlobalListeners(replay) {\n // Listeners from core SDK //\n const client = getClient();\n\n addClickKeypressInstrumentationHandler(handleDomListener(replay));\n addHistoryInstrumentationHandler(handleHistorySpanListener(replay));\n handleBreadcrumbs(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);\n addEventProcessor(eventProcessor);\n\n // If a custom client has no hooks yet, we continue to use the \"old\" implementation\n if (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('spanStart', span => {\n replay.lastActiveSpan = span;\n });\n\n // We may be missing the initial spanStart due to timing issues,\n // so we capture it on finish again.\n client.on('spanEnd', span => {\n replay.lastActiveSpan = span;\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/**\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$3(invokeFunc, wait);\n\n if (maxWait && maxTimerId === undefined) {\n maxTimerId = setTimeout$3(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('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 const session = replay.session;\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. We have an experimental mode\n // to perform multiple checkouts a session (the idea is to improve\n // seeking during playback), so also only include if segmentId is 0\n // (handled in `addSettingsEvent`).\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 // 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' && session && replay.eventBuffer) {\n const earliestEvent = replay.eventBuffer.getEarliestTimestamp();\n if (earliestEvent) {\n DEBUG_BUILD &&\n logger.info(`Updating session start time to earliest event in buffer to ${new Date(earliestEvent)}`);\n\n session.started = earliestEvent;\n\n if (replay.getOptions().stickySession) {\n saveSession(session);\n }\n }\n }\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 (session && session.previousSessionId) {\n return true;\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 client.emit('preprocessEvent', event, eventHint);\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();\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 resolvedSyncPromise({});\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 DEBUG_BUILD && logger.info('An event processor returned `null`, will not send event.');\n return resolvedSyncPromise({});\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 // 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, onError } = 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 (onError) {\n onError(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$3(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 two 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 span.\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 /** The replay has to be manually started, because no sample rate (neither session or error) was provided. */\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._requiresManualStart = 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 // Configure replay logger w/ experimental options\n if (DEBUG_BUILD) {\n const experiments = options._experiments;\n logger.setConfig({\n captureExceptions: !!experiments.captureExceptions,\n traceInternals: !!experiments.traceInternals,\n });\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 /** A wrapper to conditionally capture exceptions. */\n handleException(error) {\n DEBUG_BUILD && logger.exception(error);\n if (this._options.onError) {\n this._options.onError(error);\n }\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 const requiresManualStart = errorSampleRate <= 0 && sessionSampleRate <= 0;\n\n this._requiresManualStart = requiresManualStart;\n\n if (requiresManualStart) {\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 DEBUG_BUILD && logger.exception(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 DEBUG_BUILD && logger.infoTick(`Starting replay in ${this.recordingMode} mode`);\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 log a message 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 DEBUG_BUILD && logger.info('Recording is already in progress');\n return;\n }\n\n if (this._isEnabled && this.recordingMode === 'buffer') {\n DEBUG_BUILD && logger.info('Buffering is in progress, call `flush()` to save the replay');\n return;\n }\n\n DEBUG_BUILD && logger.infoTick('Starting replay in session mode');\n\n // Required as user activity is initially set in\n // constructor, so if `start()` is called after\n // session idle expiration, a replay will not be\n // created due to an idle timeout.\n this._updateUserActivity();\n\n const session = loadOrCreateSession(\n {\n maxReplayDuration: this._options.maxReplayDuration,\n sessionIdleExpire: this.timeouts.sessionIdleExpire,\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 DEBUG_BUILD && logger.info('Buffering is in progress, call `flush()` to save the replay');\n return;\n }\n\n DEBUG_BUILD && logger.infoTick('Starting replay in buffer mode');\n\n const session = loadOrCreateSession(\n {\n sessionIdleExpire: this.timeouts.sessionIdleExpire,\n maxReplayDuration: this._options.maxReplayDuration,\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'\n ? { checkoutEveryNms: BUFFER_CHECKOUT_TIME }\n : // Otherwise, use experimental option w/ min checkout time of 6 minutes\n // This is to improve playback seeking as there could potentially be\n // less mutations to process in the worse cases.\n //\n // checkout by \"N\" events is probably ideal, but means we have less\n // control about the number of checkouts we make (which generally\n // increases replay size)\n this._options._experiments.continuousCheckout && {\n // Minimum checkout time is 6 minutes\n checkoutEveryNms: Math.max(360000, this._options._experiments.continuousCheckout),\n }),\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 DEBUG_BUILD && logger.info(`Stopping Replay${reason ? ` triggered by ${reason}` : ''}`);\n\n resetReplayIdOnDynamicSamplingContext();\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 DEBUG_BUILD && logger.info('Pausing replay');\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 DEBUG_BUILD && logger.info('Resuming replay');\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 DEBUG_BUILD && logger.info('Converting buffer to session');\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 multiple 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 session (=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 const lastActiveSpan = this.lastActiveSpan || getActiveSpan();\n const lastRootSpan = lastActiveSpan && getRootSpan(lastActiveSpan);\n\n const attributes = (lastRootSpan && spanToJSON(lastRootSpan).data) || {};\n const source = attributes[SEMANTIC_ATTRIBUTE_SENTRY_SOURCE];\n if (!lastRootSpan || !source || !['route', 'custom'].includes(source)) {\n return undefined;\n }\n\n return spanToJSON(lastRootSpan).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 /**\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 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 DEBUG_BUILD && logger.info('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 let performanceEntries = createPerformanceEntries(this.performanceEntries).concat(this.replayPerformanceEntries);\n\n this.performanceEntries = [];\n this.replayPerformanceEntries = [];\n\n // If we are manually starting, we want to ensure we only include performance entries\n // that are after the initial timestamp\n // The reason for this is that we may have performance entries from the page load, but may decide to start\n // the replay later on, in which case we do not want to include these entries.\n // without this, manually started replays can have events long before the actual replay recording starts,\n // which messes with the timeline etc.\n if (this._requiresManualStart) {\n const initialTimestampInSeconds = this._context.initialTimestamp / 1000;\n performanceEntries = performanceEntries.filter(entry => entry.start >= initialTimestampInSeconds);\n }\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 replay was started manually (=no sample rate was given),\n // We do not want to back-port the initial timestamp\n if (!session || !eventBuffer || this._requiresManualStart) {\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('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 accommodate 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 timestamp,\n onError: err => this.handleException(err),\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 const dropReason = err instanceof RateLimitError ? 'ratelimit_backoff' : 'send_error';\n client.recordDroppedEvent(dropReason, '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('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 DEBUG_BUILD &&\n logger.info(\n `Session duration (${Math.floor(duration / 1000)}s) is too ${\n tooShort ? 'short' : 'long'\n }, not sending replay.`,\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 DEBUG_BUILD && logger.info('Flushing initial segment without checkout.');\n // TODO FN: Evaluate if we want to stop here, or remove this again?\n }\n\n const _flushInProgress = !!this._flushLock;\n\n // this._flushLock acts as a lock so that future calls to `_flush()` will\n // be blocked until current flush is finished (i.e. this promise resolves)\n if (!this._flushLock) {\n this._flushLock = this._runFlush();\n }\n\n try {\n await this._flushLock;\n } catch (err) {\n this.handleException(err);\n } finally {\n this._flushLock = undefined;\n\n if (_flushInProgress) {\n // Wait for previous flush to finish, then call the debounced\n // `_flush()`. It's possible there are other flush requests queued and\n // waiting for it to resolve. We want to reduce all outstanding\n // requests (as well as any new flush requests that occur within a\n // second of the locked flush completing) into a single flush.\n this._debouncedFlush();\n }\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(selectors, defaultSelectors) {\n return [\n ...selectors,\n // sentry defaults\n ...defaultSelectors,\n ].join(',');\n}\n\n/**\n * Returns privacy related configuration for use in rrweb\n */\nfunction getPrivacyOptions({ mask, unmask, block, unblock, ignore }) {\n const defaultBlockedElements = ['base[href=\"/\"]'];\n\n const maskSelector = getOption(mask, ['.sentry-mask', '[data-sentry-mask]']);\n const unmaskSelector = getOption(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(block, ['.sentry-block', '[data-sentry-block]', ...defaultBlockedElements]),\n unblockSelector: getOption(unblock, []),\n ignoreSelector: getOption(ignore, ['.sentry-ignore', '[data-sentry-ignore]', 'input[type=\"file\"]']),\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 precedence\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\n/**\n * Sentry integration for [Session Replay](https://sentry.io/for/session-replay/).\n *\n * See the [Replay documentation](https://docs.sentry.io/platforms/javascript/guides/session-replay/) for more information.\n *\n * @example\n *\n * ```\n * Sentry.init({\n * dsn: '__DSN__',\n * integrations: [Sentry.replayIntegration()],\n * });\n * ```\n */\nconst replayIntegration = ((options) => {\n return new Replay(options);\n}) ;\n\n/**\n * Replay integration\n *\n * TODO: Rewrite this to be functional integration\n * Exported for tests.\n */\nclass Replay {\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 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 onError,\n } = {}) {\n this.name = Replay.id;\n\n const privacyOptions = getPrivacyOptions({\n mask,\n unmask,\n block,\n unblock,\n ignore,\n });\n\n this._recordingOptions = {\n maskAllInputs,\n maskAllText,\n 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 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 onError,\n\n _experiments,\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 afterAllSetup(client) {\n if (!isBrowser() || this._replay) {\n return;\n }\n\n this._setup(client);\n this._initialize(client);\n }\n\n /**\n * Start a replay regardless of sampling rate. Calling this will always\n * create a new session. Will log a message 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 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 * If replay is not enabled, a new session replay is started.\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) {\n return Promise.resolve();\n }\n\n // assuming a session should be recorded in this case\n if (!this._replay.isEnabled()) {\n this._replay.start();\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 * Get the current recording mode. This can be either `session` or `buffer`.\n *\n * `session`: Recording the whole session, sending it continuously\n * `buffer`: Always keeping 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 getRecordingMode() {\n if (!this._replay || !this._replay.isEnabled()) {\n return;\n }\n\n return this._replay.recordingMode;\n }\n\n /**\n * Initializes replay.\n */\n _initialize(client) {\n if (!this._replay) {\n return;\n }\n\n this._maybeLoadFromReplayCanvasIntegration(client);\n this._replay.initializeSampling();\n }\n\n /** Setup the integration. */\n _setup(client) {\n // Client is not available in constructor, so we need to wait until setupOnce\n const finalOptions = loadReplayOptionsFromClient(this._initialOptions, client);\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(client) {\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 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.__initStatic();\n\n/** Parse Replay-related options from SDK options */\nfunction loadReplayOptionsFromClient(initialOptions, client) {\n const opt = client.getOptions() ;\n\n const finalOptions = {\n sessionSampleRate: 0,\n errorSampleRate: 0,\n ...dropUndefinedKeys(initialOptions),\n };\n\n const replaysSessionSampleRate = parseSampleRate(opt.replaysSessionSampleRate);\n const replaysOnErrorSampleRate = parseSampleRate(opt.replaysOnErrorSampleRate);\n\n if (replaysSessionSampleRate == null && replaysOnErrorSampleRate == null) {\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 (replaysSessionSampleRate != null) {\n finalOptions.sessionSampleRate = replaysSessionSampleRate;\n }\n\n if (replaysOnErrorSampleRate != null) {\n finalOptions.errorSampleRate = 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 */\nfunction getReplay() {\n const client = getClient();\n return client && client.getIntegrationByName('Replay');\n}\n\nexport { getReplay, 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/core';\nimport { defineIntegration } 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 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.restoreHandlers.forEach((handler) => {\n try {\n handler();\n }\n catch (e) {\n }\n });\n this.restoreHandlers = [];\n this.windowsSet = new WeakSet();\n this.windows = [];\n this.shadowDoms = new Set();\n _optionalChain([this, 'access', _ => _.worker, 'optionalAccess', _2 => _2.terminate, 'call', _3 => _3()]);\n this.worker = null;\n this.snapshotInProgressMap = new Map();\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.shadowDoms = new Set();\n this.windowsSet = new WeakSet();\n this.windows = [];\n this.restoreHandlers = [];\n this.frozen = false;\n this.locked = false;\n this.snapshotInProgressMap = new Map();\n this.worker = null;\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 ((recordCanvas && typeof sampling === 'number') ||\n options.enableManualSnapshot) {\n this.worker = this.initFPSWorker();\n }\n this.addWindow(win);\n if (options.enableManualSnapshot) {\n return;\n }\n callbackWrapper(() => {\n if (recordCanvas && sampling === 'all') {\n this.startRAFTimestamping();\n this.startPendingCanvasMutationFlusher();\n }\n if (recordCanvas && typeof sampling === 'number') {\n this.initCanvasFPSObserver(sampling, blockClass, blockSelector, unblockSelector, maxCanvasSize, {\n dataURLOptions,\n });\n }\n })();\n }\n addWindow(win) {\n const { sampling = 'all', blockClass, blockSelector, unblockSelector, recordCanvas, enableManualSnapshot, } = this.options;\n if (this.windowsSet.has(win))\n return;\n if (enableManualSnapshot) {\n this.windowsSet.add(win);\n this.windows.push(new WeakRef(win));\n return;\n }\n callbackWrapper(() => {\n if (recordCanvas && sampling === 'all') {\n this.initCanvasMutationObserver(win, blockClass, blockSelector, unblockSelector);\n }\n if (recordCanvas && typeof sampling === 'number') {\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector, unblockSelector, true);\n this.restoreHandlers.push(() => {\n canvasContextReset();\n });\n }\n })();\n this.windowsSet.add(win);\n this.windows.push(new WeakRef(win));\n }\n addShadowRoot(shadowRoot) {\n this.shadowDoms.add(new WeakRef(shadowRoot));\n }\n resetShadowRoots() {\n this.shadowDoms = new Set();\n }\n initFPSWorker() {\n const worker = new Worker(t());\n worker.onmessage = (e) => {\n const data = e.data;\n const { id } = data;\n this.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 return worker;\n }\n initCanvasFPSObserver(fps, blockClass, blockSelector, unblockSelector, maxCanvasSize, options) {\n const rafId = this.takeSnapshot(false, fps, blockClass, blockSelector, unblockSelector, maxCanvasSize, options.dataURLOptions);\n this.restoreHandlers.push(() => {\n cancelAnimationFrame(rafId);\n });\n }\n initCanvasMutationObserver(win, blockClass, blockSelector, unblockSelector) {\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.restoreHandlers.push(() => {\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.blockClass, options.blockSelector, options.unblockSelector, options.maxCanvasSize, options.dataURLOptions, canvasElement);\n this.restoreHandlers.push(() => {\n cancelAnimationFrame(rafId);\n });\n }\n takeSnapshot(isManualSnapshot, fps, blockClass, blockSelector, unblockSelector, maxCanvasSize, dataURLOptions, canvasElement) {\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 const searchCanvas = (root) => {\n root.querySelectorAll('canvas').forEach((canvas) => {\n if (!isBlocked(canvas, blockClass, blockSelector, unblockSelector)) {\n matchedCanvas.push(canvas);\n }\n });\n };\n for (const item of this.windows) {\n const window = item.deref();\n if (window) {\n searchCanvas(window.document);\n }\n }\n for (const item of this.shadowDoms) {\n const shadowRoot = item.deref();\n if (shadowRoot) {\n searchCanvas(shadowRoot);\n }\n }\n return matchedCanvas;\n };\n const takeCanvasSnapshots = (timestamp) => {\n if (!this.windows.length) {\n return;\n }\n if (lastSnapshotTime &&\n timestamp - lastSnapshotTime < timeBetweenSnapshots) {\n rafId = onRequestAnimationFrame(takeCanvasSnapshots);\n return;\n }\n lastSnapshotTime = timestamp;\n getCanvas(canvasElement).forEach((canvas) => {\n if (!this.mirror.hasNode(canvas)) {\n return;\n }\n const id = this.mirror.getId(canvas);\n if (this.snapshotInProgressMap.get(id))\n return;\n if (!canvas.width || !canvas.height)\n return;\n this.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', _4 => _4.getContextAttributes, 'call', _5 => _5(), 'optionalAccess', _6 => _6.preserveDrawingBuffer]) === false) {\n context.clear(context.COLOR_BUFFER_BIT);\n }\n }\n createImageBitmap(canvas)\n .then((bitmap) => {\n _optionalChain([this, 'access', _7 => _7.worker, 'optionalAccess', _8 => _8.postMessage, 'call', _9 => _9({\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 if (!isManualSnapshot) {\n rafId = onRequestAnimationFrame(takeCanvasSnapshots);\n }\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 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(\n _replayCanvasIntegration,\n) ;\n\nexport { replayCanvasIntegration };\n//# sourceMappingURL=index.js.map\n","import { GLOBAL_OBJ, getClient, getCurrentScope, captureFeedback, getLocationHref, isBrowser, logger, getIsolationScope, getGlobalScope } 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 ;\nconst DOCUMENT = WINDOW.document;\nconst NAVIGATOR = WINDOW.navigator;\n\nconst TRIGGER_LABEL = 'Report a Bug';\nconst CANCEL_BUTTON_LABEL = 'Cancel';\nconst SUBMIT_BUTTON_LABEL = 'Send Bug Report';\nconst CONFIRM_BUTTON_LABEL = 'Confirm';\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 SUCCESS_MESSAGE_TEXT = 'Thank you for your report!';\nconst IS_REQUIRED_LABEL = '(required)';\nconst ADD_SCREENSHOT_LABEL = 'Add a screenshot';\nconst REMOVE_SCREENSHOT_LABEL = 'Remove screenshot';\n\nconst FEEDBACK_WIDGET_SOURCE = 'widget';\nconst FEEDBACK_API_SOURCE = 'api';\n\nconst SUCCESS_MESSAGE_TIMEOUT = 5000;\n\n/**\n * Public API to send a Feedback item to Sentry\n */\nconst sendFeedback = (\n params,\n hint = { includeReplay: true },\n) => {\n if (!params.message) {\n throw new Error('Unable to submit feedback with empty message');\n }\n\n // We want to wait for the feedback to be sent (or not)\n const client = getClient();\n\n if (!client) {\n throw new Error('No client setup, cannot send feedback.');\n }\n\n if (params.tags && Object.keys(params.tags).length) {\n getCurrentScope().setTags(params.tags);\n }\n const eventId = captureFeedback(\n {\n source: FEEDBACK_API_SOURCE,\n url: getLocationHref(),\n ...params,\n },\n hint,\n );\n\n // We want to wait for the feedback to be sent (or not)\n return new Promise((resolve, reject) => {\n // After 5s, we want to clear anyhow\n const timeout = setTimeout(() => reject('Unable to determine if Feedback was correctly sent.'), 5000);\n\n const cleanup = client.on('afterSendEvent', (event, response) => {\n if (event.event_id !== eventId) {\n return;\n }\n\n clearTimeout(timeout);\n cleanup();\n\n // Require valid status codes, otherwise can assume feedback was not sent successfully\n if (\n response &&\n typeof response.statusCode === 'number' &&\n response.statusCode >= 200 &&\n response.statusCode < 300\n ) {\n return resolve(eventId);\n }\n\n if (response && typeof response.statusCode === 'number' && response.statusCode === 0) {\n return reject(\n 'Unable to send Feedback. This is because of network issues, or because you are using an ad-blocker.',\n );\n }\n\n if (response && typeof response.statusCode === 'number' && response.statusCode === 403) {\n return reject(\n 'Unable to send Feedback. This could be because this domain is not in your list of allowed domains.',\n );\n }\n\n return reject(\n 'Unable to send Feedback. This could be because of network issues, or because you are using an ad-blocker',\n );\n });\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 * 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 * Mobile browsers do not support `mediaDevices.getDisplayMedia` even though they have the api implemented\n * Instead they return things like `NotAllowedError` when called.\n *\n * It's simpler for us to browser sniff first, and avoid loading the integration if we can.\n *\n * https://stackoverflow.com/a/58879212\n * https://stackoverflow.com/a/3540295\n *\n * `mediaDevices.getDisplayMedia` is also only supported in secure contexts, and return a `mediaDevices is not supported` error, so we should also avoid loading the integration if we can.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia\n */\nfunction isScreenshotSupported() {\n if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(NAVIGATOR.userAgent)) {\n return false;\n }\n /**\n * User agent on iPads show as Macintosh, so we need extra checks\n *\n * https://forums.developer.apple.com/forums/thread/119186\n * https://stackoverflow.com/questions/60482650/how-to-detect-ipad-useragent-on-safari-browser\n */\n if (/Macintosh/i.test(NAVIGATOR.userAgent) && NAVIGATOR.maxTouchPoints && NAVIGATOR.maxTouchPoints > 1) {\n return false;\n }\n if (!isSecureContext) {\n return false;\n }\n return true;\n}\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 tags: {\n ...defaultOptions.tags,\n ...optionOverrides.tags,\n },\n onFormOpen: () => {\n optionOverrides.onFormOpen && optionOverrides.onFormOpen();\n defaultOptions.onFormOpen && defaultOptions.onFormOpen();\n },\n onFormClose: () => {\n optionOverrides.onFormClose && optionOverrides.onFormClose();\n defaultOptions.onFormClose && defaultOptions.onFormClose();\n },\n onSubmitSuccess: (data) => {\n optionOverrides.onSubmitSuccess && optionOverrides.onSubmitSuccess(data);\n defaultOptions.onSubmitSuccess && defaultOptions.onSubmitSuccess(data);\n },\n onSubmitError: (error) => {\n optionOverrides.onSubmitError && optionOverrides.onSubmitError(error);\n defaultOptions.onSubmitError && defaultOptions.onSubmitError(error);\n },\n onFormSubmitted: () => {\n optionOverrides.onFormSubmitted && optionOverrides.onFormSubmitted();\n defaultOptions.onFormSubmitted && defaultOptions.onFormSubmitted();\n },\n themeDark: {\n ...defaultOptions.themeDark,\n ...optionOverrides.themeDark,\n },\n themeLight: {\n ...defaultOptions.themeLight,\n ...optionOverrides.themeLight,\n },\n };\n}\n\n/**\n * Creates