@amplitude/session-replay-browser 1.28.10 → 1.28.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"session-replay.js","sourceRoot":"","sources":["../../src/session-replay.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n getAnalyticsConnector,\n getGlobalScope,\n ILogger,\n Logger,\n LogLevel,\n returnWrapper,\n SpecialEventType,\n} from '@amplitude/analytics-core';\n\n// Import only specific types to avoid pulling in the entire rrweb-types package\nimport { eventWithTime, EventType as RRWebEventType, scrollCallback } from '@amplitude/rrweb-types';\nimport { TargetingParameters } from '@amplitude/targeting';\nimport { createSessionReplayJoinedConfigGenerator } from './config/joined-config';\nimport {\n LoggingConfig,\n SessionReplayJoinedConfig,\n SessionReplayJoinedConfigGenerator,\n SessionReplayLocalConfig,\n SessionReplayMetadata,\n SessionReplayRemoteConfig,\n} from './config/types';\nimport {\n BLOCK_CLASS,\n CustomRRwebEvent,\n DEFAULT_SESSION_REPLAY_PROPERTY,\n INTERACTION_MAX_INTERVAL,\n INTERACTION_MIN_INTERVAL,\n MASK_TEXT_CLASS,\n SESSION_REPLAY_DEBUG_PROPERTY,\n} from './constants';\nimport { EventCompressor } from './events/event-compressor';\nimport { createEventsManager } from './events/events-manager';\nimport { MultiEventManager } from './events/multi-manager';\nimport { generateHashCode, getDebugConfig, getPageUrl, getStorageSize, isSessionInSample, maskFn } from './helpers';\nimport { clickBatcher, clickHook, clickNonBatcher } from './hooks/click';\nimport { ScrollWatcher } from './hooks/scroll';\nimport { SessionIdentifiers } from './identifiers';\nimport { SafeLoggerProvider } from './logger';\nimport { evaluateTargetingAndStore } from './targeting/targeting-manager';\nimport {\n AmplitudeSessionReplay,\n SessionReplayEventsManager as AmplitudeSessionReplayEventsManager,\n DebugInfo,\n EventsManagerWithType,\n EventType,\n SessionIdentifiers as ISessionIdentifiers,\n SessionReplayOptions,\n} from './typings/session-replay';\nimport { VERSION } from './version';\n\n// Import only the type for NetworkRequestEvent to keep type safety\nimport type { NetworkObservers, NetworkRequestEvent } from './observers';\nimport { createUrlTrackingPlugin } from './plugins/url-tracking-plugin';\nimport type { RecordFunction } from './utils/rrweb';\n\ntype PageLeaveFn = (e: PageTransitionEvent | Event) => void;\n\nexport class SessionReplay implements AmplitudeSessionReplay {\n name = '@amplitude/session-replay-browser';\n config: SessionReplayJoinedConfig | undefined;\n joinedConfigGenerator: SessionReplayJoinedConfigGenerator | undefined;\n identifiers: ISessionIdentifiers | undefined;\n eventsManager?: AmplitudeSessionReplayEventsManager<'replay' | 'interaction', string>;\n loggerProvider: ILogger;\n recordCancelCallback: ReturnType<RecordFunction> | null = null;\n eventCount = 0;\n eventCompressor: EventCompressor | undefined;\n sessionTargetingMatch = false;\n private lastTargetingParams?: Pick<TargetingParameters, 'event' | 'userProperties'>;\n private lastShouldRecordDecision?: boolean;\n\n // Visible for testing only\n pageLeaveFns: PageLeaveFn[] = [];\n private scrollHook?: scrollCallback;\n private networkObservers?: NetworkObservers;\n private metadata: SessionReplayMetadata | undefined;\n\n // Cache the dynamically imported record function\n private recordFunction: RecordFunction | null = null;\n\n constructor() {\n this.loggerProvider = new SafeLoggerProvider(new Logger());\n }\n\n init(apiKey: string, options: SessionReplayOptions) {\n return returnWrapper(this._init(apiKey, options));\n }\n\n private teardownEventListeners = (teardown: boolean) => {\n const globalScope = getGlobalScope();\n if (globalScope) {\n globalScope.removeEventListener('blur', this.blurListener);\n globalScope.removeEventListener('focus', this.focusListener);\n !teardown && globalScope.addEventListener('blur', this.blurListener);\n !teardown && globalScope.addEventListener('focus', this.focusListener);\n // prefer pagehide to unload events, this is the standard going forward. it is not\n // 100% reliable, but is bfcache-compatible.\n if (globalScope.self && 'onpagehide' in globalScope.self) {\n globalScope.removeEventListener('pagehide', this.pageLeaveListener);\n !teardown && globalScope.addEventListener('pagehide', this.pageLeaveListener);\n } else {\n // this has performance implications, but is the only way we can reliably send events\n // in browser that don't support pagehide.\n globalScope.removeEventListener('beforeunload', this.pageLeaveListener);\n !teardown && globalScope.addEventListener('beforeunload', this.pageLeaveListener);\n }\n }\n };\n\n protected async _init(apiKey: string, options: SessionReplayOptions) {\n this.loggerProvider = new SafeLoggerProvider(options.loggerProvider || new Logger());\n Object.prototype.hasOwnProperty.call(options, 'logLevel') &&\n this.loggerProvider.enable(options.logLevel as LogLevel);\n this.identifiers = new SessionIdentifiers({ sessionId: options.sessionId, deviceId: options.deviceId });\n this.joinedConfigGenerator = await createSessionReplayJoinedConfigGenerator(apiKey, options);\n const { joinedConfig, localConfig, remoteConfig } = await this.joinedConfigGenerator.generateJoinedConfig(\n this.identifiers.sessionId,\n );\n this.config = joinedConfig;\n\n this.setMetadata(\n options.sessionId,\n joinedConfig,\n localConfig,\n remoteConfig,\n options.version?.version,\n VERSION,\n options.version?.type,\n );\n\n if (options.sessionId && this.config.interactionConfig?.enabled) {\n const scrollWatcher = ScrollWatcher.default(\n {\n sessionId: options.sessionId,\n type: 'interaction',\n },\n this.config,\n );\n this.pageLeaveFns = [scrollWatcher.send(this.getDeviceId.bind(this)).bind(scrollWatcher)];\n this.scrollHook = scrollWatcher.hook.bind(scrollWatcher);\n }\n\n const managers: EventsManagerWithType<EventType, string>[] = [];\n let { storeType } = this.config;\n if (storeType === 'idb' && !getGlobalScope()?.indexedDB) {\n storeType = 'memory';\n this.loggerProvider.warn('Could not use preferred indexedDB storage, reverting to in memory option.');\n }\n this.loggerProvider.log(`Using ${storeType} for event storage.`);\n try {\n const rrwebEventManager = await createEventsManager<'replay'>({\n config: this.config,\n sessionId: this.identifiers.sessionId,\n type: 'replay',\n storeType,\n });\n managers.push({ name: 'replay', manager: rrwebEventManager });\n } catch (error) {\n const typedError = error as Error;\n this.loggerProvider.warn(`Error occurred while creating replay events manager: ${typedError.toString()}`);\n }\n\n if (this.config.interactionConfig?.enabled) {\n const payloadBatcher = this.config.interactionConfig.batch ? clickBatcher : clickNonBatcher;\n try {\n const interactionEventManager = await createEventsManager<'interaction'>({\n config: this.config,\n sessionId: this.identifiers.sessionId,\n type: 'interaction',\n minInterval: this.config.interactionConfig.trackEveryNms ?? INTERACTION_MIN_INTERVAL,\n maxInterval: INTERACTION_MAX_INTERVAL,\n payloadBatcher,\n storeType,\n });\n managers.push({ name: 'interaction', manager: interactionEventManager });\n } catch (error) {\n const typedError = error as Error;\n this.loggerProvider.warn(`Error occurred while creating interaction events manager: ${typedError.toString()}`);\n }\n }\n\n this.eventsManager = new MultiEventManager<'replay' | 'interaction', string>(...managers);\n // To prevent too many threads.\n if (this.eventCompressor) {\n this.eventCompressor.terminate();\n }\n this.eventCompressor = new EventCompressor(this.eventsManager, this.config, this.getDeviceId());\n\n await this.initializeNetworkObservers();\n\n this.loggerProvider.log('Installing @amplitude/session-replay-browser.');\n\n this.teardownEventListeners(false);\n\n await this.evaluateTargetingAndCapture({ userProperties: options.userProperties }, true);\n }\n\n setSessionId(sessionId: string | number, deviceId?: string) {\n return returnWrapper(this.asyncSetSessionId(sessionId, deviceId));\n }\n\n async asyncSetSessionId(\n sessionId: string | number,\n deviceId?: string,\n options?: { userProperties?: { [key: string]: any } },\n ) {\n this.sessionTargetingMatch = false;\n this.lastShouldRecordDecision = undefined; // Reset targeting decision for new session\n\n const previousSessionId = this.identifiers && this.identifiers.sessionId;\n if (previousSessionId) {\n this.sendEvents(previousSessionId);\n }\n\n const deviceIdForReplayId = deviceId || this.getDeviceId();\n this.identifiers = new SessionIdentifiers({\n sessionId: sessionId,\n deviceId: deviceIdForReplayId,\n });\n\n // If there is no previous session id, SDK is being initialized for the first time,\n // and config was just fetched in initialization, so no need to fetch it a second time\n if (this.joinedConfigGenerator && previousSessionId) {\n const { joinedConfig } = await this.joinedConfigGenerator.generateJoinedConfig(this.identifiers.sessionId);\n this.config = joinedConfig;\n }\n await this.evaluateTargetingAndCapture({ userProperties: options?.userProperties });\n }\n\n getSessionReplayProperties() {\n const config = this.config;\n const identifiers = this.identifiers;\n if (!config || !identifiers) {\n this.loggerProvider.warn('Session replay init has not been called, cannot get session replay properties.');\n return {};\n }\n\n const shouldRecord = this.getShouldRecord();\n let eventProperties: { [key: string]: string | null } = {};\n\n if (shouldRecord) {\n eventProperties = {\n [DEFAULT_SESSION_REPLAY_PROPERTY]: identifiers.sessionReplayId ? identifiers.sessionReplayId : null,\n };\n if (config.debugMode) {\n eventProperties[SESSION_REPLAY_DEBUG_PROPERTY] = JSON.stringify({\n appHash: generateHashCode(config.apiKey).toString(),\n });\n }\n }\n\n void this.addCustomRRWebEvent(\n CustomRRwebEvent.GET_SR_PROPS,\n {\n shouldRecord,\n eventProperties: eventProperties,\n },\n this.eventCount === 10,\n );\n if (this.eventCount === 10) {\n this.eventCount = 0;\n }\n this.eventCount++;\n\n return eventProperties;\n }\n\n blurListener = () => {\n this.sendEvents();\n };\n\n focusListener = () => {\n // Restart recording on focus to ensure that when user\n // switches tabs, we take a full snapshot\n void this.recordEvents(false);\n };\n\n /**\n * This is an instance member so that if init is called multiple times\n * it doesn't add another listener to the page leave event. This is to\n * prevent duplicate listener actions from firing.\n */\n private pageLeaveListener = (e: PageTransitionEvent | Event) => {\n this.pageLeaveFns.forEach((fn) => {\n fn(e);\n });\n };\n\n evaluateTargetingAndCapture = async (\n targetingParams: Pick<TargetingParameters, 'event' | 'userProperties'>,\n isInit = false,\n ) => {\n if (!this.identifiers || !this.identifiers.sessionId || !this.config) {\n if (this.identifiers && !this.identifiers.sessionId) {\n this.loggerProvider.log('Session ID has not been set yet, cannot evaluate targeting for Session Replay.');\n } else {\n this.loggerProvider.warn('Session replay init has not been called, cannot evaluate targeting.');\n }\n return;\n }\n\n // Store targeting parameters for use in getShouldRecord\n this.lastTargetingParams = targetingParams;\n\n if (this.config.targetingConfig && !this.sessionTargetingMatch) {\n let eventForTargeting = targetingParams.event;\n if (\n eventForTargeting &&\n Object.values(SpecialEventType).includes(eventForTargeting.event_type as SpecialEventType)\n ) {\n eventForTargeting = undefined;\n }\n\n // We're setting this on this class because fetching the value from idb\n // is async, we need to access this value synchronously (for record\n // and for getSessionReplayProperties - both synchronous fns)\n this.sessionTargetingMatch = await evaluateTargetingAndStore({\n sessionId: this.identifiers.sessionId,\n targetingConfig: this.config.targetingConfig,\n loggerProvider: this.loggerProvider,\n apiKey: this.config.apiKey,\n targetingParams: { userProperties: targetingParams.userProperties, event: eventForTargeting },\n });\n\n // Log the targeting config to debug\n this.loggerProvider.debug(\n JSON.stringify(\n {\n name: 'targeted replay capture config',\n sessionTargetingMatch: this.sessionTargetingMatch,\n event: eventForTargeting,\n targetingParams: targetingParams,\n },\n null,\n 2,\n ),\n );\n }\n\n if (isInit) {\n void this.initialize(true);\n } else {\n await this.recordEvents();\n }\n };\n\n sendEvents(sessionId?: string | number) {\n const sessionIdToSend = sessionId || this.identifiers?.sessionId;\n const deviceId = this.getDeviceId();\n this.eventsManager &&\n sessionIdToSend &&\n deviceId &&\n this.eventsManager.sendCurrentSequenceEvents({ sessionId: sessionIdToSend, deviceId });\n }\n\n async initialize(shouldSendStoredEvents = false) {\n if (!this.identifiers?.sessionId) {\n this.loggerProvider.log(`Session is not being recorded due to lack of session id.`);\n return Promise.resolve();\n }\n\n const deviceId = this.getDeviceId();\n if (!deviceId) {\n this.loggerProvider.log(`Session is not being recorded due to lack of device id.`);\n return Promise.resolve();\n }\n this.eventsManager && shouldSendStoredEvents && void this.eventsManager.sendStoredEvents({ deviceId });\n\n return this.recordEvents();\n }\n\n shouldOptOut() {\n let identityStoreOptOut: boolean | undefined;\n if (this.config?.instanceName) {\n const identityStore = getAnalyticsConnector(this.config.instanceName).identityStore;\n identityStoreOptOut = identityStore.getIdentity().optOut;\n }\n\n return identityStoreOptOut !== undefined ? identityStoreOptOut : this.config?.optOut;\n }\n\n getShouldRecord() {\n if (!this.identifiers || !this.config || !this.identifiers.sessionId) {\n this.loggerProvider.warn(`Session is not being recorded due to lack of config, please call sessionReplay.init.`);\n return false;\n }\n if (!this.config.captureEnabled) {\n this.loggerProvider.log(\n `Session ${this.identifiers.sessionId} not being captured due to capture being disabled for project or because the remote config could not be fetched.`,\n );\n return false;\n }\n\n if (this.shouldOptOut()) {\n this.loggerProvider.log(`Opting session ${this.identifiers.sessionId} out of recording due to optOut config.`);\n return false;\n }\n\n let shouldRecord = false;\n let message = '';\n let matched = false;\n\n // If targetingConfig exists, we'll use the sessionTargetingMatch to determine whether to record\n // Otherwise, we'll evaluate the session against the overall sample rate\n if (this.config.targetingConfig) {\n if (!this.sessionTargetingMatch) {\n message = `Not capturing replays for session ${this.identifiers.sessionId} due to not matching targeting conditions.`;\n this.loggerProvider.log(message);\n shouldRecord = false;\n matched = false;\n } else {\n message = `Capturing replays for session ${this.identifiers.sessionId} due to matching targeting conditions.`;\n this.loggerProvider.log(message);\n shouldRecord = true;\n matched = true;\n }\n } else {\n const isInSample = isSessionInSample(this.identifiers.sessionId, this.config.sampleRate);\n if (!isInSample) {\n message = `Opting session ${this.identifiers.sessionId} out of recording due to sample rate.`;\n this.loggerProvider.log(message);\n shouldRecord = false;\n matched = false;\n } else {\n shouldRecord = true;\n matched = true;\n }\n }\n\n // Only send custom rrweb event for targeting decision when the decision changes\n if (this.lastShouldRecordDecision !== shouldRecord && this.config.targetingConfig) {\n void this.addCustomRRWebEvent(CustomRRwebEvent.TARGETING_DECISION, {\n message,\n sessionId: this.identifiers.sessionId,\n matched,\n targetingParams: this.lastTargetingParams,\n });\n this.lastShouldRecordDecision = shouldRecord;\n }\n\n return shouldRecord;\n }\n\n getBlockSelectors(): string | string[] | undefined {\n // For some reason, this defaults to empty array ([]) if undefined in the compiled script.\n // Empty arrays cause errors when being evaluated in Safari.\n // Force the selector to be undefined if it's an empty array.\n const blockSelector = this.config?.privacyConfig?.blockSelector ?? [];\n if (blockSelector.length === 0) {\n return undefined;\n }\n return blockSelector;\n }\n\n getMaskTextSelectors(): string | undefined {\n if (this.config?.privacyConfig?.defaultMaskLevel === 'conservative') {\n return '*';\n }\n\n const maskSelector = this.config?.privacyConfig?.maskSelector;\n if (!maskSelector) {\n return;\n }\n\n return maskSelector as unknown as string;\n }\n\n async getRecordingPlugins(loggingConfig: LoggingConfig | undefined) {\n const plugins = [];\n\n // Add URL tracking plugin\n try {\n const urlTrackingPlugin = createUrlTrackingPlugin({\n ugcFilterRules: this.config?.interactionConfig?.ugcFilterRules || [],\n enablePolling: this.config?.enableUrlChangePolling || false,\n pollingInterval: this.config?.urlChangePollingInterval,\n captureDocumentTitle: this.config?.captureDocumentTitle,\n });\n\n plugins.push(urlTrackingPlugin);\n } catch (error) {\n this.loggerProvider.warn('Failed to create URL tracking plugin:', error);\n }\n\n // Default plugin settings -\n // {\n // level: ['info', 'log', 'warn', 'error'],\n // lengthThreshold: 10000,\n // stringifyOptions: {\n // stringLengthLimit: undefined,\n // numOfKeysLimit: 50,\n // depthOfLimit: 4,\n // },\n // logger: window.console,\n // }\n if (loggingConfig?.console?.enabled) {\n try {\n // Dynamic import keeps console plugin separate and only loads when needed\n const { getRecordConsolePlugin } = await import('@amplitude/rrweb-plugin-console-record');\n plugins.push(getRecordConsolePlugin({ level: loggingConfig.console.levels }));\n } catch (error) {\n this.loggerProvider.warn('Failed to load console plugin:', error);\n }\n }\n\n return plugins.length > 0 ? plugins : undefined;\n }\n\n private async getRecordFunction(): Promise<RecordFunction | null> {\n if (this.recordFunction) {\n return this.recordFunction;\n }\n\n try {\n const { record } = await import('@amplitude/rrweb-record');\n this.recordFunction = record;\n return record;\n } catch (error) {\n this.loggerProvider.warn('Failed to load rrweb-record module:', error);\n return null;\n }\n }\n\n async recordEvents(shouldLogMetadata = true) {\n const config = this.config;\n const shouldRecord = this.getShouldRecord();\n const sessionId = this.identifiers?.sessionId;\n if (!shouldRecord || !sessionId || !config) {\n return;\n }\n this.stopRecordingEvents();\n\n const recordFunction = await this.getRecordFunction();\n\n // May be undefined if cannot import rrweb-record\n if (!recordFunction) {\n return;\n }\n\n await this.initializeNetworkObservers();\n\n this.networkObservers?.start((event: NetworkRequestEvent) => {\n void this.addCustomRRWebEvent(CustomRRwebEvent.FETCH_REQUEST, event);\n });\n const { privacyConfig, interactionConfig, loggingConfig } = config;\n\n const hooks = interactionConfig?.enabled\n ? {\n mouseInteraction:\n this.eventsManager &&\n clickHook(this.loggerProvider, {\n eventsManager: this.eventsManager,\n sessionId,\n deviceIdFn: this.getDeviceId.bind(this),\n mirror: recordFunction.mirror,\n ugcFilterRules: interactionConfig.ugcFilterRules ?? [],\n }),\n scroll: this.scrollHook,\n }\n : {};\n\n const ugcFilterRules =\n interactionConfig?.enabled && interactionConfig.ugcFilterRules ? interactionConfig.ugcFilterRules : [];\n\n this.loggerProvider.log(`Session Replay capture beginning for ${sessionId}.`);\n\n try {\n this.recordCancelCallback = recordFunction({\n emit: (event: eventWithTime) => {\n if (this.shouldOptOut()) {\n this.loggerProvider.log(`Opting session ${sessionId} out of recording due to optOut config.`);\n this.stopRecordingEvents();\n this.sendEvents();\n return;\n }\n\n if (event.type === RRWebEventType.Meta) {\n event.data.href = getPageUrl(event.data.href, ugcFilterRules);\n }\n\n if (this.eventCompressor) {\n // Schedule processing during idle time if the browser supports requestIdleCallback\n this.eventCompressor.enqueueEvent(event, sessionId);\n }\n },\n inlineStylesheet: config.shouldInlineStylesheet,\n hooks,\n maskAllInputs: true,\n maskTextClass: MASK_TEXT_CLASS,\n blockClass: BLOCK_CLASS,\n blockSelector: this.getBlockSelectors() as string | undefined,\n applyBackgroundColorToBlockedElements: config.applyBackgroundColorToBlockedElements,\n maskInputFn: maskFn('input', privacyConfig),\n maskTextFn: maskFn('text', privacyConfig),\n maskTextSelector: this.getMaskTextSelectors(),\n recordCanvas: false,\n slimDOMOptions: {\n script: config.omitElementTags?.script,\n comment: config.omitElementTags?.comment,\n },\n errorHandler: (error: unknown) => {\n const typedError = error as Error & { _external_?: boolean };\n\n // styled-components relies on this error being thrown and bubbled up, rrweb is otherwise suppressing it\n if (typedError.message.includes('insertRule') && typedError.message.includes('CSSStyleSheet')) {\n throw typedError;\n }\n\n // rrweb does monkey patching on certain window functions such as CSSStyleSheet.proptype.insertRule,\n // and errors from external clients calling these functions can get suppressed. Styled components depend\n // on these errors being re-thrown.\n if (typedError._external_) {\n throw typedError;\n }\n\n this.loggerProvider.warn('Error while capturing replay: ', typedError.toString());\n // Return true so that we don't clutter user's consoles with internal rrweb errors\n return true;\n },\n plugins: await this.getRecordingPlugins(loggingConfig),\n });\n\n void this.addCustomRRWebEvent(CustomRRwebEvent.DEBUG_INFO);\n if (shouldLogMetadata) {\n void this.addCustomRRWebEvent(CustomRRwebEvent.METADATA, this.metadata);\n }\n } catch (error) {\n this.loggerProvider.warn('Failed to initialize session replay:', error);\n }\n }\n\n addCustomRRWebEvent = async (\n eventName: CustomRRwebEvent,\n eventData: { [key: string]: any } = {},\n addStorageInfo = true,\n ) => {\n try {\n let debugInfo: DebugInfo | undefined = undefined;\n const config = this.config;\n // Only add debug info for non-metadata events\n if (config && eventName !== CustomRRwebEvent.METADATA) {\n debugInfo = {\n config: getDebugConfig(config),\n version: VERSION,\n };\n if (addStorageInfo) {\n const storageSizeData = await getStorageSize();\n debugInfo = {\n ...storageSizeData,\n ...debugInfo,\n };\n }\n }\n // Check first to ensure we are recording\n if (this.recordCancelCallback && this.recordFunction) {\n this.recordFunction.addCustomEvent(eventName, {\n ...eventData,\n ...debugInfo,\n });\n } else {\n this.loggerProvider.debug(\n `Not able to add custom replay capture event ${eventName} due to no ongoing recording.`,\n );\n }\n } catch (e) {\n this.loggerProvider.debug('Error while adding custom replay capture event: ', e);\n }\n };\n\n stopRecordingEvents = () => {\n try {\n this.loggerProvider.log('Session Replay capture stopping.');\n this.recordCancelCallback && this.recordCancelCallback();\n this.recordCancelCallback = null;\n this.networkObservers?.stop();\n } catch (error) {\n const typedError = error as Error;\n this.loggerProvider.warn(`Error occurred while stopping replay capture: ${typedError.toString()}`);\n }\n };\n\n getDeviceId() {\n return this.identifiers?.deviceId;\n }\n\n getSessionId() {\n return this.identifiers?.sessionId;\n }\n\n async flush(useRetry = false) {\n return this.eventsManager?.flush(useRetry);\n }\n\n shutdown() {\n this.teardownEventListeners(true);\n this.stopRecordingEvents();\n this.sendEvents();\n }\n\n private mapSDKType(sdkType: string | undefined) {\n if (sdkType === 'plugin') {\n return '@amplitude/plugin-session-replay-browser';\n }\n\n if (sdkType === 'segment') {\n return '@amplitude/segment-session-replay-plugin';\n }\n\n return null;\n }\n\n private setMetadata(\n sessionId: string | number | undefined,\n joinedConfig: SessionReplayJoinedConfig,\n localConfig: SessionReplayLocalConfig,\n remoteConfig: SessionReplayRemoteConfig | undefined,\n replaySDKVersion: string | undefined,\n standaloneSDKVersion: string | undefined,\n sdkType: string | undefined,\n ) {\n const hashValue = sessionId?.toString() ? generateHashCode(sessionId.toString()) : undefined;\n\n this.metadata = {\n joinedConfig,\n localConfig,\n remoteConfig,\n sessionId,\n hashValue,\n sampleRate: joinedConfig.sampleRate,\n replaySDKType: this.mapSDKType(sdkType),\n replaySDKVersion,\n standaloneSDKType: '@amplitude/session-replay-browser',\n standaloneSDKVersion,\n };\n }\n\n private async initializeNetworkObservers(): Promise<void> {\n if (this.config?.loggingConfig?.network?.enabled && !this.networkObservers) {\n try {\n const { NetworkObservers: NetworkObserversClass } = await import('./observers');\n this.networkObservers = new NetworkObserversClass();\n } catch (error) {\n this.loggerProvider.warn('Failed to import or instantiate NetworkObservers:', error);\n }\n }\n }\n}\n"]}
1
+ {"version":3,"file":"session-replay.js","sourceRoot":"","sources":["../../src/session-replay.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n getAnalyticsConnector,\n getGlobalScope,\n ILogger,\n Logger,\n LogLevel,\n returnWrapper,\n SpecialEventType,\n} from '@amplitude/analytics-core';\n\n// Import only specific types to avoid pulling in the entire rrweb-types package\nimport { eventWithTime, EventType as RRWebEventType, scrollCallback } from '@amplitude/rrweb-types';\nimport { TargetingParameters } from '@amplitude/targeting';\nimport { createSessionReplayJoinedConfigGenerator } from './config/joined-config';\nimport {\n LoggingConfig,\n SessionReplayJoinedConfig,\n SessionReplayJoinedConfigGenerator,\n SessionReplayLocalConfig,\n SessionReplayMetadata,\n SessionReplayRemoteConfig,\n} from './config/types';\nimport {\n BLOCK_CLASS,\n CustomRRwebEvent,\n DEFAULT_SESSION_REPLAY_PROPERTY,\n INTERACTION_MAX_INTERVAL,\n INTERACTION_MIN_INTERVAL,\n MASK_TEXT_CLASS,\n SESSION_REPLAY_DEBUG_PROPERTY,\n} from './constants';\nimport { EventCompressor } from './events/event-compressor';\nimport { createEventsManager } from './events/events-manager';\nimport { MultiEventManager } from './events/multi-manager';\nimport { generateHashCode, getDebugConfig, getPageUrl, getStorageSize, isSessionInSample, maskFn } from './helpers';\nimport { clickBatcher, clickHook, clickNonBatcher } from './hooks/click';\nimport { ScrollWatcher } from './hooks/scroll';\nimport { SessionIdentifiers } from './identifiers';\nimport { SafeLoggerProvider } from './logger';\nimport { evaluateTargetingAndStore } from './targeting/targeting-manager';\nimport {\n AmplitudeSessionReplay,\n SessionReplayEventsManager as AmplitudeSessionReplayEventsManager,\n DebugInfo,\n EventsManagerWithType,\n EventType,\n SessionIdentifiers as ISessionIdentifiers,\n SessionReplayOptions,\n} from './typings/session-replay';\nimport { VERSION } from './version';\n\n// Import only the type for NetworkRequestEvent to keep type safety\nimport type { NetworkObservers, NetworkRequestEvent } from './observers';\nimport { createUrlTrackingPlugin } from './plugins/url-tracking-plugin';\nimport type { RecordFunction } from './utils/rrweb';\n\ntype PageLeaveFn = (e: PageTransitionEvent | Event) => void;\n\nexport class SessionReplay implements AmplitudeSessionReplay {\n name = '@amplitude/session-replay-browser';\n config: SessionReplayJoinedConfig | undefined;\n joinedConfigGenerator: SessionReplayJoinedConfigGenerator | undefined;\n identifiers: ISessionIdentifiers | undefined;\n eventsManager?: AmplitudeSessionReplayEventsManager<'replay' | 'interaction', string>;\n loggerProvider: ILogger;\n recordCancelCallback: ReturnType<RecordFunction> | null = null;\n eventCount = 0;\n eventCompressor: EventCompressor | undefined;\n sessionTargetingMatch = false;\n private lastTargetingParams?: Pick<TargetingParameters, 'event' | 'userProperties'>;\n private lastShouldRecordDecision?: boolean;\n\n // Visible for testing only\n pageLeaveFns: PageLeaveFn[] = [];\n private scrollHook?: scrollCallback;\n private networkObservers?: NetworkObservers;\n private metadata: SessionReplayMetadata | undefined;\n\n // Cache the dynamically imported record function\n private recordFunction: RecordFunction | null = null;\n\n constructor() {\n this.loggerProvider = new SafeLoggerProvider(new Logger());\n }\n\n init(apiKey: string, options: SessionReplayOptions) {\n return returnWrapper(this._init(apiKey, options));\n }\n\n private teardownEventListeners = (teardown: boolean) => {\n const globalScope = getGlobalScope();\n if (globalScope) {\n globalScope.removeEventListener('blur', this.blurListener);\n globalScope.removeEventListener('focus', this.focusListener);\n !teardown && globalScope.addEventListener('blur', this.blurListener);\n !teardown && globalScope.addEventListener('focus', this.focusListener);\n // prefer pagehide to unload events, this is the standard going forward. it is not\n // 100% reliable, but is bfcache-compatible.\n if (globalScope.self && 'onpagehide' in globalScope.self) {\n globalScope.removeEventListener('pagehide', this.pageLeaveListener);\n !teardown && globalScope.addEventListener('pagehide', this.pageLeaveListener);\n } else {\n // this has performance implications, but is the only way we can reliably send events\n // in browser that don't support pagehide.\n globalScope.removeEventListener('beforeunload', this.pageLeaveListener);\n !teardown && globalScope.addEventListener('beforeunload', this.pageLeaveListener);\n }\n }\n };\n\n protected async _init(apiKey: string, options: SessionReplayOptions) {\n this.loggerProvider = new SafeLoggerProvider(options.loggerProvider || new Logger());\n Object.prototype.hasOwnProperty.call(options, 'logLevel') &&\n this.loggerProvider.enable(options.logLevel as LogLevel);\n this.identifiers = new SessionIdentifiers({ sessionId: options.sessionId, deviceId: options.deviceId });\n this.joinedConfigGenerator = await createSessionReplayJoinedConfigGenerator(apiKey, options);\n const { joinedConfig, localConfig, remoteConfig } = await this.joinedConfigGenerator.generateJoinedConfig(\n this.identifiers.sessionId,\n );\n this.config = joinedConfig;\n\n this.setMetadata(\n options.sessionId,\n joinedConfig,\n localConfig,\n remoteConfig,\n options.version?.version,\n VERSION,\n options.version?.type,\n );\n\n if (options.sessionId && this.config.interactionConfig?.enabled) {\n const scrollWatcher = ScrollWatcher.default(\n {\n sessionId: options.sessionId,\n type: 'interaction',\n },\n this.config,\n );\n this.pageLeaveFns = [scrollWatcher.send(this.getDeviceId.bind(this)).bind(scrollWatcher)];\n this.scrollHook = scrollWatcher.hook.bind(scrollWatcher);\n }\n\n const managers: EventsManagerWithType<EventType, string>[] = [];\n let { storeType } = this.config;\n if (storeType === 'idb' && !getGlobalScope()?.indexedDB) {\n storeType = 'memory';\n this.loggerProvider.warn('Could not use preferred indexedDB storage, reverting to in memory option.');\n }\n this.loggerProvider.log(`Using ${storeType} for event storage.`);\n try {\n const rrwebEventManager = await createEventsManager<'replay'>({\n config: this.config,\n sessionId: this.identifiers.sessionId,\n type: 'replay',\n storeType,\n });\n managers.push({ name: 'replay', manager: rrwebEventManager });\n } catch (error) {\n const typedError = error as Error;\n this.loggerProvider.warn(`Error occurred while creating replay events manager: ${typedError.toString()}`);\n }\n\n if (this.config.interactionConfig?.enabled) {\n const payloadBatcher = this.config.interactionConfig.batch ? clickBatcher : clickNonBatcher;\n try {\n const interactionEventManager = await createEventsManager<'interaction'>({\n config: this.config,\n sessionId: this.identifiers.sessionId,\n type: 'interaction',\n minInterval: this.config.interactionConfig.trackEveryNms ?? INTERACTION_MIN_INTERVAL,\n maxInterval: INTERACTION_MAX_INTERVAL,\n payloadBatcher,\n storeType,\n });\n managers.push({ name: 'interaction', manager: interactionEventManager });\n } catch (error) {\n const typedError = error as Error;\n this.loggerProvider.warn(`Error occurred while creating interaction events manager: ${typedError.toString()}`);\n }\n }\n\n this.eventsManager = new MultiEventManager<'replay' | 'interaction', string>(...managers);\n // To prevent too many threads.\n if (this.eventCompressor) {\n this.eventCompressor.terminate();\n }\n this.eventCompressor = new EventCompressor(this.eventsManager, this.config, this.getDeviceId());\n\n await this.initializeNetworkObservers();\n\n this.loggerProvider.log('Installing @amplitude/session-replay-browser.');\n\n this.teardownEventListeners(false);\n\n await this.evaluateTargetingAndCapture({ userProperties: options.userProperties }, true);\n }\n\n setSessionId(sessionId: string | number, deviceId?: string) {\n return returnWrapper(this.asyncSetSessionId(sessionId, deviceId));\n }\n\n async asyncSetSessionId(\n sessionId: string | number,\n deviceId?: string,\n options?: { userProperties?: { [key: string]: any } },\n ) {\n this.sessionTargetingMatch = false;\n this.lastShouldRecordDecision = undefined; // Reset targeting decision for new session\n\n const previousSessionId = this.identifiers && this.identifiers.sessionId;\n if (previousSessionId) {\n this.sendEvents(previousSessionId);\n }\n\n const deviceIdForReplayId = deviceId || this.getDeviceId();\n this.identifiers = new SessionIdentifiers({\n sessionId: sessionId,\n deviceId: deviceIdForReplayId,\n });\n\n // If there is no previous session id, SDK is being initialized for the first time,\n // and config was just fetched in initialization, so no need to fetch it a second time\n if (this.joinedConfigGenerator && previousSessionId) {\n const { joinedConfig } = await this.joinedConfigGenerator.generateJoinedConfig(this.identifiers.sessionId);\n this.config = joinedConfig;\n }\n\n if (this.config?.targetingConfig) {\n await this.evaluateTargetingAndCapture({ userProperties: options?.userProperties });\n } else {\n await this.recordEvents();\n }\n }\n\n getSessionReplayProperties() {\n const config = this.config;\n const identifiers = this.identifiers;\n if (!config || !identifiers) {\n this.loggerProvider.warn('Session replay init has not been called, cannot get session replay properties.');\n return {};\n }\n\n const shouldRecord = this.getShouldRecord();\n let eventProperties: { [key: string]: string | null } = {};\n\n if (shouldRecord) {\n eventProperties = {\n [DEFAULT_SESSION_REPLAY_PROPERTY]: identifiers.sessionReplayId ? identifiers.sessionReplayId : null,\n };\n if (config.debugMode) {\n eventProperties[SESSION_REPLAY_DEBUG_PROPERTY] = JSON.stringify({\n appHash: generateHashCode(config.apiKey).toString(),\n });\n }\n }\n\n void this.addCustomRRWebEvent(\n CustomRRwebEvent.GET_SR_PROPS,\n {\n shouldRecord,\n eventProperties: eventProperties,\n },\n this.eventCount === 10,\n );\n if (this.eventCount === 10) {\n this.eventCount = 0;\n }\n this.eventCount++;\n\n return eventProperties;\n }\n\n blurListener = () => {\n this.sendEvents();\n };\n\n focusListener = () => {\n // Restart recording on focus to ensure that when user\n // switches tabs, we take a full snapshot\n void this.recordEvents(false);\n };\n\n /**\n * This is an instance member so that if init is called multiple times\n * it doesn't add another listener to the page leave event. This is to\n * prevent duplicate listener actions from firing.\n */\n private pageLeaveListener = (e: PageTransitionEvent | Event) => {\n this.pageLeaveFns.forEach((fn) => {\n fn(e);\n });\n };\n\n evaluateTargetingAndCapture = async (\n targetingParams: Pick<TargetingParameters, 'event' | 'userProperties'>,\n isInit = false,\n ) => {\n if (!this.identifiers || !this.identifiers.sessionId || !this.config) {\n if (this.identifiers && !this.identifiers.sessionId) {\n this.loggerProvider.log('Session ID has not been set yet, cannot evaluate targeting for Session Replay.');\n } else {\n this.loggerProvider.warn('Session replay init has not been called, cannot evaluate targeting.');\n }\n return;\n }\n\n // Handle cases where there's no targeting config\n if (!this.config.targetingConfig) {\n if (isInit) {\n this.loggerProvider.log('Targeting config has not been set yet, cannot evaluate targeting.');\n } else {\n this.loggerProvider.log('No targeting config set, skipping initialization/recording for event.');\n return;\n }\n }\n\n // Store targeting parameters for use in getShouldRecord\n this.lastTargetingParams = targetingParams;\n\n if (this.config.targetingConfig && !this.sessionTargetingMatch) {\n let eventForTargeting = targetingParams.event;\n if (\n eventForTargeting &&\n Object.values(SpecialEventType).includes(eventForTargeting.event_type as SpecialEventType)\n ) {\n eventForTargeting = undefined;\n }\n\n // We're setting this on this class because fetching the value from idb\n // is async, we need to access this value synchronously (for record\n // and for getSessionReplayProperties - both synchronous fns)\n this.sessionTargetingMatch = await evaluateTargetingAndStore({\n sessionId: this.identifiers.sessionId,\n targetingConfig: this.config.targetingConfig,\n loggerProvider: this.loggerProvider,\n apiKey: this.config.apiKey,\n targetingParams: { userProperties: targetingParams.userProperties, event: eventForTargeting },\n });\n\n // Log the targeting config to debug\n this.loggerProvider.debug(\n JSON.stringify(\n {\n name: 'targeted replay capture config',\n sessionTargetingMatch: this.sessionTargetingMatch,\n event: eventForTargeting,\n targetingParams: targetingParams,\n },\n null,\n 2,\n ),\n );\n }\n\n if (isInit) {\n void this.initialize(true);\n } else {\n await this.recordEvents();\n }\n };\n\n sendEvents(sessionId?: string | number) {\n const sessionIdToSend = sessionId || this.identifiers?.sessionId;\n const deviceId = this.getDeviceId();\n this.eventsManager &&\n sessionIdToSend &&\n deviceId &&\n this.eventsManager.sendCurrentSequenceEvents({ sessionId: sessionIdToSend, deviceId });\n }\n\n async initialize(shouldSendStoredEvents = false) {\n if (!this.identifiers?.sessionId) {\n this.loggerProvider.log(`Session is not being recorded due to lack of session id.`);\n return Promise.resolve();\n }\n\n const deviceId = this.getDeviceId();\n if (!deviceId) {\n this.loggerProvider.log(`Session is not being recorded due to lack of device id.`);\n return Promise.resolve();\n }\n this.eventsManager && shouldSendStoredEvents && void this.eventsManager.sendStoredEvents({ deviceId });\n\n return this.recordEvents();\n }\n\n shouldOptOut() {\n let identityStoreOptOut: boolean | undefined;\n if (this.config?.instanceName) {\n const identityStore = getAnalyticsConnector(this.config.instanceName).identityStore;\n identityStoreOptOut = identityStore.getIdentity().optOut;\n }\n\n return identityStoreOptOut !== undefined ? identityStoreOptOut : this.config?.optOut;\n }\n\n getShouldRecord() {\n if (!this.identifiers || !this.config || !this.identifiers.sessionId) {\n this.loggerProvider.warn(`Session is not being recorded due to lack of config, please call sessionReplay.init.`);\n return false;\n }\n if (!this.config.captureEnabled) {\n this.loggerProvider.log(\n `Session ${this.identifiers.sessionId} not being captured due to capture being disabled for project or because the remote config could not be fetched.`,\n );\n return false;\n }\n\n if (this.shouldOptOut()) {\n this.loggerProvider.log(`Opting session ${this.identifiers.sessionId} out of recording due to optOut config.`);\n return false;\n }\n\n let shouldRecord = false;\n let message = '';\n let matched = false;\n\n // If targetingConfig exists, we'll use the sessionTargetingMatch to determine whether to record\n // Otherwise, we'll evaluate the session against the overall sample rate\n if (this.config.targetingConfig) {\n if (!this.sessionTargetingMatch) {\n message = `Not capturing replays for session ${this.identifiers.sessionId} due to not matching targeting conditions.`;\n this.loggerProvider.log(message);\n shouldRecord = false;\n matched = false;\n } else {\n message = `Capturing replays for session ${this.identifiers.sessionId} due to matching targeting conditions.`;\n this.loggerProvider.log(message);\n shouldRecord = true;\n matched = true;\n }\n } else {\n const isInSample = isSessionInSample(this.identifiers.sessionId, this.config.sampleRate);\n if (!isInSample) {\n message = `Opting session ${this.identifiers.sessionId} out of recording due to sample rate.`;\n this.loggerProvider.log(message);\n shouldRecord = false;\n matched = false;\n } else {\n shouldRecord = true;\n matched = true;\n }\n }\n\n // Only send custom rrweb event for targeting decision when the decision changes\n if (this.lastShouldRecordDecision !== shouldRecord && this.config.targetingConfig) {\n void this.addCustomRRWebEvent(CustomRRwebEvent.TARGETING_DECISION, {\n message,\n sessionId: this.identifiers.sessionId,\n matched,\n targetingParams: this.lastTargetingParams,\n });\n this.lastShouldRecordDecision = shouldRecord;\n }\n\n return shouldRecord;\n }\n\n getBlockSelectors(): string | string[] | undefined {\n // For some reason, this defaults to empty array ([]) if undefined in the compiled script.\n // Empty arrays cause errors when being evaluated in Safari.\n // Force the selector to be undefined if it's an empty array.\n const blockSelector = this.config?.privacyConfig?.blockSelector ?? [];\n if (blockSelector.length === 0) {\n return undefined;\n }\n return blockSelector;\n }\n\n getMaskTextSelectors(): string | undefined {\n if (this.config?.privacyConfig?.defaultMaskLevel === 'conservative') {\n return '*';\n }\n\n const maskSelector = this.config?.privacyConfig?.maskSelector;\n if (!maskSelector) {\n return;\n }\n\n return maskSelector as unknown as string;\n }\n\n async getRecordingPlugins(loggingConfig: LoggingConfig | undefined) {\n const plugins = [];\n\n // Add URL tracking plugin\n try {\n const urlTrackingPlugin = createUrlTrackingPlugin({\n ugcFilterRules: this.config?.interactionConfig?.ugcFilterRules || [],\n enablePolling: this.config?.enableUrlChangePolling || false,\n pollingInterval: this.config?.urlChangePollingInterval,\n captureDocumentTitle: this.config?.captureDocumentTitle,\n });\n\n plugins.push(urlTrackingPlugin);\n } catch (error) {\n this.loggerProvider.warn('Failed to create URL tracking plugin:', error);\n }\n\n // Default plugin settings -\n // {\n // level: ['info', 'log', 'warn', 'error'],\n // lengthThreshold: 10000,\n // stringifyOptions: {\n // stringLengthLimit: undefined,\n // numOfKeysLimit: 50,\n // depthOfLimit: 4,\n // },\n // logger: window.console,\n // }\n if (loggingConfig?.console?.enabled) {\n try {\n // Dynamic import keeps console plugin separate and only loads when needed\n const { getRecordConsolePlugin } = await import('@amplitude/rrweb-plugin-console-record');\n plugins.push(getRecordConsolePlugin({ level: loggingConfig.console.levels }));\n } catch (error) {\n this.loggerProvider.warn('Failed to load console plugin:', error);\n }\n }\n\n return plugins.length > 0 ? plugins : undefined;\n }\n\n private async getRecordFunction(): Promise<RecordFunction | null> {\n if (this.recordFunction) {\n return this.recordFunction;\n }\n\n try {\n const { record } = await import('@amplitude/rrweb-record');\n this.recordFunction = record;\n return record;\n } catch (error) {\n this.loggerProvider.warn('Failed to load rrweb-record module:', error);\n return null;\n }\n }\n\n async recordEvents(shouldLogMetadata = true) {\n const config = this.config;\n const shouldRecord = this.getShouldRecord();\n const sessionId = this.identifiers?.sessionId;\n if (!shouldRecord || !sessionId || !config) {\n return;\n }\n this.stopRecordingEvents();\n\n const recordFunction = await this.getRecordFunction();\n\n // May be undefined if cannot import rrweb-record\n if (!recordFunction) {\n return;\n }\n\n await this.initializeNetworkObservers();\n\n this.networkObservers?.start((event: NetworkRequestEvent) => {\n void this.addCustomRRWebEvent(CustomRRwebEvent.FETCH_REQUEST, event);\n });\n const { privacyConfig, interactionConfig, loggingConfig } = config;\n\n const hooks = interactionConfig?.enabled\n ? {\n mouseInteraction:\n this.eventsManager &&\n clickHook(this.loggerProvider, {\n eventsManager: this.eventsManager,\n sessionId,\n deviceIdFn: this.getDeviceId.bind(this),\n mirror: recordFunction.mirror,\n ugcFilterRules: interactionConfig.ugcFilterRules ?? [],\n }),\n scroll: this.scrollHook,\n }\n : {};\n\n const ugcFilterRules =\n interactionConfig?.enabled && interactionConfig.ugcFilterRules ? interactionConfig.ugcFilterRules : [];\n\n this.loggerProvider.log(`Session Replay capture beginning for ${sessionId}.`);\n\n try {\n this.recordCancelCallback = recordFunction({\n emit: (event: eventWithTime) => {\n if (this.shouldOptOut()) {\n this.loggerProvider.log(`Opting session ${sessionId} out of recording due to optOut config.`);\n this.stopRecordingEvents();\n this.sendEvents();\n return;\n }\n\n if (event.type === RRWebEventType.Meta) {\n event.data.href = getPageUrl(event.data.href, ugcFilterRules);\n }\n\n if (this.eventCompressor) {\n // Schedule processing during idle time if the browser supports requestIdleCallback\n this.eventCompressor.enqueueEvent(event, sessionId);\n }\n },\n inlineStylesheet: config.shouldInlineStylesheet,\n hooks,\n maskAllInputs: true,\n maskTextClass: MASK_TEXT_CLASS,\n blockClass: BLOCK_CLASS,\n blockSelector: this.getBlockSelectors() as string | undefined,\n applyBackgroundColorToBlockedElements: config.applyBackgroundColorToBlockedElements,\n maskInputFn: maskFn('input', privacyConfig),\n maskTextFn: maskFn('text', privacyConfig),\n maskTextSelector: this.getMaskTextSelectors(),\n recordCanvas: false,\n slimDOMOptions: {\n script: config.omitElementTags?.script,\n comment: config.omitElementTags?.comment,\n },\n errorHandler: (error: unknown) => {\n const typedError = error as Error & { _external_?: boolean };\n\n // styled-components relies on this error being thrown and bubbled up, rrweb is otherwise suppressing it\n if (typedError.message.includes('insertRule') && typedError.message.includes('CSSStyleSheet')) {\n throw typedError;\n }\n\n // rrweb does monkey patching on certain window functions such as CSSStyleSheet.proptype.insertRule,\n // and errors from external clients calling these functions can get suppressed. Styled components depend\n // on these errors being re-thrown.\n if (typedError._external_) {\n throw typedError;\n }\n\n this.loggerProvider.warn('Error while capturing replay: ', typedError.toString());\n // Return true so that we don't clutter user's consoles with internal rrweb errors\n return true;\n },\n plugins: await this.getRecordingPlugins(loggingConfig),\n });\n\n void this.addCustomRRWebEvent(CustomRRwebEvent.DEBUG_INFO);\n if (shouldLogMetadata) {\n void this.addCustomRRWebEvent(CustomRRwebEvent.METADATA, this.metadata);\n }\n } catch (error) {\n this.loggerProvider.warn('Failed to initialize session replay:', error);\n }\n }\n\n addCustomRRWebEvent = async (\n eventName: CustomRRwebEvent,\n eventData: { [key: string]: any } = {},\n addStorageInfo = true,\n ) => {\n try {\n let debugInfo: DebugInfo | undefined = undefined;\n const config = this.config;\n // Only add debug info for non-metadata events\n if (config && eventName !== CustomRRwebEvent.METADATA) {\n debugInfo = {\n config: getDebugConfig(config),\n version: VERSION,\n };\n if (addStorageInfo) {\n const storageSizeData = await getStorageSize();\n debugInfo = {\n ...storageSizeData,\n ...debugInfo,\n };\n }\n }\n // Check first to ensure we are recording\n if (this.recordCancelCallback && this.recordFunction) {\n this.recordFunction.addCustomEvent(eventName, {\n ...eventData,\n ...debugInfo,\n });\n } else {\n this.loggerProvider.debug(\n `Not able to add custom replay capture event ${eventName} due to no ongoing recording.`,\n );\n }\n } catch (e) {\n this.loggerProvider.debug('Error while adding custom replay capture event: ', e);\n }\n };\n\n stopRecordingEvents = () => {\n try {\n this.loggerProvider.log('Session Replay capture stopping.');\n this.recordCancelCallback && this.recordCancelCallback();\n this.recordCancelCallback = null;\n this.networkObservers?.stop();\n } catch (error) {\n const typedError = error as Error;\n this.loggerProvider.warn(`Error occurred while stopping replay capture: ${typedError.toString()}`);\n }\n };\n\n getDeviceId() {\n return this.identifiers?.deviceId;\n }\n\n getSessionId() {\n return this.identifiers?.sessionId;\n }\n\n async flush(useRetry = false) {\n return this.eventsManager?.flush(useRetry);\n }\n\n shutdown() {\n this.teardownEventListeners(true);\n this.stopRecordingEvents();\n this.sendEvents();\n }\n\n private mapSDKType(sdkType: string | undefined) {\n if (sdkType === 'plugin') {\n return '@amplitude/plugin-session-replay-browser';\n }\n\n if (sdkType === 'segment') {\n return '@amplitude/segment-session-replay-plugin';\n }\n\n return null;\n }\n\n private setMetadata(\n sessionId: string | number | undefined,\n joinedConfig: SessionReplayJoinedConfig,\n localConfig: SessionReplayLocalConfig,\n remoteConfig: SessionReplayRemoteConfig | undefined,\n replaySDKVersion: string | undefined,\n standaloneSDKVersion: string | undefined,\n sdkType: string | undefined,\n ) {\n const hashValue = sessionId?.toString() ? generateHashCode(sessionId.toString()) : undefined;\n\n this.metadata = {\n joinedConfig,\n localConfig,\n remoteConfig,\n sessionId,\n hashValue,\n sampleRate: joinedConfig.sampleRate,\n replaySDKType: this.mapSDKType(sdkType),\n replaySDKVersion,\n standaloneSDKType: '@amplitude/session-replay-browser',\n standaloneSDKVersion,\n };\n }\n\n private async initializeNetworkObservers(): Promise<void> {\n if (this.config?.loggingConfig?.network?.enabled && !this.networkObservers) {\n try {\n const { NetworkObservers: NetworkObserversClass } = await import('./observers');\n this.networkObservers = new NetworkObserversClass();\n } catch (error) {\n this.loggerProvider.warn('Failed to import or instantiate NetworkObservers:', error);\n }\n }\n }\n}\n"]}
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "1.28.10";
1
+ export declare const VERSION = "1.28.12";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,3 +1,3 @@
1
1
  // Autogenerated by `yarn version-file`. DO NOT EDIT
2
- export var VERSION = '1.28.10';
2
+ export var VERSION = '1.28.12';
3
3
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,MAAM,CAAC,IAAM,OAAO,GAAG,SAAS,CAAC","sourcesContent":["// Autogenerated by `yarn version-file`. DO NOT EDIT\nexport const VERSION = '1.28.10';\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,MAAM,CAAC,IAAM,OAAO,GAAG,SAAS,CAAC","sourcesContent":["// Autogenerated by `yarn version-file`. DO NOT EDIT\nexport const VERSION = '1.28.12';\n"]}
@@ -0,0 +1,2 @@
1
+ import{_ as e,a as t,b as n,c as r,d as i,o}from"./targeting-min.js";var s,a;!function(e){e.SET="$set",e.SET_ONCE="$setOnce",e.ADD="$add",e.APPEND="$append",e.PREPEND="$prepend",e.REMOVE="$remove",e.PREINSERT="$preInsert",e.POSTINSERT="$postInsert",e.UNSET="$unset",e.CLEAR_ALL="$clearAll"}(s||(s={})),function(e){e.IDENTIFY="$identify",e.GROUP_IDENTIFY="$groupidentify",e.REVENUE="revenue_amount"}(a||(a={}));var l,c="".concat("AMP","_unsent"),d="$default_instance",u="https://api2.amplitude.com/2/httpapi";!function(e){e.Unknown="unknown",e.Skipped="skipped",e.Success="success",e.RateLimit="rate_limit",e.PayloadTooLarge="payload_too_large",e.Invalid="invalid",e.Failed="failed",e.Timeout="Timeout",e.SystemError="SystemError"}(l||(l={}));var h,v=function(){var e="ampIntegrationContext";return"undefined"!=typeof globalThis&&void 0!==globalThis[e]?globalThis[e]:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof self?self:"undefined"!=typeof global?global:void 0},g=function(e){return{promise:e||Promise.resolve()}};!function(e){e[e.None=0]="None",e[e.Error=1]="Error",e[e.Warn=2]="Warn",e[e.Verbose=3]="Verbose",e[e.Debug=4]="Debug"}(h||(h={}));var f="Amplitude Logger ",p=function(){function e(){this.logLevel=h.None}return e.prototype.disable=function(){this.logLevel=h.None},e.prototype.enable=function(e){void 0===e&&(e=h.Warn),this.logLevel=e},e.prototype.log=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this.logLevel<h.Verbose||console.log("".concat(f,"[Log]: ").concat(e.join(" ")))},e.prototype.warn=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this.logLevel<h.Warn||console.warn("".concat(f,"[Warn]: ").concat(e.join(" ")))},e.prototype.error=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this.logLevel<h.Error||console.error("".concat(f,"[Error]: ").concat(e.join(" ")))},e.prototype.debug=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this.logLevel<h.Debug||console.log("".concat(f,"[Debug]: ").concat(e.join(" ")))},e}(),m=function(){return{flushMaxRetries:12,flushQueueSize:200,flushIntervalMillis:1e4,instanceName:d,logLevel:h.Warn,loggerProvider:new p,offline:!1,optOut:!1,serverUrl:u,serverZone:"US",useBatch:!1}},y=function(){function e(e){var t,n,r,i;this._optOut=!1;var o=m();this.apiKey=e.apiKey,this.flushIntervalMillis=null!==(t=e.flushIntervalMillis)&&void 0!==t?t:o.flushIntervalMillis,this.flushMaxRetries=e.flushMaxRetries||o.flushMaxRetries,this.flushQueueSize=e.flushQueueSize||o.flushQueueSize,this.instanceName=e.instanceName||o.instanceName,this.loggerProvider=e.loggerProvider||o.loggerProvider,this.logLevel=null!==(n=e.logLevel)&&void 0!==n?n:o.logLevel,this.minIdLength=e.minIdLength,this.plan=e.plan,this.ingestionMetadata=e.ingestionMetadata,this.offline=void 0!==e.offline?e.offline:o.offline,this.optOut=null!==(r=e.optOut)&&void 0!==r?r:o.optOut,this.serverUrl=e.serverUrl,this.serverZone=e.serverZone||o.serverZone,this.storageProvider=e.storageProvider,this.transportProvider=e.transportProvider,this.useBatch=null!==(i=e.useBatch)&&void 0!==i?i:o.useBatch,this.loggerProvider.enable(this.logLevel);var s=b(e.serverUrl,e.serverZone,e.useBatch);this.serverZone=s.serverZone,this.serverUrl=s.serverUrl}return Object.defineProperty(e.prototype,"optOut",{get:function(){return this._optOut},set:function(e){this._optOut=e},enumerable:!1,configurable:!0}),e}(),S=function(e,t){return"EU"===e?t?"https://api.eu.amplitude.com/batch":"https://api.eu.amplitude.com/2/httpapi":t?"https://api2.amplitude.com/batch":u},b=function(e,t,n){if(void 0===e&&(e=""),void 0===t&&(t=m().serverZone),void 0===n&&(n=m().useBatch),e)return{serverUrl:e,serverZone:void 0};var r=["US","EU"].includes(t)?t:m().serverZone;return{serverZone:r,serverUrl:S(r,n)}},w=function(){function e(){}return e.prototype.getApplicationContext=function(){return{versionName:this.versionName,language:I(),platform:"Web",os:void 0,deviceModel:void 0}},e}(),I=function(){return"undefined"!=typeof navigator&&(navigator.languages&&navigator.languages[0]||navigator.language)||""},C=function(){function e(){this.queue=[]}return e.prototype.logEvent=function(e){this.receiver?this.receiver(e):this.queue.length<512&&this.queue.push(e)},e.prototype.setEventReceiver=function(e){this.receiver=e,this.queue.length>0&&(this.queue.forEach((function(t){e(t)})),this.queue=[])},e}(),E=function(){return E=Object.assign||function(e){for(var t,n=1,r=arguments.length;n<r;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},E.apply(this,arguments)};function P(e){var t="function"==typeof Symbol&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function T(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)s.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return s}"function"==typeof SuppressedError&&SuppressedError;var _=function(e,t){var n,r,i=typeof e;if(i!==typeof t)return!1;try{for(var o=P(["string","number","boolean","undefined"]),s=o.next();!s.done;s=o.next()){if(s.value===i)return e===t}}catch(e){n={error:e}}finally{try{s&&!s.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}if(null==e&&null==t)return!0;if(null==e||null==t)return!1;if(e.length!==t.length)return!1;var a=Array.isArray(e),l=Array.isArray(t);if(a!==l)return!1;if(!a||!l){var c=Object.keys(e).sort(),d=Object.keys(t).sort();if(!_(c,d))return!1;var u=!0;return Object.keys(e).forEach((function(n){_(e[n],t[n])||(u=!1)})),u}for(var h=0;h<e.length;h++)if(!_(e[h],t[h]))return!1;return!0};Object.entries||(Object.entries=function(e){for(var t=Object.keys(e),n=t.length,r=new Array(n);n--;)r[n]=[t[n],e[t[n]]];return r});var k,R=function(){function e(){this.identity={userProperties:{}},this.listeners=new Set}return e.prototype.editIdentity=function(){var e=this,t=E({},this.identity.userProperties),n=E(E({},this.identity),{userProperties:t});return{setUserId:function(e){return n.userId=e,this},setDeviceId:function(e){return n.deviceId=e,this},setUserProperties:function(e){return n.userProperties=e,this},setOptOut:function(e){return n.optOut=e,this},updateUserProperties:function(e){var t,r,i,o,s,a,l=n.userProperties||{};try{for(var c=P(Object.entries(e)),d=c.next();!d.done;d=c.next()){var u=T(d.value,2),h=u[0],v=u[1];switch(h){case"$set":try{for(var g=(i=void 0,P(Object.entries(v))),f=g.next();!f.done;f=g.next()){var p=T(f.value,2),m=p[0],y=p[1];l[m]=y}}catch(e){i={error:e}}finally{try{f&&!f.done&&(o=g.return)&&o.call(g)}finally{if(i)throw i.error}}break;case"$unset":try{for(var S=(s=void 0,P(Object.keys(v))),b=S.next();!b.done;b=S.next()){delete l[m=b.value]}}catch(e){s={error:e}}finally{try{b&&!b.done&&(a=S.return)&&a.call(S)}finally{if(s)throw s.error}}break;case"$clearAll":l={}}}}catch(e){t={error:e}}finally{try{d&&!d.done&&(r=c.return)&&r.call(c)}finally{if(t)throw t.error}}return n.userProperties=l,this},commit:function(){return e.setIdentity(n),this}}},e.prototype.getIdentity=function(){return E({},this.identity)},e.prototype.setIdentity=function(e){var t=E({},this.identity);this.identity=E({},e),_(t,this.identity)||this.listeners.forEach((function(t){t(e)}))},e.prototype.addIdentityListener=function(e){this.listeners.add(e)},e.prototype.removeIdentityListener=function(e){this.listeners.delete(e)},e}(),O="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof global?global:self,x=function(){function e(){this.identityStore=new R,this.eventBridge=new C,this.applicationContextProvider=new w}return e.getInstance=function(t){return O.analyticsConnectorInstances||(O.analyticsConnectorInstances={}),O.analyticsConnectorInstances[t]||(O.analyticsConnectorInstances[t]=new e),O.analyticsConnectorInstances[t]},e}(),M=function(e,t,n,r,i){return void 0===i&&(i=null),function(){for(var o=[],s=0;s<arguments.length;s++)o[s]=arguments[s];var a=n(),l=a.logger,c=a.logLevel;if(c&&c<h.Debug||!c||!l)return e.apply(i,o);var d,u={type:"invoke public method",name:t,args:o,stacktrace:(d=1,void 0===d&&(d=0),((new Error).stack||"").split("\n").slice(2+d).map((function(e){return e.trim()}))),time:{start:(new Date).toISOString()},states:{}};r&&u.states&&(u.states.before=r());var v=e.apply(i,o);return v&&v.promise?v.promise.then((function(){r&&u.states&&(u.states.after=r()),u.time&&(u.time.end=(new Date).toISOString()),l.debug(JSON.stringify(u,null,2))})):(r&&u.states&&(u.states.after=r()),u.time&&(u.time.end=(new Date).toISOString()),l.debug(JSON.stringify(u,null,2))),v}},q=function(){function e(){}return e.prototype.send=function(e,t){return Promise.resolve(null)},e.prototype.buildResponse=function(e){var t,n,r,i,o,s,a,c,d,u,h,v,g,f,p,m,y,S,b,w,I,C;if("object"!=typeof e)return null;var E=e.code||0,P=this.buildStatus(E);switch(P){case l.Success:return{status:P,statusCode:E,body:{eventsIngested:null!==(t=e.events_ingested)&&void 0!==t?t:0,payloadSizeBytes:null!==(n=e.payload_size_bytes)&&void 0!==n?n:0,serverUploadTime:null!==(r=e.server_upload_time)&&void 0!==r?r:0}};case l.Invalid:return{status:P,statusCode:E,body:{error:null!==(i=e.error)&&void 0!==i?i:"",missingField:null!==(o=e.missing_field)&&void 0!==o?o:"",eventsWithInvalidFields:null!==(s=e.events_with_invalid_fields)&&void 0!==s?s:{},eventsWithMissingFields:null!==(a=e.events_with_missing_fields)&&void 0!==a?a:{},eventsWithInvalidIdLengths:null!==(c=e.events_with_invalid_id_lengths)&&void 0!==c?c:{},epsThreshold:null!==(d=e.eps_threshold)&&void 0!==d?d:0,exceededDailyQuotaDevices:null!==(u=e.exceeded_daily_quota_devices)&&void 0!==u?u:{},silencedDevices:null!==(h=e.silenced_devices)&&void 0!==h?h:[],silencedEvents:null!==(v=e.silenced_events)&&void 0!==v?v:[],throttledDevices:null!==(g=e.throttled_devices)&&void 0!==g?g:{},throttledEvents:null!==(f=e.throttled_events)&&void 0!==f?f:[]}};case l.PayloadTooLarge:return{status:P,statusCode:E,body:{error:null!==(p=e.error)&&void 0!==p?p:""}};case l.RateLimit:return{status:P,statusCode:E,body:{error:null!==(m=e.error)&&void 0!==m?m:"",epsThreshold:null!==(y=e.eps_threshold)&&void 0!==y?y:0,throttledDevices:null!==(S=e.throttled_devices)&&void 0!==S?S:{},throttledUsers:null!==(b=e.throttled_users)&&void 0!==b?b:{},exceededDailyQuotaDevices:null!==(w=e.exceeded_daily_quota_devices)&&void 0!==w?w:{},exceededDailyQuotaUsers:null!==(I=e.exceeded_daily_quota_users)&&void 0!==I?I:{},throttledEvents:null!==(C=e.throttled_events)&&void 0!==C?C:[]}};case l.Timeout:default:return{status:P,statusCode:E}}},e.prototype.buildStatus=function(e){return e>=200&&e<300?l.Success:429===e?l.RateLimit:413===e?l.PayloadTooLarge:408===e?l.Timeout:e>=400&&e<500?l.Invalid:e>=500?l.Failed:l.Unknown},e}(),L=function(r){function i(){return null!==r&&r.apply(this,arguments)||this}return e(i,r),i.prototype.send=function(e,r){return t(this,void 0,void 0,(function(){var t,i,o;return n(this,(function(n){switch(n.label){case 0:if("undefined"==typeof fetch)throw new Error("FetchTransport is not supported");return t={headers:{"Content-Type":"application/json",Accept:"*/*"},body:JSON.stringify(r),method:"POST"},[4,fetch(e,t)];case 1:return[4,(i=n.sent()).text()];case 2:o=n.sent();try{return[2,this.buildResponse(JSON.parse(o))]}catch(e){return[2,this.buildResponse({code:i.status})]}return[2]}}))}))},i}(q);!function(e){e.US="US",e.EU="EU",e.STAGING="STAGING"}(k||(k={}));const N="[Amplitude]",D=`${N} Session Replay ID`,$=k.US,j={enabled:!0},U=`${N} Session Replay Debug`,F="amp-mask";var A;!function(e){e.GET_SR_PROPS="get-sr-props",e.DEBUG_INFO="debug-info",e.FETCH_REQUEST="fetch-request",e.METADATA="metadata",e.TARGETING_DECISION="targeting-decision"}(A||(A={}));class K{constructor(e){this.logger=e,this.log=this.getSafeMethod("log"),this.warn=this.getSafeMethod("warn"),this.error=this.getSafeMethod("error"),this.debug=this.getSafeMethod("debug")}getSafeMethod(e){var t;if(!this.logger)return()=>{};const n=this.logger[e];if("function"==typeof n){return(null!==(t=n.__rrweb_original__)&&void 0!==t?t:n).bind(this.logger)}return()=>{}}enable(e){this.logger.enable(e)}disable(){this.logger.disable()}}const B="medium";const W=(e,t,n)=>{switch(t){case"light":{if("input"!==e)return!0;const t=n?function(e){const t=e.type;return e.hasAttribute("data-rr-is-password")?"password":t?t.toLowerCase():null}(n):"";return!!t&&(!!["password","hidden","email","tel"].includes(t)||!!n.autocomplete.startsWith("cc-"))}case"medium":case"conservative":return!0;default:return W(e,B,n)}},z=(e,t)=>(n,r)=>((e,t={defaultMaskLevel:B},n)=>{var r,i,o;if(n){if(n.closest("."+F))return!0;const e=(null!==(r=t.maskSelector)&&void 0!==r?r:[]).some((e=>n.closest(e)));if(e)return!0;if(n.closest(".amp-unmask"))return!1;const o=(null!==(i=t.unmaskSelector)&&void 0!==i?i:[]).some((e=>n.closest(e)));if(o)return!1}return W(e,null!==(o=t.defaultMaskLevel)&&void 0!==o?o:B,n)})(e,t,r)?n.replace(/[^\s]/g,"*"):n,G=function(e){let t=0;if(0===e.length)return t;for(let n=0;n<e.length;n++){t=(t<<5)-t+e.charCodeAt(n),t|=0}return t},Q=(e,t)=>t||(e===k.STAGING?"https://api-sr.stag2.amplitude.com/sessions/v2/track":e===k.EU?"https://api-sr.eu.amplitude.com/sessions/v2/track":"https://api-sr.amplitude.com/sessions/v2/track"),H=e=>{const t=e.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${t}$`)},J=(e,t)=>{for(const n of t){const t=H(n.selector);if(t.test(e))return e.replace(t,n.replacement)}return e},V=()=>t(void 0,void 0,void 0,(function*(){try{const e=v();if(e){const{usage:t,quota:n,usageDetails:r}=yield e.navigator.storage.estimate(),i=t?Math.round(t/1024):0;return{totalStorageSize:i,percentOfQuota:t&&n?Math.round(1e3*(t/n+Number.EPSILON))/1e3:0,usageDetails:JSON.stringify(r)}}}catch(e){}return{totalStorageSize:0,percentOfQuota:0,usageDetails:""}})),Z=e=>{const t=Object.assign({},e),{apiKey:n}=t;return t.apiKey=`****${n.substring(n.length-4)}`,t},X=()=>({flushMaxRetries:2,logLevel:h.Warn,loggerProvider:new p,transportProvider:new L});class Y extends y{constructor(e,t){var n,r,i,o,s;const a=X();super(Object.assign(Object.assign({transportProvider:a.transportProvider,loggerProvider:new K(t.loggerProvider||a.loggerProvider)},t),{apiKey:e})),this.flushMaxRetries=void 0!==t.flushMaxRetries&&t.flushMaxRetries<=a.flushMaxRetries?t.flushMaxRetries:a.flushMaxRetries,this.apiKey=e,this.sampleRate=t.sampleRate||0,this.serverZone=t.serverZone||$,this.configServerUrl=t.configServerUrl,this.trackServerUrl=t.trackServerUrl,this.shouldInlineStylesheet=t.shouldInlineStylesheet,this.version=t.version,this.performanceConfig=t.performanceConfig||j,this.storeType=null!==(n=t.storeType)&&void 0!==n?n:"idb",this.applyBackgroundColorToBlockedElements=null!==(r=t.applyBackgroundColorToBlockedElements)&&void 0!==r&&r,this.enableUrlChangePolling=null!==(i=t.enableUrlChangePolling)&&void 0!==i&&i,this.urlChangePollingInterval=null!==(o=t.urlChangePollingInterval)&&void 0!==o?o:1e3,this.captureDocumentTitle=null!==(s=t.captureDocumentTitle)&&void 0!==s&&s,t.privacyConfig&&(this.privacyConfig=t.privacyConfig),t.interactionConfig&&(this.interactionConfig=t.interactionConfig,this.interactionConfig.ugcFilterRules&&(e=>{if(!e.every((e=>"string"==typeof e.selector&&"string"==typeof e.replacement)))throw new Error("ugcFilterRules must be an array of objects with selector and replacement properties");if(!e.every((e=>{return"string"==typeof(t=e.selector)&&""!==t.trim()&&!!/^\/|^https?:\/\/[^\s]+$/.test(t);var t})))throw new Error("ugcFilterRules must be an array of objects with valid globs")})(this.interactionConfig.ugcFilterRules)),t.debugMode&&(this.debugMode=t.debugMode),t.experimental&&(this.experimental=t.experimental),t.omitElementTags&&(this.omitElementTags=t.omitElementTags)}}var ee,te,ne=(e=>(e[e.DomContentLoaded=0]="DomContentLoaded",e[e.Load=1]="Load",e[e.FullSnapshot=2]="FullSnapshot",e[e.IncrementalSnapshot=3]="IncrementalSnapshot",e[e.Meta=4]="Meta",e[e.Custom=5]="Custom",e[e.Plugin=6]="Plugin",e))(ne||{}),re=(e=>(e[e.MouseUp=0]="MouseUp",e[e.MouseDown=1]="MouseDown",e[e.Click=2]="Click",e[e.ContextMenu=3]="ContextMenu",e[e.DblClick=4]="DblClick",e[e.Focus=5]="Focus",e[e.Blur=6]="Blur",e[e.TouchStart=7]="TouchStart",e[e.TouchMove_Departed=8]="TouchMove_Departed",e[e.TouchEnd=9]="TouchEnd",e[e.TouchCancel=10]="TouchCancel",e))(re||{});!function(e){e.US="US",e.EU="EU",e.STAGING="STAGING"}(ee||(ee={})),function(e){e.Unknown="unknown",e.Skipped="skipped",e.Success="success",e.RateLimit="rate_limit",e.PayloadTooLarge="payload_too_large",e.Invalid="invalid",e.Failed="failed",e.Timeout="Timeout",e.SystemError="SystemError"}(te||(te={}));var ie=function(){function e(){}return e.prototype.send=function(e,t){return Promise.resolve(null)},e.prototype.buildResponse=function(e){var t,n,r,i,o,s,a,l,c,d,u,h,v,g,f,p,m,y,S,b,w,I;if("object"!=typeof e)return null;var C=e.code||0,E=this.buildStatus(C);switch(E){case te.Success:return{status:E,statusCode:C,body:{eventsIngested:null!==(t=e.events_ingested)&&void 0!==t?t:0,payloadSizeBytes:null!==(n=e.payload_size_bytes)&&void 0!==n?n:0,serverUploadTime:null!==(r=e.server_upload_time)&&void 0!==r?r:0}};case te.Invalid:return{status:E,statusCode:C,body:{error:null!==(i=e.error)&&void 0!==i?i:"",missingField:null!==(o=e.missing_field)&&void 0!==o?o:"",eventsWithInvalidFields:null!==(s=e.events_with_invalid_fields)&&void 0!==s?s:{},eventsWithMissingFields:null!==(a=e.events_with_missing_fields)&&void 0!==a?a:{},eventsWithInvalidIdLengths:null!==(l=e.events_with_invalid_id_lengths)&&void 0!==l?l:{},epsThreshold:null!==(c=e.eps_threshold)&&void 0!==c?c:0,exceededDailyQuotaDevices:null!==(d=e.exceeded_daily_quota_devices)&&void 0!==d?d:{},silencedDevices:null!==(u=e.silenced_devices)&&void 0!==u?u:[],silencedEvents:null!==(h=e.silenced_events)&&void 0!==h?h:[],throttledDevices:null!==(v=e.throttled_devices)&&void 0!==v?v:{},throttledEvents:null!==(g=e.throttled_events)&&void 0!==g?g:[]}};case te.PayloadTooLarge:return{status:E,statusCode:C,body:{error:null!==(f=e.error)&&void 0!==f?f:""}};case te.RateLimit:return{status:E,statusCode:C,body:{error:null!==(p=e.error)&&void 0!==p?p:"",epsThreshold:null!==(m=e.eps_threshold)&&void 0!==m?m:0,throttledDevices:null!==(y=e.throttled_devices)&&void 0!==y?y:{},throttledUsers:null!==(S=e.throttled_users)&&void 0!==S?S:{},exceededDailyQuotaDevices:null!==(b=e.exceeded_daily_quota_devices)&&void 0!==b?b:{},exceededDailyQuotaUsers:null!==(w=e.exceeded_daily_quota_users)&&void 0!==w?w:{},throttledEvents:null!==(I=e.throttled_events)&&void 0!==I?I:[]}};case te.Timeout:default:return{status:E,statusCode:C}}},e.prototype.buildStatus=function(e){return e>=200&&e<300?te.Success:429===e?te.RateLimit:413===e?te.PayloadTooLarge:408===e?te.Timeout:e>=400&&e<500?te.Invalid:e>=500?te.Failed:te.Unknown},e}(),oe="Remote config fetch rejected due to timeout after 5 seconds",se="Unexpected error occurred",ae=function(){function e(e){var o=e.localConfig,s=e.configKeys,a=this;this.retryTimeout=1e3,this.attempts=0,this.sessionTargetingMatch=!1,this.metrics={},this.getRemoteNamespaceConfig=function(e,r){return t(a,void 0,void 0,(function(){var t,i,o;return n(this,(function(n){switch(n.label){case 0:return t=Date.now(),[4,this.fetchWithTimeout(r)];case 1:return(i=n.sent())&&(o=i.configs&&i.configs[e])?(this.metrics.fetchTimeAPISuccess=Date.now()-t,[2,o]):(this.metrics.fetchTimeAPIFail=Date.now()-t,[2,void 0])}}))}))},this.getRemoteConfig=function(e,r,i){return t(a,void 0,void 0,(function(){var t;return n(this,(function(n){switch(n.label){case 0:return[4,this.getRemoteNamespaceConfig(e,i)];case 1:return[2,null==(t=n.sent())?void 0:t[r]]}}))}))},this.fetchWithTimeout=function(e){return t(a,void 0,void 0,(function(){var t,r,i;return n(this,(function(n){switch(n.label){case 0:return t=new AbortController,r=setTimeout((function(){return t.abort()}),5e3),[4,this.fetchRemoteConfig(t.signal,e)];case 1:return i=n.sent(),clearTimeout(r),[2,i]}}))}))},this.fetchRemoteConfig=function(e,o){return t(a,void 0,void 0,(function(){var t,s,a,l,c,d,u,h,v,g,f,p;return n(this,(function(n){switch(n.label){case 0:if(o===this.lastFetchedSessionId&&this.attempts>=this.localConfig.flushMaxRetries)return[2,this.completeRequest({err:"Remote config fetch rejected due to exceeded retry count"})];if(e.aborted)return[2,this.completeRequest({err:oe})];o!==this.lastFetchedSessionId&&(this.lastFetchedSessionId=o,this.attempts=0),n.label=1;case 1:n.trys.push([1,3,,4]),t=new URLSearchParams({api_key:this.localConfig.apiKey});try{for(s=r(this.configKeys),a=s.next();!a.done;a=s.next())l=a.value,t.append("config_keys",l)}catch(e){g={error:e}}finally{try{a&&!a.done&&(f=s.return)&&f.call(s)}finally{if(g)throw g.error}}return o&&t.set("session_id",String(o)),c={headers:{Accept:"*/*"},method:"GET"},d="".concat(this.getServerUrl(),"?").concat(t.toString()),this.attempts+=1,[4,fetch(d,i(i({},c),{signal:e}))];case 2:if(null===(u=n.sent()))return[2,this.completeRequest({err:se})];switch((new ie).buildStatus(u.status)){case te.Success:return this.attempts=0,[2,this.parseAndStoreConfig(u)];case te.Failed:return[2,this.retryFetch(e,o)];default:return[2,this.completeRequest({err:"Network error occurred, remote config fetch failed"})]}case 3:return h=n.sent(),v=h,e.aborted?[2,this.completeRequest({err:oe})]:[2,this.completeRequest({err:null!==(p=v.message)&&void 0!==p?p:se})];case 4:return[2]}}))}))},this.retryFetch=function(e,r){return t(a,void 0,void 0,(function(){var t=this;return n(this,(function(n){switch(n.label){case 0:return[4,new Promise((function(e){return setTimeout(e,t.attempts*t.retryTimeout)}))];case 1:return n.sent(),[2,this.fetchRemoteConfig(e,r)]}}))}))},this.parseAndStoreConfig=function(e){return t(a,void 0,void 0,(function(){var t;return n(this,(function(n){switch(n.label){case 0:return[4,e.json()];case 1:return t=n.sent(),this.completeRequest({success:"Remote config successfully fetched"}),[2,t]}}))}))},this.localConfig=o,this.configKeys=s}return e.prototype.getServerUrl=function(){return this.localConfig.configServerUrl?this.localConfig.configServerUrl:this.localConfig.serverZone===ee.STAGING?"https://sr-client-cfg.stag2.amplitude.com/config":this.localConfig.serverZone===ee.EU?"https://sr-client-cfg.eu.amplitude.com/config":"https://sr-client-cfg.amplitude.com/config"},e.prototype.completeRequest=function(e){var t=e.err,n=e.success;if(t)throw new Error(t);n&&this.localConfig.loggerProvider.log(n)},e}(),le=function(e){var r=e.localConfig,i=e.configKeys;return t(void 0,void 0,void 0,(function(){return n(this,(function(e){return[2,new ae({localConfig:r,configKeys:i})]}))}))};class ce{constructor(e,t){this.localConfig=t,this.remoteConfigFetch=e}generateJoinedConfig(e){var n,r,i,o;return t(this,void 0,void 0,(function*(){const t=Object.assign({},this.localConfig);let s;t.optOut=this.localConfig.optOut,t.captureEnabled=!0;try{const r=yield this.remoteConfigFetch.getRemoteNamespaceConfig("sessionReplay",e);if(r){const e=r.sr_sampling_config,i=r.sr_privacy_config,o=r.sr_targeting_config,a=null===(n=t.interactionConfig)||void 0===n?void 0:n.ugcFilterRules;t.interactionConfig=r.sr_interaction_config,t.interactionConfig&&a&&(t.interactionConfig.ugcFilterRules=a),t.loggingConfig=r.sr_logging_config,(e||i||o)&&(s={},e&&(s.sr_sampling_config=e),i&&(s.sr_privacy_config=i),o&&(s.sr_targeting_config=o))}}catch(e){const n=e;this.localConfig.loggerProvider.warn(n.message),t.captureEnabled=!1}if(!s)return{localConfig:this.localConfig,joinedConfig:t,remoteConfig:s};const{sr_sampling_config:a,sr_privacy_config:l,sr_targeting_config:c}=s;if(a&&Object.keys(a).length>0?(Object.prototype.hasOwnProperty.call(a,"capture_enabled")?t.captureEnabled=a.capture_enabled:t.captureEnabled=!1,Object.prototype.hasOwnProperty.call(a,"sample_rate")&&(t.sampleRate=a.sample_rate)):(t.captureEnabled=!0,this.localConfig.loggerProvider.debug("Remote config successfully fetched, but no values set for project, Session Replay capture enabled.")),l){const e=null!==(r=t.privacyConfig)&&void 0!==r?r:{},n={defaultMaskLevel:null!==(o=null!==(i=l.defaultMaskLevel)&&void 0!==i?i:e.defaultMaskLevel)&&void 0!==o?o:"medium",blockSelector:[],maskSelector:[],unmaskSelector:[]},s=e=>{var t,n,r;const i={};"string"==typeof e.blockSelector&&(e.blockSelector=[e.blockSelector]);for(const n of null!==(t=e.blockSelector)&&void 0!==t?t:[])i[n]="block";for(const t of null!==(n=e.maskSelector)&&void 0!==n?n:[])i[t]="mask";for(const t of null!==(r=e.unmaskSelector)&&void 0!==r?r:[])i[t]="unmask";return i},a=Object.assign(Object.assign({},s(e)),s(l));for(const[e,t]of Object.entries(a))"mask"===t?n.maskSelector.push(e):"block"===t?n.blockSelector.push(e):"unmask"===t&&n.unmaskSelector.push(e);t.privacyConfig=((e,t)=>{const n=document.createDocumentFragment(),r=(e=[])=>{if("string"==typeof e&&(e=[e]),e=e.filter((e=>{try{n.querySelector(e)}catch(n){return t.warn(`[session-replay-browser] omitting selector "${e}" because it is invalid`),!1}return!0})),0!==e.length)return e};return e.blockSelector=r(e.blockSelector),e.maskSelector=r(e.maskSelector),e.unmaskSelector=r(e.unmaskSelector),e})(n,this.localConfig.loggerProvider)}return c&&Object.keys(c).length>0&&(t.targetingConfig=c),this.localConfig.loggerProvider.debug(JSON.stringify({name:"session replay joined config",config:Z(t)},null,2)),{localConfig:this.localConfig,joinedConfig:t,remoteConfig:s}}))}}var de=Uint8Array,ue=Uint16Array,he=Uint32Array,ve=new de([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]),ge=new de([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]),fe=new de([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),pe=function(e,t){for(var n=new ue(31),r=0;r<31;++r)n[r]=t+=1<<e[r-1];var i=new he(n[30]);for(r=1;r<30;++r)for(var o=n[r];o<n[r+1];++o)i[o]=o-n[r]<<5|r;return[n,i]},me=pe(ve,2),ye=me[0],Se=me[1];ye[28]=258,Se[258]=28;for(var be=pe(ge,0)[1],we=new ue(32768),Ie=0;Ie<32768;++Ie){var Ce=(43690&Ie)>>>1|(21845&Ie)<<1;Ce=(61680&(Ce=(52428&Ce)>>>2|(13107&Ce)<<2))>>>4|(3855&Ce)<<4,we[Ie]=((65280&Ce)>>>8|(255&Ce)<<8)>>>1}var Ee=function(e,t,n){for(var r=e.length,i=0,o=new ue(t);i<r;++i)++o[e[i]-1];var s,a=new ue(t);for(i=0;i<t;++i)a[i]=a[i-1]+o[i-1]<<1;if(n){s=new ue(1<<t);var l=15-t;for(i=0;i<r;++i)if(e[i])for(var c=i<<4|e[i],d=t-e[i],u=a[e[i]-1]++<<d,h=u|(1<<d)-1;u<=h;++u)s[we[u]>>>l]=c}else for(s=new ue(r),i=0;i<r;++i)s[i]=we[a[e[i]-1]++]>>>15-e[i];return s},Pe=new de(288);for(Ie=0;Ie<144;++Ie)Pe[Ie]=8;for(Ie=144;Ie<256;++Ie)Pe[Ie]=9;for(Ie=256;Ie<280;++Ie)Pe[Ie]=7;for(Ie=280;Ie<288;++Ie)Pe[Ie]=8;var Te=new de(32);for(Ie=0;Ie<32;++Ie)Te[Ie]=5;var _e=Ee(Pe,9,0),ke=Ee(Te,5,0),Re=function(e){return(e/8|0)+(7&e&&1)},Oe=function(e,t,n){(null==n||n>e.length)&&(n=e.length);var r=new(e instanceof ue?ue:e instanceof he?he:de)(n-t);return r.set(e.subarray(t,n)),r},xe=function(e,t,n){n<<=7&t;var r=t/8|0;e[r]|=n,e[r+1]|=n>>>8},Me=function(e,t,n){n<<=7&t;var r=t/8|0;e[r]|=n,e[r+1]|=n>>>8,e[r+2]|=n>>>16},qe=function(e,t){for(var n=[],r=0;r<e.length;++r)e[r]&&n.push({s:r,f:e[r]});var i=n.length,o=n.slice();if(!i)return[new de(0),0];if(1==i){var s=new de(n[0].s+1);return s[n[0].s]=1,[s,1]}n.sort((function(e,t){return e.f-t.f})),n.push({s:-1,f:25001});var a=n[0],l=n[1],c=0,d=1,u=2;for(n[0]={s:-1,f:a.f+l.f,l:a,r:l};d!=i-1;)a=n[n[c].f<n[u].f?c++:u++],l=n[c!=d&&n[c].f<n[u].f?c++:u++],n[d++]={s:-1,f:a.f+l.f,l:a,r:l};var h=o[0].s;for(r=1;r<i;++r)o[r].s>h&&(h=o[r].s);var v=new ue(h+1),g=Le(n[d-1],v,0);if(g>t){r=0;var f=0,p=g-t,m=1<<p;for(o.sort((function(e,t){return v[t.s]-v[e.s]||e.f-t.f}));r<i;++r){var y=o[r].s;if(!(v[y]>t))break;f+=m-(1<<g-v[y]),v[y]=t}for(f>>>=p;f>0;){var S=o[r].s;v[S]<t?f-=1<<t-v[S]++-1:++r}for(;r>=0&&f;--r){var b=o[r].s;v[b]==t&&(--v[b],++f)}g=t}return[new de(v),g]},Le=function(e,t,n){return-1==e.s?Math.max(Le(e.l,t,n+1),Le(e.r,t,n+1)):t[e.s]=n},Ne=function(e){for(var t=e.length;t&&!e[--t];);for(var n=new ue(++t),r=0,i=e[0],o=1,s=function(e){n[r++]=e},a=1;a<=t;++a)if(e[a]==i&&a!=t)++o;else{if(!i&&o>2){for(;o>138;o-=138)s(32754);o>2&&(s(o>10?o-11<<5|28690:o-3<<5|12305),o=0)}else if(o>3){for(s(i),--o;o>6;o-=6)s(8304);o>2&&(s(o-3<<5|8208),o=0)}for(;o--;)s(i);o=1,i=e[a]}return[n.subarray(0,r),t]},De=function(e,t){for(var n=0,r=0;r<t.length;++r)n+=e[r]*t[r];return n},$e=function(e,t,n){var r=n.length,i=Re(t+2);e[i]=255&r,e[i+1]=r>>>8,e[i+2]=255^e[i],e[i+3]=255^e[i+1];for(var o=0;o<r;++o)e[i+o+4]=n[o];return 8*(i+4+r)},je=function(e,t,n,r,i,o,s,a,l,c,d){xe(t,d++,n),++i[256];for(var u=qe(i,15),h=u[0],v=u[1],g=qe(o,15),f=g[0],p=g[1],m=Ne(h),y=m[0],S=m[1],b=Ne(f),w=b[0],I=b[1],C=new ue(19),E=0;E<y.length;++E)C[31&y[E]]++;for(E=0;E<w.length;++E)C[31&w[E]]++;for(var P=qe(C,7),T=P[0],_=P[1],k=19;k>4&&!T[fe[k-1]];--k);var R,O,x,M,q=c+5<<3,L=De(i,Pe)+De(o,Te)+s,N=De(i,h)+De(o,f)+s+14+3*k+De(C,T)+(2*C[16]+3*C[17]+7*C[18]);if(q<=L&&q<=N)return $e(t,d,e.subarray(l,l+c));if(xe(t,d,1+(N<L)),d+=2,N<L){R=Ee(h,v,0),O=h,x=Ee(f,p,0),M=f;var D=Ee(T,_,0);xe(t,d,S-257),xe(t,d+5,I-1),xe(t,d+10,k-4),d+=14;for(E=0;E<k;++E)xe(t,d+3*E,T[fe[E]]);d+=3*k;for(var $=[y,w],j=0;j<2;++j){var U=$[j];for(E=0;E<U.length;++E){var F=31&U[E];xe(t,d,D[F]),d+=T[F],F>15&&(xe(t,d,U[E]>>>5&127),d+=U[E]>>>12)}}}else R=_e,O=Pe,x=ke,M=Te;for(E=0;E<a;++E)if(r[E]>255){F=r[E]>>>18&31;Me(t,d,R[F+257]),d+=O[F+257],F>7&&(xe(t,d,r[E]>>>23&31),d+=ve[F]);var A=31&r[E];Me(t,d,x[A]),d+=M[A],A>3&&(Me(t,d,r[E]>>>5&8191),d+=ge[A])}else Me(t,d,R[r[E]]),d+=O[r[E]];return Me(t,d,R[256]),d+O[256]},Ue=new he([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),Fe=function(e,t,n,r,i){return function(e,t,n,r,i,o){var s=e.length,a=new de(r+s+5*(1+Math.floor(s/7e3))+i),l=a.subarray(r,a.length-i),c=0;if(!t||s<8)for(var d=0;d<=s;d+=65535){var u=d+65535;u<s?c=$e(l,c,e.subarray(d,u)):(l[d]=o,c=$e(l,c,e.subarray(d,s)))}else{for(var h=Ue[t-1],v=h>>>13,g=8191&h,f=(1<<n)-1,p=new ue(32768),m=new ue(f+1),y=Math.ceil(n/3),S=2*y,b=function(t){return(e[t]^e[t+1]<<y^e[t+2]<<S)&f},w=new he(25e3),I=new ue(288),C=new ue(32),E=0,P=0,T=(d=0,0),_=0,k=0;d<s;++d){var R=b(d),O=32767&d,x=m[R];if(p[O]=x,m[R]=O,_<=d){var M=s-d;if((E>7e3||T>24576)&&M>423){c=je(e,l,0,w,I,C,P,T,k,d-k,c),T=E=P=0,k=d;for(var q=0;q<286;++q)I[q]=0;for(q=0;q<30;++q)C[q]=0}var L=2,N=0,D=g,$=O-x&32767;if(M>2&&R==b(d-$))for(var j=Math.min(v,M)-1,U=Math.min(32767,d),F=Math.min(258,M);$<=U&&--D&&O!=x;){if(e[d+L]==e[d+L-$]){for(var A=0;A<F&&e[d+A]==e[d+A-$];++A);if(A>L){if(L=A,N=$,A>j)break;var K=Math.min($,A-2),B=0;for(q=0;q<K;++q){var W=d-$+q+32768&32767,z=W-p[W]+32768&32767;z>B&&(B=z,x=W)}}}$+=(O=x)-(x=p[O])+32768&32767}if(N){w[T++]=268435456|Se[L]<<18|be[N];var G=31&Se[L],Q=31&be[N];P+=ve[G]+ge[Q],++I[257+G],++C[Q],_=d+L,++E}else w[T++]=e[d],++I[e[d]]}}c=je(e,l,o,w,I,C,P,T,k,d-k,c)}return Oe(a,0,r+Re(c)+i)}(e,null==t.level?6:t.level,null==t.mem?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(e.length)))):12+t.mem,n,r,!i)};function Ae(e,t){void 0===t&&(t={});var n=function(){var e=1,t=0;return{p:function(n){for(var r=e,i=t,o=n.length,s=0;s!=o;){for(var a=Math.min(s+5552,o);s<a;++s)i+=r+=n[s];r%=65521,i%=65521}e=r,t=i},d:function(){return(e>>>8<<16|(255&t)<<8|t>>>8)+2*((255&e)<<23)}}}();n.p(e);var r,i,o,s=Fe(e,t,2,4);return r=s,i=t.level,o=0==i?0:i<6?1:9==i?3:2,r[0]=120,r[1]=o<<6|(o?32-2*o:1),function(e,t,n){for(;n;++t)e[t]=n,n>>>=8}(s,s.length-4,n.d()),s}const Ke=e=>{const t={...e,v:"v1"};return function(e,t){var n="";if(!t&&"undefined"!=typeof TextDecoder)return(new TextDecoder).decode(e);for(var r=0;r<e.length;){var i=e[r++];i<128||t?n+=String.fromCharCode(i):i<224?n+=String.fromCharCode((31&i)<<6|63&e[r++]):i<240?n+=String.fromCharCode((15&i)<<12|(63&e[r++])<<6|63&e[r++]):(i=((15&i)<<18|(63&e[r++])<<12|(63&e[r++])<<6|63&e[r++])-65536,n+=String.fromCharCode(55296|i>>10,56320|1023&i))}return n}(Ae(function(e,t){var n=e.length;if(!t&&"undefined"!=typeof TextEncoder)return(new TextEncoder).encode(e);for(var r=new de(e.length+(e.length>>>1)),i=0,o=function(e){r[i++]=e},s=0;s<n;++s){if(i+5>r.length){var a=new de(i+8+(n-s<<1));a.set(r),r=a}var l=e.charCodeAt(s);l<128||t?o(l):l<2048?(o(192|l>>>6),o(128|63&l)):l>55295&&l<57344?(o(240|(l=65536+(1047552&l)|1023&e.charCodeAt(++s))>>>18),o(128|l>>>12&63),o(128|l>>>6&63),o(128|63&l)):(o(224|l>>>12),o(128|l>>>6&63),o(128|63&l))}return Oe(r,0,i)}(JSON.stringify(t))),!0)};class Be{constructor(e,t,n,r){var i,o,s;this.taskQueue=[],this.isProcessing=!1,this.compressEvent=e=>{const t=Ke(e);return JSON.stringify(t)},this.addCompressedEventToManager=(e,t)=>{this.eventsManager&&this.deviceId&&this.eventsManager.addEvent({event:{type:"replay",data:e},sessionId:t,deviceId:this.deviceId})},this.addCompressedEvent=(e,t)=>{if(this.worker)this.worker.postMessage({event:e,sessionId:t});else{const n=this.compressEvent(e);this.addCompressedEventToManager(n,t)}},this.terminate=()=>{var e;null===(e=this.worker)||void 0===e||e.terminate()};const a=v();this.canUseIdleCallback=a&&"requestIdleCallback"in a,this.eventsManager=e,this.config=t,this.deviceId=n,this.timeout=(null===(i=t.performanceConfig)||void 0===i?void 0:i.timeout)||2e3;const l=null!==(o='var WebWorker=function(r){"use strict";var n=Uint8Array,e=Uint16Array,f=Uint32Array,t=new n([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]),o=new n([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 n([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),i=function(r,n){for(var t=new e(31),o=0;o<31;++o)t[o]=n+=1<<r[o-1];var a=new f(t[30]);for(o=1;o<30;++o)for(var i=t[o];i<t[o+1];++i)a[i]=i-t[o]<<5|o;return[t,a]},v=i(t,2),u=v[0],s=v[1];u[28]=258,s[258]=28;for(var l=i(o,0)[1],c=new e(32768),h=0;h<32768;++h){var g=(43690&h)>>>1|(21845&h)<<1;g=(61680&(g=(52428&g)>>>2|(13107&g)<<2))>>>4|(3855&g)<<4,c[h]=((65280&g)>>>8|(255&g)<<8)>>>1}var w=function(r,n,f){for(var t=r.length,o=0,a=new e(n);o<t;++o)++a[r[o]-1];var i,v=new e(n);for(o=0;o<n;++o)v[o]=v[o-1]+a[o-1]<<1;if(f){i=new e(1<<n);var u=15-n;for(o=0;o<t;++o)if(r[o])for(var s=o<<4|r[o],l=n-r[o],h=v[r[o]-1]++<<l,g=h|(1<<l)-1;h<=g;++h)i[c[h]>>>u]=s}else for(i=new e(t),o=0;o<t;++o)i[o]=c[v[r[o]-1]++]>>>15-r[o];return i},d=new n(288);for(h=0;h<144;++h)d[h]=8;for(h=144;h<256;++h)d[h]=9;for(h=256;h<280;++h)d[h]=7;for(h=280;h<288;++h)d[h]=8;var m=new n(32);for(h=0;h<32;++h)m[h]=5;var M=w(d,9,0),y=w(m,5,0),b=function(r){return(r/8|0)+(7&r&&1)},p=function(r,t,o){(null==o||o>r.length)&&(o=r.length);var a=new(r instanceof e?e:r instanceof f?f:n)(o-t);return a.set(r.subarray(t,o)),a},C=function(r,n,e){e<<=7&n;var f=n/8|0;r[f]|=e,r[f+1]|=e>>>8},x=function(r,n,e){e<<=7&n;var f=n/8|0;r[f]|=e,r[f+1]|=e>>>8,r[f+2]|=e>>>16},S=function(r,f){for(var t=[],o=0;o<r.length;++o)r[o]&&t.push({s:o,f:r[o]});var a=t.length,i=t.slice();if(!a)return[new n(0),0];if(1==a){var v=new n(t[0].s+1);return v[t[0].s]=1,[v,1]}t.sort((function(r,n){return r.f-n.f})),t.push({s:-1,f:25001});var u=t[0],s=t[1],l=0,c=1,h=2;for(t[0]={s:-1,f:u.f+s.f,l:u,r:s};c!=a-1;)u=t[t[l].f<t[h].f?l++:h++],s=t[l!=c&&t[l].f<t[h].f?l++:h++],t[c++]={s:-1,f:u.f+s.f,l:u,r:s};var g=i[0].s;for(o=1;o<a;++o)i[o].s>g&&(g=i[o].s);var w=new e(g+1),d=A(t[c-1],w,0);if(d>f){o=0;var m=0,M=d-f,y=1<<M;for(i.sort((function(r,n){return w[n.s]-w[r.s]||r.f-n.f}));o<a;++o){var b=i[o].s;if(!(w[b]>f))break;m+=y-(1<<d-w[b]),w[b]=f}for(m>>>=M;m>0;){var p=i[o].s;w[p]<f?m-=1<<f-w[p]++-1:++o}for(;o>=0&&m;--o){var C=i[o].s;w[C]==f&&(--w[C],++m)}d=f}return[new n(w),d]},A=function(r,n,e){return-1==r.s?Math.max(A(r.l,n,e+1),A(r.r,n,e+1)):n[r.s]=e},O=function(r){for(var n=r.length;n&&!r[--n];);for(var f=new e(++n),t=0,o=r[0],a=1,i=function(r){f[t++]=r},v=1;v<=n;++v)if(r[v]==o&&v!=n)++a;else{if(!o&&a>2){for(;a>138;a-=138)i(32754);a>2&&(i(a>10?a-11<<5|28690:a-3<<5|12305),a=0)}else if(a>3){for(i(o),--a;a>6;a-=6)i(8304);a>2&&(i(a-3<<5|8208),a=0)}for(;a--;)i(o);a=1,o=r[v]}return[f.subarray(0,t),n]},T=function(r,n){for(var e=0,f=0;f<n.length;++f)e+=r[f]*n[f];return e},k=function(r,n,e){var f=e.length,t=b(n+2);r[t]=255&f,r[t+1]=f>>>8,r[t+2]=255^r[t],r[t+3]=255^r[t+1];for(var o=0;o<f;++o)r[t+o+4]=e[o];return 8*(t+4+f)},E=function(r,n,f,i,v,u,s,l,c,h,g){C(n,g++,f),++v[256];for(var b=S(v,15),p=b[0],A=b[1],E=S(u,15),U=E[0],D=E[1],I=O(p),J=I[0],N=I[1],W=O(U),_=W[0],j=W[1],P=new e(19),q=0;q<J.length;++q)P[31&J[q]]++;for(q=0;q<_.length;++q)P[31&_[q]]++;for(var z=S(P,7),B=z[0],F=z[1],G=19;G>4&&!B[a[G-1]];--G);var H,K,L,Q,R=h+5<<3,V=T(v,d)+T(u,m)+s,X=T(v,p)+T(u,U)+s+14+3*G+T(P,B)+(2*P[16]+3*P[17]+7*P[18]);if(R<=V&&R<=X)return k(n,g,r.subarray(c,c+h));if(C(n,g,1+(X<V)),g+=2,X<V){H=w(p,A,0),K=p,L=w(U,D,0),Q=U;var Y=w(B,F,0);C(n,g,N-257),C(n,g+5,j-1),C(n,g+10,G-4),g+=14;for(q=0;q<G;++q)C(n,g+3*q,B[a[q]]);g+=3*G;for(var Z=[J,_],$=0;$<2;++$){var rr=Z[$];for(q=0;q<rr.length;++q){var nr=31&rr[q];C(n,g,Y[nr]),g+=B[nr],nr>15&&(C(n,g,rr[q]>>>5&127),g+=rr[q]>>>12)}}}else H=M,K=d,L=y,Q=m;for(q=0;q<l;++q)if(i[q]>255){nr=i[q]>>>18&31;x(n,g,H[nr+257]),g+=K[nr+257],nr>7&&(C(n,g,i[q]>>>23&31),g+=t[nr]);var er=31&i[q];x(n,g,L[er]),g+=Q[er],er>3&&(x(n,g,i[q]>>>5&8191),g+=o[er])}else x(n,g,H[i[q]]),g+=K[i[q]];return x(n,g,H[256]),g+K[256]},U=new f([65540,131080,131088,131104,262176,1048704,1048832,2114560,2117632]),D=function(r,a,i,v,u){return function(r,a,i,v,u,c){var h=r.length,g=new n(v+h+5*(1+Math.floor(h/7e3))+u),w=g.subarray(v,g.length-u),d=0;if(!a||h<8)for(var m=0;m<=h;m+=65535){var M=m+65535;M<h?d=k(w,d,r.subarray(m,M)):(w[m]=c,d=k(w,d,r.subarray(m,h)))}else{for(var y=U[a-1],C=y>>>13,x=8191&y,S=(1<<i)-1,A=new e(32768),O=new e(S+1),T=Math.ceil(i/3),D=2*T,I=function(n){return(r[n]^r[n+1]<<T^r[n+2]<<D)&S},J=new f(25e3),N=new e(288),W=new e(32),_=0,j=0,P=(m=0,0),q=0,z=0;m<h;++m){var B=I(m),F=32767&m,G=O[B];if(A[F]=G,O[B]=F,q<=m){var H=h-m;if((_>7e3||P>24576)&&H>423){d=E(r,w,0,J,N,W,j,P,z,m-z,d),P=_=j=0,z=m;for(var K=0;K<286;++K)N[K]=0;for(K=0;K<30;++K)W[K]=0}var L=2,Q=0,R=x,V=F-G&32767;if(H>2&&B==I(m-V))for(var X=Math.min(C,H)-1,Y=Math.min(32767,m),Z=Math.min(258,H);V<=Y&&--R&&F!=G;){if(r[m+L]==r[m+L-V]){for(var $=0;$<Z&&r[m+$]==r[m+$-V];++$);if($>L){if(L=$,Q=V,$>X)break;var rr=Math.min(V,$-2),nr=0;for(K=0;K<rr;++K){var er=m-V+K+32768&32767,fr=er-A[er]+32768&32767;fr>nr&&(nr=fr,G=er)}}}V+=(F=G)-(G=A[F])+32768&32767}if(Q){J[P++]=268435456|s[L]<<18|l[Q];var tr=31&s[L],or=31&l[Q];j+=t[tr]+o[or],++N[257+tr],++W[or],q=m+L,++_}else J[P++]=r[m],++N[r[m]]}}d=E(r,w,c,J,N,W,j,P,z,m-z,d)}return p(g,0,v+b(d)+u)}(r,null==a.level?6:a.level,null==a.mem?Math.ceil(1.5*Math.max(8,Math.min(13,Math.log(r.length)))):12+a.mem,i,v,!u)};function I(r,n){void 0===n&&(n={});var e=function(){var r=1,n=0;return{p:function(e){for(var f=r,t=n,o=e.length,a=0;a!=o;){for(var i=Math.min(a+5552,o);a<i;++a)t+=f+=e[a];f%=65521,t%=65521}r=f,n=t},d:function(){return(r>>>8<<16|(255&n)<<8|n>>>8)+2*((255&r)<<23)}}}();e.p(r);var f,t,o,a=D(r,n,2,4);return f=a,t=n.level,o=0==t?0:t<6?1:9==t?3:2,f[0]=120,f[1]=o<<6|(o?32-2*o:1),function(r,n,e){for(;e;++n)r[n]=e,e>>>=8}(a,a.length-4,e.d()),a}const J=r=>{const e={...r,v:"v1"};return function(r,n){var e="";if(!n&&"undefined"!=typeof TextDecoder)return(new TextDecoder).decode(r);for(var f=0;f<r.length;){var t=r[f++];t<128||n?e+=String.fromCharCode(t):t<224?e+=String.fromCharCode((31&t)<<6|63&r[f++]):t<240?e+=String.fromCharCode((15&t)<<12|(63&r[f++])<<6|63&r[f++]):(t=((15&t)<<18|(63&r[f++])<<12|(63&r[f++])<<6|63&r[f++])-65536,e+=String.fromCharCode(55296|t>>10,56320|1023&t))}return e}(I(function(r,e){var f=r.length;if(!e&&"undefined"!=typeof TextEncoder)return(new TextEncoder).encode(r);for(var t=new n(r.length+(r.length>>>1)),o=0,a=function(r){t[o++]=r},i=0;i<f;++i){if(o+5>t.length){var v=new n(o+8+(f-i<<1));v.set(t),t=v}var u=r.charCodeAt(i);u<128||e?a(u):u<2048?(a(192|u>>>6),a(128|63&u)):u>55295&&u<57344?(a(240|(u=65536+(1047552&u)|1023&r.charCodeAt(++i))>>>18),a(128|u>>>12&63),a(128|u>>>6&63),a(128|63&u)):(a(224|u>>>12),a(128|u>>>6&63),a(128|63&u))}return p(t,0,o)}(JSON.stringify(e))),!0)};onmessage=r=>{const{event:n,sessionId:e}=r.data,f=JSON.stringify(J(n));postMessage({compressedEvent:f,sessionId:e})};const N=onmessage;return r.compressionOnMessage=N,Object.defineProperty(r,"__esModule",{value:!0}),r}({});\n')?o:r;if((null===(s=this.config.experimental)||void 0===s?void 0:s.useWebWorker)&&a&&a.Worker&&l){t.loggerProvider.log("[Experimental] Enabling web worker for compression");const e=new Worker(URL.createObjectURL(new Blob([l],{type:"application/javascript"})));e.onerror=e=>{t.loggerProvider.error(e)},e.onmessage=e=>{const{compressedEvent:t,sessionId:n}=e.data;this.addCompressedEventToManager(t,n)},this.worker=e}}scheduleIdleProcessing(){this.isProcessing||(this.isProcessing=!0,requestIdleCallback((e=>{this.processQueue(e)}),{timeout:this.timeout}))}enqueueEvent(e,t){var n;this.canUseIdleCallback&&(null===(n=this.config.performanceConfig)||void 0===n?void 0:n.enabled)?(this.config.loggerProvider.debug("Enqueuing event for processing during idle time."),this.taskQueue.push({event:e,sessionId:t}),this.scheduleIdleProcessing()):(this.config.loggerProvider.debug("Processing event without idle callback."),this.addCompressedEvent(e,t))}processQueue(e){for(;this.taskQueue.length>0&&(e.timeRemaining()>0||e.didTimeout);){const e=this.taskQueue.shift();if(e){const{event:t,sessionId:n}=e;this.addCompressedEvent(t,n)}}this.taskQueue.length>0?requestIdleCallback((e=>{this.processQueue(e)}),{timeout:this.timeout}):this.isProcessing=!1}}const We="Failed to store session replay events in IndexedDB",ze="1.28.12";class Ge{constructor({trackServerUrl:e,loggerProvider:t,payloadBatcher:n}){this.storageKey="",this.retryTimeout=1e3,this.scheduled=null,this.queue=[],this.loggerProvider=t,this.payloadBatcher=n||(e=>e),this.trackServerUrl=e}sendEventsList(e){this.addToQueue(Object.assign(Object.assign({},e),{attempts:0,timeout:0}))}addToQueue(...e){e.filter((e=>e.attempts<(e.flushMaxRetries||0)?(e.attempts+=1,!0):(this.completeRequest({context:e,err:"Session replay event batch rejected due to exceeded retry count"}),!1))).forEach((e=>{this.queue=this.queue.concat(e),0!==e.timeout?setTimeout((()=>{e.timeout=0,this.schedule(0)}),e.timeout):this.schedule(0)}))}schedule(e){this.scheduled||(this.scheduled=setTimeout((()=>{this.flush(!0).then((()=>{this.queue.length>0&&this.schedule(e)}))}),e))}flush(e=!1){return t(this,void 0,void 0,(function*(){const t=[],n=[];this.queue.forEach((e=>0===e.timeout?t.push(e):n.push(e))),this.queue=n,this.scheduled&&(clearTimeout(this.scheduled),this.scheduled=null),yield Promise.all(t.map((t=>this.send(t,e))))}))}send(e,n=!0){var r,i;return t(this,void 0,void 0,(function*(){const t=e.apiKey;if(!t)return this.completeRequest({context:e,err:"Session replay event batch not sent due to missing api key"});const o=e.deviceId;if(!o)return this.completeRequest({context:e,err:"Session replay event batch not sent due to missing device ID"});const s=(()=>{const e=v();return(null==e?void 0:e.location)?e.location.href:""})(),a=ze,l=e.sampleRate,c=new URLSearchParams({device_id:o,session_id:`${e.sessionId}`,type:`${e.type}`}),d=`${(null===(r=e.version)||void 0===r?void 0:r.type)||"standalone"}/${(null===(i=e.version)||void 0===i?void 0:i.version)||a}`,u=this.payloadBatcher({version:1,events:e.events});if(0!==u.events.length)try{const r={headers:{"Content-Type":"application/json",Accept:"*/*",Authorization:`Bearer ${t}`,"X-Client-Version":a,"X-Client-Library":d,"X-Client-Url":s.substring(0,1e3),"X-Client-Sample-Rate":`${l}`},body:JSON.stringify(u),method:"POST"},i=`${Q(e.serverZone,this.trackServerUrl)}?${c.toString()}`,o=yield fetch(i,r);if(null===o)return void this.completeRequest({context:e,err:"Unexpected error occurred"});if(n)this.handleReponse(o.status,e);else{let t="";try{t=JSON.stringify(o.body,null,2)}catch(e){}this.completeRequest({context:e,success:`${o.status}: ${t}`})}}catch(t){this.completeRequest({context:e,err:t})}else this.completeRequest({context:e})}))}handleReponse(e,t){switch((new q).buildStatus(e)){case l.Success:this.handleSuccessResponse(t);break;case l.Failed:this.handleOtherResponse(t);break;default:this.completeRequest({context:t,err:"Network error occurred, event batch rejected"})}}handleSuccessResponse(e){const t=Math.round(new Blob(e.events).size/1024);this.completeRequest({context:e,success:`Session replay event batch tracked successfully for session id ${e.sessionId}, size of events: ${t} KB`})}handleOtherResponse(e){this.addToQueue(Object.assign(Object.assign({},e),{timeout:e.attempts*this.retryTimeout}))}completeRequest({context:e,err:t,success:n}){e.onComplete(),t?this.loggerProvider.warn(t):n&&this.loggerProvider.log(n)}}class Qe{get timeAtLastSplit(){return this._timeAtLastSplit}constructor(e){var t,n,r;this.minInterval=500,this.maxInterval=1e4,this.maxPersistedEventsSize=1e6,this.interval=this.minInterval,this._timeAtLastSplit=Date.now(),this.shouldSplitEventsList=(e,t)=>{const n=this.getStringSize(t);return this.getEventsArraySize(e)+n>=this.maxPersistedEventsSize||!!(Date.now()-this.timeAtLastSplit>this.interval&&e.length)&&(this.interval=Math.min(this.maxInterval,this.interval+this.minInterval),this._timeAtLastSplit=Date.now(),!0)},this.loggerProvider=e.loggerProvider,this.minInterval=null!==(t=e.minInterval)&&void 0!==t?t:this.minInterval,this.maxInterval=null!==(n=e.maxInterval)&&void 0!==n?n:this.maxInterval,this.maxPersistedEventsSize=null!==(r=e.maxPersistedEventsSize)&&void 0!==r?r:this.maxPersistedEventsSize}getStringSize(e){return e.length}getEventsArraySize(e){let t=0;for(const n of e)t+=this.getStringSize(n);return t+(2+Math.max(0,e.length-1)+2*e.length)}}var He;!function(e){e.RECORDING="recording",e.SENT="sent"}(He||(He={}));const Je="sessionCurrentSequence",Ve="sequencesToSend",Ze=e=>t(void 0,void 0,void 0,(function*(){for(;e.length>0;){const t=10,n=e.splice(0,t);yield Promise.all(n)}})),Xe=e=>{let t,n;return e.objectStoreNames.contains(Je)||(n=e.createObjectStore(Je,{keyPath:"sessionId"})),e.objectStoreNames.contains(Ve)||(t=e.createObjectStore(Ve,{keyPath:"sequenceId",autoIncrement:!0}),t.createIndex("sessionId","sessionId")),{sequencesStore:t,currentSequenceStore:n}};class Ye extends Qe{constructor(e){super(e),this.getSequencesToSend=()=>t(this,void 0,void 0,(function*(){try{const e=[];let t=yield this.db.transaction("sequencesToSend").store.openCursor();for(;t;){const{sessionId:n,events:r}=t.value;e.push({events:r,sequenceId:t.key,sessionId:n}),t=yield t.continue()}return e}catch(e){this.loggerProvider.warn(`${We}: ${e}`)}})),this.storeCurrentSequence=e=>t(this,void 0,void 0,(function*(){try{const t=yield this.db.get(Je,e);if(!t)return;const n=yield this.db.put(Ve,{sessionId:e,events:t.events});return yield this.db.put(Je,{sessionId:e,events:[]}),Object.assign(Object.assign({},t),{sessionId:e,sequenceId:n})}catch(e){this.loggerProvider.warn(`${We}: ${e}`)}})),this.addEventToCurrentSequence=(e,n)=>t(this,void 0,void 0,(function*(){try{const t=this.db.transaction(Je,"readwrite"),r=yield t.store.get(e);if(!r)return void(yield t.store.put({sessionId:e,events:[n]}));let i;if(this.shouldSplitEventsList(r.events,n))i=r.events,yield t.store.put({sessionId:e,events:[n]});else{const i=r.events.concat(n);yield t.store.put({sessionId:e,events:i})}if(yield t.done,!i)return;const o=yield this.storeSendingEvents(e,i);if(!o)return;return{events:i,sessionId:e,sequenceId:o}}catch(e){this.loggerProvider.warn(`${We}: ${e}`)}})),this.storeSendingEvents=(e,n)=>t(this,void 0,void 0,(function*(){try{return yield this.db.put(Ve,{sessionId:e,events:n})}catch(e){this.loggerProvider.warn(`${We}: ${e}`)}})),this.cleanUpSessionEventsStore=(e,n)=>t(this,void 0,void 0,(function*(){if(n)try{yield this.db.delete(Ve,n)}catch(e){this.loggerProvider.warn(`${We}: ${e}`)}})),this.transitionFromKeyValStore=e=>t(this,void 0,void 0,(function*(){try{const n=yield function(){const e=v();return new Promise(((t,n)=>{if(!e)return n(new Error("Global scope not found"));if(!e.indexedDB)return n(new Error("Session Replay: cannot find indexedDB"));try{const r=e.indexedDB.open("keyval-store");r.onupgradeneeded=function(){1===r.result.version&&(r.result.close(),r.transaction&&r.transaction.abort(),e.indexedDB.deleteDatabase("keyval-store"),t())},r.onsuccess=function(){t(r.result)},r.onerror=function(){n(r.error)}}catch(e){n(e)}}))}();if(!n)return;const r=(e,n)=>t(this,void 0,void 0,(function*(){const r=n.sessionSequences,i=[];Object.keys(r).forEach((o=>{const s=parseInt(o,10),a=r[s];if(s===n.currentSequenceId){const n=a.events.map((n=>t(this,void 0,void 0,(function*(){return this.addEventToCurrentSequence(e,n)}))));i.push(...n)}else a.status!==He.SENT&&i.push(this.storeSendingEvents(e,a.events))})),yield Ze(i)})),i=`${c}_${this.apiKey.substring(0,10)}`;try{const o=n.transaction("keyval").objectStore("keyval").getAll(i),s=new Promise((n=>{o.onsuccess=i=>t(this,void 0,void 0,(function*(){const t=i&&i.target.result,o=t&&t[0];if(o){const t=[];Object.keys(o).forEach((n=>{const i=parseInt(n,10),s=o[i];if(e===i)t.push(r(i,s));else{const e=s.sessionSequences;Object.keys(e).forEach((n=>{const r=parseInt(n,10);e[r].status!==He.SENT&&t.push(this.storeSendingEvents(i,e[r].events))}))}})),yield Ze(t)}n()}))}));yield s;const a=v();a&&a.indexedDB.deleteDatabase("keyval-store")}catch(e){this.loggerProvider.warn(`Failed to transition session replay events from keyval to new store: ${e}`)}}catch(e){this.loggerProvider.warn(`Failed to access keyval store: ${e}. For more information, visit: https://www.docs.developers.amplitude.com/session-replay/sdks/standalone/#indexeddb-best-practices`)}})),this.apiKey=e.apiKey,this.db=e.db}static new(e,n,r){return t(this,void 0,void 0,(function*(){try{const i="replay"===e?"":`_${e}`,s=`${n.apiKey.substring(0,10)}_amp_session_replay_events${i}`,a=yield(e=>t(void 0,void 0,void 0,(function*(){return yield o(e,1,{upgrade:Xe})})))(s),l=new Ye(Object.assign(Object.assign({},n),{db:a}));return yield l.transitionFromKeyValStore(r),l}catch(e){n.loggerProvider.warn(`${We}: ${e}`)}}))}getCurrentSequenceEvents(e){return t(this,void 0,void 0,(function*(){if(e){const t=yield this.db.get("sessionCurrentSequence",e);if(!t)return;return[t]}const t=[];for(const e of yield this.db.getAll("sessionCurrentSequence"))t.push(e);return t}))}}class et extends Qe{constructor(){super(...arguments),this.finalizedSequences={},this.sequences={},this.sequenceId=0}resetCurrentSequence(e){this.sequences[e]=[]}addSequence(e){const t=this.sequenceId++,n=[...this.sequences[e]];return this.finalizedSequences[t]={sessionId:e,events:n},this.resetCurrentSequence(e),{sequenceId:t,events:n,sessionId:e}}getSequencesToSend(){return t(this,void 0,void 0,(function*(){return Object.entries(this.finalizedSequences).map((([e,{sessionId:t,events:n}])=>({sequenceId:Number(e),sessionId:t,events:n})))}))}storeCurrentSequence(e){return t(this,void 0,void 0,(function*(){if(this.sequences[e])return this.addSequence(e)}))}addEventToCurrentSequence(e,n){return t(this,void 0,void 0,(function*(){let t;return this.sequences[e]||this.resetCurrentSequence(e),this.shouldSplitEventsList(this.sequences[e],n)&&(t=this.addSequence(e)),this.sequences[e].push(n),t}))}storeSendingEvents(e,n){return t(this,void 0,void 0,(function*(){return this.finalizedSequences[this.sequenceId]={sessionId:e,events:n},this.sequenceId++}))}cleanUpSessionEventsStore(e,n){return t(this,void 0,void 0,(function*(){void 0!==n&&delete this.finalizedSequences[n]}))}}const tt=({config:e,sessionId:n,minInterval:r,maxInterval:i,type:o,payloadBatcher:s,storeType:a})=>t(void 0,void 0,void 0,(function*(){const l=new Ge(Object.assign(Object.assign({},e),{loggerProvider:e.loggerProvider,payloadBatcher:s})),c=()=>new et({loggerProvider:e.loggerProvider,maxInterval:i,minInterval:r}),d="idb"===a?yield t(void 0,void 0,void 0,(function*(){const t=yield Ye.new(o,{loggerProvider:e.loggerProvider,minInterval:r,maxInterval:i,apiKey:e.apiKey},n);return e.loggerProvider.log("Failed to initialize idb store, falling back to memory store."),null!=t?t:c()})):c(),u=({events:n,sessionId:r,deviceId:i,sequenceId:s})=>{e.debugMode&&V().then((({totalStorageSize:t,percentOfQuota:n,usageDetails:r})=>{e.loggerProvider.debug(`Total storage size: ${t} KB, percentage of quota: ${n}%, usage details: ${r}`)})).catch((()=>{})),l.sendEventsList({events:n,sessionId:r,flushMaxRetries:e.flushMaxRetries,apiKey:e.apiKey,deviceId:i,sampleRate:e.sampleRate,serverZone:e.serverZone,version:e.version,type:o,onComplete:()=>t(void 0,void 0,void 0,(function*(){yield d.cleanUpSessionEventsStore(r,s)}))})};return{sendCurrentSequenceEvents:({sessionId:t,deviceId:n})=>{d.storeCurrentSequence(t).then((e=>{e&&u({sequenceId:e.sequenceId,events:e.events,sessionId:e.sessionId,deviceId:n})})).catch((t=>{e.loggerProvider.warn("Failed to get current sequence of session replay events for session:",t)}))},addEvent:({event:t,sessionId:n,deviceId:r})=>{d.addEventToCurrentSequence(n,t.data).then((e=>e&&u({sequenceId:e.sequenceId,events:e.events,sessionId:e.sessionId,deviceId:r}))).catch((t=>{e.loggerProvider.warn("Failed to add event to session replay capture:",t)}))},sendStoredEvents:({deviceId:e})=>t(void 0,void 0,void 0,(function*(){const t=yield d.getSequencesToSend();t&&t.forEach((t=>{u({sequenceId:t.sequenceId,events:t.events,sessionId:t.sessionId,deviceId:e})}))})),flush:function(e=!1){return t(this,void 0,void 0,(function*(){return l.flush(e)}))}}}));class nt{constructor(...e){const t=new Map;e.forEach((e=>{t.set(e.name,e.manager)})),this.managers=t}sendStoredEvents(e){return t(this,void 0,void 0,(function*(){const t=[];this.managers.forEach((n=>{t.push(n.sendStoredEvents(e))})),yield Promise.all(t)}))}addEvent({sessionId:e,event:t,deviceId:n}){var r;null===(r=this.managers.get(t.type))||void 0===r||r.addEvent({sessionId:e,event:t,deviceId:n})}sendCurrentSequenceEvents({sessionId:e,deviceId:t}){this.managers.forEach((n=>{n.sendCurrentSequenceEvents({sessionId:e,deviceId:t})}))}flush(e){return t(this,void 0,void 0,(function*(){const t=[];this.managers.forEach((n=>{t.push(n.flush(e))})),yield Promise.all(t)}))}}const rt={Node:["childNodes","parentNode","parentElement","textContent"],ShadowRoot:["host","styleSheets"],Element:["shadowRoot","querySelector","querySelectorAll"],MutationObserver:[]},it={Node:["contains","getRootNode"],ShadowRoot:["getSelection"],Element:[],MutationObserver:["constructor"]},ot={};function st(e){if(ot[e])return ot[e];const t=function(e){var t,n;const r=null==(n=null==(t=null==globalThis?void 0:globalThis.Zone)?void 0:t.__symbol__)?void 0:n.call(t,e);return r&&globalThis[r]?globalThis[r]:void 0}(e)||globalThis[e],n=t.prototype,r=e in rt?rt[e]:void 0,i=Boolean(r&&r.every((e=>{var t,r;return Boolean(null==(r=null==(t=Object.getOwnPropertyDescriptor(n,e))?void 0:t.get)?void 0:r.toString().includes("[native code]"))}))),o=e in it?it[e]:void 0,s=Boolean(o&&o.every((e=>{var t;return"function"==typeof n[e]&&(null==(t=n[e])?void 0:t.toString().includes("[native code]"))})));if(i&&s)return ot[e]=t.prototype,t.prototype;try{const r=document.createElement("iframe");document.body.appendChild(r);const i=r.contentWindow;if(!i)return t.prototype;const o=i[e].prototype;return document.body.removeChild(r),o?ot[e]=o:n}catch{return n}}const at={};function lt(e,t,n){var r;const i=`${e}.${String(n)}`;if(at[i])return at[i].call(t);const o=st(e),s=null==(r=Object.getOwnPropertyDescriptor(o,n))?void 0:r.get;return s?(at[i]=s,s.call(t)):t[n]}const ct={};function dt(e,t,n){const r=`${e}.${String(n)}`;if(ct[r])return ct[r].bind(t);const i=st(e)[n];return"function"!=typeof i?t[n]:(ct[r]=i,i.bind(t))}const ut={childNodes:function(e){return lt("Node",e,"childNodes")},parentNode:function(e){return lt("Node",e,"parentNode")},parentElement:function(e){return lt("Node",e,"parentElement")},textContent:function(e){return lt("Node",e,"textContent")},contains:function(e,t){return dt("Node",e,"contains")(t)},getRootNode:function(e){return dt("Node",e,"getRootNode")()},host:function(e){return e&&"host"in e?lt("ShadowRoot",e,"host"):null},styleSheets:function(e){return e.styleSheets},shadowRoot:function(e){return e&&"shadowRoot"in e?lt("Element",e,"shadowRoot"):null},querySelector:function(e,t){return lt("Element",e,"querySelector")(t)},querySelectorAll:function(e,t){return lt("Element",e,"querySelectorAll")(t)},mutationObserver:function(){return st("MutationObserver").constructor}};function ht(){const e=v();return(null==e?void 0:e.innerHeight)||document.documentElement&&document.documentElement.clientHeight||document.body&&document.body.clientHeight||0}function vt(){const e=v();return(null==e?void 0:e.innerWidth)||document.documentElement&&document.documentElement.clientWidth||document.body&&document.body.clientWidth||0}let gt,ft,pt;function mt(e,t){if(pt=new Date,e.nodeType!==Node.ELEMENT_NODE)throw new Error("Can't generate CSS selector for non-element node type.");if("html"===e.tagName.toLowerCase())return"html";const n={root:document.body,idName:e=>!0,className:e=>!0,tagName:e=>!0,attr:(e,t)=>!1,seedMinLength:1,optimizedMinLength:2,threshold:1e3,maxNumberOfTries:1e4,timeoutMs:void 0};gt=Object.assign(Object.assign({},n),t),ft=function(e,t){if(e.nodeType===Node.DOCUMENT_NODE)return e;if(e===t.root)return e.ownerDocument;return e}(gt.root,n);let r=yt(e,"all",(()=>yt(e,"two",(()=>yt(e,"one",(()=>yt(e,"none")))))));if(r){const t=qt(Lt(r,e));return t.length>0&&(r=t[0]),bt(r)}throw new Error("Selector was not found.")}function yt(e,t,n){let r=null,i=[],o=e,s=0;for(;o;){const e=(new Date).getTime()-pt.getTime();if(void 0!==gt.timeoutMs&&e>gt.timeoutMs)throw new Error(`Timeout: Can't find a unique selector after ${e}ms`);let a=Ot(Ct(o))||Ot(...Et(o))||Ot(...Pt(o))||Ot(Tt(o))||[{name:"*",penalty:3}];const l=_t(o);if("all"==t)l&&(a=a.concat(a.filter(Rt).map((e=>kt(e,l)))));else if("two"==t)a=a.slice(0,1),l&&(a=a.concat(a.filter(Rt).map((e=>kt(e,l)))));else if("one"==t){const[e]=a=a.slice(0,1);l&&Rt(e)&&(a=[kt(e,l)])}else"none"==t&&(a=[{name:"*",penalty:3}],l&&(a=[kt(a[0],l)]));for(let e of a)e.level=s;if(i.push(a),i.length>=gt.seedMinLength&&(r=St(i,n),r))break;o=o.parentElement,s++}return r||(r=St(i,n)),!r&&n?n():r}function St(e,t){const n=qt(Mt(e));if(n.length>gt.threshold)return t?t():null;for(let e of n)if(It(e))return e;return null}function bt(e){let t=e[0],n=t.name;for(let r=1;r<e.length;r++){const i=e[r].level||0;n=t.level===i-1?`${e[r].name} > ${n}`:`${e[r].name} ${n}`,t=e[r]}return n}function wt(e){return e.map((e=>e.penalty)).reduce(((e,t)=>e+t),0)}function It(e){const t=bt(e);switch(ft.querySelectorAll(t).length){case 0:throw new Error(`Can't select any node with this selector: ${t}`);case 1:return!0;default:return!1}}function Ct(e){const t=e.getAttribute("id");return t&&gt.idName(t)?{name:"#"+CSS.escape(t),penalty:0}:null}function Et(e){const t=Array.from(e.attributes).filter((e=>gt.attr(e.name,e.value)));return t.map((e=>({name:`[${CSS.escape(e.name)}="${CSS.escape(e.value)}"]`,penalty:.5})))}function Pt(e){return Array.from(e.classList).filter(gt.className).map((e=>({name:"."+CSS.escape(e),penalty:1})))}function Tt(e){const t=e.tagName.toLowerCase();return gt.tagName(t)?{name:t,penalty:2}:null}function _t(e){const t=e.parentNode;if(!t)return null;let n=t.firstChild;if(!n)return null;let r=0;for(;n&&(n.nodeType===Node.ELEMENT_NODE&&r++,n!==e);)n=n.nextSibling;return r}function kt(e,t){return{name:e.name+`:nth-child(${t})`,penalty:e.penalty+1}}function Rt(e){return"html"!==e.name&&!e.name.startsWith("#")}function Ot(...e){const t=e.filter(xt);return t.length>0?t:null}function xt(e){return null!=e}function*Mt(e,t=[]){if(e.length>0)for(let n of e[0])yield*Mt(e.slice(1,e.length),t.concat(n));else yield t}function qt(e){return[...e].sort(((e,t)=>wt(e)-wt(t)))}function*Lt(e,t,n={counter:0,visited:new Map}){if(e.length>2&&e.length>gt.optimizedMinLength)for(let r=1;r<e.length-1;r++){if(n.counter>gt.maxNumberOfTries)return;n.counter+=1;const i=[...e];i.splice(r,1);const o=bt(i);if(n.visited.has(o))return;It(i)&&Nt(i,t)&&(yield i,n.visited.set(o,!0),yield*Lt(i,t,n))}}function Nt(e,t){return ft.querySelector(bt(e))===t}const Dt=({version:e,events:t})=>{const n=[];return t.forEach((e=>{const t=JSON.parse(e);t.count=1,"click"===t.type&&n.push(t)})),{version:e,events:n}},$t=({version:e,events:t})=>{const n=[];t.forEach((e=>{const t=JSON.parse(e);"click"===t.type&&n.push(t)}));const r=n.reduce(((e,t)=>{const{x:n,y:r,selector:i,timestamp:o}=t,s=o-o%36e5,a=`${n}:${r}:${null!=i?i:""}:${s}`;return e[a]?e[a].count+=1:e[a]=Object.assign(Object.assign({},t),{timestamp:s,count:1}),e}),{});return{version:e,events:Object.values(r)}},jt=(e,{eventsManager:t,sessionId:n,deviceIdFn:r,mirror:i,ugcFilterRules:o})=>s=>{if(s.type!==re.Click)return;const a=v();if(!a)return;const{location:l,innerHeight:c,innerWidth:d}=a;if(!l)return;const{x:u,y:h}=s;if(void 0===u||void 0===h)return;const g=i.getNode(s.id);let f;if(g)try{f=mt(g)}catch(t){e.debug("error resolving selector from finder")}const{left:p,top:m}=function(e){var t,n,r,i;const o=e.document;return{left:o.scrollingElement?o.scrollingElement.scrollLeft:void 0!==e.pageXOffset?e.pageXOffset:o.documentElement.scrollLeft||(null==o?void 0:o.body)&&(null===(t=ut.parentElement(o.body))||void 0===t?void 0:t.scrollLeft)||(null===(n=null==o?void 0:o.body)||void 0===n?void 0:n.scrollLeft)||0,top:o.scrollingElement?o.scrollingElement.scrollTop:void 0!==e.pageYOffset?e.pageYOffset:(null==o?void 0:o.documentElement.scrollTop)||(null==o?void 0:o.body)&&(null===(r=ut.parentElement(o.body))||void 0===r?void 0:r.scrollTop)||(null===(i=null==o?void 0:o.body)||void 0===i?void 0:i.scrollTop)||0}}(a),y={x:u+p,y:h+m,selector:f,viewportHeight:c,viewportWidth:d,pageUrl:J(l.href,o),timestamp:Date.now(),type:"click"},S=r();S&&t.addEvent({sessionId:n,event:{type:"interaction",data:JSON.stringify(y)},deviceId:S})};class Ut{constructor(e,t){const n=v();n&&n.navigator&&"function"==typeof n.navigator.sendBeacon?this.sendBeacon=(e,t)=>{try{if(n.navigator.sendBeacon(e,JSON.stringify(t)))return!0}catch(e){}return!1}:this.sendBeacon=()=>!1,this.sendXhr=(e,t)=>{const n=new XMLHttpRequest;return n.open("POST",e,!0),n.setRequestHeader("Accept","*/*"),n.send(JSON.stringify(t)),!0},this.basePageUrl=Q(t.serverZone,t.trackServerUrl),this.apiKey=t.apiKey,this.context=e}send(e,t){const{sessionId:n,type:r}=this.context,i=new URLSearchParams({device_id:e,session_id:String(n),type:String(r),api_key:this.apiKey}),o=`${this.basePageUrl}?${i.toString()}`;this.sendBeacon(o,t)||this.sendXhr(o,t)}}class Ft{static default(e,t){return new Ft(new Ut(e,t),t)}constructor(e,t){this.timestamp=Date.now(),this.hook=e=>{this.update(e)},this.send=e=>t=>{var n,r;const i=e(),o=v();o&&i&&this.transport.send(i,{version:1,events:[{maxScrollX:this._maxScrollX,maxScrollY:this._maxScrollY,maxScrollWidth:this._maxScrollWidth,maxScrollHeight:this._maxScrollHeight,viewportHeight:ht(),viewportWidth:vt(),pageUrl:J(o.location.href,null!==(r=null===(n=this.config.interactionConfig)||void 0===n?void 0:n.ugcFilterRules)&&void 0!==r?r:[]),timestamp:this.timestamp,type:"scroll"}]})},this._maxScrollX=0,this._maxScrollY=0,this._maxScrollWidth=vt(),this._maxScrollHeight=ht(),this.config=t,this.transport=e}get maxScrollX(){return this._maxScrollX}get maxScrollY(){return this._maxScrollY}get maxScrollWidth(){return this._maxScrollWidth}get maxScrollHeight(){return this._maxScrollHeight}update(e){const t=Date.now();if(e.x>this._maxScrollX){const n=vt();this._maxScrollX=e.x;const r=e.x+n;r>this._maxScrollWidth&&(this._maxScrollWidth=r),this.timestamp=t}if(e.y>this._maxScrollY){const n=ht();this._maxScrollY=e.y;const r=e.y+n;r>this._maxScrollHeight&&(this._maxScrollHeight=r),this.timestamp=t}}}class At{constructor({sessionId:e,deviceId:t}){this.deviceId=t,this.sessionId=e,e&&t&&(this.sessionReplayId=((e,t)=>`${t}/${e}`)(e,t))}}const Kt=new class{constructor(){this.dbs={},this.createStore=e=>t(this,void 0,void 0,(function*(){return yield o(e,1,{upgrade:e=>{e.objectStoreNames.contains("sessionTargetingMatch")||e.createObjectStore("sessionTargetingMatch",{keyPath:"sessionId"})}})})),this.openOrCreateDB=e=>t(this,void 0,void 0,(function*(){if(this.dbs&&this.dbs[e])return this.dbs[e];const t=`${e.substring(0,10)}_amp_session_replay_targeting`,n=yield this.createStore(t);return this.dbs[e]=n,n})),this.getTargetingMatchForSession=({loggerProvider:e,apiKey:n,sessionId:r})=>t(this,void 0,void 0,(function*(){try{const e=yield this.openOrCreateDB(n),t=String(r),i=yield e.get("sessionTargetingMatch",t);return null==i?void 0:i.targetingMatch}catch(t){e.warn(`Failed to get targeting match for session id ${r}: ${t}`)}})),this.storeTargetingMatchForSession=({loggerProvider:e,apiKey:n,sessionId:r,targetingMatch:i})=>t(this,void 0,void 0,(function*(){try{const e=yield this.openOrCreateDB(n),t=String(r);return yield e.put("sessionTargetingMatch",{targetingMatch:i,sessionId:t,lastUpdated:Date.now()})}catch(t){e.warn(`Failed to store targeting match for session id ${r}: ${t}`)}})),this.clearStoreOfOldSessions=({loggerProvider:e,apiKey:n,currentSessionId:r})=>t(this,void 0,void 0,(function*(){try{const e=yield this.openOrCreateDB(n),t=String(r),i=e.transaction("sessionTargetingMatch","readwrite"),o=yield i.store.getAll();for(let e=0;e<o.length;e++){const n=o[e],r=Date.now()-n.lastUpdated;n.sessionId!==t&&r>1728e5&&(yield i.store.delete(n.sessionId))}yield i.done}catch(t){e.warn(`Failed to clear old targeting matches for sessions: ${t}`)}}))}};function Bt(e={}){return{name:"amplitude/url-tracking@1",observer(t,n,r){var i,o,s;const a=Object.assign(Object.assign({},e),r),l=a.ugcFilterRules||[],c=null!==(i=a.enablePolling)&&void 0!==i&&i,d=null!==(o=a.pollingInterval)&&void 0!==o?o:1e3,u=null!==(s=a.captureDocumentTitle)&&void 0!==s&&s;if(!n)return()=>{};let h;const v=()=>n.location&&n.location.href||"",g=()=>{const e=v();if(void 0===h||e!==h){h=e;const r=(()=>{const{innerHeight:e,innerWidth:t,document:r}=n,i=v();let o="";return u&&(o=(null==r?void 0:r.title)||""),{href:l.length>0?J(i,l):i,title:o,viewportHeight:e,viewportWidth:t,type:"url-change-event"}})();t(r)}},f=e=>function(...t){const n=e.apply(this,t);return g(),n},p=()=>{g()};if(c){const e=n.setInterval((()=>{g()}),d);return g(),()=>{e&&n.clearInterval(e)}}if(n.history){const e=n.history.pushState.bind(n.history),t=n.history.replaceState.bind(n.history);return(()=>{n.history.pushState=f(e),n.history.replaceState=f(t)})(),n.addEventListener("popstate",g),n.addEventListener("hashchange",p),g(),()=>{n.history.pushState=e,n.history.replaceState=t,n.removeEventListener("popstate",g),n.removeEventListener("hashchange",p)}}return n.addEventListener("hashchange",p),g(),()=>{n.removeEventListener("hashchange",p)}},options:e}}class Wt{constructor(){this.name="@amplitude/session-replay-browser",this.recordCancelCallback=null,this.eventCount=0,this.sessionTargetingMatch=!1,this.pageLeaveFns=[],this.recordFunction=null,this.teardownEventListeners=e=>{const t=v();t&&(t.removeEventListener("blur",this.blurListener),t.removeEventListener("focus",this.focusListener),!e&&t.addEventListener("blur",this.blurListener),!e&&t.addEventListener("focus",this.focusListener),t.self&&"onpagehide"in t.self?(t.removeEventListener("pagehide",this.pageLeaveListener),!e&&t.addEventListener("pagehide",this.pageLeaveListener)):(t.removeEventListener("beforeunload",this.pageLeaveListener),!e&&t.addEventListener("beforeunload",this.pageLeaveListener)))},this.blurListener=()=>{this.sendEvents()},this.focusListener=()=>{this.recordEvents(!1)},this.pageLeaveListener=e=>{this.pageLeaveFns.forEach((t=>{t(e)}))},this.evaluateTargetingAndCapture=(e,n=!1)=>t(this,void 0,void 0,(function*(){if(this.identifiers&&this.identifiers.sessionId&&this.config){if(!this.config.targetingConfig){if(!n)return void this.loggerProvider.log("No targeting config set, skipping initialization/recording for event.");this.loggerProvider.log("Targeting config has not been set yet, cannot evaluate targeting.")}if(this.lastTargetingParams=e,this.config.targetingConfig&&!this.sessionTargetingMatch){let n=e.event;n&&Object.values(a).includes(n.event_type)&&(n=void 0),this.sessionTargetingMatch=yield(({sessionId:e,targetingConfig:n,loggerProvider:r,apiKey:i,targetingParams:o})=>t(void 0,void 0,void 0,(function*(){if(yield Kt.clearStoreOfOldSessions({loggerProvider:r,apiKey:i,currentSessionId:e}),!0===(yield Kt.getTargetingMatchForSession({loggerProvider:r,apiKey:i,sessionId:e})))return!0;let t=!0;try{const{evaluateTargeting:s}=yield import("./targeting-min.js").then((function(e){return e.i})),a=yield s(Object.assign(Object.assign({},o),{flag:n,sessionId:e,apiKey:i,loggerProvider:r}));a&&a.sr_targeting_config&&(t="on"===a.sr_targeting_config.key),Kt.storeTargetingMatchForSession({loggerProvider:r,apiKey:i,sessionId:e,targetingMatch:t})}catch(e){const t=e;r.warn(t.message)}return t})))({sessionId:this.identifiers.sessionId,targetingConfig:this.config.targetingConfig,loggerProvider:this.loggerProvider,apiKey:this.config.apiKey,targetingParams:{userProperties:e.userProperties,event:n}}),this.loggerProvider.debug(JSON.stringify({name:"targeted replay capture config",sessionTargetingMatch:this.sessionTargetingMatch,event:n,targetingParams:e},null,2))}n?this.initialize(!0):yield this.recordEvents()}else this.identifiers&&!this.identifiers.sessionId?this.loggerProvider.log("Session ID has not been set yet, cannot evaluate targeting for Session Replay."):this.loggerProvider.warn("Session replay init has not been called, cannot evaluate targeting.")})),this.addCustomRRWebEvent=(e,n={},r=!0)=>t(this,void 0,void 0,(function*(){try{let t;const i=this.config;if(i&&e!==A.METADATA&&(t={config:Z(i),version:ze},r)){const e=yield V();t=Object.assign(Object.assign({},e),t)}this.recordCancelCallback&&this.recordFunction?this.recordFunction.addCustomEvent(e,Object.assign(Object.assign({},n),t)):this.loggerProvider.debug(`Not able to add custom replay capture event ${e} due to no ongoing recording.`)}catch(e){this.loggerProvider.debug("Error while adding custom replay capture event: ",e)}})),this.stopRecordingEvents=()=>{var e;try{this.loggerProvider.log("Session Replay capture stopping."),this.recordCancelCallback&&this.recordCancelCallback(),this.recordCancelCallback=null,null===(e=this.networkObservers)||void 0===e||e.stop()}catch(e){const t=e;this.loggerProvider.warn(`Error occurred while stopping replay capture: ${t.toString()}`)}},this.loggerProvider=new K(new p)}init(e,t){return g(this._init(e,t))}_init(e,n){var r,i,o,s,a,l;return t(this,void 0,void 0,(function*(){this.loggerProvider=new K(n.loggerProvider||new p),Object.prototype.hasOwnProperty.call(n,"logLevel")&&this.loggerProvider.enable(n.logLevel),this.identifiers=new At({sessionId:n.sessionId,deviceId:n.deviceId}),this.joinedConfigGenerator=yield((e,n)=>t(void 0,void 0,void 0,(function*(){const t=new Y(e,n),r=yield le({localConfig:t,configKeys:["sessionReplay"]});return new ce(r,t)})))(e,n);const{joinedConfig:c,localConfig:d,remoteConfig:u}=yield this.joinedConfigGenerator.generateJoinedConfig(this.identifiers.sessionId);if(this.config=c,this.setMetadata(n.sessionId,c,d,u,null===(r=n.version)||void 0===r?void 0:r.version,ze,null===(i=n.version)||void 0===i?void 0:i.type),n.sessionId&&(null===(o=this.config.interactionConfig)||void 0===o?void 0:o.enabled)){const e=Ft.default({sessionId:n.sessionId,type:"interaction"},this.config);this.pageLeaveFns=[e.send(this.getDeviceId.bind(this)).bind(e)],this.scrollHook=e.hook.bind(e)}const h=[];let{storeType:g}=this.config;"idb"!==g||(null===(s=v())||void 0===s?void 0:s.indexedDB)||(g="memory",this.loggerProvider.warn("Could not use preferred indexedDB storage, reverting to in memory option.")),this.loggerProvider.log(`Using ${g} for event storage.`);try{const e=yield tt({config:this.config,sessionId:this.identifiers.sessionId,type:"replay",storeType:g});h.push({name:"replay",manager:e})}catch(e){const t=e;this.loggerProvider.warn(`Error occurred while creating replay events manager: ${t.toString()}`)}if(null===(a=this.config.interactionConfig)||void 0===a?void 0:a.enabled){const e=this.config.interactionConfig.batch?$t:Dt;try{const t=yield tt({config:this.config,sessionId:this.identifiers.sessionId,type:"interaction",minInterval:null!==(l=this.config.interactionConfig.trackEveryNms)&&void 0!==l?l:3e4,maxInterval:6e4,payloadBatcher:e,storeType:g});h.push({name:"interaction",manager:t})}catch(e){const t=e;this.loggerProvider.warn(`Error occurred while creating interaction events manager: ${t.toString()}`)}}this.eventsManager=new nt(...h),this.eventCompressor&&this.eventCompressor.terminate(),this.eventCompressor=new Be(this.eventsManager,this.config,this.getDeviceId()),yield this.initializeNetworkObservers(),this.loggerProvider.log("Installing @amplitude/session-replay-browser."),this.teardownEventListeners(!1),yield this.evaluateTargetingAndCapture({userProperties:n.userProperties},!0)}))}setSessionId(e,t){return g(this.asyncSetSessionId(e,t))}asyncSetSessionId(e,n,r){var i;return t(this,void 0,void 0,(function*(){this.sessionTargetingMatch=!1,this.lastShouldRecordDecision=void 0;const t=this.identifiers&&this.identifiers.sessionId;t&&this.sendEvents(t);const o=n||this.getDeviceId();if(this.identifiers=new At({sessionId:e,deviceId:o}),this.joinedConfigGenerator&&t){const{joinedConfig:e}=yield this.joinedConfigGenerator.generateJoinedConfig(this.identifiers.sessionId);this.config=e}(null===(i=this.config)||void 0===i?void 0:i.targetingConfig)?yield this.evaluateTargetingAndCapture({userProperties:null==r?void 0:r.userProperties}):yield this.recordEvents()}))}getSessionReplayProperties(){const e=this.config,t=this.identifiers;if(!e||!t)return this.loggerProvider.warn("Session replay init has not been called, cannot get session replay properties."),{};const n=this.getShouldRecord();let r={};return n&&(r={[D]:t.sessionReplayId?t.sessionReplayId:null},e.debugMode&&(r[U]=JSON.stringify({appHash:G(e.apiKey).toString()}))),this.addCustomRRWebEvent(A.GET_SR_PROPS,{shouldRecord:n,eventProperties:r},10===this.eventCount),10===this.eventCount&&(this.eventCount=0),this.eventCount++,r}sendEvents(e){var t;const n=e||(null===(t=this.identifiers)||void 0===t?void 0:t.sessionId),r=this.getDeviceId();this.eventsManager&&n&&r&&this.eventsManager.sendCurrentSequenceEvents({sessionId:n,deviceId:r})}initialize(e=!1){var n;return t(this,void 0,void 0,(function*(){if(!(null===(n=this.identifiers)||void 0===n?void 0:n.sessionId))return this.loggerProvider.log("Session is not being recorded due to lack of session id."),Promise.resolve();const t=this.getDeviceId();return t?(this.eventsManager&&e&&this.eventsManager.sendStoredEvents({deviceId:t}),this.recordEvents()):(this.loggerProvider.log("Session is not being recorded due to lack of device id."),Promise.resolve())}))}shouldOptOut(){var e,t;let n;if(null===(e=this.config)||void 0===e?void 0:e.instanceName){n=(r=this.config.instanceName,void 0===r&&(r=d),x.getInstance(r)).identityStore.getIdentity().optOut}var r;return void 0!==n?n:null===(t=this.config)||void 0===t?void 0:t.optOut}getShouldRecord(){if(!this.identifiers||!this.config||!this.identifiers.sessionId)return this.loggerProvider.warn("Session is not being recorded due to lack of config, please call sessionReplay.init."),!1;if(!this.config.captureEnabled)return this.loggerProvider.log(`Session ${this.identifiers.sessionId} not being captured due to capture being disabled for project or because the remote config could not be fetched.`),!1;if(this.shouldOptOut())return this.loggerProvider.log(`Opting session ${this.identifiers.sessionId} out of recording due to optOut config.`),!1;let e=!1,t="",n=!1;if(this.config.targetingConfig)this.sessionTargetingMatch?(t=`Capturing replays for session ${this.identifiers.sessionId} due to matching targeting conditions.`,this.loggerProvider.log(t),e=!0,n=!0):(t=`Not capturing replays for session ${this.identifiers.sessionId} due to not matching targeting conditions.`,this.loggerProvider.log(t),e=!1,n=!1);else{(function(e,t){const n=G(e.toString());return 31*Math.abs(n)%1e6/1e6<t})(this.identifiers.sessionId,this.config.sampleRate)?(e=!0,n=!0):(t=`Opting session ${this.identifiers.sessionId} out of recording due to sample rate.`,this.loggerProvider.log(t),e=!1,n=!1)}return this.lastShouldRecordDecision!==e&&this.config.targetingConfig&&(this.addCustomRRWebEvent(A.TARGETING_DECISION,{message:t,sessionId:this.identifiers.sessionId,matched:n,targetingParams:this.lastTargetingParams}),this.lastShouldRecordDecision=e),e}getBlockSelectors(){var e,t,n;const r=null!==(n=null===(t=null===(e=this.config)||void 0===e?void 0:e.privacyConfig)||void 0===t?void 0:t.blockSelector)&&void 0!==n?n:[];if(0!==r.length)return r}getMaskTextSelectors(){var e,t,n,r;if("conservative"===(null===(t=null===(e=this.config)||void 0===e?void 0:e.privacyConfig)||void 0===t?void 0:t.defaultMaskLevel))return"*";const i=null===(r=null===(n=this.config)||void 0===n?void 0:n.privacyConfig)||void 0===r?void 0:r.maskSelector;return i||void 0}getRecordingPlugins(e){var n,r,i,o,s,a;return t(this,void 0,void 0,(function*(){const t=[];try{const e=Bt({ugcFilterRules:(null===(r=null===(n=this.config)||void 0===n?void 0:n.interactionConfig)||void 0===r?void 0:r.ugcFilterRules)||[],enablePolling:(null===(i=this.config)||void 0===i?void 0:i.enableUrlChangePolling)||!1,pollingInterval:null===(o=this.config)||void 0===o?void 0:o.urlChangePollingInterval,captureDocumentTitle:null===(s=this.config)||void 0===s?void 0:s.captureDocumentTitle});t.push(e)}catch(e){this.loggerProvider.warn("Failed to create URL tracking plugin:",e)}if(null===(a=null==e?void 0:e.console)||void 0===a?void 0:a.enabled)try{const{getRecordConsolePlugin:n}=yield import("./console-plugin-min.js");t.push(n({level:e.console.levels}))}catch(e){this.loggerProvider.warn("Failed to load console plugin:",e)}return t.length>0?t:void 0}))}getRecordFunction(){return t(this,void 0,void 0,(function*(){if(this.recordFunction)return this.recordFunction;try{const{record:e}=yield import("./rrweb-record-min.js");return this.recordFunction=e,e}catch(e){return this.loggerProvider.warn("Failed to load rrweb-record module:",e),null}}))}recordEvents(e=!0){var n,r,i,o,s;return t(this,void 0,void 0,(function*(){const t=this.config,a=this.getShouldRecord(),l=null===(n=this.identifiers)||void 0===n?void 0:n.sessionId;if(!a||!l||!t)return;this.stopRecordingEvents();const c=yield this.getRecordFunction();if(!c)return;yield this.initializeNetworkObservers(),null===(r=this.networkObservers)||void 0===r||r.start((e=>{this.addCustomRRWebEvent(A.FETCH_REQUEST,e)}));const{privacyConfig:d,interactionConfig:u,loggingConfig:h}=t,v=(null==u?void 0:u.enabled)?{mouseInteraction:this.eventsManager&&jt(this.loggerProvider,{eventsManager:this.eventsManager,sessionId:l,deviceIdFn:this.getDeviceId.bind(this),mirror:c.mirror,ugcFilterRules:null!==(i=u.ugcFilterRules)&&void 0!==i?i:[]}),scroll:this.scrollHook}:{},g=(null==u?void 0:u.enabled)&&u.ugcFilterRules?u.ugcFilterRules:[];this.loggerProvider.log(`Session Replay capture beginning for ${l}.`);try{this.recordCancelCallback=c({emit:e=>{if(this.shouldOptOut())return this.loggerProvider.log(`Opting session ${l} out of recording due to optOut config.`),this.stopRecordingEvents(),void this.sendEvents();e.type===ne.Meta&&(e.data.href=J(e.data.href,g)),this.eventCompressor&&this.eventCompressor.enqueueEvent(e,l)},inlineStylesheet:t.shouldInlineStylesheet,hooks:v,maskAllInputs:!0,maskTextClass:F,blockClass:"amp-block",blockSelector:this.getBlockSelectors(),applyBackgroundColorToBlockedElements:t.applyBackgroundColorToBlockedElements,maskInputFn:z("input",d),maskTextFn:z("text",d),maskTextSelector:this.getMaskTextSelectors(),recordCanvas:!1,slimDOMOptions:{script:null===(o=t.omitElementTags)||void 0===o?void 0:o.script,comment:null===(s=t.omitElementTags)||void 0===s?void 0:s.comment},errorHandler:e=>{const t=e;if(t.message.includes("insertRule")&&t.message.includes("CSSStyleSheet"))throw t;if(t._external_)throw t;return this.loggerProvider.warn("Error while capturing replay: ",t.toString()),!0},plugins:yield this.getRecordingPlugins(h)}),this.addCustomRRWebEvent(A.DEBUG_INFO),e&&this.addCustomRRWebEvent(A.METADATA,this.metadata)}catch(e){this.loggerProvider.warn("Failed to initialize session replay:",e)}}))}getDeviceId(){var e;return null===(e=this.identifiers)||void 0===e?void 0:e.deviceId}getSessionId(){var e;return null===(e=this.identifiers)||void 0===e?void 0:e.sessionId}flush(e=!1){var n;return t(this,void 0,void 0,(function*(){return null===(n=this.eventsManager)||void 0===n?void 0:n.flush(e)}))}shutdown(){this.teardownEventListeners(!0),this.stopRecordingEvents(),this.sendEvents()}mapSDKType(e){return"plugin"===e?"@amplitude/plugin-session-replay-browser":"segment"===e?"@amplitude/segment-session-replay-plugin":null}setMetadata(e,t,n,r,i,o,s){const a=(null==e?void 0:e.toString())?G(e.toString()):void 0;this.metadata={joinedConfig:t,localConfig:n,remoteConfig:r,sessionId:e,hashValue:a,sampleRate:t.sampleRate,replaySDKType:this.mapSDKType(s),replaySDKVersion:i,standaloneSDKType:"@amplitude/session-replay-browser",standaloneSDKVersion:o}}initializeNetworkObservers(){var e,n,r;return t(this,void 0,void 0,(function*(){if((null===(r=null===(n=null===(e=this.config)||void 0===e?void 0:e.loggingConfig)||void 0===n?void 0:n.network)||void 0===r?void 0:r.enabled)&&!this.networkObservers)try{const{NetworkObservers:e}=yield import("./observers-min.js");this.networkObservers=new e}catch(e){this.loggerProvider.warn("Failed to import or instantiate NetworkObservers:",e)}}))}}const zt=e=>()=>{const{config:t}=e,{loggerProvider:n,logLevel:r}=t||X();return{logger:n,logLevel:r}};var Gt=(()=>{const e=new Wt;return{init:M(e.init.bind(e),"init",zt(e)),evaluateTargetingAndCapture:M(e.evaluateTargetingAndCapture.bind(e),"evaluateTargetingAndRecord",zt(e)),setSessionId:M(e.setSessionId.bind(e),"setSessionId",zt(e)),getSessionId:M(e.getSessionId.bind(e),"getSessionId",zt(e)),getSessionReplayProperties:M(e.getSessionReplayProperties.bind(e),"getSessionReplayProperties",zt(e)),flush:M(e.flush.bind(e),"flush",zt(e)),shutdown:M(e.shutdown.bind(e),"shutdown",zt(e))}})();const{init:Qt,setSessionId:Ht,getSessionId:Jt,getSessionReplayProperties:Vt,flush:Zt,shutdown:Xt,evaluateTargetingAndCapture:Yt}=Gt;export{K as S,Jt as a,Vt as b,Xt as c,Yt as e,Zt as f,v as g,Qt as i,Ht as s};
2
+ //# sourceMappingURL=index-min.js.map
Binary file