@openreplay/tracker 17.2.1 → 17.2.2
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.
- package/dist/cjs/entry.js +15 -7
- package/dist/cjs/entry.js.map +1 -1
- package/dist/cjs/index.js +15 -7
- package/dist/cjs/index.js.map +1 -1
- package/dist/lib/entry.js +15 -7
- package/dist/lib/entry.js.map +1 -1
- package/dist/lib/index.js +15 -7
- package/dist/lib/index.js.map +1 -1
- package/package.json +1 -1
package/dist/lib/entry.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry.js","sources":["../../build/main/modules/attributeSender.js","../../build/main/modules/conditionsManager.js","../../build/main/utils.js","../../build/main/app/messages.gen.js","../../build/main/modules/performance.js","../../build/main/modules/tagWatcher.js","../../build/main/app/guards.js","../../build/main/app/canvas.js","../../build/main/app/logger.js","../../build/main/app/nodes/maintainer.js","../../build/main/app/nodes/idSeq.js","../../build/main/app/nodes/index.js","../../build/main/app/observer/cssInliner.js","../../build/main/modules/constructedStyleSheets.js","../../build/main/app/observer/observer.js","../../build/main/app/observer/iframe_observer.js","../../build/main/app/observer/shadow_root_observer.js","../../build/main/app/observer/iframe_offsets.js","../../build/main/app/observer/top_observer.js","../../build/main/app/sanitizer.js","../../build/main/app/session.js","../../build/main/app/ticker.js","../../build/main/app/index.js","../../build/main/modules/connection.js","../../build/main/modules/console.js","../../../node_modules/error-stack-parser-es/dist/lite.mjs","../../../node_modules/error-stack-parser-es/dist/index.mjs","../../build/main/modules/exception.js","../../build/main/modules/img.js","../../build/main/modules/input.js","../../build/main/modules/mouse.js","../../../node_modules/web-vitals/dist/web-vitals.js","../../build/main/modules/timing.js","../../build/main/modules/scroll.js","../../build/main/modules/viewport.js","../../build/main/modules/cssrules.js","../../build/main/modules/focus.js","../../build/main/modules/fonts.js","../../build/main/modules/axiosSpy.js","../../../node_modules/@openreplay/network-proxy/dist/sanitizers.js","../../../node_modules/@openreplay/network-proxy/dist/networkMessage.js","../../../node_modules/@openreplay/network-proxy/dist/utils.js","../../../node_modules/@openreplay/network-proxy/dist/beaconProxy.js","../../../node_modules/@openreplay/network-proxy/dist/fetchProxy.js","../../../node_modules/@openreplay/network-proxy/dist/types.js","../../../node_modules/@openreplay/network-proxy/dist/xhrProxy.js","../../../node_modules/@openreplay/network-proxy/dist/index.js","../../build/main/modules/network.js","../../build/main/modules/selection.js","../../build/main/modules/tabs.js","../../build/main/modules/longAnimationTask.js","../../build/main/modules/webAnimations.js","../../build/main/modules/analytics/utils.js","../../build/main/modules/analytics/constantProperties.js","../../build/main/modules/analytics/types.js","../../build/main/modules/analytics/events.js","../../build/main/modules/analytics/people.js","../../build/main/modules/analytics/batcher.js","../../build/main/modules/analytics/index.js","../../build/main/index.js","../../build/main/singleton.js"],"sourcesContent":["export class StringDictionary {\n constructor() {\n this.lastTs = 0;\n this.lastSuffix = 1;\n /** backwards dictionary of\n * [repeated str:key]\n * */\n this.backDict = {};\n this.getKey = (str) => {\n let isNew = false;\n // avoiding potential native object properties\n const safeKey = `__${str}`;\n if (!this.backDict[safeKey]) {\n isNew = true;\n // shaving the first 2 digits of the timestamp (since they are irrelevant for next millennia)\n const shavedTs = Date.now() % 10 ** (13 - 2);\n let id = shavedTs;\n if (id === this.lastTs) {\n id = id * 10000 + this.lastSuffix;\n this.lastSuffix += 1;\n }\n else {\n this.lastSuffix = 1;\n }\n this.backDict[safeKey] = id;\n this.lastTs = shavedTs;\n }\n return [this.backDict[safeKey], isNew];\n };\n }\n}\nexport default class AttributeSender {\n constructor(options) {\n this.sendSetAttribute = (id, name, value) => {\n if (this.isDictDisabled) {\n const msg = [12 /* Type.SetNodeAttribute */, id, name, value];\n return this.app.send(msg);\n }\n else {\n const message = [\n 35 /* Type.SetNodeAttributeDictGlobal */,\n id,\n this.applyDict(name),\n this.applyDict(value),\n ];\n return this.app.send(message);\n }\n };\n this.app = options.app;\n this.isDictDisabled = options.isDictDisabled;\n this.dict = new StringDictionary();\n }\n applyDict(str) {\n const [key, isNew] = this.dict.getKey(str);\n if (isNew) {\n this.app.send([34 /* Type.StringDictGlobal */, key, str]);\n }\n return key;\n }\n clear() {\n this.dict = new StringDictionary();\n }\n}\n","export default class ConditionsManager {\n constructor(app, startParams) {\n this.app = app;\n this.startParams = startParams;\n this.conditions = [];\n this.hasStarted = false;\n this.createConditionFromFilter = (filter) => {\n const resultCondition = mapCondition(filter);\n if (resultCondition.type) {\n return resultCondition;\n }\n };\n this.durationInt = null;\n }\n setConditions(conditions) {\n this.conditions = conditions;\n }\n async fetchConditions(projectId, token) {\n try {\n const r = await fetch(`${this.app.options.ingestPoint}/v1/web/conditions/${projectId}`, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n const { conditions } = (await r.json());\n const mappedConditions = [];\n conditions.forEach((c) => {\n const filters = c.filters;\n filters.forEach((filter) => {\n let cond;\n if (filter.type === 'fetch') {\n cond = {\n type: 'network_request',\n subConditions: [],\n name: c.name,\n };\n filter.filters.forEach((f) => {\n const subCond = this.createConditionFromFilter(f);\n if (subCond) {\n ;\n cond.subConditions.push(subCond);\n }\n });\n }\n else {\n cond = this.createConditionFromFilter(filter);\n }\n if (cond) {\n if (cond.type === 'session_duration') {\n this.processDuration(cond.value[0], c.name);\n }\n mappedConditions.push({ ...cond, name: c.name });\n }\n });\n });\n this.conditions = mappedConditions;\n }\n catch (e) {\n this.app.debug.error('Critical: cannot fetch start conditions');\n }\n }\n trigger(conditionName) {\n if (this.hasStarted)\n return;\n try {\n this.hasStarted = true;\n void this.app.start(this.startParams, undefined, conditionName);\n }\n catch (e) {\n this.app.debug.error(e);\n }\n }\n processMessage(message) {\n if (this.hasStarted)\n return;\n switch (message[0]) {\n case 78 /* Type.JSException */:\n this.jsExceptionEvent(message);\n break;\n case 27 /* Type.CustomEvent */:\n this.customEvent(message);\n break;\n case 68 /* Type.MouseClick */:\n this.clickEvent(message);\n break;\n case 122 /* Type.SetPageLocation */:\n this.pageLocationEvent(message);\n break;\n case 83 /* Type.NetworkRequest */:\n this.networkRequest(message);\n break;\n default:\n break;\n }\n }\n processFlags(flag) {\n const flagConds = this.conditions.filter((c) => c.type === 'feature_flag');\n if (flagConds.length) {\n flagConds.forEach((flagCond) => {\n const operator = operators[flagCond.operator];\n if (operator && flag.find((f) => operator(f.key, flagCond.value))) {\n this.trigger(flagCond.name);\n }\n });\n }\n }\n processDuration(durationMs, condName) {\n this.durationInt = setInterval(() => {\n const sessionLength = performance.now();\n if (sessionLength > durationMs) {\n this.trigger(condName);\n }\n }, 1000);\n this.app.attachStopCallback(() => {\n if (this.durationInt) {\n clearInterval(this.durationInt);\n }\n });\n }\n networkRequest(message) {\n // method - 2, url - 3, status - 6, duration - 8\n const reqConds = this.conditions.filter((c) => c.type === 'network_request');\n if (!reqConds.length)\n return;\n reqConds.forEach((reqCond) => {\n const validSubConditions = reqCond.subConditions.filter((c) => c.operator !== 'isAny');\n if (validSubConditions.length) {\n const allPass = validSubConditions.every((subCond) => {\n let value;\n switch (subCond.key) {\n case 'url':\n value = message[3];\n break;\n case 'status':\n value = message[6];\n break;\n case 'method':\n value = message[2];\n break;\n case 'duration':\n value = message[8];\n break;\n default:\n break;\n }\n const operator = operators[subCond.operator];\n // @ts-ignore\n if (operator && operator(value, subCond.value)) {\n return true;\n }\n });\n if (allPass) {\n this.trigger(reqCond.name);\n }\n }\n else if (validSubConditions.length === 0 && reqCond.subConditions.length) {\n this.trigger(reqCond.name);\n }\n });\n }\n customEvent(message) {\n // name - 1, payload - 2\n const evConds = this.conditions.filter((c) => c.type === 'custom_event');\n if (evConds.length) {\n evConds.forEach((evCond) => {\n const operator = operators[evCond.operator];\n if (operator &&\n (operator(message[1], evCond.value) || operator(message[2], evCond.value))) {\n this.trigger(evCond.name);\n }\n });\n }\n }\n clickEvent(message) {\n // label - 3, selector - 4\n const clickCond = this.conditions.filter((c) => c.type === 'click');\n if (clickCond.length) {\n clickCond.forEach((click) => {\n const operator = operators[click.operator];\n if (operator && (operator(message[3], click.value) || operator(message[4], click.value))) {\n this.trigger(click.name);\n }\n });\n }\n }\n pageLocationEvent(message) {\n // url - 1\n const urlConds = this.conditions.filter((c) => c.type === 'visited_url');\n if (urlConds) {\n urlConds.forEach((urlCond) => {\n const operator = operators[urlCond.operator];\n if (operator && operator(message[1], urlCond.value)) {\n this.trigger(urlCond.name);\n }\n });\n }\n }\n jsExceptionEvent(message) {\n // name - 1, message - 2, payload - 3\n const testedValues = [message[1], message[2], message[3]];\n const exceptionConds = this.conditions.filter((c) => c.type === 'exception');\n if (exceptionConds) {\n exceptionConds.forEach((exceptionCond) => {\n const operator = operators[exceptionCond.operator];\n if (operator && testedValues.some((val) => operator(val, exceptionCond.value))) {\n this.trigger(exceptionCond.name);\n }\n });\n }\n }\n}\nconst operators = {\n is: (val, target) => target.some((t) => val.includes(t)),\n isAny: () => true,\n isNot: (val, target) => !target.some((t) => val.includes(t)),\n contains: (val, target) => target.some((t) => val.includes(t)),\n notContains: (val, target) => !target.some((t) => val.includes(t)),\n startsWith: (val, target) => target.some((t) => val.startsWith(t)),\n endsWith: (val, target) => target.some((t) => val.endsWith(t)),\n greaterThan: (val, target) => val > target,\n greaterOrEqual: (val, target) => val >= target,\n lessOrEqual: (val, target) => val <= target,\n lessThan: (val, target) => val < target,\n};\nconst mapCondition = (condition) => {\n const opMap = {\n on: 'is',\n notOn: 'isNot',\n '\\u003e': 'greaterThan',\n '\\u003c': 'lessThan',\n '\\u003d': 'is',\n '\\u003c=': 'lessOrEqual',\n '\\u003e=': 'greaterOrEqual',\n };\n const mapOperator = (operator) => {\n const keys = Object.keys(opMap);\n // @ts-ignore\n if (keys.includes(operator))\n return opMap[operator];\n };\n let con = {\n type: '',\n operator: '',\n value: condition.value,\n key: '',\n };\n switch (condition.type) {\n case 'click':\n con = {\n type: 'click',\n operator: mapOperator(condition.operator),\n value: condition.value,\n key: '',\n };\n break;\n case 'location':\n con = {\n type: 'visited_url',\n // @ts-ignore\n operator: condition.operator,\n value: condition.value,\n key: '',\n };\n break;\n case 'custom':\n con = {\n type: 'custom_event',\n // @ts-ignore\n operator: condition.operator,\n value: condition.value,\n key: '',\n };\n break;\n case 'metadata':\n con = {\n // @ts-ignore\n type: condition.source === 'featureFlag' ? 'feature_flag' : condition.type,\n // @ts-ignore\n operator: condition.operator,\n value: condition.value,\n key: '',\n };\n break;\n case 'error':\n con = {\n type: 'exception',\n // @ts-ignore\n operator: condition.operator,\n value: condition.value,\n key: '',\n };\n break;\n case 'duration':\n con = {\n type: 'session_duration',\n // @ts-ignore\n value: condition.value,\n key: '',\n operator: 'is',\n };\n break;\n case 'fetchUrl':\n con = {\n type: 'network_request',\n key: 'url',\n operator: condition.operator,\n value: condition.value,\n };\n break;\n case 'fetchStatusCode':\n con = {\n type: 'network_request',\n key: 'status',\n operator: mapOperator(condition.operator),\n value: condition.value,\n };\n break;\n case 'fetchMethod':\n con = {\n type: 'network_request',\n key: 'method',\n operator: mapOperator(condition.operator),\n value: condition.value,\n };\n break;\n case 'fetchDuration':\n con = {\n type: 'network_request',\n key: 'duration',\n operator: mapOperator(condition.operator),\n value: condition.value,\n };\n break;\n }\n // @ts-ignore\n return con;\n};\n","const DEPRECATED_ATTRS = { htmlmasked: 'hidden', masked: 'obscured' };\nexport const IN_BROWSER = !(typeof window === 'undefined');\nexport const IS_FIREFOX = IN_BROWSER && navigator.userAgent.match(/firefox|fxios/i);\nexport const MAX_STR_LEN = 1e5;\n// Buggy to use `performance.timeOrigin || performance.timing.navigationStart`\n// https://github.com/mdn/content/issues/4713\n// Maybe move to timer/ticker\nlet timeOrigin = IN_BROWSER ? Date.now() - performance.now() : 0;\nexport function adjustTimeOrigin() {\n timeOrigin = Date.now() - performance.now();\n}\nexport function getTimeOrigin() {\n return timeOrigin;\n}\nexport const now = IN_BROWSER && !!performance.now\n ? () => Math.round(performance.now() + timeOrigin)\n : () => Date.now();\nexport const stars = 'repeat' in String.prototype\n ? (str) => '*'.repeat(str.length)\n : (str) => str.replace(/./g, '*');\nexport function normSpaces(str) {\n return str ? str.trim().replace(/\\s+/g, ' ') : '';\n}\n// isAbsoluteUrl regexp: /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url)\nexport function isURL(s) {\n return s.startsWith('https://') || s.startsWith('http://');\n}\n// TODO: JOIN IT WITH LOGGER somehow (use logging decorators?); Don't forget about index.js loggin when there is no logger instance.\nexport const DOCS_HOST = 'https://docs.openreplay.com';\nconst warnedFeatures = {};\nexport function deprecationWarn(nameOfFeature, useInstead, docsPath = '/') {\n if (warnedFeatures[nameOfFeature]) {\n return;\n }\n console.warn(`OpenReplay: ${nameOfFeature} is deprecated. ${useInstead ? `Please, use ${useInstead} instead.` : ''} Visit ${DOCS_HOST}${docsPath} for more information.`);\n warnedFeatures[nameOfFeature] = true;\n}\nexport function getLabelAttribute(e) {\n let value = e.getAttribute('data-openreplay-label');\n if (value !== null) {\n return value;\n }\n value = e.getAttribute('data-asayer-label');\n if (value !== null) {\n deprecationWarn('\"data-asayer-label\" attribute', '\"data-openreplay-label\" attribute', '/');\n }\n return value;\n}\nexport function hasOpenreplayAttribute(e, attr) {\n const newName = `data-openreplay-${attr}`;\n if (e.hasAttribute(newName)) {\n // @ts-ignore\n if (DEPRECATED_ATTRS[attr]) {\n deprecationWarn(`\"${newName}\" attribute`, \n // @ts-ignore\n `\"${DEPRECATED_ATTRS[attr]}\" attribute`, '/en/sdk/sanitize-data');\n }\n return true;\n }\n return false;\n}\n/**\n * checks if iframe is accessible\n **/\nexport function canAccessIframe(iframe) {\n try {\n return Boolean(iframe.contentDocument);\n }\n catch (e) {\n return false;\n }\n}\nexport function canAccessTarget(target) {\n try {\n if (target instanceof HTMLIFrameElement) {\n void target.contentDocument;\n }\n else if (target instanceof Window) {\n void target.document;\n }\n else if (target instanceof Document) {\n void target.defaultView;\n }\n else if ('nodeType' in target) {\n void target.nodeType;\n }\n else if ('addEventListener' in target) {\n void target.addEventListener;\n }\n return true;\n }\n catch (e) {\n if (e instanceof DOMException && e.name === 'SecurityError') {\n return false;\n }\n }\n return true;\n}\nfunction dec2hex(dec) {\n return dec.toString(16).padStart(2, '0');\n}\nexport function generateRandomId(len) {\n const arr = new Uint8Array((len || 40) / 2);\n // msCrypto = IE11\n // @ts-ignore\n const safeCrypto = window.crypto || window.msCrypto;\n if (safeCrypto) {\n safeCrypto.getRandomValues(arr);\n return Array.from(arr, dec2hex).join('');\n }\n else {\n return Array.from({ length: len || 40 }, () => dec2hex(Math.floor(Math.random() * 16))).join('');\n }\n}\nexport function inIframe() {\n try {\n return window.self && window.top && window.self !== window.top;\n }\n catch (e) {\n return true;\n }\n}\n/**\n * Because angular devs decided that its a good idea to override a browser apis\n * we need to use this to achieve safe behavior\n * */\nexport function ngSafeBrowserMethod(method) {\n // @ts-ignore\n return window.Zone && '__symbol__' in window.Zone\n ? // @ts-ignore\n window['Zone']['__symbol__'](method)\n : method;\n}\nexport function createMutationObserver(cb, forceNgOff) {\n if (!forceNgOff) {\n const mObserver = ngSafeBrowserMethod('MutationObserver');\n return new window[mObserver](cb);\n }\n else {\n return new MutationObserver(cb);\n }\n}\nexport function createEventListener(target, event, cb, capture, forceNgOff) {\n // we need to check if target is crossorigin frame or no and if we can access it\n if (!canAccessTarget(target)) {\n return;\n }\n let safeAddEventListener = 'addEventListener';\n if (!forceNgOff) {\n safeAddEventListener = ngSafeBrowserMethod('addEventListener');\n }\n try {\n // parent has angular, but child frame don't\n if (target[safeAddEventListener]) {\n target[safeAddEventListener](event, cb, capture);\n }\n else {\n // @ts-ignore\n target.addEventListener(event, cb, capture);\n }\n }\n catch (e) {\n const msg = e.message;\n console.error(\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n `Openreplay: ${msg}; if this error is caused by an IframeObserver, ignore it`, event, target);\n }\n}\nexport function deleteEventListener(target, event, cb, capture, forceNgOff) {\n if (!canAccessTarget(target)) {\n return;\n }\n let safeRemoveEventListener = 'removeEventListener';\n if (!forceNgOff) {\n safeRemoveEventListener = ngSafeBrowserMethod('removeEventListener');\n }\n try {\n if (target[safeRemoveEventListener]) {\n target[safeRemoveEventListener](event, cb, capture);\n }\n else {\n // @ts-ignore\n target.removeEventListener(event, cb, capture);\n }\n }\n catch (e) {\n const msg = e.message;\n console.error(\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n `Openreplay: ${msg}; if this error is caused by an IframeObserver, ignore it`, event, target);\n }\n}\nclass FIFOTaskScheduler {\n constructor() {\n this.taskQueue = [];\n this.isRunning = false;\n }\n // Adds a task to the queue\n addTask(task) {\n this.taskQueue.push(task);\n this.runTasks();\n }\n // Runs tasks from the queue\n runTasks() {\n if (this.isRunning || this.taskQueue.length === 0) {\n return;\n }\n this.isRunning = true;\n const executeNextTask = () => {\n if (this.taskQueue.length === 0) {\n this.isRunning = false;\n return;\n }\n // Get the next task and execute it\n const nextTask = this.taskQueue.shift();\n Promise.resolve(nextTask()).then(() => {\n requestAnimationFrame(() => executeNextTask());\n });\n };\n executeNextTask();\n }\n}\nconst scheduler = new FIFOTaskScheduler();\nexport function requestIdleCb(callback) {\n // performance improvement experiment;\n scheduler.addTask(callback);\n /**\n * This is a brief polyfill that suits our needs\n * I took inspiration from Microsoft Clarity polyfill on this one\n * then adapted it a little bit\n *\n * I'm very grateful for their bright idea\n * */\n // const taskTimeout = 3000\n // if (window.requestIdleCallback) {\n // return window.requestIdleCallback(callback, { timeout: taskTimeout })\n // } else {\n // const channel = new MessageChannel()\n // const incoming = channel.port1\n // const outgoing = channel.port2\n //\n // incoming.onmessage = (): void => {\n // callback()\n // }\n // requestAnimationFrame((): void => {\n // outgoing.postMessage(1)\n // })\n // }\n}\nexport function simpleMerge(defaultObj, givenObj) {\n const result = { ...defaultObj };\n for (const key in givenObj) {\n // eslint-disable-next-line no-prototype-builtins\n if (givenObj.hasOwnProperty(key)) {\n const userOptionValue = givenObj[key];\n const defaultOptionValue = defaultObj[key];\n if (typeof userOptionValue === 'object' &&\n !Array.isArray(userOptionValue) &&\n userOptionValue !== null) {\n result[key] = simpleMerge(defaultOptionValue || {}, userOptionValue);\n }\n else {\n result[key] = userOptionValue;\n }\n }\n }\n return result;\n}\nexport function throttleWithTrailing(fn, interval) {\n const lastCalls = new Map();\n const timeouts = new Map();\n const lastArgs = new Map();\n const throttled = function (key, ...args) {\n const now = Date.now();\n const lastCall = lastCalls.get(key) ?? 0;\n const remaining = interval - (now - lastCall);\n lastArgs.set(key, args);\n if (remaining <= 0) {\n if (timeouts.has(key)) {\n clearTimeout(timeouts.get(key));\n timeouts.delete(key);\n }\n lastCalls.set(key, now);\n fn(key, ...args);\n }\n else if (!timeouts.has(key)) {\n const timeoutId = setTimeout(() => {\n lastCalls.set(key, Date.now());\n timeouts.delete(key);\n const finalArgs = lastArgs.get(key);\n fn(key, ...finalArgs);\n }, remaining);\n timeouts.set(key, timeoutId);\n }\n };\n throttled.clear = () => {\n for (const timeout of timeouts.values()) {\n clearTimeout(timeout);\n }\n timeouts.clear();\n lastArgs.clear();\n lastCalls.clear();\n };\n return throttled;\n}\n","// Auto-generated, do not edit\n/* eslint-disable */\nexport function Timestamp(timestamp) {\n return [\n 0 /* Messages.Type.Timestamp */,\n timestamp,\n ];\n}\nexport function SetPageLocationDeprecated(url, referrer, navigationStart) {\n return [\n 4 /* Messages.Type.SetPageLocationDeprecated */,\n url,\n referrer,\n navigationStart,\n ];\n}\nexport function SetViewportSize(width, height) {\n return [\n 5 /* Messages.Type.SetViewportSize */,\n width,\n height,\n ];\n}\nexport function SetViewportScroll(x, y) {\n return [\n 6 /* Messages.Type.SetViewportScroll */,\n x,\n y,\n ];\n}\nexport function CreateDocument() {\n return [\n 7 /* Messages.Type.CreateDocument */,\n ];\n}\nexport function CreateElementNode(id, parentID, index, tag, svg) {\n return [\n 8 /* Messages.Type.CreateElementNode */,\n id,\n parentID,\n index,\n tag,\n svg,\n ];\n}\nexport function CreateTextNode(id, parentID, index) {\n return [\n 9 /* Messages.Type.CreateTextNode */,\n id,\n parentID,\n index,\n ];\n}\nexport function MoveNode(id, parentID, index) {\n return [\n 10 /* Messages.Type.MoveNode */,\n id,\n parentID,\n index,\n ];\n}\nexport function RemoveNode(id) {\n return [\n 11 /* Messages.Type.RemoveNode */,\n id,\n ];\n}\nexport function SetNodeAttribute(id, name, value) {\n return [\n 12 /* Messages.Type.SetNodeAttribute */,\n id,\n name,\n value,\n ];\n}\nexport function RemoveNodeAttribute(id, name) {\n return [\n 13 /* Messages.Type.RemoveNodeAttribute */,\n id,\n name,\n ];\n}\nexport function SetNodeData(id, data) {\n return [\n 14 /* Messages.Type.SetNodeData */,\n id,\n data,\n ];\n}\nexport function SetNodeScroll(id, x, y) {\n return [\n 16 /* Messages.Type.SetNodeScroll */,\n id,\n x,\n y,\n ];\n}\nexport function SetInputTarget(id, label) {\n return [\n 17 /* Messages.Type.SetInputTarget */,\n id,\n label,\n ];\n}\nexport function SetInputValue(id, value, mask) {\n return [\n 18 /* Messages.Type.SetInputValue */,\n id,\n value,\n mask,\n ];\n}\nexport function SetInputChecked(id, checked) {\n return [\n 19 /* Messages.Type.SetInputChecked */,\n id,\n checked,\n ];\n}\nexport function MouseMove(x, y) {\n return [\n 20 /* Messages.Type.MouseMove */,\n x,\n y,\n ];\n}\nexport function NetworkRequestDeprecated(type, method, url, request, response, status, timestamp, duration) {\n return [\n 21 /* Messages.Type.NetworkRequestDeprecated */,\n type,\n method,\n url,\n request,\n response,\n status,\n timestamp,\n duration,\n ];\n}\nexport function ConsoleLog(level, value) {\n return [\n 22 /* Messages.Type.ConsoleLog */,\n level,\n value,\n ];\n}\nexport function PageLoadTiming(requestStart, responseStart, responseEnd, domContentLoadedEventStart, domContentLoadedEventEnd, loadEventStart, loadEventEnd, firstPaint, firstContentfulPaint) {\n return [\n 23 /* Messages.Type.PageLoadTiming */,\n requestStart,\n responseStart,\n responseEnd,\n domContentLoadedEventStart,\n domContentLoadedEventEnd,\n loadEventStart,\n loadEventEnd,\n firstPaint,\n firstContentfulPaint,\n ];\n}\nexport function PageRenderTiming(speedIndex, visuallyComplete, timeToInteractive) {\n return [\n 24 /* Messages.Type.PageRenderTiming */,\n speedIndex,\n visuallyComplete,\n timeToInteractive,\n ];\n}\nexport function CustomEvent(name, payload) {\n return [\n 27 /* Messages.Type.CustomEvent */,\n name,\n payload,\n ];\n}\nexport function UserID(id) {\n return [\n 28 /* Messages.Type.UserID */,\n id,\n ];\n}\nexport function UserAnonymousID(id) {\n return [\n 29 /* Messages.Type.UserAnonymousID */,\n id,\n ];\n}\nexport function Metadata(key, value) {\n return [\n 30 /* Messages.Type.Metadata */,\n key,\n value,\n ];\n}\nexport function StringDictGlobal(key, value) {\n return [\n 34 /* Messages.Type.StringDictGlobal */,\n key,\n value,\n ];\n}\nexport function SetNodeAttributeDictGlobal(id, name, value) {\n return [\n 35 /* Messages.Type.SetNodeAttributeDictGlobal */,\n id,\n name,\n value,\n ];\n}\nexport function NodeAnimationResult(id, styles) {\n return [\n 36 /* Messages.Type.NodeAnimationResult */,\n id,\n styles,\n ];\n}\nexport function Profiler(name, duration, args, result) {\n return [\n 40 /* Messages.Type.Profiler */,\n name,\n duration,\n args,\n result,\n ];\n}\nexport function OTable(key, value) {\n return [\n 41 /* Messages.Type.OTable */,\n key,\n value,\n ];\n}\nexport function StateAction(type) {\n return [\n 42 /* Messages.Type.StateAction */,\n type,\n ];\n}\nexport function ReduxDeprecated(action, state, duration) {\n return [\n 44 /* Messages.Type.ReduxDeprecated */,\n action,\n state,\n duration,\n ];\n}\nexport function Vuex(mutation, state) {\n return [\n 45 /* Messages.Type.Vuex */,\n mutation,\n state,\n ];\n}\nexport function MobX(type, payload) {\n return [\n 46 /* Messages.Type.MobX */,\n type,\n payload,\n ];\n}\nexport function NgRx(action, state, duration) {\n return [\n 47 /* Messages.Type.NgRx */,\n action,\n state,\n duration,\n ];\n}\nexport function GraphQLDeprecated(operationKind, operationName, variables, response, duration) {\n return [\n 48 /* Messages.Type.GraphQLDeprecated */,\n operationKind,\n operationName,\n variables,\n response,\n duration,\n ];\n}\nexport function PerformanceTrack(frames, ticks, totalJSHeapSize, usedJSHeapSize) {\n return [\n 49 /* Messages.Type.PerformanceTrack */,\n frames,\n ticks,\n totalJSHeapSize,\n usedJSHeapSize,\n ];\n}\nexport function StringDictDeprecated(key, value) {\n return [\n 50 /* Messages.Type.StringDictDeprecated */,\n key,\n value,\n ];\n}\nexport function SetNodeAttributeDictDeprecated(id, nameKey, valueKey) {\n return [\n 51 /* Messages.Type.SetNodeAttributeDictDeprecated */,\n id,\n nameKey,\n valueKey,\n ];\n}\nexport function StringDict(key, value) {\n return [\n 43 /* Messages.Type.StringDict */,\n key,\n value,\n ];\n}\nexport function SetNodeAttributeDict(id, name, value) {\n return [\n 52 /* Messages.Type.SetNodeAttributeDict */,\n id,\n name,\n value,\n ];\n}\nexport function ResourceTimingDeprecatedDeprecated(timestamp, duration, ttfb, headerSize, encodedBodySize, decodedBodySize, url, initiator) {\n return [\n 53 /* Messages.Type.ResourceTimingDeprecatedDeprecated */,\n timestamp,\n duration,\n ttfb,\n headerSize,\n encodedBodySize,\n decodedBodySize,\n url,\n initiator,\n ];\n}\nexport function ConnectionInformation(downlink, type) {\n return [\n 54 /* Messages.Type.ConnectionInformation */,\n downlink,\n type,\n ];\n}\nexport function SetPageVisibility(hidden) {\n return [\n 55 /* Messages.Type.SetPageVisibility */,\n hidden,\n ];\n}\nexport function LoadFontFace(parentID, family, source, descriptors) {\n return [\n 57 /* Messages.Type.LoadFontFace */,\n parentID,\n family,\n source,\n descriptors,\n ];\n}\nexport function SetNodeFocus(id) {\n return [\n 58 /* Messages.Type.SetNodeFocus */,\n id,\n ];\n}\nexport function SetNodeAttributeURLBased(id, name, value, baseURL) {\n return [\n 60 /* Messages.Type.SetNodeAttributeURLBased */,\n id,\n name,\n value,\n baseURL,\n ];\n}\nexport function SetCSSDataURLBased(id, data, baseURL) {\n return [\n 61 /* Messages.Type.SetCSSDataURLBased */,\n id,\n data,\n baseURL,\n ];\n}\nexport function TechnicalInfo(type, value) {\n return [\n 63 /* Messages.Type.TechnicalInfo */,\n type,\n value,\n ];\n}\nexport function CustomIssue(name, payload) {\n return [\n 64 /* Messages.Type.CustomIssue */,\n name,\n payload,\n ];\n}\nexport function SetNodeSlot(id, slotID) {\n return [\n 65 /* Messages.Type.SetNodeSlot */,\n id,\n slotID,\n ];\n}\nexport function MouseClick(id, hesitationTime, label, selector, normalizedX, normalizedY) {\n return [\n 68 /* Messages.Type.MouseClick */,\n id,\n hesitationTime,\n label,\n selector,\n normalizedX,\n normalizedY,\n ];\n}\nexport function MouseClickDeprecated(id, hesitationTime, label, selector) {\n return [\n 69 /* Messages.Type.MouseClickDeprecated */,\n id,\n hesitationTime,\n label,\n selector,\n ];\n}\nexport function CreateIFrameDocument(frameID, id) {\n return [\n 70 /* Messages.Type.CreateIFrameDocument */,\n frameID,\n id,\n ];\n}\nexport function AdoptedSSReplaceURLBased(sheetID, text, baseURL) {\n return [\n 71 /* Messages.Type.AdoptedSSReplaceURLBased */,\n sheetID,\n text,\n baseURL,\n ];\n}\nexport function AdoptedSSInsertRuleURLBased(sheetID, rule, index, baseURL) {\n return [\n 73 /* Messages.Type.AdoptedSSInsertRuleURLBased */,\n sheetID,\n rule,\n index,\n baseURL,\n ];\n}\nexport function AdoptedSSDeleteRule(sheetID, index) {\n return [\n 75 /* Messages.Type.AdoptedSSDeleteRule */,\n sheetID,\n index,\n ];\n}\nexport function AdoptedSSAddOwner(sheetID, id) {\n return [\n 76 /* Messages.Type.AdoptedSSAddOwner */,\n sheetID,\n id,\n ];\n}\nexport function AdoptedSSRemoveOwner(sheetID, id) {\n return [\n 77 /* Messages.Type.AdoptedSSRemoveOwner */,\n sheetID,\n id,\n ];\n}\nexport function JSException(name, message, payload, metadata) {\n return [\n 78 /* Messages.Type.JSException */,\n name,\n message,\n payload,\n metadata,\n ];\n}\nexport function Zustand(mutation, state) {\n return [\n 79 /* Messages.Type.Zustand */,\n mutation,\n state,\n ];\n}\nexport function BatchMetadata(version, pageNo, firstIndex, timestamp, location) {\n return [\n 81 /* Messages.Type.BatchMetadata */,\n version,\n pageNo,\n firstIndex,\n timestamp,\n location,\n ];\n}\nexport function PartitionedMessage(partNo, partTotal) {\n return [\n 82 /* Messages.Type.PartitionedMessage */,\n partNo,\n partTotal,\n ];\n}\nexport function NetworkRequest(type, method, url, request, response, status, timestamp, duration, transferredBodySize) {\n return [\n 83 /* Messages.Type.NetworkRequest */,\n type,\n method,\n url,\n request,\n response,\n status,\n timestamp,\n duration,\n transferredBodySize,\n ];\n}\nexport function WSChannel(chType, channelName, data, timestamp, dir, messageType) {\n return [\n 84 /* Messages.Type.WSChannel */,\n chType,\n channelName,\n data,\n timestamp,\n dir,\n messageType,\n ];\n}\nexport function ResourceTiming(timestamp, duration, ttfb, headerSize, encodedBodySize, decodedBodySize, url, initiator, transferredSize, cached, queueing, dnsLookup, initialConnection, ssl, contentDownload, total, stalled) {\n return [\n 85 /* Messages.Type.ResourceTiming */,\n timestamp,\n duration,\n ttfb,\n headerSize,\n encodedBodySize,\n decodedBodySize,\n url,\n initiator,\n transferredSize,\n cached,\n queueing,\n dnsLookup,\n initialConnection,\n ssl,\n contentDownload,\n total,\n stalled,\n ];\n}\nexport function Incident(label, startTime, endTime) {\n return [\n 87 /* Messages.Type.Incident */,\n label,\n startTime,\n endTime,\n ];\n}\nexport function LongAnimationTask(name, duration, blockingDuration, firstUIEventTimestamp, startTime, scripts) {\n return [\n 89 /* Messages.Type.LongAnimationTask */,\n name,\n duration,\n blockingDuration,\n firstUIEventTimestamp,\n startTime,\n scripts,\n ];\n}\nexport function InputChange(id, value, valueMasked, label, hesitationTime, inputDuration) {\n return [\n 112 /* Messages.Type.InputChange */,\n id,\n value,\n valueMasked,\n label,\n hesitationTime,\n inputDuration,\n ];\n}\nexport function SelectionChange(selectionStart, selectionEnd, selection) {\n return [\n 113 /* Messages.Type.SelectionChange */,\n selectionStart,\n selectionEnd,\n selection,\n ];\n}\nexport function MouseThrashing(timestamp) {\n return [\n 114 /* Messages.Type.MouseThrashing */,\n timestamp,\n ];\n}\nexport function UnbindNodes(totalRemovedPercent) {\n return [\n 115 /* Messages.Type.UnbindNodes */,\n totalRemovedPercent,\n ];\n}\nexport function ResourceTimingDeprecated(timestamp, duration, ttfb, headerSize, encodedBodySize, decodedBodySize, url, initiator, transferredSize, cached) {\n return [\n 116 /* Messages.Type.ResourceTimingDeprecated */,\n timestamp,\n duration,\n ttfb,\n headerSize,\n encodedBodySize,\n decodedBodySize,\n url,\n initiator,\n transferredSize,\n cached,\n ];\n}\nexport function TabChange(tabId) {\n return [\n 117 /* Messages.Type.TabChange */,\n tabId,\n ];\n}\nexport function TabData(tabId) {\n return [\n 118 /* Messages.Type.TabData */,\n tabId,\n ];\n}\nexport function CanvasNode(nodeId, timestamp) {\n return [\n 119 /* Messages.Type.CanvasNode */,\n nodeId,\n timestamp,\n ];\n}\nexport function TagTrigger(tagId) {\n return [\n 120 /* Messages.Type.TagTrigger */,\n tagId,\n ];\n}\nexport function Redux(action, state, duration, actionTime) {\n return [\n 121 /* Messages.Type.Redux */,\n action,\n state,\n duration,\n actionTime,\n ];\n}\nexport function SetPageLocation(url, referrer, navigationStart, documentTitle) {\n return [\n 122 /* Messages.Type.SetPageLocation */,\n url,\n referrer,\n navigationStart,\n documentTitle,\n ];\n}\nexport function GraphQL(operationKind, operationName, variables, response, duration) {\n return [\n 123 /* Messages.Type.GraphQL */,\n operationKind,\n operationName,\n variables,\n response,\n duration,\n ];\n}\nexport function WebVitals(name, value) {\n return [\n 124 /* Messages.Type.WebVitals */,\n name,\n value,\n ];\n}\n","import { IN_BROWSER } from '../utils.js';\nimport { PerformanceTrack } from '../app/messages.gen.js';\nconst perf = IN_BROWSER && 'performance' in window && 'memory' in performance // works in Chrome only\n ? performance\n : { memory: {} };\nexport const deviceMemory = IN_BROWSER ? (navigator.deviceMemory || 0) * 1024 : 0;\nexport const jsHeapSizeLimit = perf.memory.jsHeapSizeLimit || 0;\nexport default function (app, opts) {\n const options = Object.assign({\n capturePerformance: true,\n }, opts);\n if (!options.capturePerformance) {\n return;\n }\n let frames;\n let ticks;\n const nextFrame = () => {\n if (frames === undefined || frames === -1) {\n return;\n }\n frames++;\n requestAnimationFrame(nextFrame);\n };\n app.ticker.attach(() => {\n if (ticks === undefined || ticks === -1) {\n return;\n }\n ticks++;\n }, 0, false);\n const sendPerformanceTrack = () => {\n if (frames === undefined || ticks === undefined) {\n return;\n }\n app.send(PerformanceTrack(frames, ticks, perf.memory.totalJSHeapSize || 0, perf.memory.usedJSHeapSize || 0));\n ticks = frames = document.hidden ? -1 : 0;\n };\n app.attachStartCallback(() => {\n ticks = frames = -1;\n sendPerformanceTrack();\n nextFrame();\n });\n app.attachStopCallback(() => {\n ticks = frames = undefined;\n });\n app.ticker.attach(sendPerformanceTrack, 165, false);\n if (document.hidden !== undefined) {\n app.attachEventListener(document, 'visibilitychange', sendPerformanceTrack, false, false);\n }\n}\n","export const WATCHED_TAGS_KEY = '__or__watched_tags__';\nclass TagWatcher {\n constructor(params) {\n this.interval = null;\n this.tags = [];\n this.sessionStorage = params.sessionStorage;\n this.errLog = params.errLog;\n this.onTag = params.onTag;\n // @ts-ignore\n const tags = JSON.parse(params.sessionStorage.getItem(WATCHED_TAGS_KEY) ?? '[]');\n this.setTags(tags);\n this.observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (entry.target) {\n // @ts-ignore\n const tag = entry.target.__or_watcher_tagname;\n if (tag) {\n this.onTagRendered(tag);\n }\n this.observer.unobserve(entry.target);\n }\n }\n });\n });\n }\n async fetchTags(ingest, token) {\n return fetch(`${ingest}/v1/web/tags`, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${token}`,\n },\n })\n .then((r) => r.json())\n .then(({ tags }) => {\n if (tags && tags.length) {\n this.setTags(tags);\n const tagString = JSON.stringify(tags);\n this.sessionStorage.setItem(WATCHED_TAGS_KEY, tagString || '');\n }\n })\n .catch((e) => this.errLog(e));\n }\n setTags(tags) {\n this.tags = tags;\n if (this.interval) {\n clearInterval(this.interval);\n this.interval = null;\n }\n this.interval = setInterval(() => {\n this.tags.forEach((tag) => {\n const possibleEls = document.querySelectorAll(tag.selector);\n if (possibleEls.length > 0) {\n const el = possibleEls[0];\n // @ts-ignore\n el.__or_watcher_tagname = tag.id;\n this.observer.observe(el);\n }\n });\n }, 500);\n }\n onTagRendered(tagId) {\n if (this.tags.findIndex(t => t.id === tagId)) {\n this.tags = this.tags.filter((tag) => tag.id !== tagId);\n }\n this.onTag(tagId);\n }\n clear() {\n this.tags = [];\n if (this.interval) {\n clearInterval(this.interval);\n this.interval = null;\n }\n this.observer.disconnect();\n }\n}\nexport default TagWatcher;\n","//@ts-ignore\nexport function isNode(sth) {\n return !!sth && sth.nodeType != null;\n}\nexport function isSVGElement(node) {\n return (node.namespaceURI === 'http://www.w3.org/2000/svg' || node.localName === 'svg');\n}\nexport function isUseElement(node) {\n return node.localName === 'use';\n}\nexport function isElementNode(node) {\n return node.nodeType === Node.ELEMENT_NODE;\n}\nexport function isCommentNode(node) {\n return node.nodeType === Node.COMMENT_NODE;\n}\nexport function isTextNode(node) {\n return node.nodeType === Node.TEXT_NODE;\n}\nexport function isDocument(node) {\n return node.nodeType === Node.DOCUMENT_NODE;\n}\nexport function isRootNode(node) {\n return node.nodeType === Node.DOCUMENT_NODE || node.nodeType === Node.DOCUMENT_FRAGMENT_NODE;\n}\nexport function hasTag(el, tagName) {\n // @ts-ignore\n return el.localName === tagName;\n}\n","import { hasTag } from './guards.js';\nimport { CanvasNode } from './messages.gen.js';\nclass CanvasRecorder {\n constructor(app, options) {\n this.app = app;\n this.options = options;\n this.snapshots = {};\n this.intervals = new Map();\n this.observers = new Map();\n this.uploadQueue = 0;\n this.MAX_CONCURRENT_UPLOADS = 2;\n this.MAX_QUEUE_SIZE = 50; // ~500 images max (50 batches × 10 images)\n this.pendingBatches = [];\n this.isProcessingQueue = false;\n this.restartTracking = () => {\n this.clear();\n this.app.nodes.scanTree(this.captureCanvas);\n };\n this.captureCanvas = (node) => {\n const id = this.app.nodes.getID(node);\n if (!id || !hasTag(node, 'canvas')) {\n return;\n }\n const isIgnored = this.app.sanitizer.isObscured(id) || this.app.sanitizer.isHidden(id);\n if (isIgnored || this.snapshots[id]) {\n return;\n }\n const observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (this.snapshots[id] && this.snapshots[id].createdAt) {\n this.snapshots[id].paused = false;\n }\n else {\n this.recordCanvas(entry.target, id);\n }\n /**\n * We can switch this to start observing when element is in the view\n * but otherwise right now we're just pausing when it's not\n * just to save some bandwidth and space on backend\n * */\n // observer.unobserve(entry.target)\n }\n else {\n if (this.snapshots[id]) {\n this.snapshots[id].paused = true;\n }\n }\n });\n });\n this.observers.set(id, observer);\n observer.observe(node);\n };\n this.recordCanvas = (node, id) => {\n const ts = this.app.timestamp();\n this.snapshots[id] = {\n images: [],\n createdAt: ts,\n paused: false,\n dummy: document.createElement('canvas'),\n isCapturing: false,\n isStopped: false,\n };\n const canvasMsg = CanvasNode(id.toString(), ts);\n this.app.send(canvasMsg);\n const cachedCanvas = node;\n const captureFn = (canvas) => {\n if (!this.snapshots[id] || this.snapshots[id].isCapturing || this.snapshots[id].isStopped) {\n return;\n }\n this.snapshots[id].isCapturing = true;\n captureSnapshot(canvas, this.options.quality, this.snapshots[id].dummy, this.options.fixedScaling, this.fileExt, (blob) => {\n if (this.snapshots[id]) {\n this.snapshots[id].isCapturing = false;\n }\n if (!blob || !this.snapshots[id] || this.snapshots[id].isStopped) {\n return;\n }\n this.snapshots[id].images.push({ id: this.app.timestamp(), data: blob });\n if (this.snapshots[id].images.length > 9) {\n this.sendSnaps(this.snapshots[id].images, id, this.snapshots[id].createdAt);\n this.snapshots[id].images = [];\n }\n });\n };\n const int = setInterval(() => {\n const snapshot = this.snapshots[id];\n if (!snapshot || snapshot.isStopped) {\n this.app.debug.log('Canvas is not present in {snapshots}');\n this.cleanupCanvas(id);\n return;\n }\n if (!document.contains(cachedCanvas)) {\n this.app.debug.log('Canvas element not in sync', cachedCanvas, node);\n this.cleanupCanvas(id);\n return;\n }\n if (!snapshot.paused) {\n if (this.options.useAnimationFrame) {\n requestAnimationFrame(() => {\n captureFn(cachedCanvas);\n });\n }\n else {\n captureFn(cachedCanvas);\n }\n }\n }, this.interval);\n this.intervals.set(id, int);\n };\n this.fileExt = 'webp';\n this.interval = 1000 / options.fps;\n }\n startTracking() {\n setTimeout(() => {\n this.app.nodes.scanTree(this.captureCanvas);\n this.app.nodes.attachNodeCallback(this.captureCanvas);\n }, 250);\n }\n sendSnaps(images, canvasId, createdAt) {\n if (Object.keys(this.snapshots).length === 0) {\n return;\n }\n if (this.pendingBatches.length >= this.MAX_QUEUE_SIZE) {\n this.app.debug.warn('Upload queue full, dropping canvas batch');\n return;\n }\n this.pendingBatches.push({ images, canvasId, createdAt });\n if (!this.isProcessingQueue) {\n this.processUploadQueue();\n }\n }\n async processUploadQueue() {\n this.isProcessingQueue = true;\n while (this.pendingBatches.length > 0) {\n if (this.uploadQueue >= this.MAX_CONCURRENT_UPLOADS) {\n await new Promise((resolve) => setTimeout(resolve, 100));\n continue;\n }\n const batch = this.pendingBatches.shift();\n if (!batch)\n break;\n this.uploadBatch(batch.images, batch.canvasId, batch.createdAt);\n }\n this.isProcessingQueue = false;\n }\n async uploadBatch(images, canvasId, createdAt) {\n if (this.options.isDebug) {\n const fileEntries = [];\n images.forEach((snapshot) => {\n if (!snapshot.data)\n return;\n fileEntries.push({ data: snapshot.data, name: `${createdAt}_${canvasId}_${snapshot.id}.${this.fileExt}` });\n });\n void saveArchive(fileEntries, `canvas_${canvasId}_${createdAt}`);\n return;\n }\n let formData;\n if (this.options.framesSupport) {\n // Pack frames into binary format: [uint64 LE timestamp][uint32 LE size][data] per frame\n const buffers = [];\n let totalSize = 0;\n for (const snapshot of images) {\n if (!snapshot.data)\n continue;\n const ab = await snapshot.data.arrayBuffer();\n buffers.push(ab);\n totalSize += 8 + 4 + ab.byteLength; // uint64 ts + uint32 size + data\n }\n if (totalSize === 0)\n return;\n const packed = new ArrayBuffer(totalSize);\n const view = new DataView(packed);\n const bytes = new Uint8Array(packed);\n let offset = 0;\n for (let i = 0; i < images.length; i++) {\n if (!images[i].data)\n continue;\n const ab = buffers.shift();\n const ts = images[i].id;\n // uint64 LE as two uint32 LE writes -- timestamp\n view.setUint32(offset, ts % 0x100000000, true);\n view.setUint32(offset + 4, Math.floor(ts / 0x100000000), true);\n offset += 8;\n // uint32 LE -- size\n view.setUint32(offset, ab.byteLength, true);\n offset += 4;\n // image data\n bytes.set(new Uint8Array(ab), offset);\n offset += ab.byteLength;\n }\n formData = new FormData();\n formData.append('type', 'frames');\n const fileName = `${createdAt}_${canvasId}.${this.fileExt}.frames`;\n formData.append('frames', new Blob([packed]), fileName);\n }\n else {\n // Legacy: send individual image files\n formData = new FormData();\n images.forEach((snapshot) => {\n const blob = snapshot.data;\n if (!blob)\n return;\n const name = `${createdAt}_${canvasId}_${snapshot.id}.${this.fileExt}`;\n formData.append('snapshot', blob, name);\n });\n }\n const initRestart = () => {\n this.app.debug.log('Restarting tracker; token expired');\n this.app.stop(false);\n setTimeout(() => {\n void this.app.start({}, true);\n }, 250);\n };\n this.uploadQueue++;\n fetch(this.app.options.ingestPoint + '/v1/web/images', {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${this.app.session.getSessionToken() ?? ''}`,\n },\n body: formData,\n })\n .then((r) => {\n if (r.status === 401) {\n return initRestart();\n }\n return true;\n })\n .catch((e) => {\n this.app.debug.error('error saving canvas', e);\n })\n .finally(() => {\n this.uploadQueue--;\n });\n }\n cleanupCanvas(id) {\n if (this.snapshots[id]) {\n this.snapshots[id].isStopped = true;\n }\n const interval = this.intervals.get(id);\n if (interval) {\n clearInterval(interval);\n this.intervals.delete(id);\n }\n const observer = this.observers.get(id);\n if (observer) {\n observer.disconnect();\n this.observers.delete(id);\n }\n if (this.snapshots[id]?.dummy) {\n const dummy = this.snapshots[id].dummy;\n dummy.width = 0;\n dummy.height = 0;\n }\n delete this.snapshots[id];\n }\n clear() {\n // Flush remaining images before cleanup\n Object.keys(this.snapshots).forEach((idStr) => {\n const id = parseInt(idStr, 10);\n const snapshot = this.snapshots[id];\n if (snapshot && snapshot.images.length > 0) {\n this.sendSnaps(snapshot.images, id, snapshot.createdAt);\n snapshot.images = [];\n }\n });\n Object.keys(this.snapshots).forEach((idStr) => {\n const id = parseInt(idStr, 10);\n this.cleanupCanvas(id);\n });\n // don't clear pendingBatches or stop queue processing\n // to allow flushed images to finish uploading in the background\n this.intervals.clear();\n this.observers.clear();\n this.snapshots = {};\n }\n}\nconst qualityInt = {\n low: 0.35,\n medium: 0.55,\n high: 0.8,\n};\nfunction captureSnapshot(canvas, quality = 'medium', dummy, fixedScaling = false, fileExt, onBlob) {\n const imageFormat = `image/${fileExt}`;\n if (fixedScaling) {\n const canvasScaleRatio = window.devicePixelRatio || 1;\n dummy.width = canvas.width / canvasScaleRatio;\n dummy.height = canvas.height / canvasScaleRatio;\n const ctx = dummy.getContext('2d');\n if (!ctx) {\n return '';\n }\n ctx.clearRect(0, 0, dummy.width, dummy.height);\n ctx.drawImage(canvas, 0, 0, dummy.width, dummy.height);\n dummy.toBlob(onBlob, imageFormat, qualityInt[quality]);\n }\n else {\n canvas.toBlob(onBlob, imageFormat, qualityInt[quality]);\n }\n}\nasync function saveArchive(files, archiveName) {\n const zipBlob = await createZipBlob(files);\n const url = URL.createObjectURL(zipBlob);\n const link = document.createElement('a');\n link.href = url;\n link.download = `${archiveName}.zip`;\n link.style.display = 'none';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(url);\n}\nasync function createZipBlob(files) {\n const parts = [];\n const centralDir = [];\n let offset = 0;\n for (const file of files) {\n const nameBytes = new TextEncoder().encode(file.name);\n const dataBytes = new Uint8Array(await file.data.arrayBuffer());\n const crc = crc32(dataBytes);\n // Local file header (30 bytes + filename)\n const local = new Uint8Array(30 + nameBytes.length);\n const lv = new DataView(local.buffer);\n lv.setUint32(0, 0x04034b50, true);\n lv.setUint16(4, 20, true);\n lv.setUint16(8, 0, true);\n lv.setUint32(14, crc, true);\n lv.setUint32(18, dataBytes.length, true);\n lv.setUint32(22, dataBytes.length, true);\n lv.setUint16(26, nameBytes.length, true);\n local.set(nameBytes, 30);\n // Central directory entry (46 bytes + filename)\n const cd = new Uint8Array(46 + nameBytes.length);\n const cv = new DataView(cd.buffer);\n cv.setUint32(0, 0x02014b50, true);\n cv.setUint16(4, 20, true);\n cv.setUint16(6, 20, true);\n cv.setUint32(16, crc, true);\n cv.setUint32(20, dataBytes.length, true);\n cv.setUint32(24, dataBytes.length, true);\n cv.setUint16(28, nameBytes.length, true);\n cv.setUint32(42, offset, true);\n cd.set(nameBytes, 46);\n parts.push(local);\n parts.push(dataBytes);\n centralDir.push(cd);\n offset += local.length + dataBytes.length;\n }\n const cdOffset = offset;\n let cdSize = 0;\n for (const entry of centralDir) {\n parts.push(entry);\n cdSize += entry.length;\n }\n // End of central directory (22 bytes)\n const eocd = new Uint8Array(22);\n const ev = new DataView(eocd.buffer);\n ev.setUint32(0, 0x06054b50, true);\n ev.setUint16(8, files.length, true);\n ev.setUint16(10, files.length, true);\n ev.setUint32(12, cdSize, true);\n ev.setUint32(16, cdOffset, true);\n parts.push(eocd);\n return new Blob(parts, { type: 'application/zip' });\n}\nfunction crc32(data) {\n let crc = 0xffffffff;\n for (let i = 0; i < data.length; i++) {\n crc ^= data[i];\n for (let j = 0; j < 8; j++) {\n crc = (crc >>> 1) ^ (crc & 1 ? 0xedb88320 : 0);\n }\n }\n return (crc ^ 0xffffffff) >>> 0;\n}\nfunction dataUrlToBlob(dataUrl) {\n const [header, base64] = dataUrl.split(',');\n if (!header || !base64)\n return null;\n const encParts = header.match(/:(.*?);/);\n if (!encParts)\n return null;\n const mime = encParts[1];\n const blobStr = atob(base64);\n let n = blobStr.length;\n const u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = blobStr.charCodeAt(n);\n }\n return [new Blob([u8arr], { type: mime }), u8arr];\n}\nexport default CanvasRecorder;\n","export const LogLevel = {\n Verbose: 5,\n Log: 4,\n Warnings: 3,\n Errors: 2,\n Silent: 0,\n};\nexport default class Logger {\n constructor(debugLevel = LogLevel.Silent) {\n this.shouldLog = (level) => {\n return this.level >= level;\n };\n this.info = (...args) => {\n if (this.shouldLog(LogLevel.Verbose)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n console.info(...args);\n }\n };\n this.log = (...args) => {\n if (this.shouldLog(LogLevel.Log)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n console.log(...args);\n }\n };\n this.warn = (...args) => {\n if (this.shouldLog(LogLevel.Warnings)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n console.warn(...args);\n }\n };\n this.error = (...args) => {\n if (this.shouldLog(LogLevel.Errors)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n console.error(...args);\n }\n };\n this.level = debugLevel;\n }\n}\n","const SECOND = 1000;\nfunction processMapInBatches(map, batchSize, processBatchCallback) {\n const iterator = map.entries();\n function processNextBatch() {\n const batch = [];\n let result = iterator.next();\n while (!result.done && batch.length < batchSize) {\n batch.push(result.value);\n result = iterator.next();\n }\n if (batch.length > 0) {\n batch.forEach(([_, node]) => {\n if (node) {\n processBatchCallback(node);\n }\n });\n setTimeout(processNextBatch, 50);\n }\n }\n processNextBatch();\n}\nfunction isNodeStillActive(node) {\n try {\n if (!node.isConnected) {\n return [false, 'not connected'];\n }\n const nodeIsDocument = node.nodeType === Node.DOCUMENT_NODE;\n const nodeWindow = nodeIsDocument\n ? node.defaultView\n : node.ownerDocument?.defaultView;\n const ownerDoc = nodeIsDocument ? node : node.ownerDocument;\n if (!nodeWindow) {\n return [false, 'no window'];\n }\n if (nodeWindow.closed) {\n return [false, 'window closed'];\n }\n if (!ownerDoc?.documentElement.isConnected) {\n return [false, 'documentElement not connected'];\n }\n return [true, 'ok'];\n }\n catch (e) {\n return [false, e];\n }\n}\nconst defaults = {\n interval: SECOND * 30,\n batchSize: 2500,\n enabled: true,\n};\nclass Maintainer {\n constructor(nodes, unregisterNode, options) {\n this.nodes = nodes;\n this.unregisterNode = unregisterNode;\n this.start = () => {\n if (!this.options.enabled) {\n return;\n }\n this.stop();\n this.interval = setInterval(() => {\n processMapInBatches(this.nodes, this.options.batchSize, (node) => {\n const isActive = isNodeStillActive(node)[0];\n if (!isActive) {\n this.unregisterNode(node);\n }\n });\n }, this.options.interval);\n };\n this.stop = () => {\n if (this.interval) {\n clearInterval(this.interval);\n }\n };\n this.options = { ...defaults, ...options };\n }\n}\nexport default Maintainer;\n","// 4 levels, 128 frames between each level, 8_388_608 nodes per page\n// lets hope no one will need more :D\nexport const BITS_LEVEL = 2; // 4\nexport const BITS_ORDER = 7; // 128\nexport const BITS_NODE = 22; // 8_388_608\nexport const SHIFT_ORDER = BITS_NODE;\nexport const SHIFT_LEVEL = BITS_NODE + BITS_ORDER;\nexport const MASK_NODE = (1 << BITS_NODE) - 1;\nexport const MASK_ORDER = (1 << BITS_ORDER) - 1;\nexport const MASK_LEVEL = (1 << BITS_LEVEL) - 1;\nexport function pack(level, order, nodeId) {\n if (level < 0 || level > MASK_LEVEL)\n throw new RangeError('OR: nesting level overflow, max 4');\n if (order < 0 || order > MASK_ORDER)\n throw new RangeError('OR: frame order overflow, max 128');\n if (nodeId < 0 || nodeId > MASK_NODE)\n throw new RangeError('OR: nodeId overflow, max 8_388_608');\n const v = ((level & MASK_LEVEL) << SHIFT_LEVEL) |\n ((order & MASK_ORDER) << SHIFT_ORDER) |\n (nodeId & MASK_NODE);\n return v >>> 0;\n}\nexport function unpack(id) {\n id = id >>> 0;\n const level = (id >>> SHIFT_LEVEL) & MASK_LEVEL;\n const order = (id >>> SHIFT_ORDER) & MASK_ORDER;\n const nodeId = id & MASK_NODE;\n return { level, order, nodeId };\n}\n","import { createEventListener, deleteEventListener } from '../../utils.js';\nimport Maintainer from './maintainer.js';\nimport { pack } from './idSeq.js';\nexport default class Nodes {\n constructor(params) {\n this.nodes = new Map();\n this.totalNodeAmount = 0;\n this.nodeCallbacks = [];\n this.elementListeners = new Map();\n this.nextNodeId = 0;\n // Attached once per Tracker instance\n this.attachNodeCallback = (nodeCallback) => {\n return this.nodeCallbacks.push(nodeCallback);\n };\n this.scanTree = (cb) => {\n this.nodes.forEach((node) => (node ? cb(node) : undefined));\n };\n this.attachNodeListener = (node, type, listener, useCapture = true) => {\n const id = this.getID(node);\n if (id === undefined) {\n return;\n }\n createEventListener(node, type, listener, useCapture, this.forceNgOff);\n let listeners = this.elementListeners.get(id);\n if (listeners === undefined) {\n listeners = [];\n this.elementListeners.set(id, listeners);\n }\n listeners.push([type, listener, useCapture]);\n };\n this.createFrameId = (level, frameOrder) => {\n return pack(level, frameOrder, 0);\n };\n this.unregisterNode = (node) => {\n const id = node[this.node_id];\n if (id !== undefined) {\n ;\n node[this.node_id] = undefined;\n delete node[this.node_id];\n this.nodes.delete(id);\n const listeners = this.elementListeners.get(id);\n if (listeners !== undefined) {\n this.elementListeners.delete(id);\n listeners.forEach((listener) => deleteEventListener(node, listener[0], listener[1], listener[2], this.forceNgOff));\n }\n this.totalNodeAmount--;\n }\n return id;\n };\n this.node_id = params.node_id;\n this.forceNgOff = params.forceNgOff;\n this.maintainer = new Maintainer(this.nodes, this.unregisterNode, params.maintainer);\n this.maintainer.start();\n }\n crossdomainMode(level, frameOrder) {\n this.nextNodeId = this.createFrameId(level, frameOrder);\n }\n registerNode(node) {\n let id = node[this.node_id];\n const isNew = id === undefined;\n if (isNew) {\n id = this.nextNodeId;\n this.totalNodeAmount++;\n this.nextNodeId++;\n this.nodes.set(id, node);\n node[this.node_id] = id;\n }\n return [id, isNew];\n }\n cleanTree() {\n // sadly we keep empty items in array here resulting in some memory still being used\n // but its still better than keeping dead nodes or undef elements\n // plus we keep our index positions for new/alive nodes\n // performance test: 3ms for 30k nodes with 17k dead ones\n for (const [_, node] of this.nodes) {\n if (node && !document.contains(node)) {\n this.unregisterNode(node);\n }\n }\n }\n callNodeCallbacks(node, isStart) {\n this.nodeCallbacks.forEach((cb) => cb(node, isStart));\n }\n getID(node) {\n if (!node)\n return undefined;\n return node[this.node_id];\n }\n getNode(id) {\n return this.nodes.get(id);\n }\n getNodeCount() {\n return this.totalNodeAmount;\n }\n clear() {\n for (const [_, node] of this.nodes) {\n if (node) {\n this.unregisterNode(node);\n }\n }\n this.nextNodeId = 0;\n this.nodes.clear();\n }\n}\n","let fakeIdHolder = 1000000 * 99;\nexport function inlineRemoteCss(node, id, baseHref, getNextID, insertRule, addOwner, forceFetch, sendPlain, onPlain) {\n const sheetId = sendPlain ? null : getNextID();\n if (!sendPlain) {\n addOwner(sheetId, id);\n }\n const sheet = node.sheet;\n if (sheet && !forceFetch) {\n try {\n const cssText = stringifyStylesheet(sheet);\n if (cssText) {\n processCssText(cssText);\n return;\n }\n }\n catch (e) {\n // console.warn(\"Could not stringify sheet, falling back to fetch:\", e);\n }\n }\n // Fall back to fetching if we couldn't get or stringify the sheet\n if (node.href) {\n fetch(node.href)\n .then(response => {\n if (!response.ok) {\n throw new Error(`response status ${response.status}`);\n }\n return response.text();\n })\n .then(cssText => {\n if (sendPlain && onPlain) {\n onPlain(cssText, fakeIdHolder++);\n }\n else {\n processCssText(cssText);\n }\n })\n .catch(error => {\n console.error(`OpenReplay: Failed to fetch CSS from ${node.href}:`, error);\n });\n }\n function processCssText(cssText) {\n // Remove comments\n cssText = cssText.replace(/\\/\\*[\\s\\S]*?\\*\\//g, '');\n // Parse and process the CSS text to extract rules\n const ruleTexts = parseCSS(cssText);\n for (let i = 0; i < ruleTexts.length; i++) {\n insertRule(sheetId, ruleTexts[i], i, baseHref);\n }\n }\n function parseCSS(cssText) {\n const rules = [];\n let inComment = false;\n let inString = false;\n let stringChar = '';\n let braceLevel = 0;\n let currentRule = '';\n for (let i = 0; i < cssText.length; i++) {\n const char = cssText[i];\n const nextChar = cssText[i + 1] || '';\n // comments\n if (!inString && char === '/' && nextChar === '*') {\n inComment = true;\n i++; // Skip the next character\n continue;\n }\n if (inComment) {\n if (char === '*' && nextChar === '/') {\n inComment = false;\n i++; // Skip the next character\n }\n continue;\n }\n if (!inString && (char === '\"' || char === \"'\")) {\n inString = true;\n stringChar = char;\n currentRule += char;\n continue;\n }\n if (inString) {\n currentRule += char;\n if (char === stringChar && cssText[i - 1] !== '\\\\') {\n inString = false;\n }\n continue;\n }\n currentRule += char;\n if (char === '{') {\n braceLevel++;\n }\n else if (char === '}') {\n braceLevel--;\n if (braceLevel === 0) {\n // End of a top-level rule\n rules.push(currentRule.trim());\n currentRule = '';\n }\n }\n }\n // Handle any remaining text (should be rare)\n if (currentRule.trim()) {\n rules.push(currentRule.trim());\n }\n return rules;\n }\n function stringifyStylesheet(s) {\n try {\n const rules = s.rules || s.cssRules;\n if (!rules) {\n return null;\n }\n let sheetHref = s.href;\n if (!sheetHref && s.ownerNode && s.ownerNode.ownerDocument) {\n // an inline <style> element\n sheetHref = s.ownerNode.ownerDocument.location.href;\n }\n const stringifiedRules = Array.from(rules, (rule) => stringifyRule(rule, sheetHref)).join('');\n return fixBrowserCompatibilityIssuesInCSS(stringifiedRules);\n }\n catch (error) {\n return null;\n }\n }\n function stringifyRule(rule, sheetHref) {\n if (isCSSImportRule(rule)) {\n let importStringified;\n try {\n importStringified =\n // for same-origin stylesheets,\n // we can access the imported stylesheet rules directly\n stringifyStylesheet(rule.styleSheet) ||\n // work around browser issues with the raw string `@import url(...)` statement\n escapeImportStatement(rule);\n }\n catch (error) {\n importStringified = rule.cssText;\n }\n if (rule.styleSheet.href) {\n // url()s within the imported stylesheet are relative to _that_ sheet's href\n return absolutifyURLs(importStringified, rule.styleSheet.href);\n }\n return importStringified;\n }\n else {\n let ruleStringified = rule.cssText;\n if (isCSSStyleRule(rule) && rule.selectorText.includes(':')) {\n // Safari does not escape selectors with : properly\n ruleStringified = fixSafariColons(ruleStringified);\n }\n if (sheetHref) {\n return absolutifyURLs(ruleStringified, sheetHref);\n }\n return ruleStringified;\n }\n }\n function fixBrowserCompatibilityIssuesInCSS(cssText) {\n // Fix for Chrome's handling of webkit-background-clip\n if (cssText.includes(' background-clip: text;') &&\n !cssText.includes(' -webkit-background-clip: text;')) {\n cssText = cssText.replace(/\\sbackground-clip:\\s*text;/g, ' -webkit-background-clip: text; background-clip: text;');\n }\n return cssText;\n }\n function escapeImportStatement(rule) {\n const { cssText } = rule;\n if (cssText.split('\"').length < 3)\n return cssText;\n const statement = ['@import', `url(${JSON.stringify(rule.href)})`];\n if (rule.layerName === '') {\n statement.push(`layer`);\n }\n else if (rule.layerName) {\n statement.push(`layer(${rule.layerName})`);\n }\n if (rule.supportsText) {\n statement.push(`supports(${rule.supportsText})`);\n }\n if (rule.media.length) {\n statement.push(rule.media.mediaText);\n }\n return statement.join(' ') + ';';\n }\n function fixSafariColons(cssStringified) {\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n return cssStringified.replace(regex, '$1\\\\$2');\n }\n function isCSSImportRule(rule) {\n return 'styleSheet' in rule;\n }\n function isCSSStyleRule(rule) {\n return 'selectorText' in rule;\n }\n function absolutifyURLs(cssText, href) {\n if (!cssText)\n return '';\n const URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\n const URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\n const URL_WWW_MATCH = /^www\\..*/i;\n const DATA_URI = /^(data:)([^,]*),(.*)/i;\n return cssText.replace(URL_IN_CSS_REF, (origin, quote1, path1, quote2, path2, path3) => {\n const filePath = path1 || path2 || path3;\n const maybeQuote = quote1 || quote2 || '';\n if (!filePath) {\n return origin;\n }\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (DATA_URI.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (filePath[0] === '/') {\n return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\n }\n const stack = href.split('/');\n const parts = filePath.split('/');\n stack.pop();\n for (const part of parts) {\n if (part === '.') {\n continue;\n }\n else if (part === '..') {\n stack.pop();\n }\n else {\n stack.push(part);\n }\n }\n return `url(${maybeQuote}${stack.join('/')}${maybeQuote})`;\n });\n }\n function extractOrigin(url) {\n let origin = '';\n if (url.indexOf('//') > -1) {\n origin = url.split('/').slice(0, 3).join('/');\n }\n else {\n origin = url.split('/')[0];\n }\n origin = origin.split('?')[0];\n return origin;\n }\n}\n","import { AdoptedSSReplaceURLBased, AdoptedSSInsertRuleURLBased, AdoptedSSAddOwner, AdoptedSSRemoveOwner, } from '../app/messages.gen.js';\nimport { isRootNode } from '../app/guards.js';\nfunction hasAdoptedSS(node) {\n return (isRootNode(node) &&\n // @ts-ignore\n !!node.adoptedStyleSheets);\n}\n// TODO: encapsulate to be init-ed on-start and join with cssrules.ts under one folder\nlet _id = 0xf;\nexport function nextID() {\n return _id++;\n}\nexport const styleSheetIDMap = new Map();\nexport default function (app) {\n if (app === null) {\n return;\n }\n if (!hasAdoptedSS(document)) {\n return;\n }\n const styleSheetIDMap = new Map();\n const adoptedStyleSheetsOwnings = new Map();\n const sendAdoptedStyleSheetsUpdate = (root) => setTimeout(() => {\n let nodeID = app.nodes.getID(root);\n if (root === document) {\n nodeID = 0; // main document doesn't have nodeID. ID count starts from the documentElement\n }\n if (nodeID === undefined) {\n return;\n }\n let pastOwning = adoptedStyleSheetsOwnings.get(nodeID);\n if (!pastOwning) {\n pastOwning = [];\n }\n const nowOwning = [];\n const styleSheets = root.adoptedStyleSheets;\n if (styleSheets && Symbol.iterator in styleSheets) {\n for (const s of styleSheets) {\n let sheetID = styleSheetIDMap.get(s);\n const init = !sheetID;\n if (!sheetID) {\n sheetID = nextID();\n styleSheetIDMap.set(s, sheetID);\n }\n if (!pastOwning.includes(sheetID)) {\n app.send(AdoptedSSAddOwner(sheetID, nodeID));\n }\n if (init) {\n const rules = s.cssRules;\n for (let i = 0; i < rules.length; i++) {\n app.send(AdoptedSSInsertRuleURLBased(sheetID, rules[i].cssText, i, app.getBaseHref()));\n }\n }\n nowOwning.push(sheetID);\n }\n }\n if (Symbol.iterator in pastOwning) {\n for (const sheetID of pastOwning) {\n if (!nowOwning.includes(sheetID)) {\n app.send(AdoptedSSRemoveOwner(sheetID, nodeID));\n }\n }\n }\n adoptedStyleSheetsOwnings.set(nodeID, nowOwning);\n }, 20); // Mysterious bug:\n /* On the page https://explore.fast.design/components/fast-accordion\n the only rule inside the only adoptedStyleSheet of the iframe-s document\n gets changed during first milliseconds after the load.\n However, none of the documented methods (replace, insertRule) is triggered.\n The rule is not substituted (remains the same object), however the text gets changed.\n */\n function patchAdoptedStyleSheets(prototype) {\n const nativeAdoptedStyleSheetsDescriptor = Object.getOwnPropertyDescriptor(prototype, 'adoptedStyleSheets');\n if (nativeAdoptedStyleSheetsDescriptor) {\n Object.defineProperty(prototype, 'adoptedStyleSheets', {\n ...nativeAdoptedStyleSheetsDescriptor,\n set: function (value) {\n // @ts-ignore\n const retVal = nativeAdoptedStyleSheetsDescriptor.set.call(this, value);\n sendAdoptedStyleSheetsUpdate(this);\n return retVal;\n },\n });\n }\n }\n const patchContext = (context) => {\n // @ts-ignore\n if (context.__openreplay_adpss_patched__) {\n return;\n }\n else {\n // @ts-ignore\n context.__openreplay_adpss_patched__ = true;\n }\n patchAdoptedStyleSheets(context.Document.prototype);\n patchAdoptedStyleSheets(context.ShadowRoot.prototype);\n //@ts-ignore TODO: upgrade ts to 4.8+\n const { replace, replaceSync } = context.CSSStyleSheet.prototype;\n //@ts-ignore\n context.CSSStyleSheet.prototype.replace = function (text) {\n return replace.call(this, text).then((sheet) => {\n const sheetID = styleSheetIDMap.get(this);\n if (sheetID) {\n app.send(AdoptedSSReplaceURLBased(sheetID, text, app.getBaseHref()));\n }\n return sheet;\n });\n };\n //@ts-ignore\n context.CSSStyleSheet.prototype.replaceSync = function (text) {\n const sheetID = styleSheetIDMap.get(this);\n if (sheetID) {\n app.send(AdoptedSSReplaceURLBased(sheetID, text, app.getBaseHref()));\n }\n return replaceSync.call(this, text);\n };\n };\n patchContext(window);\n app.observer.attachContextCallback(app.safe(patchContext));\n app.attachStopCallback(() => {\n styleSheetIDMap.clear();\n adoptedStyleSheetsOwnings.clear();\n });\n // So far main Document is not triggered with nodeCallbacks\n app.attachStartCallback(() => {\n sendAdoptedStyleSheetsUpdate(document);\n });\n app.nodes.attachNodeCallback((node) => {\n if (hasAdoptedSS(node)) {\n sendAdoptedStyleSheetsUpdate(node);\n }\n });\n}\n","import { createMutationObserver, throttleWithTrailing } from '../../utils.js';\nimport { RemoveNodeAttribute, SetNodeAttributeURLBased, SetCSSDataURLBased, SetNodeData, CreateTextNode, CreateElementNode, MoveNode, RemoveNode, UnbindNodes, SetNodeAttribute, AdoptedSSInsertRuleURLBased, AdoptedSSAddOwner, SetNodeSlot, } from '../messages.gen.js';\nimport { isRootNode, isTextNode, isElementNode, isSVGElement, isUseElement, hasTag, isCommentNode, } from '../guards.js';\nimport { inlineRemoteCss } from './cssInliner.js';\nimport { nextID } from '../../modules/constructedStyleSheets.js';\nconst iconCache = {};\nconst svgUrlCache = {};\nexport async function parseUseEl(useElement, mode, domParser) {\n try {\n const href = useElement.getAttribute('xlink:href') || useElement.getAttribute('href');\n if (!href) {\n console.debug('Openreplay: xlink:href or href not found on <use>.');\n return;\n }\n let [url, symbolId] = href.split('#');\n if (!url && !symbolId) {\n console.warn('Openreplay: Invalid xlink:href or href found on <use>.');\n return;\n }\n if (iconCache[symbolId]) {\n return iconCache[symbolId];\n }\n // happens if svg spritemap is local, fastest case for us\n if (!url && symbolId) {\n const hasHashtag = href.startsWith('#');\n let escapedURL;\n if (hasHashtag) {\n escapedURL = `#${CSS.escape(href.substring(1))}`;\n }\n else {\n escapedURL = CSS.escape(href);\n }\n const symbol = document.querySelector(escapedURL);\n if (symbol) {\n const inlineSvg = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"${symbol.getAttribute('viewBox') || '0 0 24 24'}\">\n ${symbol.innerHTML}\n </svg>\n `;\n iconCache[symbolId] = inlineSvg;\n return inlineSvg;\n }\n else {\n console.warn('Openreplay: Sprite symbol not found in the document.');\n return;\n }\n }\n let svgDoc;\n if (svgUrlCache[url]) {\n if (svgUrlCache[url] === 1) {\n await new Promise((resolve) => {\n let tries = 0;\n const interval = setInterval(() => {\n if (tries > 100) {\n clearInterval(interval);\n resolve(false);\n }\n if (svgUrlCache[url] !== 1) {\n svgDoc = svgUrlCache[url];\n clearInterval(interval);\n resolve(true);\n }\n else {\n tries++;\n }\n }, 100);\n });\n }\n else {\n svgDoc = svgUrlCache[url] ?? `<svg xmlns=\"http://www.w3.org/2000/svg\"></svg>`;\n }\n }\n else {\n svgUrlCache[url] = 1;\n const response = await fetch(url);\n const svgText = await response.text();\n svgDoc = domParser.parseFromString(svgText, 'image/svg+xml');\n svgUrlCache[url] = svgDoc;\n }\n // @ts-ignore\n const symbol = svgDoc.getElementById(symbolId);\n if (!symbol) {\n console.debug('Openreplay: Symbol not found in SVG.');\n return '';\n }\n if (mode === 'inline') {\n const res = { paths: symbol.innerHTML, vbox: symbol.getAttribute('viewBox') || '0 0 24 24' };\n iconCache[symbolId] = res;\n return res;\n }\n if (mode === 'svgtext') {\n const inlineSvg = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"${symbol.getAttribute('viewBox') || '0 0 24 24'}\">\n ${symbol.innerHTML}\n </svg>\n `;\n iconCache[symbolId] = inlineSvg;\n return inlineSvg;\n }\n if (mode === 'dataurl') {\n const inlineSvg = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"${symbol.getAttribute('viewBox') || '0 0 24 24'}\">\n ${symbol.innerHTML}\n </svg>\n `;\n const encodedSvg = btoa(inlineSvg);\n const dataUrl = `data:image/svg+xml;base64,${encodedSvg}`;\n iconCache[symbolId] = dataUrl;\n return dataUrl;\n }\n console.debug(`Openreplay: Unknown mode: ${mode}. Use \"inline\" or \"dataurl\".`);\n }\n catch (error) {\n console.error('Openreplay: Error processing <use> element:', error);\n }\n}\nfunction isIgnored(node) {\n if (isCommentNode(node)) {\n return true;\n }\n if (isTextNode(node)) {\n return false;\n }\n if (!isElementNode(node)) {\n return true;\n }\n const tag = node.tagName.toUpperCase();\n if (tag === 'LINK') {\n const rel = node.getAttribute('rel');\n const as = node.getAttribute('as');\n return !(rel?.includes('stylesheet') || as === 'style' || as === 'font');\n }\n return (tag === 'SCRIPT' || tag === 'NOSCRIPT' || tag === 'META' || tag === 'TITLE' || tag === 'BASE');\n}\nfunction isObservable(node) {\n if (isRootNode(node)) {\n return true;\n }\n return !isIgnored(node);\n}\n/*\n TODO:\n - fix unbinding logic + send all removals first (ensure sequence is correct)\n - use document as a 0-node in the upper context (should be updated in player at first)\n*/\nvar RecentsType;\n(function (RecentsType) {\n RecentsType[RecentsType[\"New\"] = 0] = \"New\";\n RecentsType[RecentsType[\"Removed\"] = 1] = \"Removed\";\n RecentsType[RecentsType[\"Changed\"] = 2] = \"Changed\";\n})(RecentsType || (RecentsType = {}));\nexport default class Observer {\n constructor(app, isTopContext = false, options = {}) {\n this.app = app;\n this.isTopContext = isTopContext;\n this.commited = [];\n this.recents = new Map();\n this.indexes = [];\n this.attributesMap = new Map();\n this.textSet = new Set();\n this.slotMap = new Map();\n this.disableSprites = false;\n /**\n * this option means that, instead of using link element with href to load css,\n * we will try to parse the css text instead and send it as css rules set\n * can (and will) affect performance\n * */\n this.inlineRemoteCss = false;\n this.inlinerOptions = undefined;\n this.domParser = new DOMParser();\n this.throttling = true;\n this.throttledSetNodeData = throttleWithTrailing((id, parentElement, data) => this.sendNodeData(id, parentElement, data), 30);\n this.throttling = !Boolean(options.disableThrottling);\n this.disableSprites = Boolean(options.disableSprites);\n this.inlineRemoteCss = Boolean(options.inlineRemoteCss);\n this.inlinerOptions = options.inlinerOptions;\n this.observer = createMutationObserver(this.app.safe((mutations) => {\n for (const mutation of mutations) {\n // mutations order is sequential\n const target = mutation.target;\n const type = mutation.type;\n if (!isObservable(target)) {\n continue;\n }\n if (type === 'childList') {\n for (let i = 0; i < mutation.removedNodes.length; i++) {\n // Should be the same as bindTree(mutation.removedNodes[i]), but logic needs to be be untied\n if (isObservable(mutation.removedNodes[i])) {\n this.bindNode(mutation.removedNodes[i]);\n }\n }\n for (let i = 0; i < mutation.addedNodes.length; i++) {\n this.bindTree(mutation.addedNodes[i]);\n }\n continue;\n }\n const id = this.app.nodes.getID(target);\n if (id === undefined) {\n continue;\n }\n if (!this.recents.has(id)) {\n this.recents.set(id, RecentsType.Changed); // TODO only when altered\n }\n if (type === 'attributes') {\n const name = mutation.attributeName;\n if (name === null) {\n continue;\n }\n let attr = this.attributesMap.get(id);\n if (attr === undefined) {\n this.attributesMap.set(id, (attr = new Set()));\n }\n attr.add(name);\n continue;\n }\n if (type === 'characterData') {\n this.textSet.add(id);\n continue;\n }\n }\n this.commitNodes();\n }), this.app.options.forceNgOff);\n }\n clear() {\n this.commited.length = 0;\n this.recents.clear();\n this.indexes.length = 1;\n this.attributesMap.clear();\n this.textSet.clear();\n }\n /**\n * EXPERIMENTAL: Unbinds the removed nodes in case of iframe src change.\n *\n * right now, we're relying on nodes.maintainer\n */\n handleIframeSrcChange(iframe) {\n const oldContentDocument = iframe.contentDocument;\n if (oldContentDocument) {\n const id = this.app.nodes.getID(oldContentDocument);\n if (id !== undefined) {\n const walker = document.createTreeWalker(oldContentDocument, NodeFilter.SHOW_ELEMENT + NodeFilter.SHOW_TEXT, {\n acceptNode: (node) => isIgnored(node) || this.app.nodes.getID(node) === undefined\n ? NodeFilter.FILTER_REJECT\n : NodeFilter.FILTER_ACCEPT,\n }, \n // @ts-ignore\n false);\n let removed = 0;\n const totalBeforeRemove = this.app.nodes.getNodeCount();\n const contentDocument = iframe.contentDocument;\n const nodesUnregister = this.app.nodes.unregisterNode.bind(this.app.nodes);\n while (walker.nextNode()) {\n if (!contentDocument.contains(walker.currentNode)) {\n removed += 1;\n nodesUnregister(walker.currentNode);\n }\n }\n const removedPercent = Math.floor((removed / totalBeforeRemove) * 100);\n if (removedPercent > 30) {\n this.app.send(UnbindNodes(removedPercent));\n }\n }\n }\n }\n sendNodeAttribute(id, node, name, value) {\n if (isSVGElement(node)) {\n if (name.startsWith('xlink:')) {\n name = name.substring(6);\n }\n if (value === null) {\n this.app.send(RemoveNodeAttribute(id, name));\n }\n if (isUseElement(node) && name === 'href' && !this.disableSprites) {\n parseUseEl(node, 'svgtext', this.domParser)\n .then((svgData) => {\n if (svgData) {\n this.app.send(SetNodeAttribute(id, name, `_$OPENREPLAY_SPRITE$_${svgData}`));\n }\n })\n .catch((e) => {\n console.error('Openreplay: Error parsing <use> element:', e);\n });\n return;\n }\n if (name === 'href') {\n if (value.length > 1e5) {\n value = '';\n }\n this.app.send(SetNodeAttributeURLBased(id, name, value, this.app.getBaseHref()));\n }\n else {\n this.app.attributeSender.sendSetAttribute(id, name, value);\n }\n return;\n }\n if (name === 'src' ||\n name === 'srcset' ||\n name === 'integrity' ||\n name === 'crossorigin' ||\n name === 'autocomplete' ||\n name.substring(0, 2) === 'on') {\n return;\n }\n if (name === 'value' &&\n hasTag(node, 'input') &&\n node.type !== 'button' &&\n node.type !== 'reset' &&\n node.type !== 'submit') {\n return;\n }\n if (value === null) {\n this.app.send(RemoveNodeAttribute(id, name));\n return;\n }\n if (name === 'style' || (name === 'href' && hasTag(node, 'link'))) {\n if ('rel' in node && node.rel === 'stylesheet' && this.inlineRemoteCss) {\n setTimeout(() => {\n inlineRemoteCss(\n // @ts-ignore\n node, id, this.app.getBaseHref(), nextID, (id, cssText, index, baseHref) => {\n this.app.send(AdoptedSSInsertRuleURLBased(id, cssText, index, baseHref));\n }, (sheetId, ownerId) => {\n this.app.send(AdoptedSSAddOwner(sheetId, ownerId));\n }, this.inlinerOptions?.forceFetch, this.inlinerOptions?.forcePlain, (cssText, fakeTextId) => {\n this.app.send(CreateTextNode(fakeTextId, id, 0));\n setTimeout(() => {\n this.app.send(SetCSSDataURLBased(fakeTextId, cssText, this.app.getBaseHref()));\n }, 10);\n });\n }, 0);\n return;\n }\n this.app.send(SetNodeAttributeURLBased(id, name, value, this.app.getBaseHref()));\n return;\n }\n if (name === 'href' || value.length > 1e5) {\n value = '';\n }\n if (['alt', 'placeholder'].includes(name) && this.app.sanitizer.privateMode) {\n value = value.replaceAll(/./g, '*');\n }\n this.app.attributeSender.sendSetAttribute(id, name, value);\n }\n sendNodeData(id, parentElement, data) {\n if (hasTag(parentElement, 'style')) {\n this.app.send(SetCSSDataURLBased(id, data, this.app.getBaseHref()));\n return;\n }\n data = this.app.sanitizer.sanitize(id, data);\n this.app.send(SetNodeData(id, data));\n }\n bindNode(node) {\n const [id, isNew] = this.app.nodes.registerNode(node);\n if (isElementNode(node) && hasTag(node, 'slot')) {\n this.app.nodes.attachNodeListener(node, 'slotchange', () => {\n const sl = node;\n sl.assignedNodes({ flatten: true }).forEach((n) => {\n const nid = this.app.nodes.getID(n);\n if (nid !== undefined) {\n this.recents.set(nid, RecentsType.Changed);\n }\n });\n });\n }\n if (isNew) {\n this.recents.set(id, RecentsType.New);\n }\n else if (this.recents.get(id) !== RecentsType.New) {\n this.recents.set(id, RecentsType.Removed);\n }\n }\n bindTree(node) {\n if (!isObservable(node)) {\n return;\n }\n this.bindNode(node);\n const walker = document.createTreeWalker(node, NodeFilter.SHOW_ELEMENT + NodeFilter.SHOW_TEXT, {\n acceptNode: (node) => {\n if (this.app.nodes.getID(node) !== undefined) {\n this.app.debug.info('! Node is already bound', node);\n }\n return isIgnored(node) || this.app.nodes.getID(node) !== undefined\n ? NodeFilter.FILTER_REJECT\n : NodeFilter.FILTER_ACCEPT;\n },\n }, \n // @ts-ignore\n false);\n while (walker.nextNode()) {\n this.bindNode(walker.currentNode);\n }\n }\n unbindTree(node) {\n const id = this.app.nodes.unregisterNode(node);\n if (id !== undefined) {\n this.slotMap.delete(id);\n }\n if (id !== undefined && this.recents.get(id) === RecentsType.Removed) {\n // Sending RemoveNode only for parent to maintain\n this.app.send(RemoveNode(id));\n // Unregistering all the children in order to clear the memory\n const walker = document.createTreeWalker(node, NodeFilter.SHOW_ELEMENT + NodeFilter.SHOW_TEXT, {\n acceptNode: (node) => isIgnored(node) || this.app.nodes.getID(node) === undefined\n ? NodeFilter.FILTER_REJECT\n : NodeFilter.FILTER_ACCEPT,\n }, \n // @ts-ignore\n false);\n let removed = 0;\n const totalBeforeRemove = this.app.nodes.getNodeCount();\n while (walker.nextNode()) {\n removed += 1;\n this.app.nodes.unregisterNode(walker.currentNode);\n }\n const removedPercent = Math.floor((removed / totalBeforeRemove) * 100);\n if (removedPercent > 30) {\n this.app.send(UnbindNodes(removedPercent));\n }\n }\n }\n // A top-consumption function on the infinite lists test. (~1% of performance resources)\n _commitNode(id, node) {\n if (isRootNode(node)) {\n return true;\n }\n let slot = node.assignedSlot;\n const parent = node.parentNode;\n let parentID;\n // Disable parent check for the upper context HTMLHtmlElement, because it is root there... (before)\n // TODO: get rid of \"special\" cases (there is an issue with CreateDocument altered behaviour though)\n // TODO: Clean the logic (though now it workd fine)\n if (!hasTag(node, 'html') || !this.isTopContext) {\n if (parent === null) {\n // Sometimes one observation contains attribute mutations for the removimg node, which gets ignored here.\n // That shouldn't affect the visual rendering ( should it? maybe when transition applied? )\n this.unbindTree(node);\n return false;\n }\n parentID = this.app.nodes.getID(parent);\n if (parentID === undefined) {\n this.unbindTree(node);\n return false;\n }\n if (!this.commitNode(parentID)) {\n this.unbindTree(node);\n return false;\n }\n this.app.sanitizer.handleNode(id, parentID, node);\n if (this.app.sanitizer.isHidden(parentID)) {\n return false;\n }\n }\n // From here parentID === undefined if node is top context HTML node\n let sibling = node.previousSibling;\n while (sibling !== null) {\n const siblingID = this.app.nodes.getID(sibling);\n if (siblingID !== undefined) {\n this.commitNode(siblingID);\n this.indexes[id] = this.indexes[siblingID] + 1;\n break;\n }\n sibling = sibling.previousSibling;\n }\n if (sibling === null) {\n this.indexes[id] = 0;\n }\n const recentsType = this.recents.get(id);\n const isNew = recentsType === RecentsType.New;\n const index = this.indexes[id];\n if (index === undefined) {\n throw 'commitNode: missing node index';\n }\n if (isNew) {\n if (isElementNode(node)) {\n let el = node;\n if (parentID !== undefined) {\n if (this.app.sanitizer.isHidden(id)) {\n const width = el.clientWidth;\n const height = el.clientHeight;\n el = node.cloneNode();\n el.style.width = `${width}px`;\n el.style.height = `${height}px`;\n }\n if ('rel' in el && el.rel === 'stylesheet' && this.inlineRemoteCss) {\n this.app.send(CreateElementNode(id, parentID, index, 'STYLE', false));\n }\n else {\n this.app.send(CreateElementNode(id, parentID, index, el.tagName, isSVGElement(node)));\n }\n }\n for (let i = 0; i < el.attributes.length; i++) {\n const attr = el.attributes[i];\n this.sendNodeAttribute(id, el, attr.nodeName, attr.value);\n }\n }\n else if (isTextNode(node)) {\n // for text node id != 0, hence parentID !== undefined and parent is Element\n this.app.send(CreateTextNode(id, parentID, index));\n if (this.throttling) {\n this.throttledSetNodeData(id, parent, node.data);\n }\n else {\n this.sendNodeData(id, parent, node.data);\n }\n }\n if (slot) {\n const slotID = this.app.nodes.getID(slot);\n if (slotID !== undefined) {\n this.slotMap.set(id, slotID);\n this.app.send(SetNodeSlot(id, slotID));\n }\n }\n return true;\n }\n if (recentsType === RecentsType.Removed && parentID !== undefined) {\n this.app.send(MoveNode(id, parentID, index));\n if (slot) {\n const slotID = this.app.nodes.getID(slot);\n if (slotID !== undefined && this.slotMap.get(id) !== slotID) {\n this.slotMap.set(id, slotID);\n this.app.send(SetNodeSlot(id, slotID));\n }\n }\n else if (this.slotMap.has(id)) {\n this.slotMap.delete(id);\n this.app.send(SetNodeSlot(id, 0));\n }\n }\n const attr = this.attributesMap.get(id);\n if (attr !== undefined) {\n if (!isElementNode(node)) {\n throw 'commitNode: node is not an element';\n }\n for (const name of attr) {\n this.sendNodeAttribute(id, node, name, node.getAttribute(name));\n }\n }\n if (this.textSet.has(id)) {\n if (!isTextNode(node)) {\n throw 'commitNode: node is not a text';\n }\n // for text node id != 0, hence parent is Element\n if (this.throttling) {\n this.throttledSetNodeData(id, parent, node.data);\n }\n else {\n this.sendNodeData(id, parent, node.data);\n }\n }\n return true;\n }\n commitNode(id) {\n const node = this.app.nodes.getNode(id);\n if (!node) {\n return false;\n }\n const cmt = this.commited[id];\n if (cmt !== undefined) {\n return cmt;\n }\n return (this.commited[id] = this._commitNode(id, node));\n }\n commitNodes(isStart = false) {\n let node;\n for (const [id, type] of this.recents.entries()) {\n this.commitNode(id);\n if (type === RecentsType.New && (node = this.app.nodes.getNode(id))) {\n this.app.nodes.callNodeCallbacks(node, isStart);\n }\n }\n this.clear();\n }\n // ISSSUE (nodeToBinde should be the same as node in all cases. Look at the comment about 0-node at the beginning of the file.)\n // TODO: use one observer instance for all iframes/shadowRoots (composition instiad of inheritance)\n observeRoot(node, beforeCommit, nodeToBind = node) {\n this.observer.observe(node, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true,\n attributeOldValue: false,\n characterDataOldValue: false,\n });\n this.bindTree(nodeToBind);\n beforeCommit(this.app.nodes.getID(node));\n this.commitNodes(true);\n }\n disconnect() {\n this.observer.disconnect();\n this.clear();\n this.throttledSetNodeData.clear();\n }\n}\n","import Observer from './observer.js';\nimport { CreateIFrameDocument } from '../messages.gen.js';\nexport default class IFrameObserver extends Observer {\n observe(iframe) {\n const doc = iframe.contentDocument;\n const hostID = this.app.nodes.getID(iframe);\n if (!doc || hostID === undefined) {\n return;\n }\n // Have to observe document, because the inner <html> might be changed\n this.observeRoot(doc, (docID) => {\n //MBTODO: do not send if empty (send on load? it might be in-place iframe, like our replayer, which does not get loaded)\n if (docID === undefined) {\n this.app.debug.log('OpenReplay: Iframe document not bound');\n return;\n }\n this.docId = docID;\n this.app.send(CreateIFrameDocument(hostID, docID));\n });\n }\n syntheticObserve(rootNodeId, doc) {\n this.observeRoot(doc, (docID) => {\n if (docID === undefined) {\n this.app.debug.log('OpenReplay: Iframe document not bound');\n return;\n }\n this.app.send(CreateIFrameDocument(rootNodeId, docID));\n });\n }\n}\n","import Observer from './observer.js';\nimport { CreateIFrameDocument } from '../messages.gen.js';\nexport default class ShadowRootObserver extends Observer {\n observe(el) {\n const shRoot = el.shadowRoot;\n const hostID = this.app.nodes.getID(el);\n if (!shRoot || hostID === undefined) {\n return;\n } // log\n this.observeRoot(shRoot, (rootID) => {\n if (rootID === undefined) {\n this.app.debug.error('OpenReplay: Shadow Root was not bound');\n return;\n }\n this.app.send(CreateIFrameDocument(hostID, rootID));\n });\n }\n}\n","export default class IFrameOffsets {\n constructor() {\n this.states = new WeakMap();\n }\n calcOffset(state) {\n let parLeft = 0, parTop = 0;\n if (state.parent) {\n ;\n [parLeft, parTop] = this.calcOffset(state.parent);\n }\n if (!state.offset) {\n const { left, top } = state.iFrame.getBoundingClientRect();\n state.offset = [left, top];\n }\n const [left, top] = state.offset;\n return [parLeft + left, parTop + top]; // TODO: store absolute sum, invalidate whole subtree. Otherwise it is summated on each mousemove\n }\n getDocumentOffset(doc) {\n const state = this.states.get(doc);\n if (!state) {\n return [0, 0];\n } // topmost doc\n return this.calcOffset(state);\n }\n observe(iFrame) {\n const doc = iFrame.contentDocument;\n if (!doc) {\n return;\n }\n const parentDoc = iFrame.ownerDocument;\n const parentState = this.states.get(parentDoc);\n const state = {\n offset: null, // lazy calc\n iFrame,\n parent: parentState || null, // null when parentDoc is the topmost document\n clear: () => {\n parentDoc.removeEventListener('scroll', invalidateOffset);\n parentDoc.defaultView?.removeEventListener('resize', invalidateOffset);\n },\n };\n const invalidateOffset = () => {\n state.offset = null;\n };\n // anything more reliable? This does not cover all cases (layout changes are ignored, for ex.)\n parentDoc.addEventListener('scroll', invalidateOffset);\n parentDoc.defaultView?.addEventListener('resize', invalidateOffset);\n this.states.set(doc, state);\n }\n clear() {\n this.states = new WeakMap();\n }\n}\n","import Observer from './observer.js';\nimport { isElementNode, hasTag } from '../guards.js';\nimport IFrameObserver from './iframe_observer.js';\nimport ShadowRootObserver from './shadow_root_observer.js';\nimport IFrameOffsets from './iframe_offsets.js';\nimport { CreateDocument } from '../messages.gen.js';\nimport { IN_BROWSER, hasOpenreplayAttribute, canAccessIframe } from '../../utils.js';\nexport var InlineCssMode;\n(function (InlineCssMode) {\n InlineCssMode[InlineCssMode[\"Unset\"] = -1] = \"Unset\";\n /** default behavior -- will parse and cache the css file on backend */\n InlineCssMode[InlineCssMode[\"Disabled\"] = 0] = \"Disabled\";\n /** will attempt to record the linked css file as AdoptedStyleSheet object */\n InlineCssMode[InlineCssMode[\"Inline\"] = 1] = \"Inline\";\n /** will fetch the file, then simulate AdoptedStyleSheets behavior programmaticaly for the replay */\n InlineCssMode[InlineCssMode[\"InlineFetched\"] = 2] = \"InlineFetched\";\n /** will fetch the file, then save it as plain css inside <style> node */\n InlineCssMode[InlineCssMode[\"PlainFetched\"] = 3] = \"PlainFetched\";\n})(InlineCssMode || (InlineCssMode = {}));\nconst localhostStylesDoc = 'https://docs.openreplay.com/en/troubleshooting/localhost/';\nfunction getInlineOptions(mode, logger) {\n switch (mode) {\n case InlineCssMode.Inline:\n return {\n inlineRemoteCss: true,\n inlinerOptions: {\n forceFetch: false,\n forcePlain: false,\n },\n };\n case InlineCssMode.InlineFetched:\n return {\n inlineRemoteCss: true,\n inlinerOptions: {\n forceFetch: true,\n forcePlain: false,\n },\n };\n case InlineCssMode.PlainFetched:\n return {\n inlineRemoteCss: true,\n inlinerOptions: {\n forceFetch: true,\n forcePlain: true,\n },\n };\n case InlineCssMode.Unset:\n const isLocalhost = /^https?:\\/\\/(localhost|127\\.0\\.0\\.1)(:\\d+)?\\/?/.test(window.location.href);\n if (isLocalhost) {\n logger(`Enabling InlineCssMode.PlainFetched by default on localhost to preserve css styles, refer to ${localhostStylesDoc} for details, set InlineCssMode to 0 to skip this behavior`);\n return {\n inlineRemoteCss: true,\n inlinerOptions: {\n forceFetch: true,\n forcePlain: true,\n },\n };\n }\n else {\n return {\n inlineRemoteCss: false,\n inlinerOptions: {\n forceFetch: false,\n forcePlain: false,\n },\n };\n }\n case InlineCssMode.Disabled:\n default:\n return {\n inlineRemoteCss: false,\n inlinerOptions: {\n forceFetch: false,\n forcePlain: false,\n },\n };\n }\n}\nconst attachShadowNativeFn = IN_BROWSER ? Element.prototype.attachShadow : () => new ShadowRoot();\nexport default class TopObserver extends Observer {\n constructor(params) {\n const opts = Object.assign({\n captureIFrames: true,\n disableSprites: false,\n inlineCss: 0,\n }, params.options);\n const observerOptions = {\n disableSprites: opts.disableSprites,\n disableThrottling: opts.disableThrottling,\n ...getInlineOptions(opts.inlineCss, console.warn),\n };\n super(params.app, true, observerOptions);\n this.iframeOffsets = new IFrameOffsets();\n this.contextCallbacks = [];\n // Attached once per Tracker instance\n this.contextsSet = new WeakSet();\n this.iframeObserversArr = [];\n this.iframeObservers = new WeakMap();\n this.docObservers = new WeakMap();\n this.shadowRootObservers = new WeakMap();\n this.app = params.app;\n this.options = opts;\n // IFrames\n this.app.nodes.attachNodeCallback((node) => {\n if (hasTag(node, 'iframe') &&\n ((this.options.captureIFrames && !hasOpenreplayAttribute(node, 'obscured')) ||\n hasOpenreplayAttribute(node, 'capture'))) {\n this.handleIframe(node);\n }\n });\n // ShadowDOM\n this.app.nodes.attachNodeCallback((node) => {\n if (isElementNode(node) && node.shadowRoot !== null) {\n this.handleShadowRoot(node.shadowRoot);\n }\n });\n }\n attachContextCallback(cb) {\n this.contextCallbacks.push(cb);\n }\n getDocumentOffset(doc) {\n return this.iframeOffsets.getDocumentOffset(doc);\n }\n handleIframe(iframe) {\n // setTimeout is required. Otherwise some event listeners (scroll, mousemove) applied in modules\n // do not work on the iframe document when it 've been loaded dynamically ((why?))\n const handle = this.app.safe(() => setTimeout(() => {\n const id = this.app.nodes.getID(iframe);\n if (id === undefined || !canAccessIframe(iframe))\n return;\n const currentWin = iframe.contentWindow;\n const currentDoc = iframe.contentDocument;\n if (!currentDoc) {\n this.app.debug.warn('no doc for iframe found', iframe);\n return;\n }\n if (currentDoc && this.docObservers.has(currentDoc)) {\n this.app.debug.info('doc already observed for', id);\n return;\n }\n const observer = new IFrameObserver(this.app, false, {});\n this.iframeObservers.set(iframe, observer);\n this.docObservers.set(currentDoc, observer);\n this.iframeObserversArr.push(observer);\n observer.observe(iframe);\n this.iframeOffsets.observe(iframe);\n if (currentWin &&\n // Sometimes currentWin.window is null (not in specification). Such window object is not functional\n currentWin === currentWin.window &&\n !this.contextsSet.has(currentWin) // for each context callbacks called once per Tracker (TopObserver) instance\n //TODO: more explicit logic\n ) {\n this.contextsSet.add(currentWin);\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/41684\n this.contextCallbacks.forEach((cb) => cb(currentWin));\n }\n // we need this delay because few iframes stacked one in another with rapid updates will break the player (or browser engine rather?)\n }, 250));\n iframe.addEventListener('load', handle);\n handle();\n }\n handleShadowRoot(shRoot) {\n const observer = new ShadowRootObserver(this.app);\n this.shadowRootObservers.set(shRoot, observer);\n observer.observe(shRoot.host);\n }\n observe() {\n // Protection from several subsequent calls?\n const observer = this;\n Element.prototype.attachShadow = function () {\n // eslint-disable-next-line\n const shadow = attachShadowNativeFn.apply(this, arguments);\n observer.handleShadowRoot(shadow);\n return shadow;\n };\n this.app.nodes.clear();\n // Can observe documentElement (<html>) here, because it is not supposed to be changing.\n // However, it is possible in some exotic cases and may cause an ignorance of the newly created <html>\n // In this case context.document have to be observed, but this will cause\n // the change in the re-player behaviour caused by CreateDocument message:\n // the 0-node (\"fRoot\") will become #document rather than documentElement as it is now.\n // Alternatively - observe(#document) then bindNode(documentElement)\n this.observeRoot(window.document, () => {\n this.app.send(CreateDocument());\n // it has no node_id here\n this.app.nodes.callNodeCallbacks(document, true);\n }, window.document.documentElement);\n }\n crossdomainObserve(rootNodeId, frameOder, frameLevel) {\n const observer = this;\n Element.prototype.attachShadow = function () {\n // eslint-disable-next-line\n const shadow = attachShadowNativeFn.apply(this, arguments);\n observer.handleShadowRoot(shadow);\n return shadow;\n };\n this.app.nodes.clear();\n this.app.nodes.crossdomainMode(frameLevel, frameOder);\n const iframeObserver = new IFrameObserver(this.app);\n this.iframeObservers.set(window.document, iframeObserver);\n iframeObserver.syntheticObserve(rootNodeId, window.document);\n }\n disconnect() {\n this.iframeOffsets.clear();\n Element.prototype.attachShadow = attachShadowNativeFn;\n this.iframeObserversArr.forEach((observer) => observer.disconnect());\n this.iframeObserversArr = [];\n this.iframeObservers = new WeakMap();\n this.shadowRootObservers = new WeakMap();\n this.docObservers = new WeakMap();\n super.disconnect();\n }\n}\n","import { stars, hasOpenreplayAttribute } from '../utils.js';\nimport { isElementNode, isTextNode } from './guards.js';\nexport var SanitizeLevel;\n(function (SanitizeLevel) {\n SanitizeLevel[SanitizeLevel[\"Plain\"] = 0] = \"Plain\";\n SanitizeLevel[SanitizeLevel[\"Obscured\"] = 1] = \"Obscured\";\n SanitizeLevel[SanitizeLevel[\"Hidden\"] = 2] = \"Hidden\";\n})(SanitizeLevel || (SanitizeLevel = {}));\nexport const stringWiper = (input) => input\n .trim()\n .replace(/[^\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff\\s]/g, '*');\nexport default class Sanitizer {\n constructor(params) {\n this.obscured = new Set();\n this.hidden = new Set();\n this.app = params.app;\n const defaultOptions = {\n obscureTextEmails: true,\n obscureTextNumbers: false,\n privateMode: false,\n domSanitizer: undefined,\n };\n this.privateMode = params.options?.privateMode ?? false;\n this.options = Object.assign(defaultOptions, params.options);\n }\n handleNode(id, parentID, node) {\n if (this.options.privateMode) {\n if (isElementNode(node) && !hasOpenreplayAttribute(node, 'unmask')) {\n return this.obscured.add(id);\n }\n if (isTextNode(node) && !hasOpenreplayAttribute(node.parentNode, 'unmask')) {\n return this.obscured.add(id);\n }\n }\n if (this.obscured.has(parentID) ||\n (isElementNode(node) &&\n (hasOpenreplayAttribute(node, 'masked') || hasOpenreplayAttribute(node, 'obscured')))) {\n this.obscured.add(id);\n }\n if (this.hidden.has(parentID) ||\n (isElementNode(node) &&\n (hasOpenreplayAttribute(node, 'htmlmasked') || hasOpenreplayAttribute(node, 'hidden')))) {\n this.hidden.add(id);\n }\n if (this.options.domSanitizer !== undefined && isElementNode(node)) {\n const sanitizeLevel = this.options.domSanitizer(node);\n if (sanitizeLevel === SanitizeLevel.Obscured) {\n this.obscured.add(id);\n }\n if (sanitizeLevel === SanitizeLevel.Hidden) {\n this.hidden.add(id);\n }\n }\n }\n sanitize(id, data) {\n if (this.obscured.has(id)) {\n // TODO: is it the best place to put trim() ? Might trimmed spaces be considered in layout in certain cases?\n return stringWiper(data);\n }\n if (this.options.obscureTextNumbers) {\n data = data.replace(/\\d/g, '0');\n }\n if (this.options.obscureTextEmails) {\n data = data.replace(/^\\w+([+.-]\\w+)*@\\w+([.-]\\w+)*\\.\\w{2,3}$/g, (email) => {\n const [name, domain] = email.split('@');\n const [domainName, host] = domain.split('.');\n return `${stars(name)}@${stars(domainName)}.${stars(host)}`;\n });\n }\n return data;\n }\n isObscured(id) {\n return this.obscured.has(id);\n }\n isHidden(id) {\n return this.hidden.has(id);\n }\n getInnerTextSecure(el) {\n const id = this.app.nodes.getID(el);\n if (!id) {\n return '';\n }\n return this.sanitize(id, el.innerText);\n }\n clear() {\n this.obscured.clear();\n this.hidden.clear();\n }\n}\n","import { generateRandomId } from '../utils.js';\nconst tokenSeparator = '_$_';\nexport default class Session {\n constructor(params) {\n this.metadata = {};\n this.userID = null;\n this.callbacks = [];\n this.timestamp = 0;\n this.getPageNumber = () => {\n const pageNoStr = this.app.sessionStorage.getItem(this.options.session_pageno_key);\n if (pageNoStr == null) {\n return undefined;\n }\n return parseInt(pageNoStr);\n };\n this.incPageNo = () => {\n let pageNo = this.getPageNumber();\n if (pageNo === undefined) {\n pageNo = 0;\n }\n else {\n pageNo++;\n }\n this.app.sessionStorage.setItem(this.options.session_pageno_key, pageNo.toString());\n return pageNo;\n };\n this.getSessionToken = (projectKey) => {\n const tokenWithProject = this.token || this.app.sessionStorage.getItem(this.options.session_token_key);\n if (projectKey && tokenWithProject) {\n const savedProject = tokenWithProject.split(tokenSeparator)[1];\n if (!savedProject || savedProject !== projectKey) {\n this.app.sessionStorage.removeItem(this.options.session_token_key);\n this.token = undefined;\n return undefined;\n }\n }\n const token = tokenWithProject ? tokenWithProject.split(tokenSeparator)[0] : null;\n return token || undefined;\n };\n this.getRawTokenWithProject = () => {\n return this.token || this.app.sessionStorage.getItem(this.options.session_token_key);\n };\n this.setSessionToken = (token, projectKey) => {\n this.token = `${token}${tokenSeparator}${projectKey}`;\n this.app.sessionStorage.setItem(this.options.session_token_key, `${token}${tokenSeparator}${projectKey}`);\n };\n this.app = params.app;\n this.options = params.options;\n this.createTabId();\n }\n attachUpdateCallback(cb) {\n this.callbacks.push(cb);\n }\n handleUpdate(newInfo) {\n if (newInfo.userID == null) {\n delete newInfo.userID;\n }\n if (newInfo.sessionID == null) {\n delete newInfo.sessionID;\n }\n this.callbacks.forEach((cb) => cb(newInfo));\n }\n assign(newInfo) {\n if (newInfo.userID !== undefined) {\n // TODO clear nullable/undefinable types\n this.userID = newInfo.userID;\n }\n if (newInfo.metadata !== undefined) {\n Object.entries(newInfo.metadata).forEach(([k, v]) => (this.metadata[k] = v));\n }\n if (newInfo.sessionID !== undefined) {\n this.sessionID = newInfo.sessionID;\n }\n if (newInfo.timestamp !== undefined) {\n this.timestamp = newInfo.timestamp;\n }\n if (newInfo.projectID !== undefined) {\n this.projectID = newInfo.projectID;\n }\n this.handleUpdate(newInfo);\n }\n setMetadata(key, value) {\n this.metadata[key] = value;\n this.handleUpdate({ metadata: { [key]: value } });\n }\n setUserID(userID) {\n this.userID = userID;\n this.handleUpdate({ userID });\n }\n setUserInfo(userInfo) {\n this.userInfo = userInfo;\n }\n applySessionHash(hash) {\n const hashParts = decodeURI(hash).split('&');\n let token = hash;\n let pageNoStr = '100500'; // back-compat for sessionToken\n if (hashParts.length == 2) {\n ;\n [pageNoStr, token] = hashParts;\n }\n if (!pageNoStr || !token) {\n return;\n }\n this.app.sessionStorage.setItem(this.options.session_token_key, token);\n this.app.sessionStorage.setItem(this.options.session_pageno_key, pageNoStr);\n }\n getSessionHash() {\n const pageNo = this.getPageNumber();\n const token = this.getRawTokenWithProject();\n if (pageNo === undefined || token === undefined) {\n return;\n }\n return encodeURI(String(pageNo) + '&' + token);\n }\n getTabId() {\n if (!this.tabId)\n this.createTabId();\n return this.tabId;\n }\n regenerateTabId() {\n const randomId = generateRandomId(12);\n this.app.sessionStorage.setItem(this.options.session_tabid_key, randomId);\n this.tabId = randomId;\n }\n createTabId() {\n const localId = this.app.sessionStorage.getItem(this.options.session_tabid_key);\n if (localId) {\n this.tabId = localId;\n }\n else {\n this.regenerateTabId();\n }\n }\n getInfo() {\n return {\n sessionID: this.sessionID,\n metadata: this.metadata,\n userID: this.userID,\n timestamp: this.timestamp,\n projectID: this.projectID,\n };\n }\n reset() {\n this.app.sessionStorage.removeItem(this.options.session_token_key);\n this.metadata = {};\n this.userID = null;\n this.sessionID = undefined;\n this.timestamp = 0;\n }\n}\n","function wrap(callback, n) {\n let t = 0;\n return () => {\n if (t++ >= n) {\n t = 0;\n callback();\n }\n };\n}\nexport default class Ticker {\n constructor(app) {\n this.app = app;\n this.timer = null;\n this.callbacks = [];\n }\n /**\n * @param {Callback} callback - repeated cb\n * @param {number} n - number of turn skips; ticker have a 30 ms cycle\n * @param {boolean} useSafe - using safe wrapper to check if app is active\n * @param {object} thisArg - link to <this>\n * */\n attach(callback, n = 0, useSafe = true, thisArg) {\n if (thisArg) {\n callback = callback.bind(thisArg);\n }\n if (useSafe) {\n callback = this.app.safe(callback);\n }\n this.callbacks.unshift(n ? wrap(callback, n) : callback) - 1;\n }\n start() {\n if (this.timer === null) {\n this.timer = setInterval(() => this.callbacks.forEach((cb) => {\n if (cb)\n cb();\n }), 30);\n }\n }\n stop() {\n if (this.timer !== null) {\n clearInterval(this.timer);\n this.timer = null;\n }\n }\n}\n","import AttributeSender from '../modules/attributeSender.js';\nimport ConditionsManager from '../modules/conditionsManager.js';\nimport { deviceMemory, jsHeapSizeLimit } from '../modules/performance.js';\nimport TagWatcher from '../modules/tagWatcher.js';\nimport { adjustTimeOrigin, createEventListener, deleteEventListener, now, requestIdleCb, simpleMerge, } from '../utils.js';\nimport CanvasRecorder from './canvas.js';\nimport Logger, { LogLevel } from './logger.js';\nimport { Metadata, TabChange, TabData, TagTrigger, Timestamp, UserID, WSChannel, } from './messages.gen.js';\nimport Nodes from './nodes/index.js';\nimport Observer, { InlineCssMode } from './observer/top_observer.js';\nimport Sanitizer from './sanitizer.js';\nimport Session from './session.js';\nimport Ticker from './ticker.js';\nexport { InlineCssMode } from './observer/top_observer.js';\n/**\n * this value is injected during build time via rollup\n * */\n// @ts-ignore\nconst workerBodyFn = global.WEBWORKER_BODY;\nconst CANCELED = 'canceled';\nconst bufferStorageKey = 'or_buffer_1';\nconst UnsuccessfulStart = (reason) => ({ reason, success: false });\nconst SuccessfulStart = (body) => ({ ...body, success: true });\nvar ActivityState;\n(function (ActivityState) {\n ActivityState[ActivityState[\"NotActive\"] = 0] = \"NotActive\";\n ActivityState[ActivityState[\"Starting\"] = 1] = \"Starting\";\n ActivityState[ActivityState[\"Active\"] = 2] = \"Active\";\n ActivityState[ActivityState[\"ColdStart\"] = 3] = \"ColdStart\";\n})(ActivityState || (ActivityState = {}));\n// TODO: use backendHost only\nexport const DEFAULT_INGEST_POINT = 'https://api.openreplay.com/ingest';\nfunction getTimezone() {\n const offset = new Date().getTimezoneOffset() * -1;\n const sign = offset >= 0 ? '+' : '-';\n const hours = Math.floor(Math.abs(offset) / 60);\n const minutes = Math.abs(offset) % 60;\n return `UTC${sign}${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}`;\n}\nconst delay = (ms) => new Promise((res) => setTimeout(res, ms));\nconst proto = {\n // ask if there are any tabs alive\n ask: 'never-gonna-give-you-up',\n // response from another tab\n resp: 'never-gonna-let-you-down',\n // regenerating id (copied other tab)\n reg: 'never-gonna-run-around-and-desert-you',\n iframeSignal: 'tracker inside a child iframe',\n iframeId: 'getting node id for child iframe',\n iframeBatch: 'batch of messages from an iframe window',\n parentAlive: 'signal that parent is live',\n killIframe: 'stop tracker inside frame',\n startIframe: 'start tracker inside frame',\n // checking updates\n polling: 'hello-how-are-you-im-under-the-water-please-help-me',\n // happens if tab is old and has outdated token but\n // not communicating with backend to update it (for whatever reason)\n reset: 'reset-your-session-please',\n};\nexport default class App {\n constructor(projectKey, sessionToken, options, signalError, insideIframe) {\n this.signalError = signalError;\n this.insideIframe = insideIframe;\n this.messages = [];\n /**\n * we need 2 buffers, so we don't lose anything\n * @read coldStart implementation\n * */\n this.bufferedMessages1 = [];\n this.bufferedMessages2 = [];\n this.startCallbacks = [];\n this.stopCallbacks = [];\n this.commitCallbacks = [];\n this.activityState = ActivityState.NotActive;\n this.version = 'TRACKER_VERSION'; // TODO: version compatability check inside each plugin.\n this.socketMode = false;\n this.compressionThreshold = 24 * 1000;\n this.bc = null;\n this.canvasRecorder = null;\n this.conditionsManager = null;\n this.canStart = false;\n this.rootId = null;\n this.pageFrames = [];\n this.frameOderNumber = 0;\n this.frameLevel = 0;\n this.emptyBatchCounter = 0;\n /** used by child iframes for crossdomain only */\n this.parentActive = false;\n this.checkStatus = () => {\n return this.parentActive;\n };\n this.parentCrossDomainFrameListener = (event) => {\n const { data } = event;\n if (!data || event.source === window)\n return;\n if (data.line === proto.startIframe) {\n if (this.active())\n return;\n try {\n this.allowAppStart();\n void this.start();\n }\n catch (e) {\n console.error('children frame restart failed:', e);\n }\n }\n if (data.line === proto.parentAlive) {\n this.parentActive = true;\n }\n if (data.line === proto.iframeId) {\n this.parentActive = true;\n this.rootId = data.id;\n this.session.setSessionToken(data.token, this.projectKey);\n this.frameOderNumber = data.frameOrderNumber;\n this.frameLevel = data.frameLevel;\n this.debug.log('starting iframe tracking', data);\n this.allowAppStart();\n }\n if (data.line === proto.killIframe) {\n if (this.active()) {\n this.stop();\n }\n }\n };\n /**\n * context ids for iframes,\n * order is not so important as long as its consistent\n * */\n this.trackedFrames = [];\n this.crossDomainIframeListener = (event) => {\n if (!this.active() || event.source === window)\n return;\n const { data } = event;\n if (!data)\n return;\n if (data.line === proto.iframeSignal) {\n // @ts-ignore\n event.source?.postMessage({ ping: true, line: proto.parentAlive }, '*');\n const signalId = async () => {\n if (event.source === null) {\n return console.error('Couldnt connect to event.source for child iframe tracking');\n }\n const id = await this.checkNodeId(event.source);\n if (!id) {\n this.debug.log('Couldnt get node id for iframe', event.source);\n return;\n }\n try {\n if (this.trackedFrames.includes(data.context)) {\n this.debug.log('Trying to observe already added iframe; ignore if its a restart');\n }\n else {\n this.trackedFrames.push(data.context);\n }\n await this.waitStarted();\n const token = this.session.getSessionToken(this.projectKey);\n const order = this.trackedFrames.findIndex((f) => f === data.context) + 1;\n if (order === 0) {\n this.debug.error('Couldnt get order number for iframe', data.context, this.trackedFrames);\n }\n const iframeData = {\n line: proto.iframeId,\n id,\n token,\n frameOrderNumber: order,\n frameLevel: this.frameLevel + 1,\n };\n this.debug.log('Got child frame signal; nodeId', id, event.source, iframeData);\n // @ts-ignore\n event.source?.postMessage(iframeData, '*');\n }\n catch (e) {\n console.error(e);\n }\n };\n void signalId();\n }\n /**\n * proxying messages from iframe to main body, so they can be in one batch (same indexes, etc)\n * plus we rewrite some of the messages to be relative to the main context/window\n * */\n if (data.line === proto.iframeBatch) {\n const msgBatch = data.messages;\n const mappedMessages = [];\n msgBatch.forEach((msg) => {\n if (msg[0] === 20 /* MType.MouseMove */) {\n let fixedMessage = msg;\n this.pageFrames.forEach((frame) => {\n if (frame.contentWindow === event.source) {\n const [type, x, y] = msg;\n const { left, top } = frame.getBoundingClientRect();\n fixedMessage = [type, x + left, y + top];\n }\n });\n mappedMessages.push(fixedMessage);\n }\n if (msg[0] === 68 /* MType.MouseClick */) {\n let fixedMessage = msg;\n this.pageFrames.forEach((frame) => {\n if (frame.contentWindow === event.source) {\n const [type, id, hesitationTime, label, selector, normX, normY] = msg;\n const { left, top, width, height } = frame.getBoundingClientRect();\n const contentWidth = document.documentElement.scrollWidth;\n const contentHeight = document.documentElement.scrollHeight;\n // (normalizedX * frameWidth + frameLeftOffset)/docSize\n const fullX = (normX / 100) * width + left;\n const fullY = (normY / 100) * height + top;\n const fixedX = fullX / contentWidth;\n const fixedY = fullY / contentHeight;\n fixedMessage = [\n type,\n id,\n hesitationTime,\n label,\n selector,\n Math.round(fixedX * 1e3) / 1e1,\n Math.round(fixedY * 1e3) / 1e1,\n ];\n }\n });\n mappedMessages.push(fixedMessage);\n }\n if (![28 /* MType.UserID */, 29 /* MType.UserAnonymousID */, 30 /* MType.Metadata */].includes(msg[0])) {\n mappedMessages.push(msg);\n }\n });\n this.messages.push(...mappedMessages);\n }\n if (data.line === proto.polling) {\n if (!this.pollingQueue.order.length) {\n return;\n }\n const nextCommand = this.pollingQueue.order[0];\n if (nextCommand && this.pollingQueue[nextCommand].length === 0) {\n this.pollingQueue.order = this.pollingQueue.order.filter((c) => c !== nextCommand);\n return;\n }\n if (this.pollingQueue[nextCommand].includes(data.context)) {\n this.pollingQueue[nextCommand] = this.pollingQueue[nextCommand].filter((c) => c !== data.context);\n // @ts-ignore\n event.source?.postMessage({ line: nextCommand }, '*');\n if (this.pollingQueue[nextCommand].length === 0) {\n this.pollingQueue.order.shift();\n }\n }\n }\n };\n /**\n * { command : [remaining iframes] }\n * + order of commands\n **/\n this.pollingQueue = {\n order: [],\n };\n this.addCommand = (cmd) => {\n this.pollingQueue.order.push(cmd);\n this.pollingQueue[cmd] = [...this.trackedFrames];\n };\n this.bootChildrenFrames = async () => {\n await this.waitStarted();\n this.addCommand(proto.startIframe);\n };\n this.killChildrenFrames = () => {\n this.addCommand(proto.killIframe);\n };\n this.signalIframeTracker = () => {\n const thisTab = this.session.getTabId();\n window.parent.postMessage({\n line: proto.iframeSignal,\n source: thisTab,\n context: this.contextId,\n }, this.options.crossdomain?.parentDomain ?? '*');\n /**\n * since we need to wait uncertain amount of time\n * and I don't want to have recursion going on,\n * we'll just use a timeout loop with backoff\n * */\n const maxRetries = 10;\n let retries = 0;\n let delay = 250;\n let cumulativeDelay = 0;\n let stopAttempts = false;\n const checkAndSendMessage = () => {\n if (stopAttempts || this.checkStatus()) {\n stopAttempts = true;\n return;\n }\n window.parent.postMessage({\n line: proto.iframeSignal,\n source: thisTab,\n context: this.contextId,\n }, this.options.crossdomain?.parentDomain ?? '*');\n this.debug.info('Trying to signal to parent, attempt:', retries + 1);\n retries++;\n };\n for (let i = 0; i < maxRetries; i++) {\n if (this.checkStatus()) {\n stopAttempts = true;\n break;\n }\n cumulativeDelay += delay;\n setTimeout(() => {\n checkAndSendMessage();\n }, cumulativeDelay);\n delay *= 1.5;\n }\n };\n this.startTimeout = null;\n this.restart = () => {\n this.stop(false);\n this.waitStatus(ActivityState.NotActive).then(() => {\n this.allowAppStart();\n this.start(this.prevOpts, true)\n .then((r) => {\n this.debug.info('Session restart', r);\n })\n .catch((e) => {\n this.debug.error('Session restart failed', e);\n });\n });\n };\n this.send = (message, urgent = false) => {\n if (this.activityState === ActivityState.NotActive) {\n return;\n }\n // ====================================================\n if (this.activityState === ActivityState.ColdStart) {\n this.bufferedMessages1.push(message);\n if (!this.singleBuffer) {\n this.bufferedMessages2.push(message);\n }\n this.conditionsManager?.processMessage(message);\n }\n else {\n this.messages.push(message);\n }\n // TODO: commit on start if there were `urgent` sends;\n // Clarify where urgent can be used for;\n // Clarify workflow for each type of message in case it was sent before start\n // (like Fetch before start; maybe add an option \"preCapture: boolean\" or sth alike)\n // Careful: `this.delay` is equal to zero before start so all Timestamp-s will have to be updated on start\n if (this.activityState === ActivityState.Active && urgent) {\n this.commit();\n }\n };\n this.coldStartCommitN = 0;\n this.delay = 0;\n this.attachStartCallback = (cb, useSafe = false) => {\n if (useSafe) {\n cb = this.safe(cb);\n }\n this.startCallbacks.push(cb);\n };\n this.attachStopCallback = (cb, useSafe = false) => {\n if (useSafe) {\n cb = this.safe(cb);\n }\n this.stopCallbacks.push(cb);\n };\n this.attachEventListener = (target, type, listener, useSafe = true, useCapture = true) => {\n if (useSafe) {\n listener = this.safe(listener);\n }\n const createListener = () => target\n ? createEventListener(target, type, listener, useCapture, this.options.forceNgOff)\n : null;\n const deleteListener = () => target\n ? deleteEventListener(target, type, listener, useCapture, this.options.forceNgOff)\n : null;\n this.attachStartCallback(createListener, useSafe);\n this.attachStopCallback(deleteListener, useSafe);\n };\n this.coldInterval = null;\n this.orderNumber = 0;\n this.coldStartTs = 0;\n this.singleBuffer = false;\n this.onSessionSent = () => {\n return;\n };\n this.prevOpts = {};\n this.restartCanvasTracking = () => {\n this.canvasRecorder?.restartTracking();\n };\n this.flushBuffer = async (buffer) => {\n return new Promise((res, reject) => {\n if (buffer.length === 0) {\n res(null);\n return;\n }\n // Since the first element is always a Timestamp, include it by default.\n let endIndex = 1;\n while (endIndex < buffer.length && buffer[endIndex][0] !== 0 /* MType.Timestamp */) {\n endIndex++;\n }\n requestIdleCb(() => {\n try {\n const messagesBatch = buffer.splice(0, endIndex);\n // Cast out potential proxy objects (produced from vue.js deep reactivity, for example) to a regular array.\n this.postToWorker(messagesBatch.map((x) => [...x]));\n res(null);\n }\n catch (e) {\n this._debug('flushBuffer', e);\n reject(new Error('flushBuffer failed'));\n }\n });\n });\n };\n this.contextId = Math.random().toString(36).slice(2);\n this.projectKey = projectKey;\n this.networkOptions = options.network;\n const defaultOptions = {\n revID: '',\n node_id: '__openreplay_id',\n session_token_key: '__openreplay_token',\n session_pageno_key: '__openreplay_pageno',\n session_reset_key: '__openreplay_reset',\n session_tabid_key: '__openreplay_tabid',\n local_uuid_key: '__openreplay_uuid',\n ingestPoint: DEFAULT_INGEST_POINT,\n resourceBaseHref: null,\n __is_snippet: false,\n __debug_report_edp: null,\n __debug__: LogLevel.Silent,\n localStorage: null,\n sessionStorage: null,\n forceSingleTab: false,\n assistSocketHost: '',\n captureIFrames: true,\n obscureTextEmails: false,\n obscureTextNumbers: false,\n disableStringDict: false,\n crossdomain: {\n parentDomain: '*',\n },\n canvas: {\n disableCanvas: false,\n fixedCanvasScaling: false,\n __save_canvas_locally: false,\n useAnimationFrame: false,\n },\n forceNgOff: false,\n inlineCss: InlineCssMode.Unset,\n disableSprites: false,\n disableThrottling: false,\n };\n this.options = simpleMerge(defaultOptions, options);\n if (!this.insideIframe &&\n !this.options.forceSingleTab &&\n globalThis &&\n 'BroadcastChannel' in globalThis) {\n const host = location.hostname.split('.').slice(-2).join('_');\n this.bc = new BroadcastChannel(`rick_${host}`);\n }\n else if (this.options.forceSingleTab) {\n this.allowAppStart();\n }\n this.revID = this.options.revID;\n this.localStorage = this.options.localStorage ?? window.localStorage;\n this.sessionStorage = this.options.sessionStorage ?? window.sessionStorage;\n this.sanitizer = new Sanitizer({ app: this, options });\n this.nodes = new Nodes({\n node_id: this.options.node_id,\n forceNgOff: Boolean(options.forceNgOff),\n maintainer: this.options.nodes?.maintainer,\n });\n this.observer = new Observer({ app: this, options });\n this.ticker = new Ticker(this);\n this.ticker.attach(() => this.commit());\n this.debug = new Logger(this.options.__debug__);\n this.session = new Session({ app: this, options: this.options });\n this.attributeSender = new AttributeSender({\n app: this,\n isDictDisabled: Boolean(this.options.disableStringDict || this.options.crossdomain?.enabled),\n });\n this.tagWatcher = new TagWatcher({\n sessionStorage: this.sessionStorage,\n errLog: this.debug.error,\n onTag: (tag) => this.send(TagTrigger(tag)),\n });\n this.session.attachUpdateCallback(({ userID, metadata }) => {\n if (userID != null) {\n if (!userID || typeof userID !== 'string' || userID.trim().length === 0) {\n this.debug.warn('Invalid userID (must be type string), ignoring.');\n return;\n }\n this.send(UserID(userID));\n }\n if (metadata != null) {\n Object.entries(metadata).forEach(([key, value]) => this.send(Metadata(key, value)));\n }\n });\n // @deprecated (use sessionHash on start instead)\n if (sessionToken != null) {\n this.session.applySessionHash(sessionToken);\n }\n const thisTab = this.session.getTabId();\n if (this.insideIframe) {\n /**\n * listen for messages from parent window, so we can signal that we're alive\n * */\n window.addEventListener('message', this.parentCrossDomainFrameListener);\n window.addEventListener('message', this.crossDomainIframeListener);\n setInterval(() => {\n if (document.hidden) {\n return;\n }\n window.parent.postMessage({\n line: proto.polling,\n context: this.contextId,\n }, options.crossdomain?.parentDomain ?? '*');\n }, 250);\n }\n else {\n this.initWorker();\n /**\n * if we get a signal from child iframes, we check for their node_id and send it back,\n * so they can act as if it was just a same-domain iframe\n * */\n window.addEventListener('message', this.crossDomainIframeListener);\n }\n if (this.bc !== null) {\n this.bc.postMessage({\n line: proto.ask,\n source: thisTab,\n context: this.contextId,\n projectKey: this.projectKey,\n });\n this.startTimeout = setTimeout(() => {\n this.allowAppStart();\n }, 250);\n this.bc.onmessage = (ev) => {\n if (ev.data.context === this.contextId || this.projectKey !== ev.data.projectKey) {\n this.debug.log('same ctx event', ev);\n return;\n }\n this.debug.log(ev);\n if (ev.data.line === proto.resp) {\n const sessionToken = ev.data.token;\n this.session.setSessionToken(sessionToken, this.projectKey);\n this.allowAppStart();\n }\n if (ev.data.line === proto.reg) {\n const sessionToken = ev.data.token;\n this.session.regenerateTabId();\n this.session.setSessionToken(sessionToken, this.projectKey);\n this.allowAppStart();\n }\n if (ev.data.line === proto.ask) {\n const token = this.session.getSessionToken(this.projectKey);\n if (token && this.bc) {\n this.bc.postMessage({\n line: ev.data.source === thisTab ? proto.reg : proto.resp,\n token,\n source: thisTab,\n context: this.contextId,\n projectKey: this.projectKey,\n });\n }\n }\n if (ev.data.line === proto.reset) {\n const newToken = ev.data.token;\n this.debug.log('Received reset signal from another tab');\n this.session.setSessionToken(newToken, this.projectKey);\n this.restart();\n }\n };\n }\n }\n allowAppStart() {\n this.canStart = true;\n if (this.startTimeout) {\n clearTimeout(this.startTimeout);\n this.startTimeout = null;\n }\n }\n async checkNodeId(source) {\n let targetFrame;\n if (this.pageFrames.length > 0) {\n targetFrame = this.pageFrames.find((frame) => frame.contentWindow === source);\n }\n if (!targetFrame || !this.pageFrames.length) {\n const pageIframes = Array.from(document.querySelectorAll('iframe'));\n this.pageFrames = pageIframes;\n targetFrame = pageIframes.find((frame) => frame.contentWindow === source);\n }\n if (!targetFrame) {\n return null;\n }\n /**\n * Here we're trying to get node id from the iframe (which is kept in observer)\n * because of async nature of dom initialization, we give 100 retries with 100ms delay each\n * which equals to 10 seconds. This way we have a period where we give app some time to load\n * and tracker some time to parse the initial DOM tree even on slower devices\n * */\n let tries = 0;\n while (tries < 100) {\n // @ts-ignore\n const potentialId = targetFrame[this.options.node_id];\n if (potentialId !== undefined) {\n tries = 100;\n return potentialId;\n }\n else {\n tries++;\n await delay(100);\n }\n }\n return null;\n }\n initWorker() {\n try {\n this.worker = new Worker(URL.createObjectURL(new Blob([workerBodyFn], { type: 'text/javascript' })));\n this.worker.onerror = (e) => {\n this._debug('webworker_error', e);\n };\n this.worker.onmessage = ({ data }) => {\n this.handleWorkerMsg(data);\n };\n let closing = false;\n const alertWorker = () => {\n if (closing) {\n return;\n }\n closing = true;\n setTimeout(() => {\n closing = false;\n }, 500);\n if (this.worker) {\n this.worker.postMessage('closing');\n }\n };\n this.attachEventListener(document.body, 'mouseleave', alertWorker, false, false);\n this.attachEventListener(window, 'pagehide', alertWorker, false, false);\n // TODO: stop session after inactivity timeout (make configurable)\n this.attachEventListener(document, 'visibilitychange', (e) => document.visibilityState === 'hidden' && alertWorker(), false);\n }\n catch (e) {\n this._debug('worker_start', e);\n }\n }\n handleWorkerMsg(data) {\n // handling 401 auth restart (new token assignment)\n if (data === 'a_stop') {\n this.stop(false);\n }\n else if (data === 'a_start') {\n this.waitStatus(ActivityState.NotActive).then(() => {\n this.allowAppStart();\n this.start(this.prevOpts, true)\n .then((r) => {\n this.debug.info('Worker restart, session too long', r);\n })\n .catch((e) => {\n this.debug.error('Worker restart failed', e);\n });\n });\n }\n else if (data === 'not_init') {\n this.debug.warn('OR WebWorker: writer not initialised. Restarting tracker');\n }\n else if (data.type === 'failure') {\n this.stop(false);\n this.debug.error('worker_failed', data.reason);\n this._debug('worker_failed', data.reason);\n }\n else if (data.type === 'compress') {\n const batch = data.batch;\n const batchSize = batch.byteLength;\n const hasCompressionAPI = 'CompressionStream' in globalThis;\n if (batchSize > this.compressionThreshold && hasCompressionAPI) {\n const blob = new Blob([batch]);\n const stream = blob.stream().pipeThrough(new CompressionStream('gzip'));\n new Response(stream)\n .arrayBuffer()\n .then((compressedBuffer) => {\n this.worker?.postMessage({\n type: 'compressed',\n batch: new Uint8Array(compressedBuffer),\n });\n })\n .catch((err) => {\n this.debug.error('Openreplay compression error:', err);\n this.worker?.postMessage({ type: 'uncompressed', batch: batch });\n });\n }\n else {\n this.worker?.postMessage({ type: 'uncompressed', batch: batch });\n }\n }\n else if (data.type === 'queue_empty') {\n this.onSessionSent();\n }\n }\n _debug(context, e) {\n if (this.options.__debug_report_edp !== null) {\n void fetch(this.options.__debug_report_edp, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n context,\n // @ts-ignore\n error: `${e}`,\n }),\n });\n }\n this.debug.error('OpenReplay error: ', context, e);\n }\n /**\n * Normal workflow: add timestamp and tab data to batch, then commit it\n * every ~30ms\n * */\n _nCommit() {\n if (this.socketMode) {\n this.messages.unshift(Timestamp(this.timestamp()), TabData(this.session.getTabId()));\n this.commitCallbacks.forEach((cb) => cb(this.messages));\n this.messages.length = 0;\n return;\n }\n if (this.insideIframe) {\n window.parent.postMessage({\n line: proto.iframeBatch,\n messages: this.messages,\n }, this.options.crossdomain?.parentDomain ?? '*');\n this.commitCallbacks.forEach((cb) => cb(this.messages));\n this.messages.length = 0;\n return;\n }\n if (this.worker === undefined || !this.messages.length) {\n return;\n }\n if (!this.messages.length) {\n // Release empty batches every 30 secs (1000 * 30ms)\n if (this.emptyBatchCounter < 1000) {\n this.emptyBatchCounter++;\n return;\n }\n }\n this.emptyBatchCounter = 0;\n try {\n requestIdleCb(() => {\n this.messages.unshift(Timestamp(this.timestamp()), TabData(this.session.getTabId()));\n this.worker?.postMessage(this.messages);\n this.commitCallbacks.forEach((cb) => cb(this.messages));\n this.messages.length = 0;\n });\n }\n catch (e) {\n this._debug('worker_commit', e);\n this.stop(true);\n setTimeout(() => {\n void this.start();\n }, 500);\n }\n }\n /**\n * Cold start: add timestamp and tab data to both batches\n * every 2nd tick, ~60ms\n * this will make batches a bit larger and replay will work with bigger jumps every frame\n * but in turn we don't overload batch writer on session start with 1000 batches\n * */\n _cStartCommit() {\n this.coldStartCommitN += 1;\n if (this.coldStartCommitN === 2) {\n const payload = [Timestamp(this.timestamp()), TabData(this.session.getTabId())];\n this.bufferedMessages1.push(...payload);\n this.bufferedMessages2.push(...payload);\n this.coldStartCommitN = 0;\n }\n }\n commit() {\n if (this.activityState === ActivityState.ColdStart) {\n this._cStartCommit();\n }\n else {\n this._nCommit();\n }\n }\n postToWorker(messages) {\n this.worker?.postMessage(messages);\n this.commitCallbacks.forEach((cb) => cb(messages));\n }\n timestamp() {\n return now() + this.delay;\n }\n safe(fn) {\n const app = this;\n return function (...args) {\n try {\n fn.apply(this, args);\n }\n catch (e) {\n app._debug('safe_fn_call', e);\n // time: this.timestamp(),\n // name: e.name,\n // message: e.message,\n // stack: e.stack\n }\n }; // TODO: correct typing\n }\n attachCommitCallback(cb) {\n this.commitCallbacks.push(cb);\n }\n // TODO: full correct semantic\n checkRequiredVersion(version) {\n const reqVer = version.split(/[.-]/);\n const ver = this.version.split(/[.-]/);\n for (let i = 0; i < 3; i++) {\n if (isNaN(Number(ver[i])) || isNaN(Number(reqVer[i]))) {\n return false;\n }\n if (Number(ver[i]) > Number(reqVer[i])) {\n return true;\n }\n if (Number(ver[i]) < Number(reqVer[i])) {\n return false;\n }\n }\n return true;\n }\n getTrackerInfo() {\n return {\n userUUID: this.localStorage.getItem(this.options.local_uuid_key),\n projectKey: this.projectKey,\n revID: this.revID,\n trackerVersion: this.version,\n isSnippet: this.options.__is_snippet,\n };\n }\n getSessionInfo() {\n return {\n ...this.session.getInfo(),\n ...this.getTrackerInfo(),\n };\n }\n getSessionToken() {\n return this.session.getSessionToken(this.projectKey);\n }\n getSessionID() {\n return this.session.getInfo().sessionID || undefined;\n }\n getSessionURL(options) {\n const { projectID, sessionID, timestamp } = this.session.getInfo();\n if (!projectID || !sessionID) {\n this.debug.error('OpenReplay error: Unable to build session URL');\n return undefined;\n }\n const ingest = this.options.ingestPoint;\n const isSaas = /api\\.openreplay\\.com/.test(ingest);\n const projectPath = isSaas ? 'https://app.openreplay.com/ingest' : ingest;\n const url = projectPath.replace(/ingest$/, `${projectID}/session/${sessionID}`);\n if (options?.withCurrentTime) {\n const jumpTo = now() - timestamp;\n return `${url}?jumpto=${jumpTo}`;\n }\n return url;\n }\n getHost() {\n return new URL(this.options.ingestPoint).host;\n }\n getProjectKey() {\n return this.projectKey;\n }\n getBaseHref() {\n if (typeof this.options.resourceBaseHref === 'string') {\n return this.options.resourceBaseHref;\n }\n else if (typeof this.options.resourceBaseHref === 'object') {\n //TODO: switch between types\n }\n if (document.baseURI) {\n return document.baseURI;\n }\n // IE only\n return (document.head?.getElementsByTagName('base')[0]?.getAttribute('href') ||\n location.origin + location.pathname);\n }\n resolveResourceURL(resourceURL) {\n const base = new URL(this.getBaseHref());\n base.pathname += '/' + new URL(resourceURL).pathname;\n base.pathname.replace(/\\/+/g, '/');\n return base.toString();\n }\n isServiceURL(url) {\n return url.startsWith(this.options.ingestPoint);\n }\n active() {\n return this.activityState === ActivityState.Active;\n }\n resetNextPageSession(flag) {\n if (flag) {\n this.sessionStorage.setItem(this.options.session_reset_key, 't');\n }\n else {\n this.sessionStorage.removeItem(this.options.session_reset_key);\n }\n }\n checkSessionToken(forceNew) {\n const lsReset = this.sessionStorage.getItem(this.options.session_reset_key) !== null;\n const needNewSessionID = forceNew || lsReset;\n const sessionToken = this.session.getSessionToken(this.projectKey);\n return needNewSessionID || !sessionToken;\n }\n /**\n * start buffering messages without starting the actual session, which gives\n * user 30 seconds to \"activate\" and record session by calling `start()` on conditional trigger,\n * and we will then send buffered batch, so it won't get lost\n * */\n async coldStart(startOpts = {}, conditional) {\n this.singleBuffer = false;\n const second = 1000;\n const isNewSession = this.checkSessionToken(startOpts.forceNew);\n if (conditional) {\n await this.setupConditionalStart(startOpts);\n }\n const cycle = () => {\n this.orderNumber += 1;\n adjustTimeOrigin();\n this.coldStartTs = now();\n if (this.orderNumber % 2 === 0) {\n this.bufferedMessages1.length = 0;\n this.bufferedMessages1.push(Timestamp(this.timestamp()));\n this.bufferedMessages1.push(TabData(this.session.getTabId()));\n }\n else {\n this.bufferedMessages2.length = 0;\n this.bufferedMessages2.push(Timestamp(this.timestamp()));\n this.bufferedMessages2.push(TabData(this.session.getTabId()));\n }\n this.stop(false);\n this.activityState = ActivityState.ColdStart;\n if (startOpts.sessionHash) {\n this.session.applySessionHash(startOpts.sessionHash);\n }\n if (startOpts.forceNew) {\n this.session.reset();\n }\n this.session.assign({\n userID: startOpts.userID,\n metadata: startOpts.metadata,\n });\n if (!isNewSession) {\n this.debug.log('continuing session on new tab', this.session.getTabId());\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n this.send(TabChange(this.session.getTabId()));\n }\n this.observer.observe();\n this.ticker.start();\n };\n this.coldInterval = setInterval(() => {\n cycle();\n }, 30 * second);\n cycle();\n }\n async setupConditionalStart(startOpts) {\n this.conditionsManager = new ConditionsManager(this, startOpts);\n const r = await fetch(this.options.ingestPoint + '/v1/web/start', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n ...this.getTrackerInfo(),\n timestamp: now(),\n doNotRecord: true,\n bufferDiff: 0,\n userID: this.session.getInfo().userID,\n token: undefined,\n deviceMemory,\n jsHeapSizeLimit,\n timezone: getTimezone(),\n width: window.screen.width,\n height: window.screen.height,\n }),\n });\n const { \n // this token is needed to fetch conditions and flags,\n // but it can't be used to record a session\n token, userBrowser, userCity, userCountry, userDevice, userOS, userState, projectID, } = await r.json();\n this.session.assign({ projectID });\n this.session.setUserInfo({\n userBrowser,\n userCity,\n userCountry,\n userDevice,\n userOS,\n userState,\n });\n const onStartInfo = { sessionToken: token, userUUID: '', sessionID: '' };\n this.startCallbacks.forEach((cb) => cb(onStartInfo));\n await this.conditionsManager?.fetchConditions(projectID, token);\n await this.tagWatcher.fetchTags(this.options.ingestPoint, token);\n }\n /**\n * Starts offline session recording\n * @param {Object} startOpts - options for session start, same as .start()\n * @param {Function} onSessionSent - callback that will be called once session is fully sent\n * */\n offlineRecording(startOpts = {}, onSessionSent) {\n this.onSessionSent = onSessionSent;\n this.singleBuffer = true;\n const isNewSession = this.checkSessionToken(startOpts.forceNew);\n adjustTimeOrigin();\n this.coldStartTs = now();\n const saverBuffer = this.localStorage.getItem(bufferStorageKey);\n if (saverBuffer) {\n const data = JSON.parse(saverBuffer);\n this.bufferedMessages1 = Array.isArray(data) ? data : this.bufferedMessages1;\n this.localStorage.removeItem(bufferStorageKey);\n }\n this.bufferedMessages1.push(Timestamp(this.timestamp()));\n this.bufferedMessages1.push(TabData(this.session.getTabId()));\n this.activityState = ActivityState.ColdStart;\n if (startOpts.sessionHash) {\n this.session.applySessionHash(startOpts.sessionHash);\n }\n if (startOpts.forceNew) {\n this.session.reset();\n }\n this.session.assign({\n userID: startOpts.userID,\n metadata: startOpts.metadata,\n });\n const onStartInfo = { sessionToken: '', userUUID: '', sessionID: '' };\n this.startCallbacks.forEach((cb) => cb(onStartInfo));\n if (!isNewSession) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n this.send(TabChange(this.session.getTabId()));\n }\n this.observer.observe();\n this.ticker.start();\n return {\n saveBuffer: this.saveBuffer,\n getBuffer: this.getBuffer,\n setBuffer: this.setBuffer,\n };\n }\n /**\n * Saves the captured messages in localStorage (or whatever is used in its place)\n *\n * Then, when this.offlineRecording is called, it will preload this messages and clear the storage item\n *\n * Keeping the size of local storage reasonable is up to the end users of this library\n * */\n saveBuffer() {\n this.localStorage.setItem(bufferStorageKey, JSON.stringify(this.bufferedMessages1));\n }\n /**\n * @returns buffer with stored messages for offline recording\n * */\n getBuffer() {\n return this.bufferedMessages1;\n }\n /**\n * Used to set a buffer with messages array\n * */\n setBuffer(buffer) {\n this.bufferedMessages1 = buffer;\n }\n /**\n * Uploads the stored session buffer to backend\n * @returns promise that resolves once messages are loaded, it has to be awaited\n * so the session can be uploaded properly\n * @resolve - if messages were loaded in service worker successfully\n * @reject {string} - error message\n * */\n async uploadOfflineRecording() {\n this.stop(false);\n const timestamp = now();\n this.worker?.postMessage({\n type: 'start',\n pageNo: this.session.incPageNo(),\n ingestPoint: this.options.ingestPoint,\n timestamp: this.coldStartTs,\n url: document.URL,\n connAttemptCount: this.options.connAttemptCount,\n connAttemptGap: this.options.connAttemptGap,\n tabId: this.session.getTabId(),\n });\n const r = await fetch(this.options.ingestPoint + '/v1/web/start', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n ...this.getTrackerInfo(),\n timestamp: timestamp,\n doNotRecord: false,\n bufferDiff: timestamp - this.coldStartTs,\n userID: this.session.getInfo().userID,\n token: undefined,\n deviceMemory,\n jsHeapSizeLimit,\n timezone: getTimezone(),\n }),\n });\n const { token, userBrowser, userCity, userCountry, userDevice, userOS, userState, beaconSizeLimit, projectID, } = await r.json();\n this.worker?.postMessage({\n type: 'auth',\n token,\n beaconSizeLimit,\n });\n this.session.assign({ projectID });\n this.session.setUserInfo({\n userBrowser,\n userCity,\n userCountry,\n userDevice,\n userOS,\n userState,\n });\n while (this.bufferedMessages1.length > 0) {\n await this.flushBuffer(this.bufferedMessages1);\n }\n this.postToWorker([[-1]]);\n this.clearBuffers();\n }\n async _start(startOpts = {}, resetByWorker = false, conditionName) {\n if (Object.keys(startOpts).length !== 0) {\n this.prevOpts = startOpts;\n }\n const isColdStart = this.activityState === ActivityState.ColdStart;\n if (isColdStart && this.coldInterval) {\n clearInterval(this.coldInterval);\n }\n if (!this.worker && !this.insideIframe) {\n const reason = 'No worker found: perhaps, CSP is not set.';\n this.signalError(reason, []);\n return Promise.resolve(UnsuccessfulStart(reason));\n }\n if (this.activityState === ActivityState.Active ||\n this.activityState === ActivityState.Starting) {\n const reason = 'OpenReplay: trying to call `start()` on the instance that has been started already.';\n return Promise.resolve(UnsuccessfulStart(reason));\n }\n this.activityState = ActivityState.Starting;\n if (!isColdStart) {\n adjustTimeOrigin();\n }\n if (startOpts.sessionHash) {\n this.session.applySessionHash(startOpts.sessionHash);\n }\n if (startOpts.forceNew) {\n // Reset session metadata only if requested directly\n this.session.reset();\n }\n const userId = startOpts.userID ? startOpts.userID.trim() : undefined;\n this.session.assign({\n // MBTODO: maybe it would make sense to `forceNew` if the `userID` was changed\n userID: userId || undefined,\n metadata: startOpts.metadata,\n });\n const timestamp = now();\n this.worker?.postMessage({\n type: 'start',\n pageNo: this.session.incPageNo(),\n ingestPoint: this.options.ingestPoint,\n timestamp: isColdStart ? this.coldStartTs : timestamp,\n url: document.URL,\n connAttemptCount: this.options.connAttemptCount,\n connAttemptGap: this.options.connAttemptGap,\n tabId: this.session.getTabId(),\n });\n const sessionToken = this.session.getSessionToken(this.projectKey);\n const isNewSession = this.checkSessionToken(startOpts.forceNew);\n this.sessionStorage.removeItem(this.options.session_reset_key);\n this.debug.log('OpenReplay: starting session; need new session id?', isNewSession, 'session token: ', sessionToken);\n try {\n const r = await window.fetch(this.options.ingestPoint + '/v1/web/start', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n ...this.getTrackerInfo(),\n timestamp,\n doNotRecord: false,\n bufferDiff: timestamp - this.coldStartTs,\n userID: this.session.getInfo().userID,\n token: isNewSession ? undefined : sessionToken,\n deviceMemory,\n jsHeapSizeLimit,\n timezone: getTimezone(),\n condition: conditionName,\n assistOnly: startOpts.assistOnly ?? this.socketMode,\n width: window.screen.width,\n height: window.screen.height,\n referrer: document.referrer,\n }),\n });\n if (r.status !== 200) {\n const error = await r.text();\n const reason = error === CANCELED ? CANCELED : `Server error: ${r.status}. ${error}`;\n return UnsuccessfulStart(reason);\n }\n if (!this.worker && !this.insideIframe) {\n const reason = 'no worker found after start request (this should not happen in real world)';\n this.signalError(reason, []);\n return UnsuccessfulStart(reason);\n }\n const { token, userUUID, projectID, beaconSizeLimit, compressionThreshold, // how big the batch should be before we decide to compress it\n delay, // derived from token\n sessionID, // derived from token\n startTimestamp, // real startTS (server time), derived from sessionID\n userBrowser, userCity, userCountry, userDevice, userOS, userState, canvasEnabled, canvasQuality, canvasFPS, framesSupport, assistOnly: socketOnly, } = await r.json();\n if (typeof token !== 'string' ||\n typeof userUUID !== 'string' ||\n (typeof startTimestamp !== 'number' && typeof startTimestamp !== 'undefined') ||\n typeof sessionID !== 'string' ||\n typeof delay !== 'number' ||\n (typeof beaconSizeLimit !== 'number' && typeof beaconSizeLimit !== 'undefined')) {\n const reason = `Incorrect server response: ${JSON.stringify(r)}`;\n this.signalError(reason, []);\n return UnsuccessfulStart(reason);\n }\n this.delay = delay;\n this.session.setSessionToken(token, this.projectKey);\n if (sessionToken && sessionToken !== token) {\n this.bc?.postMessage({\n type: proto.reset,\n token: token,\n });\n }\n this.session.setUserInfo({\n userBrowser,\n userCity,\n userCountry,\n userDevice,\n userOS,\n userState,\n });\n this.session.assign({\n sessionID,\n timestamp: startTimestamp || timestamp,\n projectID,\n });\n if (socketOnly) {\n this.socketMode = true;\n this.worker?.postMessage('stop');\n }\n else {\n this.worker?.postMessage({\n type: 'auth',\n token,\n beaconSizeLimit,\n });\n }\n if (!isNewSession && token === sessionToken) {\n this.debug.log('continuing session on new tab', this.session.getTabId());\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n this.send(TabChange(this.session.getTabId()));\n }\n // (Re)send Metadata for the case of a new session\n Object.entries(this.session.getInfo().metadata).forEach(([key, value]) => this.send(Metadata(key, value)));\n this.localStorage.setItem(this.options.local_uuid_key, userUUID);\n this.compressionThreshold = compressionThreshold;\n const onStartInfo = { sessionToken: token, userUUID, sessionID };\n // TODO: start as early as possible (before receiving the token)\n /** after start */\n this.startCallbacks.forEach((cb) => cb(onStartInfo)); // MBTODO: callbacks after DOM \"mounted\" (observed)\n if (startOpts.startCallback) {\n startOpts.startCallback(SuccessfulStart(onStartInfo));\n }\n await this.tagWatcher.fetchTags(this.options.ingestPoint, token);\n this.activityState = ActivityState.Active;\n if (this.options.crossdomain?.enabled) {\n void this.bootChildrenFrames();\n }\n if (canvasEnabled && !this.options.canvas.disableCanvas) {\n this.canvasRecorder =\n this.canvasRecorder ??\n new CanvasRecorder(this, {\n fps: canvasFPS,\n quality: canvasQuality,\n isDebug: this.options.canvas.__save_canvas_locally,\n fixedScaling: this.options.canvas.fixedCanvasScaling,\n useAnimationFrame: this.options.canvas.useAnimationFrame,\n framesSupport: !!framesSupport,\n });\n }\n /** --------------- COLD START BUFFER ------------------*/\n if (isColdStart) {\n const biggestBuffer = this.bufferedMessages1.length > this.bufferedMessages2.length\n ? this.bufferedMessages1\n : this.bufferedMessages2;\n while (biggestBuffer.length > 0) {\n await this.flushBuffer(biggestBuffer);\n }\n this.clearBuffers();\n this.commit();\n /** --------------- COLD START BUFFER ------------------*/\n }\n if (this.insideIframe && this.rootId) {\n this.observer.crossdomainObserve(this.rootId, this.frameOderNumber, this.frameLevel);\n }\n else {\n this.observer.observe();\n }\n this.ticker.start();\n this.canvasRecorder?.startTracking();\n return SuccessfulStart(onStartInfo);\n }\n catch (reason) {\n this.stop();\n this.session.reset();\n if (!reason) {\n console.error('Unknown error during start');\n this.signalError('Unknown error', []);\n return UnsuccessfulStart('Unknown error');\n }\n if (reason === CANCELED) {\n this.signalError(CANCELED, []);\n return UnsuccessfulStart(CANCELED);\n }\n this._debug('session_start', reason);\n const errorMessage = reason instanceof Error ? reason.message : reason.toString();\n this.signalError(errorMessage, []);\n return UnsuccessfulStart(errorMessage);\n }\n }\n async waitStart() {\n return new Promise((resolve) => {\n const int = setInterval(() => {\n if (this.canStart) {\n clearInterval(int);\n resolve(true);\n }\n }, 100);\n });\n }\n async waitStarted() {\n return this.waitStatus(ActivityState.Active);\n }\n async waitStatus(status) {\n return new Promise((resolve) => {\n const check = () => {\n if (this.activityState === status) {\n resolve(true);\n }\n else {\n setTimeout(check, 25);\n }\n };\n check();\n });\n }\n /**\n * basically we ask other tabs during constructor\n * and here we just apply 10ms delay just in case\n * */\n async start(...args) {\n if (this.activityState === ActivityState.Active ||\n this.activityState === ActivityState.Starting) {\n const reason = 'OpenReplay: trying to call `start()` on the instance that has been started already.';\n return Promise.resolve(UnsuccessfulStart(reason));\n }\n if (this.insideIframe) {\n this.signalIframeTracker();\n }\n if (!document.hidden) {\n await this.waitStart();\n return this._start(...args);\n }\n else {\n return new Promise((resolve) => {\n const onVisibilityChange = async () => {\n if (!document.hidden) {\n await this.waitStart();\n // eslint-disable-next-line\n document.removeEventListener('visibilitychange', onVisibilityChange);\n resolve(this._start(...args));\n }\n };\n // eslint-disable-next-line\n document.addEventListener('visibilitychange', onVisibilityChange);\n });\n }\n }\n forceFlushBatch() {\n this.worker?.postMessage('forceFlushBatch');\n }\n getTabId() {\n return this.session.getTabId();\n }\n clearBuffers() {\n this.bufferedMessages1.length = 0;\n this.bufferedMessages2.length = 0;\n }\n /**\n * Creates a named hook that expects event name, data string and msg direction (up/down),\n * it will skip any message bigger than 5 mb or event name bigger than 255 symbols\n * @returns {(msgType: string, data: string, dir: \"up\" | \"down\") => void}\n * */\n trackWs(channelName) {\n const channel = channelName;\n return (msgType, data, dir = 'down') => {\n if (typeof msgType !== 'string' ||\n typeof data !== 'string' ||\n data.length > 5 * 1024 * 1024 ||\n msgType.length > 255) {\n return;\n }\n this.send(WSChannel('websocket', channel, data, this.timestamp(), dir, msgType));\n };\n }\n stop(stopWorker = true) {\n if (this.activityState !== ActivityState.NotActive) {\n try {\n if (this.options.crossdomain?.enabled) {\n this.killChildrenFrames();\n }\n this.attributeSender.clear();\n this.sanitizer.clear();\n this.observer.disconnect();\n this.nodes.clear();\n this.ticker.stop();\n this.stopCallbacks.forEach((cb) => cb());\n this.tagWatcher.clear();\n if (this.worker && stopWorker) {\n this.worker.postMessage('stop');\n }\n this.canvasRecorder?.clear();\n this.messages.length = 0;\n this.parentActive = false;\n }\n finally {\n this.activityState = ActivityState.NotActive;\n this.debug.log('OpenReplay tracking stopped.');\n }\n }\n }\n}\n","import { ConnectionInformation } from '../app/messages.gen.js';\nexport default function (app) {\n const connection = navigator.connection ||\n navigator.mozConnection ||\n navigator.webkitConnection;\n if (connection === undefined) {\n return;\n }\n const sendConnectionInformation = () => {\n app.send(ConnectionInformation(Math.round(connection.downlink * 1000), connection.effectiveType || 'unknown'));\n };\n app.attachStartCallback(() => {\n sendConnectionInformation();\n connection.addEventListener('change', sendConnectionInformation);\n });\n app.attachStopCallback(() => {\n connection.removeEventListener('change', sendConnectionInformation);\n });\n}\n","import { IN_BROWSER } from '../utils.js';\nimport { ConsoleLog } from '../app/messages.gen.js';\nconst printError = IN_BROWSER && 'InstallTrigger' in window // detect Firefox\n ? (e) => e.message + '\\n' + e.stack\n : (e) => e.stack || e.message;\nfunction printString(arg) {\n if (arg === undefined) {\n return 'undefined';\n }\n if (arg === null) {\n return 'null';\n }\n if (arg instanceof Error) {\n return printError(arg);\n }\n if (Array.isArray(arg)) {\n return `Array(${arg.length})`;\n }\n return String(arg);\n}\nfunction printFloat(arg) {\n if (typeof arg !== 'number')\n return 'NaN';\n return arg.toString();\n}\nfunction printInt(arg) {\n if (typeof arg !== 'number')\n return 'NaN';\n return Math.floor(arg).toString();\n}\nfunction printObject(arg) {\n if (arg === undefined) {\n return 'undefined';\n }\n if (arg === null) {\n return 'null';\n }\n if (arg instanceof Error) {\n return printError(arg);\n }\n if (Array.isArray(arg)) {\n const length = arg.length;\n const values = arg.slice(0, 10).map(printString).join(', ');\n return `Array(${length})[${values}]`;\n }\n if (typeof arg === 'object') {\n const res = [];\n let i = 0;\n for (const k in arg) {\n if (++i === 10) {\n break;\n }\n const v = arg[k];\n res.push(k + ': ' + printString(v));\n }\n return '{' + res.join(', ') + '}';\n }\n return arg.toString();\n}\nfunction printf(args) {\n if (typeof args[0] === 'string') {\n args.unshift(args.shift().replace(/%(o|s|f|d|i)/g, (s, t) => {\n const arg = args.shift();\n if (arg === undefined)\n return s;\n switch (t) {\n case 'o':\n return printObject(arg);\n case 's':\n return printString(arg);\n case 'f':\n return printFloat(arg);\n case 'd':\n case 'i':\n return printInt(arg);\n default:\n return s;\n }\n }));\n }\n return args.map(printObject).join(' ');\n}\nconst consoleMethods = ['log', 'info', 'warn', 'error', 'debug', 'assert'];\nexport default function (app, opts) {\n const options = Object.assign({\n consoleMethods,\n consoleThrottling: 30,\n }, opts);\n if (!Array.isArray(options.consoleMethods) || options.consoleMethods.length === 0) {\n return;\n }\n const sendConsoleLog = app.safe((level, args) => {\n let logMsg = printf(args);\n if (app.sanitizer.privateMode) {\n logMsg = logMsg.replaceAll(/./g, '*');\n }\n app.send(ConsoleLog(level, logMsg));\n });\n let n = 0;\n const reset = () => {\n n = 0;\n };\n app.attachStartCallback(reset);\n app.ticker.attach(reset, 33, false);\n const patchConsole = (console, ctx) => {\n const handler = {\n apply: function (target, thisArg, argumentsList) {\n Reflect.apply(target, ctx, argumentsList);\n n = n + 1;\n if (n > options.consoleThrottling) {\n return;\n }\n else {\n sendConsoleLog(target.name, argumentsList);\n }\n },\n };\n options.consoleMethods.forEach((method) => {\n if (consoleMethods.indexOf(method) === -1) {\n app.debug.error(`OpenReplay: unsupported console method \"${method}\"`);\n return;\n }\n const fn = ctx.console[method];\n console[method] = new Proxy(fn, handler);\n });\n };\n const patchContext = app.safe((context) => patchConsole(context.console, context));\n patchContext(window);\n app.observer.attachContextCallback(patchContext);\n}\n","const FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\nconst CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\nconst SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code\\])?$/;\nfunction parse(error, options) {\n if (typeof error.stacktrace !== \"undefined\" || typeof error[\"opera#sourceloc\"] !== \"undefined\")\n return parseOpera(error, options);\n else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP))\n return parseV8OrIE(error, options);\n else if (error.stack)\n return parseFFOrSafari(error, options);\n else if (options?.allowEmpty)\n return [];\n else\n throw new Error(\"Cannot parse given Error object\");\n}\nfunction parseStack(stackString, options) {\n if (stackString.match(CHROME_IE_STACK_REGEXP))\n return parseV8OrIeString(stackString, options);\n else\n return parseFFOrSafariString(stackString, options);\n}\nfunction extractLocation(urlLike) {\n if (!urlLike.includes(\":\"))\n return [urlLike, void 0, void 0];\n const regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n const parts = regExp.exec(urlLike.replace(/[()]/g, \"\"));\n return [parts[1], parts[2] || void 0, parts[3] || void 0];\n}\nfunction applySlice(lines, options) {\n if (options && options.slice != null) {\n if (Array.isArray(options.slice))\n return lines.slice(options.slice[0], options.slice[1]);\n return lines.slice(0, options.slice);\n }\n return lines;\n}\nfunction parseV8OrIE(error, options) {\n return parseV8OrIeString(error.stack, options);\n}\nfunction parseV8OrIeString(stack, options) {\n const filtered = applySlice(\n stack.split(\"\\n\").filter((line) => {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }),\n options\n );\n return filtered.map((line) => {\n if (line.includes(\"(eval \")) {\n line = line.replace(/eval code/g, \"eval\").replace(/(\\(eval at [^()]*)|(,.*$)/g, \"\");\n }\n let sanitizedLine = line.replace(/^\\s+/, \"\").replace(/\\(eval code/g, \"(\").replace(/^.*?\\s+/, \"\");\n const location = sanitizedLine.match(/ (\\(.+\\)$)/);\n sanitizedLine = location ? sanitizedLine.replace(location[0], \"\") : sanitizedLine;\n const locationParts = extractLocation(location ? location[1] : sanitizedLine);\n const functionName = location && sanitizedLine || void 0;\n const fileName = [\"eval\", \"<anonymous>\"].includes(locationParts[0]) ? void 0 : locationParts[0];\n return {\n function: functionName,\n file: fileName,\n line: locationParts[1] ? +locationParts[1] : void 0,\n col: locationParts[2] ? +locationParts[2] : void 0,\n raw: line\n };\n });\n}\nfunction parseFFOrSafari(error, options) {\n return parseFFOrSafariString(error.stack, options);\n}\nfunction parseFFOrSafariString(stack, options) {\n const filtered = applySlice(\n stack.split(\"\\n\").filter((line) => {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }),\n options\n );\n return filtered.map((line) => {\n if (line.includes(\" > eval\"))\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, \":$1\");\n if (!line.includes(\"@\") && !line.includes(\":\")) {\n return {\n function: line\n };\n } else {\n const functionNameRegex = /(([^\\n\\r\"\\u2028\\u2029]*\".[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*(?:@[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*)*(?:[\\n\\r\\u2028\\u2029][^@]*)?)?[^@]*)@/;\n const matches = line.match(functionNameRegex);\n const functionName = matches && matches[1] ? matches[1] : void 0;\n const locationParts = extractLocation(line.replace(functionNameRegex, \"\"));\n return {\n function: functionName,\n file: locationParts[0],\n line: locationParts[1] ? +locationParts[1] : void 0,\n col: locationParts[2] ? +locationParts[2] : void 0,\n raw: line\n };\n }\n });\n}\nfunction parseOpera(e, options) {\n if (!e.stacktrace || e.message.includes(\"\\n\") && e.message.split(\"\\n\").length > e.stacktrace.split(\"\\n\").length)\n return parseOpera9(e);\n else if (!e.stack)\n return parseOpera10(e);\n else\n return parseOpera11(e, options);\n}\nfunction parseOpera9(e, options) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n const lines = e.message.split(\"\\n\");\n const result = [];\n for (let i = 2, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push({\n file: match[2],\n line: +match[1],\n raw: lines[i]\n });\n }\n }\n return applySlice(result, options);\n}\nfunction parseOpera10(e, options) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n const lines = e.stacktrace.split(\"\\n\");\n const result = [];\n for (let i = 0, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push({\n function: match[3] || void 0,\n file: match[2],\n line: match[1] ? +match[1] : void 0,\n raw: lines[i]\n });\n }\n }\n return applySlice(result, options);\n}\nfunction parseOpera11(error, options) {\n const filtered = applySlice(\n // @ts-expect-error missing stack property\n error.stack.split(\"\\n\").filter((line) => {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }),\n options\n );\n return filtered.map((line) => {\n const tokens = line.split(\"@\");\n const locationParts = extractLocation(tokens.pop());\n const functionCall = tokens.shift() || \"\";\n const functionName = functionCall.replace(/<anonymous function(: (\\w+))?>/, \"$2\").replace(/\\([^)]*\\)/g, \"\") || void 0;\n let argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/))\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, \"$1\");\n const args = argsRaw === void 0 || argsRaw === \"[arguments not available]\" ? void 0 : argsRaw.split(\",\");\n return {\n function: functionName,\n args,\n file: locationParts[0],\n line: locationParts[1] ? +locationParts[1] : void 0,\n col: locationParts[2] ? +locationParts[2] : void 0,\n raw: line\n };\n });\n}\n\nexport { extractLocation, parse, parseFFOrSafari, parseFFOrSafariString, parseOpera, parseOpera10, parseOpera11, parseOpera9, parseStack, parseV8OrIE, parseV8OrIeString };\n","import { parse as parse$1, parseV8OrIE as parseV8OrIE$1, parseFFOrSafari as parseFFOrSafari$1, parseOpera as parseOpera$1, parseOpera9 as parseOpera9$1, parseOpera10 as parseOpera10$1, parseOpera11 as parseOpera11$1 } from './lite.mjs';\nexport { extractLocation } from './lite.mjs';\n\nfunction stackframesLiteToStackframes(liteStackframes) {\n return liteStackframes.map((liteStackframe) => {\n return {\n functionName: liteStackframe.function,\n args: liteStackframe.args,\n fileName: liteStackframe.file,\n lineNumber: liteStackframe.line,\n columnNumber: liteStackframe.col,\n source: liteStackframe.raw\n };\n });\n}\nfunction parse(error, options) {\n return stackframesLiteToStackframes(parse$1(error, options));\n}\nfunction parseV8OrIE(error) {\n return stackframesLiteToStackframes(parseV8OrIE$1(error));\n}\nfunction parseFFOrSafari(error) {\n return stackframesLiteToStackframes(parseFFOrSafari$1(error));\n}\nfunction parseOpera(e) {\n return stackframesLiteToStackframes(parseOpera$1(e));\n}\nfunction parseOpera9(e) {\n return stackframesLiteToStackframes(parseOpera9$1(e));\n}\nfunction parseOpera10(e) {\n return stackframesLiteToStackframes(parseOpera10$1(e));\n}\nfunction parseOpera11(error) {\n return stackframesLiteToStackframes(parseOpera11$1(error));\n}\n\nexport { parse, parseFFOrSafari, parseOpera, parseOpera10, parseOpera11, parseOpera9, parseV8OrIE };\n","import { JSException } from '../app/messages.gen.js';\nimport { parse } from 'error-stack-parser-es';\nfunction getDefaultStack(e) {\n return [\n {\n columnNumber: e.colno,\n lineNumber: e.lineno,\n fileName: e.filename,\n functionName: '',\n source: '',\n },\n ];\n}\nexport function getExceptionMessage(error, fallbackStack, metadata = {}) {\n let stack = fallbackStack;\n try {\n stack = parse(error);\n }\n catch (e) { }\n return JSException(error.name, error.message, JSON.stringify(stack), JSON.stringify(metadata));\n}\nexport function getExceptionMessageFromEvent(e, context = window, metadata = {}) {\n if (e instanceof ErrorEvent) {\n if (e.error instanceof Error) {\n return getExceptionMessage(e.error, getDefaultStack(e), metadata);\n }\n else {\n let [name, message] = e.message.split(':');\n if (!message) {\n name = 'Error';\n message = e.message;\n }\n return JSException(name, message, JSON.stringify(getDefaultStack(e)), JSON.stringify(metadata));\n }\n }\n else if ('PromiseRejectionEvent' in context && e instanceof context.PromiseRejectionEvent) {\n if (e.reason instanceof Error) {\n return getExceptionMessage(e.reason, [], metadata);\n }\n else {\n let message;\n try {\n message = JSON.stringify(e.reason);\n }\n catch (_) {\n message = String(e.reason);\n }\n return JSException('Unhandled Promise Rejection', message, '[]', JSON.stringify(metadata));\n }\n }\n return null;\n}\nexport default function (app, opts) {\n const options = Object.assign({\n captureExceptions: true,\n }, opts);\n function patchContext(context) {\n function handler(e) {\n const msg = getExceptionMessageFromEvent(e, context);\n if (msg != null) {\n app.send(msg);\n }\n }\n try {\n app.attachEventListener(context, 'unhandledrejection', handler);\n app.attachEventListener(context, 'error', handler);\n }\n catch (e) {\n console.error('Error while attaching to error proto contexts', e);\n }\n }\n if (options.captureExceptions) {\n app.observer.attachContextCallback(patchContext); // TODO: attach once-per-iframe (?)\n patchContext(window);\n }\n}\n","import { isURL, IS_FIREFOX, MAX_STR_LEN, createMutationObserver } from '../utils.js';\nimport { ResourceTiming, SetNodeAttributeURLBased } from '../app/messages.gen.js';\nimport { hasTag } from '../app/guards.js';\nfunction resolveURL(url, location = document.location) {\n url = url.trim();\n if (url.startsWith('//') ||\n url.startsWith('http://') ||\n url.startsWith('https://') ||\n url.startsWith('data:') // any other possible value here? https://bugzilla.mozilla.org/show_bug.cgi?id=1758035\n ) {\n return url;\n }\n else if (url.startsWith('/')) {\n return location.origin + url;\n }\n else {\n return location.origin + location.pathname + url;\n }\n}\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1607081\nfunction isSVGInFireFox(url) {\n return IS_FIREFOX && (url.startsWith('data:image/svg+xml') || url.match(/.svg$|/i));\n}\nconst PLACEHOLDER_SRC = 'https://static.openreplay.com/tracker/placeholder.jpeg';\nexport default function (app) {\n function sendPlaceholder(id, node) {\n app.attributeSender.sendSetAttribute(id, 'src', PLACEHOLDER_SRC);\n const { width, height } = node.getBoundingClientRect();\n if (!node.hasAttribute('width')) {\n app.attributeSender.sendSetAttribute(id, 'width', String(width));\n }\n if (!node.hasAttribute('height')) {\n app.attributeSender.sendSetAttribute(id, 'height', String(height));\n }\n }\n const sendSrcset = function (id, img) {\n const { srcset } = img;\n if (!srcset) {\n return;\n }\n const resolvedSrcset = srcset\n .split(srcset.match(/,\\s+/) ? /,\\s+/ : ',')\n .map((str) => resolveURL(str))\n .join(', ');\n app.attributeSender.sendSetAttribute(id, 'srcset', resolvedSrcset);\n };\n const sendSrc = function (id, img) {\n if (img.src.length > MAX_STR_LEN) {\n sendPlaceholder(id, img);\n }\n app.send(SetNodeAttributeURLBased(id, 'src', img.src, app.getBaseHref()));\n };\n const sendImgError = app.safe(function (img) {\n const resolvedSrc = resolveURL(img.src || ''); // Src type is null sometimes. - is it true?\n if (isURL(resolvedSrc)) {\n app.send(ResourceTiming(app.timestamp(), 0, 0, 0, 0, 0, resolvedSrc, 'img', 0, false, 0, 0, 0, 0, 0, 0, 0));\n }\n });\n const sendImgAttrs = app.safe(function (img) {\n const id = app.nodes.getID(img);\n if (id === undefined) {\n return;\n }\n if (!img.complete) {\n return;\n }\n if (img.naturalHeight === 0 && img.naturalWidth === 0 && !isSVGInFireFox(img.src)) {\n sendImgError(img);\n }\n else if (app.sanitizer.isHidden(id) || app.sanitizer.isObscured(id)) {\n sendPlaceholder(id, img);\n }\n else {\n sendSrc(id, img);\n sendSrcset(id, img);\n }\n });\n const observer = createMutationObserver(app.safe((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === 'attributes') {\n const target = mutation.target;\n const id = app.nodes.getID(target);\n if (id === undefined) {\n return;\n }\n if (mutation.attributeName === 'src') {\n sendSrc(id, target);\n }\n if (mutation.attributeName === 'srcset') {\n sendSrcset(id, target);\n }\n }\n }\n }), app.options.forceNgOff);\n app.attachStopCallback(() => {\n observer.disconnect();\n });\n app.nodes.attachNodeCallback((node) => {\n if (!hasTag(node, 'img')) {\n return;\n }\n app.nodes.attachNodeListener(node, 'error', () => sendImgError(node));\n app.nodes.attachNodeListener(node, 'load', () => sendImgAttrs(node));\n sendImgAttrs(node);\n observer.observe(node, { attributes: true, attributeFilter: ['src', 'srcset'] });\n });\n}\n","import { normSpaces, IN_BROWSER, getLabelAttribute, now } from '../utils.js';\nimport { hasTag } from '../app/guards.js';\nimport { InputChange, SetInputValue, SetInputChecked } from '../app/messages.gen.js';\nconst INPUT_TYPES = [\n 'text',\n 'password',\n 'email',\n 'search',\n 'number',\n 'range',\n 'date',\n 'tel',\n 'time',\n];\nfunction isTextFieldElement(node) {\n if (hasTag(node, 'textarea')) {\n return true;\n }\n if (!hasTag(node, 'input')) {\n return false;\n }\n return INPUT_TYPES.includes(node.type);\n}\nfunction isCheckbox(node) {\n if (!hasTag(node, 'input')) {\n return false;\n }\n const type = node.type;\n return type === 'checkbox' || type === 'radio';\n}\nconst labelElementFor = IN_BROWSER && 'labels' in HTMLInputElement.prototype\n ? (node) => {\n let p = node;\n while ((p = p.parentNode) !== null) {\n if (hasTag(p, 'label')) {\n return p;\n }\n }\n const labels = node.labels;\n if (labels !== null && labels.length === 1) {\n return labels[0];\n }\n }\n : (node) => {\n let p = node;\n while ((p = p.parentNode) !== null) {\n if (hasTag(p, 'label')) {\n return p;\n }\n }\n const id = node.id;\n if (id) {\n const labels = node.ownerDocument.querySelectorAll('label[for=\"' + id + '\"]');\n if (labels !== null && labels.length === 1) {\n return labels[0];\n }\n }\n };\nexport function getInputLabel(node) {\n let label = getLabelAttribute(node);\n if (label === null) {\n const labelElement = labelElementFor(node);\n label =\n (labelElement && labelElement.innerText) ||\n node.placeholder ||\n node.name ||\n node.id ||\n node.className ||\n node.type;\n }\n return normSpaces(label).slice(0, 100);\n}\nexport const InputMode = {\n Plain: 0,\n Obscured: 1,\n Hidden: 2,\n};\nexport default function (app, opts) {\n const options = Object.assign({\n obscureInputNumbers: true,\n obscureInputEmails: true,\n defaultInputMode: InputMode.Obscured,\n obscureInputDates: false,\n }, opts);\n function getInputValue(id, node) {\n let value = node.value;\n let inputMode = options.defaultInputMode;\n if (node.type === 'password' || app.sanitizer.isHidden(id)) {\n inputMode = InputMode.Hidden;\n }\n else if (app.sanitizer.isObscured(id) ||\n (inputMode === InputMode.Plain &&\n ((options.obscureInputNumbers && node.type !== 'date' && /\\d\\d\\d\\d/.test(value)) ||\n (options.obscureInputDates && node.type === 'date') ||\n (options.obscureInputEmails && (node.type === 'email' || !!~value.indexOf('@')))))) {\n inputMode = InputMode.Obscured;\n }\n let mask = 0;\n switch (inputMode) {\n case InputMode.Hidden:\n mask = -1;\n value = '';\n break;\n case InputMode.Obscured:\n mask = value.length;\n value = '';\n break;\n }\n return { value, mask };\n }\n function sendInputValue(id, node) {\n const { value, mask } = getInputValue(id, node);\n app.send(SetInputValue(id, value, mask));\n }\n const inputValues = new Map();\n const checkboxValues = new Map();\n app.attachStopCallback(() => {\n inputValues.clear();\n checkboxValues.clear();\n });\n function trackInputValue(id, node) {\n if (inputValues.get(id) === node.value) {\n return;\n }\n inputValues.set(id, node.value);\n sendInputValue(id, node);\n }\n function trackCheckboxValue(id, value) {\n if (checkboxValues.get(id) === value) {\n return;\n }\n checkboxValues.set(id, value);\n app.send(SetInputChecked(id, value));\n }\n // The only way (to our knowledge) to track all kinds of input changes, including those made by JS\n app.ticker.attach(() => {\n inputValues.forEach((value, id) => {\n const node = app.nodes.getNode(id);\n if (!node)\n return inputValues.delete(id);\n trackInputValue(id, node);\n });\n checkboxValues.forEach((checked, id) => {\n const node = app.nodes.getNode(id);\n if (!node)\n return checkboxValues.delete(id);\n trackCheckboxValue(id, node.checked);\n });\n }, 3);\n function sendInputChange(id, node, hesitationTime, inputTime) {\n const { value, mask } = getInputValue(id, node);\n let label = getInputLabel(node);\n if (app.sanitizer.privateMode) {\n label = label.replaceAll(/./g, '*');\n }\n app.send(InputChange(id, value, mask !== 0, label, hesitationTime, inputTime));\n }\n app.nodes.attachNodeCallback(app.safe((node) => {\n const id = app.nodes.getID(node);\n if (id === undefined) {\n return;\n }\n // TODO: support multiple select (?): use selectedOptions;\n if (hasTag(node, 'select')) {\n sendInputValue(id, node);\n app.nodes.attachNodeListener(node, 'change', () => sendInputValue(id, node));\n }\n if (isTextFieldElement(node)) {\n trackInputValue(id, node);\n let nodeFocusTime = 0;\n let nodeHesitationTime = 0;\n let inputTime = 0;\n const onFocus = () => {\n nodeFocusTime = now();\n };\n const onInput = () => {\n if (nodeHesitationTime === 0 && nodeFocusTime !== 0) {\n nodeHesitationTime = now() - nodeFocusTime;\n }\n };\n const onChange = () => {\n if (nodeFocusTime !== 0) {\n inputTime = now() - nodeFocusTime;\n }\n sendInputChange(id, node, nodeHesitationTime, inputTime);\n nodeHesitationTime = 0;\n inputTime = 0;\n nodeFocusTime = 0;\n };\n app.nodes.attachNodeListener(node, 'focus', onFocus);\n app.nodes.attachNodeListener(node, 'input', onInput);\n app.nodes.attachNodeListener(node, 'change', onChange);\n return;\n }\n if (isCheckbox(node)) {\n trackCheckboxValue(id, node.checked);\n app.nodes.attachNodeListener(node, 'change', () => trackCheckboxValue(id, node.checked));\n return;\n }\n }));\n}\n","import { hasTag, isSVGElement, isDocument } from '../app/guards.js';\nimport { normSpaces, hasOpenreplayAttribute, getLabelAttribute, now } from '../utils.js';\nimport { MouseMove, MouseClick, MouseThrashing } from '../app/messages.gen.js';\nimport { getInputLabel } from './input.js';\nconst cssEscape = (typeof CSS !== 'undefined' && CSS.escape) || ((t) => t);\nconst docClassCache = new WeakMap();\nfunction _getSelector(target) {\n const selector = getCSSPath(target);\n return selector || '';\n}\nfunction isClickable(element) {\n const tag = element.tagName.toUpperCase();\n return (tag === 'BUTTON' ||\n tag === 'A' ||\n tag === 'LI' ||\n tag === 'SELECT' ||\n tag === 'TR' ||\n tag === 'TH' ||\n element.onclick != null ||\n element.getAttribute('role') === 'button');\n //|| element.className.includes(\"btn\")\n // MBTODO: intercept addEventListener\n}\n//TODO: fix (typescript is not sure about target variable after assignation of svg)\nfunction getTarget(target, document) {\n if (target instanceof Element) {\n return _getTarget(target, document);\n }\n return null;\n}\nfunction _getTarget(target, document) {\n let element = target;\n while (element !== null && element !== document.documentElement) {\n if (hasOpenreplayAttribute(element, 'masked')) {\n return null;\n }\n element = element.parentElement;\n }\n if (isSVGElement(target)) {\n let owner = target.ownerSVGElement;\n while (owner !== null) {\n target = owner;\n owner = owner.ownerSVGElement;\n }\n }\n element = target;\n while (element !== null && element !== document.documentElement) {\n const tag = element.tagName.toUpperCase();\n if (tag === 'LABEL') {\n return null;\n }\n if (tag === 'INPUT') {\n return element;\n }\n if (isClickable(element) || getLabelAttribute(element) !== null) {\n return element;\n }\n element = element.parentElement;\n }\n return target === document.documentElement ? null : target;\n}\nexport default function (app, options) {\n const { disableClickmaps = false } = options || {};\n function getTargetLabel(target) {\n const dl = getLabelAttribute(target);\n if (dl !== null) {\n return dl;\n }\n if (hasTag(target, 'input')) {\n return getInputLabel(target);\n }\n if (isClickable(target)) {\n let label = '';\n if (target instanceof HTMLElement) {\n label = app.sanitizer.getInnerTextSecure(target);\n }\n label = label || target.id || target.className;\n return normSpaces(label).slice(0, 100);\n }\n return '';\n }\n let mousePositionX = -1;\n let mousePositionY = -1;\n let mousePositionChanged = false;\n let mouseTarget = null;\n let mouseTargetTime = 0;\n let selectorMap = {};\n let velocity = 0;\n let direction = 0;\n let directionChangeCount = 0;\n let distance = 0;\n let checkIntervalId;\n const shakeThreshold = 0.008;\n const shakeCheckInterval = 225;\n function checkMouseShaking() {\n const nextVelocity = distance / shakeCheckInterval;\n if (!velocity) {\n velocity = nextVelocity;\n return;\n }\n const acceleration = (nextVelocity - velocity) / shakeCheckInterval;\n if (directionChangeCount > 4 && acceleration > shakeThreshold) {\n app.send(MouseThrashing(now()));\n }\n distance = 0;\n directionChangeCount = 0;\n velocity = nextVelocity;\n }\n app.attachStartCallback(() => {\n checkIntervalId = setInterval(() => checkMouseShaking(), shakeCheckInterval);\n });\n app.attachStopCallback(() => {\n mousePositionX = -1;\n mousePositionY = -1;\n mousePositionChanged = false;\n mouseTarget = null;\n selectorMap = {};\n if (checkIntervalId) {\n clearInterval(checkIntervalId);\n }\n });\n const sendMouseMove = () => {\n if (mousePositionChanged) {\n app.send(MouseMove(mousePositionX, mousePositionY));\n mousePositionChanged = false;\n }\n };\n const patchDocument = (document, topframe = false) => {\n function getSelector(id, target) {\n return (selectorMap[id] = selectorMap[id] || _getSelector(target));\n }\n const attachListener = topframe\n ? app.attachEventListener.bind(app) // attached/removed on start/stop\n : app.nodes.attachNodeListener.bind(app.nodes); // attached/removed on node register/unregister\n attachListener(document.documentElement, 'mouseover', (e) => {\n const target = getTarget(e.target, document);\n if (target !== mouseTarget) {\n mouseTarget = target;\n mouseTargetTime = performance.now();\n }\n });\n attachListener(document, 'mousemove', (e) => {\n const [left, top] = app.observer.getDocumentOffset(document); // MBTODO?: document-id related message\n mousePositionX = e.clientX + left;\n mousePositionY = e.clientY + top;\n mousePositionChanged = true;\n const nextDirection = Math.sign(e.movementX);\n distance += Math.abs(e.movementX) + Math.abs(e.movementY);\n if (nextDirection !== direction) {\n direction = nextDirection;\n directionChangeCount++;\n }\n }, false);\n attachListener(document, 'click', (e) => {\n const target = getTarget(e.target, document);\n if ((!e.clientX && !e.clientY) || target === null) {\n return;\n }\n const id = app.nodes.getID(target);\n if (id !== undefined) {\n const clickX = e.pageX;\n const clickY = e.pageY;\n const contentWidth = document.documentElement.scrollWidth;\n const contentHeight = document.documentElement.scrollHeight;\n const normalizedX = roundNumber(clickX / contentWidth);\n const normalizedY = roundNumber(clickY / contentHeight);\n sendMouseMove();\n const label = getTargetLabel(target);\n app.send(MouseClick(id, mouseTarget === target ? Math.round(performance.now() - mouseTargetTime) : 0, app.sanitizer.privateMode ? label.replaceAll(/./g, '*') : label, isClickable(target) && !disableClickmaps ? getSelector(id, target) : '', normalizedX, normalizedY), true);\n }\n mouseTarget = null;\n });\n };\n app.nodes.attachNodeCallback((node) => {\n if (isDocument(node)) {\n patchDocument(node);\n }\n });\n patchDocument(document, true);\n app.ticker.attach(sendMouseMove, options?.trackingOffset || 7);\n}\n/**\n * we get 0 to 1 decimal number, convert and round it, then turn to %\n * 0.39643 => 396.43 => 396 => 39.6%\n * */\nfunction roundNumber(num) {\n return Math.round(num * 1e4);\n}\nfunction isDocUniqueClass(cls, doc) {\n let cache = docClassCache.get(doc);\n if (!cache) {\n cache = Object.create(null);\n docClassCache.set(doc, cache);\n }\n if (cls in cache)\n return cache[cls];\n const unique = doc.querySelectorAll(`.${cssEscape(cls)}`).length === 1;\n cache[cls] = unique;\n return unique;\n}\n;\nfunction wordLike(name) {\n if (/^[a-z\\-]{3,}$/i.test(name)) {\n const words = name.split(/-|[A-Z]/);\n for (const word of words) {\n if (word.length <= 2) {\n return false;\n }\n if (/[^aeiou]{4,}/i.test(word)) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\nexport function getCSSPath(el) {\n if (!el || el.nodeType !== 1)\n return false;\n if (el.id)\n return `#${cssEscape(el.id)}`;\n const parts = [];\n while (el && el.nodeType === 1 && el !== el.ownerDocument) {\n if (el.id) {\n parts.unshift(`#${cssEscape(el.id)}`);\n break;\n }\n const tag = el.tagName.toLowerCase();\n if (el.classList?.length) {\n for (const cls of el.classList) {\n if (wordLike(cls) && isDocUniqueClass(cls, el.ownerDocument)) {\n parts.unshift(`${tag}.${cssEscape(cls)}`);\n return parts.join(' > ');\n }\n }\n }\n const sibCls = getUniqueSiblingClass(el);\n if (sibCls) {\n parts.unshift(`${tag}.${cssEscape(sibCls)}`);\n }\n else if (el === el.ownerDocument.body ||\n el === el.ownerDocument.documentElement) {\n parts.unshift(tag);\n }\n else {\n let idx = 1;\n for (let sib = el.previousElementSibling; sib; sib = sib.previousElementSibling) {\n if (sib.tagName.toLowerCase() === tag)\n idx++;\n }\n parts.unshift(`${tag}:nth-of-type(${idx})`);\n }\n el = el.parentNode;\n }\n return parts.join(' > ');\n}\n;\nfunction getUniqueSiblingClass(el) {\n if (!el.classList?.length || !el.parentNode)\n return null;\n const sibs = el.parentNode.children;\n outer: for (const cls of el.classList) {\n if (!wordLike(cls) || !isDocUniqueClass(cls, el.ownerDocument))\n continue;\n for (const sib of sibs) {\n if (sib !== el && sib.classList?.contains(cls))\n continue outer;\n }\n return cls;\n }\n return null;\n}\n","var e,n,t,r,i,o=-1,a=function(e){addEventListener(\"pageshow\",(function(n){n.persisted&&(o=n.timeStamp,e(n))}),!0)},c=function(){var e=self.performance&&performance.getEntriesByType&&performance.getEntriesByType(\"navigation\")[0];if(e&&e.responseStart>0&&e.responseStart<performance.now())return e},u=function(){var e=c();return e&&e.activationStart||0},f=function(e,n){var t=c(),r=\"navigate\";o>=0?r=\"back-forward-cache\":t&&(document.prerendering||u()>0?r=\"prerender\":document.wasDiscarded?r=\"restore\":t.type&&(r=t.type.replace(/_/g,\"-\")));return{name:e,value:void 0===n?-1:n,rating:\"good\",delta:0,entries:[],id:\"v4-\".concat(Date.now(),\"-\").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:r}},s=function(e,n,t){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var r=new PerformanceObserver((function(e){Promise.resolve().then((function(){n(e.getEntries())}))}));return r.observe(Object.assign({type:e,buffered:!0},t||{})),r}}catch(e){}},d=function(e,n,t,r){var i,o;return function(a){n.value>=0&&(a||r)&&((o=n.value-(i||0))||void 0===i)&&(i=n.value,n.delta=o,n.rating=function(e,n){return e>n[1]?\"poor\":e>n[0]?\"needs-improvement\":\"good\"}(n.value,t),e(n))}},l=function(e){requestAnimationFrame((function(){return requestAnimationFrame((function(){return e()}))}))},p=function(e){document.addEventListener(\"visibilitychange\",(function(){\"hidden\"===document.visibilityState&&e()}))},v=function(e){var n=!1;return function(){n||(e(),n=!0)}},m=-1,h=function(){return\"hidden\"!==document.visibilityState||document.prerendering?1/0:0},g=function(e){\"hidden\"===document.visibilityState&&m>-1&&(m=\"visibilitychange\"===e.type?e.timeStamp:0,T())},y=function(){addEventListener(\"visibilitychange\",g,!0),addEventListener(\"prerenderingchange\",g,!0)},T=function(){removeEventListener(\"visibilitychange\",g,!0),removeEventListener(\"prerenderingchange\",g,!0)},E=function(){return m<0&&(m=h(),y(),a((function(){setTimeout((function(){m=h(),y()}),0)}))),{get firstHiddenTime(){return m}}},C=function(e){document.prerendering?addEventListener(\"prerenderingchange\",(function(){return e()}),!0):e()},b=[1800,3e3],S=function(e,n){n=n||{},C((function(){var t,r=E(),i=f(\"FCP\"),o=s(\"paint\",(function(e){e.forEach((function(e){\"first-contentful-paint\"===e.name&&(o.disconnect(),e.startTime<r.firstHiddenTime&&(i.value=Math.max(e.startTime-u(),0),i.entries.push(e),t(!0)))}))}));o&&(t=d(e,i,b,n.reportAllChanges),a((function(r){i=f(\"FCP\"),t=d(e,i,b,n.reportAllChanges),l((function(){i.value=performance.now()-r.timeStamp,t(!0)}))})))}))},L=[.1,.25],w=function(e,n){n=n||{},S(v((function(){var t,r=f(\"CLS\",0),i=0,o=[],c=function(e){e.forEach((function(e){if(!e.hadRecentInput){var n=o[0],t=o[o.length-1];i&&e.startTime-t.startTime<1e3&&e.startTime-n.startTime<5e3?(i+=e.value,o.push(e)):(i=e.value,o=[e])}})),i>r.value&&(r.value=i,r.entries=o,t())},u=s(\"layout-shift\",c);u&&(t=d(e,r,L,n.reportAllChanges),p((function(){c(u.takeRecords()),t(!0)})),a((function(){i=0,r=f(\"CLS\",0),t=d(e,r,L,n.reportAllChanges),l((function(){return t()}))})),setTimeout(t,0))})))},A=0,I=1/0,P=0,M=function(e){e.forEach((function(e){e.interactionId&&(I=Math.min(I,e.interactionId),P=Math.max(P,e.interactionId),A=P?(P-I)/7+1:0)}))},k=function(){return e?A:performance.interactionCount||0},F=function(){\"interactionCount\"in performance||e||(e=s(\"event\",M,{type:\"event\",buffered:!0,durationThreshold:0}))},D=[],x=new Map,R=0,B=function(){var e=Math.min(D.length-1,Math.floor((k()-R)/50));return D[e]},H=[],q=function(e){if(H.forEach((function(n){return n(e)})),e.interactionId||\"first-input\"===e.entryType){var n=D[D.length-1],t=x.get(e.interactionId);if(t||D.length<10||e.duration>n.latency){if(t)e.duration>t.latency?(t.entries=[e],t.latency=e.duration):e.duration===t.latency&&e.startTime===t.entries[0].startTime&&t.entries.push(e);else{var r={id:e.interactionId,latency:e.duration,entries:[e]};x.set(r.id,r),D.push(r)}D.sort((function(e,n){return n.latency-e.latency})),D.length>10&&D.splice(10).forEach((function(e){return x.delete(e.id)}))}}},O=function(e){var n=self.requestIdleCallback||self.setTimeout,t=-1;return e=v(e),\"hidden\"===document.visibilityState?e():(t=n(e),p(e)),t},N=[200,500],j=function(e,n){\"PerformanceEventTiming\"in self&&\"interactionId\"in PerformanceEventTiming.prototype&&(n=n||{},C((function(){var t;F();var r,i=f(\"INP\"),o=function(e){O((function(){e.forEach(q);var n=B();n&&n.latency!==i.value&&(i.value=n.latency,i.entries=n.entries,r())}))},c=s(\"event\",o,{durationThreshold:null!==(t=n.durationThreshold)&&void 0!==t?t:40});r=d(e,i,N,n.reportAllChanges),c&&(c.observe({type:\"first-input\",buffered:!0}),p((function(){o(c.takeRecords()),r(!0)})),a((function(){R=k(),D.length=0,x.clear(),i=f(\"INP\"),r=d(e,i,N,n.reportAllChanges)})))})))},_=[2500,4e3],z={},G=function(e,n){n=n||{},C((function(){var t,r=E(),i=f(\"LCP\"),o=function(e){n.reportAllChanges||(e=e.slice(-1)),e.forEach((function(e){e.startTime<r.firstHiddenTime&&(i.value=Math.max(e.startTime-u(),0),i.entries=[e],t())}))},c=s(\"largest-contentful-paint\",o);if(c){t=d(e,i,_,n.reportAllChanges);var m=v((function(){z[i.id]||(o(c.takeRecords()),c.disconnect(),z[i.id]=!0,t(!0))}));[\"keydown\",\"click\"].forEach((function(e){addEventListener(e,(function(){return O(m)}),{once:!0,capture:!0})})),p(m),a((function(r){i=f(\"LCP\"),t=d(e,i,_,n.reportAllChanges),l((function(){i.value=performance.now()-r.timeStamp,z[i.id]=!0,t(!0)}))}))}}))},J=[800,1800],K=function e(n){document.prerendering?C((function(){return e(n)})):\"complete\"!==document.readyState?addEventListener(\"load\",(function(){return e(n)}),!0):setTimeout(n,0)},Q=function(e,n){n=n||{};var t=f(\"TTFB\"),r=d(e,t,J,n.reportAllChanges);K((function(){var i=c();i&&(t.value=Math.max(i.responseStart-u(),0),t.entries=[i],r(!0),a((function(){t=f(\"TTFB\",0),(r=d(e,t,J,n.reportAllChanges))(!0)})))}))},U={passive:!0,capture:!0},V=new Date,W=function(e,i){n||(n=i,t=e,r=new Date,Z(removeEventListener),X())},X=function(){if(t>=0&&t<r-V){var e={entryType:\"first-input\",name:n.type,target:n.target,cancelable:n.cancelable,startTime:n.timeStamp,processingStart:n.timeStamp+t};i.forEach((function(n){n(e)})),i=[]}},Y=function(e){if(e.cancelable){var n=(e.timeStamp>1e12?new Date:performance.now())-e.timeStamp;\"pointerdown\"==e.type?function(e,n){var t=function(){W(e,n),i()},r=function(){i()},i=function(){removeEventListener(\"pointerup\",t,U),removeEventListener(\"pointercancel\",r,U)};addEventListener(\"pointerup\",t,U),addEventListener(\"pointercancel\",r,U)}(n,e):W(n,e)}},Z=function(e){[\"mousedown\",\"keydown\",\"touchstart\",\"pointerdown\"].forEach((function(n){return e(n,Y,U)}))},$=[100,300],ee=function(e,r){r=r||{},C((function(){var o,c=E(),u=f(\"FID\"),l=function(e){e.startTime<c.firstHiddenTime&&(u.value=e.processingStart-e.startTime,u.entries.push(e),o(!0))},m=function(e){e.forEach(l)},h=s(\"first-input\",m);o=d(e,u,$,r.reportAllChanges),h&&(p(v((function(){m(h.takeRecords()),h.disconnect()}))),a((function(){var a;u=f(\"FID\"),o=d(e,u,$,r.reportAllChanges),i=[],t=-1,n=null,Z(addEventListener),a=l,i.push(a),X()})))}))};export{L as CLSThresholds,b as FCPThresholds,$ as FIDThresholds,N as INPThresholds,_ as LCPThresholds,J as TTFBThresholds,w as onCLS,S as onFCP,ee as onFID,j as onINP,G as onLCP,Q as onTTFB};\n","import { hasTag } from '../app/guards.js';\nimport { isURL, getTimeOrigin } from '../utils.js';\nimport { ResourceTiming, PageLoadTiming, PageRenderTiming, WebVitals } from '../app/messages.gen.js';\nimport { onCLS, onINP, onLCP, onTTFB } from 'web-vitals';\nfunction getPaintBlocks(resources) {\n const paintBlocks = [];\n const elements = document.getElementsByTagName('*');\n const styleURL = /url\\((\"[^\"]*\"|'[^']*'|[^)]*)\\)/i;\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n let src = '';\n if (hasTag(element, 'img')) {\n src = element.currentSrc || element.src;\n }\n if (!src) {\n const backgroundImage = getComputedStyle(element).getPropertyValue('background-image');\n if (backgroundImage) {\n const matches = styleURL.exec(backgroundImage);\n if (matches !== null) {\n src = matches[1];\n if (src.startsWith('\"') || src.startsWith(\"'\")) {\n src = src.substr(1, src.length - 2);\n }\n }\n }\n }\n if (!src)\n continue;\n const time = src.substr(0, 10) === 'data:image' ? 0 : resources[src];\n if (time === undefined)\n continue;\n const rect = element.getBoundingClientRect();\n const top = Math.max(rect.top, 0);\n const left = Math.max(rect.left, 0);\n const bottom = Math.min(rect.bottom, window.innerHeight ||\n (document.documentElement && document.documentElement.clientHeight) ||\n 0);\n const right = Math.min(rect.right, window.innerWidth || (document.documentElement && document.documentElement.clientWidth) || 0);\n if (bottom <= top || right <= left)\n continue;\n const area = (bottom - top) * (right - left);\n paintBlocks.push({ time, area });\n }\n return paintBlocks;\n}\nfunction calculateSpeedIndex(firstContentfulPaint, paintBlocks) {\n let a = (Math.max((document.documentElement && document.documentElement.clientWidth) || 0, window.innerWidth || 0) *\n Math.max((document.documentElement && document.documentElement.clientHeight) || 0, window.innerHeight || 0)) /\n 10;\n let s = a * firstContentfulPaint;\n for (let i = 0; i < paintBlocks.length; i++) {\n const { time, area } = paintBlocks[i];\n a += area;\n s += area * (time > firstContentfulPaint ? time : firstContentfulPaint);\n }\n return a === 0 ? 0 : s / a;\n}\nexport default function (app, opts) {\n const options = Object.assign({\n captureResourceTimings: true,\n capturePageLoadTimings: true,\n capturePageRenderTimings: true,\n excludedResourceUrls: [],\n }, opts);\n if (!('PerformanceObserver' in window)) {\n options.captureResourceTimings = false;\n }\n if (!options.captureResourceTimings) {\n return;\n } // Resources are necessary for all timings\n let resources = {};\n function resourceTiming(entry) {\n if (entry.duration < 0 || !isURL(entry.name) || app.isServiceURL(entry.name))\n return;\n if (resources !== null) {\n resources[entry.name] = entry.startTime + entry.duration;\n }\n let shouldSkip = false;\n options.excludedResourceUrls?.forEach((url) => {\n if (entry.name.startsWith(url)) {\n shouldSkip = true;\n return;\n }\n });\n if (shouldSkip) {\n return;\n }\n // will probably require custom header added to responses for tracked requests:\n // Timing-Allow-Origin: *\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Timing-Allow-Origin\n let stalled = 0;\n if (entry.connectEnd && entry.connectEnd > entry.domainLookupEnd) {\n // Usual case stalled is time between connection establishment and request start\n stalled = Math.max(0, entry.requestStart - entry.connectEnd);\n }\n else {\n // Connection reuse case - stalled is time between domain lookup and request start\n stalled = Math.max(0, entry.requestStart - entry.domainLookupEnd);\n }\n const timings = {\n queueing: entry.requestStart - entry.fetchStart,\n dnsLookup: entry.domainLookupEnd - entry.domainLookupStart,\n initialConnection: entry.connectEnd - entry.connectStart,\n ssl: entry.secureConnectionStart > 0 ? entry.connectEnd - entry.secureConnectionStart : 0,\n ttfb: entry.responseStart - entry.requestStart,\n contentDownload: entry.responseEnd - entry.responseStart,\n total: entry.duration ?? entry.responseEnd - entry.startTime,\n stalled,\n };\n const entryName = options.resourceNameSanitizer\n ? options.resourceNameSanitizer(entry.name)\n : entry.name;\n const cached = (entry.responseStatus && entry.responseStatus === 304) ||\n // @ts-ignore\n (entry.deliveryType && entry.deliveryType === 'cache') ||\n (entry.transferSize === 0 && entry.decodedBodySize > 0);\n const requestFailed = entry.responseStatus && entry.responseStatus >= 400;\n const decodedBodySize = requestFailed ? -111 : entry.decodedBodySize || 0;\n app.send(ResourceTiming(entry.startTime + getTimeOrigin(), entry.duration, timings.ttfb, entry.transferSize > entry.encodedBodySize ? entry.transferSize - entry.encodedBodySize : 0, entry.encodedBodySize || 0, decodedBodySize, app.sanitizer.privateMode ? entry.name.replaceAll(/./g, '*') : entryName, entry.initiatorType, entry.transferSize, cached, timings.queueing, timings.dnsLookup, timings.initialConnection, timings.ssl, timings.contentDownload, timings.total, timings.stalled));\n }\n const observer = new PerformanceObserver((list) => list.getEntries().forEach(resourceTiming));\n function onVitalsSignal(msg) {\n if (app.active()) {\n return app.send(WebVitals(msg.name, String(msg.value)));\n }\n }\n let prevSessionID;\n app.attachStartCallback(function ({ sessionID }) {\n if (sessionID !== prevSessionID) {\n prevSessionID = sessionID;\n }\n observer.observe({ type: 'resource', buffered: true });\n // browser support:\n // onCLS(): Chromium\n // onFCP(): Chromium, Firefox, Safari\n // onFID(): Chromium, Firefox (Deprecated)\n // onINP(): Chromium\n // onLCP(): Chromium, Firefox\n // onTTFB(): Chromium, Firefox, Safari\n onCLS(onVitalsSignal);\n onINP(onVitalsSignal);\n onLCP(onVitalsSignal);\n onTTFB(onVitalsSignal);\n });\n app.attachStopCallback(function () {\n observer.disconnect();\n });\n let firstPaint = 0, firstContentfulPaint = 0;\n if (options.capturePageLoadTimings) {\n let pageLoadTimingSent = false;\n app.ticker.attach(() => {\n if (pageLoadTimingSent) {\n return;\n }\n if (firstPaint === 0 || firstContentfulPaint === 0) {\n performance.getEntriesByType('paint').forEach((entry) => {\n const { name, startTime } = entry;\n switch (name) {\n case 'first-paint':\n firstPaint = startTime;\n break;\n case 'first-contentful-paint':\n firstContentfulPaint = startTime;\n break;\n }\n });\n }\n if (performance.timing.loadEventEnd || performance.now() > 30000) {\n pageLoadTimingSent = true;\n const { \n // should be ok to use here, (https://github.com/mdn/content/issues/4713)\n // since it is compared with the values obtained on the page load (before any possible sleep state)\n // deprecated though\n navigationStart, requestStart, responseStart, responseEnd, domContentLoadedEventStart, domContentLoadedEventEnd, loadEventStart, loadEventEnd, } = performance.timing;\n app.send(PageLoadTiming(requestStart - navigationStart || 0, responseStart - navigationStart || 0, responseEnd - navigationStart || 0, domContentLoadedEventStart - navigationStart || 0, domContentLoadedEventEnd - navigationStart || 0, loadEventStart - navigationStart || 0, loadEventEnd - navigationStart || 0, firstPaint, firstContentfulPaint));\n }\n }, 30);\n }\n if (options.capturePageRenderTimings) {\n let visuallyComplete = 0, interactiveWindowStartTime = 0, interactiveWindowTickTime = 0, paintBlocks = null;\n let pageRenderTimingSent = false;\n app.ticker.attach(() => {\n if (pageRenderTimingSent) {\n return;\n }\n const time = performance.now();\n if (resources !== null) {\n visuallyComplete = Math.max.apply(null, Object.keys(resources).map((k) => resources[k]));\n if (time - visuallyComplete > 1000) {\n paintBlocks = getPaintBlocks(resources);\n resources = null;\n }\n }\n if (interactiveWindowTickTime !== null) {\n if (time - interactiveWindowTickTime > 50) {\n interactiveWindowStartTime = time;\n }\n interactiveWindowTickTime = time - interactiveWindowStartTime > 5000 ? null : time;\n }\n if ((paintBlocks !== null && interactiveWindowTickTime === null) || time > 30000) {\n pageRenderTimingSent = true;\n resources = null;\n const speedIndex = paintBlocks === null\n ? 0\n : calculateSpeedIndex(firstContentfulPaint || firstPaint, paintBlocks);\n const { domContentLoadedEventEnd, navigationStart } = performance.timing;\n const timeToInteractive = interactiveWindowTickTime === null\n ? Math.max(interactiveWindowStartTime, firstContentfulPaint, domContentLoadedEventEnd - navigationStart || 0)\n : 0;\n app.send(PageRenderTiming(speedIndex, firstContentfulPaint > visuallyComplete ? firstContentfulPaint : visuallyComplete, timeToInteractive));\n }\n });\n }\n}\n","import { SetViewportScroll, SetNodeScroll } from '../app/messages.gen.js';\nimport { isNode, isElementNode, isRootNode, isDocument } from '../app/guards.js';\nfunction getDocumentScroll(doc) {\n const win = doc.defaultView;\n return [\n (win && win.scrollX) ||\n (doc.documentElement && doc.documentElement.scrollLeft) ||\n (doc.body && doc.body.scrollLeft) ||\n 0,\n (win && win.scrollY) ||\n (doc.documentElement && doc.documentElement.scrollTop) ||\n (doc.body && doc.body.scrollTop) ||\n 0,\n ];\n}\nexport default function (app, insideIframe) {\n let documentScroll = false;\n const nodeScroll = new Map();\n function setNodeScroll(target) {\n if (!isNode(target)) {\n return;\n }\n if (isElementNode(target)) {\n nodeScroll.set(target, [target.scrollLeft, target.scrollTop]);\n }\n if (isDocument(target)) {\n nodeScroll.set(target, getDocumentScroll(target));\n }\n }\n const sendSetViewportScroll = app.safe(() => {\n if (insideIframe) {\n return;\n }\n app.send(SetViewportScroll(...getDocumentScroll(document)));\n });\n const sendSetNodeScroll = app.safe((s, node) => {\n const id = app.nodes.getID(node);\n if (id !== undefined) {\n app.send(SetNodeScroll(id, s[0], s[1]));\n }\n });\n app.attachStartCallback(sendSetViewportScroll);\n app.attachStopCallback(() => {\n documentScroll = false;\n nodeScroll.clear();\n });\n app.nodes.attachNodeCallback((node, isStart) => {\n // MBTODO: iterate over all the nodes on start instead of using isStart hack\n if (isStart) {\n if (isElementNode(node) && node.scrollLeft + node.scrollTop > 0) {\n nodeScroll.set(node, [node.scrollLeft, node.scrollTop]);\n }\n else if (isDocument(node)) {\n // DRY somehow?\n nodeScroll.set(node, getDocumentScroll(node));\n }\n }\n if (isRootNode(node)) {\n // scroll is not-composed event (https://javascript.info/shadow-dom-events)\n app.nodes.attachNodeListener(node, 'scroll', (e) => {\n setNodeScroll(e.target);\n });\n }\n });\n app.attachEventListener(document, 'scroll', (e) => {\n const target = e.target;\n if (target === document) {\n documentScroll = true;\n return;\n }\n setNodeScroll(target);\n });\n app.ticker.attach(() => {\n if (documentScroll) {\n sendSetViewportScroll();\n documentScroll = false;\n }\n nodeScroll.forEach(sendSetNodeScroll);\n nodeScroll.clear();\n }, 5, false);\n}\n","import { getTimeOrigin } from '../utils.js';\nimport { SetPageLocation, SetViewportSize, SetPageVisibility } from '../app/messages.gen.js';\nimport { stringWiper } from '../app/sanitizer.js';\nexport default function (app, options) {\n let url, width, height;\n let navigationStart;\n let referrer = document.referrer;\n const urlSanitizer = options?.urlSanitizer || ((u) => u);\n const titleSanitizer = options?.titleSanitizer || ((t) => t);\n const sendSetPageLocation = app.safe(() => {\n const currURL = document.URL;\n if (currURL !== url) {\n url = currURL;\n if (options?.replaceHashSymbol) {\n // replace hash router symbol if needed without affecting pathname of the url\n const u = new URL(currURL);\n const hashRoute = u.hash.startsWith('#/') ? u.hash.slice(2) : \"\";\n const routePath = hashRoute ? \"/\" + hashRoute.replace(/^\\/+/, \"\") : \"\";\n const cleaned = u.origin + u.pathname.replace(/\\/$/, \"\") + routePath + u.search;\n url = cleaned;\n }\n const sanitized = urlSanitizer(url);\n const safeTitle = app.sanitizer.privateMode\n ? stringWiper(document.title)\n : titleSanitizer(document.title);\n const safeUrl = app.sanitizer.privateMode ? stringWiper(sanitized) : sanitized;\n const safeReferrer = app.sanitizer.privateMode ? stringWiper(referrer) : referrer;\n app.send(SetPageLocation(safeUrl, safeReferrer, navigationStart, safeTitle));\n navigationStart = 0;\n referrer = url;\n }\n });\n const sendSetViewportSize = app.safe(() => {\n const { innerWidth, innerHeight } = window;\n if (innerWidth !== width || innerHeight !== height) {\n width = innerWidth;\n height = innerHeight;\n app.send(SetViewportSize(width, height));\n }\n });\n const sendSetPageVisibility = document.hidden === undefined\n ? Function.prototype\n : app.safe(() => app.send(SetPageVisibility(document.hidden)));\n app.attachStartCallback(() => {\n url = null;\n navigationStart = getTimeOrigin();\n width = height = -1;\n sendSetPageLocation();\n sendSetViewportSize();\n sendSetPageVisibility();\n });\n if (document.hidden !== undefined) {\n app.attachEventListener(document, 'visibilitychange', sendSetPageVisibility, false, false);\n }\n app.ticker.attach(sendSetPageLocation, 1, false);\n app.ticker.attach(sendSetViewportSize, 5, false);\n}\n","import { AdoptedSSInsertRuleURLBased, AdoptedSSDeleteRule, AdoptedSSAddOwner, TechnicalInfo, } from '../app/messages.gen.js';\nimport { hasTag } from '../app/guards.js';\nimport { nextID, styleSheetIDMap } from './constructedStyleSheets.js';\nconst defaults = {\n checkCssInterval: 200,\n scanInMemoryCSS: false,\n checkLimit: undefined,\n};\nexport default function (app, opts) {\n if (app === null)\n return;\n if (!window.CSSStyleSheet) {\n app.send(TechnicalInfo('no_stylesheet_prototype_in_window', ''));\n return;\n }\n const options = { ...defaults, ...opts };\n // sheetID:index -> ruleText\n const ruleSnapshots = new Map();\n let checkInterval = null;\n const trackedSheets = new Set();\n const checkIntervalMs = options.checkCssInterval || 200;\n let checkIterations = {};\n function checkRuleChanges() {\n if (!options.scanInMemoryCSS)\n return;\n const allSheets = trackedSheets.values();\n for (const sheet of allSheets) {\n try {\n const sheetID = styleSheetIDMap.get(sheet);\n if (!sheetID)\n continue;\n if (options.checkLimit) {\n if (!checkIterations[sheetID]) {\n checkIterations[sheetID] = 0;\n }\n else {\n checkIterations[sheetID]++;\n }\n if (checkIterations[sheetID] > options.checkLimit) {\n trackedSheets.delete(sheet);\n return;\n }\n }\n for (let j = 0; j < sheet.cssRules.length; j++) {\n try {\n const rule = sheet.cssRules[j];\n const key = `${sheetID}:${j}`;\n const oldText = ruleSnapshots.get(key);\n const newText = rule.cssText;\n if (oldText !== newText) {\n if (oldText !== undefined) {\n // Rule is changed\n app.send(AdoptedSSDeleteRule(sheetID, j));\n app.send(AdoptedSSInsertRuleURLBased(sheetID, newText, j, app.getBaseHref()));\n }\n else {\n // Rule added\n app.send(AdoptedSSInsertRuleURLBased(sheetID, newText, j, app.getBaseHref()));\n }\n ruleSnapshots.set(key, newText);\n }\n }\n catch (e) {\n /* Skip inaccessible rules */\n }\n }\n const keysToCheck = Array.from(ruleSnapshots.keys()).filter((key) => key.startsWith(`${sheetID}:`));\n for (const key of keysToCheck) {\n const index = parseInt(key.split(':')[1], 10);\n if (index >= sheet.cssRules.length) {\n ruleSnapshots.delete(key);\n }\n }\n }\n catch (e) {\n /* Skip inaccessible sheets */\n trackedSheets.delete(sheet);\n }\n }\n }\n const emptyRuleReg = /{\\s*}/;\n function isRuleEmpty(rule) {\n return emptyRuleReg.test(rule);\n }\n const sendInsertDeleteRule = app.safe((sheet, index, rule) => {\n const sheetID = styleSheetIDMap.get(sheet);\n if (!sheetID)\n return;\n if (typeof rule === 'string') {\n app.send(AdoptedSSInsertRuleURLBased(sheetID, rule, index, app.getBaseHref()));\n if (isRuleEmpty(rule)) {\n ruleSnapshots.set(`${sheetID}:${index}`, rule);\n trackedSheets.add(sheet);\n }\n }\n else {\n app.send(AdoptedSSDeleteRule(sheetID, index));\n if (ruleSnapshots.has(`${sheetID}:${index}`)) {\n ruleSnapshots.delete(`${sheetID}:${index}`);\n }\n }\n });\n const sendReplaceGroupingRule = app.safe((rule) => {\n let topmostRule = rule;\n while (topmostRule.parentRule)\n topmostRule = topmostRule.parentRule;\n const sheet = topmostRule.parentStyleSheet;\n if (!sheet)\n return;\n const sheetID = styleSheetIDMap.get(sheet);\n if (!sheetID)\n return;\n const cssText = topmostRule.cssText;\n const idx = Array.from(sheet.cssRules).indexOf(topmostRule);\n if (idx >= 0) {\n app.send(AdoptedSSInsertRuleURLBased(sheetID, cssText, idx, app.getBaseHref()));\n app.send(AdoptedSSDeleteRule(sheetID, idx + 1));\n if (isRuleEmpty(cssText)) {\n ruleSnapshots.set(`${sheetID}:${idx}`, cssText);\n trackedSheets.add(sheet);\n }\n }\n });\n // Patch prototype methods\n const patchContext = app.safe((context) => {\n if (context.__css_tracking_patched__)\n return;\n context.__css_tracking_patched__ = true;\n const { insertRule, deleteRule } = context.CSSStyleSheet.prototype;\n const { insertRule: groupInsertRule, deleteRule: groupDeleteRule } = context.CSSGroupingRule.prototype;\n context.CSSStyleSheet.prototype.insertRule = function (rule, index = 0) {\n const result = insertRule.call(this, rule, index);\n sendInsertDeleteRule(this, result, rule);\n return result;\n };\n context.CSSStyleSheet.prototype.deleteRule = function (index) {\n sendInsertDeleteRule(this, index);\n return deleteRule.call(this, index);\n };\n context.CSSGroupingRule.prototype.insertRule = function (rule, index = 0) {\n const result = groupInsertRule.call(this, rule, index);\n sendReplaceGroupingRule(this);\n return result;\n };\n context.CSSGroupingRule.prototype.deleteRule = function (index) {\n const result = groupDeleteRule.call(this, index);\n sendReplaceGroupingRule(this);\n return result;\n };\n });\n patchContext(window);\n app.observer.attachContextCallback(patchContext);\n app.nodes.attachNodeCallback((node) => {\n if (!hasTag(node, 'style') || !node.sheet)\n return;\n if (node.textContent !== null && node.textContent.trim().length > 0)\n return;\n const nodeID = app.nodes.getID(node);\n if (!nodeID)\n return;\n const sheet = node.sheet;\n const sheetID = nextID();\n styleSheetIDMap.set(sheet, sheetID);\n app.send(AdoptedSSAddOwner(sheetID, nodeID));\n for (let i = 0; i < sheet.cssRules.length; i++) {\n try {\n sendInsertDeleteRule(sheet, i, sheet.cssRules[i].cssText);\n }\n catch (e) {\n // Skip inaccessible rules\n }\n }\n });\n function startChecking() {\n if (checkInterval || !options.scanInMemoryCSS)\n return;\n checkInterval = window.setInterval(checkRuleChanges, checkIntervalMs);\n }\n setTimeout(startChecking, 50);\n app.attachStopCallback(() => {\n if (checkInterval) {\n clearInterval(checkInterval);\n checkInterval = null;\n }\n ruleSnapshots.clear();\n });\n}\n","import { isNode, hasTag } from '../app/guards.js';\nimport { SetNodeFocus } from '../app/messages.gen.js';\nexport default function (app) {\n function sendSetNodeFocus(n) {\n const id = app.nodes.getID(n);\n if (id !== undefined) {\n app.send(SetNodeFocus(id));\n }\n }\n let blurred = false;\n app.nodes.attachNodeCallback((node) => {\n if (!hasTag(node, 'body')) {\n return;\n }\n app.nodes.attachNodeListener(node, 'focus', (e) => {\n if (!isNode(e.target)) {\n return;\n }\n sendSetNodeFocus(e.target);\n blurred = false;\n });\n app.nodes.attachNodeListener(node, 'blur', (e) => {\n if (e.relatedTarget === null) {\n blurred = true;\n setTimeout(() => {\n if (blurred) {\n app.send(SetNodeFocus(-1));\n }\n }, 0);\n }\n });\n });\n app.attachStartCallback(() => {\n let elem = document.activeElement;\n while (elem && hasTag(elem, 'iframe') && elem.contentDocument) {\n elem = elem.contentDocument.activeElement;\n }\n if (elem && elem !== elem.ownerDocument.body) {\n sendSetNodeFocus(elem);\n }\n }, true);\n}\n","import { isDocument } from '../app/guards.js';\nimport { LoadFontFace } from '../app/messages.gen.js';\nexport default function (app) {\n if (!window.FontFace) {\n return;\n }\n const docFonts = new Map();\n const patchWindow = (wnd) => {\n // @ts-ignore\n class FontFaceInterceptor extends wnd.FontFace {\n constructor(...args) {\n //maybe do this on load(). In this case check if the document.fonts.load(...) function calls the font's load()\n if (typeof args[1] === 'string') {\n let desc = '';\n if (args[2]) {\n app.safe(() => {\n desc = JSON.stringify(args[2]);\n });\n }\n const ffData = [args[0], args[1], desc];\n const ffDataArr = docFonts.get(wnd.document) || [];\n ffDataArr.push(ffData);\n docFonts.set(wnd.document, ffDataArr);\n const parentID = wnd === window ? 0 : app.nodes.getID(wnd.document);\n if (parentID === undefined) {\n return;\n }\n if (app.active()) {\n app.send(LoadFontFace(parentID, ...ffData));\n }\n }\n super(...args);\n }\n }\n wnd.FontFace = FontFaceInterceptor;\n };\n app.observer.attachContextCallback(patchWindow);\n patchWindow(window);\n app.nodes.attachNodeCallback(app.safe((node) => {\n if (!isDocument(node)) {\n return;\n }\n const ffDataArr = docFonts.get(node);\n if (!ffDataArr) {\n return;\n }\n const parentID = node.defaultView === window ? 0 : app.nodes.getID(node);\n if (parentID === undefined) {\n return;\n }\n ffDataArr.forEach((ffData) => {\n app.send(LoadFontFace(parentID, ...ffData));\n });\n }));\n}\n","import { NetworkRequest } from '../app/messages.gen.js';\nimport { getTimeOrigin } from '../utils.js';\nimport { getExceptionMessage } from './exception.js';\nexport default function (app, instance, opts, sanitize, stringify) {\n app.debug.log('Openreplay: attaching axios spy to instance', instance);\n function captureResponseData(axiosResponseObj) {\n app.debug.log('Openreplay: capturing axios response data', axiosResponseObj);\n const { headers: reqHs, data: reqData, method, url, baseURL } = axiosResponseObj.config;\n const { data: rData, headers: rHs, status: globStatus, response } = axiosResponseObj;\n const { data: resData, headers: resHs, status: resStatus } = response || {};\n const ihOpt = opts.ignoreHeaders;\n const isHIgnoring = Array.isArray(ihOpt) ? (name) => ihOpt.includes(name) : () => ihOpt;\n function writeHeader(hsObj, header) {\n if (!isHIgnoring(header[0])) {\n hsObj[header[0]] = header[1];\n }\n }\n let requestHs = {};\n let responseHs = {};\n if (reqHs.toJSON) {\n requestHs = reqHs.toJSON();\n }\n else if (reqHs instanceof Headers) {\n reqHs.forEach((v, n) => writeHeader(requestHs, [n, v]));\n }\n else if (Array.isArray(reqHs)) {\n reqHs.forEach((h) => writeHeader(requestHs, h));\n }\n else if (typeof reqHs === 'object') {\n Object.entries(reqHs).forEach((h) => writeHeader(requestHs, h));\n }\n const usedResHeader = resHs ? resHs : rHs;\n if (usedResHeader.toJSON) {\n responseHs = usedResHeader.toJSON();\n }\n else if (usedResHeader instanceof Headers) {\n usedResHeader.forEach((v, n) => writeHeader(responseHs, [n, v]));\n }\n else if (Array.isArray(usedResHeader)) {\n usedResHeader.forEach((h) => writeHeader(responseHs, h));\n }\n else if (typeof usedResHeader === 'object') {\n Object.entries(usedResHeader).forEach(([n, v]) => {\n if (!isHIgnoring(n))\n responseHs[n] = v;\n });\n }\n const reqResInfo = sanitize({\n url,\n method: method || '',\n status: globStatus || resStatus || 0,\n request: {\n headers: requestHs,\n body: reqData,\n },\n response: {\n headers: responseHs,\n body: resData || rData,\n },\n });\n if (!reqResInfo) {\n app.debug.log('Openreplay: empty request/response info, skipping');\n return;\n }\n const requestStart = axiosResponseObj.config.__openreplay_timing;\n const duration = performance.now() - requestStart;\n app.debug.log('Openreplay: final req object', reqResInfo);\n app.send(NetworkRequest('xhr', String(method), String(reqResInfo.url), stringify(reqResInfo.request), stringify(reqResInfo.response), reqResInfo.status, requestStart + getTimeOrigin(), duration, 0));\n }\n function getStartTime(config) {\n app.debug.log('Openreplay: capturing API request', config);\n config.__openreplay_timing = performance.now();\n if (opts.sessionTokenHeader) {\n const header = typeof opts.sessionTokenHeader === 'string'\n ? opts.sessionTokenHeader\n : 'X-OpenReplay-Session-Token';\n const headerValue = app.getSessionToken();\n if (headerValue) {\n config.headers.set(header, headerValue);\n }\n }\n return config;\n }\n function captureNetworkRequest(response) {\n if (opts.failuresOnly)\n return response;\n captureResponseData(response);\n return response;\n }\n function captureNetworkError(error) {\n app.debug.log('Openreplay: capturing API request error', error);\n if (isAxiosError(error) && Boolean(error.response)) {\n captureResponseData(error.response);\n }\n else if (error instanceof Error) {\n app.send(getExceptionMessage(error, []));\n }\n return Promise.reject(error);\n }\n function logRequestError(ev) {\n app.debug.log('Openreplay: failed API request, skipping', ev);\n }\n const reqInt = instance.interceptors.request.use(getStartTime, logRequestError, {\n synchronous: true,\n });\n const resInt = instance.interceptors.response.use(captureNetworkRequest, captureNetworkError, {\n synchronous: true,\n });\n app.attachStopCallback(() => {\n instance.interceptors.request.eject?.(reqInt);\n instance.interceptors.response.eject?.(resInt);\n });\n}\nfunction isAxiosError(payload) {\n return isObject(payload) && payload.isAxiosError === true;\n}\nfunction isObject(thing) {\n return thing !== null && typeof thing === 'object';\n}\n","export const sensitiveParams = new Set([\n \"password\",\n \"pass\",\n \"pwd\",\n \"mdp\",\n \"token\",\n \"bearer\",\n \"jwt\",\n \"api_key\",\n \"api-key\",\n \"apiKey\",\n \"secret\",\n \"ssn\",\n \"zip\",\n \"zipcode\",\n \"x-api-key\",\n \"www-authenticate\",\n \"x-csrf-token\",\n \"x-requested-with\",\n \"x-forwarded-for\",\n \"x-real-ip\",\n \"cookie\",\n \"authorization\",\n \"auth\",\n \"proxy-authorization\",\n \"set-cookie\",\n \"account_key\",\n]);\nfunction numDigits(x) {\n return (Math.log10((x ^ (x >> 31)) - (x >> 31)) | 0) + 1;\n}\nfunction obscure(value) {\n if (typeof value === \"number\") {\n const digits = numDigits(value);\n return \"9\".repeat(digits);\n }\n if (typeof value === \"string\") {\n return value.replace(/[^\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff\\s]/g, '*');\n }\n return value;\n}\nexport function filterHeaders(headers) {\n const filteredHeaders = {};\n if (Array.isArray(headers)) {\n headers.forEach(({ name, value }) => {\n if (sensitiveParams.has(name.toLowerCase())) {\n filteredHeaders[name] = obscure(value);\n }\n else {\n filteredHeaders[name] = value;\n }\n });\n }\n else {\n for (const [key, value] of Object.entries(headers)) {\n if (sensitiveParams.has(key.toLowerCase())) {\n filteredHeaders[key] = obscure(value);\n }\n else {\n filteredHeaders[key] = value;\n }\n }\n }\n return filteredHeaders;\n}\nexport function filterBody(body) {\n if (!body) {\n return body;\n }\n let parsedBody;\n let isJSON = false;\n try {\n parsedBody = JSON.parse(body);\n isJSON = true;\n }\n catch (e) {\n // not json\n }\n if (isJSON) {\n obscureSensitiveData(parsedBody);\n return JSON.stringify(parsedBody);\n }\n else {\n const isUrlSearch = typeof body === \"string\" && body.includes(\"?\") && body.includes(\"=\");\n if (isUrlSearch) {\n try {\n const params = new URLSearchParams(body);\n for (const key of params.keys()) {\n if (sensitiveParams.has(key.toLowerCase())) {\n const value = obscure(params.get(key));\n params.set(key, value);\n }\n }\n return params.toString();\n }\n catch (e) {\n // not url query ?\n return body;\n }\n }\n else {\n // not json or url query\n return body;\n }\n }\n}\nexport function sanitizeObject(obj) {\n obscureSensitiveData(obj);\n return obj;\n}\nfunction obscureSensitiveData(obj) {\n if (Array.isArray(obj)) {\n obj.forEach(obscureSensitiveData);\n }\n else if (obj && typeof obj === \"object\") {\n for (const key in obj) {\n if (Object.hasOwn(obj, key)) {\n if (sensitiveParams.has(key.toLowerCase())) {\n obj[key] = obscure(obj[key]);\n }\n else if (obj[key] !== null && typeof obj[key] === \"object\") {\n obscureSensitiveData(obj[key]);\n }\n }\n }\n }\n}\nexport function tryFilterUrl(url) {\n if (!url)\n return \"\";\n try {\n const urlObj = new URL(url);\n if (urlObj.searchParams) {\n for (const key of urlObj.searchParams.keys()) {\n if (sensitiveParams.has(key.toLowerCase())) {\n urlObj.searchParams.set(key, \"******\");\n }\n }\n }\n return urlObj.toString();\n }\n catch (e) {\n return url;\n }\n}\n//# sourceMappingURL=sanitizers.js.map","import { tryFilterUrl, filterHeaders, filterBody, sanitizeObject, } from \"./sanitizers\";\n/**\n * I know we're not using most of the information from this class\n * but it can be useful in the future if we will decide to display more stuff in our ui\n * */\nexport default class NetworkMessage {\n constructor(ignoredHeaders = [], setSessionTokenHeader, sanitize) {\n this.ignoredHeaders = ignoredHeaders;\n this.setSessionTokenHeader = setSessionTokenHeader;\n this.sanitize = sanitize;\n this.id = '';\n this.name = '';\n this.method = '';\n this.url = '';\n this.status = 0;\n this.statusText = '';\n this.cancelState = 0;\n this.readyState = 0;\n this.header = {};\n this.responseType = '';\n this.requestType = 'xhr';\n this.requestHeader = {};\n this.responseSize = 0; // bytes\n this.responseSizeText = '';\n this.startTime = 0;\n this.endTime = 0;\n this.duration = 0;\n this.getData = {};\n this.requestData = null;\n }\n getMessage() {\n const { reqHs, resHs } = this.writeHeaders();\n const reqBody = this.method === 'GET'\n ? JSON.stringify(sanitizeObject(this.getData)) : filterBody(this.requestData);\n const request = {\n headers: filterHeaders(reqHs),\n body: reqBody,\n };\n const response = {\n headers: filterHeaders(resHs),\n body: filterBody(this.response)\n };\n const messageInfo = this.sanitize({\n url: tryFilterUrl(this.url),\n method: this.method,\n status: this.status,\n request,\n response,\n });\n if (!messageInfo)\n return null;\n const isGraphql = messageInfo.url.includes(\"/graphql\");\n if (isGraphql && messageInfo.response.body && typeof messageInfo.response.body === 'string') {\n const isError = messageInfo.response.body.includes(\"errors\");\n messageInfo.status = isError ? 400 : 200;\n this.requestType = 'graphql';\n }\n return {\n requestType: this.requestType,\n method: messageInfo.method,\n url: messageInfo.url,\n request: JSON.stringify(messageInfo.request),\n response: JSON.stringify(messageInfo.response),\n status: messageInfo.status,\n startTime: this.startTime,\n duration: this.duration,\n responseSize: this.responseSize,\n };\n }\n writeHeaders() {\n const reqHs = {};\n Object.entries(this.requestHeader).forEach(([key, value]) => {\n if (this.isHeaderIgnored(key))\n return;\n reqHs[key] = value;\n });\n this.setSessionTokenHeader((name, value) => {\n reqHs[name] = value;\n });\n const resHs = {};\n Object.entries(this.header).forEach(([key, value]) => {\n if (this.isHeaderIgnored(key))\n return;\n resHs[key] = value;\n });\n return { reqHs, resHs };\n }\n isHeaderIgnored(key) {\n if (Array.isArray(this.ignoredHeaders)) {\n return this.ignoredHeaders.map((k) => k.toLowerCase()).includes(key.toLowerCase());\n }\n else {\n return this.ignoredHeaders;\n }\n }\n}\n//# sourceMappingURL=networkMessage.js.map","export const genResponseByType = (responseType, response) => {\n let result = '';\n switch (responseType) {\n case '':\n case 'text':\n case 'json':\n if (typeof response == 'string') {\n try {\n result = JSON.parse(response);\n }\n catch (e) {\n // not a JSON string\n result = response.slice(0, 10000);\n }\n }\n else if (isPureObject(response) || Array.isArray(response)) {\n result = JSON.stringify(response);\n }\n else if (typeof response !== 'undefined') {\n result = Object.prototype.toString.call(response);\n }\n break;\n case 'blob':\n case 'document':\n case 'arraybuffer':\n default:\n if (typeof response !== 'undefined') {\n result = Object.prototype.toString.call(response);\n }\n break;\n }\n return result;\n};\nexport const getStringResponseByType = (responseType, response) => {\n let result = '';\n switch (responseType) {\n case '':\n case 'text':\n case 'json':\n if (typeof response == 'string') {\n result = response;\n }\n else if (isPureObject(response) || Array.isArray(response)) {\n result = JSON.stringify(response);\n }\n else if (typeof response !== 'undefined') {\n result = Object.prototype.toString.call(response);\n }\n break;\n case 'blob':\n case 'document':\n case 'arraybuffer':\n default:\n if (typeof response !== 'undefined') {\n result = Object.prototype.toString.call(response);\n }\n break;\n }\n return result;\n};\nexport const genStringBody = (body) => {\n if (!body) {\n return null;\n }\n let result;\n try {\n if (typeof body === 'string') {\n if (body[0] === '{' || body[0] === '[') {\n result = body;\n }\n // 'a=1&b=2' => try to parse as query\n const arr = body.split('&');\n if (arr.length === 1) {\n // not a query, parse as original string\n result = body;\n }\n else {\n // 'a=1&b=2&c' => parse as query\n result = arr.join(',');\n }\n }\n else if (isIterable(body)) {\n // FormData or URLSearchParams or Array\n const arr = [];\n for (const [key, value] of body) {\n arr.push(`${key}=${typeof value === 'string' ? value : '[object Object]'}`);\n }\n result = arr.join(',');\n }\n else if (body instanceof Blob ||\n body instanceof ReadableStream ||\n body instanceof ArrayBuffer) {\n result = 'byte data';\n }\n else if (isPureObject(body)) {\n // overriding ArrayBufferView which is not convertable to string\n result = body;\n }\n else {\n result = `can't parse body ${typeof body}`;\n }\n return result;\n }\n catch (_) {\n return \"can't parse body\";\n }\n};\nexport const genGetDataByUrl = (url, getData = {}) => {\n if (!isPureObject(getData)) {\n getData = {};\n }\n let query = url ? url.split('?') : []; // a.php?b=c&d=?e => ['a.php', 'b=c&d=', 'e']\n query.shift(); // => ['b=c&d=', 'e']\n if (query.length > 0) {\n query = query.join('?').split('&'); // => 'b=c&d=?e' => ['b=c', 'd=?e']\n for (const q of query) {\n const kv = q.split('=');\n try {\n getData[kv[0]] = decodeURIComponent(kv[1]);\n }\n catch (e) {\n // \"URIError: URI malformed\" will be thrown when `kv[1]` contains \"%\", so just use raw data\n // @issue #470\n // @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Malformed_URI\n getData[kv[0]] = kv[1];\n }\n }\n }\n return getData;\n};\nexport const genFormattedBody = (body) => {\n if (!body) {\n return null;\n }\n let result;\n if (typeof body === 'string') {\n try {\n // '{a:1}' =>\n result = JSON.parse(body);\n }\n catch (e) {\n // 'a=1&b=2' => try to parse as query\n const arr = body.split('&');\n result = {};\n // eslint-disable-next-line\n for (let q of arr) {\n const kv = q.split('=');\n result[kv[0]] = kv[1] === undefined ? 'undefined' : kv[1];\n }\n }\n }\n else if (isIterable(body)) {\n // FormData or URLSearchParams or Array\n result = {};\n for (const [key, value] of body) {\n result[key] = typeof value === 'string' ? value : '[object Object]';\n }\n }\n else if (ArrayBuffer.isView(body) ||\n body instanceof Blob ||\n body instanceof ReadableStream ||\n body instanceof ArrayBuffer) {\n result = '[byte data]';\n }\n else if (isPureObject(body)) {\n result = body;\n }\n else {\n result = `can't parse body ${typeof body}`;\n }\n return result;\n};\nexport function isPureObject(input) {\n return null !== input && typeof input === 'object';\n}\nexport function isIterable(value) {\n if (value === null || value === undefined) {\n return false;\n }\n if (ArrayBuffer.isView(value)) {\n return false;\n }\n return typeof Symbol !== 'undefined' && typeof value[Symbol.iterator] === 'function';\n}\nexport function formatByteSize(bytes) {\n if (bytes <= 0) {\n // shouldn't happen?\n return '';\n }\n if (bytes >= 1000 * 1000) {\n return (bytes / 1000 / 1000).toFixed(1) + ' MB';\n }\n if (bytes >= 1000) {\n return (bytes / 1000).toFixed(1) + ' KB';\n }\n return `${bytes}B`;\n}\nexport const getURL = (urlString) => {\n if (urlString.startsWith('//')) {\n const baseUrl = new URL(window.location.href);\n urlString = `${baseUrl.protocol}${urlString}`;\n }\n if (urlString.startsWith('http')) {\n return new URL(urlString);\n }\n else {\n return new URL(urlString, window.location.href);\n }\n};\n//# sourceMappingURL=utils.js.map","import NetworkMessage from './networkMessage';\nimport { genStringBody, getURL } from './utils';\n// https://fetch.spec.whatwg.org/#concept-bodyinit-extract\nconst getContentType = (data) => {\n if (data instanceof Blob) {\n return data.type;\n }\n if (data instanceof FormData) {\n return 'multipart/form-data';\n }\n if (data instanceof URLSearchParams) {\n return 'application/x-www-form-urlencoded;charset=UTF-8';\n }\n return 'text/plain;charset=UTF-8';\n};\nexport class BeaconProxyHandler {\n constructor(ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl) {\n this.ignoredHeaders = ignoredHeaders;\n this.setSessionTokenHeader = setSessionTokenHeader;\n this.sanitize = sanitize;\n this.sendMessage = sendMessage;\n this.isServiceUrl = isServiceUrl;\n }\n apply(target, thisArg, argsList) {\n const urlString = argsList[0];\n const data = argsList[1];\n const item = new NetworkMessage(this.ignoredHeaders, this.setSessionTokenHeader, this.sanitize);\n if (this.isServiceUrl(urlString)) {\n return target.apply(thisArg, argsList);\n }\n const url = getURL(urlString);\n item.method = 'POST';\n item.url = urlString;\n item.name = (url.pathname.split('/').pop() || '') + url.search;\n item.requestType = 'beacon';\n item.requestHeader = { 'Content-Type': getContentType(data) };\n item.status = 0;\n item.statusText = 'Pending';\n if (url.search && url.searchParams) {\n item.getData = {};\n for (const [key, value] of url.searchParams) {\n item.getData[key] = value;\n }\n }\n item.requestData = genStringBody(data);\n if (!item.startTime) {\n item.startTime = performance.now();\n }\n const isSuccess = target.apply(thisArg, argsList);\n if (isSuccess) {\n item.endTime = performance.now();\n item.duration = item.endTime - (item.startTime || item.endTime);\n item.status = 0;\n item.statusText = 'Sent';\n item.readyState = 4;\n }\n else {\n item.status = 500;\n item.statusText = 'Unknown';\n }\n const msg = item.getMessage();\n if (msg) {\n this.sendMessage(msg);\n }\n return isSuccess;\n }\n}\nexport default class BeaconProxy {\n static create(originalSendBeacon, ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl) {\n if (!originalSendBeacon) {\n return undefined;\n }\n return new Proxy(originalSendBeacon, new BeaconProxyHandler(ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl));\n }\n}\n//# sourceMappingURL=beaconProxy.js.map","/**\n * I took inspiration in few stack exchange posts\n * and Tencent vConsole library (MIT)\n * by wrapping the XMLHttpRequest object in a Proxy\n * we can intercept the network requests\n * in not-so-hacky way\n * */\nimport NetworkMessage from \"./networkMessage\";\nimport { formatByteSize, genStringBody, getStringResponseByType, getURL, } from \"./utils\";\nexport class ResponseProxyHandler {\n constructor(resp, item) {\n this.resp = resp;\n this.item = item;\n }\n set(target, key, value) {\n return Reflect.set(target, key, value);\n }\n get(target, key) {\n const value = Reflect.get(target, key);\n if (key === \"arrayBuffer\" || key === \"blob\") {\n return typeof value === \"function\" ? value.bind(target) : value;\n }\n switch (key) {\n case \"formData\":\n case \"json\":\n case \"text\":\n return () => {\n this.item.responseType = key.toLowerCase();\n // @ts-ignore\n return value.apply(target).then((resp) => {\n this.item.response = getStringResponseByType(this.item.responseType, resp);\n return resp;\n });\n };\n }\n if (typeof value === \"function\") {\n return value.bind(target);\n }\n else {\n return value;\n }\n }\n}\nexport class FetchProxyHandler {\n constructor(ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl, tokenUrlMatcher) {\n this.ignoredHeaders = ignoredHeaders;\n this.setSessionTokenHeader = setSessionTokenHeader;\n this.sanitize = sanitize;\n this.sendMessage = sendMessage;\n this.isServiceUrl = isServiceUrl;\n this.tokenUrlMatcher = tokenUrlMatcher;\n }\n apply(target, _, argsList) {\n const input = argsList[0];\n const init = argsList[1];\n if (!input ||\n // @ts-ignore\n (typeof input !== \"string\" && !(input === null || input === void 0 ? void 0 : input.url))) {\n return target.apply(window, argsList);\n }\n const isORUrl = input instanceof URL || typeof input === \"string\"\n ? this.isServiceUrl(String(input))\n : this.isServiceUrl(String(input.url));\n if (isORUrl) {\n return target.apply(window, argsList);\n }\n const item = new NetworkMessage(this.ignoredHeaders, this.setSessionTokenHeader, this.sanitize);\n this.beforeFetch(item, input, init);\n this.setSessionTokenHeader((name, value) => {\n if (this.tokenUrlMatcher !== undefined) {\n if (!this.tokenUrlMatcher(item.url)) {\n return;\n }\n }\n if (argsList[1] === undefined && argsList[0] instanceof Request) {\n return argsList[0].headers.append(name, value);\n }\n else {\n if (!argsList[1])\n argsList[1] = {};\n if (argsList[1].headers === undefined) {\n argsList[1] = Object.assign(Object.assign({}, argsList[1]), { headers: {} });\n }\n if (argsList[1].headers instanceof Headers) {\n argsList[1].headers.append(name, value);\n }\n else if (Array.isArray(argsList[1].headers)) {\n argsList[1].headers.push([name, value]);\n }\n else {\n // @ts-ignore\n argsList[1].headers[name] = value;\n }\n }\n });\n return target.apply(window, argsList)\n .then(this.afterFetch(item))\n .catch((e) => {\n // mock finally\n item.endTime = performance.now();\n item.duration = item.endTime - (item.startTime || item.endTime);\n throw e;\n });\n }\n beforeFetch(item, input, init) {\n let url, method = \"GET\", requestHeader = {};\n // handle `input` content\n if (typeof input === \"string\") {\n // when `input` is a string\n method = (init === null || init === void 0 ? void 0 : init.method) || \"GET\";\n url = getURL(input);\n requestHeader = (init === null || init === void 0 ? void 0 : init.headers) || {};\n }\n else {\n // when `input` is a `Request` object\n method = input.method || \"GET\";\n url = getURL(input.url);\n requestHeader = input.headers;\n }\n item.method = method;\n item.requestType = \"fetch\";\n item.requestHeader = requestHeader;\n item.url = url.toString();\n item.name = (url.pathname.split(\"/\").pop() || \"\") + url.search;\n item.status = 0;\n item.statusText = \"Pending\";\n item.readyState = 1;\n if (!item.startTime) {\n // UNSENT\n item.startTime = performance.now();\n }\n if (Object.prototype.toString.call(requestHeader) === \"[object Headers]\") {\n item.requestHeader = {};\n for (const [key, value] of requestHeader) {\n item.requestHeader[key] = value;\n }\n }\n else {\n item.requestHeader = requestHeader;\n }\n // save GET data\n if (url.search && url.searchParams) {\n item.getData = {};\n for (const [key, value] of url.searchParams) {\n item.getData[key] = value;\n }\n }\n // save POST data\n if (init === null || init === void 0 ? void 0 : init.body) {\n item.requestData = genStringBody(init.body);\n }\n }\n afterFetch(item) {\n return (resp) => {\n item.endTime = performance.now();\n item.duration = item.endTime - (item.startTime || item.endTime);\n item.status = resp.status;\n item.statusText = String(resp.status);\n let isChunked = false;\n item.header = {};\n for (const [key, value] of resp.headers) {\n item.header[key] = value;\n isChunked =\n value.toLowerCase().indexOf(\"chunked\") > -1 ? true : isChunked;\n }\n if (isChunked) {\n // when `transfer-encoding` is chunked, the response is a stream which is under loading,\n // so the `readyState` should be 3 (Loading),\n // and the response should NOT be `clone()` which will affect stream reading.\n item.readyState = 3;\n }\n else {\n // Otherwise, not chunked, the response is not a stream,\n // so it's completed and can be cloned for `text()` calling.\n item.readyState = 4;\n this.handleResponseBody(resp.clone(), item)\n .then((responseValue) => {\n item.responseSize =\n typeof responseValue === \"string\"\n ? responseValue.length\n : responseValue.byteLength;\n item.responseSizeText = formatByteSize(item.responseSize);\n item.response = getStringResponseByType(item.responseType, responseValue);\n const msg = item.getMessage();\n if (msg) {\n this.sendMessage(msg);\n }\n })\n .catch((e) => {\n if (e.name !== \"AbortError\") {\n throw e;\n }\n else {\n // ignore AbortError\n }\n });\n }\n const ct = (resp.headers.get(\"content-type\") || \"\").toLowerCase();\n const isTextLike = ct.includes(\"application/json\") || ct.startsWith(\"text/\");\n return isTextLike\n ? new Proxy(resp, new ResponseProxyHandler(resp, item))\n : resp;\n };\n }\n handleResponseBody(resp, item) {\n // parse response body by Content-Type\n const contentType = resp.headers.get(\"content-type\");\n if (contentType && contentType.includes(\"application/json\")) {\n item.responseType = \"json\";\n return resp.text();\n }\n else if (contentType &&\n (contentType.includes(\"text/html\") || contentType.includes(\"text/plain\"))) {\n item.responseType = \"text\";\n return resp.text();\n }\n else {\n item.responseType = \"arraybuffer\";\n return resp.arrayBuffer();\n }\n }\n}\nexport default class FetchProxy {\n static create(ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl, tokenUrlMatcher) {\n return new Proxy(fetch, new FetchProxyHandler(ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl, tokenUrlMatcher));\n }\n}\n//# sourceMappingURL=fetchProxy.js.map","export var RequestState;\n(function (RequestState) {\n RequestState[RequestState[\"UNSENT\"] = 0] = \"UNSENT\";\n RequestState[RequestState[\"OPENED\"] = 1] = \"OPENED\";\n RequestState[RequestState[\"HEADERS_RECEIVED\"] = 2] = \"HEADERS_RECEIVED\";\n RequestState[RequestState[\"LOADING\"] = 3] = \"LOADING\";\n RequestState[RequestState[\"DONE\"] = 4] = \"DONE\";\n})(RequestState || (RequestState = {}));\n//# sourceMappingURL=types.js.map","/**\n * I took inspiration in few stack exchange posts\n * and Tencent vConsole library (MIT)\n * by wrapping the XMLHttpRequest object in a Proxy\n * we can intercept the network requests\n * in not-so-hacky way\n * */\nimport NetworkMessage from \"./networkMessage\";\nimport { RequestState } from \"./types\";\nimport { genGetDataByUrl, formatByteSize, genStringBody, getStringResponseByType, } from \"./utils\";\nexport class XHRProxyHandler {\n constructor(XMLReq, ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl, tokenUrlMatcher) {\n this.ignoredHeaders = ignoredHeaders;\n this.setSessionTokenHeader = setSessionTokenHeader;\n this.sanitize = sanitize;\n this.sendMessage = sendMessage;\n this.isServiceUrl = isServiceUrl;\n this.tokenUrlMatcher = tokenUrlMatcher;\n this.XMLReq = XMLReq;\n this.XMLReq.onreadystatechange = () => {\n this.onReadyStateChange();\n };\n this.XMLReq.onabort = () => {\n this.onAbort();\n };\n this.XMLReq.ontimeout = () => {\n this.onTimeout();\n };\n this.item = new NetworkMessage(ignoredHeaders, setSessionTokenHeader, sanitize);\n this.item.requestType = \"xhr\";\n }\n get(target, key) {\n switch (key) {\n case \"open\":\n return this.getOpen(target);\n case \"send\":\n this.setSessionTokenHeader((name, value) => {\n if (this.tokenUrlMatcher !== undefined) {\n if (!this.tokenUrlMatcher(this.item.url)) {\n return;\n }\n }\n if (target.readyState === 1)\n target.setRequestHeader(name, value);\n });\n return this.getSend(target);\n case \"setRequestHeader\":\n return this.getSetRequestHeader(target);\n default:\n // eslint-disable-next-line no-case-declarations\n const value = Reflect.get(target, key);\n if (typeof value === \"function\") {\n return value.bind(target);\n }\n else {\n return value;\n }\n }\n }\n set(target, key, value) {\n switch (key) {\n case \"onreadystatechange\":\n return this.setOnReadyStateChange(target, key, value);\n case \"onabort\":\n return this.setOnAbort(target, key, value);\n case \"ontimeout\":\n return this.setOnTimeout(target, key, value);\n default:\n // not tracked methods\n }\n return Reflect.set(target, key, value);\n }\n onReadyStateChange() {\n if (this.item.url && this.isServiceUrl(this.item.url))\n return;\n this.item.readyState = this.XMLReq.readyState;\n this.item.responseType = this.XMLReq.responseType;\n this.item.endTime = performance.now();\n this.item.duration = this.item.endTime - this.item.startTime;\n this.updateItemByReadyState();\n const rt = this.item.responseType || \"\";\n if (rt === \"\" || rt === \"text\" || rt === \"json\") {\n setTimeout(() => {\n this.item.response = getStringResponseByType(rt, this.XMLReq.response);\n }, 0);\n }\n if (this.XMLReq.readyState === RequestState.DONE) {\n const msg = this.item.getMessage();\n if (msg) {\n this.sendMessage(msg);\n }\n }\n }\n onAbort() {\n this.item.cancelState = 1;\n this.item.statusText = \"Abort\";\n const msg = this.item.getMessage();\n if (msg) {\n this.sendMessage(msg);\n }\n }\n onTimeout() {\n this.item.cancelState = 3;\n this.item.statusText = \"Timeout\";\n const msg = this.item.getMessage();\n if (msg) {\n this.sendMessage(msg);\n }\n }\n getOpen(target) {\n const targetFunction = Reflect.get(target, \"open\");\n return (...args) => {\n var _a, _b, _c;\n const method = args[0];\n const url = args[1];\n this.item.method = method ? method.toUpperCase() : \"GET\";\n this.item.url = ((_a = url.toString) === null || _a === void 0 ? void 0 : _a.call(url)) || \"\";\n this.item.name =\n (_c = (_b = this.item.url) === null || _b === void 0 ? void 0 : _b.replace(new RegExp(\"/*$\"), \"\").split(\"/\").pop()) !== null && _c !== void 0 ? _c : \"\";\n this.item.getData = genGetDataByUrl(this.item.url, {});\n return targetFunction.apply(target, args);\n };\n }\n getSend(target) {\n const targetFunction = Reflect.get(target, \"send\");\n return (...args) => {\n const data = args[0];\n this.item.requestData = genStringBody(data);\n return targetFunction.apply(target, args);\n };\n }\n getSetRequestHeader(target) {\n const targetFunction = Reflect.get(target, \"setRequestHeader\");\n return (...args) => {\n if (!this.item.requestHeader) {\n this.item.requestHeader = {};\n }\n // @ts-ignore\n this.item.requestHeader[args[0]] = args[1];\n return targetFunction.apply(target, args);\n };\n }\n setOnReadyStateChange(target, key, orscFunction) {\n return Reflect.set(target, key, (...args) => {\n this.onReadyStateChange();\n orscFunction === null || orscFunction === void 0 ? void 0 : orscFunction.apply(target, args);\n });\n }\n setOnAbort(target, key, oaFunction) {\n return Reflect.set(target, key, (...args) => {\n this.onAbort();\n oaFunction.apply(target, args);\n });\n }\n setOnTimeout(target, key, otFunction) {\n return Reflect.set(target, key, (...args) => {\n this.onTimeout();\n otFunction.apply(target, args);\n });\n }\n /**\n * Update item's properties according to readyState.\n */\n updateItemByReadyState() {\n switch (this.XMLReq.readyState) {\n case RequestState.UNSENT:\n case RequestState.OPENED:\n this.item.status = RequestState.UNSENT;\n this.item.statusText = \"Pending\";\n if (!this.item.startTime) {\n this.item.startTime = performance.now();\n }\n break;\n case RequestState.HEADERS_RECEIVED:\n this.item.status = this.XMLReq.status;\n this.item.statusText = \"Loading\";\n this.item.header = {};\n // eslint-disable-next-line no-case-declarations\n const header = this.XMLReq.getAllResponseHeaders() || \"\", headerArr = header.split(\"\\n\");\n // extract plain text to key-value format\n for (let i = 0; i < headerArr.length; i++) {\n const line = headerArr[i];\n if (!line) {\n continue;\n }\n const arr = line.split(\": \");\n const key = arr[0];\n this.item.header[key] = arr.slice(1).join(\": \");\n }\n break;\n case RequestState.LOADING:\n this.item.status = this.XMLReq.status;\n this.item.statusText = \"Loading\";\n const response = this.XMLReq.response;\n if (response) {\n const respSize = typeof response === \"string\"\n ? response.length\n : response instanceof ArrayBuffer\n ? response.byteLength\n : typeof Blob !== \"undefined\" && response instanceof Blob\n ? response.size\n : 0;\n if (respSize) {\n this.item.responseSize = respSize;\n this.item.responseSizeText = formatByteSize(this.item.responseSize);\n }\n }\n break;\n case RequestState.DONE:\n // `XMLReq.abort()` will change `status` from 200 to 0, so use previous value in this case\n this.item.status = this.XMLReq.status || this.item.status || 0;\n // show status code when request completed\n this.item.statusText = String(this.item.status);\n this.item.endTime = performance.now();\n this.item.duration =\n this.item.endTime - (this.item.startTime || this.item.endTime);\n const resp = this.XMLReq.response;\n const respType = this.XMLReq.responseType || \"\";\n if (respType === \"\" || respType === \"text\" || respType === \"json\") {\n this.item.response = resp;\n }\n if (resp) {\n const respSize = typeof resp === \"string\"\n ? resp.length\n : resp instanceof ArrayBuffer\n ? resp.byteLength\n : typeof Blob !== \"undefined\" && resp instanceof Blob\n ? resp.size\n : 0;\n if (respSize) {\n this.item.responseSize = respSize;\n this.item.responseSizeText = formatByteSize(respSize);\n }\n }\n break;\n default:\n this.item.status = this.XMLReq.status;\n this.item.statusText = \"Unknown\";\n break;\n }\n }\n}\nexport default class XHRProxy {\n static create(ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl, tokenUrlMatcher) {\n return new Proxy(XMLHttpRequest, {\n construct(original) {\n const XMLReq = new original();\n return new Proxy(XMLReq, new XHRProxyHandler(XMLReq, ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl, tokenUrlMatcher));\n },\n });\n }\n}\n//# sourceMappingURL=xhrProxy.js.map","import BeaconProxy from \"./beaconProxy\";\nimport FetchProxy from \"./fetchProxy\";\nimport XHRProxy from \"./xhrProxy\";\nexport { BeaconProxy, FetchProxy, XHRProxy, };\nconst warn = (api) => {\n const str = `Openreplay: Can't find ${api} in global context.`;\n console.warn(str);\n};\nconst OR_FLAG = Symbol('OpenReplayProxyOriginal');\nconst isProxied = (fn) => !!fn && fn[OR_FLAG] !== undefined;\nconst unwrap = (fn) => isProxied(fn) ? fn[OR_FLAG] : fn;\nconst wrap = (proxy, orig) => {\n proxy[OR_FLAG] = orig;\n return proxy;\n};\n/**\n * Creates network proxies for XMLHttpRequest, fetch, and sendBeacon to intercept and monitor network requests and\n * responses.\n *\n * @param {Window | typeof globalThis} context - The global context object (e.g., window or globalThis).\n * @param {boolean | string[]} ignoredHeaders - Headers to ignore from requests. If `true`, all headers are ignored; if\n * an array of strings, those header names are ignored.\n * @param {(cb: (name: string, value: string) => void) => void} setSessionTokenHeader - Function to set a session token\n * header; accepts a callback that sets the header name and value.\n * @param {(data: RequestResponseData) => RequestResponseData | null} sanitize - Function to sanitize request and\n * response data; should return sanitized data or `null` to ignore the data.\n * @param {(message: INetworkMessage) => void} sendMessage - Function to send network messages for further processing\n * or logging.\n * @param {(url: string) => boolean} isServiceUrl - Function to determine if a URL is a service URL that should be\n * ignored by the proxy.\n * @param {Object} [modules] - Modules to apply the proxies to.\n * @param {boolean} [modules.xhr=true] - Whether to proxy XMLHttpRequest.\n * @param {boolean} [modules.fetch=true] - Whether to proxy the fetch API.\n * @param {boolean} [modules.beacon=true] - Whether to proxy navigator.sendBeacon.\n * @param {(url: string) => boolean} [tokenUrlMatcher] - Optional function; the session token header will only be\n * applied to requests matching this function.\n *\n * @returns {void}\n */\nexport default function createNetworkProxy(context, ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl, modules = {\n xhr: true,\n fetch: true,\n beacon: true,\n}, tokenUrlMatcher) {\n var _a;\n if (!context)\n return;\n if (modules.xhr) {\n const original = unwrap(context.XMLHttpRequest);\n if (!original)\n warn('XMLHttpRequest');\n else {\n context.XMLHttpRequest = wrap(XHRProxy.create(ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl, tokenUrlMatcher), original);\n }\n }\n if (modules.fetch) {\n const original = unwrap(context.fetch);\n if (!original)\n warn('fetch');\n else {\n context.fetch = wrap(FetchProxy.create(ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl, tokenUrlMatcher), original);\n }\n }\n if (modules.beacon && ((_a = context.navigator) === null || _a === void 0 ? void 0 : _a.sendBeacon)) {\n const original = unwrap(context.navigator.sendBeacon);\n context.navigator.sendBeacon = wrap(BeaconProxy.create(original, ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl), original);\n }\n}\n//# sourceMappingURL=index.js.map","import { NetworkRequest } from '../app/messages.gen.js';\nimport { getTimeOrigin } from '../utils.js';\nimport axiosSpy from './axiosSpy.js';\nimport createNetworkProxy from '@openreplay/network-proxy';\nfunction getXHRRequestDataObject(xhr) {\n // @ts-ignore this is 3x faster than using Map<XHR, XHRRequestData>\n if (!xhr.__or_req_data__) {\n // @ts-ignore\n xhr.__or_req_data__ = { body: undefined, headers: {} };\n }\n // @ts-ignore\n return xhr.__or_req_data__;\n}\nfunction strMethod(method) {\n return typeof method === 'string' ? method.toUpperCase() : 'GET';\n}\nexport default function (app, opts = {}) {\n if (opts.disabled) {\n return;\n }\n const options = Object.assign({\n failuresOnly: false,\n ignoreHeaders: ['cookie', 'set-cookie', 'authorization'],\n capturePayload: false,\n sessionTokenHeader: false,\n captureInIframes: true,\n axiosInstances: undefined,\n useProxy: true,\n }, opts);\n if (options.useProxy === false) {\n app.debug.warn('Network module is migrating to proxy api, to gradually migrate and test it set useProxy to true');\n }\n const ignoreHeaders = options.ignoreHeaders;\n const isHIgnored = Array.isArray(ignoreHeaders)\n ? (name) => ignoreHeaders.includes(name)\n : () => ignoreHeaders;\n const stHeader = options.sessionTokenHeader === true ? 'X-OpenReplay-SessionToken' : options.sessionTokenHeader;\n function setSessionTokenHeader(setRequestHeader) {\n if (stHeader) {\n const sessionToken = app.getSessionToken();\n if (sessionToken) {\n app.safe(setRequestHeader)(stHeader, sessionToken);\n }\n }\n }\n function sanitize(reqResInfo) {\n if (!options.capturePayload || app.sanitizer.privateMode) {\n // @ts-ignore\n delete reqResInfo.request.body;\n delete reqResInfo.response.body;\n }\n if (options.sanitizer) {\n const resBody = reqResInfo.response.body;\n if (typeof resBody === 'string') {\n // Parse response in order to have handy view in sanitization function\n try {\n reqResInfo.response.body = JSON.parse(resBody);\n }\n catch { }\n }\n return options.sanitizer(reqResInfo);\n }\n return reqResInfo;\n }\n function stringify(r) {\n if (r && typeof r.body !== 'string') {\n try {\n r.body = JSON.stringify(r.body);\n }\n catch {\n r.body = '<unable to stringify>';\n app.notify.warn(\"Openreplay fetch couldn't stringify body:\", r.body);\n }\n }\n return JSON.stringify(r);\n }\n const patchWindow = (context) => {\n /* ====== modern way ====== */\n if (options.useProxy) {\n return createNetworkProxy(context, app.sanitizer.privateMode ? true : options.ignoreHeaders, setSessionTokenHeader, sanitize, (message) => {\n if (options.failuresOnly && message.status < 400) {\n return;\n }\n const url = app.sanitizer.privateMode ? '************' : message.url;\n app.send(NetworkRequest(message.requestType, message.method, url, message.request, message.response, message.status, message.startTime + getTimeOrigin(), message.duration, message.responseSize));\n }, (url) => app.isServiceURL(url), { xhr: true, fetch: true, beacon: true }, options.tokenUrlMatcher);\n }\n /* ====== Fetch ====== */\n const origFetch = context.fetch.bind(context);\n const trackFetch = (input, init = {}) => {\n if (!(typeof input === 'string' || input instanceof URL) || app.isServiceURL(String(input))) {\n return origFetch(input, init);\n }\n setSessionTokenHeader(function (name, value) {\n if (init.headers === undefined) {\n init.headers = {};\n }\n if (init.headers instanceof Headers) {\n init.headers.append(name, value);\n }\n else if (Array.isArray(init.headers)) {\n init.headers.push([name, value]);\n }\n else {\n init.headers[name] = value;\n }\n });\n const startTime = performance.now();\n return origFetch(input, init).then((response) => {\n const duration = performance.now() - startTime;\n if (options.failuresOnly && response.status < 400) {\n return response;\n }\n const r = response.clone();\n r.text()\n .then((text) => {\n const reqHs = {};\n const resHs = {};\n if (ignoreHeaders !== true) {\n // request headers\n const writeReqHeader = ([n, v]) => {\n if (!isHIgnored(n)) {\n reqHs[n] = v;\n }\n };\n if (init.headers instanceof Headers) {\n init.headers.forEach((v, n) => writeReqHeader([n, v]));\n }\n else if (Array.isArray(init.headers)) {\n init.headers.forEach(writeReqHeader);\n }\n else if (typeof init.headers === 'object') {\n Object.entries(init.headers).forEach(writeReqHeader);\n }\n // response headers\n r.headers.forEach((v, n) => {\n if (!isHIgnored(n))\n resHs[n] = v;\n });\n }\n const method = strMethod(init.method);\n const reqResInfo = sanitize({\n url: String(input),\n method,\n status: r.status,\n request: {\n headers: reqHs,\n // @ts-ignore\n body: init.body || null,\n },\n response: {\n headers: resHs,\n body: text,\n },\n });\n if (!reqResInfo) {\n return;\n }\n app.send(NetworkRequest('fetch', method, String(reqResInfo.url), stringify(reqResInfo.request), stringify(reqResInfo.response), r.status, startTime + getTimeOrigin(), duration, 0));\n })\n .catch((e) => app.debug.error('Could not process Fetch response:', e));\n return response;\n });\n };\n // @ts-ignore\n context.fetch = trackFetch;\n /* ====== <> ====== */\n /* ====== XHR ====== */\n const nativeOpen = context.XMLHttpRequest.prototype.open;\n const nativeSetRequestHeader = context.XMLHttpRequest.prototype.setRequestHeader;\n const nativeSend = context.XMLHttpRequest.prototype.send;\n function trackXMLHttpReqOpen(initMethod, url) {\n const xhr = this;\n setSessionTokenHeader((name, value) => xhr.setRequestHeader(name, value));\n let startTime = 0;\n xhr.addEventListener('loadstart', (e) => {\n startTime = e.timeStamp;\n });\n xhr.addEventListener('load', app.safe((e) => {\n const { headers: reqHs, body: reqBody } = getXHRRequestDataObject(xhr);\n const duration = startTime > 0 ? e.timeStamp - startTime : 0;\n const hString = xhr.getAllResponseHeaders() || ''; // might be null (only if no response received though)\n const headersArr = hString.trim().split(/[\\r\\n]+/);\n const headerMap = {};\n headersArr.forEach(function (line) {\n const parts = line.split(': ');\n const header = parts.shift();\n if (!isHIgnored(header)) {\n headerMap[header] = parts.join(': ');\n }\n });\n const method = strMethod(initMethod);\n const reqResInfo = sanitize({\n url: String(url),\n method,\n status: xhr.status,\n request: {\n headers: reqHs,\n // @ts-ignore\n body: reqBody || null,\n },\n response: {\n headers: headerMap,\n body: xhr.response,\n },\n });\n if (!reqResInfo) {\n return;\n }\n app.send(NetworkRequest('xhr', method, String(reqResInfo.url), stringify(reqResInfo.request), stringify(reqResInfo.response), xhr.status, startTime + getTimeOrigin(), duration, 0));\n }));\n //TODO: handle error (though it has no Error API nor any useful information)\n //xhr.addEventListener('error', (e) => {})\n return nativeOpen.apply(this, arguments);\n }\n function trackXHRSend(body) {\n const rdo = getXHRRequestDataObject(this);\n rdo.body = body;\n // @ts-ignore ??? this -> XMLHttpRequest\n return nativeSend.apply(this, arguments);\n }\n function trackSetReqHeader(name, value) {\n if (!isHIgnored(name)) {\n const rdo = getXHRRequestDataObject(this);\n rdo.headers[name] = value;\n }\n return nativeSetRequestHeader.apply(this, arguments);\n }\n if (!options.axiosInstances) {\n context.XMLHttpRequest.prototype.open = trackXMLHttpReqOpen;\n context.XMLHttpRequest.prototype.send = trackXHRSend;\n context.XMLHttpRequest.prototype.setRequestHeader = trackSetReqHeader;\n }\n /* ====== <> ====== */\n };\n patchWindow(window);\n if (options.axiosInstances) {\n options.axiosInstances.forEach((axiosInstance) => {\n axiosSpy(app, axiosInstance, options, sanitize, stringify);\n });\n }\n if (options.captureInIframes) {\n app.observer.attachContextCallback(app.safe(patchWindow));\n }\n}\n","import { SelectionChange } from '../app/messages.gen.js';\nfunction selection(app) {\n app.attachEventListener(document, 'selectionchange', () => {\n const selection = document.getSelection();\n if (selection !== null && !selection.isCollapsed) {\n const selectionStart = app.nodes.getID(selection.anchorNode);\n const selectionEnd = app.nodes.getID(selection.focusNode);\n const selectedText = selection.toString().replace(/\\s+/g, ' ');\n if (selectionStart && selectionEnd) {\n app.send(SelectionChange(selectionStart, selectionEnd, selectedText));\n }\n }\n else {\n app.send(SelectionChange(-1, -1, ''));\n }\n });\n}\nexport default selection;\n/** TODO: research how to get all in-between nodes inside selection range\n * including nodes between anchor and focus nodes and their children\n * without recursively searching the dom tree\n */\n// if (selection.rangeCount) {\n// const nodes = [];\n// for (let i = 0; i < selection.rangeCount; i++) {\n// const range = selection.getRangeAt(i);\n// let node: Node | null = range.startContainer;\n// while (node) {\n// nodes.push(node);\n// if (node === range.endContainer) break;\n// node = node.nextSibling;\n// }\n// }\n// // send selected nodes\n// }\n","import { TabChange } from '../app/messages.gen.js';\nexport default function (app) {\n function changeTab() {\n if (!document.hidden) {\n app.debug.log('Openreplay: tab change to' + app.session.getTabId());\n app.send(TabChange(app.session.getTabId()));\n }\n }\n app.attachStartCallback(() => {\n // just for the good measure in case of restarts caused by assist plugin,\n // to keep latest active tab in state for live player\n changeTab();\n });\n app.attachEventListener(window, 'focus', changeTab, false, false);\n}\n","import { LongAnimationTask } from \"../app/messages.gen\";\nexport default function (app, opts) {\n if (!opts.longTasks || !('PerformanceObserver' in window)) {\n return;\n }\n const onEntry = (entry) => {\n app.send(LongAnimationTask(entry.name, entry.duration, entry.blockingDuration, entry.firstUIEventTimestamp, entry.startTime, JSON.stringify(entry.scripts ?? [])));\n };\n const observer = new PerformanceObserver((entryList) => {\n entryList.getEntries().forEach((entry) => {\n if (entry.entryType === 'long-animation-frame') {\n onEntry(entry);\n }\n });\n });\n app.attachStartCallback(() => {\n performance.getEntriesByType('long-animation-frame').forEach((lat) => {\n onEntry(lat);\n });\n observer.observe({\n entryTypes: ['long-animation-frame'],\n });\n });\n app.attachStopCallback(() => {\n observer.disconnect();\n });\n}\n","import { NodeAnimationResult } from '../app/messages.gen.js';\nconst toIgnore = [\"composite\", \"computedOffset\", \"easing\", \"offset\"];\nfunction webAnimations(app, options = {}) {\n const { allElements = false } = options;\n let listening = new WeakSet();\n let handled = new WeakSet();\n function wire(anim, el, nodeId) {\n if (handled.has(anim))\n return;\n handled.add(anim);\n anim.addEventListener('finish', () => {\n const lastKF = anim.effect.getKeyframes().at(-1);\n if (!lastKF)\n return;\n const computedStyle = getComputedStyle(el);\n const keys = Object.keys(lastKF).filter((p) => !toIgnore.includes(p));\n // @ts-ignore\n const finalStyle = {};\n keys.forEach((key) => {\n finalStyle[key] = computedStyle[key];\n });\n app.send(NodeAnimationResult(nodeId, JSON.stringify(finalStyle)));\n }, { once: true });\n }\n function scanElement(el, nodeId) {\n el.getAnimations({ subtree: false }).forEach((anim) => wire(anim, el, nodeId));\n }\n app.nodes.attachNodeCallback((node) => {\n if ((allElements || node.nodeName.includes('-')) && 'getAnimations' in node) {\n const animations = node.getAnimations({ subtree: false });\n const id = app.nodes.getID(node);\n if (animations.length > 0 && !listening.has(node) && id) {\n listening.add(node);\n scanElement(node, id);\n node.addEventListener('animationstart', () => scanElement(node, id));\n }\n }\n });\n const origAnimate = Element.prototype.animate;\n Element.prototype.animate = function (...args) {\n const anim = origAnimate.apply(this, args);\n const id = app.nodes.getID(this);\n if (!id)\n return anim;\n wire(anim, this, id);\n return anim;\n };\n app.attachStopCallback(() => {\n Element.prototype.animate = origAnimate; // Restore original animate method\n listening = new WeakSet();\n handled = new WeakSet();\n });\n}\nexport default webAnimations;\n","/**\n * Detects client browser, OS, and device information\n */\nexport function uaParse(sWindow) {\n const unknown = '-';\n // Screen detection\n let width = 0;\n let height = 0;\n let screenSize = '';\n if (sWindow.screen.width) {\n width = sWindow.screen.width;\n height = sWindow.screen.height;\n screenSize = `${width} x ${height}`;\n }\n // Browser detection\n const nVer = sWindow.navigator.appVersion ?? '0';\n const nAgt = sWindow.navigator.userAgent ?? 'unknown';\n let browser = sWindow.navigator.appName ?? \"unknown\";\n let version = String(parseFloat(nVer));\n let nameOffset;\n let verOffset;\n let ix;\n // Browser detection logic\n if ((verOffset = nAgt.indexOf('YaBrowser')) !== -1) {\n browser = 'Yandex';\n version = nAgt.substring(verOffset + 10);\n }\n else if ((verOffset = nAgt.indexOf('SamsungBrowser')) !== -1) {\n browser = 'Samsung';\n version = nAgt.substring(verOffset + 15);\n }\n else if ((verOffset = nAgt.indexOf('UCBrowser')) !== -1) {\n browser = 'UC Browser';\n version = nAgt.substring(verOffset + 10);\n }\n else if ((verOffset = nAgt.indexOf('OPR')) !== -1) {\n browser = 'Opera';\n version = nAgt.substring(verOffset + 4);\n }\n else if ((verOffset = nAgt.indexOf('Opera')) !== -1) {\n browser = 'Opera';\n version = nAgt.substring(verOffset + 6);\n if ((verOffset = nAgt.indexOf('Version')) !== -1) {\n version = nAgt.substring(verOffset + 8);\n }\n }\n else if ((verOffset = nAgt.indexOf('Edge')) !== -1) {\n browser = 'Microsoft Legacy Edge';\n version = nAgt.substring(verOffset + 5);\n }\n else if ((verOffset = nAgt.indexOf('Edg')) !== -1) {\n browser = 'Microsoft Edge';\n version = nAgt.substring(verOffset + 4);\n }\n else if ((verOffset = nAgt.indexOf('MSIE')) !== -1) {\n browser = 'Microsoft Internet Explorer';\n version = nAgt.substring(verOffset + 5);\n }\n else if ((verOffset = nAgt.indexOf('Chrome')) !== -1) {\n browser = 'Chrome';\n version = nAgt.substring(verOffset + 7);\n }\n else if ((verOffset = nAgt.indexOf('Safari')) !== -1) {\n browser = 'Safari';\n version = nAgt.substring(verOffset + 7);\n if ((verOffset = nAgt.indexOf('Version')) !== -1) {\n version = nAgt.substring(verOffset + 8);\n }\n }\n else if ((verOffset = nAgt.indexOf('Firefox')) !== -1) {\n browser = 'Firefox';\n version = nAgt.substring(verOffset + 8);\n }\n else if (nAgt.indexOf('Trident/') !== -1) {\n browser = 'Microsoft Internet Explorer';\n version = nAgt.substring(nAgt.indexOf('rv:') + 3);\n }\n else if ((nameOffset = nAgt.lastIndexOf(' ') + 1) < (verOffset = nAgt.lastIndexOf('/'))) {\n browser = nAgt.substring(nameOffset, verOffset);\n version = nAgt.substring(verOffset + 1);\n if (browser.toLowerCase() === browser.toUpperCase()) {\n browser = sWindow.navigator.appName;\n }\n }\n // Trim the version string\n if ((ix = version.indexOf(';')) !== -1) {\n version = version.substring(0, ix);\n }\n if ((ix = version.indexOf(' ')) !== -1) {\n version = version.substring(0, ix);\n }\n if ((ix = version.indexOf(')')) !== -1) {\n version = version.substring(0, ix);\n }\n let majorVersion = parseInt(version, 10);\n if (isNaN(majorVersion)) {\n version = String(parseFloat(nVer));\n majorVersion = parseInt(nVer, 10);\n }\n // Mobile detection\n const mobile = /Mobile|mini|Fennec|Android|iP(ad|od|hone)/.test(nVer);\n // Cookie detection\n let cookieEnabled = sWindow.navigator.cookieEnabled || false;\n if (typeof navigator.cookieEnabled === 'undefined' && !cookieEnabled) {\n sWindow.document.cookie = 'testcookie';\n cookieEnabled = sWindow.document.cookie.indexOf('testcookie') !== -1;\n }\n // OS detection\n let os = unknown;\n const clientStrings = [\n { s: 'Windows 10', r: /(Windows 10.0|Windows NT 10.0)/ },\n { s: 'Windows 8.1', r: /(Windows 8.1|Windows NT 6.3)/ },\n { s: 'Windows 8', r: /(Windows 8|Windows NT 6.2)/ },\n { s: 'Windows 7', r: /(Windows 7|Windows NT 6.1)/ },\n { s: 'Windows Vista', r: /Windows NT 6.0/ },\n { s: 'Windows Server 2003', r: /Windows NT 5.2/ },\n { s: 'Windows XP', r: /(Windows NT 5.1|Windows XP)/ },\n { s: 'Windows 2000', r: /(Windows NT 5.0|Windows 2000)/ },\n { s: 'Windows ME', r: /(Win 9x 4.90|Windows ME)/ },\n { s: 'Windows 98', r: /(Windows 98|Win98)/ },\n { s: 'Windows 95', r: /(Windows 95|Win95|Windows_95)/ },\n { s: 'Windows NT 4.0', r: /(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)/ },\n { s: 'Windows CE', r: /Windows CE/ },\n { s: 'Windows 3.11', r: /Win16/ },\n { s: 'Android', r: /Android/ },\n { s: 'Open BSD', r: /OpenBSD/ },\n { s: 'Sun OS', r: /SunOS/ },\n { s: 'Chrome OS', r: /CrOS/ },\n { s: 'Linux', r: /(Linux|X11(?!.*CrOS))/ },\n { s: 'iOS', r: /(iPhone|iPad|iPod)/ },\n { s: 'Mac OS X', r: /Mac OS X/ },\n { s: 'Mac OS', r: /(Mac OS|MacPPC|MacIntel|Mac_PowerPC|Macintosh)/ },\n { s: 'QNX', r: /QNX/ },\n { s: 'UNIX', r: /UNIX/ },\n { s: 'BeOS', r: /BeOS/ },\n { s: 'OS/2', r: /OS\\/2/ },\n {\n s: 'Search Bot',\n r: /(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\\/Teoma|ia_archiver)/,\n },\n ];\n // Find matching OS\n for (const client of clientStrings) {\n if (client.r.test(nAgt)) {\n os = client.s;\n break;\n }\n }\n // OS Version detection\n let osVersion = unknown;\n if (/Windows/.test(os)) {\n const matches = /Windows (.*)/.exec(os);\n if (matches && matches[1]) {\n osVersion = matches[1];\n // Handle Windows 10/11 detection with newer API if available\n if (osVersion === '10' && 'userAgentData' in sWindow.navigator) {\n const nav = navigator;\n if (nav.userAgentData) {\n nav.userAgentData\n .getHighEntropyValues(['platformVersion'])\n .then((ua) => {\n const version = parseInt(ua.platformVersion.split('.')[0], 10);\n osVersion = version < 13 ? '10' : '11';\n })\n .catch(() => {\n // ignore errors and keep osVersion as is\n });\n }\n }\n }\n os = 'Windows';\n }\n // OS version detection for Mac/Android/iOS\n switch (os) {\n case 'Mac OS':\n case 'Mac OS X':\n case 'Android': {\n const matches = /(?:Android|Mac OS|Mac OS X|MacPPC|MacIntel|Mac_PowerPC|Macintosh) ([\\.\\_\\d]+)/.exec(nAgt);\n osVersion = matches && matches[1] ? matches[1] : unknown;\n break;\n }\n case 'iOS': {\n const matches = /OS (\\d+)_(\\d+)_?(\\d+)?/.exec(nVer);\n if (matches && matches[1]) {\n osVersion = `${matches[1]}.${matches[2]}.${parseInt(matches[3] || '0', 10)}`;\n }\n break;\n }\n }\n // Return client data\n return {\n screen: screenSize,\n width,\n height,\n browser,\n browserVersion: version,\n browserMajorVersion: majorVersion,\n mobile,\n os,\n osVersion,\n cookies: cookieEnabled,\n };\n}\nexport function isObject(item) {\n const isNull = item === null;\n return Boolean(item && typeof item === 'object' && !Array.isArray(item) && !isNull);\n}\nexport function getUTCOffsetString() {\n const date = new Date();\n const offsetMinutes = date.getTimezoneOffset();\n const hours = Math.abs(Math.floor(offsetMinutes / 60));\n const minutes = Math.abs(offsetMinutes % 60);\n const sign = offsetMinutes <= 0 ? '+' : '-';\n const hoursStr = hours.toString().padStart(2, '0');\n const minutesStr = minutes.toString().padStart(2, '0');\n return `UTC${sign}${hoursStr}:${minutesStr}`;\n}\n","import { getUTCOffsetString, uaParse } from './utils.js';\nconst refKey = '$__or__initial_ref__$';\nconst distinctIdKey = '$__or__distinct_device_id__$';\nconst utmParamsKey = '$__or__utm_params__$';\nconst superPropKey = '$__or__super_properties__$';\nconst userIdKey = '$__or__user_id__$';\nconst win = 'window' in globalThis\n ? window\n : {\n navigator: { userAgent: '' },\n screen: {},\n document: {\n cookie: '',\n },\n location: { search: '' },\n };\nconst doc = 'document' in globalThis ? document : { referrer: '' };\nconst searchEngineList = [\n 'google',\n 'bing',\n 'yahoo',\n 'baidu',\n 'yandex',\n 'duckduckgo',\n 'ecosia',\n 'ask',\n 'aol',\n 'wolframalpha',\n 'startpage',\n 'swisscows',\n 'qwant',\n 'lycos',\n 'dogpile',\n 'info',\n 'teoma',\n 'webcrawler',\n 'naver',\n 'seznam',\n 'perplexity',\n];\nexport default class ConstantProperties {\n constructor(localStorage, sessionStorage) {\n this.localStorage = localStorage;\n this.sessionStorage = sessionStorage;\n this.user_id = null;\n this.setUserId = (user_id) => {\n this.user_id = user_id;\n this.sessionStorage.setItem(userIdKey, user_id ?? '');\n };\n this.resetUserId = (hard) => {\n this.user_id = null;\n if (hard) {\n this.deviceId = this.getDistinctDeviceId(true);\n }\n };\n this.getDistinctDeviceId = (force) => {\n const potentialStored = this.localStorage.getItem(distinctIdKey);\n if (potentialStored && !force) {\n return potentialStored;\n }\n else {\n const distinctId = `${Math.random().toString(36).slice(2)}-${Math.random().toString(36).slice(2)}-${Math.random().toString(36).slice(2)}`;\n this.localStorage.setItem(distinctIdKey, distinctId);\n return distinctId;\n }\n };\n this.getReferrer = () => {\n const potentialStored = this.sessionStorage.getItem(refKey);\n if (potentialStored) {\n return potentialStored;\n }\n else {\n const ref = doc.referrer;\n this.sessionStorage.setItem(refKey, ref);\n return ref;\n }\n };\n this.parseUTM = () => {\n const potentialStored = this.sessionStorage.getItem(utmParamsKey);\n if (potentialStored) {\n const obj = JSON.parse(potentialStored);\n this.utmSource = obj.utm_source;\n this.utmMedium = obj.utm_medium;\n this.utmCampaign = obj.utm_campaign;\n }\n else {\n const searchParams = new URLSearchParams(win.location.search);\n this.utmSource = searchParams.get('utm_source') || null;\n this.utmMedium = searchParams.get('utm_medium') || null;\n this.utmCampaign = searchParams.get('utm_campaign') || null;\n const obj = {\n utm_source: this.utmSource,\n utm_medium: this.utmMedium,\n utm_campaign: this.utmCampaign,\n };\n this.sessionStorage.setItem(utmParamsKey, JSON.stringify(obj));\n }\n };\n this.getSearchEngine = (ref) => {\n for (const searchEngine of searchEngineList) {\n if (ref.includes(searchEngine)) {\n return searchEngine;\n }\n }\n return null;\n };\n this.getSuperProperties = () => {\n const potentialStored = this.localStorage.getItem(superPropKey);\n if (potentialStored) {\n return JSON.parse(potentialStored);\n }\n else {\n return {};\n }\n };\n this.saveSuperProperties = (props) => {\n this.localStorage.setItem(superPropKey, JSON.stringify(props));\n };\n this.clearSuperProperties = () => {\n this.localStorage.setItem(superPropKey, JSON.stringify({}));\n };\n const { width, height, browser, browserVersion, browserMajorVersion, os, osVersion, mobile } = uaParse(win);\n const storedUserId = this.sessionStorage.getItem(userIdKey);\n if (storedUserId) {\n this.user_id = storedUserId;\n }\n this.os = os;\n this.osVersion = osVersion;\n this.browser = `${browser}`;\n this.browserVersion = `${browserVersion} (${browserMajorVersion})`;\n this.platform = mobile ? 'mobile' : 'desktop';\n this.screenHeight = height;\n this.screenWidth = width;\n this.initialReferrer = this.getReferrer();\n this.deviceId = this.getDistinctDeviceId();\n this.searchEngine = this.getSearchEngine(this.initialReferrer);\n this.parseUTM();\n }\n get all() {\n return {\n os: this.os,\n os_version: this.osVersion,\n browser: this.browser,\n browser_version: this.browserVersion,\n platform: this.platform,\n screen_height: this.screenHeight,\n screen_width: this.screenWidth,\n initial_referrer: this.initialReferrer,\n utm_source: this.utmSource,\n utm_medium: this.utmMedium,\n utm_campaign: this.utmCampaign,\n user_id: this.user_id,\n distinct_id: this.deviceId,\n sdk_edition: 'web',\n sdk_version: 'TRACKER_VERSION',\n timezone: getUTCOffsetString(),\n search_engine: this.searchEngine,\n };\n }\n get defaultPropertyKeys() {\n return Object.keys(this.all);\n }\n get distinctId() {\n return this.deviceId;\n }\n}\n","export const mutationTypes = {\n identity: 'identity',\n deleteUser: 'delete_user',\n setProperty: 'set_property',\n setPropertyOnce: 'set_property_once',\n appendProperty: 'append_property',\n appendUniqueProperty: 'append_unique_property',\n incrementProperty: 'increment_property',\n};\nexport const categories = {\n people: 'user_actions',\n events: 'events',\n};\nexport const createEvent = (category, type, timestamp, payload) => {\n if (category === categories.people) {\n return {\n category,\n data: {\n type,\n user_id: payload.user_id,\n payload: payload.properties,\n timestamp,\n },\n };\n }\n else {\n if (!payload) {\n throw new Error('Payload is required for event creation');\n }\n return {\n category,\n data: {\n name: payload.name,\n payload: payload.properties,\n timestamp,\n },\n };\n }\n};\n","import { isObject } from './utils.js';\nimport { createEvent, categories } from './types.js';\nconst reservedProps = ['properties', 'token', 'timestamp'];\nexport default class Events {\n constructor(constantProperties, getTimestamp, batcher) {\n this.constantProperties = constantProperties;\n this.getTimestamp = getTimestamp;\n this.batcher = batcher;\n this.ownProperties = {};\n /**\n * Add event to batch with option to send it immediately,\n * properties are optional and will not be saved as super prop\n * */\n this.sendEvent = (eventName, properties, options) => {\n // add properties\n const eventProps = {};\n if (properties) {\n if (!isObject(properties)) {\n throw new Error('Properties must be an object');\n }\n Object.entries(properties).forEach(([key, value]) => {\n if (!this.constantProperties.defaultPropertyKeys.includes(key)) {\n eventProps[key] = value;\n }\n });\n }\n const eventPayload = {\n name: eventName,\n properties: { ...this.ownProperties, ...eventProps },\n };\n const event = createEvent(categories.events, undefined, this.getTimestamp(), eventPayload);\n if (options?.send_immediately) {\n void this.batcher.sendImmediately(event);\n }\n else {\n this.batcher.addEvent(event);\n }\n };\n /**\n * creates super property for all events\n * */\n this.setProperty = (nameOrProperties, value) => {\n let changed = false;\n if (isObject(nameOrProperties)) {\n Object.entries(nameOrProperties).forEach(([key, val]) => {\n if (!this.constantProperties.defaultPropertyKeys.includes(key)) {\n this.ownProperties[key] = val;\n changed = true;\n }\n });\n }\n if (typeof nameOrProperties === 'string' && value !== undefined) {\n if (!this.constantProperties.defaultPropertyKeys.includes(nameOrProperties)) {\n this.ownProperties[nameOrProperties] = value;\n changed = true;\n }\n }\n if (changed) {\n this.constantProperties.saveSuperProperties(this.ownProperties);\n }\n };\n /**\n * set super property only if it doesn't exist yet\n * */\n this.setPropertiesOnce = (nameOrProperties, value) => {\n let changed = false;\n if (isObject(nameOrProperties)) {\n Object.entries(nameOrProperties).forEach(([key, val]) => {\n if (!this.ownProperties[key] && !reservedProps.includes(key)) {\n this.ownProperties[key] = val;\n changed = true;\n }\n });\n }\n if (typeof nameOrProperties === 'string' && value !== undefined) {\n if (!this.ownProperties[nameOrProperties] && !reservedProps.includes(nameOrProperties)) {\n this.ownProperties[nameOrProperties] = value;\n changed = true;\n }\n }\n if (changed) {\n this.constantProperties.saveSuperProperties(this.ownProperties);\n }\n };\n /**\n * removes properties from list of super properties\n * */\n this.unsetProperties = (properties) => {\n let changed = false;\n if (Array.isArray(properties)) {\n properties.forEach((key) => {\n if (this.ownProperties[key] && !reservedProps.includes(key)) {\n delete this.ownProperties[key];\n changed = true;\n }\n });\n }\n else if (this.ownProperties[properties] && !reservedProps.includes(properties)) {\n delete this.ownProperties[properties];\n changed = true;\n }\n if (changed) {\n this.constantProperties.saveSuperProperties(this.ownProperties);\n }\n };\n /** clears all super properties */\n this.reset = () => {\n this.ownProperties = {};\n this.constantProperties.clearSuperProperties();\n };\n /** mixpanel compatibility */\n this.register = this.setProperty;\n this.register_once = this.setPropertiesOnce;\n this.unregister = this.unsetProperties;\n this.track = this.sendEvent;\n this.ownProperties = this.constantProperties.getSuperProperties();\n }\n}\n","import { isObject } from './utils.js';\nimport { mutationTypes, categories, createEvent } from './types.js';\nexport default class People {\n constructor(constantProperties, getTimestamp, onId, batcher) {\n this.constantProperties = constantProperties;\n this.getTimestamp = getTimestamp;\n this.onId = onId;\n this.batcher = batcher;\n this.ownProperties = {};\n this.identify = (user_id, options) => {\n if (!user_id || typeof user_id !== 'string') {\n throw new Error('OR SDK: user_id (string) is required for .identify()');\n }\n // if user exists already, reset properties\n if (this.constantProperties.user_id && this.constantProperties.user_id !== user_id) {\n this.reset();\n }\n this.constantProperties.setUserId(user_id);\n if (!options?.fromTracker) {\n this.onId(user_id);\n }\n const identityEvent = createEvent(categories.people, mutationTypes.identity, this.getTimestamp(), { user_id });\n this.batcher.addEvent(identityEvent);\n };\n /** Resets user id and own properties\n *\n * !hard reset will destroy persistent device id!\n * */\n this.reset = (hard) => {\n this.constantProperties.resetUserId(hard);\n this.ownProperties = {};\n };\n /**\n * Will delete user and its data from backend, then reset all local properties\n */\n this.deleteUser = () => {\n const removedUser = this.constantProperties.user_id;\n if (!removedUser)\n return;\n this.constantProperties.setUserId(null);\n this.ownProperties = {};\n const deleteEvent = createEvent(categories.people, mutationTypes.deleteUser, undefined, {\n user_id: removedUser,\n });\n this.batcher.addEvent(deleteEvent);\n this.reset();\n };\n /**\n * set user properties, overwriting existing ones\n * */\n this.setProperties = (propertyOrObj, value) => {\n if (!propertyOrObj) {\n throw new Error('OR SDK: no user properties provided to set');\n }\n const properties = {};\n if (typeof propertyOrObj === 'string' && propertyOrObj && value) {\n properties[propertyOrObj] = value;\n }\n else if (isObject(propertyOrObj)) {\n Object.assign(properties, propertyOrObj);\n }\n else {\n throw new Error('OR SDK: invalid user properties provided to set');\n }\n Object.entries(properties).forEach(([key, value]) => {\n if (!this.constantProperties.defaultPropertyKeys.includes(key)) {\n this.ownProperties[key] = value;\n }\n });\n const setEvent = createEvent(categories.people, mutationTypes.setProperty, undefined, {\n user_id: this.user_id,\n properties,\n });\n this.batcher.addEvent(setEvent);\n };\n /**\n * Set property if it doesn't exist yet\n * */\n this.setPropertiesOnce = (properties) => {\n if (!isObject(properties)) {\n throw new Error('Properties must be an object');\n }\n Object.entries(properties).forEach(([key, value]) => {\n if (!this.constantProperties.defaultPropertyKeys.includes(key) && !this.ownProperties[key]) {\n this.ownProperties[key] = value;\n }\n });\n const setEvent = createEvent(categories.people, mutationTypes.setPropertyOnce, undefined, {\n user_id: this.user_id,\n properties,\n });\n this.batcher.addEvent(setEvent);\n };\n /**\n * Add value to property (will turn string prop into array)\n * */\n this.appendValues = (key, value) => {\n if (!this.constantProperties.defaultPropertyKeys.includes(key) && this.ownProperties[key]) {\n if (Array.isArray(this.ownProperties[key])) {\n this.ownProperties[key].push(value);\n }\n else {\n this.ownProperties[key] = [this.ownProperties[key], value];\n }\n }\n const appendEvent = createEvent(categories.people, mutationTypes.appendProperty, undefined, {\n properties: { [key]: value },\n user_id: this.user_id,\n });\n this.batcher.addEvent(appendEvent);\n };\n /**\n * Add unique values to property (will turn string prop into array)\n * */\n this.appendUniqueValues = (key, value) => {\n if (!this.ownProperties[key])\n return;\n if (Array.isArray(this.ownProperties[key])) {\n if (!this.ownProperties[key].includes(value)) {\n this.appendValues(key, value);\n }\n }\n else if (this.ownProperties[key] !== value) {\n this.appendValues(key, value);\n }\n const unionEvent = createEvent(categories.people, mutationTypes.appendUniqueProperty, undefined, {\n properties: { [key]: value },\n user_id: this.user_id,\n });\n this.batcher.addEvent(unionEvent);\n };\n /**\n * Adds value (incl. negative) to existing numerical property\n * */\n this.increment = (key, value) => {\n if (!this.ownProperties[key]) {\n this.ownProperties[key] = 0;\n }\n if (this.ownProperties[key] && typeof this.ownProperties[key] !== 'number') {\n throw new Error('OR SDK: Property must be a number to increment');\n }\n // @ts-ignore\n this.ownProperties[key] += value;\n const incrementEvent = createEvent(categories.people, mutationTypes.incrementProperty, undefined, {\n user_id: this.user_id,\n properties: { [key]: value },\n });\n this.batcher.addEvent(incrementEvent);\n };\n /** mixpanel compatibility */\n this.union = this.appendUniqueValues;\n this.set = this.setProperties;\n this.set_once = this.setPropertiesOnce;\n this.append = this.appendValues;\n this.incrementBy = this.increment;\n }\n get user_id() {\n return this.constantProperties.user_id;\n }\n}\n","import { categories } from './types';\n/**\n * Creates batches of events, then sends them at intervals.\n */\nclass Batcher {\n constructor(backendUrl, getToken, init) {\n this.backendUrl = backendUrl;\n this.getToken = getToken;\n this.init = init;\n this.autosendInterval = 5 * 1000;\n this.retryTimeout = 3 * 1000;\n this.retryLimit = 3;\n this.apiEdp = '/v1/sdk/i';\n this.batch = {\n [categories.people]: [],\n [categories.events]: [],\n };\n this.intervalId = null;\n }\n getBatches() {\n this.batch[categories.people] = this.dedupePeopleEvents();\n const finalData = { data: this.batch };\n return finalData;\n }\n addEvent(event) {\n this.batch[event.category].push(event.data);\n }\n sendImmediately(event) {\n this.sendBatch({ [event.category]: [event.data] });\n }\n /**\n *\n * Essentially we're dividing the batch by identify events and squash all same category events into one in each part,\n * taking priority to the last one\n */\n dedupePeopleEvents() {\n const peopleEvents = this.batch[categories.people];\n const finalEvents = [];\n const currentPart = [];\n for (let event of peopleEvents) {\n if (event.type === 'identity') {\n if (currentPart.length > 0) {\n finalEvents.push(...this.squashPeopleEvents(currentPart), event);\n currentPart.length = 0;\n }\n else {\n finalEvents.push(event);\n }\n }\n else {\n currentPart.push(event);\n }\n }\n if (currentPart.length > 0) {\n finalEvents.push(...this.squashPeopleEvents(currentPart));\n }\n return finalEvents;\n }\n squashPeopleEvents(events) {\n if (!events || events.length === 0) {\n return [];\n }\n const uniqueEventsByType = new Map();\n for (let event of events) {\n const prev = uniqueEventsByType.get(event.type);\n if (prev) {\n if (event.type === 'increment_property') {\n const previousValues = Object.entries(prev.payload);\n const currentValues = Object.entries(event.payload);\n const uniqueKeys = new Set([...previousValues.map(([key]) => key), ...currentValues.map(([key]) => key)]);\n const mergedPayload = {};\n uniqueKeys.forEach((key) => {\n const prevValue = typeof prev.payload[key] === 'number' ? prev.payload[key] : 0;\n const currValue = typeof event.payload[key] === 'number' ? event.payload[key] : 0;\n mergedPayload[key] = prevValue + currValue;\n });\n uniqueEventsByType.set(event.type, {\n type: event.type,\n timestamp: event.timestamp,\n payload: mergedPayload,\n });\n continue;\n }\n // merge payloads, taking priority to the latest one\n uniqueEventsByType.set(event.type, {\n type: event.type,\n timestamp: event.timestamp,\n payload: { ...(prev.payload ?? {}), ...(event.payload ?? {}) },\n });\n }\n else {\n uniqueEventsByType.set(event.type, event);\n }\n }\n return Array.from(uniqueEventsByType.values());\n }\n sendBatch(batch) {\n const sentBatch = batch;\n let attempts = 0;\n const send = () => {\n const token = this.getToken();\n if (!token) {\n return;\n }\n attempts++;\n return fetch(`${this.backendUrl}${this.apiEdp}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`,\n },\n body: JSON.stringify(sentBatch),\n })\n .then((response) => {\n if ([403, 401].includes(response.status)) {\n this.init().then(() => {\n send();\n });\n }\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n })\n .catch(() => {\n if (attempts < this.retryLimit) {\n setTimeout(() => void send(), this.retryTimeout);\n }\n });\n };\n void send();\n }\n startAutosend() {\n this.intervalId = setInterval(() => {\n this.flush();\n }, this.autosendInterval);\n }\n flush() {\n const categories = Object.keys(this.batch);\n const isEmpty = categories.every((category) => this.batch[category].length === 0);\n if (isEmpty) {\n return;\n }\n this.sendBatch(this.getBatches());\n categories.forEach((key) => {\n this.batch[key] = [];\n });\n }\n stop() {\n this.flush();\n if (this.intervalId) {\n clearInterval(this.intervalId);\n this.intervalId = null;\n }\n }\n}\nexport default Batcher;\n","import ConstantProperties from './constantProperties.js';\nimport Events from './events.js';\nimport People from './people.js';\nimport Batcher from './batcher.js';\nconst STORAGEKEY = '__or_sdk_analytics_token';\nexport default class Analytics {\n /**\n * @param localStorage Class or Object that implements Storage-like interface that stores\n * values persistently like window.localStorage or any other file-based storage\n *\n * @param sessionStorage Class or Object that implements Storage-like interface that stores values\n * on per-session basis like window.sessionStorage or any other in-memory storage\n *\n * @param getToken Function that returns token to bind events to a session\n *\n * @param getTimestamp returns current timestamp\n *\n * @param setUserId callback for people.identify\n *\n * @param standalone if true, analytics will manage its own token (instead of using with openreplay tracker session)\n * */\n constructor(options) {\n this.token = null;\n this.standalone = false;\n this._getToken = () => {\n if (this.standalone) {\n return this.token;\n }\n return this.getToken();\n };\n this._getTimestamp = () => {\n if (this.standalone) {\n return Date.now();\n }\n return this.getTimestamp();\n };\n this.init = async () => {\n if (!this.standalone) {\n this.batcher.startAutosend();\n return;\n }\n else {\n const defaultFields = this.constantProperties.all;\n const apiEdp = '/v1/sdk/start';\n const data = {\n projectKey: this.projectKey,\n defaultFields,\n };\n const resp = await fetch(apiEdp, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n if (!resp.ok) {\n throw new Error(`HTTP error! status: ${resp.status}`);\n }\n const result = await resp.json();\n if (result.token) {\n this.token = result.token;\n this.sessionStorage.setItem(STORAGEKEY, result.token);\n }\n else {\n throw new Error('No token received from server');\n }\n }\n };\n this.reset = () => {\n this.people.reset(true);\n this.events.reset();\n this.batcher.stop();\n if (this.standalone) {\n this.token = null;\n this.sessionStorage.setItem(STORAGEKEY, '');\n }\n };\n /**\n * COMPATIBILITY LAYER\n * */\n /**\n * Identify a user with an id (e.g. email, username, etc.)\n * will bind all events and properties (including device_id) to this user\n *\n * you will need to manually call people.reset() to clear the id on logout event\n * */\n this.identify = (user_id) => {\n return this.people.identify(user_id);\n };\n /**\n * Add event to batch with option to send it immediately,\n * properties are optional and will not be saved as super prop\n * */\n this.track = (eventName, properties, options) => {\n return this.events.track(eventName, properties, options);\n };\n this.sessionStorage = options.sessionStorage || sessionStorage;\n this.localStorage = options.localStorage || localStorage;\n this.backendUrl = options.ingestPoint;\n this.projectKey = options.projectKey;\n this.getToken = options.getToken || (() => '');\n this.getTimestamp = options.getTimestamp || (() => Date.now());\n this.setUserId = options.setUserId || (() => { });\n this.standalone = !options.notStandalone;\n this.token = this.sessionStorage.getItem(STORAGEKEY);\n this.constantProperties = new ConstantProperties(this.localStorage, this.sessionStorage);\n this.batcher = new Batcher(this.backendUrl, this._getToken, this.init);\n this.events = new Events(this.constantProperties, this._getTimestamp, this.batcher);\n this.people = new People(this.constantProperties, this._getTimestamp, this.setUserId, this.batcher);\n if (options.notStandalone) {\n this.init();\n }\n }\n}\n","import App from './app/index';\nexport { default as App } from './app/index.js';\nimport { UserAnonymousID, CustomEvent, CustomIssue, Incident } from './app/messages.gen.js';\nimport * as _Messages from './app/messages.gen.js';\nexport const Messages = _Messages;\nexport { SanitizeLevel } from './app/sanitizer.js';\nimport Connection from './modules/connection.js';\nimport Console from './modules/console.js';\nimport Exception, { getExceptionMessageFromEvent, getExceptionMessage, } from './modules/exception.js';\nimport Img from './modules/img.js';\nimport Input from './modules/input.js';\nimport Mouse from './modules/mouse.js';\nimport Timing from './modules/timing.js';\nimport Performance from './modules/performance.js';\nimport Scroll from './modules/scroll.js';\nimport Viewport from './modules/viewport.js';\nimport CSSRules from './modules/cssrules.js';\nimport Focus from './modules/focus.js';\nimport Fonts from './modules/fonts.js';\nimport Network from './modules/network.js';\nimport ConstructedStyleSheets from './modules/constructedStyleSheets.js';\nimport Selection from './modules/selection.js';\nimport Tabs from './modules/tabs.js';\nimport LongAnimationTask from './modules/longAnimationTask.js';\nimport WebAnimations from './modules/webAnimations.js';\nimport AnalyticsSDK from './modules/analytics/index.js';\nimport { IN_BROWSER, deprecationWarn, DOCS_HOST, inIframe } from './utils.js';\nconst DOCS_SETUP = '/en/sdk';\nfunction processOptions(obj) {\n if (obj == null) {\n console.error(`OpenReplay: invalid options argument type. Please, check documentation on ${DOCS_HOST}${DOCS_SETUP}`);\n return false;\n }\n if (typeof obj.projectKey !== 'string') {\n if (typeof obj.projectKey !== 'number') {\n if (typeof obj.projectID !== 'number') {\n // Back compatability\n console.error(`OpenReplay: projectKey is missing or wrong type (string is expected). Please, check ${DOCS_HOST}${DOCS_SETUP} for more information.`);\n return false;\n }\n else {\n obj.projectKey = obj.projectID.toString();\n deprecationWarn('`projectID` option', '`projectKey` option', DOCS_SETUP);\n }\n }\n else {\n console.warn('OpenReplay: projectKey is expected to have a string type.');\n obj.projectKey = obj.projectKey.toString();\n }\n }\n if (obj.sessionToken != null) {\n deprecationWarn('`sessionToken` option', '`sessionHash` start() option', '/');\n }\n return true;\n}\nconst canAccessTop = () => {\n try {\n return Boolean(window.top?.document);\n }\n catch {\n return false;\n }\n};\nexport default class API {\n constructor(options) {\n this.options = options;\n this.app = null;\n this.analytics = null;\n this.crossdomainMode = false;\n this.checkDoNotTrack = () => {\n return (this.options.respectDoNotTrack &&\n (navigator.doNotTrack == '1' ||\n // @ts-ignore\n window.doNotTrack == '1'));\n };\n this.signalStartIssue = (reason, missingApi) => {\n const doNotTrack = this.checkDoNotTrack();\n console.log(\"Tracker couldn't start due to:\", JSON.stringify({\n trackerVersion: 'TRACKER_VERSION',\n projectKey: this.options.projectKey,\n doNotTrack,\n reason: missingApi.length ? `missing api: ${missingApi.join(',')}` : reason,\n }));\n };\n this.restartCanvasTracking = () => {\n if (this.app === null) {\n return;\n }\n this.app.restartCanvasTracking();\n };\n this.getSessionURL = (options) => {\n if (this.app === null) {\n return undefined;\n }\n return this.app.getSessionURL(options);\n };\n this.setUserID = (id) => {\n if (typeof id === 'string' && this.app !== null) {\n this.app.session.setUserID(id);\n this.analytics?.people.identify(id, { fromTracker: true });\n }\n };\n this.identify = this.setUserID;\n this.track = this.analytics?.track;\n this.userID = (id) => {\n deprecationWarn(\"'userID' method\", \"'setUserID' method\", '/');\n this.setUserID(id);\n };\n this.handleError = (e, metadata = {}) => {\n if (this.app === null) {\n return;\n }\n if (e instanceof Error) {\n const msg = getExceptionMessage(e, [], metadata);\n this.app.send(msg);\n }\n else if (e instanceof ErrorEvent ||\n ('PromiseRejectionEvent' in window && e instanceof PromiseRejectionEvent)) {\n const msg = getExceptionMessageFromEvent(e, undefined, metadata);\n if (msg != null) {\n this.app.send(msg);\n }\n }\n };\n this.incident = (options) => {\n if (this.app === null) {\n return;\n }\n this.app.send(Incident(options.label ?? '', options.startTime, options.endTime ?? options.startTime));\n };\n this.analyticsToken = null;\n /**\n * Use custom token for analytics events without session recording\n * */\n this.setAnalyticsToken = (token) => {\n this.analyticsToken = token;\n };\n this.getAnalyticsToken = () => {\n if (this.analyticsToken) {\n return this.analyticsToken;\n }\n else {\n return this.app?.session.getSessionToken() ?? '';\n }\n };\n this.crossdomainMode = Boolean(inIframe() && options.crossdomain?.enabled);\n if (!IN_BROWSER || !processOptions(options)) {\n return;\n }\n if (window.__OPENREPLAY__ ||\n (!this.crossdomainMode && inIframe() && canAccessTop() && window.top.__OPENREPLAY__)) {\n console.error('OpenReplay: one tracker instance has been initialised already');\n return;\n }\n if (!options.__DISABLE_SECURE_MODE && location.protocol !== 'https:') {\n console.error('OpenReplay: Your website must be publicly accessible and running on SSL in order for OpenReplay to properly capture and replay the user session. You can disable this check by setting `__DISABLE_SECURE_MODE` option to `true` if you are testing in localhost. Keep in mind, that asset files on a local machine are not available to the outside world. This might affect tracking if you use css files.');\n return;\n }\n const doNotTrack = this.checkDoNotTrack();\n const failReason = [];\n const conditions = [\n 'Map',\n 'Set',\n 'MutationObserver',\n 'performance',\n 'timing',\n 'startsWith',\n 'Blob',\n 'Worker',\n ];\n if (doNotTrack) {\n failReason.push('doNotTrack');\n }\n else {\n for (const condition of conditions) {\n if (condition === 'timing') {\n if ('performance' in window && !(condition in performance)) {\n failReason.push(condition);\n break;\n }\n }\n else if (condition === 'startsWith') {\n if (!(condition in String.prototype)) {\n failReason.push(condition);\n break;\n }\n }\n else {\n if (!(condition in window)) {\n failReason.push(condition);\n break;\n }\n }\n }\n }\n if (failReason.length > 0) {\n const missingApi = failReason.join(',');\n console.error(`OpenReplay: browser doesn't support API required for tracking or doNotTrack is set to 1. Reason: ${missingApi}`);\n this.signalStartIssue('missing_api', failReason);\n return;\n }\n const app = new App(options.projectKey, options.sessionToken, options, this.signalStartIssue, this.crossdomainMode);\n this.app = app;\n if (options.projectKey && options.analytics?.active) {\n let isSaas = false;\n if (!options.ingestPoint) {\n isSaas = true;\n }\n if (options.ingestPoint) {\n const saasHost = 'api.openreplay.com';\n const urlObj = new URL(options.ingestPoint);\n if (urlObj.hostname === saasHost) {\n isSaas = true;\n }\n }\n const defaultEdp = 'https://api.openreplay.com/ingest';\n this.analytics = new AnalyticsSDK({\n localStorage: options.localStorage ?? localStorage,\n sessionStorage: options.sessionStorage ?? sessionStorage,\n getToken: () => this.getAnalyticsToken(),\n getTimestamp: () => this.app?.timestamp() ?? Date.now(),\n setUserId: (id) => {\n this.app?.session.setUserID(id);\n },\n notStandalone: true,\n ingestPoint: isSaas\n ? defaultEdp\n : (options.analytics?.ingestPoint ?? options.ingestPoint ?? defaultEdp),\n projectKey: options.projectKey,\n });\n }\n if (!this.crossdomainMode) {\n // no need to send iframe viewport data since its a node for us\n Viewport(app, options.urls);\n // calculated in main window\n Connection(app);\n // while we can calculate it here, trying to compute it for all parts is hard\n Performance(app, options);\n // no tabs in iframes yet\n Tabs(app);\n }\n Mouse(app, options.mouse);\n // inside iframe, we ignore viewport scroll\n Scroll(app, this.crossdomainMode);\n CSSRules(app, options.css);\n ConstructedStyleSheets(app);\n Console(app, options);\n Exception(app, options);\n Img(app);\n Input(app, options);\n Timing(app, options);\n LongAnimationTask(app, options);\n Focus(app);\n Fonts(app);\n const skipNetwork = options.network?.disabled;\n if (!skipNetwork) {\n Network(app, options.network);\n }\n Selection(app);\n WebAnimations(app, options.webAnimations);\n window.__OPENREPLAY__ = this;\n const wOpen = window.open;\n if (options.autoResetOnWindowOpen || options.resetTabOnWindowOpen) {\n app.attachStartCallback(() => {\n const tabId = app.getTabId();\n const sessStorage = app.sessionStorage ?? window.sessionStorage;\n window.open = function (...args) {\n if (options.autoResetOnWindowOpen) {\n app.resetNextPageSession(true);\n }\n if (options.resetTabOnWindowOpen) {\n sessStorage.removeItem(options.session_tabid_key || '__openreplay_tabid');\n }\n app.resetNextPageSession(false);\n sessStorage.setItem(options.session_tabid_key || '__openreplay_tabid', tabId);\n return wOpen.call(window, ...args);\n };\n });\n app.attachStopCallback(() => {\n window.open = wOpen;\n });\n }\n }\n use(fn) {\n return fn(this.app, this.options);\n }\n isActive() {\n if (this.app === null) {\n return false;\n }\n return this.app.active();\n }\n /**\n * Creates a named hook that expects event name, data string and msg direction (up/down),\n * it will skip any message bigger than 5 mb or event name bigger than 255 symbols\n * msg direction is \"down\" (incoming) by default\n *\n * @returns {(msgType: string, data: string, dir: 'up' | 'down') => void}\n * */\n trackWs(channelName) {\n if (this.app === null) {\n return;\n }\n return this.app.trackWs(channelName);\n }\n start(startOpts) {\n if (this.browserEnvCheck()) {\n if (this.app === null) {\n return Promise.reject(\"Browser doesn't support required api, or doNotTrack is active.\");\n }\n if (startOpts?.userID) {\n this.app.session.setUserID(startOpts.userID);\n this.analytics?.people.identify(startOpts.userID, { fromTracker: true });\n }\n return this.app.start(startOpts);\n }\n else {\n return Promise.reject('Trying to start not in browser.');\n }\n }\n browserEnvCheck() {\n if (!IN_BROWSER) {\n console.error(`OpenReplay: you are trying to start Tracker on a node.js environment. If you want to use OpenReplay with SSR, please, use componentDidMount or useEffect API for placing the \\`tracker.start()\\` line. Check documentation on ${DOCS_HOST}${DOCS_SETUP}`);\n return false;\n }\n return true;\n }\n /**\n * start buffering messages without starting the actual session, which gives user 30 seconds to \"activate\" and record\n * session by calling start() on conditional trigger and we will then send buffered batch, so it won't get lost\n * */\n coldStart(startOpts, conditional) {\n if (this.browserEnvCheck()) {\n if (this.app === null) {\n return Promise.reject('Tracker not initialized');\n }\n void this.app.coldStart(startOpts, conditional);\n }\n else {\n return Promise.reject('Trying to start not in browser.');\n }\n }\n /**\n * Starts offline session recording. Keep in mind that only user device time will be used for timestamps.\n * (no backend delay sync)\n *\n * @param {Object} startOpts - options for session start, same as .start()\n * @param {Function} onSessionSent - callback that will be called once session is fully sent\n * @returns methods to manipulate buffer:\n *\n * saveBuffer - to save it in localStorage\n *\n * getBuffer - returns current buffer\n *\n * setBuffer - replaces current buffer with given\n * */\n startOfflineRecording(startOpts, onSessionSent) {\n if (this.browserEnvCheck()) {\n if (this.app === null) {\n return Promise.reject('Tracker not initialized');\n }\n return this.app.offlineRecording(startOpts, onSessionSent);\n }\n else {\n return Promise.reject('Trying to start not in browser.');\n }\n }\n /**\n * Uploads the stored session buffer to backend\n * @returns promise that resolves once messages are loaded, it has to be awaited\n * so the session can be uploaded properly\n * @resolve - if messages were loaded into service worker successfully\n * @reject {string} - error message\n * */\n uploadOfflineRecording() {\n if (this.app === null) {\n return;\n }\n return this.app.uploadOfflineRecording();\n }\n stop() {\n if (this.app === null) {\n return;\n }\n this.app.stop();\n return this.app.session.getSessionHash();\n }\n forceFlushBatch() {\n if (this.app === null) {\n return;\n }\n this.app.forceFlushBatch();\n }\n getSessionToken() {\n if (this.app === null) {\n return null;\n }\n return this.app.getSessionToken();\n }\n getSessionInfo() {\n if (this.app === null) {\n return null;\n }\n return this.app.session.getInfo();\n }\n getSessionID() {\n if (this.app === null) {\n return null;\n }\n return this.app.getSessionID();\n }\n getTabId() {\n if (this.app === null) {\n return null;\n }\n return this.app.getTabId();\n }\n sessionID() {\n deprecationWarn(\"'sessionID' method\", \"'getSessionID' method\", '/');\n return this.getSessionID();\n }\n setUserAnonymousID(id) {\n if (typeof id === 'string' && this.app !== null) {\n this.app.send(UserAnonymousID(id));\n }\n }\n userAnonymousID(id) {\n deprecationWarn(\"'userAnonymousID' method\", \"'setUserAnonymousID' method\", '/');\n this.setUserAnonymousID(id);\n }\n setMetadata(key, value) {\n if (typeof key === 'string' && typeof value === 'string' && this.app !== null) {\n this.app.session.setMetadata(key, value);\n }\n }\n metadata(key, value) {\n deprecationWarn(\"'metadata' method\", \"'setMetadata' method\", '/');\n this.setMetadata(key, value);\n }\n event(key, payload = null, issue = false) {\n if (typeof key === 'string' && this.app !== null) {\n if (issue) {\n return this.issue(key, payload);\n }\n else {\n if (!payload || typeof payload === 'string') {\n return this.app.send(CustomEvent(key, payload));\n }\n try {\n if ('or_timestamp' in payload) {\n const startTs = this.getSessionInfo()?.timestamp ?? 0;\n const diff = payload.or_timestamp - startTs;\n if (diff < 0) {\n console.error(`OpenReplay: event ${key} has or_timestamp (${payload.or_timestamp}) before session start (${startTs}). It will be ignored.`);\n }\n }\n payload = JSON.stringify(payload);\n }\n catch (_) { }\n this.app.send(CustomEvent(key, payload));\n }\n }\n }\n issue(key, payload = null) {\n if (typeof key === 'string' && this.app !== null) {\n try {\n payload = JSON.stringify(payload);\n }\n catch (e) {\n return;\n }\n this.app.send(CustomIssue(key, payload));\n }\n }\n}\n","import Tracker from './index.js';\nimport { IN_BROWSER } from './utils.js';\nclass TrackerSingleton {\n constructor() {\n this.instance = null;\n this.isConfigured = false;\n this.identify = this.setUserID;\n this.track = (eventName, properties, options) => {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return;\n }\n this.instance.track?.(eventName, properties);\n };\n }\n /**\n * Call this method once to create tracker configuration\n * @param options {Object} Check available options:\n * https://docs.openreplay.com/en/sdk/constructor/#initialization-options\n */\n configure(options) {\n if (!IN_BROWSER) {\n return;\n }\n if (this.isConfigured) {\n console.warn('OpenReplay: Tracker is already configured. You should only call configure once.');\n return;\n }\n if (!options.projectKey) {\n console.error('OpenReplay: Missing required projectKey option');\n return;\n }\n this.instance = new Tracker(options);\n this.isConfigured = true;\n }\n get options() {\n return this.instance?.options || null;\n }\n start(startOpts) {\n if (!IN_BROWSER) {\n return Promise.resolve({ success: false, reason: 'Not in browser environment' });\n }\n if (!this.ensureConfigured()) {\n return Promise.resolve({ success: false, reason: 'Tracker not configured' });\n }\n return (this.instance?.start(startOpts) ||\n Promise.resolve({ success: false, reason: 'Tracker not initialized' }));\n }\n /**\n * Stop the session and return sessionHash\n * (which can be used to stitch sessions together)\n * */\n stop() {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return;\n }\n return this.instance.stop();\n }\n setUserID(id) {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return;\n }\n this.instance.setUserID(id);\n }\n get analytics() {\n if (this.instance?.analytics) {\n return this.instance.analytics;\n }\n else {\n return null;\n }\n }\n ;\n /**\n * Set metadata for the current session\n *\n * Make sure that its configured in project settings first\n *\n * Read more: https://docs.openreplay.com/en/installation/metadata/\n */\n setMetadata(key, value) {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return;\n }\n this.instance.setMetadata(key, value);\n }\n /**\n * Returns full URL for the current session\n */\n getSessionURL(options) {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return;\n }\n return this.instance.getSessionURL(options);\n }\n getSessionID() {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return null;\n }\n return this.instance.getSessionID();\n }\n getSessionToken() {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return null;\n }\n return this.instance.getSessionToken();\n }\n event(key, payload = null, issue = false) {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return;\n }\n this.instance.event(key, payload, issue);\n }\n issue(key, payload = null) {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return;\n }\n this.instance.issue(key, payload);\n }\n handleError(e, metadata = {}) {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return;\n }\n this.instance.handleError(e, metadata);\n }\n restartCanvasTracking() {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return;\n }\n this.instance.restartCanvasTracking();\n }\n /**\n * Set the anonymous user ID\n */\n setUserAnonymousID(id) {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return;\n }\n this.instance.setUserAnonymousID(id);\n }\n /**\n * Check if the tracker is active\n */\n isActive() {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return false;\n }\n return this.instance.isActive();\n }\n /**\n * Get the underlying Tracker instance\n *\n * Use when you need access to methods not exposed by the singleton\n */\n getInstance() {\n if (!this.ensureConfigured() || !IN_BROWSER) {\n return null;\n }\n return this.instance;\n }\n /**\n * start buffering messages without starting the actual session, which gives user 30 seconds to \"activate\" and record\n * session by calling start() on conditional trigger and we will then send buffered batch, so it won't get lost\n * */\n coldStart(startOpts, conditional) {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return;\n }\n return this.instance.coldStart(startOpts, conditional);\n }\n /**\n * Creates a named hook that expects event name, data string and msg direction (up/down),\n * it will skip any message bigger than 5 mb or event name bigger than 255 symbols\n * msg direction is \"down\" (incoming) by default\n *\n * @returns {(msgType: string, data: string, dir: 'up' | 'down') => void}\n * */\n trackWs(channelName) {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return () => { }; // Return no-op function\n }\n return this.instance.trackWs(channelName);\n }\n ensureConfigured() {\n if (!this.isConfigured && IN_BROWSER) {\n console.warn('OpenReplay: Tracker must be configured before use. Call tracker.configure({projectKey: \"your-project-key\"}) first.');\n return false;\n }\n return true;\n }\n use(fn) {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return fn(null);\n }\n return this.instance.use(fn);\n }\n /**\n * Starts offline session recording. Keep in mind that only user device time will be used for timestamps.\n * (no backend delay sync)\n *\n * @param {Object} startOpts - options for session start, same as .start()\n * @param {Function} onSessionSent - callback that will be called once session is fully sent\n * @returns methods to manipulate buffer:\n *\n * saveBuffer - to save it in localStorage\n *\n * getBuffer - returns current buffer\n *\n * setBuffer - replaces current buffer with given\n * */\n startOfflineRecording(...args) {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return;\n }\n return this.instance.startOfflineRecording(...args);\n }\n /**\n * Uploads the stored session buffer to backend\n * @returns promise that resolves once messages are loaded, it has to be awaited\n * so the session can be uploaded properly\n * @resolve - if messages were loaded into service worker successfully\n * @reject {string} - error message\n * */\n uploadOfflineRecording() {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return;\n }\n return this.instance.uploadOfflineRecording();\n }\n forceFlushBatch() {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return;\n }\n return this.instance.forceFlushBatch();\n }\n getSessionInfo() {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return null;\n }\n return this.instance.getSessionInfo();\n }\n getTabId() {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return null;\n }\n return this.instance.getTabId();\n }\n}\nconst tracker = new TrackerSingleton();\nexport default tracker;\n"],"names":["LongAnimationTask","defaults","wrap","Observer","parse","onCLS","onINP","onLCP","onTTFB","isObject","AnalyticsSDK","Selection","WebAnimations","Tracker"],"mappings":"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","x_google_ignoreList":[25,26,31,39,40,41,42,43,44,45,46]}
|
|
1
|
+
{"version":3,"file":"entry.js","sources":["../../build/main/modules/attributeSender.js","../../build/main/modules/conditionsManager.js","../../build/main/utils.js","../../build/main/app/messages.gen.js","../../build/main/modules/performance.js","../../build/main/modules/tagWatcher.js","../../build/main/app/guards.js","../../build/main/app/canvas.js","../../build/main/app/logger.js","../../build/main/app/nodes/maintainer.js","../../build/main/app/nodes/idSeq.js","../../build/main/app/nodes/index.js","../../build/main/app/observer/cssInliner.js","../../build/main/modules/constructedStyleSheets.js","../../build/main/app/observer/observer.js","../../build/main/app/observer/iframe_observer.js","../../build/main/app/observer/shadow_root_observer.js","../../build/main/app/observer/iframe_offsets.js","../../build/main/app/observer/top_observer.js","../../build/main/app/sanitizer.js","../../build/main/app/session.js","../../build/main/app/ticker.js","../../build/main/app/index.js","../../build/main/modules/connection.js","../../build/main/modules/console.js","../../../node_modules/error-stack-parser-es/dist/lite.mjs","../../../node_modules/error-stack-parser-es/dist/index.mjs","../../build/main/modules/exception.js","../../build/main/modules/img.js","../../build/main/modules/input.js","../../build/main/modules/mouse.js","../../../node_modules/web-vitals/dist/web-vitals.js","../../build/main/modules/timing.js","../../build/main/modules/scroll.js","../../build/main/modules/viewport.js","../../build/main/modules/cssrules.js","../../build/main/modules/focus.js","../../build/main/modules/fonts.js","../../build/main/modules/axiosSpy.js","../../../node_modules/@openreplay/network-proxy/dist/sanitizers.js","../../../node_modules/@openreplay/network-proxy/dist/networkMessage.js","../../../node_modules/@openreplay/network-proxy/dist/utils.js","../../../node_modules/@openreplay/network-proxy/dist/beaconProxy.js","../../../node_modules/@openreplay/network-proxy/dist/fetchProxy.js","../../../node_modules/@openreplay/network-proxy/dist/types.js","../../../node_modules/@openreplay/network-proxy/dist/xhrProxy.js","../../../node_modules/@openreplay/network-proxy/dist/index.js","../../build/main/modules/network.js","../../build/main/modules/selection.js","../../build/main/modules/tabs.js","../../build/main/modules/longAnimationTask.js","../../build/main/modules/webAnimations.js","../../build/main/modules/analytics/utils.js","../../build/main/modules/analytics/constantProperties.js","../../build/main/modules/analytics/types.js","../../build/main/modules/analytics/events.js","../../build/main/modules/analytics/people.js","../../build/main/modules/analytics/batcher.js","../../build/main/modules/analytics/index.js","../../build/main/index.js","../../build/main/singleton.js"],"sourcesContent":["export class StringDictionary {\n constructor() {\n this.lastTs = 0;\n this.lastSuffix = 1;\n /** backwards dictionary of\n * [repeated str:key]\n * */\n this.backDict = {};\n this.getKey = (str) => {\n let isNew = false;\n // avoiding potential native object properties\n const safeKey = `__${str}`;\n if (!this.backDict[safeKey]) {\n isNew = true;\n // shaving the first 2 digits of the timestamp (since they are irrelevant for next millennia)\n const shavedTs = Date.now() % 10 ** (13 - 2);\n let id = shavedTs;\n if (id === this.lastTs) {\n id = id * 10000 + this.lastSuffix;\n this.lastSuffix += 1;\n }\n else {\n this.lastSuffix = 1;\n }\n this.backDict[safeKey] = id;\n this.lastTs = shavedTs;\n }\n return [this.backDict[safeKey], isNew];\n };\n }\n}\nexport default class AttributeSender {\n constructor(options) {\n this.sendSetAttribute = (id, name, value) => {\n if (this.isDictDisabled) {\n const msg = [12 /* Type.SetNodeAttribute */, id, name, value];\n return this.app.send(msg);\n }\n else {\n const message = [\n 35 /* Type.SetNodeAttributeDictGlobal */,\n id,\n this.applyDict(name),\n this.applyDict(value),\n ];\n return this.app.send(message);\n }\n };\n this.app = options.app;\n this.isDictDisabled = options.isDictDisabled;\n this.dict = new StringDictionary();\n }\n applyDict(str) {\n const [key, isNew] = this.dict.getKey(str);\n if (isNew) {\n this.app.send([34 /* Type.StringDictGlobal */, key, str]);\n }\n return key;\n }\n clear() {\n this.dict = new StringDictionary();\n }\n}\n","export default class ConditionsManager {\n constructor(app, startParams) {\n this.app = app;\n this.startParams = startParams;\n this.conditions = [];\n this.hasStarted = false;\n this.createConditionFromFilter = (filter) => {\n const resultCondition = mapCondition(filter);\n if (resultCondition.type) {\n return resultCondition;\n }\n };\n this.durationInt = null;\n }\n setConditions(conditions) {\n this.conditions = conditions;\n }\n async fetchConditions(projectId, token) {\n try {\n const r = await fetch(`${this.app.options.ingestPoint}/v1/web/conditions/${projectId}`, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${token}`,\n },\n });\n const { conditions } = (await r.json());\n const mappedConditions = [];\n conditions.forEach((c) => {\n const filters = c.filters;\n filters.forEach((filter) => {\n let cond;\n if (filter.type === 'fetch') {\n cond = {\n type: 'network_request',\n subConditions: [],\n name: c.name,\n };\n filter.filters.forEach((f) => {\n const subCond = this.createConditionFromFilter(f);\n if (subCond) {\n ;\n cond.subConditions.push(subCond);\n }\n });\n }\n else {\n cond = this.createConditionFromFilter(filter);\n }\n if (cond) {\n if (cond.type === 'session_duration') {\n this.processDuration(cond.value[0], c.name);\n }\n mappedConditions.push({ ...cond, name: c.name });\n }\n });\n });\n this.conditions = mappedConditions;\n }\n catch (e) {\n this.app.debug.error('Critical: cannot fetch start conditions');\n }\n }\n trigger(conditionName) {\n if (this.hasStarted)\n return;\n try {\n this.hasStarted = true;\n void this.app.start(this.startParams, undefined, conditionName);\n }\n catch (e) {\n this.app.debug.error(e);\n }\n }\n processMessage(message) {\n if (this.hasStarted)\n return;\n switch (message[0]) {\n case 78 /* Type.JSException */:\n this.jsExceptionEvent(message);\n break;\n case 27 /* Type.CustomEvent */:\n this.customEvent(message);\n break;\n case 68 /* Type.MouseClick */:\n this.clickEvent(message);\n break;\n case 122 /* Type.SetPageLocation */:\n this.pageLocationEvent(message);\n break;\n case 83 /* Type.NetworkRequest */:\n this.networkRequest(message);\n break;\n default:\n break;\n }\n }\n processFlags(flag) {\n const flagConds = this.conditions.filter((c) => c.type === 'feature_flag');\n if (flagConds.length) {\n flagConds.forEach((flagCond) => {\n const operator = operators[flagCond.operator];\n if (operator && flag.find((f) => operator(f.key, flagCond.value))) {\n this.trigger(flagCond.name);\n }\n });\n }\n }\n processDuration(durationMs, condName) {\n this.durationInt = setInterval(() => {\n const sessionLength = performance.now();\n if (sessionLength > durationMs) {\n this.trigger(condName);\n }\n }, 1000);\n this.app.attachStopCallback(() => {\n if (this.durationInt) {\n clearInterval(this.durationInt);\n }\n });\n }\n networkRequest(message) {\n // method - 2, url - 3, status - 6, duration - 8\n const reqConds = this.conditions.filter((c) => c.type === 'network_request');\n if (!reqConds.length)\n return;\n reqConds.forEach((reqCond) => {\n const validSubConditions = reqCond.subConditions.filter((c) => c.operator !== 'isAny');\n if (validSubConditions.length) {\n const allPass = validSubConditions.every((subCond) => {\n let value;\n switch (subCond.key) {\n case 'url':\n value = message[3];\n break;\n case 'status':\n value = message[6];\n break;\n case 'method':\n value = message[2];\n break;\n case 'duration':\n value = message[8];\n break;\n default:\n break;\n }\n const operator = operators[subCond.operator];\n // @ts-ignore\n if (operator && operator(value, subCond.value)) {\n return true;\n }\n });\n if (allPass) {\n this.trigger(reqCond.name);\n }\n }\n else if (validSubConditions.length === 0 && reqCond.subConditions.length) {\n this.trigger(reqCond.name);\n }\n });\n }\n customEvent(message) {\n // name - 1, payload - 2\n const evConds = this.conditions.filter((c) => c.type === 'custom_event');\n if (evConds.length) {\n evConds.forEach((evCond) => {\n const operator = operators[evCond.operator];\n if (operator &&\n (operator(message[1], evCond.value) || operator(message[2], evCond.value))) {\n this.trigger(evCond.name);\n }\n });\n }\n }\n clickEvent(message) {\n // label - 3, selector - 4\n const clickCond = this.conditions.filter((c) => c.type === 'click');\n if (clickCond.length) {\n clickCond.forEach((click) => {\n const operator = operators[click.operator];\n if (operator && (operator(message[3], click.value) || operator(message[4], click.value))) {\n this.trigger(click.name);\n }\n });\n }\n }\n pageLocationEvent(message) {\n // url - 1\n const urlConds = this.conditions.filter((c) => c.type === 'visited_url');\n if (urlConds) {\n urlConds.forEach((urlCond) => {\n const operator = operators[urlCond.operator];\n if (operator && operator(message[1], urlCond.value)) {\n this.trigger(urlCond.name);\n }\n });\n }\n }\n jsExceptionEvent(message) {\n // name - 1, message - 2, payload - 3\n const testedValues = [message[1], message[2], message[3]];\n const exceptionConds = this.conditions.filter((c) => c.type === 'exception');\n if (exceptionConds) {\n exceptionConds.forEach((exceptionCond) => {\n const operator = operators[exceptionCond.operator];\n if (operator && testedValues.some((val) => operator(val, exceptionCond.value))) {\n this.trigger(exceptionCond.name);\n }\n });\n }\n }\n}\nconst operators = {\n is: (val, target) => target.some((t) => val.includes(t)),\n isAny: () => true,\n isNot: (val, target) => !target.some((t) => val.includes(t)),\n contains: (val, target) => target.some((t) => val.includes(t)),\n notContains: (val, target) => !target.some((t) => val.includes(t)),\n startsWith: (val, target) => target.some((t) => val.startsWith(t)),\n endsWith: (val, target) => target.some((t) => val.endsWith(t)),\n greaterThan: (val, target) => val > target,\n greaterOrEqual: (val, target) => val >= target,\n lessOrEqual: (val, target) => val <= target,\n lessThan: (val, target) => val < target,\n};\nconst mapCondition = (condition) => {\n const opMap = {\n on: 'is',\n notOn: 'isNot',\n '\\u003e': 'greaterThan',\n '\\u003c': 'lessThan',\n '\\u003d': 'is',\n '\\u003c=': 'lessOrEqual',\n '\\u003e=': 'greaterOrEqual',\n };\n const mapOperator = (operator) => {\n const keys = Object.keys(opMap);\n // @ts-ignore\n if (keys.includes(operator))\n return opMap[operator];\n };\n let con = {\n type: '',\n operator: '',\n value: condition.value,\n key: '',\n };\n switch (condition.type) {\n case 'click':\n con = {\n type: 'click',\n operator: mapOperator(condition.operator),\n value: condition.value,\n key: '',\n };\n break;\n case 'location':\n con = {\n type: 'visited_url',\n // @ts-ignore\n operator: condition.operator,\n value: condition.value,\n key: '',\n };\n break;\n case 'custom':\n con = {\n type: 'custom_event',\n // @ts-ignore\n operator: condition.operator,\n value: condition.value,\n key: '',\n };\n break;\n case 'metadata':\n con = {\n // @ts-ignore\n type: condition.source === 'featureFlag' ? 'feature_flag' : condition.type,\n // @ts-ignore\n operator: condition.operator,\n value: condition.value,\n key: '',\n };\n break;\n case 'error':\n con = {\n type: 'exception',\n // @ts-ignore\n operator: condition.operator,\n value: condition.value,\n key: '',\n };\n break;\n case 'duration':\n con = {\n type: 'session_duration',\n // @ts-ignore\n value: condition.value,\n key: '',\n operator: 'is',\n };\n break;\n case 'fetchUrl':\n con = {\n type: 'network_request',\n key: 'url',\n operator: condition.operator,\n value: condition.value,\n };\n break;\n case 'fetchStatusCode':\n con = {\n type: 'network_request',\n key: 'status',\n operator: mapOperator(condition.operator),\n value: condition.value,\n };\n break;\n case 'fetchMethod':\n con = {\n type: 'network_request',\n key: 'method',\n operator: mapOperator(condition.operator),\n value: condition.value,\n };\n break;\n case 'fetchDuration':\n con = {\n type: 'network_request',\n key: 'duration',\n operator: mapOperator(condition.operator),\n value: condition.value,\n };\n break;\n }\n // @ts-ignore\n return con;\n};\n","const DEPRECATED_ATTRS = { htmlmasked: 'hidden', masked: 'obscured' };\nexport const IN_BROWSER = !(typeof window === 'undefined');\nexport const IS_FIREFOX = IN_BROWSER && navigator.userAgent.match(/firefox|fxios/i);\nexport const MAX_STR_LEN = 1e5;\n// Buggy to use `performance.timeOrigin || performance.timing.navigationStart`\n// https://github.com/mdn/content/issues/4713\n// Maybe move to timer/ticker\nlet timeOrigin = IN_BROWSER ? Date.now() - performance.now() : 0;\nexport function adjustTimeOrigin() {\n timeOrigin = Date.now() - performance.now();\n}\nexport function getTimeOrigin() {\n return timeOrigin;\n}\nexport const now = IN_BROWSER && !!performance.now\n ? () => Math.round(performance.now() + timeOrigin)\n : () => Date.now();\nexport const stars = 'repeat' in String.prototype\n ? (str) => '*'.repeat(str.length)\n : (str) => str.replace(/./g, '*');\nexport function normSpaces(str) {\n return str ? str.trim().replace(/\\s+/g, ' ') : '';\n}\n// isAbsoluteUrl regexp: /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url)\nexport function isURL(s) {\n return s.startsWith('https://') || s.startsWith('http://');\n}\n// TODO: JOIN IT WITH LOGGER somehow (use logging decorators?); Don't forget about index.js loggin when there is no logger instance.\nexport const DOCS_HOST = 'https://docs.openreplay.com';\nconst warnedFeatures = {};\nexport function deprecationWarn(nameOfFeature, useInstead, docsPath = '/') {\n if (warnedFeatures[nameOfFeature]) {\n return;\n }\n console.warn(`OpenReplay: ${nameOfFeature} is deprecated. ${useInstead ? `Please, use ${useInstead} instead.` : ''} Visit ${DOCS_HOST}${docsPath} for more information.`);\n warnedFeatures[nameOfFeature] = true;\n}\nexport function getLabelAttribute(e) {\n let value = e.getAttribute('data-openreplay-label');\n if (value !== null) {\n return value;\n }\n value = e.getAttribute('data-asayer-label');\n if (value !== null) {\n deprecationWarn('\"data-asayer-label\" attribute', '\"data-openreplay-label\" attribute', '/');\n }\n return value;\n}\nexport function hasOpenreplayAttribute(e, attr) {\n const newName = `data-openreplay-${attr}`;\n if (e.hasAttribute(newName)) {\n // @ts-ignore\n if (DEPRECATED_ATTRS[attr]) {\n deprecationWarn(`\"${newName}\" attribute`, \n // @ts-ignore\n `\"${DEPRECATED_ATTRS[attr]}\" attribute`, '/en/sdk/sanitize-data');\n }\n return true;\n }\n return false;\n}\n/**\n * checks if iframe is accessible\n **/\nexport function canAccessIframe(iframe) {\n try {\n return Boolean(iframe.contentDocument);\n }\n catch (e) {\n return false;\n }\n}\nexport function canAccessTarget(target) {\n try {\n if (target instanceof HTMLIFrameElement) {\n void target.contentDocument;\n }\n else if (target instanceof Window) {\n void target.document;\n }\n else if (target instanceof Document) {\n void target.defaultView;\n }\n else if ('nodeType' in target) {\n void target.nodeType;\n }\n else if ('addEventListener' in target) {\n void target.addEventListener;\n }\n return true;\n }\n catch (e) {\n if (e instanceof DOMException && e.name === 'SecurityError') {\n return false;\n }\n }\n return true;\n}\nfunction dec2hex(dec) {\n return dec.toString(16).padStart(2, '0');\n}\nexport function generateRandomId(len) {\n const arr = new Uint8Array((len || 40) / 2);\n // msCrypto = IE11\n // @ts-ignore\n const safeCrypto = window.crypto || window.msCrypto;\n if (safeCrypto) {\n safeCrypto.getRandomValues(arr);\n return Array.from(arr, dec2hex).join('');\n }\n else {\n return Array.from({ length: len || 40 }, () => dec2hex(Math.floor(Math.random() * 16))).join('');\n }\n}\nexport function inIframe() {\n try {\n return window.self && window.top && window.self !== window.top;\n }\n catch (e) {\n return true;\n }\n}\n/**\n * Because angular devs decided that its a good idea to override a browser apis\n * we need to use this to achieve safe behavior\n * */\nexport function ngSafeBrowserMethod(method) {\n // @ts-ignore\n return window.Zone && '__symbol__' in window.Zone\n ? // @ts-ignore\n window['Zone']['__symbol__'](method)\n : method;\n}\nexport function createMutationObserver(cb, forceNgOff) {\n if (!forceNgOff) {\n const mObserver = ngSafeBrowserMethod('MutationObserver');\n return new window[mObserver](cb);\n }\n else {\n return new MutationObserver(cb);\n }\n}\nexport function createEventListener(target, event, cb, capture, forceNgOff) {\n // we need to check if target is crossorigin frame or no and if we can access it\n if (!canAccessTarget(target)) {\n return;\n }\n let safeAddEventListener = 'addEventListener';\n if (!forceNgOff) {\n safeAddEventListener = ngSafeBrowserMethod('addEventListener');\n }\n try {\n // parent has angular, but child frame don't\n if (target[safeAddEventListener]) {\n target[safeAddEventListener](event, cb, capture);\n }\n else {\n // @ts-ignore\n target.addEventListener(event, cb, capture);\n }\n }\n catch (e) {\n const msg = e.message;\n console.error(\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n `Openreplay: ${msg}; if this error is caused by an IframeObserver, ignore it`, event, target);\n }\n}\nexport function deleteEventListener(target, event, cb, capture, forceNgOff) {\n if (!canAccessTarget(target)) {\n return;\n }\n let safeRemoveEventListener = 'removeEventListener';\n if (!forceNgOff) {\n safeRemoveEventListener = ngSafeBrowserMethod('removeEventListener');\n }\n try {\n if (target[safeRemoveEventListener]) {\n target[safeRemoveEventListener](event, cb, capture);\n }\n else {\n // @ts-ignore\n target.removeEventListener(event, cb, capture);\n }\n }\n catch (e) {\n const msg = e.message;\n console.error(\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n `Openreplay: ${msg}; if this error is caused by an IframeObserver, ignore it`, event, target);\n }\n}\nclass FIFOTaskScheduler {\n constructor() {\n this.taskQueue = [];\n this.isRunning = false;\n }\n // Adds a task to the queue\n addTask(task) {\n this.taskQueue.push(task);\n this.runTasks();\n }\n // Runs tasks from the queue\n runTasks() {\n if (this.isRunning || this.taskQueue.length === 0) {\n return;\n }\n this.isRunning = true;\n const executeNextTask = () => {\n if (this.taskQueue.length === 0) {\n this.isRunning = false;\n return;\n }\n // Get the next task and execute it\n const nextTask = this.taskQueue.shift();\n Promise.resolve(nextTask()).then(() => {\n requestAnimationFrame(() => executeNextTask());\n });\n };\n executeNextTask();\n }\n}\nconst scheduler = new FIFOTaskScheduler();\nexport function requestIdleCb(callback) {\n // performance improvement experiment;\n scheduler.addTask(callback);\n /**\n * This is a brief polyfill that suits our needs\n * I took inspiration from Microsoft Clarity polyfill on this one\n * then adapted it a little bit\n *\n * I'm very grateful for their bright idea\n * */\n // const taskTimeout = 3000\n // if (window.requestIdleCallback) {\n // return window.requestIdleCallback(callback, { timeout: taskTimeout })\n // } else {\n // const channel = new MessageChannel()\n // const incoming = channel.port1\n // const outgoing = channel.port2\n //\n // incoming.onmessage = (): void => {\n // callback()\n // }\n // requestAnimationFrame((): void => {\n // outgoing.postMessage(1)\n // })\n // }\n}\nexport function simpleMerge(defaultObj, givenObj) {\n const result = { ...defaultObj };\n for (const key in givenObj) {\n // eslint-disable-next-line no-prototype-builtins\n if (givenObj.hasOwnProperty(key)) {\n const userOptionValue = givenObj[key];\n const defaultOptionValue = defaultObj[key];\n if (typeof userOptionValue === 'object' &&\n !Array.isArray(userOptionValue) &&\n userOptionValue !== null) {\n result[key] = simpleMerge(defaultOptionValue || {}, userOptionValue);\n }\n else {\n result[key] = userOptionValue;\n }\n }\n }\n return result;\n}\nexport function throttleWithTrailing(fn, interval) {\n const lastCalls = new Map();\n const timeouts = new Map();\n const lastArgs = new Map();\n const throttled = function (key, ...args) {\n const now = Date.now();\n const lastCall = lastCalls.get(key) ?? 0;\n const remaining = interval - (now - lastCall);\n lastArgs.set(key, args);\n if (remaining <= 0) {\n if (timeouts.has(key)) {\n clearTimeout(timeouts.get(key));\n timeouts.delete(key);\n }\n lastCalls.set(key, now);\n fn(key, ...args);\n }\n else if (!timeouts.has(key)) {\n const timeoutId = setTimeout(() => {\n lastCalls.set(key, Date.now());\n timeouts.delete(key);\n const finalArgs = lastArgs.get(key);\n fn(key, ...finalArgs);\n }, remaining);\n timeouts.set(key, timeoutId);\n }\n };\n throttled.clear = () => {\n for (const timeout of timeouts.values()) {\n clearTimeout(timeout);\n }\n timeouts.clear();\n lastArgs.clear();\n lastCalls.clear();\n };\n return throttled;\n}\n","// Auto-generated, do not edit\n/* eslint-disable */\nexport function Timestamp(timestamp) {\n return [\n 0 /* Messages.Type.Timestamp */,\n timestamp,\n ];\n}\nexport function SetPageLocationDeprecated(url, referrer, navigationStart) {\n return [\n 4 /* Messages.Type.SetPageLocationDeprecated */,\n url,\n referrer,\n navigationStart,\n ];\n}\nexport function SetViewportSize(width, height) {\n return [\n 5 /* Messages.Type.SetViewportSize */,\n width,\n height,\n ];\n}\nexport function SetViewportScroll(x, y) {\n return [\n 6 /* Messages.Type.SetViewportScroll */,\n x,\n y,\n ];\n}\nexport function CreateDocument() {\n return [\n 7 /* Messages.Type.CreateDocument */,\n ];\n}\nexport function CreateElementNode(id, parentID, index, tag, svg) {\n return [\n 8 /* Messages.Type.CreateElementNode */,\n id,\n parentID,\n index,\n tag,\n svg,\n ];\n}\nexport function CreateTextNode(id, parentID, index) {\n return [\n 9 /* Messages.Type.CreateTextNode */,\n id,\n parentID,\n index,\n ];\n}\nexport function MoveNode(id, parentID, index) {\n return [\n 10 /* Messages.Type.MoveNode */,\n id,\n parentID,\n index,\n ];\n}\nexport function RemoveNode(id) {\n return [\n 11 /* Messages.Type.RemoveNode */,\n id,\n ];\n}\nexport function SetNodeAttribute(id, name, value) {\n return [\n 12 /* Messages.Type.SetNodeAttribute */,\n id,\n name,\n value,\n ];\n}\nexport function RemoveNodeAttribute(id, name) {\n return [\n 13 /* Messages.Type.RemoveNodeAttribute */,\n id,\n name,\n ];\n}\nexport function SetNodeData(id, data) {\n return [\n 14 /* Messages.Type.SetNodeData */,\n id,\n data,\n ];\n}\nexport function SetNodeScroll(id, x, y) {\n return [\n 16 /* Messages.Type.SetNodeScroll */,\n id,\n x,\n y,\n ];\n}\nexport function SetInputTarget(id, label) {\n return [\n 17 /* Messages.Type.SetInputTarget */,\n id,\n label,\n ];\n}\nexport function SetInputValue(id, value, mask) {\n return [\n 18 /* Messages.Type.SetInputValue */,\n id,\n value,\n mask,\n ];\n}\nexport function SetInputChecked(id, checked) {\n return [\n 19 /* Messages.Type.SetInputChecked */,\n id,\n checked,\n ];\n}\nexport function MouseMove(x, y) {\n return [\n 20 /* Messages.Type.MouseMove */,\n x,\n y,\n ];\n}\nexport function NetworkRequestDeprecated(type, method, url, request, response, status, timestamp, duration) {\n return [\n 21 /* Messages.Type.NetworkRequestDeprecated */,\n type,\n method,\n url,\n request,\n response,\n status,\n timestamp,\n duration,\n ];\n}\nexport function ConsoleLog(level, value) {\n return [\n 22 /* Messages.Type.ConsoleLog */,\n level,\n value,\n ];\n}\nexport function PageLoadTiming(requestStart, responseStart, responseEnd, domContentLoadedEventStart, domContentLoadedEventEnd, loadEventStart, loadEventEnd, firstPaint, firstContentfulPaint) {\n return [\n 23 /* Messages.Type.PageLoadTiming */,\n requestStart,\n responseStart,\n responseEnd,\n domContentLoadedEventStart,\n domContentLoadedEventEnd,\n loadEventStart,\n loadEventEnd,\n firstPaint,\n firstContentfulPaint,\n ];\n}\nexport function PageRenderTiming(speedIndex, visuallyComplete, timeToInteractive) {\n return [\n 24 /* Messages.Type.PageRenderTiming */,\n speedIndex,\n visuallyComplete,\n timeToInteractive,\n ];\n}\nexport function CustomEvent(name, payload) {\n return [\n 27 /* Messages.Type.CustomEvent */,\n name,\n payload,\n ];\n}\nexport function UserID(id) {\n return [\n 28 /* Messages.Type.UserID */,\n id,\n ];\n}\nexport function UserAnonymousID(id) {\n return [\n 29 /* Messages.Type.UserAnonymousID */,\n id,\n ];\n}\nexport function Metadata(key, value) {\n return [\n 30 /* Messages.Type.Metadata */,\n key,\n value,\n ];\n}\nexport function StringDictGlobal(key, value) {\n return [\n 34 /* Messages.Type.StringDictGlobal */,\n key,\n value,\n ];\n}\nexport function SetNodeAttributeDictGlobal(id, name, value) {\n return [\n 35 /* Messages.Type.SetNodeAttributeDictGlobal */,\n id,\n name,\n value,\n ];\n}\nexport function NodeAnimationResult(id, styles) {\n return [\n 36 /* Messages.Type.NodeAnimationResult */,\n id,\n styles,\n ];\n}\nexport function Profiler(name, duration, args, result) {\n return [\n 40 /* Messages.Type.Profiler */,\n name,\n duration,\n args,\n result,\n ];\n}\nexport function OTable(key, value) {\n return [\n 41 /* Messages.Type.OTable */,\n key,\n value,\n ];\n}\nexport function StateAction(type) {\n return [\n 42 /* Messages.Type.StateAction */,\n type,\n ];\n}\nexport function ReduxDeprecated(action, state, duration) {\n return [\n 44 /* Messages.Type.ReduxDeprecated */,\n action,\n state,\n duration,\n ];\n}\nexport function Vuex(mutation, state) {\n return [\n 45 /* Messages.Type.Vuex */,\n mutation,\n state,\n ];\n}\nexport function MobX(type, payload) {\n return [\n 46 /* Messages.Type.MobX */,\n type,\n payload,\n ];\n}\nexport function NgRx(action, state, duration) {\n return [\n 47 /* Messages.Type.NgRx */,\n action,\n state,\n duration,\n ];\n}\nexport function GraphQLDeprecated(operationKind, operationName, variables, response, duration) {\n return [\n 48 /* Messages.Type.GraphQLDeprecated */,\n operationKind,\n operationName,\n variables,\n response,\n duration,\n ];\n}\nexport function PerformanceTrack(frames, ticks, totalJSHeapSize, usedJSHeapSize) {\n return [\n 49 /* Messages.Type.PerformanceTrack */,\n frames,\n ticks,\n totalJSHeapSize,\n usedJSHeapSize,\n ];\n}\nexport function StringDictDeprecated(key, value) {\n return [\n 50 /* Messages.Type.StringDictDeprecated */,\n key,\n value,\n ];\n}\nexport function SetNodeAttributeDictDeprecated(id, nameKey, valueKey) {\n return [\n 51 /* Messages.Type.SetNodeAttributeDictDeprecated */,\n id,\n nameKey,\n valueKey,\n ];\n}\nexport function StringDict(key, value) {\n return [\n 43 /* Messages.Type.StringDict */,\n key,\n value,\n ];\n}\nexport function SetNodeAttributeDict(id, name, value) {\n return [\n 52 /* Messages.Type.SetNodeAttributeDict */,\n id,\n name,\n value,\n ];\n}\nexport function ResourceTimingDeprecatedDeprecated(timestamp, duration, ttfb, headerSize, encodedBodySize, decodedBodySize, url, initiator) {\n return [\n 53 /* Messages.Type.ResourceTimingDeprecatedDeprecated */,\n timestamp,\n duration,\n ttfb,\n headerSize,\n encodedBodySize,\n decodedBodySize,\n url,\n initiator,\n ];\n}\nexport function ConnectionInformation(downlink, type) {\n return [\n 54 /* Messages.Type.ConnectionInformation */,\n downlink,\n type,\n ];\n}\nexport function SetPageVisibility(hidden) {\n return [\n 55 /* Messages.Type.SetPageVisibility */,\n hidden,\n ];\n}\nexport function LoadFontFace(parentID, family, source, descriptors) {\n return [\n 57 /* Messages.Type.LoadFontFace */,\n parentID,\n family,\n source,\n descriptors,\n ];\n}\nexport function SetNodeFocus(id) {\n return [\n 58 /* Messages.Type.SetNodeFocus */,\n id,\n ];\n}\nexport function SetNodeAttributeURLBased(id, name, value, baseURL) {\n return [\n 60 /* Messages.Type.SetNodeAttributeURLBased */,\n id,\n name,\n value,\n baseURL,\n ];\n}\nexport function SetCSSDataURLBased(id, data, baseURL) {\n return [\n 61 /* Messages.Type.SetCSSDataURLBased */,\n id,\n data,\n baseURL,\n ];\n}\nexport function TechnicalInfo(type, value) {\n return [\n 63 /* Messages.Type.TechnicalInfo */,\n type,\n value,\n ];\n}\nexport function CustomIssue(name, payload) {\n return [\n 64 /* Messages.Type.CustomIssue */,\n name,\n payload,\n ];\n}\nexport function SetNodeSlot(id, slotID) {\n return [\n 65 /* Messages.Type.SetNodeSlot */,\n id,\n slotID,\n ];\n}\nexport function MouseClick(id, hesitationTime, label, selector, normalizedX, normalizedY) {\n return [\n 68 /* Messages.Type.MouseClick */,\n id,\n hesitationTime,\n label,\n selector,\n normalizedX,\n normalizedY,\n ];\n}\nexport function MouseClickDeprecated(id, hesitationTime, label, selector) {\n return [\n 69 /* Messages.Type.MouseClickDeprecated */,\n id,\n hesitationTime,\n label,\n selector,\n ];\n}\nexport function CreateIFrameDocument(frameID, id) {\n return [\n 70 /* Messages.Type.CreateIFrameDocument */,\n frameID,\n id,\n ];\n}\nexport function AdoptedSSReplaceURLBased(sheetID, text, baseURL) {\n return [\n 71 /* Messages.Type.AdoptedSSReplaceURLBased */,\n sheetID,\n text,\n baseURL,\n ];\n}\nexport function AdoptedSSInsertRuleURLBased(sheetID, rule, index, baseURL) {\n return [\n 73 /* Messages.Type.AdoptedSSInsertRuleURLBased */,\n sheetID,\n rule,\n index,\n baseURL,\n ];\n}\nexport function AdoptedSSDeleteRule(sheetID, index) {\n return [\n 75 /* Messages.Type.AdoptedSSDeleteRule */,\n sheetID,\n index,\n ];\n}\nexport function AdoptedSSAddOwner(sheetID, id) {\n return [\n 76 /* Messages.Type.AdoptedSSAddOwner */,\n sheetID,\n id,\n ];\n}\nexport function AdoptedSSRemoveOwner(sheetID, id) {\n return [\n 77 /* Messages.Type.AdoptedSSRemoveOwner */,\n sheetID,\n id,\n ];\n}\nexport function JSException(name, message, payload, metadata) {\n return [\n 78 /* Messages.Type.JSException */,\n name,\n message,\n payload,\n metadata,\n ];\n}\nexport function Zustand(mutation, state) {\n return [\n 79 /* Messages.Type.Zustand */,\n mutation,\n state,\n ];\n}\nexport function BatchMetadata(version, pageNo, firstIndex, timestamp, location) {\n return [\n 81 /* Messages.Type.BatchMetadata */,\n version,\n pageNo,\n firstIndex,\n timestamp,\n location,\n ];\n}\nexport function PartitionedMessage(partNo, partTotal) {\n return [\n 82 /* Messages.Type.PartitionedMessage */,\n partNo,\n partTotal,\n ];\n}\nexport function NetworkRequest(type, method, url, request, response, status, timestamp, duration, transferredBodySize) {\n return [\n 83 /* Messages.Type.NetworkRequest */,\n type,\n method,\n url,\n request,\n response,\n status,\n timestamp,\n duration,\n transferredBodySize,\n ];\n}\nexport function WSChannel(chType, channelName, data, timestamp, dir, messageType) {\n return [\n 84 /* Messages.Type.WSChannel */,\n chType,\n channelName,\n data,\n timestamp,\n dir,\n messageType,\n ];\n}\nexport function ResourceTiming(timestamp, duration, ttfb, headerSize, encodedBodySize, decodedBodySize, url, initiator, transferredSize, cached, queueing, dnsLookup, initialConnection, ssl, contentDownload, total, stalled) {\n return [\n 85 /* Messages.Type.ResourceTiming */,\n timestamp,\n duration,\n ttfb,\n headerSize,\n encodedBodySize,\n decodedBodySize,\n url,\n initiator,\n transferredSize,\n cached,\n queueing,\n dnsLookup,\n initialConnection,\n ssl,\n contentDownload,\n total,\n stalled,\n ];\n}\nexport function Incident(label, startTime, endTime) {\n return [\n 87 /* Messages.Type.Incident */,\n label,\n startTime,\n endTime,\n ];\n}\nexport function LongAnimationTask(name, duration, blockingDuration, firstUIEventTimestamp, startTime, scripts) {\n return [\n 89 /* Messages.Type.LongAnimationTask */,\n name,\n duration,\n blockingDuration,\n firstUIEventTimestamp,\n startTime,\n scripts,\n ];\n}\nexport function InputChange(id, value, valueMasked, label, hesitationTime, inputDuration) {\n return [\n 112 /* Messages.Type.InputChange */,\n id,\n value,\n valueMasked,\n label,\n hesitationTime,\n inputDuration,\n ];\n}\nexport function SelectionChange(selectionStart, selectionEnd, selection) {\n return [\n 113 /* Messages.Type.SelectionChange */,\n selectionStart,\n selectionEnd,\n selection,\n ];\n}\nexport function MouseThrashing(timestamp) {\n return [\n 114 /* Messages.Type.MouseThrashing */,\n timestamp,\n ];\n}\nexport function UnbindNodes(totalRemovedPercent) {\n return [\n 115 /* Messages.Type.UnbindNodes */,\n totalRemovedPercent,\n ];\n}\nexport function ResourceTimingDeprecated(timestamp, duration, ttfb, headerSize, encodedBodySize, decodedBodySize, url, initiator, transferredSize, cached) {\n return [\n 116 /* Messages.Type.ResourceTimingDeprecated */,\n timestamp,\n duration,\n ttfb,\n headerSize,\n encodedBodySize,\n decodedBodySize,\n url,\n initiator,\n transferredSize,\n cached,\n ];\n}\nexport function TabChange(tabId) {\n return [\n 117 /* Messages.Type.TabChange */,\n tabId,\n ];\n}\nexport function TabData(tabId) {\n return [\n 118 /* Messages.Type.TabData */,\n tabId,\n ];\n}\nexport function CanvasNode(nodeId, timestamp) {\n return [\n 119 /* Messages.Type.CanvasNode */,\n nodeId,\n timestamp,\n ];\n}\nexport function TagTrigger(tagId) {\n return [\n 120 /* Messages.Type.TagTrigger */,\n tagId,\n ];\n}\nexport function Redux(action, state, duration, actionTime) {\n return [\n 121 /* Messages.Type.Redux */,\n action,\n state,\n duration,\n actionTime,\n ];\n}\nexport function SetPageLocation(url, referrer, navigationStart, documentTitle) {\n return [\n 122 /* Messages.Type.SetPageLocation */,\n url,\n referrer,\n navigationStart,\n documentTitle,\n ];\n}\nexport function GraphQL(operationKind, operationName, variables, response, duration) {\n return [\n 123 /* Messages.Type.GraphQL */,\n operationKind,\n operationName,\n variables,\n response,\n duration,\n ];\n}\nexport function WebVitals(name, value) {\n return [\n 124 /* Messages.Type.WebVitals */,\n name,\n value,\n ];\n}\n","import { IN_BROWSER } from '../utils.js';\nimport { PerformanceTrack } from '../app/messages.gen.js';\nconst perf = IN_BROWSER && 'performance' in window && 'memory' in performance // works in Chrome only\n ? performance\n : { memory: {} };\nexport const deviceMemory = IN_BROWSER ? (navigator.deviceMemory || 0) * 1024 : 0;\nexport const jsHeapSizeLimit = perf.memory.jsHeapSizeLimit || 0;\nexport default function (app, opts) {\n const options = Object.assign({\n capturePerformance: true,\n }, opts);\n if (!options.capturePerformance) {\n return;\n }\n let frames;\n let ticks;\n const nextFrame = () => {\n if (frames === undefined || frames === -1) {\n return;\n }\n frames++;\n requestAnimationFrame(nextFrame);\n };\n app.ticker.attach(() => {\n if (ticks === undefined || ticks === -1) {\n return;\n }\n ticks++;\n }, 0, false);\n const sendPerformanceTrack = () => {\n if (frames === undefined || ticks === undefined) {\n return;\n }\n app.send(PerformanceTrack(frames, ticks, perf.memory.totalJSHeapSize || 0, perf.memory.usedJSHeapSize || 0));\n ticks = frames = document.hidden ? -1 : 0;\n };\n app.attachStartCallback(() => {\n ticks = frames = -1;\n sendPerformanceTrack();\n nextFrame();\n });\n app.attachStopCallback(() => {\n ticks = frames = undefined;\n });\n app.ticker.attach(sendPerformanceTrack, 165, false);\n if (document.hidden !== undefined) {\n app.attachEventListener(document, 'visibilitychange', sendPerformanceTrack, false, false);\n }\n}\n","export const WATCHED_TAGS_KEY = '__or__watched_tags__';\nclass TagWatcher {\n constructor(params) {\n this.interval = null;\n this.tags = [];\n this.sessionStorage = params.sessionStorage;\n this.errLog = params.errLog;\n this.onTag = params.onTag;\n // @ts-ignore\n const tags = JSON.parse(params.sessionStorage.getItem(WATCHED_TAGS_KEY) ?? '[]');\n this.setTags(tags);\n this.observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (entry.target) {\n // @ts-ignore\n const tag = entry.target.__or_watcher_tagname;\n if (tag) {\n this.onTagRendered(tag);\n }\n this.observer.unobserve(entry.target);\n }\n }\n });\n });\n }\n async fetchTags(ingest, token) {\n return fetch(`${ingest}/v1/web/tags`, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${token}`,\n },\n })\n .then((r) => r.json())\n .then(({ tags }) => {\n if (tags && tags.length) {\n this.setTags(tags);\n const tagString = JSON.stringify(tags);\n this.sessionStorage.setItem(WATCHED_TAGS_KEY, tagString || '');\n }\n })\n .catch((e) => this.errLog(e));\n }\n setTags(tags) {\n this.tags = tags;\n if (this.interval) {\n clearInterval(this.interval);\n this.interval = null;\n }\n this.interval = setInterval(() => {\n this.tags.forEach((tag) => {\n const possibleEls = document.querySelectorAll(tag.selector);\n if (possibleEls.length > 0) {\n const el = possibleEls[0];\n // @ts-ignore\n el.__or_watcher_tagname = tag.id;\n this.observer.observe(el);\n }\n });\n }, 500);\n }\n onTagRendered(tagId) {\n if (this.tags.findIndex(t => t.id === tagId)) {\n this.tags = this.tags.filter((tag) => tag.id !== tagId);\n }\n this.onTag(tagId);\n }\n clear() {\n this.tags = [];\n if (this.interval) {\n clearInterval(this.interval);\n this.interval = null;\n }\n this.observer.disconnect();\n }\n}\nexport default TagWatcher;\n","//@ts-ignore\nexport function isNode(sth) {\n return !!sth && sth.nodeType != null;\n}\nexport function isSVGElement(node) {\n return (node.namespaceURI === 'http://www.w3.org/2000/svg' || node.localName === 'svg');\n}\nexport function isUseElement(node) {\n return node.localName === 'use';\n}\nexport function isElementNode(node) {\n return node.nodeType === Node.ELEMENT_NODE;\n}\nexport function isCommentNode(node) {\n return node.nodeType === Node.COMMENT_NODE;\n}\nexport function isTextNode(node) {\n return node.nodeType === Node.TEXT_NODE;\n}\nexport function isDocument(node) {\n return node.nodeType === Node.DOCUMENT_NODE;\n}\nexport function isRootNode(node) {\n return node.nodeType === Node.DOCUMENT_NODE || node.nodeType === Node.DOCUMENT_FRAGMENT_NODE;\n}\nexport function hasTag(el, tagName) {\n // @ts-ignore\n return el.localName === tagName;\n}\n","import { hasTag } from './guards.js';\nimport { CanvasNode } from './messages.gen.js';\nclass CanvasRecorder {\n constructor(app, options) {\n this.app = app;\n this.options = options;\n this.snapshots = {};\n this.intervals = new Map();\n this.observers = new Map();\n this.uploadQueue = 0;\n this.MAX_CONCURRENT_UPLOADS = 2;\n this.MAX_QUEUE_SIZE = 50; // ~500 images max (50 batches × 10 images)\n this.pendingBatches = [];\n this.isProcessingQueue = false;\n this.restartTracking = () => {\n this.clear();\n this.app.nodes.scanTree(this.captureCanvas);\n };\n this.captureCanvas = (node) => {\n const id = this.app.nodes.getID(node);\n if (!id || !hasTag(node, 'canvas')) {\n return;\n }\n const isIgnored = this.app.sanitizer.isObscured(id) || this.app.sanitizer.isHidden(id);\n if (isIgnored || this.snapshots[id]) {\n return;\n }\n const observer = new IntersectionObserver((entries) => {\n entries.forEach((entry) => {\n if (entry.isIntersecting) {\n if (this.snapshots[id] && this.snapshots[id].createdAt) {\n this.snapshots[id].paused = false;\n }\n else {\n this.recordCanvas(entry.target, id);\n }\n /**\n * We can switch this to start observing when element is in the view\n * but otherwise right now we're just pausing when it's not\n * just to save some bandwidth and space on backend\n * */\n // observer.unobserve(entry.target)\n }\n else {\n if (this.snapshots[id]) {\n this.snapshots[id].paused = true;\n }\n }\n });\n });\n this.observers.set(id, observer);\n observer.observe(node);\n };\n this.recordCanvas = (node, id) => {\n const ts = this.app.timestamp();\n this.snapshots[id] = {\n images: [],\n createdAt: ts,\n paused: false,\n dummy: document.createElement('canvas'),\n isCapturing: false,\n isStopped: false,\n };\n const canvasMsg = CanvasNode(id.toString(), ts);\n this.app.send(canvasMsg);\n const cachedCanvas = node;\n const captureFn = (canvas) => {\n if (!this.snapshots[id] || this.snapshots[id].isCapturing || this.snapshots[id].isStopped) {\n return;\n }\n this.snapshots[id].isCapturing = true;\n captureSnapshot(canvas, this.options.quality, this.snapshots[id].dummy, this.options.fixedScaling, this.fileExt, (blob) => {\n if (this.snapshots[id]) {\n this.snapshots[id].isCapturing = false;\n }\n if (!blob || !this.snapshots[id] || this.snapshots[id].isStopped) {\n return;\n }\n this.snapshots[id].images.push({ id: this.app.timestamp(), data: blob });\n if (this.snapshots[id].images.length > 9) {\n this.sendSnaps(this.snapshots[id].images, id, this.snapshots[id].createdAt);\n this.snapshots[id].images = [];\n }\n });\n };\n const int = setInterval(() => {\n const snapshot = this.snapshots[id];\n if (!snapshot || snapshot.isStopped) {\n this.app.debug.log('Canvas is not present in {snapshots}');\n this.cleanupCanvas(id);\n return;\n }\n if (!document.contains(cachedCanvas)) {\n this.app.debug.log('Canvas element not in sync', cachedCanvas, node);\n this.cleanupCanvas(id);\n return;\n }\n if (!snapshot.paused) {\n if (this.options.useAnimationFrame) {\n requestAnimationFrame(() => {\n captureFn(cachedCanvas);\n });\n }\n else {\n captureFn(cachedCanvas);\n }\n }\n }, this.interval);\n this.intervals.set(id, int);\n };\n this.fileExt = 'webp';\n this.interval = 1000 / options.fps;\n }\n startTracking() {\n setTimeout(() => {\n this.app.nodes.scanTree(this.captureCanvas);\n this.app.nodes.attachNodeCallback(this.captureCanvas);\n }, 250);\n }\n sendSnaps(images, canvasId, createdAt) {\n if (Object.keys(this.snapshots).length === 0) {\n return;\n }\n if (this.pendingBatches.length >= this.MAX_QUEUE_SIZE) {\n this.app.debug.warn('Upload queue full, dropping canvas batch');\n return;\n }\n this.pendingBatches.push({ images, canvasId, createdAt });\n if (!this.isProcessingQueue) {\n this.processUploadQueue();\n }\n }\n async processUploadQueue() {\n this.isProcessingQueue = true;\n while (this.pendingBatches.length > 0) {\n if (this.uploadQueue >= this.MAX_CONCURRENT_UPLOADS) {\n await new Promise((resolve) => setTimeout(resolve, 100));\n continue;\n }\n const batch = this.pendingBatches.shift();\n if (!batch)\n break;\n this.uploadBatch(batch.images, batch.canvasId, batch.createdAt);\n }\n this.isProcessingQueue = false;\n }\n async uploadBatch(images, canvasId, createdAt) {\n if (this.options.isDebug) {\n const fileEntries = [];\n images.forEach((snapshot) => {\n if (!snapshot.data)\n return;\n fileEntries.push({ data: snapshot.data, name: `${createdAt}_${canvasId}_${snapshot.id}.${this.fileExt}` });\n });\n void saveArchive(fileEntries, `canvas_${canvasId}_${createdAt}`);\n return;\n }\n let formData;\n if (this.options.framesSupport) {\n // Pack frames into binary format: [uint64 LE timestamp][uint32 LE size][data] per frame\n const buffers = [];\n let totalSize = 0;\n for (const snapshot of images) {\n if (!snapshot.data)\n continue;\n const ab = await snapshot.data.arrayBuffer();\n buffers.push(ab);\n totalSize += 8 + 4 + ab.byteLength; // uint64 ts + uint32 size + data\n }\n if (totalSize === 0)\n return;\n const packed = new ArrayBuffer(totalSize);\n const view = new DataView(packed);\n const bytes = new Uint8Array(packed);\n let offset = 0;\n for (let i = 0; i < images.length; i++) {\n if (!images[i].data)\n continue;\n const ab = buffers.shift();\n const ts = images[i].id;\n // uint64 LE as two uint32 LE writes -- timestamp\n view.setUint32(offset, ts % 0x100000000, true);\n view.setUint32(offset + 4, Math.floor(ts / 0x100000000), true);\n offset += 8;\n // uint32 LE -- size\n view.setUint32(offset, ab.byteLength, true);\n offset += 4;\n // image data\n bytes.set(new Uint8Array(ab), offset);\n offset += ab.byteLength;\n }\n formData = new FormData();\n formData.append('type', 'frames');\n const fileName = `${createdAt}_${canvasId}.${this.fileExt}.frames`;\n formData.append('frames', new Blob([packed]), fileName);\n }\n else {\n // Legacy: send individual image files\n formData = new FormData();\n images.forEach((snapshot) => {\n const blob = snapshot.data;\n if (!blob)\n return;\n const name = `${createdAt}_${canvasId}_${snapshot.id}.${this.fileExt}`;\n formData.append('snapshot', blob, name);\n });\n }\n const initRestart = () => {\n this.app.debug.log('Restarting tracker; token expired');\n this.app.stop(false);\n setTimeout(() => {\n void this.app.start({}, true);\n }, 250);\n };\n this.uploadQueue++;\n fetch(this.app.options.ingestPoint + '/v1/web/images', {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${this.app.session.getSessionToken() ?? ''}`,\n },\n body: formData,\n })\n .then((r) => {\n if (r.status === 401) {\n return initRestart();\n }\n return true;\n })\n .catch((e) => {\n this.app.debug.error('error saving canvas', e);\n })\n .finally(() => {\n this.uploadQueue--;\n });\n }\n cleanupCanvas(id) {\n if (this.snapshots[id]) {\n this.snapshots[id].isStopped = true;\n }\n const interval = this.intervals.get(id);\n if (interval) {\n clearInterval(interval);\n this.intervals.delete(id);\n }\n const observer = this.observers.get(id);\n if (observer) {\n observer.disconnect();\n this.observers.delete(id);\n }\n if (this.snapshots[id]?.dummy) {\n const dummy = this.snapshots[id].dummy;\n dummy.width = 0;\n dummy.height = 0;\n }\n delete this.snapshots[id];\n }\n clear() {\n // Flush remaining images before cleanup\n Object.keys(this.snapshots).forEach((idStr) => {\n const id = parseInt(idStr, 10);\n const snapshot = this.snapshots[id];\n if (snapshot && snapshot.images.length > 0) {\n this.sendSnaps(snapshot.images, id, snapshot.createdAt);\n snapshot.images = [];\n }\n });\n Object.keys(this.snapshots).forEach((idStr) => {\n const id = parseInt(idStr, 10);\n this.cleanupCanvas(id);\n });\n // don't clear pendingBatches or stop queue processing\n // to allow flushed images to finish uploading in the background\n this.intervals.clear();\n this.observers.clear();\n this.snapshots = {};\n }\n}\nconst qualityInt = {\n low: 0.35,\n medium: 0.55,\n high: 0.8,\n};\nfunction captureSnapshot(canvas, quality = 'medium', dummy, fixedScaling = false, fileExt, onBlob) {\n const imageFormat = `image/${fileExt}`;\n if (fixedScaling) {\n const canvasScaleRatio = window.devicePixelRatio || 1;\n dummy.width = canvas.width / canvasScaleRatio;\n dummy.height = canvas.height / canvasScaleRatio;\n const ctx = dummy.getContext('2d');\n if (!ctx) {\n return '';\n }\n ctx.clearRect(0, 0, dummy.width, dummy.height);\n ctx.drawImage(canvas, 0, 0, dummy.width, dummy.height);\n dummy.toBlob(onBlob, imageFormat, qualityInt[quality]);\n }\n else {\n canvas.toBlob(onBlob, imageFormat, qualityInt[quality]);\n }\n}\nasync function saveArchive(files, archiveName) {\n const zipBlob = await createZipBlob(files);\n const url = URL.createObjectURL(zipBlob);\n const link = document.createElement('a');\n link.href = url;\n link.download = `${archiveName}.zip`;\n link.style.display = 'none';\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(url);\n}\nasync function createZipBlob(files) {\n const parts = [];\n const centralDir = [];\n let offset = 0;\n for (const file of files) {\n const nameBytes = new TextEncoder().encode(file.name);\n const dataBytes = new Uint8Array(await file.data.arrayBuffer());\n const crc = crc32(dataBytes);\n // Local file header (30 bytes + filename)\n const local = new Uint8Array(30 + nameBytes.length);\n const lv = new DataView(local.buffer);\n lv.setUint32(0, 0x04034b50, true);\n lv.setUint16(4, 20, true);\n lv.setUint16(8, 0, true);\n lv.setUint32(14, crc, true);\n lv.setUint32(18, dataBytes.length, true);\n lv.setUint32(22, dataBytes.length, true);\n lv.setUint16(26, nameBytes.length, true);\n local.set(nameBytes, 30);\n // Central directory entry (46 bytes + filename)\n const cd = new Uint8Array(46 + nameBytes.length);\n const cv = new DataView(cd.buffer);\n cv.setUint32(0, 0x02014b50, true);\n cv.setUint16(4, 20, true);\n cv.setUint16(6, 20, true);\n cv.setUint32(16, crc, true);\n cv.setUint32(20, dataBytes.length, true);\n cv.setUint32(24, dataBytes.length, true);\n cv.setUint16(28, nameBytes.length, true);\n cv.setUint32(42, offset, true);\n cd.set(nameBytes, 46);\n parts.push(local);\n parts.push(dataBytes);\n centralDir.push(cd);\n offset += local.length + dataBytes.length;\n }\n const cdOffset = offset;\n let cdSize = 0;\n for (const entry of centralDir) {\n parts.push(entry);\n cdSize += entry.length;\n }\n // End of central directory (22 bytes)\n const eocd = new Uint8Array(22);\n const ev = new DataView(eocd.buffer);\n ev.setUint32(0, 0x06054b50, true);\n ev.setUint16(8, files.length, true);\n ev.setUint16(10, files.length, true);\n ev.setUint32(12, cdSize, true);\n ev.setUint32(16, cdOffset, true);\n parts.push(eocd);\n return new Blob(parts, { type: 'application/zip' });\n}\nfunction crc32(data) {\n let crc = 0xffffffff;\n for (let i = 0; i < data.length; i++) {\n crc ^= data[i];\n for (let j = 0; j < 8; j++) {\n crc = (crc >>> 1) ^ (crc & 1 ? 0xedb88320 : 0);\n }\n }\n return (crc ^ 0xffffffff) >>> 0;\n}\nfunction dataUrlToBlob(dataUrl) {\n const [header, base64] = dataUrl.split(',');\n if (!header || !base64)\n return null;\n const encParts = header.match(/:(.*?);/);\n if (!encParts)\n return null;\n const mime = encParts[1];\n const blobStr = atob(base64);\n let n = blobStr.length;\n const u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = blobStr.charCodeAt(n);\n }\n return [new Blob([u8arr], { type: mime }), u8arr];\n}\nexport default CanvasRecorder;\n","export const LogLevel = {\n Verbose: 5,\n Log: 4,\n Warnings: 3,\n Errors: 2,\n Silent: 0,\n};\nexport default class Logger {\n constructor(debugLevel = LogLevel.Silent) {\n this.shouldLog = (level) => {\n return this.level >= level;\n };\n this.info = (...args) => {\n if (this.shouldLog(LogLevel.Verbose)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n console.info(...args);\n }\n };\n this.log = (...args) => {\n if (this.shouldLog(LogLevel.Log)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n console.log(...args);\n }\n };\n this.warn = (...args) => {\n if (this.shouldLog(LogLevel.Warnings)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n console.warn(...args);\n }\n };\n this.error = (...args) => {\n if (this.shouldLog(LogLevel.Errors)) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n console.error(...args);\n }\n };\n this.level = debugLevel;\n }\n}\n","const SECOND = 1000;\nfunction processMapInBatches(map, batchSize, processBatchCallback) {\n const iterator = map.entries();\n function processNextBatch() {\n const batch = [];\n let result = iterator.next();\n while (!result.done && batch.length < batchSize) {\n batch.push(result.value);\n result = iterator.next();\n }\n if (batch.length > 0) {\n batch.forEach(([_, node]) => {\n if (node) {\n processBatchCallback(node);\n }\n });\n setTimeout(processNextBatch, 50);\n }\n }\n processNextBatch();\n}\nfunction isNodeStillActive(node) {\n try {\n if (!node.isConnected) {\n return [false, 'not connected'];\n }\n const nodeIsDocument = node.nodeType === Node.DOCUMENT_NODE;\n const nodeWindow = nodeIsDocument\n ? node.defaultView\n : node.ownerDocument?.defaultView;\n const ownerDoc = nodeIsDocument ? node : node.ownerDocument;\n if (!nodeWindow) {\n return [false, 'no window'];\n }\n if (nodeWindow.closed) {\n return [false, 'window closed'];\n }\n if (!ownerDoc?.documentElement.isConnected) {\n return [false, 'documentElement not connected'];\n }\n return [true, 'ok'];\n }\n catch (e) {\n return [false, e];\n }\n}\nconst defaults = {\n interval: SECOND * 30,\n batchSize: 2500,\n enabled: true,\n};\nclass Maintainer {\n constructor(nodes, unregisterNode, options) {\n this.nodes = nodes;\n this.unregisterNode = unregisterNode;\n this.start = () => {\n if (!this.options.enabled) {\n return;\n }\n this.stop();\n this.interval = setInterval(() => {\n processMapInBatches(this.nodes, this.options.batchSize, (node) => {\n const isActive = isNodeStillActive(node)[0];\n if (!isActive) {\n this.unregisterNode(node);\n }\n });\n }, this.options.interval);\n };\n this.stop = () => {\n if (this.interval) {\n clearInterval(this.interval);\n }\n };\n this.options = { ...defaults, ...options };\n }\n}\nexport default Maintainer;\n","// 4 levels, 128 frames between each level, 8_388_608 nodes per page\n// lets hope no one will need more :D\nexport const BITS_LEVEL = 2; // 4\nexport const BITS_ORDER = 7; // 128\nexport const BITS_NODE = 22; // 8_388_608\nexport const SHIFT_ORDER = BITS_NODE;\nexport const SHIFT_LEVEL = BITS_NODE + BITS_ORDER;\nexport const MASK_NODE = (1 << BITS_NODE) - 1;\nexport const MASK_ORDER = (1 << BITS_ORDER) - 1;\nexport const MASK_LEVEL = (1 << BITS_LEVEL) - 1;\nexport function pack(level, order, nodeId) {\n if (level < 0 || level > MASK_LEVEL)\n throw new RangeError('OR: nesting level overflow, max 4');\n if (order < 0 || order > MASK_ORDER)\n throw new RangeError('OR: frame order overflow, max 128');\n if (nodeId < 0 || nodeId > MASK_NODE)\n throw new RangeError('OR: nodeId overflow, max 8_388_608');\n const v = ((level & MASK_LEVEL) << SHIFT_LEVEL) |\n ((order & MASK_ORDER) << SHIFT_ORDER) |\n (nodeId & MASK_NODE);\n return v >>> 0;\n}\nexport function unpack(id) {\n id = id >>> 0;\n const level = (id >>> SHIFT_LEVEL) & MASK_LEVEL;\n const order = (id >>> SHIFT_ORDER) & MASK_ORDER;\n const nodeId = id & MASK_NODE;\n return { level, order, nodeId };\n}\n","import { createEventListener, deleteEventListener } from '../../utils.js';\nimport Maintainer from './maintainer.js';\nimport { pack } from './idSeq.js';\nexport default class Nodes {\n constructor(params) {\n this.nodes = new Map();\n this.totalNodeAmount = 0;\n this.nodeCallbacks = [];\n this.elementListeners = new Map();\n this.nextNodeId = 0;\n // Attached once per Tracker instance\n this.attachNodeCallback = (nodeCallback) => {\n return this.nodeCallbacks.push(nodeCallback);\n };\n this.scanTree = (cb) => {\n this.nodes.forEach((node) => (node ? cb(node) : undefined));\n };\n this.attachNodeListener = (node, type, listener, useCapture = true) => {\n const id = this.getID(node);\n if (id === undefined) {\n return;\n }\n createEventListener(node, type, listener, useCapture, this.forceNgOff);\n let listeners = this.elementListeners.get(id);\n if (listeners === undefined) {\n listeners = [];\n this.elementListeners.set(id, listeners);\n }\n listeners.push([type, listener, useCapture]);\n };\n this.createFrameId = (level, frameOrder) => {\n return pack(level, frameOrder, 0);\n };\n this.unregisterNode = (node) => {\n const id = node[this.node_id];\n if (id !== undefined) {\n ;\n node[this.node_id] = undefined;\n delete node[this.node_id];\n this.nodes.delete(id);\n const listeners = this.elementListeners.get(id);\n if (listeners !== undefined) {\n this.elementListeners.delete(id);\n listeners.forEach((listener) => deleteEventListener(node, listener[0], listener[1], listener[2], this.forceNgOff));\n }\n this.totalNodeAmount--;\n }\n return id;\n };\n this.node_id = params.node_id;\n this.forceNgOff = params.forceNgOff;\n this.maintainer = new Maintainer(this.nodes, this.unregisterNode, params.maintainer);\n this.maintainer.start();\n }\n crossdomainMode(level, frameOrder) {\n this.nextNodeId = this.createFrameId(level, frameOrder);\n }\n registerNode(node) {\n let id = node[this.node_id];\n const isNew = id === undefined;\n if (isNew) {\n id = this.nextNodeId;\n this.totalNodeAmount++;\n this.nextNodeId++;\n this.nodes.set(id, node);\n node[this.node_id] = id;\n }\n return [id, isNew];\n }\n cleanTree() {\n // sadly we keep empty items in array here resulting in some memory still being used\n // but its still better than keeping dead nodes or undef elements\n // plus we keep our index positions for new/alive nodes\n // performance test: 3ms for 30k nodes with 17k dead ones\n for (const [_, node] of this.nodes) {\n if (node && !document.contains(node)) {\n this.unregisterNode(node);\n }\n }\n }\n callNodeCallbacks(node, isStart) {\n this.nodeCallbacks.forEach((cb) => cb(node, isStart));\n }\n getID(node) {\n if (!node)\n return undefined;\n return node[this.node_id];\n }\n getNode(id) {\n return this.nodes.get(id);\n }\n getNodeCount() {\n return this.totalNodeAmount;\n }\n clear() {\n for (const [_, node] of this.nodes) {\n if (node) {\n this.unregisterNode(node);\n }\n }\n this.nextNodeId = 0;\n this.nodes.clear();\n }\n}\n","let fakeIdHolder = 1000000 * 99;\nexport function inlineRemoteCss(node, id, baseHref, getNextID, insertRule, addOwner, forceFetch, sendPlain, onPlain) {\n const sheetId = sendPlain ? null : getNextID();\n if (!sendPlain) {\n addOwner(sheetId, id);\n }\n const sheet = node.sheet;\n if (sheet && !forceFetch) {\n try {\n const cssText = stringifyStylesheet(sheet);\n if (cssText) {\n processCssText(cssText);\n return;\n }\n }\n catch (e) {\n // console.warn(\"Could not stringify sheet, falling back to fetch:\", e);\n }\n }\n // Fall back to fetching if we couldn't get or stringify the sheet\n if (node.href) {\n fetch(node.href)\n .then(response => {\n if (!response.ok) {\n throw new Error(`response status ${response.status}`);\n }\n return response.text();\n })\n .then(cssText => {\n if (sendPlain && onPlain) {\n onPlain(cssText, fakeIdHolder++);\n }\n else {\n processCssText(cssText);\n }\n })\n .catch(error => {\n console.error(`OpenReplay: Failed to fetch CSS from ${node.href}:`, error);\n });\n }\n function processCssText(cssText) {\n // Remove comments\n cssText = cssText.replace(/\\/\\*[\\s\\S]*?\\*\\//g, '');\n // Parse and process the CSS text to extract rules\n const ruleTexts = parseCSS(cssText);\n for (let i = 0; i < ruleTexts.length; i++) {\n insertRule(sheetId, ruleTexts[i], i, baseHref);\n }\n }\n function parseCSS(cssText) {\n const rules = [];\n let inComment = false;\n let inString = false;\n let stringChar = '';\n let braceLevel = 0;\n let currentRule = '';\n for (let i = 0; i < cssText.length; i++) {\n const char = cssText[i];\n const nextChar = cssText[i + 1] || '';\n // comments\n if (!inString && char === '/' && nextChar === '*') {\n inComment = true;\n i++; // Skip the next character\n continue;\n }\n if (inComment) {\n if (char === '*' && nextChar === '/') {\n inComment = false;\n i++; // Skip the next character\n }\n continue;\n }\n if (!inString && (char === '\"' || char === \"'\")) {\n inString = true;\n stringChar = char;\n currentRule += char;\n continue;\n }\n if (inString) {\n currentRule += char;\n if (char === stringChar && cssText[i - 1] !== '\\\\') {\n inString = false;\n }\n continue;\n }\n currentRule += char;\n if (char === '{') {\n braceLevel++;\n }\n else if (char === '}') {\n braceLevel--;\n if (braceLevel === 0) {\n // End of a top-level rule\n rules.push(currentRule.trim());\n currentRule = '';\n }\n }\n }\n // Handle any remaining text (should be rare)\n if (currentRule.trim()) {\n rules.push(currentRule.trim());\n }\n return rules;\n }\n function stringifyStylesheet(s) {\n try {\n const rules = s.rules || s.cssRules;\n if (!rules) {\n return null;\n }\n let sheetHref = s.href;\n if (!sheetHref && s.ownerNode && s.ownerNode.ownerDocument) {\n // an inline <style> element\n sheetHref = s.ownerNode.ownerDocument.location.href;\n }\n const stringifiedRules = Array.from(rules, (rule) => stringifyRule(rule, sheetHref)).join('');\n return fixBrowserCompatibilityIssuesInCSS(stringifiedRules);\n }\n catch (error) {\n return null;\n }\n }\n function stringifyRule(rule, sheetHref) {\n if (isCSSImportRule(rule)) {\n let importStringified;\n try {\n importStringified =\n // for same-origin stylesheets,\n // we can access the imported stylesheet rules directly\n stringifyStylesheet(rule.styleSheet) ||\n // work around browser issues with the raw string `@import url(...)` statement\n escapeImportStatement(rule);\n }\n catch (error) {\n importStringified = rule.cssText;\n }\n if (rule.styleSheet.href) {\n // url()s within the imported stylesheet are relative to _that_ sheet's href\n return absolutifyURLs(importStringified, rule.styleSheet.href);\n }\n return importStringified;\n }\n else {\n let ruleStringified = rule.cssText;\n if (isCSSStyleRule(rule) && rule.selectorText.includes(':')) {\n // Safari does not escape selectors with : properly\n ruleStringified = fixSafariColons(ruleStringified);\n }\n if (sheetHref) {\n return absolutifyURLs(ruleStringified, sheetHref);\n }\n return ruleStringified;\n }\n }\n function fixBrowserCompatibilityIssuesInCSS(cssText) {\n // Fix for Chrome's handling of webkit-background-clip\n if (cssText.includes(' background-clip: text;') &&\n !cssText.includes(' -webkit-background-clip: text;')) {\n cssText = cssText.replace(/\\sbackground-clip:\\s*text;/g, ' -webkit-background-clip: text; background-clip: text;');\n }\n return cssText;\n }\n function escapeImportStatement(rule) {\n const { cssText } = rule;\n if (cssText.split('\"').length < 3)\n return cssText;\n const statement = ['@import', `url(${JSON.stringify(rule.href)})`];\n if (rule.layerName === '') {\n statement.push(`layer`);\n }\n else if (rule.layerName) {\n statement.push(`layer(${rule.layerName})`);\n }\n if (rule.supportsText) {\n statement.push(`supports(${rule.supportsText})`);\n }\n if (rule.media.length) {\n statement.push(rule.media.mediaText);\n }\n return statement.join(' ') + ';';\n }\n function fixSafariColons(cssStringified) {\n const regex = /(\\[(?:[\\w-]+)[^\\\\])(:(?:[\\w-]+)\\])/gm;\n return cssStringified.replace(regex, '$1\\\\$2');\n }\n function isCSSImportRule(rule) {\n return 'styleSheet' in rule;\n }\n function isCSSStyleRule(rule) {\n return 'selectorText' in rule;\n }\n function absolutifyURLs(cssText, href) {\n if (!cssText)\n return '';\n const URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\n const URL_PROTOCOL_MATCH = /^(?:[a-z+]+:)?\\/\\//i;\n const URL_WWW_MATCH = /^www\\..*/i;\n const DATA_URI = /^(data:)([^,]*),(.*)/i;\n return cssText.replace(URL_IN_CSS_REF, (origin, quote1, path1, quote2, path2, path3) => {\n const filePath = path1 || path2 || path3;\n const maybeQuote = quote1 || quote2 || '';\n if (!filePath) {\n return origin;\n }\n if (URL_PROTOCOL_MATCH.test(filePath) || URL_WWW_MATCH.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (DATA_URI.test(filePath)) {\n return `url(${maybeQuote}${filePath}${maybeQuote})`;\n }\n if (filePath[0] === '/') {\n return `url(${maybeQuote}${extractOrigin(href) + filePath}${maybeQuote})`;\n }\n const stack = href.split('/');\n const parts = filePath.split('/');\n stack.pop();\n for (const part of parts) {\n if (part === '.') {\n continue;\n }\n else if (part === '..') {\n stack.pop();\n }\n else {\n stack.push(part);\n }\n }\n return `url(${maybeQuote}${stack.join('/')}${maybeQuote})`;\n });\n }\n function extractOrigin(url) {\n let origin = '';\n if (url.indexOf('//') > -1) {\n origin = url.split('/').slice(0, 3).join('/');\n }\n else {\n origin = url.split('/')[0];\n }\n origin = origin.split('?')[0];\n return origin;\n }\n}\n","import { AdoptedSSReplaceURLBased, AdoptedSSInsertRuleURLBased, AdoptedSSAddOwner, AdoptedSSRemoveOwner, } from '../app/messages.gen.js';\nimport { isRootNode } from '../app/guards.js';\nfunction hasAdoptedSS(node) {\n return (isRootNode(node) &&\n // @ts-ignore\n !!node.adoptedStyleSheets);\n}\n// TODO: encapsulate to be init-ed on-start and join with cssrules.ts under one folder\nlet _id = 0xf;\nexport function nextID() {\n return _id++;\n}\nexport const styleSheetIDMap = new Map();\nexport default function (app) {\n if (app === null) {\n return;\n }\n if (!hasAdoptedSS(document)) {\n return;\n }\n const styleSheetIDMap = new Map();\n const adoptedStyleSheetsOwnings = new Map();\n const sendAdoptedStyleSheetsUpdate = (root) => setTimeout(() => {\n let nodeID = app.nodes.getID(root);\n if (root === document) {\n nodeID = 0; // main document doesn't have nodeID. ID count starts from the documentElement\n }\n if (nodeID === undefined) {\n return;\n }\n let pastOwning = adoptedStyleSheetsOwnings.get(nodeID);\n if (!pastOwning) {\n pastOwning = [];\n }\n const nowOwning = [];\n const styleSheets = root.adoptedStyleSheets;\n if (styleSheets && Symbol.iterator in styleSheets) {\n for (const s of styleSheets) {\n let sheetID = styleSheetIDMap.get(s);\n const init = !sheetID;\n if (!sheetID) {\n sheetID = nextID();\n styleSheetIDMap.set(s, sheetID);\n }\n if (!pastOwning.includes(sheetID)) {\n app.send(AdoptedSSAddOwner(sheetID, nodeID));\n }\n if (init) {\n const rules = s.cssRules;\n for (let i = 0; i < rules.length; i++) {\n app.send(AdoptedSSInsertRuleURLBased(sheetID, rules[i].cssText, i, app.getBaseHref()));\n }\n }\n nowOwning.push(sheetID);\n }\n }\n if (Symbol.iterator in pastOwning) {\n for (const sheetID of pastOwning) {\n if (!nowOwning.includes(sheetID)) {\n app.send(AdoptedSSRemoveOwner(sheetID, nodeID));\n }\n }\n }\n adoptedStyleSheetsOwnings.set(nodeID, nowOwning);\n }, 20); // Mysterious bug:\n /* On the page https://explore.fast.design/components/fast-accordion\n the only rule inside the only adoptedStyleSheet of the iframe-s document\n gets changed during first milliseconds after the load.\n However, none of the documented methods (replace, insertRule) is triggered.\n The rule is not substituted (remains the same object), however the text gets changed.\n */\n function patchAdoptedStyleSheets(prototype) {\n const nativeAdoptedStyleSheetsDescriptor = Object.getOwnPropertyDescriptor(prototype, 'adoptedStyleSheets');\n if (nativeAdoptedStyleSheetsDescriptor) {\n Object.defineProperty(prototype, 'adoptedStyleSheets', {\n ...nativeAdoptedStyleSheetsDescriptor,\n set: function (value) {\n // @ts-ignore\n const retVal = nativeAdoptedStyleSheetsDescriptor.set.call(this, value);\n sendAdoptedStyleSheetsUpdate(this);\n return retVal;\n },\n });\n }\n }\n const patchContext = (context) => {\n // @ts-ignore\n if (context.__openreplay_adpss_patched__) {\n return;\n }\n else {\n // @ts-ignore\n context.__openreplay_adpss_patched__ = true;\n }\n patchAdoptedStyleSheets(context.Document.prototype);\n patchAdoptedStyleSheets(context.ShadowRoot.prototype);\n //@ts-ignore TODO: upgrade ts to 4.8+\n const { replace, replaceSync } = context.CSSStyleSheet.prototype;\n //@ts-ignore\n context.CSSStyleSheet.prototype.replace = function (text) {\n return replace.call(this, text).then((sheet) => {\n const sheetID = styleSheetIDMap.get(this);\n if (sheetID) {\n app.send(AdoptedSSReplaceURLBased(sheetID, text, app.getBaseHref()));\n }\n return sheet;\n });\n };\n //@ts-ignore\n context.CSSStyleSheet.prototype.replaceSync = function (text) {\n const sheetID = styleSheetIDMap.get(this);\n if (sheetID) {\n app.send(AdoptedSSReplaceURLBased(sheetID, text, app.getBaseHref()));\n }\n return replaceSync.call(this, text);\n };\n };\n patchContext(window);\n app.observer.attachContextCallback(app.safe(patchContext));\n app.attachStopCallback(() => {\n styleSheetIDMap.clear();\n adoptedStyleSheetsOwnings.clear();\n });\n // So far main Document is not triggered with nodeCallbacks\n app.attachStartCallback(() => {\n sendAdoptedStyleSheetsUpdate(document);\n });\n app.nodes.attachNodeCallback((node) => {\n if (hasAdoptedSS(node)) {\n sendAdoptedStyleSheetsUpdate(node);\n }\n });\n}\n","import { createMutationObserver, throttleWithTrailing } from '../../utils.js';\nimport { RemoveNodeAttribute, SetNodeAttributeURLBased, SetCSSDataURLBased, SetNodeData, CreateTextNode, CreateElementNode, MoveNode, RemoveNode, UnbindNodes, SetNodeAttribute, AdoptedSSInsertRuleURLBased, AdoptedSSAddOwner, SetNodeSlot, } from '../messages.gen.js';\nimport { isRootNode, isTextNode, isElementNode, isSVGElement, isUseElement, hasTag, isCommentNode, } from '../guards.js';\nimport { inlineRemoteCss } from './cssInliner.js';\nimport { nextID } from '../../modules/constructedStyleSheets.js';\nconst iconCache = {};\nconst svgUrlCache = {};\nexport async function parseUseEl(useElement, mode, domParser) {\n try {\n const href = useElement.getAttribute('xlink:href') || useElement.getAttribute('href');\n if (!href) {\n console.debug('Openreplay: xlink:href or href not found on <use>.');\n return;\n }\n let [url, symbolId] = href.split('#');\n if (!url && !symbolId) {\n console.warn('Openreplay: Invalid xlink:href or href found on <use>.');\n return;\n }\n if (iconCache[symbolId]) {\n return iconCache[symbolId];\n }\n // happens if svg spritemap is local, fastest case for us\n if (!url && symbolId) {\n const hasHashtag = href.startsWith('#');\n let escapedURL;\n if (hasHashtag) {\n escapedURL = `#${CSS.escape(href.substring(1))}`;\n }\n else {\n escapedURL = CSS.escape(href);\n }\n const symbol = document.querySelector(escapedURL);\n if (symbol) {\n const inlineSvg = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"${symbol.getAttribute('viewBox') || '0 0 24 24'}\">\n ${symbol.innerHTML}\n </svg>\n `;\n iconCache[symbolId] = inlineSvg;\n return inlineSvg;\n }\n else {\n console.warn('Openreplay: Sprite symbol not found in the document.');\n return;\n }\n }\n let svgDoc;\n if (svgUrlCache[url]) {\n if (svgUrlCache[url] === 1) {\n await new Promise((resolve) => {\n let tries = 0;\n const interval = setInterval(() => {\n if (tries > 100) {\n clearInterval(interval);\n resolve(false);\n }\n if (svgUrlCache[url] !== 1) {\n svgDoc = svgUrlCache[url];\n clearInterval(interval);\n resolve(true);\n }\n else {\n tries++;\n }\n }, 100);\n });\n }\n else {\n svgDoc = svgUrlCache[url] ?? `<svg xmlns=\"http://www.w3.org/2000/svg\"></svg>`;\n }\n }\n else {\n svgUrlCache[url] = 1;\n const response = await fetch(url);\n const svgText = await response.text();\n svgDoc = domParser.parseFromString(svgText, 'image/svg+xml');\n svgUrlCache[url] = svgDoc;\n }\n // @ts-ignore\n const symbol = svgDoc.getElementById(symbolId);\n if (!symbol) {\n console.debug('Openreplay: Symbol not found in SVG.');\n return '';\n }\n if (mode === 'inline') {\n const res = { paths: symbol.innerHTML, vbox: symbol.getAttribute('viewBox') || '0 0 24 24' };\n iconCache[symbolId] = res;\n return res;\n }\n if (mode === 'svgtext') {\n const inlineSvg = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"${symbol.getAttribute('viewBox') || '0 0 24 24'}\">\n ${symbol.innerHTML}\n </svg>\n `;\n iconCache[symbolId] = inlineSvg;\n return inlineSvg;\n }\n if (mode === 'dataurl') {\n const inlineSvg = `\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"${symbol.getAttribute('viewBox') || '0 0 24 24'}\">\n ${symbol.innerHTML}\n </svg>\n `;\n const encodedSvg = btoa(inlineSvg);\n const dataUrl = `data:image/svg+xml;base64,${encodedSvg}`;\n iconCache[symbolId] = dataUrl;\n return dataUrl;\n }\n console.debug(`Openreplay: Unknown mode: ${mode}. Use \"inline\" or \"dataurl\".`);\n }\n catch (error) {\n console.error('Openreplay: Error processing <use> element:', error);\n }\n}\nfunction isIgnored(node) {\n if (isCommentNode(node)) {\n return true;\n }\n if (isTextNode(node)) {\n return false;\n }\n if (!isElementNode(node)) {\n return true;\n }\n const tag = node.tagName.toUpperCase();\n if (tag === 'LINK') {\n const rel = node.getAttribute('rel');\n const as = node.getAttribute('as');\n return !(rel?.includes('stylesheet') || as === 'style' || as === 'font');\n }\n return (tag === 'SCRIPT' || tag === 'NOSCRIPT' || tag === 'META' || tag === 'TITLE' || tag === 'BASE');\n}\nfunction isObservable(node) {\n if (isRootNode(node)) {\n return true;\n }\n return !isIgnored(node);\n}\n/*\n TODO:\n - fix unbinding logic + send all removals first (ensure sequence is correct)\n - use document as a 0-node in the upper context (should be updated in player at first)\n*/\nvar RecentsType;\n(function (RecentsType) {\n RecentsType[RecentsType[\"New\"] = 0] = \"New\";\n RecentsType[RecentsType[\"Removed\"] = 1] = \"Removed\";\n RecentsType[RecentsType[\"Changed\"] = 2] = \"Changed\";\n})(RecentsType || (RecentsType = {}));\nexport default class Observer {\n constructor(app, isTopContext = false, options = {}) {\n this.app = app;\n this.isTopContext = isTopContext;\n this.commited = [];\n this.recents = new Map();\n this.indexes = [];\n this.attributesMap = new Map();\n this.textSet = new Set();\n this.slotMap = new Map();\n this.disableSprites = false;\n /**\n * this option means that, instead of using link element with href to load css,\n * we will try to parse the css text instead and send it as css rules set\n * can (and will) affect performance\n * */\n this.inlineRemoteCss = false;\n this.inlinerOptions = undefined;\n this.domParser = new DOMParser();\n this.throttling = true;\n this.throttledSetNodeData = throttleWithTrailing((id, parentElement, data) => this.sendNodeData(id, parentElement, data), 30);\n this.throttling = !Boolean(options.disableThrottling);\n this.disableSprites = Boolean(options.disableSprites);\n this.inlineRemoteCss = Boolean(options.inlineRemoteCss);\n this.inlinerOptions = options.inlinerOptions;\n this.observer = createMutationObserver(this.app.safe((mutations) => {\n for (const mutation of mutations) {\n // mutations order is sequential\n const target = mutation.target;\n const type = mutation.type;\n if (!isObservable(target)) {\n continue;\n }\n if (type === 'childList') {\n for (let i = 0; i < mutation.removedNodes.length; i++) {\n // Should be the same as bindTree(mutation.removedNodes[i]), but logic needs to be be untied\n if (isObservable(mutation.removedNodes[i])) {\n this.bindNode(mutation.removedNodes[i]);\n }\n }\n for (let i = 0; i < mutation.addedNodes.length; i++) {\n this.bindTree(mutation.addedNodes[i]);\n }\n continue;\n }\n const id = this.app.nodes.getID(target);\n if (id === undefined) {\n continue;\n }\n if (!this.recents.has(id)) {\n this.recents.set(id, RecentsType.Changed); // TODO only when altered\n }\n if (type === 'attributes') {\n const name = mutation.attributeName;\n if (name === null) {\n continue;\n }\n let attr = this.attributesMap.get(id);\n if (attr === undefined) {\n this.attributesMap.set(id, (attr = new Set()));\n }\n attr.add(name);\n continue;\n }\n if (type === 'characterData') {\n this.textSet.add(id);\n continue;\n }\n }\n this.commitNodes();\n }), this.app.options.forceNgOff);\n }\n clear() {\n this.commited.length = 0;\n this.recents.clear();\n this.indexes.length = 1;\n this.attributesMap.clear();\n this.textSet.clear();\n }\n /**\n * EXPERIMENTAL: Unbinds the removed nodes in case of iframe src change.\n *\n * right now, we're relying on nodes.maintainer\n */\n handleIframeSrcChange(iframe) {\n const oldContentDocument = iframe.contentDocument;\n if (oldContentDocument) {\n const id = this.app.nodes.getID(oldContentDocument);\n if (id !== undefined) {\n const walker = document.createTreeWalker(oldContentDocument, NodeFilter.SHOW_ELEMENT + NodeFilter.SHOW_TEXT, {\n acceptNode: (node) => isIgnored(node) || this.app.nodes.getID(node) === undefined\n ? NodeFilter.FILTER_REJECT\n : NodeFilter.FILTER_ACCEPT,\n }, \n // @ts-ignore\n false);\n let removed = 0;\n const totalBeforeRemove = this.app.nodes.getNodeCount();\n const contentDocument = iframe.contentDocument;\n const nodesUnregister = this.app.nodes.unregisterNode.bind(this.app.nodes);\n while (walker.nextNode()) {\n if (!contentDocument.contains(walker.currentNode)) {\n removed += 1;\n nodesUnregister(walker.currentNode);\n }\n }\n const removedPercent = Math.floor((removed / totalBeforeRemove) * 100);\n if (removedPercent > 30) {\n this.app.send(UnbindNodes(removedPercent));\n }\n }\n }\n }\n sendNodeAttribute(id, node, name, value) {\n if (isSVGElement(node)) {\n if (name.startsWith('xlink:')) {\n name = name.substring(6);\n }\n if (value === null) {\n this.app.send(RemoveNodeAttribute(id, name));\n }\n if (isUseElement(node) && name === 'href' && !this.disableSprites) {\n parseUseEl(node, 'svgtext', this.domParser)\n .then((svgData) => {\n if (svgData) {\n this.app.send(SetNodeAttribute(id, name, `_$OPENREPLAY_SPRITE$_${svgData}`));\n }\n })\n .catch((e) => {\n console.error('Openreplay: Error parsing <use> element:', e);\n });\n return;\n }\n if (name === 'href') {\n if (value.length > 1e5) {\n value = '';\n }\n this.app.send(SetNodeAttributeURLBased(id, name, value, this.app.getBaseHref()));\n }\n else {\n this.app.attributeSender.sendSetAttribute(id, name, value);\n }\n return;\n }\n if (name === 'src' ||\n name === 'srcset' ||\n name === 'integrity' ||\n name === 'crossorigin' ||\n name === 'autocomplete' ||\n name.substring(0, 2) === 'on') {\n return;\n }\n if (name === 'value' &&\n hasTag(node, 'input') &&\n node.type !== 'button' &&\n node.type !== 'reset' &&\n node.type !== 'submit') {\n return;\n }\n if (value === null) {\n this.app.send(RemoveNodeAttribute(id, name));\n return;\n }\n if (name === 'style' || (name === 'href' && hasTag(node, 'link'))) {\n if ('rel' in node && node.rel === 'stylesheet' && this.inlineRemoteCss) {\n setTimeout(() => {\n inlineRemoteCss(\n // @ts-ignore\n node, id, this.app.getBaseHref(), nextID, (id, cssText, index, baseHref) => {\n this.app.send(AdoptedSSInsertRuleURLBased(id, cssText, index, baseHref));\n }, (sheetId, ownerId) => {\n this.app.send(AdoptedSSAddOwner(sheetId, ownerId));\n }, this.inlinerOptions?.forceFetch, this.inlinerOptions?.forcePlain, (cssText, fakeTextId) => {\n this.app.send(CreateTextNode(fakeTextId, id, 0));\n setTimeout(() => {\n this.app.send(SetCSSDataURLBased(fakeTextId, cssText, this.app.getBaseHref()));\n }, 10);\n });\n }, 0);\n return;\n }\n this.app.send(SetNodeAttributeURLBased(id, name, value, this.app.getBaseHref()));\n return;\n }\n if (name === 'href' || value.length > 1e5) {\n value = '';\n }\n if (['alt', 'placeholder'].includes(name) && this.app.sanitizer.privateMode) {\n value = value.replaceAll(/./g, '*');\n }\n this.app.attributeSender.sendSetAttribute(id, name, value);\n }\n sendNodeData(id, parentElement, data) {\n if (hasTag(parentElement, 'style')) {\n this.app.send(SetCSSDataURLBased(id, data, this.app.getBaseHref()));\n return;\n }\n data = this.app.sanitizer.sanitize(id, data);\n this.app.send(SetNodeData(id, data));\n }\n bindNode(node) {\n const [id, isNew] = this.app.nodes.registerNode(node);\n if (isElementNode(node) && hasTag(node, 'slot')) {\n this.app.nodes.attachNodeListener(node, 'slotchange', () => {\n const sl = node;\n sl.assignedNodes({ flatten: true }).forEach((n) => {\n const nid = this.app.nodes.getID(n);\n if (nid !== undefined) {\n this.recents.set(nid, RecentsType.Changed);\n }\n });\n });\n }\n if (isNew) {\n this.recents.set(id, RecentsType.New);\n }\n else if (this.recents.get(id) !== RecentsType.New) {\n this.recents.set(id, RecentsType.Removed);\n }\n }\n bindTree(node) {\n if (!isObservable(node)) {\n return;\n }\n this.bindNode(node);\n const walker = document.createTreeWalker(node, NodeFilter.SHOW_ELEMENT + NodeFilter.SHOW_TEXT, {\n acceptNode: (node) => {\n if (this.app.nodes.getID(node) !== undefined) {\n this.app.debug.info('! Node is already bound', node);\n }\n return isIgnored(node) || this.app.nodes.getID(node) !== undefined\n ? NodeFilter.FILTER_REJECT\n : NodeFilter.FILTER_ACCEPT;\n },\n }, \n // @ts-ignore\n false);\n while (walker.nextNode()) {\n this.bindNode(walker.currentNode);\n }\n }\n unbindTree(node) {\n const id = this.app.nodes.unregisterNode(node);\n if (id !== undefined) {\n this.slotMap.delete(id);\n }\n if (id !== undefined && this.recents.get(id) === RecentsType.Removed) {\n // Sending RemoveNode only for parent to maintain\n this.app.send(RemoveNode(id));\n // Unregistering all the children in order to clear the memory\n const walker = document.createTreeWalker(node, NodeFilter.SHOW_ELEMENT + NodeFilter.SHOW_TEXT, {\n acceptNode: (node) => isIgnored(node) || this.app.nodes.getID(node) === undefined\n ? NodeFilter.FILTER_REJECT\n : NodeFilter.FILTER_ACCEPT,\n }, \n // @ts-ignore\n false);\n let removed = 0;\n const totalBeforeRemove = this.app.nodes.getNodeCount();\n while (walker.nextNode()) {\n removed += 1;\n this.app.nodes.unregisterNode(walker.currentNode);\n }\n const removedPercent = Math.floor((removed / totalBeforeRemove) * 100);\n if (removedPercent > 30) {\n this.app.send(UnbindNodes(removedPercent));\n }\n }\n }\n // A top-consumption function on the infinite lists test. (~1% of performance resources)\n _commitNode(id, node) {\n if (isRootNode(node)) {\n return true;\n }\n let slot = node.assignedSlot;\n const parent = node.parentNode;\n let parentID;\n // Disable parent check for the upper context HTMLHtmlElement, because it is root there... (before)\n // TODO: get rid of \"special\" cases (there is an issue with CreateDocument altered behaviour though)\n // TODO: Clean the logic (though now it workd fine)\n if (!hasTag(node, 'html') || !this.isTopContext) {\n if (parent === null) {\n // Sometimes one observation contains attribute mutations for the removimg node, which gets ignored here.\n // That shouldn't affect the visual rendering ( should it? maybe when transition applied? )\n this.unbindTree(node);\n return false;\n }\n parentID = this.app.nodes.getID(parent);\n if (parentID === undefined) {\n this.unbindTree(node);\n return false;\n }\n if (!this.commitNode(parentID)) {\n this.unbindTree(node);\n return false;\n }\n this.app.sanitizer.handleNode(id, parentID, node);\n if (this.app.sanitizer.isHidden(parentID)) {\n return false;\n }\n }\n // From here parentID === undefined if node is top context HTML node\n let sibling = node.previousSibling;\n while (sibling !== null) {\n const siblingID = this.app.nodes.getID(sibling);\n if (siblingID !== undefined) {\n this.commitNode(siblingID);\n this.indexes[id] = this.indexes[siblingID] + 1;\n break;\n }\n sibling = sibling.previousSibling;\n }\n if (sibling === null) {\n this.indexes[id] = 0;\n }\n const recentsType = this.recents.get(id);\n const isNew = recentsType === RecentsType.New;\n const index = this.indexes[id];\n if (index === undefined) {\n throw 'commitNode: missing node index';\n }\n if (isNew) {\n if (isElementNode(node)) {\n let el = node;\n if (parentID !== undefined) {\n if (this.app.sanitizer.isHidden(id)) {\n const width = el.clientWidth;\n const height = el.clientHeight;\n el = node.cloneNode();\n el.style.width = `${width}px`;\n el.style.height = `${height}px`;\n }\n if ('rel' in el && el.rel === 'stylesheet' && this.inlineRemoteCss) {\n this.app.send(CreateElementNode(id, parentID, index, 'STYLE', false));\n }\n else {\n this.app.send(CreateElementNode(id, parentID, index, el.tagName, isSVGElement(node)));\n }\n }\n for (let i = 0; i < el.attributes.length; i++) {\n const attr = el.attributes[i];\n this.sendNodeAttribute(id, el, attr.nodeName, attr.value);\n }\n }\n else if (isTextNode(node)) {\n // for text node id != 0, hence parentID !== undefined and parent is Element\n this.app.send(CreateTextNode(id, parentID, index));\n if (this.throttling) {\n this.throttledSetNodeData(id, parent, node.data);\n }\n else {\n this.sendNodeData(id, parent, node.data);\n }\n }\n if (slot) {\n const slotID = this.app.nodes.getID(slot);\n if (slotID !== undefined) {\n this.slotMap.set(id, slotID);\n this.app.send(SetNodeSlot(id, slotID));\n }\n }\n return true;\n }\n if (recentsType === RecentsType.Removed && parentID !== undefined) {\n this.app.send(MoveNode(id, parentID, index));\n if (slot) {\n const slotID = this.app.nodes.getID(slot);\n if (slotID !== undefined && this.slotMap.get(id) !== slotID) {\n this.slotMap.set(id, slotID);\n this.app.send(SetNodeSlot(id, slotID));\n }\n }\n else if (this.slotMap.has(id)) {\n this.slotMap.delete(id);\n this.app.send(SetNodeSlot(id, 0));\n }\n }\n const attr = this.attributesMap.get(id);\n if (attr !== undefined) {\n if (!isElementNode(node)) {\n throw 'commitNode: node is not an element';\n }\n for (const name of attr) {\n this.sendNodeAttribute(id, node, name, node.getAttribute(name));\n }\n }\n if (this.textSet.has(id)) {\n if (!isTextNode(node)) {\n throw 'commitNode: node is not a text';\n }\n // for text node id != 0, hence parent is Element\n if (this.throttling) {\n this.throttledSetNodeData(id, parent, node.data);\n }\n else {\n this.sendNodeData(id, parent, node.data);\n }\n }\n return true;\n }\n commitNode(id) {\n const node = this.app.nodes.getNode(id);\n if (!node) {\n return false;\n }\n const cmt = this.commited[id];\n if (cmt !== undefined) {\n return cmt;\n }\n return (this.commited[id] = this._commitNode(id, node));\n }\n commitNodes(isStart = false) {\n let node;\n for (const [id, type] of this.recents.entries()) {\n this.commitNode(id);\n if (type === RecentsType.New && (node = this.app.nodes.getNode(id))) {\n this.app.nodes.callNodeCallbacks(node, isStart);\n }\n }\n this.clear();\n }\n // ISSSUE (nodeToBinde should be the same as node in all cases. Look at the comment about 0-node at the beginning of the file.)\n // TODO: use one observer instance for all iframes/shadowRoots (composition instiad of inheritance)\n observeRoot(node, beforeCommit, nodeToBind = node) {\n this.observer.observe(node, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true,\n attributeOldValue: false,\n characterDataOldValue: false,\n });\n this.bindTree(nodeToBind);\n beforeCommit(this.app.nodes.getID(node));\n this.commitNodes(true);\n }\n disconnect() {\n this.observer.disconnect();\n this.clear();\n this.throttledSetNodeData.clear();\n }\n}\n","import Observer from './observer.js';\nimport { CreateIFrameDocument } from '../messages.gen.js';\nexport default class IFrameObserver extends Observer {\n observe(iframe) {\n const doc = iframe.contentDocument;\n const hostID = this.app.nodes.getID(iframe);\n if (!doc || hostID === undefined) {\n return;\n }\n // Have to observe document, because the inner <html> might be changed\n this.observeRoot(doc, (docID) => {\n //MBTODO: do not send if empty (send on load? it might be in-place iframe, like our replayer, which does not get loaded)\n if (docID === undefined) {\n this.app.debug.log('OpenReplay: Iframe document not bound');\n return;\n }\n this.docId = docID;\n this.app.send(CreateIFrameDocument(hostID, docID));\n });\n }\n syntheticObserve(rootNodeId, doc) {\n this.observeRoot(doc, (docID) => {\n if (docID === undefined) {\n this.app.debug.log('OpenReplay: Iframe document not bound');\n return;\n }\n this.app.send(CreateIFrameDocument(rootNodeId, docID));\n });\n }\n}\n","import Observer from './observer.js';\nimport { CreateIFrameDocument } from '../messages.gen.js';\nexport default class ShadowRootObserver extends Observer {\n observe(el) {\n const shRoot = el.shadowRoot;\n const hostID = this.app.nodes.getID(el);\n if (!shRoot || hostID === undefined) {\n return;\n } // log\n this.observeRoot(shRoot, (rootID) => {\n if (rootID === undefined) {\n this.app.debug.error('OpenReplay: Shadow Root was not bound');\n return;\n }\n this.app.send(CreateIFrameDocument(hostID, rootID));\n });\n }\n}\n","export default class IFrameOffsets {\n constructor() {\n this.states = new WeakMap();\n }\n calcOffset(state) {\n let parLeft = 0, parTop = 0;\n if (state.parent) {\n ;\n [parLeft, parTop] = this.calcOffset(state.parent);\n }\n if (!state.offset) {\n const { left, top } = state.iFrame.getBoundingClientRect();\n state.offset = [left, top];\n }\n const [left, top] = state.offset;\n return [parLeft + left, parTop + top]; // TODO: store absolute sum, invalidate whole subtree. Otherwise it is summated on each mousemove\n }\n getDocumentOffset(doc) {\n const state = this.states.get(doc);\n if (!state) {\n return [0, 0];\n } // topmost doc\n return this.calcOffset(state);\n }\n observe(iFrame) {\n const doc = iFrame.contentDocument;\n if (!doc) {\n return;\n }\n const parentDoc = iFrame.ownerDocument;\n const parentState = this.states.get(parentDoc);\n const state = {\n offset: null, // lazy calc\n iFrame,\n parent: parentState || null, // null when parentDoc is the topmost document\n clear: () => {\n parentDoc.removeEventListener('scroll', invalidateOffset);\n parentDoc.defaultView?.removeEventListener('resize', invalidateOffset);\n },\n };\n const invalidateOffset = () => {\n state.offset = null;\n };\n // anything more reliable? This does not cover all cases (layout changes are ignored, for ex.)\n parentDoc.addEventListener('scroll', invalidateOffset);\n parentDoc.defaultView?.addEventListener('resize', invalidateOffset);\n this.states.set(doc, state);\n }\n clear() {\n this.states = new WeakMap();\n }\n}\n","import Observer from './observer.js';\nimport { isElementNode, hasTag } from '../guards.js';\nimport IFrameObserver from './iframe_observer.js';\nimport ShadowRootObserver from './shadow_root_observer.js';\nimport IFrameOffsets from './iframe_offsets.js';\nimport { CreateDocument } from '../messages.gen.js';\nimport { IN_BROWSER, hasOpenreplayAttribute, canAccessIframe } from '../../utils.js';\nexport var InlineCssMode;\n(function (InlineCssMode) {\n InlineCssMode[InlineCssMode[\"Unset\"] = -1] = \"Unset\";\n /** default behavior -- will parse and cache the css file on backend */\n InlineCssMode[InlineCssMode[\"Disabled\"] = 0] = \"Disabled\";\n /** will attempt to record the linked css file as AdoptedStyleSheet object */\n InlineCssMode[InlineCssMode[\"Inline\"] = 1] = \"Inline\";\n /** will fetch the file, then simulate AdoptedStyleSheets behavior programmaticaly for the replay */\n InlineCssMode[InlineCssMode[\"InlineFetched\"] = 2] = \"InlineFetched\";\n /** will fetch the file, then save it as plain css inside <style> node */\n InlineCssMode[InlineCssMode[\"PlainFetched\"] = 3] = \"PlainFetched\";\n})(InlineCssMode || (InlineCssMode = {}));\nconst localhostStylesDoc = 'https://docs.openreplay.com/en/troubleshooting/localhost/';\nfunction getInlineOptions(mode, logger) {\n switch (mode) {\n case InlineCssMode.Inline:\n return {\n inlineRemoteCss: true,\n inlinerOptions: {\n forceFetch: false,\n forcePlain: false,\n },\n };\n case InlineCssMode.InlineFetched:\n return {\n inlineRemoteCss: true,\n inlinerOptions: {\n forceFetch: true,\n forcePlain: false,\n },\n };\n case InlineCssMode.PlainFetched:\n return {\n inlineRemoteCss: true,\n inlinerOptions: {\n forceFetch: true,\n forcePlain: true,\n },\n };\n case InlineCssMode.Unset:\n const isLocalhost = /^https?:\\/\\/(localhost|127\\.0\\.0\\.1)(:\\d+)?\\/?/.test(window.location.href);\n if (isLocalhost) {\n logger(`Enabling InlineCssMode.PlainFetched by default on localhost to preserve css styles, refer to ${localhostStylesDoc} for details, set InlineCssMode to 0 to skip this behavior`);\n return {\n inlineRemoteCss: true,\n inlinerOptions: {\n forceFetch: true,\n forcePlain: true,\n },\n };\n }\n else {\n return {\n inlineRemoteCss: false,\n inlinerOptions: {\n forceFetch: false,\n forcePlain: false,\n },\n };\n }\n case InlineCssMode.Disabled:\n default:\n return {\n inlineRemoteCss: false,\n inlinerOptions: {\n forceFetch: false,\n forcePlain: false,\n },\n };\n }\n}\nconst attachShadowNativeFn = IN_BROWSER ? Element.prototype.attachShadow : () => new ShadowRoot();\nexport default class TopObserver extends Observer {\n constructor(params) {\n const opts = Object.assign({\n captureIFrames: true,\n disableSprites: false,\n inlineCss: 0,\n }, params.options);\n const observerOptions = {\n disableSprites: opts.disableSprites,\n disableThrottling: opts.disableThrottling,\n ...getInlineOptions(opts.inlineCss, console.warn),\n };\n super(params.app, true, observerOptions);\n this.iframeOffsets = new IFrameOffsets();\n this.contextCallbacks = [];\n // Attached once per Tracker instance\n this.contextsSet = new WeakSet();\n this.iframeObserversArr = [];\n this.iframeObservers = new WeakMap();\n this.docObservers = new WeakMap();\n this.shadowRootObservers = new WeakMap();\n this.app = params.app;\n this.options = opts;\n // IFrames\n this.app.nodes.attachNodeCallback((node) => {\n if (hasTag(node, 'iframe') &&\n ((this.options.captureIFrames && !hasOpenreplayAttribute(node, 'obscured')) ||\n hasOpenreplayAttribute(node, 'capture'))) {\n this.handleIframe(node);\n }\n });\n // ShadowDOM\n this.app.nodes.attachNodeCallback((node) => {\n if (isElementNode(node) && node.shadowRoot !== null) {\n this.handleShadowRoot(node.shadowRoot);\n }\n });\n }\n attachContextCallback(cb) {\n this.contextCallbacks.push(cb);\n }\n getDocumentOffset(doc) {\n return this.iframeOffsets.getDocumentOffset(doc);\n }\n handleIframe(iframe) {\n // setTimeout is required. Otherwise some event listeners (scroll, mousemove) applied in modules\n // do not work on the iframe document when it 've been loaded dynamically ((why?))\n const handle = this.app.safe(() => setTimeout(() => {\n const id = this.app.nodes.getID(iframe);\n if (id === undefined || !canAccessIframe(iframe))\n return;\n const currentWin = iframe.contentWindow;\n const currentDoc = iframe.contentDocument;\n if (!currentDoc) {\n this.app.debug.warn('no doc for iframe found', iframe);\n return;\n }\n if (currentDoc && this.docObservers.has(currentDoc)) {\n this.app.debug.info('doc already observed for', id);\n return;\n }\n const observer = new IFrameObserver(this.app, false, {});\n this.iframeObservers.set(iframe, observer);\n this.docObservers.set(currentDoc, observer);\n this.iframeObserversArr.push(observer);\n observer.observe(iframe);\n this.iframeOffsets.observe(iframe);\n if (currentWin &&\n // Sometimes currentWin.window is null (not in specification). Such window object is not functional\n currentWin === currentWin.window &&\n !this.contextsSet.has(currentWin) // for each context callbacks called once per Tracker (TopObserver) instance\n //TODO: more explicit logic\n ) {\n this.contextsSet.add(currentWin);\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/41684\n this.contextCallbacks.forEach((cb) => cb(currentWin));\n }\n // we need this delay because few iframes stacked one in another with rapid updates will break the player (or browser engine rather?)\n }, 250));\n iframe.addEventListener('load', handle);\n handle();\n }\n handleShadowRoot(shRoot) {\n const observer = new ShadowRootObserver(this.app);\n this.shadowRootObservers.set(shRoot, observer);\n observer.observe(shRoot.host);\n }\n observe() {\n // Protection from several subsequent calls?\n const observer = this;\n Element.prototype.attachShadow = function () {\n // eslint-disable-next-line\n const shadow = attachShadowNativeFn.apply(this, arguments);\n observer.handleShadowRoot(shadow);\n return shadow;\n };\n this.app.nodes.clear();\n // Can observe documentElement (<html>) here, because it is not supposed to be changing.\n // However, it is possible in some exotic cases and may cause an ignorance of the newly created <html>\n // In this case context.document have to be observed, but this will cause\n // the change in the re-player behaviour caused by CreateDocument message:\n // the 0-node (\"fRoot\") will become #document rather than documentElement as it is now.\n // Alternatively - observe(#document) then bindNode(documentElement)\n this.observeRoot(window.document, () => {\n this.app.send(CreateDocument());\n // it has no node_id here\n this.app.nodes.callNodeCallbacks(document, true);\n }, window.document.documentElement);\n }\n crossdomainObserve(rootNodeId, frameOder, frameLevel) {\n const observer = this;\n Element.prototype.attachShadow = function () {\n // eslint-disable-next-line\n const shadow = attachShadowNativeFn.apply(this, arguments);\n observer.handleShadowRoot(shadow);\n return shadow;\n };\n this.app.nodes.clear();\n this.app.nodes.crossdomainMode(frameLevel, frameOder);\n const iframeObserver = new IFrameObserver(this.app);\n this.iframeObservers.set(window.document, iframeObserver);\n iframeObserver.syntheticObserve(rootNodeId, window.document);\n }\n disconnect() {\n this.iframeOffsets.clear();\n Element.prototype.attachShadow = attachShadowNativeFn;\n this.iframeObserversArr.forEach((observer) => observer.disconnect());\n this.iframeObserversArr = [];\n this.iframeObservers = new WeakMap();\n this.shadowRootObservers = new WeakMap();\n this.docObservers = new WeakMap();\n super.disconnect();\n }\n}\n","import { stars, hasOpenreplayAttribute } from '../utils.js';\nimport { isElementNode, isTextNode } from './guards.js';\nexport var SanitizeLevel;\n(function (SanitizeLevel) {\n SanitizeLevel[SanitizeLevel[\"Plain\"] = 0] = \"Plain\";\n SanitizeLevel[SanitizeLevel[\"Obscured\"] = 1] = \"Obscured\";\n SanitizeLevel[SanitizeLevel[\"Hidden\"] = 2] = \"Hidden\";\n})(SanitizeLevel || (SanitizeLevel = {}));\nexport const stringWiper = (input) => input\n .trim()\n .replace(/[^\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff\\s]/g, '*');\nexport default class Sanitizer {\n constructor(params) {\n this.obscured = new Set();\n this.hidden = new Set();\n this.app = params.app;\n const defaultOptions = {\n obscureTextEmails: true,\n obscureTextNumbers: false,\n privateMode: false,\n domSanitizer: undefined,\n };\n this.privateMode = params.options?.privateMode ?? false;\n this.options = Object.assign(defaultOptions, params.options);\n }\n handleNode(id, parentID, node) {\n if (this.options.privateMode) {\n if (isElementNode(node) && !hasOpenreplayAttribute(node, 'unmask')) {\n return this.obscured.add(id);\n }\n if (isTextNode(node) && !hasOpenreplayAttribute(node.parentNode, 'unmask')) {\n return this.obscured.add(id);\n }\n }\n if (this.obscured.has(parentID) ||\n (isElementNode(node) &&\n (hasOpenreplayAttribute(node, 'masked') || hasOpenreplayAttribute(node, 'obscured')))) {\n this.obscured.add(id);\n }\n if (this.hidden.has(parentID) ||\n (isElementNode(node) &&\n (hasOpenreplayAttribute(node, 'htmlmasked') || hasOpenreplayAttribute(node, 'hidden')))) {\n this.hidden.add(id);\n }\n if (this.options.domSanitizer !== undefined && isElementNode(node)) {\n const sanitizeLevel = this.options.domSanitizer(node);\n if (sanitizeLevel === SanitizeLevel.Obscured) {\n this.obscured.add(id);\n }\n if (sanitizeLevel === SanitizeLevel.Hidden) {\n this.hidden.add(id);\n }\n }\n }\n sanitize(id, data) {\n if (this.obscured.has(id)) {\n // TODO: is it the best place to put trim() ? Might trimmed spaces be considered in layout in certain cases?\n return stringWiper(data);\n }\n if (this.options.obscureTextNumbers) {\n data = data.replace(/\\d/g, '0');\n }\n if (this.options.obscureTextEmails) {\n data = data.replace(/^\\w+([+.-]\\w+)*@\\w+([.-]\\w+)*\\.\\w{2,3}$/g, (email) => {\n const [name, domain] = email.split('@');\n const [domainName, host] = domain.split('.');\n return `${stars(name)}@${stars(domainName)}.${stars(host)}`;\n });\n }\n return data;\n }\n isObscured(id) {\n return this.obscured.has(id);\n }\n isHidden(id) {\n return this.hidden.has(id);\n }\n getInnerTextSecure(el) {\n const id = this.app.nodes.getID(el);\n if (!id) {\n return '';\n }\n return this.sanitize(id, el.innerText);\n }\n clear() {\n this.obscured.clear();\n this.hidden.clear();\n }\n}\n","import { generateRandomId } from '../utils.js';\nconst tokenSeparator = '_$_';\nexport default class Session {\n constructor(params) {\n this.metadata = {};\n this.userID = null;\n this.callbacks = [];\n this.timestamp = 0;\n this.getPageNumber = () => {\n const pageNoStr = this.app.sessionStorage.getItem(this.options.session_pageno_key);\n if (pageNoStr == null) {\n return undefined;\n }\n return parseInt(pageNoStr);\n };\n this.incPageNo = () => {\n let pageNo = this.getPageNumber();\n if (pageNo === undefined) {\n pageNo = 0;\n }\n else {\n pageNo++;\n }\n this.app.sessionStorage.setItem(this.options.session_pageno_key, pageNo.toString());\n return pageNo;\n };\n this.getSessionToken = (projectKey) => {\n const tokenWithProject = this.token || this.app.sessionStorage.getItem(this.options.session_token_key);\n if (projectKey && tokenWithProject) {\n const savedProject = tokenWithProject.split(tokenSeparator)[1];\n if (!savedProject || savedProject !== projectKey) {\n this.app.sessionStorage.removeItem(this.options.session_token_key);\n this.token = undefined;\n return undefined;\n }\n }\n const token = tokenWithProject ? tokenWithProject.split(tokenSeparator)[0] : null;\n return token || undefined;\n };\n this.getRawTokenWithProject = () => {\n return this.token || this.app.sessionStorage.getItem(this.options.session_token_key);\n };\n this.setSessionToken = (token, projectKey) => {\n this.token = `${token}${tokenSeparator}${projectKey}`;\n this.app.sessionStorage.setItem(this.options.session_token_key, `${token}${tokenSeparator}${projectKey}`);\n };\n this.app = params.app;\n this.options = params.options;\n this.createTabId();\n }\n attachUpdateCallback(cb) {\n this.callbacks.push(cb);\n }\n handleUpdate(newInfo) {\n if (newInfo.userID == null) {\n delete newInfo.userID;\n }\n if (newInfo.sessionID == null) {\n delete newInfo.sessionID;\n }\n this.callbacks.forEach((cb) => cb(newInfo));\n }\n assign(newInfo) {\n if (newInfo.userID !== undefined) {\n // TODO clear nullable/undefinable types\n this.userID = newInfo.userID;\n }\n if (newInfo.metadata !== undefined) {\n Object.entries(newInfo.metadata).forEach(([k, v]) => (this.metadata[k] = v));\n }\n if (newInfo.sessionID !== undefined) {\n this.sessionID = newInfo.sessionID;\n }\n if (newInfo.timestamp !== undefined) {\n this.timestamp = newInfo.timestamp;\n }\n if (newInfo.projectID !== undefined) {\n this.projectID = newInfo.projectID;\n }\n this.handleUpdate(newInfo);\n }\n setMetadata(key, value) {\n this.metadata[key] = value;\n this.handleUpdate({ metadata: { [key]: value } });\n }\n setUserID(userID) {\n this.userID = userID;\n this.handleUpdate({ userID });\n }\n setUserInfo(userInfo) {\n this.userInfo = userInfo;\n }\n applySessionHash(hash) {\n const hashParts = decodeURI(hash).split('&');\n let token = hash;\n let pageNoStr = '100500'; // back-compat for sessionToken\n if (hashParts.length == 2) {\n ;\n [pageNoStr, token] = hashParts;\n }\n if (!pageNoStr || !token) {\n return;\n }\n this.app.sessionStorage.setItem(this.options.session_token_key, token);\n this.app.sessionStorage.setItem(this.options.session_pageno_key, pageNoStr);\n }\n getSessionHash() {\n const pageNo = this.getPageNumber();\n const token = this.getRawTokenWithProject();\n if (pageNo === undefined || token === undefined) {\n return;\n }\n return encodeURI(String(pageNo) + '&' + token);\n }\n getTabId() {\n if (!this.tabId)\n this.createTabId();\n return this.tabId;\n }\n regenerateTabId() {\n const randomId = generateRandomId(12);\n this.app.sessionStorage.setItem(this.options.session_tabid_key, randomId);\n this.tabId = randomId;\n }\n createTabId() {\n const localId = this.app.sessionStorage.getItem(this.options.session_tabid_key);\n if (localId) {\n this.tabId = localId;\n }\n else {\n this.regenerateTabId();\n }\n }\n getInfo() {\n return {\n sessionID: this.sessionID,\n metadata: this.metadata,\n userID: this.userID,\n timestamp: this.timestamp,\n projectID: this.projectID,\n };\n }\n reset() {\n this.app.sessionStorage.removeItem(this.options.session_token_key);\n this.metadata = {};\n this.userID = null;\n this.sessionID = undefined;\n this.timestamp = 0;\n }\n}\n","function wrap(callback, n) {\n let t = 0;\n return () => {\n if (t++ >= n) {\n t = 0;\n callback();\n }\n };\n}\nexport default class Ticker {\n constructor(app) {\n this.app = app;\n this.timer = null;\n this.callbacks = [];\n }\n /**\n * @param {Callback} callback - repeated cb\n * @param {number} n - number of turn skips; ticker have a 30 ms cycle\n * @param {boolean} useSafe - using safe wrapper to check if app is active\n * @param {object} thisArg - link to <this>\n * */\n attach(callback, n = 0, useSafe = true, thisArg) {\n if (thisArg) {\n callback = callback.bind(thisArg);\n }\n if (useSafe) {\n callback = this.app.safe(callback);\n }\n this.callbacks.unshift(n ? wrap(callback, n) : callback) - 1;\n }\n start() {\n if (this.timer === null) {\n this.timer = setInterval(() => this.callbacks.forEach((cb) => {\n if (cb)\n cb();\n }), 30);\n }\n }\n stop() {\n if (this.timer !== null) {\n clearInterval(this.timer);\n this.timer = null;\n }\n }\n}\n","import AttributeSender from '../modules/attributeSender.js';\nimport ConditionsManager from '../modules/conditionsManager.js';\nimport { deviceMemory, jsHeapSizeLimit } from '../modules/performance.js';\nimport TagWatcher from '../modules/tagWatcher.js';\nimport { adjustTimeOrigin, createEventListener, deleteEventListener, now, requestIdleCb, simpleMerge, } from '../utils.js';\nimport CanvasRecorder from './canvas.js';\nimport Logger, { LogLevel } from './logger.js';\nimport { Metadata, TabChange, TabData, TagTrigger, Timestamp, UserID, WSChannel, } from './messages.gen.js';\nimport Nodes from './nodes/index.js';\nimport Observer, { InlineCssMode } from './observer/top_observer.js';\nimport Sanitizer from './sanitizer.js';\nimport Session from './session.js';\nimport Ticker from './ticker.js';\nexport { InlineCssMode } from './observer/top_observer.js';\n/**\n * this value is injected during build time via rollup\n * */\n// @ts-ignore\nconst workerBodyFn = global.WEBWORKER_BODY;\nconst CANCELED = 'canceled';\nconst bufferStorageKey = 'or_buffer_1';\nconst UnsuccessfulStart = (reason) => ({ reason, success: false });\nconst SuccessfulStart = (body) => ({ ...body, success: true });\nvar ActivityState;\n(function (ActivityState) {\n ActivityState[ActivityState[\"NotActive\"] = 0] = \"NotActive\";\n ActivityState[ActivityState[\"Starting\"] = 1] = \"Starting\";\n ActivityState[ActivityState[\"Active\"] = 2] = \"Active\";\n ActivityState[ActivityState[\"ColdStart\"] = 3] = \"ColdStart\";\n})(ActivityState || (ActivityState = {}));\n// TODO: use backendHost only\nexport const DEFAULT_INGEST_POINT = 'https://api.openreplay.com/ingest';\nfunction getTimezone() {\n const offset = new Date().getTimezoneOffset() * -1;\n const sign = offset >= 0 ? '+' : '-';\n const hours = Math.floor(Math.abs(offset) / 60);\n const minutes = Math.abs(offset) % 60;\n return `UTC${sign}${String(hours).padStart(2, '0')}:${String(minutes).padStart(2, '0')}`;\n}\nconst delay = (ms) => new Promise((res) => setTimeout(res, ms));\nconst proto = {\n // ask if there are any tabs alive\n ask: 'never-gonna-give-you-up',\n // response from another tab\n resp: 'never-gonna-let-you-down',\n // regenerating id (copied other tab)\n reg: 'never-gonna-run-around-and-desert-you',\n iframeSignal: 'tracker inside a child iframe',\n iframeId: 'getting node id for child iframe',\n iframeBatch: 'batch of messages from an iframe window',\n parentAlive: 'signal that parent is live',\n killIframe: 'stop tracker inside frame',\n startIframe: 'start tracker inside frame',\n // checking updates\n polling: 'hello-how-are-you-im-under-the-water-please-help-me',\n // happens if tab is old and has outdated token but\n // not communicating with backend to update it (for whatever reason)\n reset: 'reset-your-session-please',\n};\nexport default class App {\n constructor(projectKey, sessionToken, options, signalError, insideIframe) {\n this.signalError = signalError;\n this.insideIframe = insideIframe;\n this.messages = [];\n /**\n * we need 2 buffers, so we don't lose anything\n * @read coldStart implementation\n * */\n this.bufferedMessages1 = [];\n this.bufferedMessages2 = [];\n this.startCallbacks = [];\n this.stopCallbacks = [];\n this.commitCallbacks = [];\n this.activityState = ActivityState.NotActive;\n this.version = 'TRACKER_VERSION'; // TODO: version compatability check inside each plugin.\n this.socketMode = false;\n this.compressionThreshold = 24 * 1000;\n this.bc = null;\n this.canvasRecorder = null;\n this.conditionsManager = null;\n this.canStart = false;\n this.rootId = null;\n this.pageFrames = [];\n this.frameOderNumber = 0;\n this.frameLevel = 0;\n this.emptyBatchCounter = 0;\n /** used by child iframes for crossdomain only */\n this.parentActive = false;\n this.checkStatus = () => {\n return this.parentActive;\n };\n this.parentCrossDomainFrameListener = (event) => {\n const { data } = event;\n if (!data || event.source === window)\n return;\n if (data.line === proto.startIframe) {\n if (this.active())\n return;\n try {\n this.allowAppStart();\n void this.start();\n }\n catch (e) {\n console.error('children frame restart failed:', e);\n }\n }\n if (data.line === proto.parentAlive) {\n this.parentActive = true;\n }\n if (data.line === proto.iframeId) {\n this.parentActive = true;\n this.rootId = data.id;\n this.session.setSessionToken(data.token, this.projectKey);\n this.frameOderNumber = data.frameOrderNumber;\n this.frameLevel = data.frameLevel;\n this.debug.log('starting iframe tracking', data);\n this.allowAppStart();\n }\n if (data.line === proto.killIframe) {\n if (this.active()) {\n this.stop();\n }\n }\n };\n /**\n * context ids for iframes,\n * order is not so important as long as its consistent\n * */\n this.trackedFrames = [];\n this.crossDomainIframeListener = (event) => {\n if (!this.active() || event.source === window)\n return;\n const { data } = event;\n if (!data)\n return;\n if (data.line === proto.iframeSignal) {\n // @ts-ignore\n event.source?.postMessage({ ping: true, line: proto.parentAlive }, '*');\n const signalId = async () => {\n if (event.source === null) {\n return console.error('Couldnt connect to event.source for child iframe tracking');\n }\n const id = await this.checkNodeId(event.source);\n if (!id) {\n this.debug.log('Couldnt get node id for iframe', event.source);\n return;\n }\n try {\n if (this.trackedFrames.includes(data.context)) {\n this.debug.log('Trying to observe already added iframe; ignore if its a restart');\n }\n else {\n this.trackedFrames.push(data.context);\n }\n await this.waitStarted();\n const token = this.session.getSessionToken(this.projectKey);\n const order = this.trackedFrames.findIndex((f) => f === data.context) + 1;\n if (order === 0) {\n this.debug.error('Couldnt get order number for iframe', data.context, this.trackedFrames);\n }\n const iframeData = {\n line: proto.iframeId,\n id,\n token,\n frameOrderNumber: order,\n frameLevel: this.frameLevel + 1,\n };\n this.debug.log('Got child frame signal; nodeId', id, event.source, iframeData);\n // @ts-ignore\n event.source?.postMessage(iframeData, '*');\n }\n catch (e) {\n console.error(e);\n }\n };\n void signalId();\n }\n /**\n * proxying messages from iframe to main body, so they can be in one batch (same indexes, etc)\n * plus we rewrite some of the messages to be relative to the main context/window\n * */\n if (data.line === proto.iframeBatch) {\n const msgBatch = data.messages;\n const mappedMessages = [];\n msgBatch.forEach((msg) => {\n if (msg[0] === 20 /* MType.MouseMove */) {\n let fixedMessage = msg;\n this.pageFrames.forEach((frame) => {\n if (frame.contentWindow === event.source) {\n const [type, x, y] = msg;\n const { left, top } = frame.getBoundingClientRect();\n fixedMessage = [type, x + left, y + top];\n }\n });\n mappedMessages.push(fixedMessage);\n }\n if (msg[0] === 68 /* MType.MouseClick */) {\n let fixedMessage = msg;\n this.pageFrames.forEach((frame) => {\n if (frame.contentWindow === event.source) {\n const [type, id, hesitationTime, label, selector, normX, normY] = msg;\n const { left, top, width, height } = frame.getBoundingClientRect();\n const contentWidth = document.documentElement.scrollWidth;\n const contentHeight = document.documentElement.scrollHeight;\n // (normalizedX * frameWidth + frameLeftOffset)/docSize\n const fullX = (normX / 100) * width + left;\n const fullY = (normY / 100) * height + top;\n const fixedX = fullX / contentWidth;\n const fixedY = fullY / contentHeight;\n fixedMessage = [\n type,\n id,\n hesitationTime,\n label,\n selector,\n Math.round(fixedX * 1e3) / 1e1,\n Math.round(fixedY * 1e3) / 1e1,\n ];\n }\n });\n mappedMessages.push(fixedMessage);\n }\n if (![28 /* MType.UserID */, 29 /* MType.UserAnonymousID */, 30 /* MType.Metadata */].includes(msg[0])) {\n mappedMessages.push(msg);\n }\n });\n this.messages.push(...mappedMessages);\n }\n if (data.line === proto.polling) {\n if (!this.pollingQueue.order.length) {\n return;\n }\n const nextCommand = this.pollingQueue.order[0];\n if (nextCommand && this.pollingQueue[nextCommand].length === 0) {\n this.pollingQueue.order = this.pollingQueue.order.filter((c) => c !== nextCommand);\n return;\n }\n if (this.pollingQueue[nextCommand].includes(data.context)) {\n this.pollingQueue[nextCommand] = this.pollingQueue[nextCommand].filter((c) => c !== data.context);\n // @ts-ignore\n event.source?.postMessage({ line: nextCommand }, '*');\n if (this.pollingQueue[nextCommand].length === 0) {\n this.pollingQueue.order.shift();\n }\n }\n }\n };\n /**\n * { command : [remaining iframes] }\n * + order of commands\n **/\n this.pollingQueue = {\n order: [],\n };\n this.addCommand = (cmd) => {\n this.pollingQueue.order.push(cmd);\n this.pollingQueue[cmd] = [...this.trackedFrames];\n };\n this.bootChildrenFrames = async () => {\n await this.waitStarted();\n this.addCommand(proto.startIframe);\n };\n this.killChildrenFrames = () => {\n this.addCommand(proto.killIframe);\n };\n this.signalIframeTracker = () => {\n const thisTab = this.session.getTabId();\n window.parent.postMessage({\n line: proto.iframeSignal,\n source: thisTab,\n context: this.contextId,\n }, this.options.crossdomain?.parentDomain ?? '*');\n /**\n * since we need to wait uncertain amount of time\n * and I don't want to have recursion going on,\n * we'll just use a timeout loop with backoff\n * */\n const maxRetries = 10;\n let retries = 0;\n let delay = 250;\n let cumulativeDelay = 0;\n let stopAttempts = false;\n const checkAndSendMessage = () => {\n if (stopAttempts || this.checkStatus()) {\n stopAttempts = true;\n return;\n }\n window.parent.postMessage({\n line: proto.iframeSignal,\n source: thisTab,\n context: this.contextId,\n }, this.options.crossdomain?.parentDomain ?? '*');\n this.debug.info('Trying to signal to parent, attempt:', retries + 1);\n retries++;\n };\n for (let i = 0; i < maxRetries; i++) {\n if (this.checkStatus()) {\n stopAttempts = true;\n break;\n }\n cumulativeDelay += delay;\n setTimeout(() => {\n checkAndSendMessage();\n }, cumulativeDelay);\n delay *= 1.5;\n }\n };\n this.startTimeout = null;\n this.restart = () => {\n this.stop(false);\n this.waitStatus(ActivityState.NotActive).then(() => {\n this.allowAppStart();\n this.start(this.prevOpts, true)\n .then((r) => {\n this.debug.info('Session restart', r);\n })\n .catch((e) => {\n this.debug.error('Session restart failed', e);\n });\n });\n };\n this.send = (message, urgent = false) => {\n if (this.activityState === ActivityState.NotActive) {\n return;\n }\n // ====================================================\n if (this.activityState === ActivityState.ColdStart) {\n this.bufferedMessages1.push(message);\n if (!this.singleBuffer) {\n this.bufferedMessages2.push(message);\n }\n this.conditionsManager?.processMessage(message);\n }\n else {\n this.messages.push(message);\n }\n // TODO: commit on start if there were `urgent` sends;\n // Clarify where urgent can be used for;\n // Clarify workflow for each type of message in case it was sent before start\n // (like Fetch before start; maybe add an option \"preCapture: boolean\" or sth alike)\n // Careful: `this.delay` is equal to zero before start so all Timestamp-s will have to be updated on start\n if (this.activityState === ActivityState.Active && urgent) {\n this.commit();\n }\n };\n this.coldStartCommitN = 0;\n this.delay = 0;\n this.attachStartCallback = (cb, useSafe = false) => {\n if (useSafe) {\n cb = this.safe(cb);\n }\n this.startCallbacks.push(cb);\n };\n this.attachStopCallback = (cb, useSafe = false) => {\n if (useSafe) {\n cb = this.safe(cb);\n }\n this.stopCallbacks.push(cb);\n };\n this.attachEventListener = (target, type, listener, useSafe = true, useCapture = true) => {\n if (useSafe) {\n listener = this.safe(listener);\n }\n const createListener = () => target\n ? createEventListener(target, type, listener, useCapture, this.options.forceNgOff)\n : null;\n const deleteListener = () => target\n ? deleteEventListener(target, type, listener, useCapture, this.options.forceNgOff)\n : null;\n this.attachStartCallback(createListener, useSafe);\n this.attachStopCallback(deleteListener, useSafe);\n };\n this.coldInterval = null;\n this.orderNumber = 0;\n this.coldStartTs = 0;\n this.singleBuffer = false;\n this.onSessionSent = () => {\n return;\n };\n this.prevOpts = {};\n this.restartCanvasTracking = () => {\n this.canvasRecorder?.restartTracking();\n };\n this.flushBuffer = async (buffer) => {\n return new Promise((res, reject) => {\n if (buffer.length === 0) {\n res(null);\n return;\n }\n // Since the first element is always a Timestamp, include it by default.\n let endIndex = 1;\n while (endIndex < buffer.length && buffer[endIndex][0] !== 0 /* MType.Timestamp */) {\n endIndex++;\n }\n requestIdleCb(() => {\n try {\n const messagesBatch = buffer.splice(0, endIndex);\n // Cast out potential proxy objects (produced from vue.js deep reactivity, for example) to a regular array.\n this.postToWorker(messagesBatch.map((x) => [...x]));\n res(null);\n }\n catch (e) {\n this._debug('flushBuffer', e);\n reject(new Error('flushBuffer failed'));\n }\n });\n });\n };\n this.contextId = Math.random().toString(36).slice(2);\n this.projectKey = projectKey;\n this.networkOptions = options.network;\n const defaultOptions = {\n revID: '',\n node_id: '__openreplay_id',\n session_token_key: '__openreplay_token',\n session_pageno_key: '__openreplay_pageno',\n session_reset_key: '__openreplay_reset',\n session_tabid_key: '__openreplay_tabid',\n local_uuid_key: '__openreplay_uuid',\n ingestPoint: DEFAULT_INGEST_POINT,\n resourceBaseHref: null,\n __is_snippet: false,\n __debug_report_edp: null,\n __debug__: LogLevel.Silent,\n localStorage: null,\n sessionStorage: null,\n forceSingleTab: false,\n assistSocketHost: '',\n captureIFrames: true,\n obscureTextEmails: false,\n obscureTextNumbers: false,\n disableStringDict: false,\n crossdomain: {\n parentDomain: '*',\n },\n canvas: {\n disableCanvas: false,\n fixedCanvasScaling: false,\n __save_canvas_locally: false,\n useAnimationFrame: false,\n },\n forceNgOff: false,\n inlineCss: InlineCssMode.Unset,\n disableSprites: false,\n disableThrottling: false,\n };\n this.options = simpleMerge(defaultOptions, options);\n if (!this.insideIframe &&\n !this.options.forceSingleTab &&\n globalThis &&\n 'BroadcastChannel' in globalThis) {\n const host = location.hostname.split('.').slice(-2).join('_');\n this.bc = new BroadcastChannel(`rick_${host}`);\n }\n else if (this.options.forceSingleTab) {\n this.allowAppStart();\n }\n this.revID = this.options.revID;\n this.localStorage = this.options.localStorage ?? window.localStorage;\n this.sessionStorage = this.options.sessionStorage ?? window.sessionStorage;\n this.sanitizer = new Sanitizer({ app: this, options });\n this.nodes = new Nodes({\n node_id: this.options.node_id,\n forceNgOff: Boolean(options.forceNgOff),\n maintainer: this.options.nodes?.maintainer,\n });\n this.observer = new Observer({ app: this, options });\n this.ticker = new Ticker(this);\n this.ticker.attach(() => this.commit());\n this.debug = new Logger(this.options.__debug__);\n this.session = new Session({ app: this, options: this.options });\n this.attributeSender = new AttributeSender({\n app: this,\n isDictDisabled: Boolean(this.options.disableStringDict || this.options.crossdomain?.enabled),\n });\n this.tagWatcher = new TagWatcher({\n sessionStorage: this.sessionStorage,\n errLog: this.debug.error,\n onTag: (tag) => this.send(TagTrigger(tag)),\n });\n this.session.attachUpdateCallback(({ userID, metadata }) => {\n if (userID != null) {\n if (!userID || typeof userID !== 'string' || userID.trim().length === 0) {\n this.debug.warn('Invalid userID (must be type string), ignoring.');\n return;\n }\n this.send(UserID(userID));\n }\n if (metadata != null) {\n Object.entries(metadata).forEach(([key, value]) => this.send(Metadata(key, value)));\n }\n });\n // @deprecated (use sessionHash on start instead)\n if (sessionToken != null) {\n this.session.applySessionHash(sessionToken);\n }\n const thisTab = this.session.getTabId();\n if (this.insideIframe) {\n /**\n * listen for messages from parent window, so we can signal that we're alive\n * */\n window.addEventListener('message', this.parentCrossDomainFrameListener);\n window.addEventListener('message', this.crossDomainIframeListener);\n setInterval(() => {\n if (document.hidden) {\n return;\n }\n window.parent.postMessage({\n line: proto.polling,\n context: this.contextId,\n }, options.crossdomain?.parentDomain ?? '*');\n }, 250);\n }\n else {\n this.initWorker();\n /**\n * if we get a signal from child iframes, we check for their node_id and send it back,\n * so they can act as if it was just a same-domain iframe\n * */\n window.addEventListener('message', this.crossDomainIframeListener);\n }\n if (this.bc !== null) {\n this.bc.postMessage({\n line: proto.ask,\n source: thisTab,\n context: this.contextId,\n projectKey: this.projectKey,\n });\n this.startTimeout = setTimeout(() => {\n this.allowAppStart();\n }, 250);\n this.bc.onmessage = (ev) => {\n if (ev.data.context === this.contextId || this.projectKey !== ev.data.projectKey) {\n this.debug.log('same ctx event', ev);\n return;\n }\n this.debug.log(ev);\n if (ev.data.line === proto.resp) {\n const sessionToken = ev.data.token;\n this.session.setSessionToken(sessionToken, this.projectKey);\n this.allowAppStart();\n }\n if (ev.data.line === proto.reg) {\n const sessionToken = ev.data.token;\n this.session.regenerateTabId();\n this.session.setSessionToken(sessionToken, this.projectKey);\n this.allowAppStart();\n }\n if (ev.data.line === proto.ask) {\n const token = this.session.getSessionToken(this.projectKey);\n if (token && this.bc) {\n this.bc.postMessage({\n line: ev.data.source === thisTab ? proto.reg : proto.resp,\n token,\n source: thisTab,\n context: this.contextId,\n projectKey: this.projectKey,\n });\n }\n }\n if (ev.data.line === proto.reset) {\n const newToken = ev.data.token;\n this.debug.log('Received reset signal from another tab');\n this.session.setSessionToken(newToken, this.projectKey);\n this.restart();\n }\n };\n }\n }\n allowAppStart() {\n this.canStart = true;\n if (this.startTimeout) {\n clearTimeout(this.startTimeout);\n this.startTimeout = null;\n }\n }\n async checkNodeId(source) {\n let targetFrame;\n if (this.pageFrames.length > 0) {\n targetFrame = this.pageFrames.find((frame) => frame.contentWindow === source);\n }\n if (!targetFrame || !this.pageFrames.length) {\n const pageIframes = Array.from(document.querySelectorAll('iframe'));\n this.pageFrames = pageIframes;\n targetFrame = pageIframes.find((frame) => frame.contentWindow === source);\n }\n if (!targetFrame) {\n return null;\n }\n /**\n * Here we're trying to get node id from the iframe (which is kept in observer)\n * because of async nature of dom initialization, we give 100 retries with 100ms delay each\n * which equals to 10 seconds. This way we have a period where we give app some time to load\n * and tracker some time to parse the initial DOM tree even on slower devices\n * */\n let tries = 0;\n while (tries < 100) {\n // @ts-ignore\n const potentialId = targetFrame[this.options.node_id];\n if (potentialId !== undefined) {\n tries = 100;\n return potentialId;\n }\n else {\n tries++;\n await delay(100);\n }\n }\n return null;\n }\n initWorker() {\n try {\n this.worker = new Worker(URL.createObjectURL(new Blob([workerBodyFn], { type: 'text/javascript' })));\n this.worker.onerror = (e) => {\n this._debug('webworker_error', e);\n };\n this.worker.onmessage = ({ data }) => {\n this.handleWorkerMsg(data);\n };\n let closing = false;\n const alertWorker = () => {\n if (closing) {\n return;\n }\n closing = true;\n setTimeout(() => {\n closing = false;\n }, 500);\n if (this.worker) {\n this.worker.postMessage('closing');\n }\n };\n this.attachEventListener(document.body, 'mouseleave', alertWorker, false, false);\n this.attachEventListener(window, 'pagehide', alertWorker, false, false);\n // TODO: stop session after inactivity timeout (make configurable)\n this.attachEventListener(document, 'visibilitychange', (e) => document.visibilityState === 'hidden' && alertWorker(), false);\n }\n catch (e) {\n this._debug('worker_start', e);\n }\n }\n handleWorkerMsg(data) {\n // handling 401 auth restart (new token assignment)\n if (data === 'a_stop') {\n this.stop(false);\n }\n else if (data === 'a_start') {\n this.waitStatus(ActivityState.NotActive).then(() => {\n this.allowAppStart();\n this.start(this.prevOpts, true)\n .then((r) => {\n this.debug.info('Worker restart, session too long', r);\n })\n .catch((e) => {\n this.debug.error('Worker restart failed', e);\n });\n });\n }\n else if (data === 'not_init') {\n this.debug.warn('OR WebWorker: writer not initialised. Restarting tracker');\n }\n else if (data.type === 'failure') {\n this.stop(false);\n this.debug.error('worker_failed', data.reason);\n this._debug('worker_failed', data.reason);\n }\n else if (data.type === 'compress') {\n const batch = data.batch;\n const batchSize = batch.byteLength;\n const hasCompressionAPI = 'CompressionStream' in globalThis;\n if (batchSize > this.compressionThreshold && hasCompressionAPI) {\n const blob = new Blob([batch]);\n const stream = blob.stream().pipeThrough(new CompressionStream('gzip'));\n new Response(stream)\n .arrayBuffer()\n .then((compressedBuffer) => {\n this.worker?.postMessage({\n type: 'compressed',\n batch: new Uint8Array(compressedBuffer),\n });\n })\n .catch((err) => {\n this.debug.error('Openreplay compression error:', err);\n this.worker?.postMessage({ type: 'uncompressed', batch: batch });\n });\n }\n else {\n this.worker?.postMessage({ type: 'uncompressed', batch: batch });\n }\n }\n else if (data.type === 'queue_empty') {\n this.onSessionSent();\n }\n }\n _debug(context, e) {\n if (this.options.__debug_report_edp !== null) {\n void fetch(this.options.__debug_report_edp, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n context,\n // @ts-ignore\n error: `${e}`,\n }),\n });\n }\n this.debug.error('OpenReplay error: ', context, e);\n }\n /**\n * Normal workflow: add timestamp and tab data to batch, then commit it\n * every ~30ms\n * */\n _nCommit() {\n if (this.socketMode) {\n this.messages.unshift(Timestamp(this.timestamp()), TabData(this.session.getTabId()));\n this.commitCallbacks.forEach((cb) => cb(this.messages));\n this.messages.length = 0;\n return;\n }\n if (this.insideIframe) {\n window.parent.postMessage({\n line: proto.iframeBatch,\n messages: this.messages,\n }, this.options.crossdomain?.parentDomain ?? '*');\n this.commitCallbacks.forEach((cb) => cb(this.messages));\n this.messages.length = 0;\n return;\n }\n if (this.worker === undefined || !this.messages.length) {\n return;\n }\n if (!this.messages.length) {\n // Release empty batches every 30 secs (1000 * 30ms)\n if (this.emptyBatchCounter < 1000) {\n this.emptyBatchCounter++;\n return;\n }\n }\n this.emptyBatchCounter = 0;\n try {\n requestIdleCb(() => {\n this.messages.unshift(Timestamp(this.timestamp()), TabData(this.session.getTabId()));\n this.worker?.postMessage(this.messages);\n this.commitCallbacks.forEach((cb) => cb(this.messages));\n this.messages.length = 0;\n });\n }\n catch (e) {\n this._debug('worker_commit', e);\n this.stop(true);\n setTimeout(() => {\n void this.start();\n }, 500);\n }\n }\n /**\n * Cold start: add timestamp and tab data to both batches\n * every 2nd tick, ~60ms\n * this will make batches a bit larger and replay will work with bigger jumps every frame\n * but in turn we don't overload batch writer on session start with 1000 batches\n * */\n _cStartCommit() {\n this.coldStartCommitN += 1;\n if (this.coldStartCommitN === 2) {\n const payload = [Timestamp(this.timestamp()), TabData(this.session.getTabId())];\n this.bufferedMessages1.push(...payload);\n this.bufferedMessages2.push(...payload);\n this.coldStartCommitN = 0;\n }\n }\n commit() {\n if (this.activityState === ActivityState.ColdStart) {\n this._cStartCommit();\n }\n else {\n this._nCommit();\n }\n }\n postToWorker(messages) {\n this.worker?.postMessage(messages);\n this.commitCallbacks.forEach((cb) => cb(messages));\n }\n timestamp() {\n return now() + this.delay;\n }\n safe(fn) {\n const app = this;\n return function (...args) {\n try {\n fn.apply(this, args);\n }\n catch (e) {\n app._debug('safe_fn_call', e);\n // time: this.timestamp(),\n // name: e.name,\n // message: e.message,\n // stack: e.stack\n }\n }; // TODO: correct typing\n }\n attachCommitCallback(cb) {\n this.commitCallbacks.push(cb);\n }\n // TODO: full correct semantic\n checkRequiredVersion(version) {\n const reqVer = version.split(/[.-]/);\n const ver = this.version.split(/[.-]/);\n for (let i = 0; i < 3; i++) {\n if (isNaN(Number(ver[i])) || isNaN(Number(reqVer[i]))) {\n return false;\n }\n if (Number(ver[i]) > Number(reqVer[i])) {\n return true;\n }\n if (Number(ver[i]) < Number(reqVer[i])) {\n return false;\n }\n }\n return true;\n }\n getTrackerInfo() {\n return {\n userUUID: this.localStorage.getItem(this.options.local_uuid_key),\n projectKey: this.projectKey,\n revID: this.revID,\n trackerVersion: this.version,\n isSnippet: this.options.__is_snippet,\n };\n }\n getSessionInfo() {\n return {\n ...this.session.getInfo(),\n ...this.getTrackerInfo(),\n };\n }\n getSessionToken() {\n return this.session.getSessionToken(this.projectKey);\n }\n getSessionID() {\n return this.session.getInfo().sessionID || undefined;\n }\n getSessionURL(options) {\n const { projectID, sessionID, timestamp } = this.session.getInfo();\n if (!projectID || !sessionID) {\n this.debug.error('OpenReplay error: Unable to build session URL');\n return undefined;\n }\n const ingest = this.options.ingestPoint;\n const isSaas = /api\\.openreplay\\.com/.test(ingest);\n const projectPath = isSaas ? 'https://app.openreplay.com/ingest' : ingest;\n const url = projectPath.replace(/ingest$/, `${projectID}/session/${sessionID}`);\n if (options?.withCurrentTime) {\n const jumpTo = now() - timestamp;\n return `${url}?jumpto=${jumpTo}`;\n }\n return url;\n }\n getHost() {\n return new URL(this.options.ingestPoint).host;\n }\n getProjectKey() {\n return this.projectKey;\n }\n getBaseHref() {\n if (typeof this.options.resourceBaseHref === 'string') {\n return this.options.resourceBaseHref;\n }\n else if (typeof this.options.resourceBaseHref === 'object') {\n //TODO: switch between types\n }\n if (document.baseURI) {\n return document.baseURI;\n }\n // IE only\n return (document.head?.getElementsByTagName('base')[0]?.getAttribute('href') ||\n location.origin + location.pathname);\n }\n resolveResourceURL(resourceURL) {\n const base = new URL(this.getBaseHref());\n base.pathname += '/' + new URL(resourceURL).pathname;\n base.pathname.replace(/\\/+/g, '/');\n return base.toString();\n }\n isServiceURL(url) {\n return url.startsWith(this.options.ingestPoint);\n }\n active() {\n return this.activityState === ActivityState.Active;\n }\n resetNextPageSession(flag) {\n if (flag) {\n this.sessionStorage.setItem(this.options.session_reset_key, 't');\n }\n else {\n this.sessionStorage.removeItem(this.options.session_reset_key);\n }\n }\n checkSessionToken(forceNew) {\n const lsReset = this.sessionStorage.getItem(this.options.session_reset_key) !== null;\n const needNewSessionID = forceNew || lsReset;\n const sessionToken = this.session.getSessionToken(this.projectKey);\n return needNewSessionID || !sessionToken;\n }\n /**\n * start buffering messages without starting the actual session, which gives\n * user 30 seconds to \"activate\" and record session by calling `start()` on conditional trigger,\n * and we will then send buffered batch, so it won't get lost\n * */\n async coldStart(startOpts = {}, conditional) {\n this.singleBuffer = false;\n const second = 1000;\n const isNewSession = this.checkSessionToken(startOpts.forceNew);\n if (conditional) {\n await this.setupConditionalStart(startOpts);\n }\n const cycle = () => {\n this.orderNumber += 1;\n adjustTimeOrigin();\n this.coldStartTs = now();\n if (this.orderNumber % 2 === 0) {\n this.bufferedMessages1.length = 0;\n this.bufferedMessages1.push(Timestamp(this.timestamp()));\n this.bufferedMessages1.push(TabData(this.session.getTabId()));\n }\n else {\n this.bufferedMessages2.length = 0;\n this.bufferedMessages2.push(Timestamp(this.timestamp()));\n this.bufferedMessages2.push(TabData(this.session.getTabId()));\n }\n this.stop(false);\n this.activityState = ActivityState.ColdStart;\n if (startOpts.sessionHash) {\n this.session.applySessionHash(startOpts.sessionHash);\n }\n if (startOpts.forceNew) {\n this.session.reset();\n }\n this.session.assign({\n userID: startOpts.userID,\n metadata: startOpts.metadata,\n });\n if (!isNewSession) {\n this.debug.log('continuing session on new tab', this.session.getTabId());\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n this.send(TabChange(this.session.getTabId()));\n }\n this.observer.observe();\n this.ticker.start();\n };\n this.coldInterval = setInterval(() => {\n cycle();\n }, 30 * second);\n cycle();\n }\n async setupConditionalStart(startOpts) {\n this.conditionsManager = new ConditionsManager(this, startOpts);\n const r = await fetch(this.options.ingestPoint + '/v1/web/start', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n ...this.getTrackerInfo(),\n timestamp: now(),\n doNotRecord: true,\n bufferDiff: 0,\n userID: this.session.getInfo().userID,\n token: undefined,\n deviceMemory,\n jsHeapSizeLimit,\n timezone: getTimezone(),\n width: window.screen.width,\n height: window.screen.height,\n }),\n });\n const { \n // this token is needed to fetch conditions and flags,\n // but it can't be used to record a session\n token, userBrowser, userCity, userCountry, userDevice, userOS, userState, projectID, } = await r.json();\n this.session.assign({ projectID });\n this.session.setUserInfo({\n userBrowser,\n userCity,\n userCountry,\n userDevice,\n userOS,\n userState,\n });\n const onStartInfo = { sessionToken: token, userUUID: '', sessionID: '' };\n this.startCallbacks.forEach((cb) => cb(onStartInfo));\n await this.conditionsManager?.fetchConditions(projectID, token);\n await this.tagWatcher.fetchTags(this.options.ingestPoint, token);\n }\n /**\n * Starts offline session recording\n * @param {Object} startOpts - options for session start, same as .start()\n * @param {Function} onSessionSent - callback that will be called once session is fully sent\n * */\n offlineRecording(startOpts = {}, onSessionSent) {\n this.onSessionSent = onSessionSent;\n this.singleBuffer = true;\n const isNewSession = this.checkSessionToken(startOpts.forceNew);\n adjustTimeOrigin();\n this.coldStartTs = now();\n const saverBuffer = this.localStorage.getItem(bufferStorageKey);\n if (saverBuffer) {\n const data = JSON.parse(saverBuffer);\n this.bufferedMessages1 = Array.isArray(data) ? data : this.bufferedMessages1;\n this.localStorage.removeItem(bufferStorageKey);\n }\n this.bufferedMessages1.push(Timestamp(this.timestamp()));\n this.bufferedMessages1.push(TabData(this.session.getTabId()));\n this.activityState = ActivityState.ColdStart;\n if (startOpts.sessionHash) {\n this.session.applySessionHash(startOpts.sessionHash);\n }\n if (startOpts.forceNew) {\n this.session.reset();\n }\n this.session.assign({\n userID: startOpts.userID,\n metadata: startOpts.metadata,\n });\n const onStartInfo = { sessionToken: '', userUUID: '', sessionID: '' };\n this.startCallbacks.forEach((cb) => cb(onStartInfo));\n if (!isNewSession) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n this.send(TabChange(this.session.getTabId()));\n }\n this.observer.observe();\n this.ticker.start();\n return {\n saveBuffer: this.saveBuffer,\n getBuffer: this.getBuffer,\n setBuffer: this.setBuffer,\n };\n }\n /**\n * Saves the captured messages in localStorage (or whatever is used in its place)\n *\n * Then, when this.offlineRecording is called, it will preload this messages and clear the storage item\n *\n * Keeping the size of local storage reasonable is up to the end users of this library\n * */\n saveBuffer() {\n this.localStorage.setItem(bufferStorageKey, JSON.stringify(this.bufferedMessages1));\n }\n /**\n * @returns buffer with stored messages for offline recording\n * */\n getBuffer() {\n return this.bufferedMessages1;\n }\n /**\n * Used to set a buffer with messages array\n * */\n setBuffer(buffer) {\n this.bufferedMessages1 = buffer;\n }\n /**\n * Uploads the stored session buffer to backend\n * @returns promise that resolves once messages are loaded, it has to be awaited\n * so the session can be uploaded properly\n * @resolve - if messages were loaded in service worker successfully\n * @reject {string} - error message\n * */\n async uploadOfflineRecording() {\n this.stop(false);\n const timestamp = now();\n this.worker?.postMessage({\n type: 'start',\n pageNo: this.session.incPageNo(),\n ingestPoint: this.options.ingestPoint,\n timestamp: this.coldStartTs,\n url: document.URL,\n connAttemptCount: this.options.connAttemptCount,\n connAttemptGap: this.options.connAttemptGap,\n tabId: this.session.getTabId(),\n });\n const r = await fetch(this.options.ingestPoint + '/v1/web/start', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n ...this.getTrackerInfo(),\n timestamp: timestamp,\n doNotRecord: false,\n bufferDiff: timestamp - this.coldStartTs,\n userID: this.session.getInfo().userID,\n token: undefined,\n deviceMemory,\n jsHeapSizeLimit,\n timezone: getTimezone(),\n }),\n });\n const { token, userBrowser, userCity, userCountry, userDevice, userOS, userState, beaconSizeLimit, projectID, } = await r.json();\n this.worker?.postMessage({\n type: 'auth',\n token,\n beaconSizeLimit,\n });\n this.session.assign({ projectID });\n this.session.setUserInfo({\n userBrowser,\n userCity,\n userCountry,\n userDevice,\n userOS,\n userState,\n });\n while (this.bufferedMessages1.length > 0) {\n await this.flushBuffer(this.bufferedMessages1);\n }\n this.postToWorker([[-1]]);\n this.clearBuffers();\n }\n async _start(startOpts = {}, resetByWorker = false, conditionName) {\n if (Object.keys(startOpts).length !== 0) {\n this.prevOpts = startOpts;\n }\n const isColdStart = this.activityState === ActivityState.ColdStart;\n if (isColdStart && this.coldInterval) {\n clearInterval(this.coldInterval);\n }\n if (!this.worker && !this.insideIframe) {\n const reason = 'No worker found: perhaps, CSP is not set.';\n this.signalError(reason, []);\n return Promise.resolve(UnsuccessfulStart(reason));\n }\n if (this.activityState === ActivityState.Active ||\n this.activityState === ActivityState.Starting) {\n const reason = 'OpenReplay: trying to call `start()` on the instance that has been started already.';\n return Promise.resolve(UnsuccessfulStart(reason));\n }\n this.activityState = ActivityState.Starting;\n if (!isColdStart) {\n adjustTimeOrigin();\n }\n if (startOpts.sessionHash) {\n this.session.applySessionHash(startOpts.sessionHash);\n }\n if (startOpts.forceNew) {\n // Reset session metadata only if requested directly\n this.session.reset();\n }\n const userId = startOpts.userID ? startOpts.userID.trim() : undefined;\n this.session.assign({\n // MBTODO: maybe it would make sense to `forceNew` if the `userID` was changed\n userID: userId || undefined,\n metadata: startOpts.metadata,\n });\n const timestamp = now();\n this.worker?.postMessage({\n type: 'start',\n pageNo: this.session.incPageNo(),\n ingestPoint: this.options.ingestPoint,\n timestamp: isColdStart ? this.coldStartTs : timestamp,\n url: document.URL,\n connAttemptCount: this.options.connAttemptCount,\n connAttemptGap: this.options.connAttemptGap,\n tabId: this.session.getTabId(),\n });\n const sessionToken = this.session.getSessionToken(this.projectKey);\n const isNewSession = this.checkSessionToken(startOpts.forceNew);\n this.sessionStorage.removeItem(this.options.session_reset_key);\n this.debug.log('OpenReplay: starting session; need new session id?', isNewSession, 'session token: ', sessionToken);\n try {\n const r = await window.fetch(this.options.ingestPoint + '/v1/web/start', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n ...this.getTrackerInfo(),\n timestamp,\n doNotRecord: false,\n bufferDiff: timestamp - this.coldStartTs,\n userID: this.session.getInfo().userID,\n token: isNewSession ? undefined : sessionToken,\n deviceMemory,\n jsHeapSizeLimit,\n timezone: getTimezone(),\n condition: conditionName,\n assistOnly: startOpts.assistOnly ?? this.socketMode,\n width: window.screen.width,\n height: window.screen.height,\n referrer: document.referrer,\n }),\n });\n if (r.status !== 200) {\n const error = await r.text();\n const reason = error === CANCELED ? CANCELED : `Server error: ${r.status}. ${error}`;\n return UnsuccessfulStart(reason);\n }\n if (!this.worker && !this.insideIframe) {\n const reason = 'no worker found after start request (this should not happen in real world)';\n this.signalError(reason, []);\n return UnsuccessfulStart(reason);\n }\n const { token, userUUID, projectID, beaconSizeLimit, compressionThreshold, // how big the batch should be before we decide to compress it\n delay, // derived from token\n sessionID, // derived from token\n startTimestamp, // real startTS (server time), derived from sessionID\n userBrowser, userCity, userCountry, userDevice, userOS, userState, canvasEnabled, canvasQuality, canvasFPS, framesSupport, assistOnly: socketOnly, } = await r.json();\n if (typeof token !== 'string' ||\n typeof userUUID !== 'string' ||\n (typeof startTimestamp !== 'number' && typeof startTimestamp !== 'undefined') ||\n typeof sessionID !== 'string' ||\n typeof delay !== 'number' ||\n (typeof beaconSizeLimit !== 'number' && typeof beaconSizeLimit !== 'undefined')) {\n const reason = `Incorrect server response: ${JSON.stringify(r)}`;\n this.signalError(reason, []);\n return UnsuccessfulStart(reason);\n }\n this.delay = delay;\n this.session.setSessionToken(token, this.projectKey);\n if (sessionToken && sessionToken !== token) {\n this.bc?.postMessage({\n type: proto.reset,\n token: token,\n });\n }\n this.session.setUserInfo({\n userBrowser,\n userCity,\n userCountry,\n userDevice,\n userOS,\n userState,\n });\n this.session.assign({\n sessionID,\n timestamp: startTimestamp || timestamp,\n projectID,\n });\n if (socketOnly) {\n this.socketMode = true;\n this.worker?.postMessage('stop');\n }\n else {\n this.worker?.postMessage({\n type: 'auth',\n token,\n beaconSizeLimit,\n });\n }\n if (!isNewSession && token === sessionToken) {\n this.debug.log('continuing session on new tab', this.session.getTabId());\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n this.send(TabChange(this.session.getTabId()));\n }\n // (Re)send Metadata for the case of a new session\n Object.entries(this.session.getInfo().metadata).forEach(([key, value]) => this.send(Metadata(key, value)));\n this.localStorage.setItem(this.options.local_uuid_key, userUUID);\n this.compressionThreshold = compressionThreshold;\n const onStartInfo = { sessionToken: token, userUUID, sessionID };\n // TODO: start as early as possible (before receiving the token)\n /** after start */\n this.startCallbacks.forEach((cb) => cb(onStartInfo)); // MBTODO: callbacks after DOM \"mounted\" (observed)\n if (startOpts.startCallback) {\n startOpts.startCallback(SuccessfulStart(onStartInfo));\n }\n await this.tagWatcher.fetchTags(this.options.ingestPoint, token);\n this.activityState = ActivityState.Active;\n if (this.options.crossdomain?.enabled) {\n void this.bootChildrenFrames();\n }\n if (canvasEnabled && !this.options.canvas.disableCanvas) {\n this.canvasRecorder =\n this.canvasRecorder ??\n new CanvasRecorder(this, {\n fps: canvasFPS,\n quality: canvasQuality,\n isDebug: this.options.canvas.__save_canvas_locally,\n fixedScaling: this.options.canvas.fixedCanvasScaling,\n useAnimationFrame: this.options.canvas.useAnimationFrame,\n framesSupport: !!framesSupport,\n });\n }\n /** --------------- COLD START BUFFER ------------------*/\n if (isColdStart) {\n const biggestBuffer = this.bufferedMessages1.length > this.bufferedMessages2.length\n ? this.bufferedMessages1\n : this.bufferedMessages2;\n while (biggestBuffer.length > 0) {\n await this.flushBuffer(biggestBuffer);\n }\n this.clearBuffers();\n this.commit();\n /** --------------- COLD START BUFFER ------------------*/\n }\n if (this.insideIframe && this.rootId) {\n this.observer.crossdomainObserve(this.rootId, this.frameOderNumber, this.frameLevel);\n }\n else {\n this.observer.observe();\n }\n this.ticker.start();\n this.canvasRecorder?.startTracking();\n return SuccessfulStart(onStartInfo);\n }\n catch (reason) {\n this.stop();\n this.session.reset();\n if (!reason) {\n console.error('Unknown error during start');\n this.signalError('Unknown error', []);\n return UnsuccessfulStart('Unknown error');\n }\n if (reason === CANCELED) {\n this.signalError(CANCELED, []);\n return UnsuccessfulStart(CANCELED);\n }\n this._debug('session_start', reason);\n const errorMessage = reason instanceof Error ? reason.message : reason.toString();\n this.signalError(errorMessage, []);\n return UnsuccessfulStart(errorMessage);\n }\n }\n async waitStart() {\n return new Promise((resolve) => {\n const int = setInterval(() => {\n if (this.canStart) {\n clearInterval(int);\n resolve(true);\n }\n }, 100);\n });\n }\n async waitStarted() {\n return this.waitStatus(ActivityState.Active);\n }\n async waitStatus(status) {\n return new Promise((resolve) => {\n const check = () => {\n if (this.activityState === status) {\n resolve(true);\n }\n else {\n setTimeout(check, 25);\n }\n };\n check();\n });\n }\n /**\n * basically we ask other tabs during constructor\n * and here we just apply 10ms delay just in case\n * */\n async start(...args) {\n if (this.activityState === ActivityState.Active ||\n this.activityState === ActivityState.Starting) {\n const reason = 'OpenReplay: trying to call `start()` on the instance that has been started already.';\n return Promise.resolve(UnsuccessfulStart(reason));\n }\n if (this.insideIframe) {\n this.signalIframeTracker();\n }\n if (!document.hidden) {\n await this.waitStart();\n return this._start(...args);\n }\n else {\n return new Promise((resolve) => {\n const onVisibilityChange = async () => {\n if (!document.hidden) {\n await this.waitStart();\n // eslint-disable-next-line\n document.removeEventListener('visibilitychange', onVisibilityChange);\n resolve(this._start(...args));\n }\n };\n // eslint-disable-next-line\n document.addEventListener('visibilitychange', onVisibilityChange);\n });\n }\n }\n forceFlushBatch() {\n this.worker?.postMessage('forceFlushBatch');\n }\n getTabId() {\n return this.session.getTabId();\n }\n clearBuffers() {\n this.bufferedMessages1.length = 0;\n this.bufferedMessages2.length = 0;\n }\n /**\n * Creates a named hook that expects event name, data string and msg direction (up/down),\n * it will skip any message bigger than 5 mb or event name bigger than 255 symbols\n * @returns {(msgType: string, data: string, dir: \"up\" | \"down\") => void}\n * */\n trackWs(channelName) {\n const channel = channelName;\n return (msgType, data, dir = 'down') => {\n if (typeof msgType !== 'string' ||\n typeof data !== 'string' ||\n data.length > 5 * 1024 * 1024 ||\n msgType.length > 255) {\n return;\n }\n this.send(WSChannel('websocket', channel, data, this.timestamp(), dir, msgType));\n };\n }\n stop(stopWorker = true) {\n if (this.activityState !== ActivityState.NotActive) {\n try {\n if (this.options.crossdomain?.enabled) {\n this.killChildrenFrames();\n }\n this.attributeSender.clear();\n this.sanitizer.clear();\n this.observer.disconnect();\n this.nodes.clear();\n this.ticker.stop();\n this.stopCallbacks.forEach((cb) => cb());\n this.tagWatcher.clear();\n if (this.worker && stopWorker) {\n this.worker.postMessage('stop');\n }\n this.canvasRecorder?.clear();\n this.messages.length = 0;\n this.parentActive = false;\n }\n finally {\n this.activityState = ActivityState.NotActive;\n this.debug.log('OpenReplay tracking stopped.');\n }\n }\n }\n}\n","import { ConnectionInformation } from '../app/messages.gen.js';\nexport default function (app) {\n const connection = navigator.connection ||\n navigator.mozConnection ||\n navigator.webkitConnection;\n if (connection === undefined) {\n return;\n }\n const sendConnectionInformation = () => {\n app.send(ConnectionInformation(Math.round(connection.downlink * 1000), connection.effectiveType || 'unknown'));\n };\n app.attachStartCallback(() => {\n sendConnectionInformation();\n connection.addEventListener('change', sendConnectionInformation);\n });\n app.attachStopCallback(() => {\n connection.removeEventListener('change', sendConnectionInformation);\n });\n}\n","import { IN_BROWSER } from '../utils.js';\nimport { ConsoleLog } from '../app/messages.gen.js';\nconst printError = IN_BROWSER && 'InstallTrigger' in window // detect Firefox\n ? (e) => e.message + '\\n' + e.stack\n : (e) => e.stack || e.message;\nfunction printString(arg) {\n if (arg === undefined) {\n return 'undefined';\n }\n if (arg === null) {\n return 'null';\n }\n if (arg instanceof Error) {\n return printError(arg);\n }\n if (Array.isArray(arg)) {\n return `Array(${arg.length})`;\n }\n return String(arg);\n}\nfunction printFloat(arg) {\n if (typeof arg !== 'number')\n return 'NaN';\n return arg.toString();\n}\nfunction printInt(arg) {\n if (typeof arg !== 'number')\n return 'NaN';\n return Math.floor(arg).toString();\n}\nfunction printObject(arg) {\n if (arg === undefined) {\n return 'undefined';\n }\n if (arg === null) {\n return 'null';\n }\n if (arg instanceof Error) {\n return printError(arg);\n }\n if (Array.isArray(arg)) {\n const length = arg.length;\n const values = arg.slice(0, 10).map(printString).join(', ');\n return `Array(${length})[${values}]`;\n }\n if (typeof arg === 'object') {\n const res = [];\n let i = 0;\n for (const k in arg) {\n if (++i === 10) {\n break;\n }\n const v = arg[k];\n res.push(k + ': ' + printString(v));\n }\n return '{' + res.join(', ') + '}';\n }\n return arg.toString();\n}\nfunction printf(args) {\n if (typeof args[0] === 'string') {\n args.unshift(args.shift().replace(/%(o|s|f|d|i)/g, (s, t) => {\n const arg = args.shift();\n if (arg === undefined)\n return s;\n switch (t) {\n case 'o':\n return printObject(arg);\n case 's':\n return printString(arg);\n case 'f':\n return printFloat(arg);\n case 'd':\n case 'i':\n return printInt(arg);\n default:\n return s;\n }\n }));\n }\n return args.map(printObject).join(' ');\n}\nconst consoleMethods = ['log', 'info', 'warn', 'error', 'debug', 'assert'];\nexport default function (app, opts) {\n const options = Object.assign({\n consoleMethods,\n consoleThrottling: 30,\n }, opts);\n if (!Array.isArray(options.consoleMethods) || options.consoleMethods.length === 0) {\n return;\n }\n const sendConsoleLog = app.safe((level, args) => {\n let logMsg = printf(args);\n if (app.sanitizer.privateMode) {\n logMsg = logMsg.replaceAll(/./g, '*');\n }\n app.send(ConsoleLog(level, logMsg));\n });\n let n = 0;\n const reset = () => {\n n = 0;\n };\n app.attachStartCallback(reset);\n app.ticker.attach(reset, 33, false);\n const patchConsole = (console, ctx) => {\n const handler = {\n apply: function (target, thisArg, argumentsList) {\n Reflect.apply(target, ctx, argumentsList);\n n = n + 1;\n if (n > options.consoleThrottling) {\n return;\n }\n else {\n sendConsoleLog(target.name, argumentsList);\n }\n },\n };\n options.consoleMethods.forEach((method) => {\n if (consoleMethods.indexOf(method) === -1) {\n app.debug.error(`OpenReplay: unsupported console method \"${method}\"`);\n return;\n }\n const fn = ctx.console[method];\n console[method] = new Proxy(fn, handler);\n });\n };\n const patchContext = app.safe((context) => patchConsole(context.console, context));\n patchContext(window);\n app.observer.attachContextCallback(patchContext);\n}\n","const FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\nconst CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\nconst SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code\\])?$/;\nfunction parse(error, options) {\n if (typeof error.stacktrace !== \"undefined\" || typeof error[\"opera#sourceloc\"] !== \"undefined\")\n return parseOpera(error, options);\n else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP))\n return parseV8OrIE(error, options);\n else if (error.stack)\n return parseFFOrSafari(error, options);\n else if (options?.allowEmpty)\n return [];\n else\n throw new Error(\"Cannot parse given Error object\");\n}\nfunction parseStack(stackString, options) {\n if (stackString.match(CHROME_IE_STACK_REGEXP))\n return parseV8OrIeString(stackString, options);\n else\n return parseFFOrSafariString(stackString, options);\n}\nfunction extractLocation(urlLike) {\n if (!urlLike.includes(\":\"))\n return [urlLike, void 0, void 0];\n const regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n const parts = regExp.exec(urlLike.replace(/[()]/g, \"\"));\n return [parts[1], parts[2] || void 0, parts[3] || void 0];\n}\nfunction applySlice(lines, options) {\n if (options && options.slice != null) {\n if (Array.isArray(options.slice))\n return lines.slice(options.slice[0], options.slice[1]);\n return lines.slice(0, options.slice);\n }\n return lines;\n}\nfunction parseV8OrIE(error, options) {\n return parseV8OrIeString(error.stack, options);\n}\nfunction parseV8OrIeString(stack, options) {\n const filtered = applySlice(\n stack.split(\"\\n\").filter((line) => {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }),\n options\n );\n return filtered.map((line) => {\n if (line.includes(\"(eval \")) {\n line = line.replace(/eval code/g, \"eval\").replace(/(\\(eval at [^()]*)|(,.*$)/g, \"\");\n }\n let sanitizedLine = line.replace(/^\\s+/, \"\").replace(/\\(eval code/g, \"(\").replace(/^.*?\\s+/, \"\");\n const location = sanitizedLine.match(/ (\\(.+\\)$)/);\n sanitizedLine = location ? sanitizedLine.replace(location[0], \"\") : sanitizedLine;\n const locationParts = extractLocation(location ? location[1] : sanitizedLine);\n const functionName = location && sanitizedLine || void 0;\n const fileName = [\"eval\", \"<anonymous>\"].includes(locationParts[0]) ? void 0 : locationParts[0];\n return {\n function: functionName,\n file: fileName,\n line: locationParts[1] ? +locationParts[1] : void 0,\n col: locationParts[2] ? +locationParts[2] : void 0,\n raw: line\n };\n });\n}\nfunction parseFFOrSafari(error, options) {\n return parseFFOrSafariString(error.stack, options);\n}\nfunction parseFFOrSafariString(stack, options) {\n const filtered = applySlice(\n stack.split(\"\\n\").filter((line) => {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }),\n options\n );\n return filtered.map((line) => {\n if (line.includes(\" > eval\"))\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, \":$1\");\n if (!line.includes(\"@\") && !line.includes(\":\")) {\n return {\n function: line\n };\n } else {\n const functionNameRegex = /(([^\\n\\r\"\\u2028\\u2029]*\".[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*(?:@[^\\n\\r\"\\u2028\\u2029]*\"[^\\n\\r@\\u2028\\u2029]*)*(?:[\\n\\r\\u2028\\u2029][^@]*)?)?[^@]*)@/;\n const matches = line.match(functionNameRegex);\n const functionName = matches && matches[1] ? matches[1] : void 0;\n const locationParts = extractLocation(line.replace(functionNameRegex, \"\"));\n return {\n function: functionName,\n file: locationParts[0],\n line: locationParts[1] ? +locationParts[1] : void 0,\n col: locationParts[2] ? +locationParts[2] : void 0,\n raw: line\n };\n }\n });\n}\nfunction parseOpera(e, options) {\n if (!e.stacktrace || e.message.includes(\"\\n\") && e.message.split(\"\\n\").length > e.stacktrace.split(\"\\n\").length)\n return parseOpera9(e);\n else if (!e.stack)\n return parseOpera10(e);\n else\n return parseOpera11(e, options);\n}\nfunction parseOpera9(e, options) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n const lines = e.message.split(\"\\n\");\n const result = [];\n for (let i = 2, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push({\n file: match[2],\n line: +match[1],\n raw: lines[i]\n });\n }\n }\n return applySlice(result, options);\n}\nfunction parseOpera10(e, options) {\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n const lines = e.stacktrace.split(\"\\n\");\n const result = [];\n for (let i = 0, len = lines.length; i < len; i += 2) {\n const match = lineRE.exec(lines[i]);\n if (match) {\n result.push({\n function: match[3] || void 0,\n file: match[2],\n line: match[1] ? +match[1] : void 0,\n raw: lines[i]\n });\n }\n }\n return applySlice(result, options);\n}\nfunction parseOpera11(error, options) {\n const filtered = applySlice(\n // @ts-expect-error missing stack property\n error.stack.split(\"\\n\").filter((line) => {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }),\n options\n );\n return filtered.map((line) => {\n const tokens = line.split(\"@\");\n const locationParts = extractLocation(tokens.pop());\n const functionCall = tokens.shift() || \"\";\n const functionName = functionCall.replace(/<anonymous function(: (\\w+))?>/, \"$2\").replace(/\\([^)]*\\)/g, \"\") || void 0;\n let argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/))\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, \"$1\");\n const args = argsRaw === void 0 || argsRaw === \"[arguments not available]\" ? void 0 : argsRaw.split(\",\");\n return {\n function: functionName,\n args,\n file: locationParts[0],\n line: locationParts[1] ? +locationParts[1] : void 0,\n col: locationParts[2] ? +locationParts[2] : void 0,\n raw: line\n };\n });\n}\n\nexport { extractLocation, parse, parseFFOrSafari, parseFFOrSafariString, parseOpera, parseOpera10, parseOpera11, parseOpera9, parseStack, parseV8OrIE, parseV8OrIeString };\n","import { parse as parse$1, parseV8OrIE as parseV8OrIE$1, parseFFOrSafari as parseFFOrSafari$1, parseOpera as parseOpera$1, parseOpera9 as parseOpera9$1, parseOpera10 as parseOpera10$1, parseOpera11 as parseOpera11$1 } from './lite.mjs';\nexport { extractLocation } from './lite.mjs';\n\nfunction stackframesLiteToStackframes(liteStackframes) {\n return liteStackframes.map((liteStackframe) => {\n return {\n functionName: liteStackframe.function,\n args: liteStackframe.args,\n fileName: liteStackframe.file,\n lineNumber: liteStackframe.line,\n columnNumber: liteStackframe.col,\n source: liteStackframe.raw\n };\n });\n}\nfunction parse(error, options) {\n return stackframesLiteToStackframes(parse$1(error, options));\n}\nfunction parseV8OrIE(error) {\n return stackframesLiteToStackframes(parseV8OrIE$1(error));\n}\nfunction parseFFOrSafari(error) {\n return stackframesLiteToStackframes(parseFFOrSafari$1(error));\n}\nfunction parseOpera(e) {\n return stackframesLiteToStackframes(parseOpera$1(e));\n}\nfunction parseOpera9(e) {\n return stackframesLiteToStackframes(parseOpera9$1(e));\n}\nfunction parseOpera10(e) {\n return stackframesLiteToStackframes(parseOpera10$1(e));\n}\nfunction parseOpera11(error) {\n return stackframesLiteToStackframes(parseOpera11$1(error));\n}\n\nexport { parse, parseFFOrSafari, parseOpera, parseOpera10, parseOpera11, parseOpera9, parseV8OrIE };\n","import { JSException } from '../app/messages.gen.js';\nimport { parse } from 'error-stack-parser-es';\nfunction getDefaultStack(e) {\n return [\n {\n columnNumber: e.colno,\n lineNumber: e.lineno,\n fileName: e.filename,\n functionName: '',\n source: '',\n },\n ];\n}\nexport function getExceptionMessage(error, fallbackStack, metadata = {}) {\n let stack = fallbackStack;\n try {\n stack = parse(error);\n }\n catch (e) { }\n return JSException(error.name, error.message, JSON.stringify(stack), JSON.stringify(metadata));\n}\nexport function getExceptionMessageFromEvent(e, context = window, metadata = {}) {\n if (e instanceof ErrorEvent) {\n if (e.error instanceof Error) {\n return getExceptionMessage(e.error, getDefaultStack(e), metadata);\n }\n else {\n let [name, message] = e.message.split(':');\n if (!message) {\n name = 'Error';\n message = e.message;\n }\n return JSException(name, message, JSON.stringify(getDefaultStack(e)), JSON.stringify(metadata));\n }\n }\n else if ('PromiseRejectionEvent' in context && e instanceof context.PromiseRejectionEvent) {\n if (e.reason instanceof Error) {\n return getExceptionMessage(e.reason, [], metadata);\n }\n else {\n let message;\n try {\n message = JSON.stringify(e.reason);\n }\n catch (_) {\n message = String(e.reason);\n }\n return JSException('Unhandled Promise Rejection', message, '[]', JSON.stringify(metadata));\n }\n }\n return null;\n}\nexport default function (app, opts) {\n const options = Object.assign({\n captureExceptions: true,\n }, opts);\n function patchContext(context) {\n function handler(e) {\n const msg = getExceptionMessageFromEvent(e, context);\n if (msg != null) {\n app.send(msg);\n }\n }\n try {\n app.attachEventListener(context, 'unhandledrejection', handler);\n app.attachEventListener(context, 'error', handler);\n }\n catch (e) {\n console.error('Error while attaching to error proto contexts', e);\n }\n }\n if (options.captureExceptions) {\n app.observer.attachContextCallback(patchContext); // TODO: attach once-per-iframe (?)\n patchContext(window);\n }\n}\n","import { isURL, IS_FIREFOX, MAX_STR_LEN, createMutationObserver } from '../utils.js';\nimport { ResourceTiming, SetNodeAttributeURLBased } from '../app/messages.gen.js';\nimport { hasTag } from '../app/guards.js';\nfunction resolveURL(url, location = document.location) {\n url = url.trim();\n if (url.startsWith('//') ||\n url.startsWith('http://') ||\n url.startsWith('https://') ||\n url.startsWith('data:') // any other possible value here? https://bugzilla.mozilla.org/show_bug.cgi?id=1758035\n ) {\n return url;\n }\n else if (url.startsWith('/')) {\n return location.origin + url;\n }\n else {\n return location.origin + location.pathname + url;\n }\n}\n// https://bugzilla.mozilla.org/show_bug.cgi?id=1607081\nfunction isSVGInFireFox(url) {\n return IS_FIREFOX && (url.startsWith('data:image/svg+xml') || url.match(/.svg$|/i));\n}\nconst PLACEHOLDER_SRC = 'https://static.openreplay.com/tracker/placeholder.jpeg';\nexport default function (app) {\n function sendPlaceholder(id, node) {\n app.attributeSender.sendSetAttribute(id, 'src', PLACEHOLDER_SRC);\n const { width, height } = node.getBoundingClientRect();\n if (!node.hasAttribute('width')) {\n app.attributeSender.sendSetAttribute(id, 'width', String(width));\n }\n if (!node.hasAttribute('height')) {\n app.attributeSender.sendSetAttribute(id, 'height', String(height));\n }\n }\n const sendSrcset = function (id, img) {\n const { srcset } = img;\n if (!srcset) {\n return;\n }\n const resolvedSrcset = srcset\n .split(srcset.match(/,\\s+/) ? /,\\s+/ : ',')\n .map((str) => resolveURL(str))\n .join(', ');\n app.attributeSender.sendSetAttribute(id, 'srcset', resolvedSrcset);\n };\n const sendSrc = function (id, img) {\n if (img.src.length > MAX_STR_LEN) {\n sendPlaceholder(id, img);\n }\n app.send(SetNodeAttributeURLBased(id, 'src', img.src, app.getBaseHref()));\n };\n const sendImgError = app.safe(function (img) {\n const resolvedSrc = resolveURL(img.src || ''); // Src type is null sometimes. - is it true?\n if (isURL(resolvedSrc)) {\n app.send(ResourceTiming(app.timestamp(), 0, 0, 0, 0, 0, resolvedSrc, 'img', 0, false, 0, 0, 0, 0, 0, 0, 0));\n }\n });\n const sendImgAttrs = app.safe(function (img) {\n const id = app.nodes.getID(img);\n if (id === undefined) {\n return;\n }\n if (!img.complete) {\n return;\n }\n if (img.naturalHeight === 0 && img.naturalWidth === 0 && !isSVGInFireFox(img.src)) {\n sendImgError(img);\n }\n else if (app.sanitizer.isHidden(id) || app.sanitizer.isObscured(id)) {\n sendPlaceholder(id, img);\n }\n else {\n sendSrc(id, img);\n sendSrcset(id, img);\n }\n });\n const observer = createMutationObserver(app.safe((mutations) => {\n for (const mutation of mutations) {\n if (mutation.type === 'attributes') {\n const target = mutation.target;\n const id = app.nodes.getID(target);\n if (id === undefined) {\n return;\n }\n if (mutation.attributeName === 'src') {\n sendSrc(id, target);\n }\n if (mutation.attributeName === 'srcset') {\n sendSrcset(id, target);\n }\n }\n }\n }), app.options.forceNgOff);\n app.attachStopCallback(() => {\n observer.disconnect();\n });\n app.nodes.attachNodeCallback((node) => {\n if (!hasTag(node, 'img')) {\n return;\n }\n app.nodes.attachNodeListener(node, 'error', () => sendImgError(node));\n app.nodes.attachNodeListener(node, 'load', () => sendImgAttrs(node));\n sendImgAttrs(node);\n observer.observe(node, { attributes: true, attributeFilter: ['src', 'srcset'] });\n });\n}\n","import { normSpaces, IN_BROWSER, getLabelAttribute, now } from '../utils.js';\nimport { hasTag } from '../app/guards.js';\nimport { InputChange, SetInputValue, SetInputChecked } from '../app/messages.gen.js';\nconst INPUT_TYPES = [\n 'text',\n 'password',\n 'email',\n 'search',\n 'number',\n 'range',\n 'date',\n 'tel',\n 'time',\n];\nfunction isTextFieldElement(node) {\n if (hasTag(node, 'textarea')) {\n return true;\n }\n if (!hasTag(node, 'input')) {\n return false;\n }\n return INPUT_TYPES.includes(node.type);\n}\nfunction isCheckbox(node) {\n if (!hasTag(node, 'input')) {\n return false;\n }\n const type = node.type;\n return type === 'checkbox' || type === 'radio';\n}\nconst labelElementFor = IN_BROWSER && 'labels' in HTMLInputElement.prototype\n ? (node) => {\n let p = node;\n while ((p = p.parentNode) !== null) {\n if (hasTag(p, 'label')) {\n return p;\n }\n }\n const labels = node.labels;\n if (labels !== null && labels.length === 1) {\n return labels[0];\n }\n }\n : (node) => {\n let p = node;\n while ((p = p.parentNode) !== null) {\n if (hasTag(p, 'label')) {\n return p;\n }\n }\n const id = node.id;\n if (id) {\n const labels = node.ownerDocument.querySelectorAll('label[for=\"' + id + '\"]');\n if (labels !== null && labels.length === 1) {\n return labels[0];\n }\n }\n };\nexport function getInputLabel(node) {\n let label = getLabelAttribute(node);\n if (label === null) {\n const labelElement = labelElementFor(node);\n label =\n (labelElement && labelElement.innerText) ||\n node.placeholder ||\n node.name ||\n node.id ||\n node.className ||\n node.type;\n }\n return normSpaces(label).slice(0, 100);\n}\nexport const InputMode = {\n Plain: 0,\n Obscured: 1,\n Hidden: 2,\n};\nexport default function (app, opts) {\n const options = Object.assign({\n obscureInputNumbers: true,\n obscureInputEmails: true,\n defaultInputMode: InputMode.Obscured,\n obscureInputDates: false,\n }, opts);\n function getInputValue(id, node) {\n let value = node.value;\n let inputMode = options.defaultInputMode;\n if (node.type === 'password' || app.sanitizer.isHidden(id)) {\n inputMode = InputMode.Hidden;\n }\n else if (app.sanitizer.isObscured(id) ||\n (inputMode === InputMode.Plain &&\n ((options.obscureInputNumbers && node.type !== 'date' && /\\d\\d\\d\\d/.test(value)) ||\n (options.obscureInputDates && node.type === 'date') ||\n (options.obscureInputEmails && (node.type === 'email' || !!~value.indexOf('@')))))) {\n inputMode = InputMode.Obscured;\n }\n let mask = 0;\n switch (inputMode) {\n case InputMode.Hidden:\n mask = -1;\n value = '';\n break;\n case InputMode.Obscured:\n mask = value.length;\n value = '';\n break;\n }\n return { value, mask };\n }\n function sendInputValue(id, node) {\n const { value, mask } = getInputValue(id, node);\n app.send(SetInputValue(id, value, mask));\n }\n const inputValues = new Map();\n const checkboxValues = new Map();\n app.attachStopCallback(() => {\n inputValues.clear();\n checkboxValues.clear();\n });\n function trackInputValue(id, node) {\n if (inputValues.get(id) === node.value) {\n return;\n }\n inputValues.set(id, node.value);\n sendInputValue(id, node);\n }\n function trackCheckboxValue(id, value) {\n if (checkboxValues.get(id) === value) {\n return;\n }\n checkboxValues.set(id, value);\n app.send(SetInputChecked(id, value));\n }\n // The only way (to our knowledge) to track all kinds of input changes, including those made by JS\n app.ticker.attach(() => {\n inputValues.forEach((value, id) => {\n const node = app.nodes.getNode(id);\n if (!node)\n return inputValues.delete(id);\n trackInputValue(id, node);\n });\n checkboxValues.forEach((checked, id) => {\n const node = app.nodes.getNode(id);\n if (!node)\n return checkboxValues.delete(id);\n trackCheckboxValue(id, node.checked);\n });\n }, 3);\n function sendInputChange(id, node, hesitationTime, inputTime) {\n const { value, mask } = getInputValue(id, node);\n let label = getInputLabel(node);\n if (app.sanitizer.privateMode) {\n label = label.replaceAll(/./g, '*');\n }\n app.send(InputChange(id, value, mask !== 0, label, hesitationTime, inputTime));\n }\n app.nodes.attachNodeCallback(app.safe((node) => {\n const id = app.nodes.getID(node);\n if (id === undefined) {\n return;\n }\n // TODO: support multiple select (?): use selectedOptions;\n if (hasTag(node, 'select')) {\n sendInputValue(id, node);\n app.nodes.attachNodeListener(node, 'change', () => sendInputValue(id, node));\n }\n if (isTextFieldElement(node)) {\n trackInputValue(id, node);\n let nodeFocusTime = 0;\n let nodeHesitationTime = 0;\n let inputTime = 0;\n const onFocus = () => {\n nodeFocusTime = now();\n };\n const onInput = () => {\n if (nodeHesitationTime === 0 && nodeFocusTime !== 0) {\n nodeHesitationTime = now() - nodeFocusTime;\n }\n };\n const onChange = () => {\n if (nodeFocusTime !== 0) {\n inputTime = now() - nodeFocusTime;\n }\n sendInputChange(id, node, nodeHesitationTime, inputTime);\n nodeHesitationTime = 0;\n inputTime = 0;\n nodeFocusTime = 0;\n };\n app.nodes.attachNodeListener(node, 'focus', onFocus);\n app.nodes.attachNodeListener(node, 'input', onInput);\n app.nodes.attachNodeListener(node, 'change', onChange);\n return;\n }\n if (isCheckbox(node)) {\n trackCheckboxValue(id, node.checked);\n app.nodes.attachNodeListener(node, 'change', () => trackCheckboxValue(id, node.checked));\n return;\n }\n }));\n}\n","import { hasTag, isSVGElement, isDocument } from '../app/guards.js';\nimport { normSpaces, hasOpenreplayAttribute, getLabelAttribute, now } from '../utils.js';\nimport { MouseMove, MouseClick, MouseThrashing } from '../app/messages.gen.js';\nimport { getInputLabel } from './input.js';\nconst cssEscape = (typeof CSS !== 'undefined' && CSS.escape) || ((t) => t);\nconst docClassCache = new WeakMap();\nfunction _getSelector(target) {\n const selector = getCSSPath(target);\n return selector || '';\n}\nfunction isClickable(element) {\n const tag = element.tagName.toUpperCase();\n return (tag === 'BUTTON' ||\n tag === 'A' ||\n tag === 'LI' ||\n tag === 'SELECT' ||\n tag === 'TR' ||\n tag === 'TH' ||\n element.onclick != null ||\n element.getAttribute('role') === 'button');\n //|| element.className.includes(\"btn\")\n // MBTODO: intercept addEventListener\n}\n//TODO: fix (typescript is not sure about target variable after assignation of svg)\nfunction getTarget(target, document) {\n if (target instanceof Element) {\n return _getTarget(target, document);\n }\n return null;\n}\nfunction _getTarget(target, document) {\n let element = target;\n while (element !== null && element !== document.documentElement) {\n if (hasOpenreplayAttribute(element, 'masked')) {\n return null;\n }\n element = element.parentElement;\n }\n if (isSVGElement(target)) {\n let owner = target.ownerSVGElement;\n while (owner !== null) {\n target = owner;\n owner = owner.ownerSVGElement;\n }\n }\n element = target;\n while (element !== null && element !== document.documentElement) {\n const tag = element.tagName.toUpperCase();\n if (tag === 'LABEL') {\n return null;\n }\n if (tag === 'INPUT') {\n return element;\n }\n if (isClickable(element) || getLabelAttribute(element) !== null) {\n return element;\n }\n element = element.parentElement;\n }\n return target === document.documentElement ? null : target;\n}\nexport default function (app, options) {\n const { disableClickmaps = false } = options || {};\n function getTargetLabel(target) {\n const dl = getLabelAttribute(target);\n if (dl !== null) {\n return dl;\n }\n if (hasTag(target, 'input')) {\n return getInputLabel(target);\n }\n if (isClickable(target)) {\n let label = '';\n if (target instanceof HTMLElement) {\n label = app.sanitizer.getInnerTextSecure(target);\n }\n label = label || target.id || target.className;\n return normSpaces(label).slice(0, 100);\n }\n return '';\n }\n let mousePositionX = -1;\n let mousePositionY = -1;\n let mousePositionChanged = false;\n let mouseTarget = null;\n let mouseTargetTime = 0;\n let selectorMap = {};\n let velocity = 0;\n let direction = 0;\n let directionChangeCount = 0;\n let distance = 0;\n let checkIntervalId;\n const shakeThreshold = 0.008;\n const shakeCheckInterval = 225;\n function checkMouseShaking() {\n const nextVelocity = distance / shakeCheckInterval;\n if (!velocity) {\n velocity = nextVelocity;\n return;\n }\n const acceleration = (nextVelocity - velocity) / shakeCheckInterval;\n if (directionChangeCount > 4 && acceleration > shakeThreshold) {\n app.send(MouseThrashing(now()));\n }\n distance = 0;\n directionChangeCount = 0;\n velocity = nextVelocity;\n }\n app.attachStartCallback(() => {\n checkIntervalId = setInterval(() => checkMouseShaking(), shakeCheckInterval);\n });\n app.attachStopCallback(() => {\n mousePositionX = -1;\n mousePositionY = -1;\n mousePositionChanged = false;\n mouseTarget = null;\n selectorMap = {};\n if (checkIntervalId) {\n clearInterval(checkIntervalId);\n }\n });\n const sendMouseMove = () => {\n if (mousePositionChanged) {\n app.send(MouseMove(mousePositionX, mousePositionY));\n mousePositionChanged = false;\n }\n };\n const patchDocument = (document, topframe = false) => {\n function getSelector(id, target) {\n return (selectorMap[id] = selectorMap[id] || _getSelector(target));\n }\n const attachListener = topframe\n ? app.attachEventListener.bind(app) // attached/removed on start/stop\n : app.nodes.attachNodeListener.bind(app.nodes); // attached/removed on node register/unregister\n attachListener(document.documentElement, 'mouseover', (e) => {\n const target = getTarget(e.target, document);\n if (target !== mouseTarget) {\n mouseTarget = target;\n mouseTargetTime = performance.now();\n }\n });\n attachListener(document, 'mousemove', (e) => {\n const [left, top] = app.observer.getDocumentOffset(document); // MBTODO?: document-id related message\n mousePositionX = e.clientX + left;\n mousePositionY = e.clientY + top;\n mousePositionChanged = true;\n const nextDirection = Math.sign(e.movementX);\n distance += Math.abs(e.movementX) + Math.abs(e.movementY);\n if (nextDirection !== direction) {\n direction = nextDirection;\n directionChangeCount++;\n }\n }, false);\n attachListener(document, 'click', (e) => {\n const target = getTarget(e.target, document);\n if ((!e.clientX && !e.clientY) || target === null) {\n return;\n }\n const id = app.nodes.getID(target);\n if (id !== undefined) {\n const clickX = e.pageX;\n const clickY = e.pageY;\n const contentWidth = document.documentElement.scrollWidth;\n const contentHeight = document.documentElement.scrollHeight;\n const normalizedX = roundNumber(clickX / contentWidth);\n const normalizedY = roundNumber(clickY / contentHeight);\n sendMouseMove();\n const label = getTargetLabel(target);\n app.send(MouseClick(id, mouseTarget === target ? Math.round(performance.now() - mouseTargetTime) : 0, app.sanitizer.privateMode ? label.replaceAll(/./g, '*') : label, isClickable(target) && !disableClickmaps ? getSelector(id, target) : '', normalizedX, normalizedY), true);\n }\n mouseTarget = null;\n });\n };\n app.nodes.attachNodeCallback((node) => {\n if (isDocument(node)) {\n patchDocument(node);\n }\n });\n patchDocument(document, true);\n app.ticker.attach(sendMouseMove, options?.trackingOffset || 7);\n}\n/**\n * we get 0 to 1 decimal number, convert and round it, then turn to %\n * 0.39643 => 396.43 => 396 => 39.6%\n * */\nfunction roundNumber(num) {\n return Math.round(num * 1e4);\n}\nfunction isDocUniqueClass(cls, doc) {\n let cache = docClassCache.get(doc);\n if (!cache) {\n cache = Object.create(null);\n docClassCache.set(doc, cache);\n }\n if (cls in cache)\n return cache[cls];\n const unique = doc.querySelectorAll(`.${cssEscape(cls)}`).length === 1;\n cache[cls] = unique;\n return unique;\n}\n;\nfunction wordLike(name) {\n if (/^[a-z\\-]{3,}$/i.test(name)) {\n const words = name.split(/-|[A-Z]/);\n for (const word of words) {\n if (word.length <= 2) {\n return false;\n }\n if (/[^aeiou]{4,}/i.test(word)) {\n return false;\n }\n }\n return true;\n }\n return false;\n}\nexport function getCSSPath(el) {\n if (!el || el.nodeType !== 1)\n return false;\n if (el.id)\n return `#${cssEscape(el.id)}`;\n const parts = [];\n while (el && el.nodeType === 1 && el !== el.ownerDocument) {\n if (el.id) {\n parts.unshift(`#${cssEscape(el.id)}`);\n break;\n }\n const tag = el.tagName.toLowerCase();\n if (el.classList?.length) {\n for (const cls of el.classList) {\n if (wordLike(cls) && isDocUniqueClass(cls, el.ownerDocument)) {\n parts.unshift(`${tag}.${cssEscape(cls)}`);\n return parts.join(' > ');\n }\n }\n }\n const sibCls = getUniqueSiblingClass(el);\n if (sibCls) {\n parts.unshift(`${tag}.${cssEscape(sibCls)}`);\n }\n else if (el === el.ownerDocument.body ||\n el === el.ownerDocument.documentElement) {\n parts.unshift(tag);\n }\n else {\n let idx = 1;\n for (let sib = el.previousElementSibling; sib; sib = sib.previousElementSibling) {\n if (sib.tagName.toLowerCase() === tag)\n idx++;\n }\n parts.unshift(`${tag}:nth-of-type(${idx})`);\n }\n el = el.parentNode;\n }\n return parts.join(' > ');\n}\n;\nfunction getUniqueSiblingClass(el) {\n if (!el.classList?.length || !el.parentNode)\n return null;\n const sibs = el.parentNode.children;\n outer: for (const cls of el.classList) {\n if (!wordLike(cls) || !isDocUniqueClass(cls, el.ownerDocument))\n continue;\n for (const sib of sibs) {\n if (sib !== el && sib.classList?.contains(cls))\n continue outer;\n }\n return cls;\n }\n return null;\n}\n","var e,n,t,r,i,o=-1,a=function(e){addEventListener(\"pageshow\",(function(n){n.persisted&&(o=n.timeStamp,e(n))}),!0)},c=function(){var e=self.performance&&performance.getEntriesByType&&performance.getEntriesByType(\"navigation\")[0];if(e&&e.responseStart>0&&e.responseStart<performance.now())return e},u=function(){var e=c();return e&&e.activationStart||0},f=function(e,n){var t=c(),r=\"navigate\";o>=0?r=\"back-forward-cache\":t&&(document.prerendering||u()>0?r=\"prerender\":document.wasDiscarded?r=\"restore\":t.type&&(r=t.type.replace(/_/g,\"-\")));return{name:e,value:void 0===n?-1:n,rating:\"good\",delta:0,entries:[],id:\"v4-\".concat(Date.now(),\"-\").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:r}},s=function(e,n,t){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var r=new PerformanceObserver((function(e){Promise.resolve().then((function(){n(e.getEntries())}))}));return r.observe(Object.assign({type:e,buffered:!0},t||{})),r}}catch(e){}},d=function(e,n,t,r){var i,o;return function(a){n.value>=0&&(a||r)&&((o=n.value-(i||0))||void 0===i)&&(i=n.value,n.delta=o,n.rating=function(e,n){return e>n[1]?\"poor\":e>n[0]?\"needs-improvement\":\"good\"}(n.value,t),e(n))}},l=function(e){requestAnimationFrame((function(){return requestAnimationFrame((function(){return e()}))}))},p=function(e){document.addEventListener(\"visibilitychange\",(function(){\"hidden\"===document.visibilityState&&e()}))},v=function(e){var n=!1;return function(){n||(e(),n=!0)}},m=-1,h=function(){return\"hidden\"!==document.visibilityState||document.prerendering?1/0:0},g=function(e){\"hidden\"===document.visibilityState&&m>-1&&(m=\"visibilitychange\"===e.type?e.timeStamp:0,T())},y=function(){addEventListener(\"visibilitychange\",g,!0),addEventListener(\"prerenderingchange\",g,!0)},T=function(){removeEventListener(\"visibilitychange\",g,!0),removeEventListener(\"prerenderingchange\",g,!0)},E=function(){return m<0&&(m=h(),y(),a((function(){setTimeout((function(){m=h(),y()}),0)}))),{get firstHiddenTime(){return m}}},C=function(e){document.prerendering?addEventListener(\"prerenderingchange\",(function(){return e()}),!0):e()},b=[1800,3e3],S=function(e,n){n=n||{},C((function(){var t,r=E(),i=f(\"FCP\"),o=s(\"paint\",(function(e){e.forEach((function(e){\"first-contentful-paint\"===e.name&&(o.disconnect(),e.startTime<r.firstHiddenTime&&(i.value=Math.max(e.startTime-u(),0),i.entries.push(e),t(!0)))}))}));o&&(t=d(e,i,b,n.reportAllChanges),a((function(r){i=f(\"FCP\"),t=d(e,i,b,n.reportAllChanges),l((function(){i.value=performance.now()-r.timeStamp,t(!0)}))})))}))},L=[.1,.25],w=function(e,n){n=n||{},S(v((function(){var t,r=f(\"CLS\",0),i=0,o=[],c=function(e){e.forEach((function(e){if(!e.hadRecentInput){var n=o[0],t=o[o.length-1];i&&e.startTime-t.startTime<1e3&&e.startTime-n.startTime<5e3?(i+=e.value,o.push(e)):(i=e.value,o=[e])}})),i>r.value&&(r.value=i,r.entries=o,t())},u=s(\"layout-shift\",c);u&&(t=d(e,r,L,n.reportAllChanges),p((function(){c(u.takeRecords()),t(!0)})),a((function(){i=0,r=f(\"CLS\",0),t=d(e,r,L,n.reportAllChanges),l((function(){return t()}))})),setTimeout(t,0))})))},A=0,I=1/0,P=0,M=function(e){e.forEach((function(e){e.interactionId&&(I=Math.min(I,e.interactionId),P=Math.max(P,e.interactionId),A=P?(P-I)/7+1:0)}))},k=function(){return e?A:performance.interactionCount||0},F=function(){\"interactionCount\"in performance||e||(e=s(\"event\",M,{type:\"event\",buffered:!0,durationThreshold:0}))},D=[],x=new Map,R=0,B=function(){var e=Math.min(D.length-1,Math.floor((k()-R)/50));return D[e]},H=[],q=function(e){if(H.forEach((function(n){return n(e)})),e.interactionId||\"first-input\"===e.entryType){var n=D[D.length-1],t=x.get(e.interactionId);if(t||D.length<10||e.duration>n.latency){if(t)e.duration>t.latency?(t.entries=[e],t.latency=e.duration):e.duration===t.latency&&e.startTime===t.entries[0].startTime&&t.entries.push(e);else{var r={id:e.interactionId,latency:e.duration,entries:[e]};x.set(r.id,r),D.push(r)}D.sort((function(e,n){return n.latency-e.latency})),D.length>10&&D.splice(10).forEach((function(e){return x.delete(e.id)}))}}},O=function(e){var n=self.requestIdleCallback||self.setTimeout,t=-1;return e=v(e),\"hidden\"===document.visibilityState?e():(t=n(e),p(e)),t},N=[200,500],j=function(e,n){\"PerformanceEventTiming\"in self&&\"interactionId\"in PerformanceEventTiming.prototype&&(n=n||{},C((function(){var t;F();var r,i=f(\"INP\"),o=function(e){O((function(){e.forEach(q);var n=B();n&&n.latency!==i.value&&(i.value=n.latency,i.entries=n.entries,r())}))},c=s(\"event\",o,{durationThreshold:null!==(t=n.durationThreshold)&&void 0!==t?t:40});r=d(e,i,N,n.reportAllChanges),c&&(c.observe({type:\"first-input\",buffered:!0}),p((function(){o(c.takeRecords()),r(!0)})),a((function(){R=k(),D.length=0,x.clear(),i=f(\"INP\"),r=d(e,i,N,n.reportAllChanges)})))})))},_=[2500,4e3],z={},G=function(e,n){n=n||{},C((function(){var t,r=E(),i=f(\"LCP\"),o=function(e){n.reportAllChanges||(e=e.slice(-1)),e.forEach((function(e){e.startTime<r.firstHiddenTime&&(i.value=Math.max(e.startTime-u(),0),i.entries=[e],t())}))},c=s(\"largest-contentful-paint\",o);if(c){t=d(e,i,_,n.reportAllChanges);var m=v((function(){z[i.id]||(o(c.takeRecords()),c.disconnect(),z[i.id]=!0,t(!0))}));[\"keydown\",\"click\"].forEach((function(e){addEventListener(e,(function(){return O(m)}),{once:!0,capture:!0})})),p(m),a((function(r){i=f(\"LCP\"),t=d(e,i,_,n.reportAllChanges),l((function(){i.value=performance.now()-r.timeStamp,z[i.id]=!0,t(!0)}))}))}}))},J=[800,1800],K=function e(n){document.prerendering?C((function(){return e(n)})):\"complete\"!==document.readyState?addEventListener(\"load\",(function(){return e(n)}),!0):setTimeout(n,0)},Q=function(e,n){n=n||{};var t=f(\"TTFB\"),r=d(e,t,J,n.reportAllChanges);K((function(){var i=c();i&&(t.value=Math.max(i.responseStart-u(),0),t.entries=[i],r(!0),a((function(){t=f(\"TTFB\",0),(r=d(e,t,J,n.reportAllChanges))(!0)})))}))},U={passive:!0,capture:!0},V=new Date,W=function(e,i){n||(n=i,t=e,r=new Date,Z(removeEventListener),X())},X=function(){if(t>=0&&t<r-V){var e={entryType:\"first-input\",name:n.type,target:n.target,cancelable:n.cancelable,startTime:n.timeStamp,processingStart:n.timeStamp+t};i.forEach((function(n){n(e)})),i=[]}},Y=function(e){if(e.cancelable){var n=(e.timeStamp>1e12?new Date:performance.now())-e.timeStamp;\"pointerdown\"==e.type?function(e,n){var t=function(){W(e,n),i()},r=function(){i()},i=function(){removeEventListener(\"pointerup\",t,U),removeEventListener(\"pointercancel\",r,U)};addEventListener(\"pointerup\",t,U),addEventListener(\"pointercancel\",r,U)}(n,e):W(n,e)}},Z=function(e){[\"mousedown\",\"keydown\",\"touchstart\",\"pointerdown\"].forEach((function(n){return e(n,Y,U)}))},$=[100,300],ee=function(e,r){r=r||{},C((function(){var o,c=E(),u=f(\"FID\"),l=function(e){e.startTime<c.firstHiddenTime&&(u.value=e.processingStart-e.startTime,u.entries.push(e),o(!0))},m=function(e){e.forEach(l)},h=s(\"first-input\",m);o=d(e,u,$,r.reportAllChanges),h&&(p(v((function(){m(h.takeRecords()),h.disconnect()}))),a((function(){var a;u=f(\"FID\"),o=d(e,u,$,r.reportAllChanges),i=[],t=-1,n=null,Z(addEventListener),a=l,i.push(a),X()})))}))};export{L as CLSThresholds,b as FCPThresholds,$ as FIDThresholds,N as INPThresholds,_ as LCPThresholds,J as TTFBThresholds,w as onCLS,S as onFCP,ee as onFID,j as onINP,G as onLCP,Q as onTTFB};\n","import { hasTag } from '../app/guards.js';\nimport { isURL, getTimeOrigin } from '../utils.js';\nimport { ResourceTiming, PageLoadTiming, PageRenderTiming, WebVitals } from '../app/messages.gen.js';\nimport { onCLS, onINP, onLCP, onTTFB } from 'web-vitals';\nfunction getPaintBlocks(resources) {\n const paintBlocks = [];\n const elements = document.getElementsByTagName('*');\n const styleURL = /url\\((\"[^\"]*\"|'[^']*'|[^)]*)\\)/i;\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n let src = '';\n if (hasTag(element, 'img')) {\n src = element.currentSrc || element.src;\n }\n if (!src) {\n const backgroundImage = getComputedStyle(element).getPropertyValue('background-image');\n if (backgroundImage) {\n const matches = styleURL.exec(backgroundImage);\n if (matches !== null) {\n src = matches[1];\n if (src.startsWith('\"') || src.startsWith(\"'\")) {\n src = src.substr(1, src.length - 2);\n }\n }\n }\n }\n if (!src)\n continue;\n const time = src.substr(0, 10) === 'data:image' ? 0 : resources[src];\n if (time === undefined)\n continue;\n const rect = element.getBoundingClientRect();\n const top = Math.max(rect.top, 0);\n const left = Math.max(rect.left, 0);\n const bottom = Math.min(rect.bottom, window.innerHeight ||\n (document.documentElement && document.documentElement.clientHeight) ||\n 0);\n const right = Math.min(rect.right, window.innerWidth || (document.documentElement && document.documentElement.clientWidth) || 0);\n if (bottom <= top || right <= left)\n continue;\n const area = (bottom - top) * (right - left);\n paintBlocks.push({ time, area });\n }\n return paintBlocks;\n}\nfunction calculateSpeedIndex(firstContentfulPaint, paintBlocks) {\n let a = (Math.max((document.documentElement && document.documentElement.clientWidth) || 0, window.innerWidth || 0) *\n Math.max((document.documentElement && document.documentElement.clientHeight) || 0, window.innerHeight || 0)) /\n 10;\n let s = a * firstContentfulPaint;\n for (let i = 0; i < paintBlocks.length; i++) {\n const { time, area } = paintBlocks[i];\n a += area;\n s += area * (time > firstContentfulPaint ? time : firstContentfulPaint);\n }\n return a === 0 ? 0 : s / a;\n}\nexport default function (app, opts) {\n const options = Object.assign({\n captureResourceTimings: true,\n capturePageLoadTimings: true,\n capturePageRenderTimings: true,\n excludedResourceUrls: [],\n }, opts);\n if (!('PerformanceObserver' in window)) {\n options.captureResourceTimings = false;\n }\n if (!options.captureResourceTimings) {\n return;\n } // Resources are necessary for all timings\n let resources = {};\n function resourceTiming(entry) {\n if (entry.duration < 0 || !isURL(entry.name) || app.isServiceURL(entry.name))\n return;\n if (resources !== null) {\n resources[entry.name] = entry.startTime + entry.duration;\n }\n let shouldSkip = false;\n options.excludedResourceUrls?.forEach((url) => {\n if (entry.name.startsWith(url)) {\n shouldSkip = true;\n return;\n }\n });\n if (shouldSkip) {\n return;\n }\n // will probably require custom header added to responses for tracked requests:\n // Timing-Allow-Origin: *\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Timing-Allow-Origin\n let stalled = 0;\n if (entry.connectEnd && entry.connectEnd > entry.domainLookupEnd) {\n // Usual case stalled is time between connection establishment and request start\n stalled = Math.max(0, entry.requestStart - entry.connectEnd);\n }\n else {\n // Connection reuse case - stalled is time between domain lookup and request start\n stalled = Math.max(0, entry.requestStart - entry.domainLookupEnd);\n }\n const timings = {\n queueing: entry.requestStart - entry.fetchStart,\n dnsLookup: entry.domainLookupEnd - entry.domainLookupStart,\n initialConnection: entry.connectEnd - entry.connectStart,\n ssl: entry.secureConnectionStart > 0 ? entry.connectEnd - entry.secureConnectionStart : 0,\n ttfb: entry.responseStart - entry.requestStart,\n contentDownload: entry.responseEnd - entry.responseStart,\n total: entry.duration ?? entry.responseEnd - entry.startTime,\n stalled,\n };\n const entryName = options.resourceNameSanitizer\n ? options.resourceNameSanitizer(entry.name)\n : entry.name;\n const cached = (entry.responseStatus && entry.responseStatus === 304) ||\n // @ts-ignore\n (entry.deliveryType && entry.deliveryType === 'cache') ||\n (entry.transferSize === 0 && entry.decodedBodySize > 0);\n const requestFailed = entry.responseStatus && entry.responseStatus >= 400;\n const decodedBodySize = requestFailed ? -111 : entry.decodedBodySize || 0;\n app.send(ResourceTiming(entry.startTime + getTimeOrigin(), entry.duration, timings.ttfb, entry.transferSize > entry.encodedBodySize ? entry.transferSize - entry.encodedBodySize : 0, entry.encodedBodySize || 0, decodedBodySize, app.sanitizer.privateMode ? entry.name.replaceAll(/./g, '*') : entryName, entry.initiatorType, entry.transferSize, cached, timings.queueing, timings.dnsLookup, timings.initialConnection, timings.ssl, timings.contentDownload, timings.total, timings.stalled));\n }\n const observer = new PerformanceObserver((list) => list.getEntries().forEach(resourceTiming));\n function onVitalsSignal(msg) {\n if (app.active()) {\n return app.send(WebVitals(msg.name, String(msg.value)));\n }\n }\n let prevSessionID;\n app.attachStartCallback(function ({ sessionID }) {\n if (sessionID !== prevSessionID) {\n prevSessionID = sessionID;\n }\n observer.observe({ type: 'resource', buffered: true });\n // browser support:\n // onCLS(): Chromium\n // onFCP(): Chromium, Firefox, Safari\n // onFID(): Chromium, Firefox (Deprecated)\n // onINP(): Chromium\n // onLCP(): Chromium, Firefox\n // onTTFB(): Chromium, Firefox, Safari\n onCLS(onVitalsSignal);\n onINP(onVitalsSignal);\n onLCP(onVitalsSignal);\n onTTFB(onVitalsSignal);\n });\n app.attachStopCallback(function () {\n observer.disconnect();\n });\n let firstPaint = 0, firstContentfulPaint = 0;\n if (options.capturePageLoadTimings) {\n let pageLoadTimingSent = false;\n app.ticker.attach(() => {\n if (pageLoadTimingSent) {\n return;\n }\n if (firstPaint === 0 || firstContentfulPaint === 0) {\n performance.getEntriesByType('paint').forEach((entry) => {\n const { name, startTime } = entry;\n switch (name) {\n case 'first-paint':\n firstPaint = startTime;\n break;\n case 'first-contentful-paint':\n firstContentfulPaint = startTime;\n break;\n }\n });\n }\n if (performance.timing.loadEventEnd || performance.now() > 30000) {\n pageLoadTimingSent = true;\n const { \n // should be ok to use here, (https://github.com/mdn/content/issues/4713)\n // since it is compared with the values obtained on the page load (before any possible sleep state)\n // deprecated though\n navigationStart, requestStart, responseStart, responseEnd, domContentLoadedEventStart, domContentLoadedEventEnd, loadEventStart, loadEventEnd, } = performance.timing;\n app.send(PageLoadTiming(requestStart - navigationStart || 0, responseStart - navigationStart || 0, responseEnd - navigationStart || 0, domContentLoadedEventStart - navigationStart || 0, domContentLoadedEventEnd - navigationStart || 0, loadEventStart - navigationStart || 0, loadEventEnd - navigationStart || 0, firstPaint, firstContentfulPaint));\n }\n }, 30);\n }\n if (options.capturePageRenderTimings) {\n let visuallyComplete = 0, interactiveWindowStartTime = 0, interactiveWindowTickTime = 0, paintBlocks = null;\n let pageRenderTimingSent = false;\n app.ticker.attach(() => {\n if (pageRenderTimingSent) {\n return;\n }\n const time = performance.now();\n if (resources !== null) {\n visuallyComplete = Math.max.apply(null, Object.keys(resources).map((k) => resources[k]));\n if (time - visuallyComplete > 1000) {\n paintBlocks = getPaintBlocks(resources);\n resources = null;\n }\n }\n if (interactiveWindowTickTime !== null) {\n if (time - interactiveWindowTickTime > 50) {\n interactiveWindowStartTime = time;\n }\n interactiveWindowTickTime = time - interactiveWindowStartTime > 5000 ? null : time;\n }\n if ((paintBlocks !== null && interactiveWindowTickTime === null) || time > 30000) {\n pageRenderTimingSent = true;\n resources = null;\n const speedIndex = paintBlocks === null\n ? 0\n : calculateSpeedIndex(firstContentfulPaint || firstPaint, paintBlocks);\n const { domContentLoadedEventEnd, navigationStart } = performance.timing;\n const timeToInteractive = interactiveWindowTickTime === null\n ? Math.max(interactiveWindowStartTime, firstContentfulPaint, domContentLoadedEventEnd - navigationStart || 0)\n : 0;\n app.send(PageRenderTiming(speedIndex, firstContentfulPaint > visuallyComplete ? firstContentfulPaint : visuallyComplete, timeToInteractive));\n }\n });\n }\n}\n","import { SetViewportScroll, SetNodeScroll } from '../app/messages.gen.js';\nimport { isNode, isElementNode, isRootNode, isDocument } from '../app/guards.js';\nfunction getDocumentScroll(doc) {\n const win = doc.defaultView;\n return [\n (win && win.scrollX) ||\n (doc.documentElement && doc.documentElement.scrollLeft) ||\n (doc.body && doc.body.scrollLeft) ||\n 0,\n (win && win.scrollY) ||\n (doc.documentElement && doc.documentElement.scrollTop) ||\n (doc.body && doc.body.scrollTop) ||\n 0,\n ];\n}\nexport default function (app, insideIframe) {\n let documentScroll = false;\n const nodeScroll = new Map();\n function setNodeScroll(target) {\n if (!isNode(target)) {\n return;\n }\n if (isElementNode(target)) {\n nodeScroll.set(target, [target.scrollLeft, target.scrollTop]);\n }\n if (isDocument(target)) {\n nodeScroll.set(target, getDocumentScroll(target));\n }\n }\n const sendSetViewportScroll = app.safe(() => {\n if (insideIframe) {\n return;\n }\n app.send(SetViewportScroll(...getDocumentScroll(document)));\n });\n const sendSetNodeScroll = app.safe((s, node) => {\n const id = app.nodes.getID(node);\n if (id !== undefined) {\n app.send(SetNodeScroll(id, s[0], s[1]));\n }\n });\n app.attachStartCallback(sendSetViewportScroll);\n app.attachStopCallback(() => {\n documentScroll = false;\n nodeScroll.clear();\n });\n app.nodes.attachNodeCallback((node, isStart) => {\n // MBTODO: iterate over all the nodes on start instead of using isStart hack\n if (isStart) {\n if (isElementNode(node) && node.scrollLeft + node.scrollTop > 0) {\n nodeScroll.set(node, [node.scrollLeft, node.scrollTop]);\n }\n else if (isDocument(node)) {\n // DRY somehow?\n nodeScroll.set(node, getDocumentScroll(node));\n }\n }\n if (isRootNode(node)) {\n // scroll is not-composed event (https://javascript.info/shadow-dom-events)\n app.nodes.attachNodeListener(node, 'scroll', (e) => {\n setNodeScroll(e.target);\n });\n }\n });\n app.attachEventListener(document, 'scroll', (e) => {\n const target = e.target;\n if (target === document) {\n documentScroll = true;\n return;\n }\n setNodeScroll(target);\n });\n app.ticker.attach(() => {\n if (documentScroll) {\n sendSetViewportScroll();\n documentScroll = false;\n }\n nodeScroll.forEach(sendSetNodeScroll);\n nodeScroll.clear();\n }, 5, false);\n}\n","import { getTimeOrigin } from '../utils.js';\nimport { SetPageLocation, SetViewportSize, SetPageVisibility } from '../app/messages.gen.js';\nimport { stringWiper } from '../app/sanitizer.js';\nexport default function (app, options) {\n let url, width, height;\n let navigationStart;\n let referrer = document.referrer;\n const urlSanitizer = options?.urlSanitizer || ((u) => u);\n const titleSanitizer = options?.titleSanitizer || ((t) => t);\n const sendSetPageLocation = app.safe(() => {\n const currURL = document.URL;\n if (currURL !== url) {\n url = currURL;\n if (options?.replaceHashSymbol) {\n // replace hash router symbol if needed without affecting pathname of the url\n const u = new URL(currURL);\n const hashRoute = u.hash.startsWith('#/') ? u.hash.slice(2) : \"\";\n const routePath = hashRoute ? \"/\" + hashRoute.replace(/^\\/+/, \"\") : \"\";\n const cleaned = u.origin + u.pathname.replace(/\\/$/, \"\") + routePath + u.search;\n url = cleaned;\n }\n const sanitized = urlSanitizer(url);\n const safeTitle = app.sanitizer.privateMode\n ? stringWiper(document.title)\n : titleSanitizer(document.title);\n const safeUrl = app.sanitizer.privateMode ? stringWiper(sanitized) : sanitized;\n const safeReferrer = app.sanitizer.privateMode ? stringWiper(referrer) : referrer;\n app.send(SetPageLocation(safeUrl, safeReferrer, navigationStart, safeTitle));\n navigationStart = 0;\n referrer = url;\n }\n });\n const sendSetViewportSize = app.safe(() => {\n const { innerWidth, innerHeight } = window;\n if (innerWidth !== width || innerHeight !== height) {\n width = innerWidth;\n height = innerHeight;\n app.send(SetViewportSize(width, height));\n }\n });\n const sendSetPageVisibility = document.hidden === undefined\n ? Function.prototype\n : app.safe(() => app.send(SetPageVisibility(document.hidden)));\n app.attachStartCallback(() => {\n url = null;\n navigationStart = getTimeOrigin();\n width = height = -1;\n sendSetPageLocation();\n sendSetViewportSize();\n sendSetPageVisibility();\n });\n if (document.hidden !== undefined) {\n app.attachEventListener(document, 'visibilitychange', sendSetPageVisibility, false, false);\n }\n app.ticker.attach(sendSetPageLocation, 1, false);\n app.ticker.attach(sendSetViewportSize, 5, false);\n}\n","import { AdoptedSSInsertRuleURLBased, AdoptedSSDeleteRule, AdoptedSSAddOwner, TechnicalInfo, } from '../app/messages.gen.js';\nimport { hasTag } from '../app/guards.js';\nimport { nextID, styleSheetIDMap } from './constructedStyleSheets.js';\nconst defaults = {\n checkCssInterval: 200,\n scanInMemoryCSS: false,\n checkLimit: undefined,\n};\nexport default function (app, opts) {\n if (app === null)\n return;\n if (!window.CSSStyleSheet) {\n app.send(TechnicalInfo('no_stylesheet_prototype_in_window', ''));\n return;\n }\n const options = { ...defaults, ...opts };\n // sheetID:index -> ruleText\n const ruleSnapshots = new Map();\n let checkInterval = null;\n const trackedSheets = new Set();\n const checkIntervalMs = options.checkCssInterval || 200;\n let checkIterations = {};\n function checkRuleChanges() {\n if (!options.scanInMemoryCSS)\n return;\n const allSheets = trackedSheets.values();\n for (const sheet of allSheets) {\n try {\n const sheetID = styleSheetIDMap.get(sheet);\n if (!sheetID)\n continue;\n if (options.checkLimit) {\n if (!checkIterations[sheetID]) {\n checkIterations[sheetID] = 0;\n }\n else {\n checkIterations[sheetID]++;\n }\n if (checkIterations[sheetID] > options.checkLimit) {\n trackedSheets.delete(sheet);\n return;\n }\n }\n for (let j = 0; j < sheet.cssRules.length; j++) {\n try {\n const rule = sheet.cssRules[j];\n const key = `${sheetID}:${j}`;\n const oldText = ruleSnapshots.get(key);\n const newText = rule.cssText;\n if (oldText !== newText) {\n if (oldText !== undefined) {\n // Rule is changed\n app.send(AdoptedSSDeleteRule(sheetID, j));\n app.send(AdoptedSSInsertRuleURLBased(sheetID, newText, j, app.getBaseHref()));\n }\n else {\n // Rule added\n app.send(AdoptedSSInsertRuleURLBased(sheetID, newText, j, app.getBaseHref()));\n }\n ruleSnapshots.set(key, newText);\n }\n }\n catch (e) {\n /* Skip inaccessible rules */\n }\n }\n const keysToCheck = Array.from(ruleSnapshots.keys()).filter((key) => key.startsWith(`${sheetID}:`));\n for (const key of keysToCheck) {\n const index = parseInt(key.split(':')[1], 10);\n if (index >= sheet.cssRules.length) {\n ruleSnapshots.delete(key);\n }\n }\n }\n catch (e) {\n /* Skip inaccessible sheets */\n trackedSheets.delete(sheet);\n }\n }\n }\n const emptyRuleReg = /{\\s*}/;\n function isRuleEmpty(rule) {\n return emptyRuleReg.test(rule);\n }\n const sendInsertDeleteRule = app.safe((sheet, index, rule) => {\n const sheetID = styleSheetIDMap.get(sheet);\n if (!sheetID)\n return;\n if (typeof rule === 'string') {\n app.send(AdoptedSSInsertRuleURLBased(sheetID, rule, index, app.getBaseHref()));\n if (isRuleEmpty(rule)) {\n ruleSnapshots.set(`${sheetID}:${index}`, rule);\n trackedSheets.add(sheet);\n }\n }\n else {\n app.send(AdoptedSSDeleteRule(sheetID, index));\n if (ruleSnapshots.has(`${sheetID}:${index}`)) {\n ruleSnapshots.delete(`${sheetID}:${index}`);\n }\n }\n });\n const sendReplaceGroupingRule = app.safe((rule) => {\n let topmostRule = rule;\n while (topmostRule.parentRule)\n topmostRule = topmostRule.parentRule;\n const sheet = topmostRule.parentStyleSheet;\n if (!sheet)\n return;\n const sheetID = styleSheetIDMap.get(sheet);\n if (!sheetID)\n return;\n const cssText = topmostRule.cssText;\n const idx = Array.from(sheet.cssRules).indexOf(topmostRule);\n if (idx >= 0) {\n app.send(AdoptedSSInsertRuleURLBased(sheetID, cssText, idx, app.getBaseHref()));\n app.send(AdoptedSSDeleteRule(sheetID, idx + 1));\n if (isRuleEmpty(cssText)) {\n ruleSnapshots.set(`${sheetID}:${idx}`, cssText);\n trackedSheets.add(sheet);\n }\n }\n });\n // Patch prototype methods\n const patchContext = app.safe((context) => {\n if (context.__css_tracking_patched__)\n return;\n context.__css_tracking_patched__ = true;\n const { insertRule, deleteRule } = context.CSSStyleSheet.prototype;\n const { insertRule: groupInsertRule, deleteRule: groupDeleteRule } = context.CSSGroupingRule.prototype;\n context.CSSStyleSheet.prototype.insertRule = function (rule, index = 0) {\n const result = insertRule.call(this, rule, index);\n sendInsertDeleteRule(this, result, rule);\n return result;\n };\n context.CSSStyleSheet.prototype.deleteRule = function (index) {\n sendInsertDeleteRule(this, index);\n return deleteRule.call(this, index);\n };\n context.CSSGroupingRule.prototype.insertRule = function (rule, index = 0) {\n const result = groupInsertRule.call(this, rule, index);\n sendReplaceGroupingRule(this);\n return result;\n };\n context.CSSGroupingRule.prototype.deleteRule = function (index) {\n const result = groupDeleteRule.call(this, index);\n sendReplaceGroupingRule(this);\n return result;\n };\n });\n patchContext(window);\n app.observer.attachContextCallback(patchContext);\n app.nodes.attachNodeCallback((node) => {\n if (!hasTag(node, 'style') || !node.sheet)\n return;\n if (node.textContent !== null && node.textContent.trim().length > 0)\n return;\n const nodeID = app.nodes.getID(node);\n if (!nodeID)\n return;\n const sheet = node.sheet;\n const sheetID = nextID();\n styleSheetIDMap.set(sheet, sheetID);\n app.send(AdoptedSSAddOwner(sheetID, nodeID));\n for (let i = 0; i < sheet.cssRules.length; i++) {\n try {\n sendInsertDeleteRule(sheet, i, sheet.cssRules[i].cssText);\n }\n catch (e) {\n // Skip inaccessible rules\n }\n }\n });\n function startChecking() {\n if (checkInterval || !options.scanInMemoryCSS)\n return;\n checkInterval = window.setInterval(checkRuleChanges, checkIntervalMs);\n }\n setTimeout(startChecking, 50);\n app.attachStopCallback(() => {\n if (checkInterval) {\n clearInterval(checkInterval);\n checkInterval = null;\n }\n ruleSnapshots.clear();\n });\n}\n","import { isNode, hasTag } from '../app/guards.js';\nimport { SetNodeFocus } from '../app/messages.gen.js';\nexport default function (app) {\n function sendSetNodeFocus(n) {\n const id = app.nodes.getID(n);\n if (id !== undefined) {\n app.send(SetNodeFocus(id));\n }\n }\n let blurred = false;\n app.nodes.attachNodeCallback((node) => {\n if (!hasTag(node, 'body')) {\n return;\n }\n app.nodes.attachNodeListener(node, 'focus', (e) => {\n if (!isNode(e.target)) {\n return;\n }\n sendSetNodeFocus(e.target);\n blurred = false;\n });\n app.nodes.attachNodeListener(node, 'blur', (e) => {\n if (e.relatedTarget === null) {\n blurred = true;\n setTimeout(() => {\n if (blurred) {\n app.send(SetNodeFocus(-1));\n }\n }, 0);\n }\n });\n });\n app.attachStartCallback(() => {\n let elem = document.activeElement;\n while (elem && hasTag(elem, 'iframe') && elem.contentDocument) {\n elem = elem.contentDocument.activeElement;\n }\n if (elem && elem !== elem.ownerDocument.body) {\n sendSetNodeFocus(elem);\n }\n }, true);\n}\n","import { isDocument } from '../app/guards.js';\nimport { LoadFontFace } from '../app/messages.gen.js';\nexport default function (app) {\n if (!window.FontFace) {\n return;\n }\n const docFonts = new Map();\n const patchWindow = (wnd) => {\n // @ts-ignore\n class FontFaceInterceptor extends wnd.FontFace {\n constructor(...args) {\n //maybe do this on load(). In this case check if the document.fonts.load(...) function calls the font's load()\n if (typeof args[1] === 'string') {\n let desc = '';\n if (args[2]) {\n app.safe(() => {\n desc = JSON.stringify(args[2]);\n });\n }\n const ffData = [args[0], args[1], desc];\n const ffDataArr = docFonts.get(wnd.document) || [];\n ffDataArr.push(ffData);\n docFonts.set(wnd.document, ffDataArr);\n const parentID = wnd === window ? 0 : app.nodes.getID(wnd.document);\n if (parentID === undefined) {\n return;\n }\n if (app.active()) {\n app.send(LoadFontFace(parentID, ...ffData));\n }\n }\n super(...args);\n }\n }\n wnd.FontFace = FontFaceInterceptor;\n };\n app.observer.attachContextCallback(patchWindow);\n patchWindow(window);\n app.nodes.attachNodeCallback(app.safe((node) => {\n if (!isDocument(node)) {\n return;\n }\n const ffDataArr = docFonts.get(node);\n if (!ffDataArr) {\n return;\n }\n const parentID = node.defaultView === window ? 0 : app.nodes.getID(node);\n if (parentID === undefined) {\n return;\n }\n ffDataArr.forEach((ffData) => {\n app.send(LoadFontFace(parentID, ...ffData));\n });\n }));\n}\n","import { NetworkRequest } from '../app/messages.gen.js';\nimport { getTimeOrigin } from '../utils.js';\nimport { getExceptionMessage } from './exception.js';\nexport default function (app, instance, opts, sanitize, stringify) {\n app.debug.log('Openreplay: attaching axios spy to instance', instance);\n function captureResponseData(axiosResponseObj) {\n app.debug.log('Openreplay: capturing axios response data', axiosResponseObj);\n const { headers: reqHs, data: reqData, method, url, baseURL } = axiosResponseObj.config;\n const { data: rData, headers: rHs, status: globStatus, response } = axiosResponseObj;\n const { data: resData, headers: resHs, status: resStatus } = response || {};\n const ihOpt = opts.ignoreHeaders;\n const isHIgnoring = Array.isArray(ihOpt) ? (name) => ihOpt.includes(name) : () => ihOpt;\n function writeHeader(hsObj, header) {\n if (!isHIgnoring(header[0])) {\n hsObj[header[0]] = header[1];\n }\n }\n let requestHs = {};\n let responseHs = {};\n if (reqHs.toJSON) {\n requestHs = reqHs.toJSON();\n }\n else if (reqHs instanceof Headers) {\n reqHs.forEach((v, n) => writeHeader(requestHs, [n, v]));\n }\n else if (Array.isArray(reqHs)) {\n reqHs.forEach((h) => writeHeader(requestHs, h));\n }\n else if (typeof reqHs === 'object') {\n Object.entries(reqHs).forEach((h) => writeHeader(requestHs, h));\n }\n const usedResHeader = resHs ? resHs : rHs;\n if (usedResHeader.toJSON) {\n responseHs = usedResHeader.toJSON();\n }\n else if (usedResHeader instanceof Headers) {\n usedResHeader.forEach((v, n) => writeHeader(responseHs, [n, v]));\n }\n else if (Array.isArray(usedResHeader)) {\n usedResHeader.forEach((h) => writeHeader(responseHs, h));\n }\n else if (typeof usedResHeader === 'object') {\n Object.entries(usedResHeader).forEach(([n, v]) => {\n if (!isHIgnoring(n))\n responseHs[n] = v;\n });\n }\n const reqResInfo = sanitize({\n url,\n method: method || '',\n status: globStatus || resStatus || 0,\n request: {\n headers: requestHs,\n body: reqData,\n },\n response: {\n headers: responseHs,\n body: resData || rData,\n },\n });\n if (!reqResInfo) {\n app.debug.log('Openreplay: empty request/response info, skipping');\n return;\n }\n const requestStart = axiosResponseObj.config.__openreplay_timing;\n const duration = performance.now() - requestStart;\n app.debug.log('Openreplay: final req object', reqResInfo);\n app.send(NetworkRequest('xhr', String(method), String(reqResInfo.url), stringify(reqResInfo.request), stringify(reqResInfo.response), reqResInfo.status, requestStart + getTimeOrigin(), duration, 0));\n }\n function getStartTime(config) {\n app.debug.log('Openreplay: capturing API request', config);\n config.__openreplay_timing = performance.now();\n if (opts.sessionTokenHeader) {\n const header = typeof opts.sessionTokenHeader === 'string'\n ? opts.sessionTokenHeader\n : 'X-OpenReplay-Session-Token';\n const headerValue = app.getSessionToken();\n if (headerValue) {\n config.headers.set(header, headerValue);\n }\n }\n return config;\n }\n function captureNetworkRequest(response) {\n if (opts.failuresOnly)\n return response;\n captureResponseData(response);\n return response;\n }\n function captureNetworkError(error) {\n app.debug.log('Openreplay: capturing API request error', error);\n if (isAxiosError(error) && Boolean(error.response)) {\n captureResponseData(error.response);\n }\n else if (error instanceof Error) {\n app.send(getExceptionMessage(error, []));\n }\n return Promise.reject(error);\n }\n function logRequestError(ev) {\n app.debug.log('Openreplay: failed API request, skipping', ev);\n }\n const reqInt = instance.interceptors.request.use(getStartTime, logRequestError, {\n synchronous: true,\n });\n const resInt = instance.interceptors.response.use(captureNetworkRequest, captureNetworkError, {\n synchronous: true,\n });\n app.attachStopCallback(() => {\n instance.interceptors.request.eject?.(reqInt);\n instance.interceptors.response.eject?.(resInt);\n });\n}\nfunction isAxiosError(payload) {\n return isObject(payload) && payload.isAxiosError === true;\n}\nfunction isObject(thing) {\n return thing !== null && typeof thing === 'object';\n}\n","export const sensitiveParams = new Set([\n \"password\",\n \"pass\",\n \"pwd\",\n \"mdp\",\n \"token\",\n \"bearer\",\n \"jwt\",\n \"api_key\",\n \"api-key\",\n \"apiKey\",\n \"secret\",\n \"ssn\",\n \"zip\",\n \"zipcode\",\n \"x-api-key\",\n \"www-authenticate\",\n \"x-csrf-token\",\n \"x-requested-with\",\n \"x-forwarded-for\",\n \"x-real-ip\",\n \"cookie\",\n \"authorization\",\n \"auth\",\n \"proxy-authorization\",\n \"set-cookie\",\n \"account_key\",\n]);\nfunction numDigits(x) {\n return (Math.log10((x ^ (x >> 31)) - (x >> 31)) | 0) + 1;\n}\nfunction obscure(value) {\n if (typeof value === \"number\") {\n const digits = numDigits(value);\n return \"9\".repeat(digits);\n }\n if (typeof value === \"string\") {\n return value.replace(/[^\\f\\n\\r\\t\\v\\u00a0\\u1680\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000\\ufeff\\s]/g, '*');\n }\n return value;\n}\nexport function filterHeaders(headers) {\n const filteredHeaders = {};\n if (Array.isArray(headers)) {\n headers.forEach(({ name, value }) => {\n if (sensitiveParams.has(name.toLowerCase())) {\n filteredHeaders[name] = obscure(value);\n }\n else {\n filteredHeaders[name] = value;\n }\n });\n }\n else {\n for (const [key, value] of Object.entries(headers)) {\n if (sensitiveParams.has(key.toLowerCase())) {\n filteredHeaders[key] = obscure(value);\n }\n else {\n filteredHeaders[key] = value;\n }\n }\n }\n return filteredHeaders;\n}\nexport function filterBody(body) {\n if (!body) {\n return body;\n }\n let parsedBody;\n let isJSON = false;\n try {\n parsedBody = JSON.parse(body);\n isJSON = true;\n }\n catch (e) {\n // not json\n }\n if (isJSON) {\n obscureSensitiveData(parsedBody);\n return JSON.stringify(parsedBody);\n }\n else {\n const isUrlSearch = typeof body === \"string\" && body.includes(\"?\") && body.includes(\"=\");\n if (isUrlSearch) {\n try {\n const params = new URLSearchParams(body);\n for (const key of params.keys()) {\n if (sensitiveParams.has(key.toLowerCase())) {\n const value = obscure(params.get(key));\n params.set(key, value);\n }\n }\n return params.toString();\n }\n catch (e) {\n // not url query ?\n return body;\n }\n }\n else {\n // not json or url query\n return body;\n }\n }\n}\nexport function sanitizeObject(obj) {\n obscureSensitiveData(obj);\n return obj;\n}\nfunction obscureSensitiveData(obj) {\n if (Array.isArray(obj)) {\n obj.forEach(obscureSensitiveData);\n }\n else if (obj && typeof obj === \"object\") {\n for (const key in obj) {\n if (Object.hasOwn(obj, key)) {\n if (sensitiveParams.has(key.toLowerCase())) {\n obj[key] = obscure(obj[key]);\n }\n else if (obj[key] !== null && typeof obj[key] === \"object\") {\n obscureSensitiveData(obj[key]);\n }\n }\n }\n }\n}\nexport function tryFilterUrl(url) {\n if (!url)\n return \"\";\n try {\n const urlObj = new URL(url);\n if (urlObj.searchParams) {\n for (const key of urlObj.searchParams.keys()) {\n if (sensitiveParams.has(key.toLowerCase())) {\n urlObj.searchParams.set(key, \"******\");\n }\n }\n }\n return urlObj.toString();\n }\n catch (e) {\n return url;\n }\n}\n//# sourceMappingURL=sanitizers.js.map","import { tryFilterUrl, filterHeaders, filterBody, sanitizeObject, } from \"./sanitizers\";\n/**\n * I know we're not using most of the information from this class\n * but it can be useful in the future if we will decide to display more stuff in our ui\n * */\nexport default class NetworkMessage {\n constructor(ignoredHeaders = [], setSessionTokenHeader, sanitize) {\n this.ignoredHeaders = ignoredHeaders;\n this.setSessionTokenHeader = setSessionTokenHeader;\n this.sanitize = sanitize;\n this.id = '';\n this.name = '';\n this.method = '';\n this.url = '';\n this.status = 0;\n this.statusText = '';\n this.cancelState = 0;\n this.readyState = 0;\n this.header = {};\n this.responseType = '';\n this.requestType = 'xhr';\n this.requestHeader = {};\n this.responseSize = 0; // bytes\n this.responseSizeText = '';\n this.startTime = 0;\n this.endTime = 0;\n this.duration = 0;\n this.getData = {};\n this.requestData = null;\n }\n getMessage() {\n const { reqHs, resHs } = this.writeHeaders();\n const reqBody = this.method === 'GET'\n ? JSON.stringify(sanitizeObject(this.getData)) : filterBody(this.requestData);\n const request = {\n headers: filterHeaders(reqHs),\n body: reqBody,\n };\n const response = {\n headers: filterHeaders(resHs),\n body: filterBody(this.response)\n };\n const messageInfo = this.sanitize({\n url: tryFilterUrl(this.url),\n method: this.method,\n status: this.status,\n request,\n response,\n });\n if (!messageInfo)\n return null;\n const isGraphql = messageInfo.url.includes(\"/graphql\");\n if (isGraphql && messageInfo.response.body && typeof messageInfo.response.body === 'string') {\n const isError = messageInfo.response.body.includes(\"errors\");\n messageInfo.status = isError ? 400 : 200;\n this.requestType = 'graphql';\n }\n return {\n requestType: this.requestType,\n method: messageInfo.method,\n url: messageInfo.url,\n request: JSON.stringify(messageInfo.request),\n response: JSON.stringify(messageInfo.response),\n status: messageInfo.status,\n startTime: this.startTime,\n duration: this.duration,\n responseSize: this.responseSize,\n };\n }\n writeHeaders() {\n const reqHs = {};\n Object.entries(this.requestHeader).forEach(([key, value]) => {\n if (this.isHeaderIgnored(key))\n return;\n reqHs[key] = value;\n });\n this.setSessionTokenHeader((name, value) => {\n reqHs[name] = value;\n });\n const resHs = {};\n Object.entries(this.header).forEach(([key, value]) => {\n if (this.isHeaderIgnored(key))\n return;\n resHs[key] = value;\n });\n return { reqHs, resHs };\n }\n isHeaderIgnored(key) {\n if (Array.isArray(this.ignoredHeaders)) {\n return this.ignoredHeaders.map((k) => k.toLowerCase()).includes(key.toLowerCase());\n }\n else {\n return this.ignoredHeaders;\n }\n }\n}\n//# sourceMappingURL=networkMessage.js.map","export const genResponseByType = (responseType, response) => {\n let result = '';\n switch (responseType) {\n case '':\n case 'text':\n case 'json':\n if (typeof response == 'string') {\n try {\n result = JSON.parse(response);\n }\n catch (e) {\n // not a JSON string\n result = response.slice(0, 10000);\n }\n }\n else if (isPureObject(response) || Array.isArray(response)) {\n result = JSON.stringify(response);\n }\n else if (typeof response !== 'undefined') {\n result = Object.prototype.toString.call(response);\n }\n break;\n case 'blob':\n case 'document':\n case 'arraybuffer':\n default:\n if (typeof response !== 'undefined') {\n result = Object.prototype.toString.call(response);\n }\n break;\n }\n return result;\n};\nexport const getStringResponseByType = (responseType, response) => {\n let result = '';\n switch (responseType) {\n case '':\n case 'text':\n case 'json':\n if (typeof response == 'string') {\n result = response;\n }\n else if (isPureObject(response) || Array.isArray(response)) {\n result = JSON.stringify(response);\n }\n else if (typeof response !== 'undefined') {\n result = Object.prototype.toString.call(response);\n }\n break;\n case 'blob':\n case 'document':\n case 'arraybuffer':\n default:\n if (typeof response !== 'undefined') {\n result = Object.prototype.toString.call(response);\n }\n break;\n }\n return result;\n};\nexport const genStringBody = (body) => {\n if (!body) {\n return null;\n }\n let result;\n try {\n if (typeof body === 'string') {\n if (body[0] === '{' || body[0] === '[') {\n result = body;\n }\n // 'a=1&b=2' => try to parse as query\n const arr = body.split('&');\n if (arr.length === 1) {\n // not a query, parse as original string\n result = body;\n }\n else {\n // 'a=1&b=2&c' => parse as query\n result = arr.join(',');\n }\n }\n else if (isIterable(body)) {\n // FormData or URLSearchParams or Array\n const arr = [];\n for (const [key, value] of body) {\n arr.push(`${key}=${typeof value === 'string' ? value : '[object Object]'}`);\n }\n result = arr.join(',');\n }\n else if (body instanceof Blob ||\n body instanceof ReadableStream ||\n body instanceof ArrayBuffer) {\n result = 'byte data';\n }\n else if (isPureObject(body)) {\n // overriding ArrayBufferView which is not convertable to string\n result = body;\n }\n else {\n result = `can't parse body ${typeof body}`;\n }\n return result;\n }\n catch (_) {\n return \"can't parse body\";\n }\n};\nexport const genGetDataByUrl = (url, getData = {}) => {\n if (!isPureObject(getData)) {\n getData = {};\n }\n let query = url ? url.split('?') : []; // a.php?b=c&d=?e => ['a.php', 'b=c&d=', 'e']\n query.shift(); // => ['b=c&d=', 'e']\n if (query.length > 0) {\n query = query.join('?').split('&'); // => 'b=c&d=?e' => ['b=c', 'd=?e']\n for (const q of query) {\n const kv = q.split('=');\n try {\n getData[kv[0]] = decodeURIComponent(kv[1]);\n }\n catch (e) {\n // \"URIError: URI malformed\" will be thrown when `kv[1]` contains \"%\", so just use raw data\n // @issue #470\n // @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Malformed_URI\n getData[kv[0]] = kv[1];\n }\n }\n }\n return getData;\n};\nexport const genFormattedBody = (body) => {\n if (!body) {\n return null;\n }\n let result;\n if (typeof body === 'string') {\n try {\n // '{a:1}' =>\n result = JSON.parse(body);\n }\n catch (e) {\n // 'a=1&b=2' => try to parse as query\n const arr = body.split('&');\n result = {};\n // eslint-disable-next-line\n for (let q of arr) {\n const kv = q.split('=');\n result[kv[0]] = kv[1] === undefined ? 'undefined' : kv[1];\n }\n }\n }\n else if (isIterable(body)) {\n // FormData or URLSearchParams or Array\n result = {};\n for (const [key, value] of body) {\n result[key] = typeof value === 'string' ? value : '[object Object]';\n }\n }\n else if (ArrayBuffer.isView(body) ||\n body instanceof Blob ||\n body instanceof ReadableStream ||\n body instanceof ArrayBuffer) {\n result = '[byte data]';\n }\n else if (isPureObject(body)) {\n result = body;\n }\n else {\n result = `can't parse body ${typeof body}`;\n }\n return result;\n};\nexport function isPureObject(input) {\n return null !== input && typeof input === 'object';\n}\nexport function isIterable(value) {\n if (value === null || value === undefined) {\n return false;\n }\n if (ArrayBuffer.isView(value)) {\n return false;\n }\n return typeof Symbol !== 'undefined' && typeof value[Symbol.iterator] === 'function';\n}\nexport function formatByteSize(bytes) {\n if (bytes <= 0) {\n // shouldn't happen?\n return '';\n }\n if (bytes >= 1000 * 1000) {\n return (bytes / 1000 / 1000).toFixed(1) + ' MB';\n }\n if (bytes >= 1000) {\n return (bytes / 1000).toFixed(1) + ' KB';\n }\n return `${bytes}B`;\n}\nexport const getURL = (urlString) => {\n if (urlString.startsWith('//')) {\n const baseUrl = new URL(window.location.href);\n urlString = `${baseUrl.protocol}${urlString}`;\n }\n if (urlString.startsWith('http')) {\n return new URL(urlString);\n }\n else {\n return new URL(urlString, window.location.href);\n }\n};\n//# sourceMappingURL=utils.js.map","import NetworkMessage from './networkMessage';\nimport { genStringBody, getURL } from './utils';\n// https://fetch.spec.whatwg.org/#concept-bodyinit-extract\nconst getContentType = (data) => {\n if (data instanceof Blob) {\n return data.type;\n }\n if (data instanceof FormData) {\n return 'multipart/form-data';\n }\n if (data instanceof URLSearchParams) {\n return 'application/x-www-form-urlencoded;charset=UTF-8';\n }\n return 'text/plain;charset=UTF-8';\n};\nexport class BeaconProxyHandler {\n constructor(ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl) {\n this.ignoredHeaders = ignoredHeaders;\n this.setSessionTokenHeader = setSessionTokenHeader;\n this.sanitize = sanitize;\n this.sendMessage = sendMessage;\n this.isServiceUrl = isServiceUrl;\n }\n apply(target, thisArg, argsList) {\n const urlString = argsList[0];\n const data = argsList[1];\n const item = new NetworkMessage(this.ignoredHeaders, this.setSessionTokenHeader, this.sanitize);\n if (this.isServiceUrl(urlString)) {\n return target.apply(thisArg, argsList);\n }\n const url = getURL(urlString);\n item.method = 'POST';\n item.url = urlString;\n item.name = (url.pathname.split('/').pop() || '') + url.search;\n item.requestType = 'beacon';\n item.requestHeader = { 'Content-Type': getContentType(data) };\n item.status = 0;\n item.statusText = 'Pending';\n if (url.search && url.searchParams) {\n item.getData = {};\n for (const [key, value] of url.searchParams) {\n item.getData[key] = value;\n }\n }\n item.requestData = genStringBody(data);\n if (!item.startTime) {\n item.startTime = performance.now();\n }\n const isSuccess = target.apply(thisArg, argsList);\n if (isSuccess) {\n item.endTime = performance.now();\n item.duration = item.endTime - (item.startTime || item.endTime);\n item.status = 0;\n item.statusText = 'Sent';\n item.readyState = 4;\n }\n else {\n item.status = 500;\n item.statusText = 'Unknown';\n }\n const msg = item.getMessage();\n if (msg) {\n this.sendMessage(msg);\n }\n return isSuccess;\n }\n}\nexport default class BeaconProxy {\n static create(originalSendBeacon, ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl) {\n if (!originalSendBeacon) {\n return undefined;\n }\n return new Proxy(originalSendBeacon, new BeaconProxyHandler(ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl));\n }\n}\n//# sourceMappingURL=beaconProxy.js.map","/**\n * I took inspiration in few stack exchange posts\n * and Tencent vConsole library (MIT)\n * by wrapping the XMLHttpRequest object in a Proxy\n * we can intercept the network requests\n * in not-so-hacky way\n * */\nimport NetworkMessage from \"./networkMessage\";\nimport { formatByteSize, genStringBody, getStringResponseByType, getURL, } from \"./utils\";\nexport class ResponseProxyHandler {\n constructor(resp, item) {\n this.resp = resp;\n this.item = item;\n }\n set(target, key, value) {\n return Reflect.set(target, key, value);\n }\n get(target, key) {\n const value = Reflect.get(target, key);\n if (key === \"arrayBuffer\" || key === \"blob\") {\n return typeof value === \"function\" ? value.bind(target) : value;\n }\n switch (key) {\n case \"formData\":\n case \"json\":\n case \"text\":\n return () => {\n this.item.responseType = key.toLowerCase();\n // @ts-ignore\n return value.apply(target).then((resp) => {\n this.item.response = getStringResponseByType(this.item.responseType, resp);\n return resp;\n });\n };\n }\n if (typeof value === \"function\") {\n return value.bind(target);\n }\n else {\n return value;\n }\n }\n}\nexport class FetchProxyHandler {\n constructor(ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl, tokenUrlMatcher) {\n this.ignoredHeaders = ignoredHeaders;\n this.setSessionTokenHeader = setSessionTokenHeader;\n this.sanitize = sanitize;\n this.sendMessage = sendMessage;\n this.isServiceUrl = isServiceUrl;\n this.tokenUrlMatcher = tokenUrlMatcher;\n }\n apply(target, _, argsList) {\n const input = argsList[0];\n const init = argsList[1];\n if (!input ||\n // @ts-ignore\n (typeof input !== \"string\" && !(input === null || input === void 0 ? void 0 : input.url))) {\n return target.apply(window, argsList);\n }\n const isORUrl = input instanceof URL || typeof input === \"string\"\n ? this.isServiceUrl(String(input))\n : this.isServiceUrl(String(input.url));\n if (isORUrl) {\n return target.apply(window, argsList);\n }\n const item = new NetworkMessage(this.ignoredHeaders, this.setSessionTokenHeader, this.sanitize);\n this.beforeFetch(item, input, init);\n this.setSessionTokenHeader((name, value) => {\n if (this.tokenUrlMatcher !== undefined) {\n if (!this.tokenUrlMatcher(item.url)) {\n return;\n }\n }\n if (argsList[1] === undefined && argsList[0] instanceof Request) {\n return argsList[0].headers.append(name, value);\n }\n else {\n if (!argsList[1])\n argsList[1] = {};\n if (argsList[1].headers === undefined) {\n argsList[1] = Object.assign(Object.assign({}, argsList[1]), { headers: {} });\n }\n if (argsList[1].headers instanceof Headers) {\n argsList[1].headers.append(name, value);\n }\n else if (Array.isArray(argsList[1].headers)) {\n argsList[1].headers.push([name, value]);\n }\n else {\n // @ts-ignore\n argsList[1].headers[name] = value;\n }\n }\n });\n return target.apply(window, argsList)\n .then(this.afterFetch(item))\n .catch((e) => {\n // mock finally\n item.endTime = performance.now();\n item.duration = item.endTime - (item.startTime || item.endTime);\n throw e;\n });\n }\n beforeFetch(item, input, init) {\n let url, method = \"GET\", requestHeader = {};\n // handle `input` content\n if (typeof input === \"string\") {\n // when `input` is a string\n method = (init === null || init === void 0 ? void 0 : init.method) || \"GET\";\n url = getURL(input);\n requestHeader = (init === null || init === void 0 ? void 0 : init.headers) || {};\n }\n else {\n // when `input` is a `Request` object\n method = input.method || \"GET\";\n url = getURL(input.url);\n requestHeader = input.headers;\n }\n item.method = method;\n item.requestType = \"fetch\";\n item.requestHeader = requestHeader;\n item.url = url.toString();\n item.name = (url.pathname.split(\"/\").pop() || \"\") + url.search;\n item.status = 0;\n item.statusText = \"Pending\";\n item.readyState = 1;\n if (!item.startTime) {\n // UNSENT\n item.startTime = performance.now();\n }\n if (Object.prototype.toString.call(requestHeader) === \"[object Headers]\") {\n item.requestHeader = {};\n for (const [key, value] of requestHeader) {\n item.requestHeader[key] = value;\n }\n }\n else {\n item.requestHeader = requestHeader;\n }\n // save GET data\n if (url.search && url.searchParams) {\n item.getData = {};\n for (const [key, value] of url.searchParams) {\n item.getData[key] = value;\n }\n }\n // save POST data\n if (init === null || init === void 0 ? void 0 : init.body) {\n item.requestData = genStringBody(init.body);\n }\n }\n afterFetch(item) {\n return (resp) => {\n item.endTime = performance.now();\n item.duration = item.endTime - (item.startTime || item.endTime);\n item.status = resp.status;\n item.statusText = String(resp.status);\n let isChunked = false;\n item.header = {};\n for (const [key, value] of resp.headers) {\n item.header[key] = value;\n isChunked =\n value.toLowerCase().indexOf(\"chunked\") > -1 ? true : isChunked;\n }\n if (isChunked) {\n // when `transfer-encoding` is chunked, the response is a stream which is under loading,\n // so the `readyState` should be 3 (Loading),\n // and the response should NOT be `clone()` which will affect stream reading.\n item.readyState = 3;\n }\n else {\n // Otherwise, not chunked, the response is not a stream,\n // so it's completed and can be cloned for `text()` calling.\n item.readyState = 4;\n this.handleResponseBody(resp.clone(), item)\n .then((responseValue) => {\n item.responseSize =\n typeof responseValue === \"string\"\n ? responseValue.length\n : responseValue.byteLength;\n item.responseSizeText = formatByteSize(item.responseSize);\n item.response = getStringResponseByType(item.responseType, responseValue);\n const msg = item.getMessage();\n if (msg) {\n this.sendMessage(msg);\n }\n })\n .catch((e) => {\n if (e.name !== \"AbortError\") {\n throw e;\n }\n else {\n // ignore AbortError\n }\n });\n }\n const ct = (resp.headers.get(\"content-type\") || \"\").toLowerCase();\n const isTextLike = ct.includes(\"application/json\") || ct.startsWith(\"text/\");\n return isTextLike\n ? new Proxy(resp, new ResponseProxyHandler(resp, item))\n : resp;\n };\n }\n handleResponseBody(resp, item) {\n // parse response body by Content-Type\n const contentType = resp.headers.get(\"content-type\");\n if (contentType && contentType.includes(\"application/json\")) {\n item.responseType = \"json\";\n return resp.text();\n }\n else if (contentType &&\n (contentType.includes(\"text/html\") || contentType.includes(\"text/plain\"))) {\n item.responseType = \"text\";\n return resp.text();\n }\n else {\n item.responseType = \"arraybuffer\";\n return resp.arrayBuffer();\n }\n }\n}\nexport default class FetchProxy {\n static create(ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl, tokenUrlMatcher) {\n return new Proxy(fetch, new FetchProxyHandler(ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl, tokenUrlMatcher));\n }\n}\n//# sourceMappingURL=fetchProxy.js.map","export var RequestState;\n(function (RequestState) {\n RequestState[RequestState[\"UNSENT\"] = 0] = \"UNSENT\";\n RequestState[RequestState[\"OPENED\"] = 1] = \"OPENED\";\n RequestState[RequestState[\"HEADERS_RECEIVED\"] = 2] = \"HEADERS_RECEIVED\";\n RequestState[RequestState[\"LOADING\"] = 3] = \"LOADING\";\n RequestState[RequestState[\"DONE\"] = 4] = \"DONE\";\n})(RequestState || (RequestState = {}));\n//# sourceMappingURL=types.js.map","/**\n * I took inspiration in few stack exchange posts\n * and Tencent vConsole library (MIT)\n * by wrapping the XMLHttpRequest object in a Proxy\n * we can intercept the network requests\n * in not-so-hacky way\n * */\nimport NetworkMessage from \"./networkMessage\";\nimport { RequestState } from \"./types\";\nimport { genGetDataByUrl, formatByteSize, genStringBody, getStringResponseByType, } from \"./utils\";\nexport class XHRProxyHandler {\n constructor(XMLReq, ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl, tokenUrlMatcher) {\n this.ignoredHeaders = ignoredHeaders;\n this.setSessionTokenHeader = setSessionTokenHeader;\n this.sanitize = sanitize;\n this.sendMessage = sendMessage;\n this.isServiceUrl = isServiceUrl;\n this.tokenUrlMatcher = tokenUrlMatcher;\n this.XMLReq = XMLReq;\n this.XMLReq.onreadystatechange = () => {\n this.onReadyStateChange();\n };\n this.XMLReq.onabort = () => {\n this.onAbort();\n };\n this.XMLReq.ontimeout = () => {\n this.onTimeout();\n };\n this.item = new NetworkMessage(ignoredHeaders, setSessionTokenHeader, sanitize);\n this.item.requestType = \"xhr\";\n }\n get(target, key) {\n switch (key) {\n case \"open\":\n return this.getOpen(target);\n case \"send\":\n this.setSessionTokenHeader((name, value) => {\n if (this.tokenUrlMatcher !== undefined) {\n if (!this.tokenUrlMatcher(this.item.url)) {\n return;\n }\n }\n if (target.readyState === 1)\n target.setRequestHeader(name, value);\n });\n return this.getSend(target);\n case \"setRequestHeader\":\n return this.getSetRequestHeader(target);\n default:\n // eslint-disable-next-line no-case-declarations\n const value = Reflect.get(target, key);\n if (typeof value === \"function\") {\n return value.bind(target);\n }\n else {\n return value;\n }\n }\n }\n set(target, key, value) {\n switch (key) {\n case \"onreadystatechange\":\n return this.setOnReadyStateChange(target, key, value);\n case \"onabort\":\n return this.setOnAbort(target, key, value);\n case \"ontimeout\":\n return this.setOnTimeout(target, key, value);\n default:\n // not tracked methods\n }\n return Reflect.set(target, key, value);\n }\n onReadyStateChange() {\n if (this.item.url && this.isServiceUrl(this.item.url))\n return;\n this.item.readyState = this.XMLReq.readyState;\n this.item.responseType = this.XMLReq.responseType;\n this.item.endTime = performance.now();\n this.item.duration = this.item.endTime - this.item.startTime;\n this.updateItemByReadyState();\n const rt = this.item.responseType || \"\";\n if (rt === \"\" || rt === \"text\" || rt === \"json\") {\n setTimeout(() => {\n this.item.response = getStringResponseByType(rt, this.XMLReq.response);\n }, 0);\n }\n if (this.XMLReq.readyState === RequestState.DONE) {\n const msg = this.item.getMessage();\n if (msg) {\n this.sendMessage(msg);\n }\n }\n }\n onAbort() {\n this.item.cancelState = 1;\n this.item.statusText = \"Abort\";\n const msg = this.item.getMessage();\n if (msg) {\n this.sendMessage(msg);\n }\n }\n onTimeout() {\n this.item.cancelState = 3;\n this.item.statusText = \"Timeout\";\n const msg = this.item.getMessage();\n if (msg) {\n this.sendMessage(msg);\n }\n }\n getOpen(target) {\n const targetFunction = Reflect.get(target, \"open\");\n return (...args) => {\n var _a, _b, _c;\n const method = args[0];\n const url = args[1];\n this.item.method = method ? method.toUpperCase() : \"GET\";\n this.item.url = ((_a = url.toString) === null || _a === void 0 ? void 0 : _a.call(url)) || \"\";\n this.item.name =\n (_c = (_b = this.item.url) === null || _b === void 0 ? void 0 : _b.replace(new RegExp(\"/*$\"), \"\").split(\"/\").pop()) !== null && _c !== void 0 ? _c : \"\";\n this.item.getData = genGetDataByUrl(this.item.url, {});\n return targetFunction.apply(target, args);\n };\n }\n getSend(target) {\n const targetFunction = Reflect.get(target, \"send\");\n return (...args) => {\n const data = args[0];\n this.item.requestData = genStringBody(data);\n return targetFunction.apply(target, args);\n };\n }\n getSetRequestHeader(target) {\n const targetFunction = Reflect.get(target, \"setRequestHeader\");\n return (...args) => {\n if (!this.item.requestHeader) {\n this.item.requestHeader = {};\n }\n // @ts-ignore\n this.item.requestHeader[args[0]] = args[1];\n return targetFunction.apply(target, args);\n };\n }\n setOnReadyStateChange(target, key, orscFunction) {\n return Reflect.set(target, key, (...args) => {\n this.onReadyStateChange();\n orscFunction === null || orscFunction === void 0 ? void 0 : orscFunction.apply(target, args);\n });\n }\n setOnAbort(target, key, oaFunction) {\n return Reflect.set(target, key, (...args) => {\n this.onAbort();\n oaFunction.apply(target, args);\n });\n }\n setOnTimeout(target, key, otFunction) {\n return Reflect.set(target, key, (...args) => {\n this.onTimeout();\n otFunction.apply(target, args);\n });\n }\n /**\n * Update item's properties according to readyState.\n */\n updateItemByReadyState() {\n switch (this.XMLReq.readyState) {\n case RequestState.UNSENT:\n case RequestState.OPENED:\n this.item.status = RequestState.UNSENT;\n this.item.statusText = \"Pending\";\n if (!this.item.startTime) {\n this.item.startTime = performance.now();\n }\n break;\n case RequestState.HEADERS_RECEIVED:\n this.item.status = this.XMLReq.status;\n this.item.statusText = \"Loading\";\n this.item.header = {};\n // eslint-disable-next-line no-case-declarations\n const header = this.XMLReq.getAllResponseHeaders() || \"\", headerArr = header.split(\"\\n\");\n // extract plain text to key-value format\n for (let i = 0; i < headerArr.length; i++) {\n const line = headerArr[i];\n if (!line) {\n continue;\n }\n const arr = line.split(\": \");\n const key = arr[0];\n this.item.header[key] = arr.slice(1).join(\": \");\n }\n break;\n case RequestState.LOADING:\n this.item.status = this.XMLReq.status;\n this.item.statusText = \"Loading\";\n const response = this.XMLReq.response;\n if (response) {\n const respSize = typeof response === \"string\"\n ? response.length\n : response instanceof ArrayBuffer\n ? response.byteLength\n : typeof Blob !== \"undefined\" && response instanceof Blob\n ? response.size\n : 0;\n if (respSize) {\n this.item.responseSize = respSize;\n this.item.responseSizeText = formatByteSize(this.item.responseSize);\n }\n }\n break;\n case RequestState.DONE:\n // `XMLReq.abort()` will change `status` from 200 to 0, so use previous value in this case\n this.item.status = this.XMLReq.status || this.item.status || 0;\n // show status code when request completed\n this.item.statusText = String(this.item.status);\n this.item.endTime = performance.now();\n this.item.duration =\n this.item.endTime - (this.item.startTime || this.item.endTime);\n const resp = this.XMLReq.response;\n const respType = this.XMLReq.responseType || \"\";\n if (respType === \"\" || respType === \"text\" || respType === \"json\") {\n this.item.response = resp;\n }\n if (resp) {\n const respSize = typeof resp === \"string\"\n ? resp.length\n : resp instanceof ArrayBuffer\n ? resp.byteLength\n : typeof Blob !== \"undefined\" && resp instanceof Blob\n ? resp.size\n : 0;\n if (respSize) {\n this.item.responseSize = respSize;\n this.item.responseSizeText = formatByteSize(respSize);\n }\n }\n break;\n default:\n this.item.status = this.XMLReq.status;\n this.item.statusText = \"Unknown\";\n break;\n }\n }\n}\nexport default class XHRProxy {\n static create(ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl, tokenUrlMatcher) {\n return new Proxy(XMLHttpRequest, {\n construct(original) {\n const XMLReq = new original();\n return new Proxy(XMLReq, new XHRProxyHandler(XMLReq, ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl, tokenUrlMatcher));\n },\n });\n }\n}\n//# sourceMappingURL=xhrProxy.js.map","import BeaconProxy from \"./beaconProxy\";\nimport FetchProxy from \"./fetchProxy\";\nimport XHRProxy from \"./xhrProxy\";\nexport { BeaconProxy, FetchProxy, XHRProxy, };\nconst warn = (api) => {\n const str = `Openreplay: Can't find ${api} in global context.`;\n console.warn(str);\n};\nconst OR_FLAG = Symbol('OpenReplayProxyOriginal');\nconst isProxied = (fn) => !!fn && fn[OR_FLAG] !== undefined;\nconst unwrap = (fn) => isProxied(fn) ? fn[OR_FLAG] : fn;\nconst wrap = (proxy, orig) => {\n proxy[OR_FLAG] = orig;\n return proxy;\n};\n/**\n * Creates network proxies for XMLHttpRequest, fetch, and sendBeacon to intercept and monitor network requests and\n * responses.\n *\n * @param {Window | typeof globalThis} context - The global context object (e.g., window or globalThis).\n * @param {boolean | string[]} ignoredHeaders - Headers to ignore from requests. If `true`, all headers are ignored; if\n * an array of strings, those header names are ignored.\n * @param {(cb: (name: string, value: string) => void) => void} setSessionTokenHeader - Function to set a session token\n * header; accepts a callback that sets the header name and value.\n * @param {(data: RequestResponseData) => RequestResponseData | null} sanitize - Function to sanitize request and\n * response data; should return sanitized data or `null` to ignore the data.\n * @param {(message: INetworkMessage) => void} sendMessage - Function to send network messages for further processing\n * or logging.\n * @param {(url: string) => boolean} isServiceUrl - Function to determine if a URL is a service URL that should be\n * ignored by the proxy.\n * @param {Object} [modules] - Modules to apply the proxies to.\n * @param {boolean} [modules.xhr=true] - Whether to proxy XMLHttpRequest.\n * @param {boolean} [modules.fetch=true] - Whether to proxy the fetch API.\n * @param {boolean} [modules.beacon=true] - Whether to proxy navigator.sendBeacon.\n * @param {(url: string) => boolean} [tokenUrlMatcher] - Optional function; the session token header will only be\n * applied to requests matching this function.\n *\n * @returns {void}\n */\nexport default function createNetworkProxy(context, ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl, modules = {\n xhr: true,\n fetch: true,\n beacon: true,\n}, tokenUrlMatcher) {\n var _a;\n if (!context)\n return;\n if (modules.xhr) {\n const original = unwrap(context.XMLHttpRequest);\n if (!original)\n warn('XMLHttpRequest');\n else {\n context.XMLHttpRequest = wrap(XHRProxy.create(ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl, tokenUrlMatcher), original);\n }\n }\n if (modules.fetch) {\n const original = unwrap(context.fetch);\n if (!original)\n warn('fetch');\n else {\n context.fetch = wrap(FetchProxy.create(ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl, tokenUrlMatcher), original);\n }\n }\n if (modules.beacon && ((_a = context.navigator) === null || _a === void 0 ? void 0 : _a.sendBeacon)) {\n const original = unwrap(context.navigator.sendBeacon);\n context.navigator.sendBeacon = wrap(BeaconProxy.create(original, ignoredHeaders, setSessionTokenHeader, sanitize, sendMessage, isServiceUrl), original);\n }\n}\n//# sourceMappingURL=index.js.map","import { NetworkRequest } from '../app/messages.gen.js';\nimport { getTimeOrigin } from '../utils.js';\nimport axiosSpy from './axiosSpy.js';\nimport createNetworkProxy from '@openreplay/network-proxy';\nfunction getXHRRequestDataObject(xhr) {\n // @ts-ignore this is 3x faster than using Map<XHR, XHRRequestData>\n if (!xhr.__or_req_data__) {\n // @ts-ignore\n xhr.__or_req_data__ = { body: undefined, headers: {} };\n }\n // @ts-ignore\n return xhr.__or_req_data__;\n}\nfunction strMethod(method) {\n return typeof method === 'string' ? method.toUpperCase() : 'GET';\n}\nexport default function (app, opts = {}) {\n if (opts.disabled) {\n return;\n }\n const options = Object.assign({\n failuresOnly: false,\n ignoreHeaders: ['cookie', 'set-cookie', 'authorization'],\n capturePayload: false,\n sessionTokenHeader: false,\n captureInIframes: true,\n axiosInstances: undefined,\n useProxy: true,\n }, opts);\n if (options.useProxy === false) {\n app.debug.warn('Network module is migrating to proxy api, to gradually migrate and test it set useProxy to true');\n }\n const ignoreHeaders = options.ignoreHeaders;\n const isHIgnored = Array.isArray(ignoreHeaders)\n ? (name) => ignoreHeaders.includes(name)\n : () => ignoreHeaders;\n const stHeader = options.sessionTokenHeader === true ? 'X-OpenReplay-SessionToken' : options.sessionTokenHeader;\n function setSessionTokenHeader(setRequestHeader) {\n if (stHeader) {\n const sessionToken = app.getSessionToken();\n if (sessionToken) {\n app.safe(setRequestHeader)(stHeader, sessionToken);\n }\n }\n }\n function sanitize(reqResInfo) {\n if (!options.capturePayload || app.sanitizer.privateMode) {\n // @ts-ignore\n delete reqResInfo.request.body;\n delete reqResInfo.response.body;\n }\n if (options.sanitizer) {\n const resBody = reqResInfo.response.body;\n if (typeof resBody === 'string') {\n // Parse response in order to have handy view in sanitization function\n try {\n reqResInfo.response.body = JSON.parse(resBody);\n }\n catch { }\n }\n return options.sanitizer(reqResInfo);\n }\n return reqResInfo;\n }\n function stringify(r) {\n if (r && typeof r.body !== 'string') {\n try {\n r.body = JSON.stringify(r.body);\n }\n catch {\n r.body = '<unable to stringify>';\n app.notify.warn(\"Openreplay fetch couldn't stringify body:\", r.body);\n }\n }\n return JSON.stringify(r);\n }\n const patchWindow = (context) => {\n /* ====== modern way ====== */\n if (options.useProxy) {\n return createNetworkProxy(context, app.sanitizer.privateMode ? true : options.ignoreHeaders, setSessionTokenHeader, sanitize, (message) => {\n if (options.failuresOnly && message.status < 400) {\n return;\n }\n const url = app.sanitizer.privateMode ? '************' : message.url;\n app.send(NetworkRequest(message.requestType, message.method, url, message.request, message.response, message.status, message.startTime + getTimeOrigin(), message.duration, message.responseSize));\n }, (url) => app.isServiceURL(url), { xhr: true, fetch: true, beacon: true }, options.tokenUrlMatcher);\n }\n /* ====== Fetch ====== */\n const origFetch = context.fetch.bind(context);\n const trackFetch = (input, init = {}) => {\n if (!(typeof input === 'string' || input instanceof URL) || app.isServiceURL(String(input))) {\n return origFetch(input, init);\n }\n setSessionTokenHeader(function (name, value) {\n if (init.headers === undefined) {\n init.headers = {};\n }\n if (init.headers instanceof Headers) {\n init.headers.append(name, value);\n }\n else if (Array.isArray(init.headers)) {\n init.headers.push([name, value]);\n }\n else {\n init.headers[name] = value;\n }\n });\n const startTime = performance.now();\n return origFetch(input, init).then((response) => {\n const duration = performance.now() - startTime;\n if (options.failuresOnly && response.status < 400) {\n return response;\n }\n const r = response.clone();\n r.text()\n .then((text) => {\n const reqHs = {};\n const resHs = {};\n if (ignoreHeaders !== true) {\n // request headers\n const writeReqHeader = ([n, v]) => {\n if (!isHIgnored(n)) {\n reqHs[n] = v;\n }\n };\n if (init.headers instanceof Headers) {\n init.headers.forEach((v, n) => writeReqHeader([n, v]));\n }\n else if (Array.isArray(init.headers)) {\n init.headers.forEach(writeReqHeader);\n }\n else if (typeof init.headers === 'object') {\n Object.entries(init.headers).forEach(writeReqHeader);\n }\n // response headers\n r.headers.forEach((v, n) => {\n if (!isHIgnored(n))\n resHs[n] = v;\n });\n }\n const method = strMethod(init.method);\n const reqResInfo = sanitize({\n url: String(input),\n method,\n status: r.status,\n request: {\n headers: reqHs,\n // @ts-ignore\n body: init.body || null,\n },\n response: {\n headers: resHs,\n body: text,\n },\n });\n if (!reqResInfo) {\n return;\n }\n app.send(NetworkRequest('fetch', method, String(reqResInfo.url), stringify(reqResInfo.request), stringify(reqResInfo.response), r.status, startTime + getTimeOrigin(), duration, 0));\n })\n .catch((e) => app.debug.error('Could not process Fetch response:', e));\n return response;\n });\n };\n // @ts-ignore\n context.fetch = trackFetch;\n /* ====== <> ====== */\n /* ====== XHR ====== */\n const nativeOpen = context.XMLHttpRequest.prototype.open;\n const nativeSetRequestHeader = context.XMLHttpRequest.prototype.setRequestHeader;\n const nativeSend = context.XMLHttpRequest.prototype.send;\n function trackXMLHttpReqOpen(initMethod, url) {\n const xhr = this;\n setSessionTokenHeader((name, value) => xhr.setRequestHeader(name, value));\n let startTime = 0;\n xhr.addEventListener('loadstart', (e) => {\n startTime = e.timeStamp;\n });\n xhr.addEventListener('load', app.safe((e) => {\n const { headers: reqHs, body: reqBody } = getXHRRequestDataObject(xhr);\n const duration = startTime > 0 ? e.timeStamp - startTime : 0;\n const hString = xhr.getAllResponseHeaders() || ''; // might be null (only if no response received though)\n const headersArr = hString.trim().split(/[\\r\\n]+/);\n const headerMap = {};\n headersArr.forEach(function (line) {\n const parts = line.split(': ');\n const header = parts.shift();\n if (!isHIgnored(header)) {\n headerMap[header] = parts.join(': ');\n }\n });\n const method = strMethod(initMethod);\n const reqResInfo = sanitize({\n url: String(url),\n method,\n status: xhr.status,\n request: {\n headers: reqHs,\n // @ts-ignore\n body: reqBody || null,\n },\n response: {\n headers: headerMap,\n body: xhr.response,\n },\n });\n if (!reqResInfo) {\n return;\n }\n app.send(NetworkRequest('xhr', method, String(reqResInfo.url), stringify(reqResInfo.request), stringify(reqResInfo.response), xhr.status, startTime + getTimeOrigin(), duration, 0));\n }));\n //TODO: handle error (though it has no Error API nor any useful information)\n //xhr.addEventListener('error', (e) => {})\n return nativeOpen.apply(this, arguments);\n }\n function trackXHRSend(body) {\n const rdo = getXHRRequestDataObject(this);\n rdo.body = body;\n // @ts-ignore ??? this -> XMLHttpRequest\n return nativeSend.apply(this, arguments);\n }\n function trackSetReqHeader(name, value) {\n if (!isHIgnored(name)) {\n const rdo = getXHRRequestDataObject(this);\n rdo.headers[name] = value;\n }\n return nativeSetRequestHeader.apply(this, arguments);\n }\n if (!options.axiosInstances) {\n context.XMLHttpRequest.prototype.open = trackXMLHttpReqOpen;\n context.XMLHttpRequest.prototype.send = trackXHRSend;\n context.XMLHttpRequest.prototype.setRequestHeader = trackSetReqHeader;\n }\n /* ====== <> ====== */\n };\n patchWindow(window);\n if (options.axiosInstances) {\n options.axiosInstances.forEach((axiosInstance) => {\n axiosSpy(app, axiosInstance, options, sanitize, stringify);\n });\n }\n if (options.captureInIframes) {\n app.observer.attachContextCallback(app.safe(patchWindow));\n }\n}\n","import { SelectionChange } from '../app/messages.gen.js';\nfunction selection(app) {\n app.attachEventListener(document, 'selectionchange', () => {\n const selection = document.getSelection();\n if (selection !== null && !selection.isCollapsed) {\n const selectionStart = app.nodes.getID(selection.anchorNode);\n const selectionEnd = app.nodes.getID(selection.focusNode);\n const selectedText = selection.toString().replace(/\\s+/g, ' ');\n if (selectionStart && selectionEnd) {\n app.send(SelectionChange(selectionStart, selectionEnd, selectedText));\n }\n }\n else {\n app.send(SelectionChange(-1, -1, ''));\n }\n });\n}\nexport default selection;\n/** TODO: research how to get all in-between nodes inside selection range\n * including nodes between anchor and focus nodes and their children\n * without recursively searching the dom tree\n */\n// if (selection.rangeCount) {\n// const nodes = [];\n// for (let i = 0; i < selection.rangeCount; i++) {\n// const range = selection.getRangeAt(i);\n// let node: Node | null = range.startContainer;\n// while (node) {\n// nodes.push(node);\n// if (node === range.endContainer) break;\n// node = node.nextSibling;\n// }\n// }\n// // send selected nodes\n// }\n","import { TabChange } from '../app/messages.gen.js';\nexport default function (app) {\n function changeTab() {\n if (!document.hidden) {\n app.debug.log('Openreplay: tab change to' + app.session.getTabId());\n app.send(TabChange(app.session.getTabId()));\n }\n }\n app.attachStartCallback(() => {\n // just for the good measure in case of restarts caused by assist plugin,\n // to keep latest active tab in state for live player\n changeTab();\n });\n app.attachEventListener(window, 'focus', changeTab, false, false);\n}\n","import { LongAnimationTask } from \"../app/messages.gen\";\nexport default function (app, opts) {\n if (!opts.longTasks || !('PerformanceObserver' in window)) {\n return;\n }\n const onEntry = (entry) => {\n app.send(LongAnimationTask(entry.name, entry.duration, entry.blockingDuration, entry.firstUIEventTimestamp, entry.startTime, JSON.stringify(entry.scripts ?? [])));\n };\n const observer = new PerformanceObserver((entryList) => {\n entryList.getEntries().forEach((entry) => {\n if (entry.entryType === 'long-animation-frame') {\n onEntry(entry);\n }\n });\n });\n app.attachStartCallback(() => {\n performance.getEntriesByType('long-animation-frame').forEach((lat) => {\n onEntry(lat);\n });\n observer.observe({\n entryTypes: ['long-animation-frame'],\n });\n });\n app.attachStopCallback(() => {\n observer.disconnect();\n });\n}\n","import { NodeAnimationResult } from '../app/messages.gen.js';\nconst toIgnore = [\"composite\", \"computedOffset\", \"easing\", \"offset\"];\nfunction webAnimations(app, options = {}) {\n const { allElements = false } = options;\n let listening = new WeakSet();\n let handled = new WeakSet();\n function wire(anim, el, nodeId) {\n if (handled.has(anim))\n return;\n handled.add(anim);\n anim.addEventListener('finish', () => {\n const lastKF = anim.effect.getKeyframes().at(-1);\n if (!lastKF)\n return;\n const computedStyle = getComputedStyle(el);\n const keys = Object.keys(lastKF).filter((p) => !toIgnore.includes(p));\n // @ts-ignore\n const finalStyle = {};\n keys.forEach((key) => {\n finalStyle[key] = computedStyle[key];\n });\n app.send(NodeAnimationResult(nodeId, JSON.stringify(finalStyle)));\n }, { once: true });\n }\n function scanElement(el, nodeId) {\n el.getAnimations({ subtree: false }).forEach((anim) => wire(anim, el, nodeId));\n }\n app.nodes.attachNodeCallback((node) => {\n if ((allElements || node.nodeName.includes('-')) && 'getAnimations' in node) {\n const animations = node.getAnimations({ subtree: false });\n const id = app.nodes.getID(node);\n if (animations.length > 0 && !listening.has(node) && id) {\n listening.add(node);\n scanElement(node, id);\n node.addEventListener('animationstart', () => scanElement(node, id));\n }\n }\n });\n const origAnimate = Element.prototype.animate;\n Element.prototype.animate = function (...args) {\n const anim = origAnimate.apply(this, args);\n const id = app.nodes.getID(this);\n if (!id)\n return anim;\n wire(anim, this, id);\n return anim;\n };\n app.attachStopCallback(() => {\n Element.prototype.animate = origAnimate; // Restore original animate method\n listening = new WeakSet();\n handled = new WeakSet();\n });\n}\nexport default webAnimations;\n","/**\n * Detects client browser, OS, and device information\n */\nexport function uaParse(sWindow) {\n const unknown = '-';\n // Screen detection\n let width = 0;\n let height = 0;\n let screenSize = '';\n if (sWindow.screen.width) {\n width = sWindow.screen.width;\n height = sWindow.screen.height;\n screenSize = `${width} x ${height}`;\n }\n // Browser detection\n const nVer = sWindow.navigator.appVersion ?? '0';\n const nAgt = sWindow.navigator.userAgent ?? 'unknown';\n let browser = sWindow.navigator.appName ?? \"unknown\";\n let version = String(parseFloat(nVer));\n let nameOffset;\n let verOffset;\n let ix;\n // Browser detection logic\n if ((verOffset = nAgt.indexOf('YaBrowser')) !== -1) {\n browser = 'Yandex';\n version = nAgt.substring(verOffset + 10);\n }\n else if ((verOffset = nAgt.indexOf('SamsungBrowser')) !== -1) {\n browser = 'Samsung';\n version = nAgt.substring(verOffset + 15);\n }\n else if ((verOffset = nAgt.indexOf('UCBrowser')) !== -1) {\n browser = 'UC Browser';\n version = nAgt.substring(verOffset + 10);\n }\n else if ((verOffset = nAgt.indexOf('OPR')) !== -1) {\n browser = 'Opera';\n version = nAgt.substring(verOffset + 4);\n }\n else if ((verOffset = nAgt.indexOf('Opera')) !== -1) {\n browser = 'Opera';\n version = nAgt.substring(verOffset + 6);\n if ((verOffset = nAgt.indexOf('Version')) !== -1) {\n version = nAgt.substring(verOffset + 8);\n }\n }\n else if ((verOffset = nAgt.indexOf('Edge')) !== -1) {\n browser = 'Microsoft Legacy Edge';\n version = nAgt.substring(verOffset + 5);\n }\n else if ((verOffset = nAgt.indexOf('Edg')) !== -1) {\n browser = 'Microsoft Edge';\n version = nAgt.substring(verOffset + 4);\n }\n else if ((verOffset = nAgt.indexOf('MSIE')) !== -1) {\n browser = 'Microsoft Internet Explorer';\n version = nAgt.substring(verOffset + 5);\n }\n else if ((verOffset = nAgt.indexOf('Chrome')) !== -1) {\n browser = 'Chrome';\n version = nAgt.substring(verOffset + 7);\n }\n else if ((verOffset = nAgt.indexOf('Safari')) !== -1) {\n browser = 'Safari';\n version = nAgt.substring(verOffset + 7);\n if ((verOffset = nAgt.indexOf('Version')) !== -1) {\n version = nAgt.substring(verOffset + 8);\n }\n }\n else if ((verOffset = nAgt.indexOf('Firefox')) !== -1) {\n browser = 'Firefox';\n version = nAgt.substring(verOffset + 8);\n }\n else if (nAgt.indexOf('Trident/') !== -1) {\n browser = 'Microsoft Internet Explorer';\n version = nAgt.substring(nAgt.indexOf('rv:') + 3);\n }\n else if ((nameOffset = nAgt.lastIndexOf(' ') + 1) < (verOffset = nAgt.lastIndexOf('/'))) {\n browser = nAgt.substring(nameOffset, verOffset);\n version = nAgt.substring(verOffset + 1);\n if (browser.toLowerCase() === browser.toUpperCase()) {\n browser = sWindow.navigator.appName;\n }\n }\n // Trim the version string\n if ((ix = version.indexOf(';')) !== -1) {\n version = version.substring(0, ix);\n }\n if ((ix = version.indexOf(' ')) !== -1) {\n version = version.substring(0, ix);\n }\n if ((ix = version.indexOf(')')) !== -1) {\n version = version.substring(0, ix);\n }\n let majorVersion = parseInt(version, 10);\n if (isNaN(majorVersion)) {\n version = String(parseFloat(nVer));\n majorVersion = parseInt(nVer, 10);\n }\n // Mobile detection\n const mobile = /Mobile|mini|Fennec|Android|iP(ad|od|hone)/.test(nVer);\n // Cookie detection\n let cookieEnabled = sWindow.navigator.cookieEnabled || false;\n if (typeof navigator.cookieEnabled === 'undefined' && !cookieEnabled) {\n sWindow.document.cookie = 'testcookie';\n cookieEnabled = sWindow.document.cookie.indexOf('testcookie') !== -1;\n }\n // OS detection\n let os = unknown;\n const clientStrings = [\n { s: 'Windows 10', r: /(Windows 10.0|Windows NT 10.0)/ },\n { s: 'Windows 8.1', r: /(Windows 8.1|Windows NT 6.3)/ },\n { s: 'Windows 8', r: /(Windows 8|Windows NT 6.2)/ },\n { s: 'Windows 7', r: /(Windows 7|Windows NT 6.1)/ },\n { s: 'Windows Vista', r: /Windows NT 6.0/ },\n { s: 'Windows Server 2003', r: /Windows NT 5.2/ },\n { s: 'Windows XP', r: /(Windows NT 5.1|Windows XP)/ },\n { s: 'Windows 2000', r: /(Windows NT 5.0|Windows 2000)/ },\n { s: 'Windows ME', r: /(Win 9x 4.90|Windows ME)/ },\n { s: 'Windows 98', r: /(Windows 98|Win98)/ },\n { s: 'Windows 95', r: /(Windows 95|Win95|Windows_95)/ },\n { s: 'Windows NT 4.0', r: /(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)/ },\n { s: 'Windows CE', r: /Windows CE/ },\n { s: 'Windows 3.11', r: /Win16/ },\n { s: 'Android', r: /Android/ },\n { s: 'Open BSD', r: /OpenBSD/ },\n { s: 'Sun OS', r: /SunOS/ },\n { s: 'Chrome OS', r: /CrOS/ },\n { s: 'Linux', r: /(Linux|X11(?!.*CrOS))/ },\n { s: 'iOS', r: /(iPhone|iPad|iPod)/ },\n { s: 'Mac OS X', r: /Mac OS X/ },\n { s: 'Mac OS', r: /(Mac OS|MacPPC|MacIntel|Mac_PowerPC|Macintosh)/ },\n { s: 'QNX', r: /QNX/ },\n { s: 'UNIX', r: /UNIX/ },\n { s: 'BeOS', r: /BeOS/ },\n { s: 'OS/2', r: /OS\\/2/ },\n {\n s: 'Search Bot',\n r: /(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\\/Teoma|ia_archiver)/,\n },\n ];\n // Find matching OS\n for (const client of clientStrings) {\n if (client.r.test(nAgt)) {\n os = client.s;\n break;\n }\n }\n // OS Version detection\n let osVersion = unknown;\n if (/Windows/.test(os)) {\n const matches = /Windows (.*)/.exec(os);\n if (matches && matches[1]) {\n osVersion = matches[1];\n // Handle Windows 10/11 detection with newer API if available\n if (osVersion === '10' && 'userAgentData' in sWindow.navigator) {\n const nav = navigator;\n if (nav.userAgentData) {\n nav.userAgentData\n .getHighEntropyValues(['platformVersion'])\n .then((ua) => {\n const version = parseInt(ua.platformVersion.split('.')[0], 10);\n osVersion = version < 13 ? '10' : '11';\n })\n .catch(() => {\n // ignore errors and keep osVersion as is\n });\n }\n }\n }\n os = 'Windows';\n }\n // OS version detection for Mac/Android/iOS\n switch (os) {\n case 'Mac OS':\n case 'Mac OS X':\n case 'Android': {\n const matches = /(?:Android|Mac OS|Mac OS X|MacPPC|MacIntel|Mac_PowerPC|Macintosh) ([\\.\\_\\d]+)/.exec(nAgt);\n osVersion = matches && matches[1] ? matches[1] : unknown;\n break;\n }\n case 'iOS': {\n const matches = /OS (\\d+)_(\\d+)_?(\\d+)?/.exec(nVer);\n if (matches && matches[1]) {\n osVersion = `${matches[1]}.${matches[2]}.${parseInt(matches[3] || '0', 10)}`;\n }\n break;\n }\n }\n // Return client data\n return {\n screen: screenSize,\n width,\n height,\n browser,\n browserVersion: version,\n browserMajorVersion: majorVersion,\n mobile,\n os,\n osVersion,\n cookies: cookieEnabled,\n };\n}\nexport function isObject(item) {\n const isNull = item === null;\n return Boolean(item && typeof item === 'object' && !Array.isArray(item) && !isNull);\n}\nexport function getUTCOffsetString() {\n const date = new Date();\n const offsetMinutes = date.getTimezoneOffset();\n const hours = Math.abs(Math.floor(offsetMinutes / 60));\n const minutes = Math.abs(offsetMinutes % 60);\n const sign = offsetMinutes <= 0 ? '+' : '-';\n const hoursStr = hours.toString().padStart(2, '0');\n const minutesStr = minutes.toString().padStart(2, '0');\n return `UTC${sign}${hoursStr}:${minutesStr}`;\n}\n","import { getUTCOffsetString, uaParse } from './utils.js';\nconst refKey = '$__or__initial_ref__$';\nconst distinctIdKey = '$__or__distinct_device_id__$';\nconst utmParamsKey = '$__or__utm_params__$';\nconst superPropKey = '$__or__super_properties__$';\nconst userIdKey = '$__or__user_id__$';\nconst win = 'window' in globalThis\n ? window\n : {\n navigator: { userAgent: '' },\n screen: {},\n document: {\n cookie: '',\n },\n location: { search: '' },\n };\nconst doc = 'document' in globalThis ? document : { referrer: '' };\nconst searchEngineList = [\n 'google',\n 'bing',\n 'yahoo',\n 'baidu',\n 'yandex',\n 'duckduckgo',\n 'ecosia',\n 'ask',\n 'aol',\n 'wolframalpha',\n 'startpage',\n 'swisscows',\n 'qwant',\n 'lycos',\n 'dogpile',\n 'info',\n 'teoma',\n 'webcrawler',\n 'naver',\n 'seznam',\n 'perplexity',\n];\nexport default class ConstantProperties {\n constructor(localStorage, sessionStorage) {\n this.localStorage = localStorage;\n this.sessionStorage = sessionStorage;\n this.user_id = null;\n this.setUserId = (user_id) => {\n this.user_id = user_id;\n this.sessionStorage.setItem(userIdKey, user_id ?? '');\n };\n this.resetUserId = (hard) => {\n this.user_id = null;\n if (hard) {\n this.deviceId = this.getDistinctDeviceId(true);\n }\n };\n this.getDistinctDeviceId = (force) => {\n const potentialStored = this.localStorage.getItem(distinctIdKey);\n if (potentialStored && !force) {\n return potentialStored;\n }\n else {\n const distinctId = `${Math.random().toString(36).slice(2)}-${Math.random().toString(36).slice(2)}-${Math.random().toString(36).slice(2)}`;\n this.localStorage.setItem(distinctIdKey, distinctId);\n return distinctId;\n }\n };\n this.getReferrer = () => {\n const potentialStored = this.sessionStorage.getItem(refKey);\n if (potentialStored) {\n return potentialStored;\n }\n else {\n const ref = doc.referrer;\n this.sessionStorage.setItem(refKey, ref);\n return ref;\n }\n };\n this.parseUTM = () => {\n const potentialStored = this.sessionStorage.getItem(utmParamsKey);\n if (potentialStored) {\n const obj = JSON.parse(potentialStored);\n this.utmSource = obj.utm_source;\n this.utmMedium = obj.utm_medium;\n this.utmCampaign = obj.utm_campaign;\n }\n else {\n const searchParams = new URLSearchParams(win.location.search);\n this.utmSource = searchParams.get('utm_source') || null;\n this.utmMedium = searchParams.get('utm_medium') || null;\n this.utmCampaign = searchParams.get('utm_campaign') || null;\n const obj = {\n utm_source: this.utmSource,\n utm_medium: this.utmMedium,\n utm_campaign: this.utmCampaign,\n };\n this.sessionStorage.setItem(utmParamsKey, JSON.stringify(obj));\n }\n };\n this.getSearchEngine = (ref) => {\n for (const searchEngine of searchEngineList) {\n if (ref.includes(searchEngine)) {\n return searchEngine;\n }\n }\n return null;\n };\n this.getSuperProperties = () => {\n const potentialStored = this.localStorage.getItem(superPropKey);\n if (potentialStored) {\n return JSON.parse(potentialStored);\n }\n else {\n return {};\n }\n };\n this.saveSuperProperties = (props) => {\n this.localStorage.setItem(superPropKey, JSON.stringify(props));\n };\n this.clearSuperProperties = () => {\n this.localStorage.setItem(superPropKey, JSON.stringify({}));\n };\n const { width, height, browser, browserVersion, browserMajorVersion, os, osVersion, mobile } = uaParse(win);\n const storedUserId = this.sessionStorage.getItem(userIdKey);\n if (storedUserId) {\n this.user_id = storedUserId;\n }\n this.os = os;\n this.osVersion = osVersion;\n this.browser = `${browser}`;\n this.browserVersion = `${browserVersion} (${browserMajorVersion})`;\n this.platform = mobile ? 'mobile' : 'desktop';\n this.screenHeight = height;\n this.screenWidth = width;\n this.initialReferrer = this.getReferrer();\n this.deviceId = this.getDistinctDeviceId();\n this.searchEngine = this.getSearchEngine(this.initialReferrer);\n this.parseUTM();\n }\n get all() {\n return {\n os: this.os,\n os_version: this.osVersion,\n browser: this.browser,\n browser_version: this.browserVersion,\n platform: this.platform,\n screen_height: this.screenHeight,\n screen_width: this.screenWidth,\n initial_referrer: this.initialReferrer,\n utm_source: this.utmSource,\n utm_medium: this.utmMedium,\n utm_campaign: this.utmCampaign,\n user_id: this.user_id,\n distinct_id: this.deviceId,\n sdk_edition: 'web',\n sdk_version: 'TRACKER_VERSION',\n timezone: getUTCOffsetString(),\n search_engine: this.searchEngine,\n };\n }\n get defaultPropertyKeys() {\n return Object.keys(this.all);\n }\n get distinctId() {\n return this.deviceId;\n }\n}\n","export const mutationTypes = {\n identity: 'identity',\n deleteUser: 'delete_user',\n setProperty: 'set_property',\n setPropertyOnce: 'set_property_once',\n appendProperty: 'append_property',\n appendUniqueProperty: 'append_unique_property',\n incrementProperty: 'increment_property',\n};\nexport const categories = {\n people: 'user_actions',\n events: 'events',\n};\nexport const createEvent = (category, type, timestamp, payload) => {\n if (category === categories.people) {\n return {\n category,\n data: {\n type,\n user_id: payload.user_id,\n payload: payload.properties,\n timestamp,\n },\n };\n }\n else {\n if (!payload) {\n throw new Error('Payload is required for event creation');\n }\n return {\n category,\n data: {\n name: payload.name,\n payload: payload.properties,\n timestamp,\n },\n };\n }\n};\n","import { isObject } from './utils.js';\nimport { createEvent, categories } from './types.js';\nconst reservedProps = ['properties', 'token', 'timestamp'];\nexport default class Events {\n constructor(constantProperties, getTimestamp, batcher) {\n this.constantProperties = constantProperties;\n this.getTimestamp = getTimestamp;\n this.batcher = batcher;\n this.ownProperties = {};\n /**\n * Add event to batch with option to send it immediately,\n * properties are optional and will not be saved as super prop\n * */\n this.sendEvent = (eventName, properties, options) => {\n // add properties\n const eventProps = {};\n if (properties) {\n if (!isObject(properties)) {\n throw new Error('Properties must be an object');\n }\n Object.entries(properties).forEach(([key, value]) => {\n if (!this.constantProperties.defaultPropertyKeys.includes(key)) {\n eventProps[key] = value;\n }\n });\n }\n const eventPayload = {\n name: eventName,\n properties: { ...this.ownProperties, ...eventProps },\n };\n const event = createEvent(categories.events, undefined, this.getTimestamp(), eventPayload);\n if (options?.send_immediately) {\n void this.batcher.sendImmediately(event);\n }\n else {\n this.batcher.addEvent(event);\n }\n };\n /**\n * creates super property for all events\n * */\n this.setProperty = (nameOrProperties, value) => {\n let changed = false;\n if (isObject(nameOrProperties)) {\n Object.entries(nameOrProperties).forEach(([key, val]) => {\n if (!this.constantProperties.defaultPropertyKeys.includes(key)) {\n this.ownProperties[key] = val;\n changed = true;\n }\n });\n }\n if (typeof nameOrProperties === 'string' && value !== undefined) {\n if (!this.constantProperties.defaultPropertyKeys.includes(nameOrProperties)) {\n this.ownProperties[nameOrProperties] = value;\n changed = true;\n }\n }\n if (changed) {\n this.constantProperties.saveSuperProperties(this.ownProperties);\n }\n };\n /**\n * set super property only if it doesn't exist yet\n * */\n this.setPropertiesOnce = (nameOrProperties, value) => {\n let changed = false;\n if (isObject(nameOrProperties)) {\n Object.entries(nameOrProperties).forEach(([key, val]) => {\n if (!this.ownProperties[key] && !reservedProps.includes(key)) {\n this.ownProperties[key] = val;\n changed = true;\n }\n });\n }\n if (typeof nameOrProperties === 'string' && value !== undefined) {\n if (!this.ownProperties[nameOrProperties] && !reservedProps.includes(nameOrProperties)) {\n this.ownProperties[nameOrProperties] = value;\n changed = true;\n }\n }\n if (changed) {\n this.constantProperties.saveSuperProperties(this.ownProperties);\n }\n };\n /**\n * removes properties from list of super properties\n * */\n this.unsetProperties = (properties) => {\n let changed = false;\n if (Array.isArray(properties)) {\n properties.forEach((key) => {\n if (this.ownProperties[key] && !reservedProps.includes(key)) {\n delete this.ownProperties[key];\n changed = true;\n }\n });\n }\n else if (this.ownProperties[properties] && !reservedProps.includes(properties)) {\n delete this.ownProperties[properties];\n changed = true;\n }\n if (changed) {\n this.constantProperties.saveSuperProperties(this.ownProperties);\n }\n };\n /** clears all super properties */\n this.reset = () => {\n this.ownProperties = {};\n this.constantProperties.clearSuperProperties();\n };\n /** mixpanel compatibility */\n this.register = this.setProperty;\n this.register_once = this.setPropertiesOnce;\n this.unregister = this.unsetProperties;\n this.track = this.sendEvent;\n this.ownProperties = this.constantProperties.getSuperProperties();\n }\n}\n","import { isObject } from './utils.js';\nimport { mutationTypes, categories, createEvent } from './types.js';\nexport default class People {\n constructor(constantProperties, getTimestamp, onId, batcher) {\n this.constantProperties = constantProperties;\n this.getTimestamp = getTimestamp;\n this.onId = onId;\n this.batcher = batcher;\n this.ownProperties = {};\n this.identify = (user_id, options) => {\n if (!user_id || typeof user_id !== 'string') {\n throw new Error('OR SDK: user_id (string) is required for .identify()');\n }\n // if user exists already, reset properties\n if (this.constantProperties.user_id && this.constantProperties.user_id !== user_id) {\n this.reset();\n }\n this.constantProperties.setUserId(user_id);\n if (!options?.fromTracker) {\n this.onId(user_id);\n }\n const identityEvent = createEvent(categories.people, mutationTypes.identity, this.getTimestamp(), { user_id });\n this.batcher.addEvent(identityEvent);\n };\n /** Resets user id and own properties\n *\n * !hard reset will destroy persistent device id!\n * */\n this.reset = (hard) => {\n this.constantProperties.resetUserId(hard);\n this.ownProperties = {};\n };\n /**\n * Will delete user and its data from backend, then reset all local properties\n */\n this.deleteUser = () => {\n const removedUser = this.constantProperties.user_id;\n if (!removedUser)\n return;\n this.constantProperties.setUserId(null);\n this.ownProperties = {};\n const deleteEvent = createEvent(categories.people, mutationTypes.deleteUser, undefined, {\n user_id: removedUser,\n });\n this.batcher.addEvent(deleteEvent);\n this.reset();\n };\n /**\n * set user properties, overwriting existing ones\n * */\n this.setProperties = (propertyOrObj, value) => {\n if (!propertyOrObj) {\n throw new Error('OR SDK: no user properties provided to set');\n }\n const properties = {};\n if (typeof propertyOrObj === 'string' && propertyOrObj && value) {\n properties[propertyOrObj] = value;\n }\n else if (isObject(propertyOrObj)) {\n Object.assign(properties, propertyOrObj);\n }\n else {\n throw new Error('OR SDK: invalid user properties provided to set');\n }\n Object.entries(properties).forEach(([key, value]) => {\n if (!this.constantProperties.defaultPropertyKeys.includes(key)) {\n this.ownProperties[key] = value;\n }\n });\n const setEvent = createEvent(categories.people, mutationTypes.setProperty, undefined, {\n user_id: this.user_id,\n properties,\n });\n this.batcher.addEvent(setEvent);\n };\n /**\n * Set property if it doesn't exist yet\n * */\n this.setPropertiesOnce = (properties) => {\n if (!isObject(properties)) {\n throw new Error('Properties must be an object');\n }\n Object.entries(properties).forEach(([key, value]) => {\n if (!this.constantProperties.defaultPropertyKeys.includes(key) && !this.ownProperties[key]) {\n this.ownProperties[key] = value;\n }\n });\n const setEvent = createEvent(categories.people, mutationTypes.setPropertyOnce, undefined, {\n user_id: this.user_id,\n properties,\n });\n this.batcher.addEvent(setEvent);\n };\n /**\n * Add value to property (will turn string prop into array)\n * */\n this.appendValues = (key, value) => {\n if (!this.constantProperties.defaultPropertyKeys.includes(key) && this.ownProperties[key]) {\n if (Array.isArray(this.ownProperties[key])) {\n this.ownProperties[key].push(value);\n }\n else {\n this.ownProperties[key] = [this.ownProperties[key], value];\n }\n }\n const appendEvent = createEvent(categories.people, mutationTypes.appendProperty, undefined, {\n properties: { [key]: value },\n user_id: this.user_id,\n });\n this.batcher.addEvent(appendEvent);\n };\n /**\n * Add unique values to property (will turn string prop into array)\n * */\n this.appendUniqueValues = (key, value) => {\n if (!this.ownProperties[key])\n return;\n if (Array.isArray(this.ownProperties[key])) {\n if (!this.ownProperties[key].includes(value)) {\n this.appendValues(key, value);\n }\n }\n else if (this.ownProperties[key] !== value) {\n this.appendValues(key, value);\n }\n const unionEvent = createEvent(categories.people, mutationTypes.appendUniqueProperty, undefined, {\n properties: { [key]: value },\n user_id: this.user_id,\n });\n this.batcher.addEvent(unionEvent);\n };\n /**\n * Adds value (incl. negative) to existing numerical property\n * */\n this.increment = (key, value) => {\n if (!this.ownProperties[key]) {\n this.ownProperties[key] = 0;\n }\n if (this.ownProperties[key] && typeof this.ownProperties[key] !== 'number') {\n throw new Error('OR SDK: Property must be a number to increment');\n }\n // @ts-ignore\n this.ownProperties[key] += value;\n const incrementEvent = createEvent(categories.people, mutationTypes.incrementProperty, undefined, {\n user_id: this.user_id,\n properties: { [key]: value },\n });\n this.batcher.addEvent(incrementEvent);\n };\n /** mixpanel compatibility */\n this.union = this.appendUniqueValues;\n this.set = this.setProperties;\n this.set_once = this.setPropertiesOnce;\n this.append = this.appendValues;\n this.incrementBy = this.increment;\n }\n get user_id() {\n return this.constantProperties.user_id;\n }\n}\n","import { categories } from './types';\n/**\n * Creates batches of events, then sends them at intervals.\n */\nclass Batcher {\n constructor(backendUrl, getToken, init) {\n this.backendUrl = backendUrl;\n this.getToken = getToken;\n this.init = init;\n this.autosendInterval = 5 * 1000;\n this.retryTimeout = 3 * 1000;\n this.retryLimit = 3;\n this.apiEdp = '/v1/sdk/i';\n this.batch = {\n [categories.people]: [],\n [categories.events]: [],\n };\n this.intervalId = null;\n }\n getBatches() {\n this.batch[categories.people] = this.dedupePeopleEvents();\n const finalData = { data: this.batch };\n return finalData;\n }\n addEvent(event) {\n this.batch[event.category].push(event.data);\n }\n sendImmediately(event) {\n this.sendBatch({ [event.category]: [event.data] });\n }\n /**\n *\n * Essentially we're dividing the batch by identify events and squash all same category events into one in each part,\n * taking priority to the last one\n */\n dedupePeopleEvents() {\n const peopleEvents = this.batch[categories.people];\n const finalEvents = [];\n const currentPart = [];\n for (let event of peopleEvents) {\n if (event.type === 'identity') {\n if (currentPart.length > 0) {\n finalEvents.push(...this.squashPeopleEvents(currentPart), event);\n currentPart.length = 0;\n }\n else {\n finalEvents.push(event);\n }\n }\n else {\n currentPart.push(event);\n }\n }\n if (currentPart.length > 0) {\n finalEvents.push(...this.squashPeopleEvents(currentPart));\n }\n return finalEvents;\n }\n squashPeopleEvents(events) {\n if (!events || events.length === 0) {\n return [];\n }\n const uniqueEventsByType = new Map();\n for (let event of events) {\n const prev = uniqueEventsByType.get(event.type);\n if (prev) {\n if (event.type === 'increment_property') {\n const previousValues = Object.entries(prev.payload);\n const currentValues = Object.entries(event.payload);\n const uniqueKeys = new Set([...previousValues.map(([key]) => key), ...currentValues.map(([key]) => key)]);\n const mergedPayload = {};\n uniqueKeys.forEach((key) => {\n const prevValue = typeof prev.payload[key] === 'number' ? prev.payload[key] : 0;\n const currValue = typeof event.payload[key] === 'number' ? event.payload[key] : 0;\n mergedPayload[key] = prevValue + currValue;\n });\n uniqueEventsByType.set(event.type, {\n type: event.type,\n timestamp: event.timestamp,\n payload: mergedPayload,\n });\n continue;\n }\n // merge payloads, taking priority to the latest one\n uniqueEventsByType.set(event.type, {\n type: event.type,\n timestamp: event.timestamp,\n payload: { ...(prev.payload ?? {}), ...(event.payload ?? {}) },\n });\n }\n else {\n uniqueEventsByType.set(event.type, event);\n }\n }\n return Array.from(uniqueEventsByType.values());\n }\n sendBatch(batch) {\n const sentBatch = batch;\n let attempts = 0;\n const send = () => {\n const token = this.getToken();\n if (!token) {\n return;\n }\n attempts++;\n return fetch(`${this.backendUrl}${this.apiEdp}`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`,\n },\n body: JSON.stringify(sentBatch),\n })\n .then((response) => {\n if ([403, 401].includes(response.status)) {\n if (attempts < this.retryLimit) {\n return this.init().then(() => {\n send();\n });\n }\n return;\n }\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n })\n .catch(() => {\n if (attempts < this.retryLimit) {\n setTimeout(() => void send(), this.retryTimeout);\n }\n });\n };\n void send();\n }\n startAutosend() {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n }\n this.intervalId = setInterval(() => {\n this.flush();\n }, this.autosendInterval);\n }\n flush() {\n const categories = Object.keys(this.batch);\n const isEmpty = categories.every((category) => this.batch[category].length === 0);\n if (isEmpty) {\n return;\n }\n this.sendBatch(this.getBatches());\n categories.forEach((key) => {\n this.batch[key] = [];\n });\n }\n stop() {\n this.flush();\n if (this.intervalId) {\n clearInterval(this.intervalId);\n this.intervalId = null;\n }\n }\n}\nexport default Batcher;\n","import ConstantProperties from './constantProperties.js';\nimport Events from './events.js';\nimport People from './people.js';\nimport Batcher from './batcher.js';\nconst STORAGEKEY = '__or_sdk_analytics_token';\nexport default class Analytics {\n /**\n * @param localStorage Class or Object that implements Storage-like interface that stores\n * values persistently like window.localStorage or any other file-based storage\n *\n * @param sessionStorage Class or Object that implements Storage-like interface that stores values\n * on per-session basis like window.sessionStorage or any other in-memory storage\n *\n * @param getToken Function that returns token to bind events to a session\n *\n * @param getTimestamp returns current timestamp\n *\n * @param setUserId callback for people.identify\n *\n * @param standalone if true, analytics will manage its own token (instead of using with openreplay tracker session)\n * */\n constructor(options) {\n this.token = null;\n this.standalone = false;\n this._getToken = () => {\n if (this.standalone) {\n return this.token;\n }\n else {\n return this.getToken();\n }\n };\n this._getTimestamp = () => {\n if (this.standalone) {\n return Date.now();\n }\n return this.getTimestamp();\n };\n this.init = async () => {\n if (!this.standalone) {\n this.batcher.startAutosend();\n return;\n }\n else {\n const defaultFields = this.constantProperties.all;\n const apiEdp = '/v1/sdk/start';\n const data = {\n projectKey: this.projectKey,\n defaultFields,\n };\n const resp = await fetch(apiEdp, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n if (!resp.ok) {\n throw new Error(`HTTP error! status: ${resp.status}`);\n }\n const result = await resp.json();\n if (result.token) {\n this.token = result.token;\n this.sessionStorage.setItem(STORAGEKEY, result.token);\n }\n else {\n throw new Error('No token received from server');\n }\n }\n };\n this.reset = () => {\n this.people.reset(true);\n this.events.reset();\n this.batcher.stop();\n if (this.standalone) {\n this.token = null;\n this.sessionStorage.setItem(STORAGEKEY, '');\n }\n };\n /**\n * COMPATIBILITY LAYER\n * */\n /**\n * Identify a user with an id (e.g. email, username, etc.)\n * will bind all events and properties (including device_id) to this user\n *\n * you will need to manually call people.reset() to clear the id on logout event\n * */\n this.identify = (user_id) => {\n return this.people.identify(user_id);\n };\n /**\n * Add event to batch with option to send it immediately,\n * properties are optional and will not be saved as super prop\n * */\n this.track = (eventName, properties, options) => {\n return this.events.track(eventName, properties, options);\n };\n this.sessionStorage = options.sessionStorage || sessionStorage;\n this.localStorage = options.localStorage || localStorage;\n this.backendUrl = options.ingestPoint;\n this.projectKey = options.projectKey;\n this.getToken = options.getToken || (() => '');\n this.getTimestamp = options.getTimestamp || (() => Date.now());\n this.setUserId = options.setUserId || (() => { });\n this.standalone = !options.notStandalone;\n this.token = this.sessionStorage.getItem(STORAGEKEY);\n this.constantProperties = new ConstantProperties(this.localStorage, this.sessionStorage);\n this.batcher = new Batcher(this.backendUrl, this._getToken, this.init);\n this.events = new Events(this.constantProperties, this._getTimestamp, this.batcher);\n this.people = new People(this.constantProperties, this._getTimestamp, this.setUserId, this.batcher);\n if (options.notStandalone) {\n this.init();\n }\n }\n}\n","import App from './app/index';\nexport { default as App } from './app/index.js';\nimport { UserAnonymousID, CustomEvent, CustomIssue, Incident } from './app/messages.gen.js';\nimport * as _Messages from './app/messages.gen.js';\nexport const Messages = _Messages;\nexport { SanitizeLevel } from './app/sanitizer.js';\nimport Connection from './modules/connection.js';\nimport Console from './modules/console.js';\nimport Exception, { getExceptionMessageFromEvent, getExceptionMessage, } from './modules/exception.js';\nimport Img from './modules/img.js';\nimport Input from './modules/input.js';\nimport Mouse from './modules/mouse.js';\nimport Timing from './modules/timing.js';\nimport Performance from './modules/performance.js';\nimport Scroll from './modules/scroll.js';\nimport Viewport from './modules/viewport.js';\nimport CSSRules from './modules/cssrules.js';\nimport Focus from './modules/focus.js';\nimport Fonts from './modules/fonts.js';\nimport Network from './modules/network.js';\nimport ConstructedStyleSheets from './modules/constructedStyleSheets.js';\nimport Selection from './modules/selection.js';\nimport Tabs from './modules/tabs.js';\nimport LongAnimationTask from './modules/longAnimationTask.js';\nimport WebAnimations from './modules/webAnimations.js';\nimport AnalyticsSDK from './modules/analytics/index.js';\nimport { IN_BROWSER, deprecationWarn, DOCS_HOST, inIframe } from './utils.js';\nconst DOCS_SETUP = '/en/sdk';\nfunction processOptions(obj) {\n if (obj == null) {\n console.error(`OpenReplay: invalid options argument type. Please, check documentation on ${DOCS_HOST}${DOCS_SETUP}`);\n return false;\n }\n if (typeof obj.projectKey !== 'string') {\n if (typeof obj.projectKey !== 'number') {\n if (typeof obj.projectID !== 'number') {\n // Back compatability\n console.error(`OpenReplay: projectKey is missing or wrong type (string is expected). Please, check ${DOCS_HOST}${DOCS_SETUP} for more information.`);\n return false;\n }\n else {\n obj.projectKey = obj.projectID.toString();\n deprecationWarn('`projectID` option', '`projectKey` option', DOCS_SETUP);\n }\n }\n else {\n console.warn('OpenReplay: projectKey is expected to have a string type.');\n obj.projectKey = obj.projectKey.toString();\n }\n }\n if (obj.sessionToken != null) {\n deprecationWarn('`sessionToken` option', '`sessionHash` start() option', '/');\n }\n return true;\n}\nconst canAccessTop = () => {\n try {\n return Boolean(window.top?.document);\n }\n catch {\n return false;\n }\n};\nexport default class API {\n constructor(options) {\n this.options = options;\n this.app = null;\n this.analytics = null;\n this.crossdomainMode = false;\n this.checkDoNotTrack = () => {\n return (this.options.respectDoNotTrack &&\n (navigator.doNotTrack == '1' ||\n // @ts-ignore\n window.doNotTrack == '1'));\n };\n this.signalStartIssue = (reason, missingApi) => {\n const doNotTrack = this.checkDoNotTrack();\n console.log(\"Tracker couldn't start due to:\", JSON.stringify({\n trackerVersion: 'TRACKER_VERSION',\n projectKey: this.options.projectKey,\n doNotTrack,\n reason: missingApi.length ? `missing api: ${missingApi.join(',')}` : reason,\n }));\n };\n this.restartCanvasTracking = () => {\n if (this.app === null) {\n return;\n }\n this.app.restartCanvasTracking();\n };\n this.getSessionURL = (options) => {\n if (this.app === null) {\n return undefined;\n }\n return this.app.getSessionURL(options);\n };\n this.setUserID = (id) => {\n if (typeof id === 'string' && this.app !== null) {\n this.app.session.setUserID(id);\n this.analytics?.people.identify(id, { fromTracker: true });\n }\n };\n this.identify = this.setUserID;\n this.track = this.analytics?.track;\n this.userID = (id) => {\n deprecationWarn(\"'userID' method\", \"'setUserID' method\", '/');\n this.setUserID(id);\n };\n this.handleError = (e, metadata = {}) => {\n if (this.app === null) {\n return;\n }\n if (e instanceof Error) {\n const msg = getExceptionMessage(e, [], metadata);\n this.app.send(msg);\n }\n else if (e instanceof ErrorEvent ||\n ('PromiseRejectionEvent' in window && e instanceof PromiseRejectionEvent)) {\n const msg = getExceptionMessageFromEvent(e, undefined, metadata);\n if (msg != null) {\n this.app.send(msg);\n }\n }\n };\n this.incident = (options) => {\n if (this.app === null) {\n return;\n }\n this.app.send(Incident(options.label ?? '', options.startTime, options.endTime ?? options.startTime));\n };\n this.analyticsToken = null;\n /**\n * Use custom token for analytics events without session recording\n * */\n this.setAnalyticsToken = (token) => {\n this.analyticsToken = token;\n };\n this.getAnalyticsToken = () => {\n if (this.analyticsToken) {\n return this.analyticsToken;\n }\n else {\n return this.app?.session.getSessionToken() ?? '';\n }\n };\n this.crossdomainMode = Boolean(inIframe() && options.crossdomain?.enabled);\n if (!IN_BROWSER || !processOptions(options)) {\n return;\n }\n if (window.__OPENREPLAY__ ||\n (!this.crossdomainMode && inIframe() && canAccessTop() && window.top.__OPENREPLAY__)) {\n console.error('OpenReplay: one tracker instance has been initialised already');\n return;\n }\n if (!options.__DISABLE_SECURE_MODE && location.protocol !== 'https:') {\n console.error('OpenReplay: Your website must be publicly accessible and running on SSL in order for OpenReplay to properly capture and replay the user session. You can disable this check by setting `__DISABLE_SECURE_MODE` option to `true` if you are testing in localhost. Keep in mind, that asset files on a local machine are not available to the outside world. This might affect tracking if you use css files.');\n return;\n }\n const doNotTrack = this.checkDoNotTrack();\n const failReason = [];\n const conditions = [\n 'Map',\n 'Set',\n 'MutationObserver',\n 'performance',\n 'timing',\n 'startsWith',\n 'Blob',\n 'Worker',\n ];\n if (doNotTrack) {\n failReason.push('doNotTrack');\n }\n else {\n for (const condition of conditions) {\n if (condition === 'timing') {\n if ('performance' in window && !(condition in performance)) {\n failReason.push(condition);\n break;\n }\n }\n else if (condition === 'startsWith') {\n if (!(condition in String.prototype)) {\n failReason.push(condition);\n break;\n }\n }\n else {\n if (!(condition in window)) {\n failReason.push(condition);\n break;\n }\n }\n }\n }\n if (failReason.length > 0) {\n const missingApi = failReason.join(',');\n console.error(`OpenReplay: browser doesn't support API required for tracking or doNotTrack is set to 1. Reason: ${missingApi}`);\n this.signalStartIssue('missing_api', failReason);\n return;\n }\n const app = new App(options.projectKey, options.sessionToken, options, this.signalStartIssue, this.crossdomainMode);\n this.app = app;\n if (options.projectKey && options.analytics?.active) {\n let isSaas = false;\n if (!options.ingestPoint) {\n isSaas = true;\n }\n if (options.ingestPoint) {\n const saasHost = 'api.openreplay.com';\n const urlObj = new URL(options.ingestPoint);\n if (urlObj.hostname === saasHost) {\n isSaas = true;\n }\n }\n const defaultEdp = 'https://api.openreplay.com/ingest';\n this.analytics = new AnalyticsSDK({\n localStorage: options.localStorage ?? localStorage,\n sessionStorage: options.sessionStorage ?? sessionStorage,\n getToken: () => this.getAnalyticsToken(),\n getTimestamp: () => this.app?.timestamp() ?? Date.now(),\n setUserId: (id) => {\n this.app?.session.setUserID(id);\n },\n notStandalone: true,\n ingestPoint: isSaas\n ? defaultEdp\n : (options.analytics?.ingestPoint ?? options.ingestPoint ?? defaultEdp),\n projectKey: options.projectKey,\n });\n }\n if (!this.crossdomainMode) {\n // no need to send iframe viewport data since its a node for us\n Viewport(app, options.urls);\n // calculated in main window\n Connection(app);\n // while we can calculate it here, trying to compute it for all parts is hard\n Performance(app, options);\n // no tabs in iframes yet\n Tabs(app);\n }\n Mouse(app, options.mouse);\n // inside iframe, we ignore viewport scroll\n Scroll(app, this.crossdomainMode);\n CSSRules(app, options.css);\n ConstructedStyleSheets(app);\n Console(app, options);\n Exception(app, options);\n Img(app);\n Input(app, options);\n Timing(app, options);\n LongAnimationTask(app, options);\n Focus(app);\n Fonts(app);\n const skipNetwork = options.network?.disabled;\n if (!skipNetwork) {\n Network(app, options.network);\n }\n Selection(app);\n WebAnimations(app, options.webAnimations);\n window.__OPENREPLAY__ = this;\n const wOpen = window.open;\n if (options.autoResetOnWindowOpen || options.resetTabOnWindowOpen) {\n app.attachStartCallback(() => {\n const tabId = app.getTabId();\n const sessStorage = app.sessionStorage ?? window.sessionStorage;\n window.open = function (...args) {\n if (options.autoResetOnWindowOpen) {\n app.resetNextPageSession(true);\n }\n if (options.resetTabOnWindowOpen) {\n sessStorage.removeItem(options.session_tabid_key || '__openreplay_tabid');\n }\n app.resetNextPageSession(false);\n sessStorage.setItem(options.session_tabid_key || '__openreplay_tabid', tabId);\n return wOpen.call(window, ...args);\n };\n });\n app.attachStopCallback(() => {\n window.open = wOpen;\n });\n }\n }\n use(fn) {\n return fn(this.app, this.options);\n }\n isActive() {\n if (this.app === null) {\n return false;\n }\n return this.app.active();\n }\n /**\n * Creates a named hook that expects event name, data string and msg direction (up/down),\n * it will skip any message bigger than 5 mb or event name bigger than 255 symbols\n * msg direction is \"down\" (incoming) by default\n *\n * @returns {(msgType: string, data: string, dir: 'up' | 'down') => void}\n * */\n trackWs(channelName) {\n if (this.app === null) {\n return;\n }\n return this.app.trackWs(channelName);\n }\n start(startOpts) {\n if (this.browserEnvCheck()) {\n if (this.app === null) {\n return Promise.reject(\"Browser doesn't support required api, or doNotTrack is active.\");\n }\n if (startOpts?.userID) {\n this.app.session.setUserID(startOpts.userID);\n this.analytics?.people.identify(startOpts.userID, { fromTracker: true });\n }\n return this.app.start(startOpts);\n }\n else {\n return Promise.reject('Trying to start not in browser.');\n }\n }\n browserEnvCheck() {\n if (!IN_BROWSER) {\n console.error(`OpenReplay: you are trying to start Tracker on a node.js environment. If you want to use OpenReplay with SSR, please, use componentDidMount or useEffect API for placing the \\`tracker.start()\\` line. Check documentation on ${DOCS_HOST}${DOCS_SETUP}`);\n return false;\n }\n return true;\n }\n /**\n * start buffering messages without starting the actual session, which gives user 30 seconds to \"activate\" and record\n * session by calling start() on conditional trigger and we will then send buffered batch, so it won't get lost\n * */\n coldStart(startOpts, conditional) {\n if (this.browserEnvCheck()) {\n if (this.app === null) {\n return Promise.reject('Tracker not initialized');\n }\n void this.app.coldStart(startOpts, conditional);\n }\n else {\n return Promise.reject('Trying to start not in browser.');\n }\n }\n /**\n * Starts offline session recording. Keep in mind that only user device time will be used for timestamps.\n * (no backend delay sync)\n *\n * @param {Object} startOpts - options for session start, same as .start()\n * @param {Function} onSessionSent - callback that will be called once session is fully sent\n * @returns methods to manipulate buffer:\n *\n * saveBuffer - to save it in localStorage\n *\n * getBuffer - returns current buffer\n *\n * setBuffer - replaces current buffer with given\n * */\n startOfflineRecording(startOpts, onSessionSent) {\n if (this.browserEnvCheck()) {\n if (this.app === null) {\n return Promise.reject('Tracker not initialized');\n }\n return this.app.offlineRecording(startOpts, onSessionSent);\n }\n else {\n return Promise.reject('Trying to start not in browser.');\n }\n }\n /**\n * Uploads the stored session buffer to backend\n * @returns promise that resolves once messages are loaded, it has to be awaited\n * so the session can be uploaded properly\n * @resolve - if messages were loaded into service worker successfully\n * @reject {string} - error message\n * */\n uploadOfflineRecording() {\n if (this.app === null) {\n return;\n }\n return this.app.uploadOfflineRecording();\n }\n stop() {\n if (this.app === null) {\n return;\n }\n this.app.stop();\n return this.app.session.getSessionHash();\n }\n forceFlushBatch() {\n if (this.app === null) {\n return;\n }\n this.app.forceFlushBatch();\n }\n getSessionToken() {\n if (this.app === null) {\n return null;\n }\n return this.app.getSessionToken();\n }\n getSessionInfo() {\n if (this.app === null) {\n return null;\n }\n return this.app.session.getInfo();\n }\n getSessionID() {\n if (this.app === null) {\n return null;\n }\n return this.app.getSessionID();\n }\n getTabId() {\n if (this.app === null) {\n return null;\n }\n return this.app.getTabId();\n }\n sessionID() {\n deprecationWarn(\"'sessionID' method\", \"'getSessionID' method\", '/');\n return this.getSessionID();\n }\n setUserAnonymousID(id) {\n if (typeof id === 'string' && this.app !== null) {\n this.app.send(UserAnonymousID(id));\n }\n }\n userAnonymousID(id) {\n deprecationWarn(\"'userAnonymousID' method\", \"'setUserAnonymousID' method\", '/');\n this.setUserAnonymousID(id);\n }\n setMetadata(key, value) {\n if (typeof key === 'string' && typeof value === 'string' && this.app !== null) {\n this.app.session.setMetadata(key, value);\n }\n }\n metadata(key, value) {\n deprecationWarn(\"'metadata' method\", \"'setMetadata' method\", '/');\n this.setMetadata(key, value);\n }\n event(key, payload = null, issue = false) {\n if (typeof key === 'string' && this.app !== null) {\n if (issue) {\n return this.issue(key, payload);\n }\n else {\n if (!payload || typeof payload === 'string') {\n return this.app.send(CustomEvent(key, payload));\n }\n try {\n if ('or_timestamp' in payload) {\n const startTs = this.getSessionInfo()?.timestamp ?? 0;\n const diff = payload.or_timestamp - startTs;\n if (diff < 0) {\n console.error(`OpenReplay: event ${key} has or_timestamp (${payload.or_timestamp}) before session start (${startTs}). It will be ignored.`);\n }\n }\n payload = JSON.stringify(payload);\n }\n catch (_) { }\n this.app.send(CustomEvent(key, payload));\n }\n }\n }\n issue(key, payload = null) {\n if (typeof key === 'string' && this.app !== null) {\n try {\n payload = JSON.stringify(payload);\n }\n catch (e) {\n return;\n }\n this.app.send(CustomIssue(key, payload));\n }\n }\n}\n","import Tracker from './index.js';\nimport { IN_BROWSER } from './utils.js';\nclass TrackerSingleton {\n constructor() {\n this.instance = null;\n this.isConfigured = false;\n this.identify = this.setUserID;\n this.track = (eventName, properties, options) => {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return;\n }\n this.instance.track?.(eventName, properties);\n };\n }\n /**\n * Call this method once to create tracker configuration\n * @param options {Object} Check available options:\n * https://docs.openreplay.com/en/sdk/constructor/#initialization-options\n */\n configure(options) {\n if (!IN_BROWSER) {\n return;\n }\n if (this.isConfigured) {\n console.warn('OpenReplay: Tracker is already configured. You should only call configure once.');\n return;\n }\n if (!options.projectKey) {\n console.error('OpenReplay: Missing required projectKey option');\n return;\n }\n this.instance = new Tracker(options);\n this.isConfigured = true;\n }\n get options() {\n return this.instance?.options || null;\n }\n start(startOpts) {\n if (!IN_BROWSER) {\n return Promise.resolve({ success: false, reason: 'Not in browser environment' });\n }\n if (!this.ensureConfigured()) {\n return Promise.resolve({ success: false, reason: 'Tracker not configured' });\n }\n return (this.instance?.start(startOpts) ||\n Promise.resolve({ success: false, reason: 'Tracker not initialized' }));\n }\n /**\n * Stop the session and return sessionHash\n * (which can be used to stitch sessions together)\n * */\n stop() {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return;\n }\n return this.instance.stop();\n }\n setUserID(id) {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return;\n }\n this.instance.setUserID(id);\n }\n get analytics() {\n if (this.instance?.analytics) {\n return this.instance.analytics;\n }\n else {\n return null;\n }\n }\n ;\n /**\n * Set metadata for the current session\n *\n * Make sure that its configured in project settings first\n *\n * Read more: https://docs.openreplay.com/en/installation/metadata/\n */\n setMetadata(key, value) {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return;\n }\n this.instance.setMetadata(key, value);\n }\n /**\n * Returns full URL for the current session\n */\n getSessionURL(options) {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return;\n }\n return this.instance.getSessionURL(options);\n }\n getSessionID() {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return null;\n }\n return this.instance.getSessionID();\n }\n getSessionToken() {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return null;\n }\n return this.instance.getSessionToken();\n }\n event(key, payload = null, issue = false) {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return;\n }\n this.instance.event(key, payload, issue);\n }\n issue(key, payload = null) {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return;\n }\n this.instance.issue(key, payload);\n }\n handleError(e, metadata = {}) {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return;\n }\n this.instance.handleError(e, metadata);\n }\n restartCanvasTracking() {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return;\n }\n this.instance.restartCanvasTracking();\n }\n /**\n * Set the anonymous user ID\n */\n setUserAnonymousID(id) {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return;\n }\n this.instance.setUserAnonymousID(id);\n }\n /**\n * Check if the tracker is active\n */\n isActive() {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return false;\n }\n return this.instance.isActive();\n }\n /**\n * Get the underlying Tracker instance\n *\n * Use when you need access to methods not exposed by the singleton\n */\n getInstance() {\n if (!this.ensureConfigured() || !IN_BROWSER) {\n return null;\n }\n return this.instance;\n }\n /**\n * start buffering messages without starting the actual session, which gives user 30 seconds to \"activate\" and record\n * session by calling start() on conditional trigger and we will then send buffered batch, so it won't get lost\n * */\n coldStart(startOpts, conditional) {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return;\n }\n return this.instance.coldStart(startOpts, conditional);\n }\n /**\n * Creates a named hook that expects event name, data string and msg direction (up/down),\n * it will skip any message bigger than 5 mb or event name bigger than 255 symbols\n * msg direction is \"down\" (incoming) by default\n *\n * @returns {(msgType: string, data: string, dir: 'up' | 'down') => void}\n * */\n trackWs(channelName) {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return () => { }; // Return no-op function\n }\n return this.instance.trackWs(channelName);\n }\n ensureConfigured() {\n if (!this.isConfigured && IN_BROWSER) {\n console.warn('OpenReplay: Tracker must be configured before use. Call tracker.configure({projectKey: \"your-project-key\"}) first.');\n return false;\n }\n return true;\n }\n use(fn) {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return fn(null);\n }\n return this.instance.use(fn);\n }\n /**\n * Starts offline session recording. Keep in mind that only user device time will be used for timestamps.\n * (no backend delay sync)\n *\n * @param {Object} startOpts - options for session start, same as .start()\n * @param {Function} onSessionSent - callback that will be called once session is fully sent\n * @returns methods to manipulate buffer:\n *\n * saveBuffer - to save it in localStorage\n *\n * getBuffer - returns current buffer\n *\n * setBuffer - replaces current buffer with given\n * */\n startOfflineRecording(...args) {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return;\n }\n return this.instance.startOfflineRecording(...args);\n }\n /**\n * Uploads the stored session buffer to backend\n * @returns promise that resolves once messages are loaded, it has to be awaited\n * so the session can be uploaded properly\n * @resolve - if messages were loaded into service worker successfully\n * @reject {string} - error message\n * */\n uploadOfflineRecording() {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return;\n }\n return this.instance.uploadOfflineRecording();\n }\n forceFlushBatch() {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return;\n }\n return this.instance.forceFlushBatch();\n }\n getSessionInfo() {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return null;\n }\n return this.instance.getSessionInfo();\n }\n getTabId() {\n if (!IN_BROWSER || !this.ensureConfigured() || !this.instance) {\n return null;\n }\n return this.instance.getTabId();\n }\n}\nconst tracker = new TrackerSingleton();\nexport default tracker;\n"],"names":["LongAnimationTask","defaults","wrap","Observer","parse","onCLS","onINP","onLCP","onTTFB","isObject","AnalyticsSDK","Selection","WebAnimations","Tracker"],"mappings":"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","x_google_ignoreList":[25,26,31,39,40,41,42,43,44,45,46]}
|