@gemx-dev/clarity-js 0.8.47 → 0.8.48
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/build/clarity.extended.js +1 -1
- package/build/clarity.insight.js +1 -1
- package/build/clarity.js +591 -497
- package/build/clarity.min.js +6548 -1
- package/build/clarity.min.js.map +1 -0
- package/build/clarity.module.js +591 -497
- package/build/clarity.performance.js +1 -1
- package/package.json +1 -1
- package/rollup.config.ts +2 -2
- package/src/core/version.ts +1 -1
- package/src/custom/README.md +44 -0
- package/src/custom/dialog.ts +69 -0
- package/src/custom/index.ts +6 -0
- package/src/layout/node.ts +8 -0
- package/types/data.d.ts +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clarity.min.js","sources":["../src/core/config.ts","../src/core/api.ts","../src/core/time.ts","../src/core/version.ts","../src/core/hash.ts","../src/core/scrub.ts","../src/data/baseline.ts","../src/data/custom.ts","../src/data/metric.ts","../src/core/timeout.ts","../src/data/ping.ts","../src/data/summary.ts","../../../node_modules/tslib/tslib.es6.js","../src/data/compress.ts","../src/data/variable.ts","../src/data/extract.ts","../src/data/util.ts","../src/data/cookie.ts","../src/data/signal.ts","../src/data/index.ts","../src/diagnostic/fraud.ts","../src/interaction/change.ts","../src/layout/offset.ts","../src/interaction/click.ts","../src/interaction/clipboard.ts","../src/interaction/input.ts","../src/interaction/pointer.ts","../src/core/throttle.ts","../src/interaction/resize.ts","../src/interaction/scroll.ts","../src/interaction/selection.ts","../src/interaction/submit.ts","../src/interaction/unload.ts","../src/interaction/visibility.ts","../src/interaction/focus.ts","../src/interaction/index.ts","../src/data/token.ts","../src/layout/style.ts","../src/layout/animation.ts","../src/layout/custom.ts","../src/layout/encode.ts","../src/layout/document.ts","../src/layout/traverse.ts","../src/layout/mutation.ts","../src/layout/schema.ts","../src/custom/dialog.ts","../src/layout/node.ts","../src/layout/selector.ts","../src/layout/dom.ts","../src/layout/region.ts","../src/layout/target.ts","../src/interaction/encode.ts","../src/interaction/timeline.ts","../src/insight/encode.ts","../src/insight/snapshot.ts","../src/core/dynamic.ts","../src/data/upload.ts","../src/diagnostic/script.ts","../src/diagnostic/encode.ts","../src/diagnostic/internal.ts","../src/core/task.ts","../src/layout/discover.ts","../src/data/upgrade.ts","../src/data/encode.ts","../src/data/limit.ts","../src/data/dimension.ts","../src/data/consent.ts","../src/data/metadata.ts","../src/data/envelope.ts","../src/core/report.ts","../src/core/measure.ts","../src/core/event.ts","../src/core/history.ts","../src/core/index.ts","../src/diagnostic/index.ts","../src/layout/index.ts","../src/performance/encode.ts","../src/performance/navigation.ts","../src/performance/interaction.ts","../src/performance/observer.ts","../src/performance/index.ts","../src/clarity.ts","../src/queue.ts","../src/global.ts"],"sourcesContent":["import { Config, Time } from \"@clarity-types/core\";\n\nlet config: Config = {\n projectId: null,\n delay: 1 * Time.Second,\n lean: false,\n lite: false,\n track: true,\n content: true,\n drop: [],\n mask: [],\n unmask: [],\n regions: [],\n cookies: [],\n fraud: true,\n checksum: [],\n report: null,\n upload: null,\n fallback: null,\n upgrade: null,\n action: null,\n dob: null,\n delayDom: false,\n throttleDom: true,\n conversions: false,\n includeSubdomains: true,\n};\n\nexport default config;\n","import { Constant } from \"@clarity-types/core\";\n\nexport default function api(method: string): string {\n // Zone.js, a popular package for Angular, overrides native browser APIs which can lead to inconsistent state for single page applications.\n // Example issue: https://github.com/angular/angular/issues/31712\n // As a work around, we ensuring Clarity access APIs outside of Zone (and use native implementation instead)\n return window[Constant.Zone] && Constant.Symbol in window[Constant.Zone] ? window[Constant.Zone][Constant.Symbol](method) : method;\n}\n","let startTime = 0;\n\nfunction computeStartTime(): number {\n return performance.now() + performance.timeOrigin;\n}\n\nexport function start(): void {\n startTime = computeStartTime();\n}\n\n// event.timestamp is number of milliseconds elapsed since the document was loaded\n// since iframes can be loaded later the event timestamp is not the same as performance.now()\n// converting everything to absolute time by adding timeorigin of the event view\n// to synchronize times before calculating the difference with start time\nexport function time(event: UIEvent | PageTransitionEvent = null): number {\n // If startTime is 0, Clarity hasn't been started or has been stopped\n // Use a local baseline to maintain relative timing semantics without affecting global state\n let baseline = startTime === 0 ? computeStartTime() : startTime;\n let ts = event && event.timeStamp > 0 ? event.timeStamp : performance.now();\n let origin = event && (event as UIEvent).view ? (event as UIEvent).view.performance.timeOrigin : performance.timeOrigin;\n return Math.max(Math.round(ts + origin - baseline), 0);\n}\n\nexport function stop(): void {\n startTime = 0;\n}\n","let version = \"0.8.48\";\nexport default version;\n","// tslint:disable: no-bitwise\nexport default function(input: string, precision: number = null): string {\n // Code inspired from C# GetHashCode: https://github.com/Microsoft/referencesource/blob/master/mscorlib/system/string.cs\n let hash = 0;\n let hashOne = 5381;\n let hashTwo = hashOne;\n for (let i = 0; i < input.length; i += 2) {\n let charOne = input.charCodeAt(i);\n hashOne = ((hashOne << 5) + hashOne) ^ charOne;\n if (i + 1 < input.length) {\n let charTwo = input.charCodeAt(i + 1);\n hashTwo = ((hashTwo << 5) + hashTwo) ^ charTwo;\n }\n }\n // Replace the magic number from C# implementation (1566083941) with a smaller prime number (11579)\n // This ensures we don't hit integer overflow and prevent collisions\n hash = Math.abs(hashOne + (hashTwo * 11579));\n return (precision ? hash % Math.pow(2, precision) : hash).toString(36);\n}\n","import { Privacy } from \"@clarity-types/core\";\nimport * as Data from \"@clarity-types/data\";\nimport * as Layout from \"@clarity-types/layout\";\nimport config from \"@src/core/config\";\n\nconst catchallRegex = /\\S/gi;\nconst maxUrlLength = 255;\nlet unicodeRegex = true;\nlet digitRegex = null;\nlet letterRegex = null;\nlet currencyRegex = null;\n\nexport function text(value: string, hint: string, privacy: Privacy, mangle: boolean = false, type?: string): string {\n if (value) {\n if (hint == \"input\" && (type === \"checkbox\" || type === \"radio\")) {\n return value;\n }\n\n switch (privacy) {\n case Privacy.None:\n return value;\n case Privacy.Sensitive:\n switch (hint) {\n case Layout.Constant.TextTag:\n case \"value\":\n case \"placeholder\":\n case \"click\":\n return redact(value);\n case \"input\":\n case \"change\":\n return mangleToken(value);\n }\n return value;\n case Privacy.Text:\n case Privacy.TextImage:\n switch (hint) {\n case Layout.Constant.TextTag:\n case Layout.Constant.DataAttribute:\n return mangle ? mangleText(value) : mask(value);\n case \"src\":\n case \"srcset\":\n case \"title\":\n case \"alt\":\n case \"href\":\n case \"xlink:href\":\n if (privacy === Privacy.TextImage) {\n if (hint === 'src' && value?.startsWith('blob:')) {\n return 'blob:';\n }\n return Data.Constant.Empty;\n }\n return value;\n case \"value\":\n case \"click\":\n case \"input\":\n case \"change\":\n return mangleToken(value);\n case \"placeholder\":\n return mask(value);\n }\n break;\n case Privacy.Exclude:\n switch (hint) {\n case Layout.Constant.TextTag:\n case Layout.Constant.DataAttribute:\n return mangle ? mangleText(value) : mask(value);\n case \"value\":\n case \"input\":\n case \"click\":\n case \"change\":\n return Array(Data.Setting.WordLength).join(Data.Constant.Mask);\n case \"checksum\":\n return Data.Constant.Empty;\n }\n break;\n case Privacy.Snapshot:\n switch (hint) {\n case Layout.Constant.TextTag:\n case Layout.Constant.DataAttribute:\n return scrub(value, Data.Constant.Letter, Data.Constant.Digit);\n case \"value\":\n case \"input\":\n case \"click\":\n case \"change\":\n return Array(Data.Setting.WordLength).join(Data.Constant.Mask);\n case \"checksum\":\n case \"src\":\n case \"srcset\":\n case \"alt\":\n case \"title\":\n return Data.Constant.Empty;\n }\n break;\n }\n }\n return value;\n}\n\nexport function url(input: string, electron: boolean = false, truncate: boolean = false): string {\n let result = input;\n // Replace the URL for Electron apps so we don't send back file:/// URL\n if (electron) {\n result = `${Data.Constant.HTTPS}${Data.Constant.Electron}`;\n } else {\n let drop = config.drop;\n if (drop && drop.length > 0 && input && input.indexOf(\"?\") > 0) {\n let [path, query] = input.split(\"?\");\n let swap = Data.Constant.Dropped;\n result = path + \"?\" + query.split(\"&\").map(p => drop.some(x => p.indexOf(`${x}=`) === 0) ? `${p.split(\"=\")[0]}=${swap}` : p).join(\"&\");\n }\n }\n\n if (truncate) {\n result = result.substring(0, maxUrlLength);\n }\n return result;\n}\n\nfunction mangleText(value: string): string {\n let trimmed = value.trim();\n if (trimmed.length > 0) {\n let first = trimmed[0];\n let index = value.indexOf(first);\n let prefix = value.substr(0, index);\n let suffix = value.substr(index + trimmed.length);\n return `${prefix}${trimmed.length.toString(36)}${suffix}`;\n }\n return value;\n}\n\nfunction mask(value: string): string {\n return value.replace(catchallRegex, Data.Constant.Mask);\n}\n\nexport function scrub(value: string, letter: string, digit: string): string {\n regex(); // Initialize regular expressions\n return value ? value.replace(letterRegex, letter).replace(digitRegex, digit) : value;\n}\n\nfunction mangleToken(value: string): string {\n let length = ((Math.floor(value.length / Data.Setting.WordLength) + 1) * Data.Setting.WordLength);\n let output: string = Layout.Constant.Empty;\n for (let i = 0; i < length; i++) {\n output += i > 0 && i % Data.Setting.WordLength === 0 ? Data.Constant.Space : Data.Constant.Mask;\n }\n return output;\n}\n\nfunction regex(): void {\n // Initialize unicode regex, if supported by the browser\n // Reference: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions/Unicode_Property_Escapes\n if (unicodeRegex && digitRegex === null) {\n try {\n digitRegex = new RegExp(\"\\\\p{N}\", \"gu\");\n letterRegex = new RegExp(\"\\\\p{L}\", \"gu\");\n currencyRegex = new RegExp(\"\\\\p{Sc}\", \"gu\");\n } catch { unicodeRegex = false; }\n }\n}\n\nfunction redact(value: string): string {\n let spaceIndex = -1;\n let gap = 0;\n let hasDigit = false;\n let hasEmail = false;\n let hasWhitespace = false;\n let array = null;\n\n regex(); // Initialize regular expressions\n\n for (let i = 0; i < value.length; i++) {\n let c = value.charCodeAt(i);\n hasDigit = hasDigit || (c >= Data.Character.Zero && c <= Data.Character.Nine); // Check for digits in the current word\n hasEmail = hasEmail || c === Data.Character.At; // Check for @ sign anywhere within the current word\n hasWhitespace = c === Data.Character.Tab || c === Data.Character.NewLine || c === Data.Character.Return || c === Data.Character.Blank;\n\n // Process each word as an individual token to redact any sensitive information\n if (i === 0 || i === value.length - 1 || hasWhitespace) {\n // Performance optimization: Lazy load string -> array conversion only when required\n if (hasDigit || hasEmail) {\n if (array === null) { array = value.split(Data.Constant.Empty); }\n // Work on a token at a time so we don't have to apply regex to a larger string\n let token = value.substring(spaceIndex + 1, hasWhitespace ? i : i + 1);\n // Check if unicode regex is supported, otherwise fallback to calling mask function on this token\n if (unicodeRegex && currencyRegex !== null) {\n // Do not redact information if the token contains a currency symbol\n token = token.match(currencyRegex) ? token : scrub(token, Data.Constant.Letter, Data.Constant.Digit);\n } else {\n token = mask(token);\n }\n // Merge token back into array at the right place\n array.splice(spaceIndex + 1 - gap, token.length, token);\n gap += token.length - 1;\n }\n // Reset digit and email flags after every word boundary, except the beginning of string\n if (hasWhitespace) {\n hasDigit = false;\n hasEmail = false;\n spaceIndex = i;\n }\n }\n }\n return array ? array.join(Data.Constant.Empty) : value;\n}\n","import { Event, BooleanFlag } from \"@clarity-types/data\";\nimport { BaselineData, BaselineState } from \"@clarity-types/data\";\nimport { time } from \"@src/core/time\";\nimport encode from \"@src/data/encode\";\n\nexport let state: BaselineState = null;\nlet buffer: BaselineData = null;\nlet update: boolean = false;\n\nexport function start(): void {\n update = false;\n reset();\n}\n\nexport function reset(): void {\n // Baseline state holds the previous values - if it is updated in the current payload,\n // reset the state to current value after sending the previous state\n if (update) {\n state = { time: time(), event: Event.Baseline, data: {\n visible: buffer.visible,\n docWidth: buffer.docWidth,\n docHeight: buffer.docHeight,\n screenWidth: buffer.screenWidth,\n screenHeight: buffer.screenHeight,\n scrollX: buffer.scrollX,\n scrollY: buffer.scrollY,\n pointerX: buffer.pointerX,\n pointerY: buffer.pointerY,\n activityTime: buffer.activityTime,\n scrollTime: buffer.scrollTime,\n pointerTime: buffer.pointerTime,\n moveX: buffer.moveX,\n moveY: buffer.moveY,\n moveTime: buffer.moveTime,\n downX: buffer.downX,\n downY: buffer.downY,\n downTime: buffer.downTime,\n upX: buffer.upX,\n upY: buffer.upY,\n upTime: buffer.upTime,\n pointerPrevX: buffer.pointerPrevX,\n pointerPrevY: buffer.pointerPrevY,\n pointerPrevTime: buffer.pointerPrevTime,\n modules: buffer.modules,\n }\n };\n }\n buffer = buffer ? buffer : {\n visible: BooleanFlag.True,\n docWidth: 0,\n docHeight: 0,\n screenWidth: 0,\n screenHeight: 0,\n scrollX: 0,\n scrollY: 0,\n pointerX: 0,\n pointerY: 0,\n activityTime: 0,\n scrollTime: 0,\n pointerTime: undefined,\n moveX: undefined,\n moveY: undefined,\n moveTime: undefined,\n downX: undefined,\n downY: undefined,\n downTime: undefined,\n upX: undefined,\n upY: undefined,\n upTime: undefined,\n pointerPrevX: undefined,\n pointerPrevY: undefined,\n pointerPrevTime: undefined,\n modules: null,\n };\n}\n\nexport function track(event: Event, x: number, y: number, time?: number): void {\n switch (event) {\n case Event.Document:\n buffer.docWidth = x;\n buffer.docHeight = y;\n break;\n case Event.Resize:\n buffer.screenWidth = x;\n buffer.screenHeight = y;\n break;\n case Event.Scroll:\n buffer.scrollX = x;\n buffer.scrollY = y;\n buffer.scrollTime = time;\n break;\n case Event.MouseMove:\n buffer.moveX = x;\n buffer.moveY = y;\n buffer.moveTime = time;\n buffer.pointerPrevX = buffer.pointerX;\n buffer.pointerPrevY = buffer.pointerY;\n buffer.pointerPrevTime = buffer.pointerTime;\n buffer.pointerX = x;\n buffer.pointerY = y;\n buffer.pointerTime = time;\n break;\n case Event.MouseDown:\n buffer.downX = x;\n buffer.downY = y;\n buffer.downTime = time;\n buffer.pointerPrevX = buffer.pointerX;\n buffer.pointerPrevY = buffer.pointerY;\n buffer.pointerPrevTime = buffer.pointerTime;\n buffer.pointerX = x;\n buffer.pointerY = y;\n buffer.pointerTime = time;\n break;\n case Event.MouseUp:\n buffer.upX = x;\n buffer.upY = y;\n buffer.upTime = time;\n buffer.pointerPrevX = buffer.pointerX;\n buffer.pointerPrevY = buffer.pointerY;\n buffer.pointerPrevTime = buffer.pointerTime;\n buffer.pointerX = x;\n buffer.pointerY = y;\n buffer.pointerTime = time;\n break;\n default:\n buffer.pointerPrevX = buffer.pointerX;\n buffer.pointerPrevY = buffer.pointerY;\n buffer.pointerPrevTime = buffer.pointerTime;\n buffer.pointerX = x;\n buffer.pointerY = y;\n buffer.pointerTime = time;\n break;\n }\n update = true;\n}\n\nexport function activity(t: number): void {\n buffer.activityTime = t;\n}\n\nexport function visibility(t: number, visible: BooleanFlag): void {\n buffer.visible = visible;\n if (!buffer.visible) {\n activity(t);\n }\n update = true;\n}\n\nexport function dynamic(modules: Set<number>): void {\n buffer.modules = Array.from(modules);\n update = true;\n}\n\nexport function compute(): void {\n if (update) {\n encode(Event.Baseline);\n }\n}\n\nexport function stop(): void {\n reset();\n}\n","import { Constant, CustomData, Event } from \"@clarity-types/data\";\nimport * as core from \"@src/core\";\nimport encode from \"./encode\";\n\nexport let data: CustomData = null;\n\n// custom events allow 2 parameters or 1 parameter to be passed. If 2 are passed we\n// consider it a key value pair. If only 1 is passed we only consider the event to have a value.\nexport function event(a: string, b: string): void {\n if (core.active() &&\n a &&\n typeof a === Constant.String &&\n a.length < 255\n ) {\n if (b && typeof b === Constant.String && b.length < 255) {\n data = { key: a, value: b};\n } else {\n data = { value: a }\n }\n encode(Event.Custom);\n \n }\n}\n","import { Event, Metric, MetricData } from \"@clarity-types/data\";\nimport encode from \"./encode\";\n\nexport let data: MetricData = null;\nexport let updates: MetricData = null;\n\nexport function start(): void {\n data = {};\n updates = {};\n count(Metric.InvokeCount);\n}\n\nexport function stop(): void {\n data = {};\n updates = {};\n}\n\nexport function count(metric: Metric): void {\n if (!(metric in data)) { data[metric] = 0; }\n if (!(metric in updates)) { updates[metric] = 0; }\n data[metric]++;\n updates[metric]++;\n}\n\nexport function sum(metric: Metric, value: number): void {\n if (value !== null) { \n if (!(metric in data)) { data[metric] = 0; }\n if (!(metric in updates)) { updates[metric] = 0; }\n data[metric] += value;\n updates[metric] += value;\n }\n}\n\nexport function max(metric: Metric, value: number): void {\n // Ensure that we do not process null or NaN values\n if (value !== null && isNaN(value) === false) { \n if (!(metric in data)) { data[metric] = 0; }\n if (value > data[metric] || data[metric] === 0) {\n updates[metric] = value;\n data[metric] = value;\n }\n }\n}\n\nexport function compute(): void {\n encode(Event.Metric);\n}\n\nexport function reset(): void {\n updates = {};\n}\n","import { Event } from \"@clarity-types/data\";\nimport measure from \"./measure\";\n\nexport function setTimeout(handler: (event?: Event | boolean) => void, timeout?: number, event?: Event): number {\n return window.setTimeout(measure(handler), timeout, event);\n}\n\nexport function clearTimeout(handle: number): void {\n return window.clearTimeout(handle);\n}\n","import { Event, PingData, Setting } from \"@clarity-types/data\";\nimport { suspend } from \"@src/core\";\nimport { time } from \"@src/core/time\";\nimport { clearTimeout, setTimeout } from \"@src/core/timeout\";\nimport encode from \"./encode\";\n\nexport let data: PingData;\nlet last = 0;\nlet interval = 0;\nlet timeout: number = null;\n\nexport function start(): void {\n interval = Setting.PingInterval;\n last = 0;\n}\n\nexport function reset(): void {\n if (timeout) { clearTimeout(timeout); }\n timeout = setTimeout(ping, interval);\n last = time();\n}\n\nfunction ping(): void {\n let now = time();\n data = { gap: now - last };\n encode(Event.Ping);\n if (data.gap < Setting.PingTimeout) {\n timeout = setTimeout(ping, interval);\n } else { suspend(); }\n}\n\nexport function stop(): void {\n clearTimeout(timeout);\n last = 0;\n interval = 0;\n}\n","import { Event, SummaryData, Setting } from \"@clarity-types/data\";\nimport encode from \"./encode\";\n\nexport let data: SummaryData = null;\n\nexport function start(): void {\n data = {};\n}\n\nexport function stop(): void {\n data = {};\n}\n\nexport function track(event: Event, time: number): void {\n if (!(event in data)) {\n data[event] = [[time, 0]];\n } else {\n let e = data[event];\n let last = e[e.length - 1];\n // Add a new entry only if the new event occurs after configured interval\n // Otherwise, extend the duration of the previous entry\n if (time - last[0] > Setting.SummaryInterval) {\n data[event].push([time, 0]);\n } else { last[1] = time - last[0]; }\n }\n}\n\nexport function compute(): void {\n encode(Event.Summary);\n}\n\nexport function reset(): void {\n data = {};\n}\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.push(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.push(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n","import { Constant } from \"@clarity-types/data\";\n\nconst supported = Constant.CompressionStream in window;\n\nexport default async function(input: string): Promise<Uint8Array> {\n try {\n if (supported) {\n // Create a readable stream from given input string and\n // pipe it through text encoder and compression stream to gzip it\n const stream = new ReadableStream({async start(controller) {\n controller.enqueue(input);\n controller.close();\n }}).pipeThrough(new TextEncoderStream()).pipeThrough(new window[Constant.CompressionStream](\"gzip\"));\n return new Uint8Array(await read(stream));\n }\n } catch { /* do nothing */ }\n return null;\n}\n\nasync function read(stream: ReadableStream): Promise<number[]> {\n const reader = stream.getReader();\n const chunks:number[] = [];\n let done = false;\n let value: number[] = [];\n while (!done) {\n ({ done, value } = await reader.read());\n if (done) { return chunks; }\n chunks.push(...value);\n }\n return chunks;\n}\n","import { Constant, Event, IdentityData, Setting, VariableData } from \"@clarity-types/data\";\nimport * as core from \"@src/core\";\nimport { scrub } from \"@src/core/scrub\";\nimport encode from \"./encode\";\n\nexport let data: VariableData = null;\n\nexport function start(): void {\n reset();\n}\n\nexport function set(variable: string, value: string | string[]): void {\n let values = typeof value === Constant.String ? [value as string] : value as string[];\n log(variable, values);\n}\n\nexport async function identify(userId: string, sessionId: string = null, pageId: string = null, userHint: string = null): Promise<IdentityData> {\n let output: IdentityData = { userId: await sha256(userId), userHint: userHint || redact(userId) };\n\n // By default, hash custom userId using SHA256 algorithm on the client to preserve privacy\n log(Constant.UserId, [output.userId]);\n \n // Optional non-identifying name for the user\n // If name is not explicitly provided, we automatically generate a redacted version of the userId\n log(Constant.UserHint, [output.userHint]);\n log(Constant.UserType, [detect(userId)]); \n\n // Log sessionId and pageId if provided\n if (sessionId) { \n log(Constant.SessionId, [sessionId]);\n output.sessionId = sessionId;\n }\n if (pageId) {\n log(Constant.PageId, [pageId]);\n output.pageId = pageId;\n }\n\n return output;\n}\n\nfunction log(variable: string, value: string[]): void {\n if (core.active() &&\n variable &&\n value &&\n typeof variable === Constant.String &&\n variable.length < 255) {\n let validValues = variable in data ? data[variable] : [];\n for (let i = 0; i < value.length; i++) {\n if (typeof value[i] === Constant.String && value[i].length < 255) { validValues.push(value[i]); }\n }\n data[variable] = validValues;\n }\n}\n\nexport function compute(): void {\n encode(Event.Variable);\n}\n\nexport function reset(): void {\n data = {};\n}\n\nexport function stop(): void {\n reset();\n}\n\nfunction redact(input: string): string {\n return input && input.length >= Setting.WordLength ? \n `${input.substring(0,2)}${scrub(input.substring(2), Constant.Asterix, Constant.Asterix)}` : scrub(input, Constant.Asterix, Constant.Asterix);\n}\n\nasync function sha256(input: string): Promise<string> {\n try {\n if (crypto && input) {\n // Reference: https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest#converting_a_digest_to_a_hex_string\n const buffer = await crypto.subtle.digest(Constant.SHA256, new TextEncoder().encode(input));\n return Array.prototype.map.call(new Uint8Array(buffer), (x: any) =>(('00'+x.toString(16)).slice(-2))).join('');\n } else { return Constant.Empty; }\n } catch { return Constant.Empty; }\n}\n\nfunction detect(input: string): string {\n return input && input.indexOf(Constant.At) > 0 ? Constant.Email : Constant.String;\n}","import { ExtractSource, Syntax, Type } from \"@clarity-types/core\";\nimport { Event, Setting, ExtractData } from \"@clarity-types/data\";\nimport encode from \"./encode\";\nimport * as internal from \"@src/diagnostic/internal\";\nimport { Code, Constant, Severity } from \"@clarity-types/data\";\nimport { hashText } from \"@src/clarity\";\nimport hash from \"@src/core/hash\";\n\nexport let data: ExtractData = {};\nexport let keys: Set<number> = new Set();\n\nlet variables : { [key: number]: { [key: number]: Syntax[] }} = {};\nlet selectors : { [key: number]: { [key: number]: string }} = {};\nlet hashes : { [key: number]: { [key: number]: string }} = {};\nlet validation : { [key: number]: string } = {};\n\nexport function start(): void {\n reset();\n}\n\n// Input string is of the following form:\n// EXTRACT 101|element { \"1\": \".class1\", \"2\": \"~window.a.b\", \"3\": \"!abc\"}\n// if element is present on the page it will set up event 101 to grab the contents of the class1 selector into component 1,\n// the javascript evaluated contents of window.a.b into component 2,\n// and the contents of Clarity's hash abc into component 3\nexport function trigger(input: string): void { \n try {\n var parts = input && input.length > 0 ? input.split(/ (.*)/) : [Constant.Empty];\n var keyparts = parts[0].split(/\\|(.*)/);\n var key = parseInt(keyparts[0]);\n var element = keyparts.length > 1 ? keyparts[1] : Constant.Empty;\n var values = parts.length > 1 ? JSON.parse(parts[1]) : {};\n variables[key] = {};\n selectors[key] = {};\n hashes[key] = {};\n validation[key] = element;\n for (var v in values) {\n // values is a set of strings for proper JSON parsing, but it's more efficient \n // to interact with them as numbers\n let id = parseInt(v);\n let value = values[v] as string;\n let source = ExtractSource.Text;\n if (value.startsWith(Constant.Tilde)) {\n source = ExtractSource.Javascript\n } else if (value.startsWith(Constant.Bang)) {\n source = ExtractSource.Hash\n }\n switch (source) {\n case ExtractSource.Javascript:\n let variable = value.slice(1);\n variables[key][id] = parse(variable);\n break;\n case ExtractSource.Text:\n selectors[key][id] = value;\n break;\n case ExtractSource.Hash:\n let hash = value.slice(1);\n hashes[key][id] = hash;\n break;\n }\n }\n }\n catch(e) {\n internal.log(Code.Config, Severity.Warning, e ? e.name : null);\n }\n}\n\nexport function clone(v: Syntax[]): Syntax[] {\n return JSON.parse(JSON.stringify(v));\n}\n\nexport function compute(): void {\n try {\n for (let v in variables) {\n let key = parseInt(v);\n if (validation[key] == Constant.Empty || document.querySelector(validation[key]))\n {\n let variableData = variables[key];\n for (let v in variableData) {\n let variableKey = parseInt(v);\n let value = str(evaluate(clone(variableData[variableKey])));\n if (value) { \n update(key, variableKey, value);\n }\n }\n\n let selectorData = selectors[key];\n for (let s in selectorData) {\n let shouldMask = false;\n let selectorKey = parseInt(s);\n let selector = selectorData[selectorKey];\n if (selector.startsWith(Constant.At)){\n shouldMask = true;\n selector = selector.slice(1);\n }\n let nodes = document.querySelectorAll(selector) as NodeListOf<HTMLElement>;\n if (nodes) {\n let text = Array.from(nodes).map(e => e.textContent).join(Constant.Seperator);\n update(key, selectorKey, (shouldMask ? hash(text).trim() : text).slice(0, Setting.ExtractLimit));\n }\n }\n\n let hashData = hashes[key];\n for (let h in hashData) {\n let hashKey = parseInt(h);\n let content = hashText(hashData[hashKey]).trim().slice(0, Setting.ExtractLimit);\n update(key, hashKey, content);\n }\n }\n }\n\n if (keys.size > 0) {\n encode(Event.Extract);\n }\n }\n catch (e) { internal.log(Code.Selector, Severity.Warning, e ? e.name : null); }\n}\n\nexport function reset(): void {\n keys.clear();\n}\n\nexport function update(key: number, subkey: number, value: string): void {\n var update = false;\n if (!(key in data)) {\n data[key] = {};\n update = true;\n }\n \n if (!isEmpty(hashes[key]) \n && (!(subkey in data[key]) || data[key][subkey] != value))\n {\n update = true;\n }\n\n data[key][subkey] = value;\n if (update) {\n keys.add(key);\n }\n\n return;\n}\n\nexport function stop(): void {\n reset();\n}\n\nfunction parse(variable: string): Syntax[] {\n let syntax: Syntax[] = [];\n let parts = variable.split(Constant.Dot);\n while (parts.length > 0) {\n let part = parts.shift();\n let arrayStart = part.indexOf(Constant.ArrayStart);\n let conditionStart = part.indexOf(Constant.ConditionStart);\n let conditionEnd = part.indexOf(Constant.ConditionEnd);\n syntax.push({\n name : arrayStart > 0 ? part.slice(0, arrayStart) : (conditionStart > 0 ? part.slice(0, conditionStart) : part),\n type : arrayStart > 0 ? Type.Array : (conditionStart > 0 ? Type.Object : Type.Simple),\n condition : conditionStart > 0 ? part.slice(conditionStart + 1, conditionEnd) : null\n });\n }\n\n return syntax;\n}\n\n// The function below takes in a variable name in following format: \"a.b.c\" and safely evaluates its value in javascript context\n// For instance, for a.b.c, it will first check window[\"a\"]. If it exists, it will recursively look at: window[\"a\"][\"b\"] and finally,\n// return the value for window[\"a\"][\"b\"][\"c\"].\nfunction evaluate(variable: Syntax[], base: Object = window): any {\n if (variable.length == 0) { return base; }\n let part = variable.shift();\n let output;\n if (base && base[part.name]) {\n let obj = base[part.name];\n if (part.type !== Type.Array && match(obj, part.condition)) {\n output = evaluate(variable, obj);\n }\n else if (Array.isArray(obj)) {\n let filtered = [];\n for (var value of obj) {\n if (match(value, part.condition)) {\n let op = evaluate(variable, value)\n if (op) { filtered.push(op); }\n }\n }\n output = filtered;\n }\n \n return output;\n }\n\n return null;\n}\n\nfunction str(input: string): string {\n // Automatically trim string to max of Setting.ExtractLimit to avoid fetching long strings\n return input ? JSON.stringify(input).slice(0, Setting.ExtractLimit) : input;\n}\n\nfunction match(base: Object, condition: string): boolean {\n if (condition) {\n let prop = condition.split(\":\");\n return prop.length > 1 ? base[prop[0]] == prop[1] : base[prop[0]]\n }\n\n return true;\n}\n\nfunction isEmpty(obj: Object): boolean {\n return Object.keys(obj).length == 0;\n}\n","export function supported(target: Window | Document, api: string): boolean {\r\n try { return !!target[api]; } catch { return false; }\r\n}\r\n\r\nexport function encodeCookieValue(value: string): string {\r\n return encodeURIComponent(value);\r\n}\r\n\r\nexport function decodeCookieValue(value: string): [boolean, string] {\r\n try {\r\n let decodedValue = decodeURIComponent(value);\r\n return [decodedValue != value, decodedValue];\r\n }\r\n catch {\r\n }\r\n\r\n return [false, value];\r\n}","import { Constant } from \"@clarity-types/data\";\r\nimport config from \"@src/core/config\";\r\nimport { decodeCookieValue, encodeCookieValue, supported } from \"@src/data/util\";\r\n\r\nlet rootDomain = null;\r\nexport const COOKIE_SEP = Constant.Caret;\r\n\r\nexport function start() {\r\n rootDomain = null;\r\n}\r\n\r\nexport function stop() {\r\n rootDomain = null;\r\n}\r\n\r\nexport function getCookie(key: string, limit = false): string {\r\n if (supported(document, Constant.Cookie)) {\r\n let cookies: string[] = document.cookie.split(Constant.Semicolon);\r\n if (cookies) {\r\n for (let i = 0; i < cookies.length; i++) {\r\n let pair: string[] = cookies[i].split(Constant.Equals);\r\n if (pair.length > 1 && pair[0] && pair[0].trim() === key) {\r\n // Some browsers automatically url encode cookie values if they are not url encoded.\r\n // We therefore encode and decode cookie values ourselves.\r\n // For backwards compatability we need to consider 3 cases:\r\n // * Cookie was previously not encoded by Clarity and browser did not encode it\r\n // * Cookie was previously not encoded by Clarity and browser encoded it once or more\r\n // * Cookie was previously encoded by Clarity and browser did not encode it\r\n let [isEncoded, decodedValue] = decodeCookieValue(pair[1]);\r\n\r\n while (isEncoded) {\r\n [isEncoded, decodedValue] = decodeCookieValue(decodedValue);\r\n }\r\n\r\n // If we are limiting cookies, check if the cookie value is limited\r\n if (limit) {\r\n return decodedValue.endsWith(`${Constant.Tilde}1`) ? decodedValue.substring(0, decodedValue.length - 2) : null;\r\n }\r\n\r\n return decodedValue;\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nexport function setCookie(key: string, value: string, time: number): void {\r\n // only write cookies if we are currently in a cookie writing mode (and they are supported)\r\n // OR if we are trying to write an empty cookie (i.e. clear the cookie value out)\r\n if ((config.track || value == Constant.Empty) && ((navigator && navigator.cookieEnabled) || supported(document, Constant.Cookie))) {\r\n // Some browsers automatically url encode cookie values if they are not url encoded.\r\n // We therefore encode and decode cookie values ourselves.\r\n let encodedValue = encodeCookieValue(value);\r\n\r\n let expiry = new Date();\r\n expiry.setDate(expiry.getDate() + time);\r\n let expires = expiry ? Constant.Expires + expiry.toUTCString() : Constant.Empty;\r\n let cookie = `${key}=${encodedValue}${Constant.Semicolon}${expires}${Constant.Path}`;\r\n try {\r\n // Attempt to get the root domain only once and fall back to writing cookie on the current domain.\r\n if (rootDomain === null) {\r\n let hostname = location.hostname ? location.hostname.split(Constant.Dot) : [];\r\n // Walk backwards on a domain and attempt to set a cookie, until successful\r\n for (let i = hostname.length - 1; i >= 0; i--) {\r\n rootDomain = `.${hostname[i]}${rootDomain ? rootDomain : Constant.Empty}`;\r\n // We do not wish to attempt writing a cookie on the absolute last part of the domain, e.g. .com or .net.\r\n // So we start attempting after second-last part, e.g. .domain.com (PASS) or .co.uk (FAIL)\r\n if (i < hostname.length - 1) {\r\n // Write the cookie on the current computed top level domain\r\n document.cookie = `${cookie}${Constant.Semicolon}${Constant.Domain}${rootDomain}`;\r\n // Once written, check if the cookie exists and its value matches exactly with what we intended to set\r\n // Checking for exact value match helps us eliminate a corner case where the cookie may already be present with a different value\r\n // If the check is successful, no more action is required and we can return from the function since rootDomain cookie is already set\r\n // If the check fails, continue with the for loop until we can successfully set and verify the cookie\r\n if (getCookie(key) === value) {\r\n return;\r\n }\r\n }\r\n }\r\n // Finally, if we were not successful and gone through all the options, play it safe and reset rootDomain to be empty\r\n // This forces our code to fall back to always writing cookie to the current domain\r\n rootDomain = Constant.Empty;\r\n }\r\n } catch {\r\n rootDomain = Constant.Empty;\r\n }\r\n document.cookie = rootDomain ? `${cookie}${Constant.Semicolon}${Constant.Domain}${rootDomain}` : cookie;\r\n }\r\n}\r\n","import { ClaritySignal, SignalCallback } from '@clarity-types/data';\n\nexport let signalCallback: SignalCallback = null;\n\nexport function signal(cb: SignalCallback): void {\n signalCallback = cb;\n}\n\nfunction parseSignals(signalsPayload: string): ClaritySignal[] {\n try{\n const parsedSignals: ClaritySignal[] = JSON.parse(signalsPayload);\n return parsedSignals;\n }catch{\n return []\n }\n}\n\nexport function signalsEvent(signalsPayload: string) {\n try {\n if (!signalCallback) {\n return;\n }\n const signals = parseSignals(signalsPayload);\n signals.forEach((signal) => {\n signalCallback(signal);\n });\n } catch {\n //do nothing\n }\n}\n","import measure from \"@src/core/measure\";\nimport * as baseline from \"@src/data/baseline\";\nimport * as consent from \"@src/data/consent\";\nimport * as envelope from \"@src/data/envelope\";\nimport * as dimension from \"@src/data/dimension\";\nimport * as metadata from \"@src/data/metadata\";\nimport { Module } from \"@clarity-types/core\";\nimport * as metric from \"@src/data/metric\";\nimport * as ping from \"@src/data/ping\";\nimport * as limit from \"@src/data/limit\";\nimport * as summary from \"@src/data/summary\";\nimport * as upgrade from \"@src/data/upgrade\";\nimport * as upload from \"@src/data/upload\";\nimport * as variable from \"@src/data/variable\";\nimport * as extract from \"@src/data/extract\";\nimport * as cookie from \"@src/data/cookie\";\nexport { event } from \"@src/data/custom\";\nexport { consent, consentv2, metadata } from \"@src/data/metadata\";\nexport { upgrade } from \"@src/data/upgrade\";\nexport { set, identify } from \"@src/data/variable\";\nexport { signal } from \"@src/data/signal\";\nexport { max as maxMetric } from \"@src/data/metric\";\nexport { log as dlog } from \"@src/data/dimension\";\n\nconst modules: Module[] = [baseline, dimension, variable, limit, summary, cookie, consent, metadata, envelope, upload, ping, upgrade, extract];\n\nexport function start(): void {\n // Metric needs to be initialized before we can start measuring. so metric is not wrapped in measure\n metric.start();\n modules.forEach(x => measure(x.start)());\n}\n\nexport function stop(): void {\n // Stop modules in the reverse order of their initialization\n // The ordering below should respect inter-module dependency.\n // E.g. if upgrade depends on upload, then upgrade needs to end before upload.\n // Similarly, if upload depends on metadata, upload needs to end before metadata.\n modules.slice().reverse().forEach(x => measure(x.stop)());\n metric.stop();\n}\n\nexport function compute(): void {\n variable.compute();\n baseline.compute();\n dimension.compute();\n metric.compute();\n summary.compute();\n limit.compute();\n extract.compute();\n consent.compute();\n}\n","import { BooleanFlag, Event, IframeStatus, Metric, Setting } from \"@clarity-types/data\";\nimport { FraudData } from \"@clarity-types/diagnostic\";\nimport config from \"@src/core/config\";\nimport hash from \"@src/core/hash\";\nimport * as metric from \"@src/data/metric\";\nimport encode from \"./encode\";\n\nlet history = [];\nexport let data: FraudData;\n\nexport function start(): void {\n history = [];\n metric.max(Metric.Automation, navigator.webdriver ? BooleanFlag.True : BooleanFlag.False);\n try {\n // some sites (unintentionally) overwrite the window.self property, so we also check for the main window object\n metric.max(Metric.Iframed, window.top == window.self || window.top == window ? IframeStatus.TopFrame : IframeStatus.Iframe);\n } catch (ex) {\n metric.max(Metric.Iframed, IframeStatus.Unknown);\n }\n \n}\n\nexport function check(id: number, target: number, input: string): void {\n // Compute hash for fraud detection, if enabled. Hash is computed only if input meets the minimum length criteria\n if (config.fraud && id !== null && input && input.length >= Setting.WordLength) {\n data = { id, target, checksum: hash(input, Setting.ChecksumPrecision) };\n // Only encode this event if we haven't already reported this hash\n if (history.indexOf(data.checksum) < 0) {\n history.push(data.checksum);\n encode(Event.Fraud);\n }\n }\n}\n\nexport function stop(): void {\n history = [];\n}","import { Constant, Event, Setting } from \"@clarity-types/data\";\nimport { ChangeState } from \"@clarity-types/interaction\";\nimport config from \"@src/core/config\";\nimport { bind } from \"@src/core/event\";\nimport hash from \"@src/core/hash\";\nimport { schedule } from \"@src/core/task\";\nimport { time } from \"@src/core/time\";\nimport { target } from \"@src/layout/target\";\nimport encode from \"./encode\";\nimport { Mask } from \"@clarity-types/layout\";\n\nexport let state: ChangeState[] = [];\n\nexport function start(): void {\n reset();\n}\n\nexport function observe(root: Node): void {\n bind(root, \"change\", recompute, true);\n}\n\nfunction recompute(evt: UIEvent): void {\n let element = target(evt) as HTMLInputElement;\n if (element) {\n let value = element.value;\n let checksum = value && value.length >= Setting.WordLength && config.fraud && Mask.Exclude.indexOf(element.type) === -1 ? hash(value, Setting.ChecksumPrecision) : Constant.Empty;\n state.push({ time: time(evt), event: Event.Change, data: { target: target(evt), type: element.type, value, checksum } });\n schedule(encode.bind(this, Event.Change));\n } \n}\n\nexport function reset(): void {\n state = [];\n}\n\nexport function stop(): void {\n reset();\n}\n","import { OffsetDistance } from \"@clarity-types/core\";\nimport { iframe } from \"@src/layout/dom\";\n\nexport function offset(element: HTMLElement): OffsetDistance {\n let output: OffsetDistance = { x: 0, y: 0 };\n\n // Walk up the chain to ensure we compute offset distance correctly\n // In case where we may have nested IFRAMEs, we keep walking up until we get to the top most parent page\n if (element && element.offsetParent) {\n do {\n let parent = element.offsetParent as HTMLElement;\n let frame = parent === null ? iframe(element.ownerDocument) : null;\n output.x += element.offsetLeft;\n output.y += element.offsetTop;\n element = frame ? frame : parent;\n } while (element);\n }\n return output;\n}\n","import { BooleanFlag, Constant, Event, Setting } from \"@clarity-types/data\";\nimport { BrowsingContext, ClickState, TextInfo } from \"@clarity-types/interaction\";\nimport { Box } from \"@clarity-types/layout\";\nimport { bind } from \"@src/core/event\";\nimport { schedule } from \"@src/core/task\";\nimport { time } from \"@src/core/time\";\nimport { iframe } from \"@src/layout/dom\";\nimport { offset } from \"@src/layout/offset\";\nimport { target } from \"@src/layout/target\";\nimport encode from \"./encode\";\n\nconst UserInputTags = [\"input\", \"textarea\", \"radio\", \"button\", \"canvas\", \"select\"];\nexport let state: ClickState[] = [];\n\nexport function start(): void {\n reset();\n}\n\nexport function observe(root: Node): void {\n bind(root, \"click\", handler.bind(this, Event.Click, root), true);\n bind(root, \"contextmenu\", handler.bind(this, Event.ContextMenu, root), true);\n}\n\nfunction handler(event: Event, root: Node, evt: MouseEvent): void {\n let frame = iframe(root);\n let d = frame && frame.contentDocument ? frame.contentDocument.documentElement : document.documentElement;\n let x = \"pageX\" in evt ? Math.round(evt.pageX) : (\"clientX\" in evt ? Math.round(evt[\"clientX\"] + d.scrollLeft) : null);\n let y = \"pageY\" in evt ? Math.round(evt.pageY) : (\"clientY\" in evt ? Math.round(evt[\"clientY\"] + d.scrollTop) : null);\n // In case of iframe, we adjust (x,y) to be relative to top parent's origin\n if (frame) {\n let distance = offset(frame);\n x = x ? x + Math.round(distance.x) : x;\n y = y ? y + Math.round(distance.y) : y;\n }\n\n let t = target(evt);\n // Find nearest anchor tag (<a/>) parent if current target node is part of one\n // If present, we use the returned link element to populate text and link properties below\n let a = link(t);\n\n // Get layout rectangle for the target element\n let l = layout(t as Element);\n\n // Reference: https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/detail\n // This property helps differentiate between a keyboard navigation vs. pointer click\n // In case of a keyboard navigation, we use center of target element as (x,y)\n if (evt.detail === 0 && l) {\n x = Math.round(l.x + (l.w / 2));\n y = Math.round(l.y + (l.h / 2));\n }\n\n let eX = l ? Math.max(Math.floor(((x - l.x) / l.w) * Setting.ClickPrecision), 0) : 0;\n let eY = l ? Math.max(Math.floor(((y - l.y) / l.h) * Setting.ClickPrecision), 0) : 0;\n\n // Check for null values before processing this event\n if (x !== null && y !== null) {\n const textInfo = text(t);\n state.push({\n time: time(evt), event, data: {\n target: t,\n x,\n y,\n eX,\n eY,\n button: evt.button,\n reaction: reaction(t),\n context: context(a),\n text: textInfo.text,\n link: a ? a.href : null,\n hash: null,\n trust: evt.isTrusted ? BooleanFlag.True : BooleanFlag.False,\n isFullText: textInfo.isFullText,\n w: l ? l.w : 0,\n h: l ? l.h : 0,\n tag: getElementAttribute(t, \"tagName\").substring(0, Setting.ClickTag),\n class: getElementAttribute(t, \"className\").substring(0, Setting.ClickClass),\n id: getElementAttribute(t, \"id\").substring(0, Setting.ClickId),\n }\n });\n schedule(encode.bind(this, event));\n }\n}\n\nfunction link(node: Node): HTMLAnchorElement {\n while (node && node !== document) {\n if (node.nodeType === Node.ELEMENT_NODE) {\n let element = node as HTMLElement;\n if (element.tagName === \"A\") {\n return element as HTMLAnchorElement;\n }\n }\n node = node.parentNode;\n }\n return null;\n}\n\nfunction text(element: Node): TextInfo {\n let output = null;\n let isFullText = false;\n if (element) {\n // Grab text using \"textContent\" for most HTMLElements, however, use \"value\" for HTMLInputElements and \"alt\" for HTMLImageElement.\n let t = element.textContent || String((element as HTMLInputElement).value || '') || (element as HTMLImageElement).alt;\n if (t) {\n // Replace multiple occurrence of space characters with a single white space\n // Also, trim any spaces at the beginning or at the end of string\n const trimmedText = t.replace(/\\s+/g, Constant.Space).trim();\n // Finally, send only first few characters as specified by the Setting\n output = trimmedText.substring(0, Setting.ClickText);\n isFullText = output.length === trimmedText.length;\n }\n }\n\n return { text: output, isFullText: isFullText ? BooleanFlag.True : BooleanFlag.False };\n}\n\nfunction reaction(element: Node): BooleanFlag {\n const tag = getElementAttribute(element, \"tagName\");\n if (UserInputTags.indexOf(tag) >= 0) {\n return BooleanFlag.False;\n }\n return BooleanFlag.True;\n}\n\nfunction getElementAttribute(element: Node, attribute: \"tagName\" | \"className\" | \"id\"): string {\n if (element.nodeType === Node.ELEMENT_NODE) {\n const attr = (element as HTMLElement)?.[attribute];\n const value = typeof attr === \"string\" ? attr?.toLowerCase() : \"\";\n return value;\n }\n return \"\";\n}\n\nfunction layout(element: Element): Box {\n let box: Box = null;\n let de = document.documentElement;\n if (typeof element.getBoundingClientRect === \"function\") {\n // getBoundingClientRect returns rectangle relative positioning to viewport\n let rect = element.getBoundingClientRect();\n\n if (rect && rect.width > 0 && rect.height > 0) {\n // Add viewport's scroll position to rectangle to get position relative to document origin\n // Also: using Math.floor() instead of Math.round() because in Edge,\n // getBoundingClientRect returns partial pixel values (e.g. 162.5px) and Chrome already\n // floors the value (e.g. 162px). This keeps consistent behavior across browsers.\n box = {\n x: Math.floor(rect.left + (\"pageXOffset\" in window ? window.pageXOffset : de.scrollLeft)),\n y: Math.floor(rect.top + (\"pageYOffset\" in window ? window.pageYOffset : de.scrollTop)),\n w: Math.floor(rect.width),\n h: Math.floor(rect.height)\n };\n }\n }\n return box;\n}\n\nfunction context(a: HTMLAnchorElement): BrowsingContext {\n if (a && a.hasAttribute(Constant.Target)) {\n switch (a.getAttribute(Constant.Target)) {\n case Constant.Blank: return BrowsingContext.Blank;\n case Constant.Parent: return BrowsingContext.Parent;\n case Constant.Top: return BrowsingContext.Top;\n }\n }\n return BrowsingContext.Self;\n}\n\nexport function reset(): void {\n state = [];\n}\n\nexport function stop(): void {\n reset();\n}\n","import { Event } from \"@clarity-types/data\";\nimport { Clipboard, ClipboardState } from \"@clarity-types/interaction\";\nimport { bind } from \"@src/core/event\";\nimport { schedule } from \"@src/core/task\";\nimport { time } from \"@src/core/time\";\nimport encode from \"./encode\";\nimport { target } from \"@src/layout/target\";\n\nexport let state: ClipboardState[] = [];\n\nexport function start(): void {\n reset();\n}\n\nexport function observe(root: Node): void {\n bind(root, \"cut\", recompute.bind(this, Clipboard.Cut), true);\n bind(root, \"copy\", recompute.bind(this, Clipboard.Copy), true);\n bind(root, \"paste\", recompute.bind(this, Clipboard.Paste), true);\n}\n\nfunction recompute(action: Clipboard, evt: UIEvent): void {\n state.push({ time: time(evt), event: Event.Clipboard, data: { target: target(evt), action } });\n schedule(encode.bind(this, Event.Clipboard));\n}\n\nexport function reset(): void {\n state = [];\n}\n\nexport function stop(): void {\n reset();\n}\n","import { BooleanFlag, Event } from \"@clarity-types/data\";\nimport { InputData, InputState, Setting } from \"@clarity-types/interaction\";\nimport { bind } from \"@src/core/event\";\nimport { schedule } from \"@src/core/task\";\nimport { time } from \"@src/core/time\";\nimport { clearTimeout, setTimeout } from \"@src/core/timeout\";\nimport { get } from \"@src/layout/dom\";\nimport encode from \"./encode\";\nimport { target } from \"@src/layout/target\";\n\nlet timeout: number = null;\nexport let state: InputState[] = [];\n\nexport function start(): void {\n reset();\n}\n\nexport function observe(root: Node): void {\n bind(root, \"input\", recompute, true);\n}\n\nfunction recompute(evt: UIEvent): void {\n let input = target(evt) as HTMLInputElement;\n let value = get(input);\n if (input && input.type && value) {\n let v = input.value;\n let t = input.type;\n switch (input.type) {\n case \"radio\":\n case \"checkbox\":\n v = input.checked ? \"true\" : \"false\";\n break;\n }\n\n let data: InputData = { target: input, value: v, type: t, trust: evt.isTrusted ? BooleanFlag.True : BooleanFlag.False };\n\n // If last entry in the queue is for the same target node as the current one, remove it so we can later swap it with current data.\n if (state.length > 0 && (state[state.length - 1].data.target === data.target)) { state.pop(); }\n\n state.push({ time: time(evt), event: Event.Input, data });\n\n clearTimeout(timeout);\n timeout = setTimeout(process, Setting.InputLookAhead, Event.Input);\n }\n}\n\nfunction process(event: Event): void {\n schedule(encode.bind(this, event));\n}\n\nexport function reset(): void {\n state = [];\n}\n\nexport function stop(): void {\n clearTimeout(timeout);\n reset();\n}","import { Event } from \"@clarity-types/data\";\nimport { PointerState, Setting } from \"@clarity-types/interaction\";\nimport { bind } from \"@src/core/event\";\nimport { schedule } from \"@src/core/task\";\nimport { time } from \"@src/core/time\";\nimport { clearTimeout, setTimeout } from \"@src/core/timeout\";\nimport { iframe } from \"@src/layout/dom\";\nimport { offset } from \"@src/layout/offset\";\nimport { target } from \"@src/layout/target\";\nimport encode from \"./encode\";\n\nexport let state: PointerState[] = [];\nlet timeout: number = null;\nlet hasPrimaryTouch = false;\nlet primaryTouchId = 0;\nconst activeTouchPointIds = new Set<number>();\n\nexport function start(): void {\n reset();\n}\n\nexport function observe(root: Node): void {\n bind(root, \"mousedown\", mouse.bind(this, Event.MouseDown, root), true);\n bind(root, \"mouseup\", mouse.bind(this, Event.MouseUp, root), true);\n bind(root, \"mousemove\", mouse.bind(this, Event.MouseMove, root), true);\n bind(root, \"wheel\", mouse.bind(this, Event.MouseWheel, root), true);\n bind(root, \"dblclick\", mouse.bind(this, Event.DoubleClick, root), true);\n bind(root, \"touchstart\", touch.bind(this, Event.TouchStart, root), true);\n bind(root, \"touchend\", touch.bind(this, Event.TouchEnd, root), true);\n bind(root, \"touchmove\", touch.bind(this, Event.TouchMove, root), true);\n bind(root, \"touchcancel\", touch.bind(this, Event.TouchCancel, root), true);\n}\n\nfunction mouse(event: Event, root: Node, evt: MouseEvent): void {\n let frame = iframe(root);\n let d = frame && frame.contentDocument ? frame.contentDocument.documentElement : document.documentElement;\n let x = \"pageX\" in evt ? Math.round(evt.pageX) : (\"clientX\" in evt ? Math.round(evt[\"clientX\"] + d.scrollLeft) : null);\n let y = \"pageY\" in evt ? Math.round(evt.pageY) : (\"clientY\" in evt ? Math.round(evt[\"clientY\"] + d.scrollTop) : null);\n // In case of iframe, we adjust (x,y) to be relative to top parent's origin\n if (frame) {\n let distance = offset(frame);\n x = x ? x + Math.round(distance.x) : x;\n y = y ? y + Math.round(distance.y) : y;\n }\n\n // Check for null values before processing this event\n if (x !== null && y !== null) { handler({ time: time(evt), event, data: { target: target(evt), x, y } }); }\n}\n\nfunction touch(event: Event, root: Node, evt: TouchEvent): void {\n let frame = iframe(root);\n let d = frame && frame.contentDocument ? frame.contentDocument.documentElement : document.documentElement;\n let touches = evt.changedTouches;\n\n let t = time(evt);\n if (touches) {\n for (let i = 0; i < touches.length; i++) {\n let entry = touches[i];\n let x = \"clientX\" in entry ? Math.round(entry[\"clientX\"] + d.scrollLeft) : null;\n let y = \"clientY\" in entry ? Math.round(entry[\"clientY\"] + d.scrollTop) : null;\n x = x && frame ? x + Math.round(frame.offsetLeft) : x;\n y = y && frame ? y + Math.round(frame.offsetTop) : y;\n\n // We cannot rely on identifier to determine primary touch as its value doesn't always start with 0.\n // Safari/Webkit uses the address of the UITouch object as the identifier value for each touch point.\n const id = \"identifier\" in entry ? entry[\"identifier\"] : undefined;\n\n switch(event) {\n case Event.TouchStart:\n if (activeTouchPointIds.size === 0) {\n // Track presence of primary touch separately to handle scenarios when same id is repeated\n hasPrimaryTouch = true; \n primaryTouchId = id;\n }\n activeTouchPointIds.add(id);\n break;\n case Event.TouchEnd:\n case Event.TouchCancel:\n activeTouchPointIds.delete(id);\n break;\n }\n const isPrimary = hasPrimaryTouch && primaryTouchId === id;\n\n // Check for null values before processing this event\n if (x !== null && y !== null) { handler({ time: t, event, data: { target: target(evt), x, y, id, isPrimary } }); }\n\n // Reset primary touch point id once touch event ends\n if (event === Event.TouchCancel || event === Event.TouchEnd) {\n if (primaryTouchId === id) { hasPrimaryTouch = false; }\n }\n }\n }\n}\n\nfunction handler(current: PointerState): void {\n switch (current.event) {\n case Event.MouseMove:\n case Event.MouseWheel:\n case Event.TouchMove:\n let length = state.length;\n let last = length > 1 ? state[length - 2] : null;\n if (last && similar(last, current)) { state.pop(); }\n state.push(current);\n\n clearTimeout(timeout);\n timeout = setTimeout(process, Setting.LookAhead, current.event);\n break;\n default:\n state.push(current);\n process(current.event);\n break;\n }\n}\n\nfunction process(event: Event): void {\n schedule(encode.bind(this, event));\n}\n\nexport function reset(): void {\n state = [];\n}\n\nfunction similar(last: PointerState, current: PointerState): boolean {\n let dx = last.data.x - current.data.x;\n let dy = last.data.y - current.data.y;\n let distance = Math.sqrt(dx * dx + dy * dy);\n let gap = current.time - last.time;\n let match = current.data.target === last.data.target;\n let sameId = current.data.id !== undefined ? current.data.id === last.data.id : true;\n return current.event === last.event && match && distance < Setting.Distance && gap < Setting.PointerInterval && sameId;\n}\n\nexport function stop(): void {\n clearTimeout(timeout);\n // Send out any pending pointer events in the pipeline\n if (state.length > 0) { process(state[state.length - 1].event); }\n}\n","/**\n * Creates a throttled version of the provided function that only executes at most once\n * every specified duration in milliseconds, ensuring the last event is not lost.\n * @param func - The function to throttle.\n * @param duration - The duration in milliseconds to wait before allowing the next execution.\n * @returns A throttled version of the provided function with a cleanup method.\n */\nexport default function throttle<T extends (...args: any[]) => void>(func: T, duration: number): T & { cleanup: () => void } {\n let lastExecutionTime = 0;\n let timeoutId: ReturnType<typeof setTimeout> | null = null;\n let lastArgs: Parameters<T> | null = null;\n\n function throttledFunction(...args: Parameters<T>) {\n const now = performance.now();\n const timeSinceLastExecution = now - lastExecutionTime;\n\n // If the function is called during the throttling period, store the arguments to ensure we don't drop the last event\n if (lastExecutionTime !== 0 && timeSinceLastExecution < duration) {\n lastArgs = args;\n\n if (timeoutId) return;\n\n timeoutId = setTimeout(() => {\n lastExecutionTime = performance.now();\n func.apply(this, lastArgs!);\n lastArgs = null;\n timeoutId = null;\n }, duration - timeSinceLastExecution);\n } else {\n // Execute immediately if outside the throttling period (including the first run)\n lastExecutionTime = now;\n func.apply(this, args);\n }\n }\n\n // Add cleanup method to clear pending timeouts\n throttledFunction.cleanup = function () {\n if (timeoutId) {\n clearTimeout(timeoutId);\n timeoutId = null;\n lastArgs = null;\n }\n };\n\n return throttledFunction as T & { cleanup: () => void };\n}\n","import { Event } from \"@clarity-types/data\";\nimport { ResizeData, Setting } from \"@clarity-types/interaction\";\nimport { clearTimeout, setTimeout } from \"@src/core/timeout\";\nimport { bind } from \"@src/core/event\";\nimport throttle from \"@src/core/throttle\";\nimport encode from \"./encode\";\nimport { schedule } from \"@src/core/task\";\n\nexport let data: ResizeData;\nlet timeout: number = null;\nlet initialStateLogged = false;\n\nconst throttledRecompute = throttle(recompute, Setting.LookAhead);\n\nexport function start(): void {\n initialStateLogged = false;\n bind(window, \"resize\", throttledRecompute);\n recompute();\n}\n\nfunction recompute(): void {\n let de = document.documentElement;\n // window.innerWidth includes width of the scrollbar and is not a true representation of the viewport width.\n // Therefore, when possible, use documentElement's clientWidth property.\n data = {\n width: de && \"clientWidth\" in de ? Math.min(de.clientWidth, window.innerWidth) : window.innerWidth,\n height: de && \"clientHeight\" in de ? Math.min(de.clientHeight, window.innerHeight) : window.innerHeight,\n };\n if (initialStateLogged) {\n clearTimeout(timeout);\n timeout = setTimeout(process, Setting.LookAhead, Event.Resize);\n } else {\n encode(Event.Resize);\n initialStateLogged = true;\n }\n}\n\nfunction process(event: Event): void {\n schedule(encode.bind(this, event));\n}\n\nexport function reset(): void {\n data = null;\n clearTimeout(timeout);\n throttledRecompute.cleanup();\n}\n\nexport function stop(): void {\n reset();\n}\n","import { Constant, Dimension, Event } from \"@clarity-types/data\";\nimport { ScrollState, Setting } from \"@clarity-types/interaction\";\nimport { bind } from \"@src/core/event\";\nimport { schedule } from \"@src/core/task\";\nimport { time } from \"@src/core/time\";\nimport { clearTimeout, setTimeout } from \"@src/core/timeout\";\nimport throttle from \"@src/core/throttle\";\nimport { iframe } from \"@src/layout/dom\";\nimport { target, metadata } from \"@src/layout/target\";\nimport encode from \"./encode\";\nimport * as dimension from \"@src/data/dimension\";\n\nexport let state: ScrollState[] = [];\nlet initialTop: Node = null;\nlet initialBottom: Node = null;\nlet timeout: number = null;\n\nexport function start(): void {\n state = [];\n recompute();\n}\n\nexport function observe(root: Node): void {\n let frame = iframe(root);\n let node = frame ? frame.contentWindow : (root === document ? window : root);\n bind(node, \"scroll\", throttledRecompute, true);\n}\n\nfunction recompute(event: UIEvent = null): void {\n let w = window as Window;\n let de = document.documentElement;\n let element = event ? target(event) : de;\n\n // In some edge cases, it's possible for target to be null.\n // In those cases, we cannot proceed with scroll event instrumentation.\n if (!element) { return; }\n\n // If the target is a Document node, then identify corresponding documentElement and window for this document\n if (element && element.nodeType === Node.DOCUMENT_NODE) {\n let frame = iframe(element);\n w = frame ? frame.contentWindow : w;\n element = de = (element as Document).documentElement;\n }\n\n // Edge doesn't support scrollTop position on document.documentElement.\n // For cross browser compatibility, looking up pageYOffset on window if the scroll is on document.\n // And, if for some reason that is not available, fall back to looking up scrollTop on document.documentElement.\n let x = element === de && \"pageXOffset\" in w ? Math.round(w.pageXOffset) : Math.round((element as HTMLElement).scrollLeft);\n let y = element === de && \"pageYOffset\" in w ? Math.round(w.pageYOffset) : Math.round((element as HTMLElement).scrollTop);\n const width = window.innerWidth;\n const height = window.innerHeight;\n const xPosition = width / 3;\n const yOffset = width > height ? height * 0.15 : height * 0.2;\n const startYPosition = yOffset;\n const endYPosition = height - yOffset;\n const top = getPositionNode(xPosition, startYPosition);\n const bottom = getPositionNode(xPosition, endYPosition);\n\n let current: ScrollState = { time: time(event), event: Event.Scroll, data: {target: element, x, y, top, bottom} };\n\n // We don't send any scroll events if this is the first event and the current position is top (0,0)\n if ((event === null && x === 0 && y === 0) || (x === null || y === null)) {\n initialTop = top;\n initialBottom = bottom;\n return;\n }\n\n let length = state.length;\n let last = length > 1 ? state[length - 2] : null;\n if (last && similar(last, current)) { state.pop(); }\n state.push(current);\n\n clearTimeout(timeout);\n timeout = setTimeout(process, Setting.LookAhead, Event.Scroll);\n}\n\nconst throttledRecompute = throttle(recompute, Setting.Throttle);\n\nfunction getPositionNode(x: number, y: number): Node {\n let node: Node;\n if (\"caretPositionFromPoint\" in document) {\n node = (document as any).caretPositionFromPoint(x, y)?.offsetNode;\n } else if (\"caretRangeFromPoint\" in document) {\n node = (document as any).caretRangeFromPoint(x, y)?.startContainer;\n }\n if (!node) {\n node = document.elementFromPoint(x, y) as Node;\n }\n if (node && node.nodeType === Node.TEXT_NODE) {\n node = node.parentNode;\n }\n\n return node;\n}\n\nexport function reset(): void {\n state = [];\n initialTop = null;\n initialBottom = null;\n}\n\nfunction process(event: Event): void {\n schedule(encode.bind(this, event));\n}\n\nfunction similar(last: ScrollState, current: ScrollState): boolean {\n let dx = last.data.x - current.data.x;\n let dy = last.data.y - current.data.y;\n return (dx * dx + dy * dy < Setting.Distance * Setting.Distance) && (current.time - last.time < Setting.ScrollInterval);\n}\n\nexport function compute(): void {\n if (initialTop) {\n const top = metadata(initialTop, null);\n dimension.log(Dimension.InitialScrollTop, top?.hash?.join(Constant.Dot));\n }\n if (initialBottom) {\n const bottom = metadata(initialBottom, null);\n dimension.log(Dimension.InitialScrollBottom, bottom?.hash?.join(Constant.Dot));\n }\n}\n\nexport function stop(): void {\n clearTimeout(timeout);\n throttledRecompute.cleanup();\n state = [];\n initialTop = null;\n initialBottom = null;\n}\n","import { Event } from \"@clarity-types/data\";\nimport { SelectionData, Setting } from \"@clarity-types/interaction\";\nimport { bind } from \"@src/core/event\";\nimport { schedule } from \"@src/core/task\";\nimport { clearTimeout, setTimeout } from \"@src/core/timeout\";\nimport encode from \"./encode\";\n\nexport let data: SelectionData = null;\nlet previous: Selection = null;\nlet timeout: number = null;\n\nexport function start(): void {\n reset();\n}\n\nexport function observe(root: Node): void {\n bind(root, \"selectstart\", recompute.bind(this, root), true);\n bind(root, \"selectionchange\", recompute.bind(this, root), true);\n}\n\nfunction recompute(root: Node): void {\n let doc = root.nodeType === Node.DOCUMENT_NODE ? root as Document : document;\n let current = doc.getSelection();\n\n // Bail out if we don't have a valid selection\n if (current === null) { return; }\n\n // Bail out if we got a valid selection but not valid nodes\n // In Edge, selectionchange gets fired even on interactions like right clicks and\n // can result in null anchorNode and focusNode if there was no previous selection on page\n // Also, ignore any selections that start and end at the exact same point\n if ((current.anchorNode === null && current.focusNode === null) ||\n (current.anchorNode === current.focusNode && current.anchorOffset === current.focusOffset)) {\n return;\n }\n let startNode = data.start ? data.start : null;\n if (previous !== null && data.start !== null && startNode !== current.anchorNode) {\n clearTimeout(timeout);\n process(Event.Selection);\n }\n\n data = {\n start: current.anchorNode,\n startOffset: current.anchorOffset,\n end: current.focusNode,\n endOffset: current.focusOffset\n };\n previous = current;\n\n clearTimeout(timeout);\n timeout = setTimeout(process, Setting.LookAhead, Event.Selection);\n}\n\nfunction process(event: Event): void {\n schedule(encode.bind(this, event));\n}\n\nexport function reset(): void {\n previous = null;\n data = { start: 0, startOffset: 0, end: 0, endOffset: 0 };\n}\n\nexport function stop(): void {\n reset();\n clearTimeout(timeout);\n}\n","import { Event } from \"@clarity-types/data\";\nimport { SubmitState } from \"@clarity-types/interaction\";\nimport { bind } from \"@src/core/event\";\nimport { schedule } from \"@src/core/task\";\nimport { time } from \"@src/core/time\";\nimport encode from \"./encode\";\nimport { target } from \"@src/layout/target\";\n\nexport let state: SubmitState[] = [];\n\nexport function start(): void {\n reset();\n}\n\nexport function observe(root: Node): void {\n bind(root, \"submit\", recompute, true);\n}\n\nfunction recompute(evt: UIEvent): void {\n state.push({ time: time(evt), event: Event.Submit, data: { target: target(evt) } });\n schedule(encode.bind(this, Event.Submit));\n}\n\nexport function reset(): void {\n state = [];\n}\n\nexport function stop(): void {\n reset();\n}\n","import { BooleanFlag, Event } from \"@clarity-types/data\";\nimport { UnloadData } from \"@clarity-types/interaction\";\nimport * as clarity from \"@src/clarity\";\nimport { bind } from \"@src/core/event\";\nimport { time } from \"@src/core/time\";\nimport encode from \"./encode\";\n\nexport let data: UnloadData;\n\nexport function start(): void {\n bind(window, \"pagehide\", recompute);\n}\n\nfunction recompute(evt: PageTransitionEvent): void {\n data = { name: evt.type, persisted: evt.persisted ? BooleanFlag.True : BooleanFlag.False };\n encode(Event.Unload, time(evt));\n clarity.stop();\n}\n\nexport function reset(): void {\n data = null;\n}\n\nexport function stop(): void {\n reset();\n}\n","import { BooleanFlag, Event } from \"@clarity-types/data\";\nimport { VisibilityData } from \"@clarity-types/interaction\";\nimport { bind } from \"@src/core/event\";\nimport { time } from \"@src/core/time\";\nimport encode from \"./encode\";\n\nexport let data: VisibilityData;\n\nexport function start(): void {\n bind(document, \"visibilitychange\", recompute);\n recompute();\n}\n\nfunction recompute(evt: UIEvent = null): void {\n if (\"visibilityState\" in document) {\n const visible = document.visibilityState === \"visible\" ? BooleanFlag.True : BooleanFlag.False;\n data = { visible };\n encode(Event.Visibility, time(evt));\n }\n}\n\nexport function reset(): void {\n data = null;\n}\n\nexport function stop(): void {\n reset();\n}","import { BooleanFlag, Event } from \"@clarity-types/data\";\r\nimport { FocusData } from \"@clarity-types/interaction\";\r\nimport { bind } from \"@src/core/event\";\r\nimport encode from \"./encode\";\r\n\r\nexport let data: FocusData;\r\n\r\nexport function start(): void {\r\n bind(window, \"focus\", () => compute(BooleanFlag.True));\r\n bind(window, \"blur\", () => compute(BooleanFlag.False));\r\n}\r\n\r\nexport function stop(): void {\r\n reset();\r\n}\r\n\r\nexport function reset(): void {\r\n data = null;\r\n}\r\n\r\nfunction compute(focus: BooleanFlag): void {\r\n data = { focused: focus };\r\n\r\n encode(Event.Focus);\r\n}\r\n","import * as change from \"@src/interaction/change\";\nimport * as click from \"@src/interaction/click\";\nimport * as clipboard from \"@src/interaction/clipboard\";\nimport * as input from \"@src/interaction/input\";\nimport * as pointer from \"@src/interaction/pointer\";\nimport * as resize from \"@src/interaction/resize\";\nimport * as scroll from \"@src/interaction/scroll\";\nimport * as selection from \"@src/interaction/selection\";\nimport * as submit from \"@src/interaction/submit\";\nimport * as timeline from \"@src/interaction/timeline\";\nimport * as unload from \"@src/interaction/unload\";\nimport * as visibility from \"@src/interaction/visibility\";\nimport * as focus from \"@src/interaction/focus\";\n\nexport function start(): void {\n timeline.start();\n click.start();\n clipboard.start();\n pointer.start();\n input.start();\n resize.start();\n visibility.start();\n focus.start();\n scroll.start();\n selection.start();\n change.start();\n submit.start();\n unload.start();\n}\n\nexport function stop(): void {\n timeline.stop();\n click.stop();\n clipboard.stop();\n pointer.stop();\n input.stop();\n resize.stop();\n visibility.stop();\n focus.stop();\n scroll.stop();\n selection.stop();\n change.stop();\n submit.stop();\n unload.stop()\n}\n\nexport function observe(root: Node): void {\n scroll.observe(root);\n // Only monitor following interactions if the root node is a document\n // In case of shadow DOM, following events automatically bubble up to the parent document.\n if (root.nodeType === Node.DOCUMENT_NODE) {\n click.observe(root);\n clipboard.observe(root);\n pointer.observe(root);\n input.observe(root);\n selection.observe(root);\n change.observe(root);\n submit.observe(root);\n }\n}\n","import {Constant, Token} from \"@clarity-types/data\";\n\n// Following code takes an array of tokens and transforms it to optimize for repeating tokens and make it efficient to send over the wire\n// The way it works is that it iterate over all tokens and checks if the current token was already seen in the tokens array so far\n// If so, it replaces the token with its reference (index). This helps us save bytes by not repeating the same value twice.\n// E.g. If tokens array is: [\"hello\", \"world\", \"coding\", \"language\", \"world\", \"language\", \"example\"]\n// Then the resulting tokens array after following code execution would be: [\"hello\", \"world\", \"coding\", \"language\", [1, 3], \"example\"]\n// Where [1,3] points to tokens[1] => \"world\" and tokens[3] => \"language\"\nexport default function(tokens: Token[]): Token[] {\n let output: Token[] = [];\n let lookup: {[key: string]: number} = {};\n let pointer = 0;\n let reference = null;\n for (let i = 0; i < tokens.length; i++) {\n // Only optimize for string values\n if (typeof tokens[i] === Constant.String) {\n let token = tokens[i] as string;\n let index = lookup[token] || -1;\n if (index >= 0) {\n if (reference) { reference.push(index); } else {\n reference = [index];\n output.push(reference);\n pointer++;\n }\n } else {\n reference = null;\n output.push(token);\n lookup[token] = pointer++;\n }\n } else {\n // If the value is anything other than string, append it as it is to the output array\n // And, also increment the pointer to stay in sync with output array\n reference = null;\n output.push(tokens[i]);\n pointer++;\n }\n }\n return output;\n}\n","import { Event } from \"@clarity-types/data\";\nimport { StyleSheetOperation, StyleSheetState } from \"@clarity-types/layout\";\nimport { time } from \"@src/core/time\";\nimport { shortid } from \"@src/data/metadata\";\nimport encode from \"@src/layout/encode\";\nimport { getId } from \"@src/layout/dom\";\nimport * as core from \"@src/core\";\nimport config from \"@src/core/config\";\nimport { getCssRules } from \"./node\";\n\nexport let sheetUpdateState: StyleSheetState[] = [];\nexport let sheetAdoptionState: StyleSheetState[] = [];\nconst styleSheetId = 'claritySheetId';\nlet styleSheetMap = {};\nlet styleTimeMap: {[key: string]: number} = {};\nlet documentNodes = [];\nlet createdSheetIds = [];\n\nfunction proxyStyleRules(win: any) {\n if ((config.lean && config.lite) || win === null || win === undefined) {\n return;\n }\n \n win.clarityOverrides = win.clarityOverrides || {};\n\n if (win['CSSStyleSheet'] && win.CSSStyleSheet.prototype) {\n if (win.clarityOverrides.replace === undefined) { \n win.clarityOverrides.replace = win.CSSStyleSheet.prototype.replace; \n win.CSSStyleSheet.prototype.replace = function(): Promise<CSSStyleSheet> {\n if (core.active()) {\n // if we haven't seen this stylesheet on this page yet, wait until the checkDocumentStyles has found it\n // and attached the sheet to a document. This way the timestamp of the style sheet creation will align\n // to when it is used in the document rather than potentially being misaligned during the traverse process.\n if (createdSheetIds.indexOf(this[styleSheetId]) > -1) {\n trackStyleChange(time(), this[styleSheetId], StyleSheetOperation.Replace, arguments[0]);\n }\n }\n return win.clarityOverrides.replace.apply(this, arguments);\n };\n }\n\n if (win.clarityOverrides.replaceSync === undefined) { \n win.clarityOverrides.replaceSync = win.CSSStyleSheet.prototype.replaceSync; \n win.CSSStyleSheet.prototype.replaceSync = function(): void {\n if (core.active()) {\n // if we haven't seen this stylesheet on this page yet, wait until the checkDocumentStyles has found it\n // and attached the sheet to a document. This way the timestamp of the style sheet creation will align\n // to when it is used in the document rather than potentially being misaligned during the traverse process.\n if (createdSheetIds.indexOf(this[styleSheetId]) > -1) {\n trackStyleChange(time(), this[styleSheetId], StyleSheetOperation.ReplaceSync, arguments[0]);\n } \n }\n return win.clarityOverrides.replaceSync.apply(this, arguments);\n };\n }\n } \n}\n\nexport function start(): void {\n proxyStyleRules(window);\n}\n\nexport function checkDocumentStyles(documentNode: Document, timestamp: number): void {\n if (config.lean && config.lite) { return; }\n\n if (documentNodes.indexOf(documentNode) === -1) {\n documentNodes.push(documentNode);\n if (documentNode.defaultView) {\n proxyStyleRules(documentNode.defaultView);\n }\n }\n timestamp = timestamp || time();\n if (!documentNode?.adoptedStyleSheets) {\n // if we don't have adoptedStyledSheets on the Node passed to us, we can short circuit.\n return;\n }\n let currentStyleSheets: string[] = [];\n for (var styleSheet of documentNode.adoptedStyleSheets) {\n // If we haven't seen this style sheet on this page yet, we create a reference to it for the visualizer.\n // For SPA or times in which Clarity restarts on a given page, our visualizer would lose context\n // on the previously created style sheet for page N-1.\n // Then we synthetically call replaceSync with its contents to bootstrap it\n if (!styleSheet[styleSheetId] || createdSheetIds.indexOf(styleSheet[styleSheetId]) === -1) {\n styleSheet[styleSheetId] = shortid();\n createdSheetIds.push(styleSheet[styleSheetId]);\n trackStyleChange(timestamp, styleSheet[styleSheetId], StyleSheetOperation.Create);\n trackStyleChange(timestamp, styleSheet[styleSheetId], StyleSheetOperation.ReplaceSync, getCssRules(styleSheet));\n }\n\n currentStyleSheets.push(styleSheet[styleSheetId]);\n }\n\n let documentId = getId(documentNode, true);\n if (!styleSheetMap[documentId]) {\n styleSheetMap[documentId] = [];\n }\n if (!arraysEqual(currentStyleSheets, styleSheetMap[documentId])) {\n // Using -1 to signify the root document node as we don't track that as part of our nodeMap\n trackStyleAdoption(timestamp, documentNode == document ? -1 : getId(documentNode), StyleSheetOperation.SetAdoptedStyles, currentStyleSheets);\n styleSheetMap[documentId] = currentStyleSheets;\n styleTimeMap[documentId] = timestamp;\n }\n}\n\nexport function compute(): void {\n for (var documentNode of documentNodes) {\n var docId = documentNode == document ? -1 : getId(documentNode);\n let ts = docId in styleTimeMap ? styleTimeMap[docId] : null;\n checkDocumentStyles(documentNode, ts);\n }\n}\n\nexport function reset(): void {\n sheetAdoptionState = [];\n sheetUpdateState = [];\n}\n\nexport function stop(): void {\n styleSheetMap = {};\n styleTimeMap = {};\n documentNodes = [];\n createdSheetIds = [];\n reset();\n}\n\nfunction trackStyleChange(time: number, id: string, operation: StyleSheetOperation, cssRules?: string): void {\n sheetUpdateState.push({\n time,\n event: Event.StyleSheetUpdate,\n data: {\n id,\n operation,\n cssRules\n }\n });\n\n encode(Event.StyleSheetUpdate);\n}\n\nfunction trackStyleAdoption(time: number, id: number, operation: StyleSheetOperation, newIds: string[]): void {\n sheetAdoptionState.push({\n time,\n event: Event.StyleSheetAdoption,\n data: {\n id,\n operation,\n newIds\n }\n });\n\n encode(Event.StyleSheetAdoption);\n}\n\nfunction arraysEqual(a: string[], b: string[]): boolean {\n if (a.length !== b.length) {\n return false;\n }\n\n return a.every((value, index) => value === b[index]);\n}","import { Event } from \"@clarity-types/data\";\nimport { AnimationOperation, AnimationState } from \"@clarity-types/layout\";\nimport { time } from \"@src/core/time\";\nimport { shortid } from \"@src/data/metadata\";\nimport encode from \"@src/layout/encode\";\nimport { getId } from \"@src/layout/dom\";\nimport * as core from \"@src/core\";\n\nexport let state: AnimationState[] = [];\nlet elementAnimate: (keyframes: Keyframe[] | PropertyIndexedKeyframes, options?: number | KeyframeAnimationOptions) => Animation = null;\nlet animationPlay: () => void = null;\nlet animationPause: () => void = null;\nlet animationCommitStyles: () => void = null;\nlet animationCancel: () => void = null;\nlet animationFinish: () => void = null;\nconst animationId = 'clarityAnimationId';\nconst operationCount = 'clarityOperationCount';\nconst maxOperations = 20;\n\nexport function start(): void {\n if (\n window[\"Animation\"] && \n window[\"Animation\"].prototype && \n window[\"KeyframeEffect\"] && \n window[\"KeyframeEffect\"].prototype && \n window[\"KeyframeEffect\"].prototype.getKeyframes &&\n window[\"KeyframeEffect\"].prototype.getTiming\n ) {\n reset();\n overrideAnimationHelper(animationPlay, \"play\");\n overrideAnimationHelper(animationPause, \"pause\");\n overrideAnimationHelper(animationCommitStyles, \"commitStyles\");\n overrideAnimationHelper(animationCancel, \"cancel\");\n overrideAnimationHelper(animationFinish, \"finish\");\n if (elementAnimate === null) {\n elementAnimate = Element.prototype.animate;\n Element.prototype.animate = function(): Animation {\n var createdAnimation = elementAnimate.apply(this, arguments);\n trackAnimationOperation(createdAnimation, \"play\");\n return createdAnimation;\n }\n }\n if (document.getAnimations) {\n for (var animation of document.getAnimations()) {\n if (animation.playState === \"finished\") {\n trackAnimationOperation(animation, \"finish\");\n }\n else if (animation.playState === \"paused\" || animation.playState === \"idle\") {\n trackAnimationOperation(animation, \"pause\");\n }\n else if (animation.playState === \"running\") {\n trackAnimationOperation(animation, \"play\");\n }\n }\n }\n } \n}\n\nexport function reset(): void {\n state = [];\n}\n\nfunction track(time: number, id: string, operation: AnimationOperation, keyFrames?: string, timing?: string, targetId?: number, timeline?: string): void {\n state.push({\n time,\n event: Event.Animation,\n data: {\n id,\n operation,\n keyFrames,\n timing,\n targetId,\n timeline\n }\n });\n\n encode(Event.Animation);\n}\n\nexport function stop(): void {\n reset();\n}\n\nfunction overrideAnimationHelper(functionToOverride: () => void, name: string) {\n if (functionToOverride === null) {\n functionToOverride = Animation.prototype[name];\n Animation.prototype[name] = function(): void {\n trackAnimationOperation(this, name);\n return functionToOverride.apply(this, arguments);\n }\n }\n }\n\nfunction trackAnimationOperation(animation: Animation, name: string) {\n if (core.active()) {\n let effect = <KeyframeEffect>animation.effect;\n let target = effect?.target ? getId(effect.target) : null;\n if (target !== null && effect.getKeyframes && effect.getTiming) {\n if (!animation[animationId]) {\n animation[animationId] = shortid();\n animation[operationCount] = 0;\n \n let keyframes = effect.getKeyframes();\n let timing = effect.getTiming();\n track(time(), animation[animationId], AnimationOperation.Create, JSON.stringify(keyframes), JSON.stringify(timing), target);\n }\n\n if (animation[operationCount]++ < maxOperations) {\n let operation: AnimationOperation = null;\n switch (name) {\n case \"play\":\n operation = AnimationOperation.Play;\n break;\n case \"pause\":\n operation = AnimationOperation.Pause;\n break;\n case \"cancel\":\n operation = AnimationOperation.Cancel;\n break;\n case \"finish\":\n operation = AnimationOperation.Finish;\n break;\n case \"commitStyles\":\n operation = AnimationOperation.CommitStyles;\n break;\n }\n if (operation) {\n track(time(), animation[animationId], operation);\n }\n }\n } \n }\n}\n","import { Event } from \"@clarity-types/data\";\nimport { active } from \"@src/core\";\nimport { schedule } from \"@src/core/task\";\nimport encode from \"@src/layout/encode\";\n\nexport const elements: string[] = [];\n\nconst definedElements = new Set<string>();\nfunction register(tag: string) {\n if (!definedElements.has(tag)) {\n definedElements.add(tag);\n elements.push(tag);\n schedule(encode.bind(this, Event.CustomElement));\n }\n}\n\nexport function check(tag: string) {\n if (window.customElements?.get && window.customElements.get(tag)) {\n register(tag);\n }\n}\n\nexport function start() {\n window.clarityOverrides = window.clarityOverrides || {};\n if (window.customElements?.define && !window.clarityOverrides.define) {\n window.clarityOverrides.define = window.customElements.define;\n window.customElements.define = function () {\n if (active()) {\n register(arguments[0]);\n }\n return window.clarityOverrides.define.apply(this, arguments);\n };\n }\n}\n\nexport function reset() {\n elements.length = 0;\n}\n\nexport function stop() {\n reset();\n definedElements.clear();\n}","import { Privacy, Task, Timer } from \"@clarity-types/core\";\nimport { Event, Setting, Token } from \"@clarity-types/data\";\nimport { Constant, NodeInfo, NodeValue } from \"@clarity-types/layout\";\nimport config from \"@src/core/config\";\nimport * as scrub from \"@src/core/scrub\";\nimport * as task from \"@src/core/task\";\nimport { time } from \"@src/core/time\";\nimport tokenize from \"@src/data/token\";\nimport * as baseline from \"@src/data/baseline\";\nimport { queue } from \"@src/data/upload\";\nimport * as fraud from \"@src/diagnostic/fraud\";\nimport * as doc from \"@src/layout/document\";\nimport * as dom from \"@src/layout/dom\";\nimport * as region from \"@src/layout/region\";\nimport * as style from \"@src/layout/style\";\nimport * as animation from \"@src/layout/animation\";\nimport * as custom from \"@src/layout/custom\";\n\nexport default async function (type: Event, timer: Timer = null, ts: number = null): Promise<void> {\n let eventTime = ts || time()\n let tokens: Token[] = [eventTime, type];\n switch (type) {\n case Event.Document:\n let d = doc.data;\n tokens.push(d.width);\n tokens.push(d.height);\n baseline.track(type, d.width, d.height);\n queue(tokens);\n break;\n case Event.Region:\n for (let r of region.state) {\n tokens = [r.time, Event.Region];\n tokens.push(r.data.id);\n tokens.push(r.data.interaction);\n tokens.push(r.data.visibility);\n tokens.push(r.data.name);\n queue(tokens, false);\n }\n region.reset();\n break;\n case Event.StyleSheetAdoption:\n case Event.StyleSheetUpdate:\n for (let entry of style.sheetAdoptionState) {\n tokens = [entry.time, entry.event];\n tokens.push(entry.data.id);\n tokens.push(entry.data.operation);\n tokens.push(entry.data.newIds);\n queue(tokens);\n }\n for (let entry of style.sheetUpdateState) {\n tokens = [entry.time, entry.event];\n tokens.push(entry.data.id);\n tokens.push(entry.data.operation);\n tokens.push(entry.data.cssRules);\n queue(tokens, false);\n }\n style.reset();\n break;\n case Event.Animation:\n for (let entry of animation.state) {\n tokens = [entry.time, entry.event];\n tokens.push(entry.data.id);\n tokens.push(entry.data.operation);\n tokens.push(entry.data.keyFrames);\n tokens.push(entry.data.timing);\n tokens.push(entry.data.timeline);\n tokens.push(entry.data.targetId);\n queue(tokens);\n }\n animation.reset();\n break;\n case Event.Discover:\n case Event.Mutation:\n // Check if we are operating within the context of the current page\n if (task.state(timer) === Task.Stop) { break; }\n let values = dom.updates();\n // Only encode and queue DOM updates if we have valid updates to report back\n if (values.length > 0) {\n for (let value of values) {\n let state = task.state(timer);\n if (state === Task.Wait) { state = await task.suspend(timer); }\n if (state === Task.Stop) { break; }\n let data: NodeInfo = value.data;\n let active = value.metadata.active;\n let suspend = value.metadata.suspend;\n let privacy = value.metadata.privacy;\n let mangle = shouldMangle(value);\n let keys = active ? [\"tag\", \"attributes\", \"value\"] : [\"tag\"];\n for (let key of keys) {\n // we check for data[key] === '' because we want to encode empty strings as well, especially for value - which if skipped can cause our decoder to assume the final\n // attribute was the value for the node\n if (data[key] || data[key] === '') {\n switch (key) {\n case \"tag\":\n let box = size(value);\n let factor = mangle ? -1 : 1;\n tokens.push(value.id * factor);\n if (value.parent && active) { \n tokens.push(value.parent); \n if (value.previous) { tokens.push(value.previous); }\n }\n tokens.push(suspend ? Constant.SuspendMutationTag : data[key]);\n if (box && box.length === 2) { tokens.push(`${Constant.Hash}${str(box[0])}.${str(box[1])}`); }\n break;\n case \"attributes\":\n for (let attr in data[key]) {\n if (data[key][attr] !== undefined) {\n tokens.push(attribute(attr, data[key][attr], privacy));\n }\n }\n break;\n case \"value\":\n fraud.check(value.metadata.fraud, value.id, data[key]);\n tokens.push(scrub.text(data[key], data.tag, privacy, mangle));\n break;\n }\n }\n }\n }\n if (type === Event.Mutation) { baseline.activity(eventTime); }\n queue(tokenize(tokens), !config.lean);\n }\n break;\n case Event.CustomElement:\n for (let element of custom.elements) {\n queue([eventTime, Event.CustomElement, element]);\n }\n custom.reset();\n break;\n }\n}\n\nfunction shouldMangle(value: NodeValue): boolean {\n let privacy = value.metadata.privacy;\n return value.data.tag === Constant.TextTag && !(privacy === Privacy.None || privacy === Privacy.Sensitive);\n}\n\nfunction size(value: NodeValue): number[] {\n if (value.metadata.size !== null && value.metadata.size.length === 0) {\n let img = dom.getNode(value.id) as HTMLImageElement;\n if (img) {\n return [Math.floor(img.offsetWidth * Setting.BoxPrecision), Math.floor(img.offsetHeight * Setting.BoxPrecision)];\n }\n }\n return value.metadata.size;\n}\n\nfunction str(input: number): string {\n return input.toString(36);\n}\n\nfunction attribute(key: string, value: string, privacy: Privacy): string {\n return `${key}=${scrub.text(value, key.indexOf(Constant.DataAttribute) === 0 ? Constant.DataAttribute : key, privacy)}`;\n}\n","import { Event } from \"@clarity-types/data\";\nimport { DocumentData } from \"@clarity-types/layout\";\nimport encode from \"@src/layout/encode\";\n\nexport let data: DocumentData;\n\nexport function reset(): void {\n data = null;\n}\n\nexport function start(): void {\n reset();\n compute();\n}\n\nexport function compute(): void {\n let body = document.body;\n let d = document.documentElement;\n let bodyClientWidth = body ? body.clientWidth : null;\n let bodyScrollWidth = body ? body.scrollWidth : null;\n let bodyOffsetWidth = body ? body.offsetWidth : null;\n let documentClientWidth = d ? d.clientWidth : null;\n let documentScrollWidth = d ? d.scrollWidth : null;\n let documentOffsetWidth = d ? d.offsetWidth : null;\n let width = Math.max(bodyClientWidth, bodyScrollWidth, bodyOffsetWidth,\n documentClientWidth, documentScrollWidth, documentOffsetWidth);\n\n let bodyClientHeight = body ? body.clientHeight : null;\n let bodyScrollHeight = body ? body.scrollHeight : null;\n let bodyOffsetHeight = body ? body.offsetHeight : null;\n let documentClientHeight = d ? d.clientHeight : null;\n let documentScrollHeight = d ? d.scrollHeight : null;\n let documentOffsetHeight = d ? d.offsetHeight : null;\n let height = Math.max(bodyClientHeight, bodyScrollHeight, bodyOffsetHeight,\n documentClientHeight, documentScrollHeight, documentOffsetHeight);\n\n // Check that width or height has changed from before, and also that width & height are not null values\n if ((data === null || width !== data.width || height !== data.height) && width !== null && height !== null) {\n data = { width, height };\n encode(Event.Document);\n }\n}\n\nexport function stop(): void {\n reset();\n}\n","import { Task, Timer } from \"@clarity-types/core\";\nimport { Source } from \"@clarity-types/layout\";\nimport * as task from \"@src/core/task\";\nimport node from \"@src/layout/node\";\n\nexport default async function(root: Node, timer: Timer, source: Source, timestamp: number): Promise<void> {\n let queue = [root];\n while (queue.length > 0) {\n let entry = queue.shift();\n let next = entry.firstChild;\n\n while (next) {\n queue.push(next);\n next = next.nextSibling;\n }\n \n // Check the status of current task to see if we should yield before continuing\n let state = task.state(timer);\n if (state === Task.Wait) { state = await task.suspend(timer); }\n if (state === Task.Stop) { break; }\n\n // Check if processing a node gives us a pointer to one of its sub nodes for traversal\n // E.g. an element node may give us a pointer to traverse shadowDom if shadowRoot property is set\n // Or, an iframe from the same origin could give a pointer to it's document for traversing contents of iframe.\n let subnode = node(entry, source, timestamp);\n if (subnode) { queue.push(subnode); }\n }\n}","import { Priority, Task, Timer } from \"@clarity-types/core\";\nimport { Code, Event, Metric, Severity } from \"@clarity-types/data\";\nimport { Constant, MutationHistory, MutationRecordWithTime, MutationQueue, Setting, Source } from \"@clarity-types/layout\";\nimport api from \"@src/core/api\";\nimport * as core from \"@src/core\";\nimport * as event from \"@src/core/event\";\nimport measure from \"@src/core/measure\";\nimport * as task from \"@src/core/task\";\nimport { time } from \"@src/core/time\";\nimport { clearTimeout, setTimeout } from \"@src/core/timeout\";\nimport { id } from \"@src/data/metadata\";\nimport * as summary from \"@src/data/summary\";\nimport * as internal from \"@src/diagnostic/internal\";\nimport * as doc from \"@src/layout/document\";\nimport * as dom from \"@src/layout/dom\";\nimport * as metric from \"@src/data/metric\";\nimport encode from \"@src/layout/encode\";\nimport * as region from \"@src/layout/region\";\nimport traverse from \"@src/layout/traverse\";\nimport processNode from \"./node\";\nimport config from \"@src/core/config\";\n\nlet observers: Set<MutationObserver> = new Set();\nlet mutations: MutationQueue[] = [];\nlet throttledMutations: { [key: number]: MutationRecordWithTime } = {};\nlet queue: Node[] = [];\nlet timeout: number = null;\nlet throttleDelay: number = null;\nlet activePeriod = null;\nlet history: MutationHistory = {};\nlet observedNodes: WeakMap<Node, MutationObserver> = new WeakMap<Node, MutationObserver>();\n\n// We ignore mutations if these attributes are updated\nconst IGNORED_ATTRIBUTES = [\"data-google-query-id\", \"data-load-complete\", \"data-google-container-id\"];\n\nexport function start(): void {\n observers = new Set();\n queue = [];\n timeout = null;\n activePeriod = 0;\n history = {};\n observedNodes = new WeakMap<Node, MutationObserver>();\n proxyStyleRules(window);\n}\n\nexport function observe(node: Document | ShadowRoot): void {\n // Create a new observer for every time a new DOM tree (e.g. root document or shadowdom root) is discovered on the page\n // In the case of shadow dom, any mutations that happen within the shadow dom are not bubbled up to the host document\n // For this reason, we need to wire up mutations every time we see a new shadow dom.\n // Also, wrap it inside a try / catch. In certain browsers (e.g. legacy Edge), observer on shadow dom can throw errors\n try {\n\n let m = api(Constant.MutationObserver);\n let observer = m in window ? new window[m](measure(handle) as MutationCallback) : null;\n if (observer) {\n observer.observe(node, { attributes: true, childList: true, characterData: true, subtree: true });\n observedNodes.set(node, observer);\n observers.add(observer);\n }\n if (node['defaultView']) {\n proxyStyleRules(node['defaultView']);\n }\n \n } catch (e) {\n internal.log(Code.MutationObserver, Severity.Info, e ? e.name : null);\n }\n}\n\nexport function monitor(frame: HTMLIFrameElement): void {\n // Bind to iframe's onload event so we get notified anytime there's an update to iframe content.\n // This includes cases where iframe location is updated without explicitly updating src attribute\n // E.g. iframe.contentWindow.location.href = \"new-location\";\n if (dom.has(frame) === false) {\n event.bind(frame, Constant.LoadEvent, generate.bind(this, frame, Constant.ChildList), true);\n }\n}\n\nexport function stop(): void {\n for (let observer of Array.from(observers)) {\n if (observer) {\n observer.disconnect();\n }\n }\n observers = new Set();\n history = {};\n mutations = [];\n throttledMutations = {};\n queue = [];\n activePeriod = 0;\n timeout = null;\n observedNodes = new WeakMap();\n}\n\nexport function active(): void {\n activePeriod = time() + Setting.MutationActivePeriod;\n}\n\nexport function disconnect(n: Node): void {\n const ob = observedNodes.get(n);\n if (ob) {\n ob.disconnect();\n observers.delete(ob);\n observedNodes.delete(n);\n }\n}\n\nfunction handle(m: MutationRecord[]): void {\n // Queue up mutation records for asynchronous processing\n let now = time();\n summary.track(Event.Mutation, now);\n mutations.push({ time: now, mutations: m });\n task.schedule(process, Priority.High).then((): void => {\n setTimeout(doc.compute);\n measure(region.compute)();\n });\n}\n\nasync function processMutation(timer: Timer, mutation: MutationRecord, instance: number, timestamp: number): Promise<void> {\n let state = task.state(timer);\n\n if (state === Task.Wait) {\n state = await task.suspend(timer);\n }\n if (state === Task.Stop) {\n return;\n }\n\n let target = mutation.target;\n let type = config.throttleDom ? track(mutation, timer, instance, timestamp) : mutation.type;\n\n if (type && target && target.ownerDocument) {\n dom.parse(target.ownerDocument);\n }\n\n if (type && target && target.nodeType == Node.DOCUMENT_FRAGMENT_NODE && (target as ShadowRoot).host) {\n dom.parse(target as ShadowRoot);\n }\n\n switch (type) {\n case Constant.Attributes:\n if (IGNORED_ATTRIBUTES.indexOf(mutation.attributeName) < 0) {\n processNode(target, Source.Attributes, timestamp);\n }\n break;\n case Constant.CharacterData:\n processNode(target, Source.CharacterData, timestamp);\n break;\n case Constant.ChildList:\n processNodeList(mutation.addedNodes, Source.ChildListAdd, timer, timestamp);\n processNodeList(mutation.removedNodes, Source.ChildListRemove, timer, timestamp);\n break;\n case Constant.Throttle:\n default:\n break;\n }\n}\nasync function process(): Promise<void> {\n let timer: Timer = { id: id(), cost: Metric.LayoutCost };\n task.start(timer);\n while (mutations.length > 0) {\n let record = mutations.shift();\n let instance = time();\n for (let mutation of record.mutations) {\n await processMutation(timer, mutation, instance, record.time);\n }\n await encode(Event.Mutation, timer, record.time);\n }\n\n let processedMutations = false;\n for (var key of Object.keys(throttledMutations)) {\n let throttledMutationToProcess: MutationRecordWithTime = throttledMutations[key];\n delete throttledMutations[key];\n await processMutation(timer, throttledMutationToProcess.mutation, time(), throttledMutationToProcess.timestamp);\n processedMutations = true;\n }\n\n if (Object.keys(throttledMutations).length > 0) {\n processThrottledMutations();\n }\n\n // ensure we encode the previously throttled mutations once we have finished them\n if (Object.keys(throttledMutations).length === 0 && processedMutations) {\n await encode(Event.Mutation, timer, time());\n }\n\n cleanHistory();\n\n task.stop(timer);\n}\n\nfunction cleanHistory(): void {\n let now = time();\n if (Object.keys(history).length > Setting.MaxMutationHistoryCount) {\n history = {};\n metric.count(Metric.HistoryClear);\n }\n\n for (let key of Object.keys(history)) {\n let h = history[key];\n if (now > h[1] + Setting.MaxMutationHistoryTime) {\n delete history[key];\n }\n }\n}\n\nfunction track(m: MutationRecord, timer: Timer, instance: number, timestamp: number): string {\n let value = m.target ? dom.get(m.target.parentNode) : null;\n\n // Check if the parent is already discovered and that the parent is not the document root\n if (value && value.data.tag !== Constant.HTML) {\n // calculate inactive period based on the timestamp of the mutation not when the mutation is processed\n let inactive = timestamp > activePeriod;\n\n // Calculate critical period based on when mutation is processed\n let target = dom.get(m.target);\n let element = target && target.selector ? target.selector.join() : m.target.nodeName;\n let parent = value.selector ? value.selector.join() : Constant.Empty;\n\n // We use selector, instead of id, to determine the key (signature for the mutation) because in some cases\n // repeated mutations can cause elements to be destroyed and then recreated as new DOM nodes\n // In those cases, IDs will change however the selector (which is relative to DOM xPath) remains the same\n let key = [parent, element, m.attributeName, names(m.addedNodes), names(m.removedNodes)].join();\n\n // Initialize an entry if it doesn't already exist\n history[key] = key in history ? history[key] : [0, instance];\n let h = history[key];\n\n // Lookup any pending nodes queued up for removal, and process them now if we suspended a mutation before\n if (inactive === false && h[0] >= Setting.MutationSuspendThreshold) {\n processNodeList(h[2], Source.ChildListRemove, timer, timestamp);\n }\n\n // Update the counter, do not reset counter if its critical period\n h[0] = inactive ? (h[1] === instance ? h[0] : h[0] + 1) : 1;\n h[1] = instance;\n\n // Return updated mutation type based on,\n // 1. if we have already hit the threshold or not\n // 2. if its a low priority mutation happening during critical time period\n if (h[0] >= Setting.MutationSuspendThreshold) {\n // Store a reference to removedNodes so we can process them later\n // when we resume mutations again on user interactions\n h[2] = m.removedNodes;\n if (instance > timestamp + Setting.MutationActivePeriod) {\n return m.type;\n }\n\n // we only store the most recent mutation for a given key if it is being throttled\n throttledMutations[key] = { mutation: m, timestamp };\n\n return Constant.Throttle;\n }\n }\n return m.type;\n}\n\nfunction names(nodes: NodeList): string {\n let output: string[] = [];\n for (let i = 0; nodes && i < nodes.length; i++) {\n output.push(nodes[i].nodeName);\n }\n return output.join();\n}\n\nasync function processNodeList(list: NodeList, source: Source, timer: Timer, timestamp: number): Promise<void> {\n let length = list ? list.length : 0;\n for (let i = 0; i < length; i++) {\n const node = list[i];\n if (source === Source.ChildListAdd) {\n traverse(node, timer, source, timestamp);\n } else {\n let state = task.state(timer);\n if (state === Task.Wait) {\n state = await task.suspend(timer);\n }\n if (state === Task.Stop) {\n break;\n }\n processNode(node, source, timestamp);\n }\n }\n}\n\nfunction processThrottledMutations(): void {\n if (throttleDelay) {\n clearTimeout(throttleDelay);\n }\n throttleDelay = setTimeout(() => {\n task.schedule(process, Priority.High);\n }, Setting.LookAhead);\n}\n\nexport function schedule(node: Node): Node {\n // Only schedule manual trigger for this node if it's not already in the queue\n if (queue.indexOf(node) < 0) {\n queue.push(node);\n }\n\n // Cancel any previous trigger before scheduling a new one.\n // It's common for a webpage to call multiple synchronous \"insertRule\" / \"deleteRule\" calls.\n // And in those cases we do not wish to monitor changes multiple times for the same node.\n if (timeout) {\n clearTimeout(timeout);\n }\n timeout = setTimeout(() => {\n trigger();\n }, Setting.LookAhead);\n\n return node;\n}\n\nfunction trigger(): void {\n for (let node of queue) {\n // Generate a mutation for this node only if it still exists\n if (node) {\n let shadowRoot = node.nodeType === Node.DOCUMENT_FRAGMENT_NODE;\n // Skip re-processing shadowRoot if it was already discovered\n if (shadowRoot && dom.has(node)) {\n continue;\n }\n generate(node, shadowRoot ? Constant.ChildList : Constant.CharacterData);\n }\n }\n queue = [];\n}\n\nfunction generate(target: Node, type: MutationRecordType): void {\n measure(handle)([\n {\n addedNodes: [target],\n attributeName: null,\n attributeNamespace: null,\n nextSibling: null,\n oldValue: null,\n previousSibling: null,\n removedNodes: [],\n target,\n type,\n },\n ]);\n}\n\n\nfunction proxyStyleRules(win: any): void {\n if (win === null || win === undefined) {\n return;\n }\n\n win.clarityOverrides = win.clarityOverrides || {};\n\n // Some popular open source libraries, like styled-components, optimize performance\n // by injecting CSS using insertRule API vs. appending text node. A side effect of\n // using javascript API is that it doesn't trigger DOM mutation and therefore we\n // need to override the insertRule API and listen for changes manually.\n if (win.clarityOverrides.InsertRule === undefined) {\n win.clarityOverrides.InsertRule = win.CSSStyleSheet.prototype.insertRule;\n win.CSSStyleSheet.prototype.insertRule = function (): number {\n if (core.active()) {\n schedule(this.ownerNode);\n }\n return win.clarityOverrides.InsertRule.apply(this, arguments);\n };\n }\n\n if (\"CSSMediaRule\" in win && win.clarityOverrides.MediaInsertRule === undefined) {\n win.clarityOverrides.MediaInsertRule = win.CSSMediaRule.prototype.insertRule;\n win.CSSMediaRule.prototype.insertRule = function (): number {\n if (core.active()) {\n schedule(this.parentStyleSheet.ownerNode);\n }\n return win.clarityOverrides.MediaInsertRule.apply(this, arguments);\n };\n }\n\n if (win.clarityOverrides.DeleteRule === undefined) {\n win.clarityOverrides.DeleteRule = win.CSSStyleSheet.prototype.deleteRule;\n win.CSSStyleSheet.prototype.deleteRule = function (): void {\n if (core.active()) {\n schedule(this.ownerNode);\n }\n return win.clarityOverrides.DeleteRule.apply(this, arguments);\n };\n }\n\n if (\"CSSMediaRule\" in win && win.clarityOverrides.MediaDeleteRule === undefined) {\n win.clarityOverrides.MediaDeleteRule = win.CSSMediaRule.prototype.deleteRule;\n win.CSSMediaRule.prototype.deleteRule = function (): void {\n if (core.active()) {\n schedule(this.parentStyleSheet.ownerNode);\n }\n return win.clarityOverrides.MediaDeleteRule.apply(this, arguments);\n };\n }\n\n // Add a hook to attachShadow API calls\n // In case we are unable to add a hook and browser throws an exception,\n // reset attachShadow variable and resume processing like before\n if (win.clarityOverrides.AttachShadow === undefined) {\n win.clarityOverrides.AttachShadow = win.Element.prototype.attachShadow;\n try {\n win.Element.prototype.attachShadow = function (): ShadowRoot {\n if (core.active()) {\n return schedule(win.clarityOverrides.AttachShadow.apply(this, arguments)) as ShadowRoot;\n } else {\n return win.clarityOverrides.AttachShadow.apply(this, arguments);\n }\n };\n } catch {\n win.clarityOverrides.AttachShadow = null;\n }\n }\n}","import { Dimension, Metric, Setting } from \"@clarity-types/data\";\nimport { Constant, JsonLD } from \"@clarity-types/layout\";\nimport * as dimension from \"@src/data/dimension\";\nimport * as metric from \"@src/data/metric\";\n\nconst digitsRegex = /[^0-9\\.]/g;\n\n/* JSON+LD (Linked Data) Recursive Parser */\nexport function ld(json: any): void {\n for (let key of Object.keys(json)) {\n let value = json[key];\n if (key === JsonLD.Type && typeof value === \"string\") {\n value = value.toLowerCase();\n /* Normalizations */\n value = value.indexOf(JsonLD.Article) >= 0 || value.indexOf(JsonLD.Posting) >= 0 ? JsonLD.Article : value;\n switch (value) {\n case JsonLD.Article:\n case JsonLD.Recipe:\n dimension.log(Dimension.SchemaType, json[key]);\n dimension.log(Dimension.AuthorName, json[JsonLD.Creator]);\n dimension.log(Dimension.Headline, json[JsonLD.Headline]);\n break;\n case JsonLD.Product:\n dimension.log(Dimension.SchemaType, json[key]);\n dimension.log(Dimension.ProductName, json[JsonLD.Name]);\n dimension.log(Dimension.ProductSku, json[JsonLD.Sku]);\n if (json[JsonLD.Brand]) { dimension.log(Dimension.ProductBrand, json[JsonLD.Brand][JsonLD.Name]); }\n break;\n case JsonLD.AggregateRating:\n if (json[JsonLD.RatingValue]) {\n metric.max(Metric.RatingValue, num(json[JsonLD.RatingValue], Setting.RatingScale));\n metric.max(Metric.BestRating, num(json[JsonLD.BestRating]));\n metric.max(Metric.WorstRating, num(json[JsonLD.WorstRating]));\n }\n metric.max(Metric.RatingCount, num(json[JsonLD.RatingCount]));\n metric.max(Metric.ReviewCount, num(json[JsonLD.ReviewCount]));\n break;\n case JsonLD.Offer:\n dimension.log(Dimension.ProductAvailability, json[JsonLD.Availability]);\n dimension.log(Dimension.ProductCondition, json[JsonLD.ItemCondition]);\n dimension.log(Dimension.ProductCurrency, json[JsonLD.PriceCurrency]);\n dimension.log(Dimension.ProductSku, json[JsonLD.Sku]);\n metric.max(Metric.ProductPrice, num(json[JsonLD.Price]));\n break;\n case JsonLD.Brand:\n dimension.log(Dimension.ProductBrand, json[JsonLD.Name]);\n break;\n }\n }\n // Continue parsing nested objects\n if (value !== null && typeof(value) === Constant.Object) { ld(value); }\n }\n}\n\nfunction num(input: string | number, scale: number = 1): number {\n if (input !== null) {\n switch (typeof input) {\n case Constant.Number: return Math.round((input as number) * scale);\n case Constant.String: return Math.round(parseFloat((input as string).replace(digitsRegex, Constant.Empty)) * scale);\n }\n }\n return null;\n}\n","import { NodeInfo } from \"@clarity-types/layout\";\n\n/**\n * Custom module for tracking HTML Dialog elements\n * Handles detection of modal vs non-modal dialogs for proper visualization\n */\n\nexport interface DialogTrackingResult {\n attributes: { [key: string]: string };\n isModal: boolean;\n}\n\n/**\n * Tracks dialog element state and determines if it's a modal dialog\n * Modal dialogs are opened via showModal() and rendered in the browser's top-layer\n *\n * @param dialogElement - The dialog element to track\n * @param attributes - Current attributes of the dialog\n * @returns Tracking result with updated attributes and modal state\n */\nexport function trackDialog(\n dialogElement: HTMLDialogElement,\n attributes: { [key: string]: string }\n): DialogTrackingResult {\n const result: DialogTrackingResult = {\n attributes: { ...attributes },\n isModal: false\n };\n\n // Capture the open attribute which indicates if dialog is currently shown\n if (dialogElement.open) {\n result.attributes[\"open\"] = \"\";\n }\n\n // Detect if this is a modal dialog by checking for ::backdrop pseudo-element\n // Modal dialogs shown via showModal() have a backdrop, non-modal dialogs don't\n if (dialogElement.open) {\n try {\n const backdropStyle = window.getComputedStyle(dialogElement, \"::backdrop\");\n const backdropDisplay = backdropStyle.getPropertyValue(\"display\");\n\n // Modal dialogs have ::backdrop with display !== 'none'\n if (backdropDisplay && backdropDisplay !== \"none\") {\n result.isModal = true;\n result.attributes[\"data-clarity-modal\"] = \"true\";\n }\n } catch (e) {\n // If we can't check for backdrop (older browsers),\n // we can't reliably detect modal state\n console.warn(\"Error detecting modal dialog:\", e);\n }\n }\n\n return result;\n}\n\n/**\n * Creates dialog node data for tracking\n *\n * @param tag - Tag name (should be \"DIALOG\")\n * @param attributes - Dialog attributes\n * @returns NodeInfo object ready for tracking\n */\nexport function createDialogNodeData(\n tag: string,\n attributes: { [key: string]: string }\n): NodeInfo {\n return { tag, attributes };\n}\n","import { Constant, Source } from \"@clarity-types/layout\";\nimport { Code, Dimension, Severity } from \"@clarity-types/data\";\nimport * as dom from \"./dom\";\nimport * as event from \"@src/core/event\";\nimport * as dimension from \"@src/data/dimension\";\nimport * as internal from \"@src/diagnostic/internal\";\nimport * as interaction from \"@src/interaction\";\nimport * as mutation from \"@src/layout/mutation\";\nimport * as schema from \"@src/layout/schema\";\nimport * as custom from \"@src/layout/custom\";\nimport { checkDocumentStyles } from \"@src/layout/style\";\nimport { electron } from \"@src/data/metadata\";\nimport * as dialogCustom from \"@src/custom/dialog\";\n\nconst IGNORE_ATTRIBUTES = [\"title\", \"alt\", \"onload\", \"onfocus\", \"onerror\", \"data-drupal-form-submit-last\", \"aria-label\"];\nconst newlineRegex = /[\\r\\n]+/g;\n\nexport default function (node: Node, source: Source, timestamp: number): Node {\n let child: Node = null;\n\n // Do not track this change if we are attempting to remove a node before discovering it\n if (source === Source.ChildListRemove && dom.has(node) === false) { return child; }\n\n // Special handling for text nodes that belong to style nodes\n if (source !== Source.Discover &&\n node.nodeType === Node.TEXT_NODE &&\n node.parentElement &&\n node.parentElement.tagName === \"STYLE\") {\n node = node.parentNode;\n }\n\n let add = dom.has(node) === false;\n let call = add ? \"add\" : \"update\";\n let parent = node.parentElement ? node.parentElement : null;\n let insideFrame = node.ownerDocument !== document;\n switch (node.nodeType) {\n case Node.DOCUMENT_TYPE_NODE:\n parent = insideFrame && node.parentNode ? dom.iframe(node.parentNode) : parent;\n let docTypePrefix = insideFrame ? Constant.IFramePrefix : Constant.Empty;\n let doctype = node as DocumentType;\n let docName = doctype.name ? doctype.name : Constant.HTML; \n let docAttributes = { name: docName, publicId: doctype.publicId, systemId: doctype.systemId };\n let docData = { tag: docTypePrefix + Constant.DocumentTag, attributes: docAttributes };\n dom[call](node, parent, docData, source);\n break;\n case Node.DOCUMENT_NODE:\n // We check for regions in the beginning when discovering document and\n // later whenever there are new additions or modifications to DOM (mutations)\n if (node === document) {\n dom.parse(document);\n }\n checkDocumentStyles(node as Document, timestamp);\n observe(node as Document);\n break;\n case Node.DOCUMENT_FRAGMENT_NODE:\n let shadowRoot = (node as ShadowRoot);\n if (shadowRoot.host) {\n dom.parse(shadowRoot);\n let type = typeof (shadowRoot.constructor);\n if (type === Constant.Function && shadowRoot.constructor.toString().indexOf(Constant.NativeCode) >= 0) {\n observe(shadowRoot);\n \n // See: https://wicg.github.io/construct-stylesheets/ for more details on adoptedStyleSheets.\n // At the moment, we are only able to capture \"open\" shadow DOM nodes. If they are closed, they are not accessible.\n // In future we may decide to proxy \"attachShadow\" call to gain access, but at the moment, we don't want to\n // cause any unintended side effect to the page. We will re-evaluate after we gather more real world data on this.\n let style = Constant.Empty as string;\n let fragmentData = { tag: Constant.ShadowDomTag, attributes: { style } };\n dom[call](node, shadowRoot.host, fragmentData, source);\n } else {\n // If the browser doesn't support shadow DOM natively, we detect that, and send appropriate tag back.\n // The differentiation is important because we don't have to observe pollyfill shadow DOM nodes,\n // the same way we observe real shadow DOM nodes (encapsulation provided by the browser).\n dom[call](node, shadowRoot.host, { tag: Constant.PolyfillShadowDomTag, attributes: {} }, source);\n }\n checkDocumentStyles(node as Document, timestamp);\n }\n break;\n case Node.TEXT_NODE:\n // In IE11 TEXT_NODE doesn't expose a valid parentElement property. Instead we need to lookup parentNode property.\n parent = parent ? parent : node.parentNode as HTMLElement;\n // Account for this text node only if we are tracking the parent node\n // We do not wish to track text nodes for ignored parent nodes, like script tags\n // Also, we do not track text nodes for STYLE tags\n // The only exception is when we receive a mutation to remove the text node, in that case\n // parent will be null, but we can still process the node by checking it's an update call.\n if (call === \"update\" || (parent && dom.has(parent) && parent.tagName !== \"STYLE\" && parent.tagName !== \"NOSCRIPT\")) {\n let textData = { tag: Constant.TextTag, value: node.nodeValue };\n dom[call](node, parent, textData, source);\n }\n break;\n case Node.ELEMENT_NODE:\n let element = (node as HTMLElement);\n let tag = element.tagName;\n let attributes = getAttributes(element);\n // In some cases, external libraries like vue-fragment, can modify parentNode property to not be in sync with the DOM\n // For correctness, we first look at parentElement and if it not present then fall back to using parentNode\n parent = node.parentElement ? node.parentElement : (node.parentNode ? node.parentNode as HTMLElement : null);\n // If we encounter a node that is part of SVG namespace, prefix the tag with SVG_PREFIX\n if (element.namespaceURI === Constant.SvgNamespace) { tag = Constant.SvgPrefix + tag; }\n\n switch (tag) {\n case \"HTML\":\n parent = insideFrame && parent ? dom.iframe(parent) : parent;\n let htmlPrefix = insideFrame ? Constant.IFramePrefix : Constant.Empty;\n let htmlData = { tag: htmlPrefix + tag, attributes };\n dom[call](node, parent, htmlData, source);\n break;\n case \"SCRIPT\":\n if (Constant.Type in attributes && attributes[Constant.Type] === Constant.JsonLD) {\n try {\n schema.ld(JSON.parse((element as HTMLScriptElement).text.replace(newlineRegex, Constant.Empty)));\n } catch { /* do nothing */ }\n }\n break;\n case \"NOSCRIPT\":\n // keeping the noscript tag but ignoring its contents. Some HTML markup relies on having these tags\n // to maintain parity with the original css view, but we don't want to execute any noscript in Clarity\n let noscriptData = { tag, attributes: {}, value: '' };\n dom[call](node, parent, noscriptData, source);\n break;\n case \"META\":\n var key = (Constant.Property in attributes ?\n Constant.Property : \n (Constant.Name in attributes ? Constant.Name : null));\n if (key && Constant.Content in attributes) {\n let content = attributes[Constant.Content]\n switch(attributes[key]) {\n case Constant.ogTitle:\n dimension.log(Dimension.MetaTitle, content)\n break;\n case Constant.ogType:\n dimension.log(Dimension.MetaType, content)\n break;\n case Constant.Generator:\n dimension.log(Dimension.Generator, content)\n break;\n }\n }\n break;\n case \"HEAD\":\n let head = { tag, attributes };\n let l = insideFrame && node.ownerDocument?.location ? node.ownerDocument.location : location;\n head.attributes[Constant.Base] = l.protocol + \"//\" + l.host + l.pathname;\n dom[call](node, parent, head, source);\n break;\n case \"BASE\":\n // Override the auto detected base path to explicit value specified in this tag\n let baseHead = dom.get(node.parentElement);\n if (baseHead) {\n // We create \"a\" element so we can generate protocol and hostname for relative paths like \"/path/\"\n let a = document.createElement(\"a\");\n a.href = attributes[\"href\"];\n baseHead.data.attributes[Constant.Base] = a.protocol + \"//\" + a.host + a.pathname;\n }\n break;\n case \"STYLE\":\n let styleData = { tag, attributes, value: getStyleValue(element as HTMLStyleElement) };\n dom[call](node, parent, styleData, source);\n break;\n case \"IFRAME\":\n let iframe = node as HTMLIFrameElement;\n let frameData = { tag, attributes };\n if (dom.sameorigin(iframe)) {\n mutation.monitor(iframe);\n frameData.attributes[Constant.SameOrigin] = \"true\";\n if (iframe.contentDocument && iframe.contentWindow && iframe.contentDocument.readyState !== \"loading\") {\n child = iframe.contentDocument;\n }\n }\n if (source === Source.ChildListRemove) {\n removeObserver(iframe);\n }\n dom[call](node, parent, frameData, source);\n break;\n case \"LINK\":\n // electron stylesheets reference the local file system - translating those\n // to inline styles so playback can work\n if (electron && attributes['rel'] === Constant.StyleSheet) {\n for (var styleSheetIndex in Object.keys(document.styleSheets)) {\n var currentStyleSheet = document.styleSheets[styleSheetIndex];\n if (currentStyleSheet.ownerNode == element) {\n let syntheticStyleData = { tag: \"STYLE\", attributes, value: getCssRules(currentStyleSheet) };\n dom[call](node, parent, syntheticStyleData, source);\n break;\n }\n }\n break;\n }\n // for links that aren't electron style sheets we can process them normally\n let linkData = { tag, attributes };\n dom[call](node, parent, linkData, source);\n break;\n case \"VIDEO\":\n case \"AUDIO\":\n case \"SOURCE\":\n // Ignoring any base64 src attribute for media elements to prevent big unused tokens to be sent and shock the network\n if (Constant.Src in attributes && attributes[Constant.Src].startsWith(\"data:\")) {\n attributes[Constant.Src] = \"\";\n }\n let mediaTag = { tag, attributes };\n dom[call](node, parent, mediaTag, source);\n break;\n case \"DIALOG\":\n // Use custom module for dialog tracking\n let dialogElement = node as HTMLDialogElement;\n let dialogTracking = dialogCustom.trackDialog(dialogElement, attributes);\n let dialogData = dialogCustom.createDialogNodeData(tag, dialogTracking.attributes);\n dom[call](node, parent, dialogData, source);\n break;\n default:\n custom.check(element.localName);\n let data = { tag, attributes };\n if (element.shadowRoot) { child = element.shadowRoot; }\n dom[call](node, parent, data, source);\n break;\n }\n break;\n default:\n break;\n }\n return child;\n}\n\nfunction observe(root: Document | ShadowRoot): void {\n if (dom.has(root) || event.has(root)) { return; }\n mutation.observe(root); // Observe mutations for this root node\n interaction.observe(root); // Observe interactions for this root node\n}\n\nexport function removeObserver(root: HTMLIFrameElement): void {\n // iframes will have load event listeners and they should be removed when iframe is removed\n // from the document\n event.unbind(root);\n const { doc = null, win = null } = dom.iframeContent(root) || {};\n\n if (win) {\n // For iframes, scroll event is observed on content window and this needs to be removed as well\n event.unbind(win);\n }\n \n if (doc) {\n // When an iframe is removed, we should also remove all listeners attached to its document\n // to avoid memory leaks.\n event.unbind(doc);\n mutation.disconnect(doc);\n \n // Remove iframe and content document from maps tracking them\n dom.removeIFrame(root, doc);\n }\n}\n\nfunction getStyleValue(style: HTMLStyleElement): string {\n // Call trim on the text content to ensure we do not process white spaces ( , \\n, \\r\\n, \\t, etc.)\n // Also, check if stylesheet has any data-* attribute, if so process rules instead of looking up text\n // Additionally, check if style node has an id - if so it's at a high risk to have experienced dynamic\n // style updates which would make the textContent out of date with its true style contribution.\n let value = style.textContent ? style.textContent.trim() : Constant.Empty;\n let dataset = style.dataset ? Object.keys(style.dataset).length : 0;\n if (value.length === 0 || dataset > 0 || style.id.length > 0) {\n value = getCssRules(style.sheet as CSSStyleSheet);\n }\n return value;\n}\n\nexport function getCssRules(sheet: CSSStyleSheet): string {\n let value = Constant.Empty as string;\n let cssRules = null;\n // Firefox throws a SecurityError when trying to access cssRules of a stylesheet from a different domain\n try { cssRules = sheet ? sheet.cssRules : []; } catch (e) {\n internal.log(Code.CssRules, Severity.Warning, e ? e.name : null);\n if (e && e.name !== \"SecurityError\") { throw e; }\n }\n\n if (cssRules !== null) {\n for (let i = 0; i < cssRules.length; i++) {\n value += cssRules[i].cssText;\n }\n }\n\n return value;\n}\n\nfunction getAttributes(element: HTMLElement): { [key: string]: string } {\n let output = {};\n let attributes = element.attributes;\n if (attributes && attributes.length > 0) {\n for (let i = 0; i < attributes.length; i++) {\n let name = attributes[i].name;\n if (IGNORE_ATTRIBUTES.indexOf(name) < 0) {\n output[name] = attributes[i].value;\n }\n }\n }\n\n // For INPUT tags read the dynamic \"value\" property if an explicit \"value\" attribute is not set\n if (element.tagName === Constant.InputTag && !(Constant.Value in output) && (element as HTMLInputElement).value) {\n output[Constant.Value] = (element as HTMLInputElement).value;\n }\n\n return output;\n}\n","import { Character } from \"../../types/data\";\nimport { Constant, Selector, SelectorInput } from \"../../types/layout\";\n\nconst excludeClassNames = Constant.ExcludeClassNames.split(Constant.Comma);\nlet selectorMap: { [selector: string]: number[] } = {};\n\nexport function reset(): void {\n selectorMap = {};\n}\n\nexport function get(input: SelectorInput, type: Selector): string {\n let a = input.attributes;\n let prefix = input.prefix ? input.prefix[type] : null;\n let suffix = type === Selector.Alpha ? `${Constant.Tilde}${input.position-1}` : `:nth-of-type(${input.position})`;\n switch (input.tag) {\n case \"STYLE\":\n case \"TITLE\":\n case \"LINK\":\n case \"META\":\n case Constant.TextTag:\n case Constant.DocumentTag:\n return Constant.Empty;\n case \"HTML\":\n return Constant.HTML;\n default:\n if (prefix === null) { return Constant.Empty; }\n prefix = `${prefix}${Constant.Separator}`;\n input.tag = input.tag.indexOf(Constant.SvgPrefix) === 0 ? input.tag.substr(Constant.SvgPrefix.length) : input.tag;\n let selector = `${prefix}${input.tag}${suffix}`;\n let id = Constant.Id in a && a[Constant.Id].length > 0 ? a[Constant.Id] : null;\n let classes = input.tag !== Constant.BodyTag && Constant.Class in a && a[Constant.Class].length > 0 ? a[Constant.Class].trim().split(/\\s+/).filter(c => filter(c)).join(Constant.Period) : null;\n if (classes && classes.length > 0) {\n if (type === Selector.Alpha) {\n // In Alpha mode, update selector to use class names, with relative positioning within the parent id container.\n // If the node has valid class name(s) then drop relative positioning within the parent path to keep things simple.\n let key = `${getDomPath(prefix)}${input.tag}${Constant.Dot}${classes}`;\n if (!(key in selectorMap)) { selectorMap[key] = []; }\n if (selectorMap[key].indexOf(input.id) < 0) { selectorMap[key].push(input.id); }\n selector = `${key}${Constant.Tilde}${selectorMap[key].indexOf(input.id)}`;\n } else {\n // In Beta mode, we continue to look at query selectors in context of the full page\n selector = `${prefix}${input.tag}.${classes}${suffix}`\n }\n }\n // Update selector to use \"id\" field when available. There are two exceptions:\n // (1) if \"id\" appears to be an auto generated string token, e.g. guid or a random id containing digits\n // (2) if \"id\" appears inside a shadow DOM, in which case we continue to prefix up to shadow DOM to prevent conflicts\n selector = id && filter(id) ? `${getDomPrefix(prefix)}${Constant.Hash}${id}` : selector;\n return selector;\n }\n}\n\nfunction getDomPrefix(prefix: string): string {\n const shadowDomStart = prefix.lastIndexOf(Constant.ShadowDomTag);\n const iframeDomStart = prefix.lastIndexOf(`${Constant.IFramePrefix}${Constant.HTML}`);\n const domStart = Math.max(shadowDomStart, iframeDomStart);\n \n if (domStart < 0) { return Constant.Empty; }\n\n return prefix.substring(0, prefix.indexOf(Constant.Separator, domStart) + 1);\n}\n\nfunction getDomPath(input: string): string {\n let parts = input.split(Constant.Separator);\n for (let i = 0; i < parts.length; i++) {\n let tIndex = parts[i].indexOf(Constant.Tilde);\n let dIndex = parts[i].indexOf(Constant.Dot);\n parts[i] = parts[i].substring(0, dIndex > 0 ? dIndex : (tIndex > 0 ? tIndex : parts[i].length));\n }\n return parts.join(Constant.Separator);\n}\n\n// Check if the given input string has digits or excluded class names\nfunction filter(value: string): boolean {\n if (!value) { return false; } // Do not process empty strings\n if (excludeClassNames.some(x => value.toLowerCase().indexOf(x) >= 0)) { return false; }\n for (let i = 0; i < value.length; i++) {\n let c = value.charCodeAt(i);\n if (c >= Character.Zero && c <= Character.Nine) { return false };\n }\n return true;\n}\n","import { Privacy } from \"@clarity-types/core\";\nimport { Code, Setting, Severity } from \"@clarity-types/data\";\nimport { Constant, Mask, NodeInfo, NodeMeta, NodeValue, Selector, SelectorInput, Source } from \"@clarity-types/layout\";\nimport config from \"@src/core/config\";\nimport { bind } from \"@src/core/event\";\nimport hash from \"@src/core/hash\";\nimport { shortid } from \"@src/data/metadata\";\nimport * as internal from \"@src/diagnostic/internal\";\nimport { removeObserver } from \"@src/layout/node\";\nimport * as region from \"@src/layout/region\";\nimport * as selector from \"@src/layout/selector\";\nlet index: number = 1;\nlet nodesMap: Map<Number, Node> = null; // Maps id => node to retrieve further node details using id.\nlet values: NodeValue[] = [];\nlet updateMap: number[] = [];\nlet hashMap: { [hash: string]: number } = {};\nlet override = [];\nlet unmask = [];\nlet maskText = [];\nlet maskExclude = [];\nlet maskDisable = [];\nlet maskTags = [];\n\n// The WeakMap object is a collection of key/value pairs in which the keys are weakly referenced\nlet idMap: WeakMap<Node, number> = null; // Maps node => id.\nlet iframeMap: WeakMap<Document, HTMLIFrameElement> = null; // Maps iframe's contentDocument => parent iframe element\nlet iframeContentMap: WeakMap<HTMLIFrameElement, { doc: Document, win: Window }> = null; // Maps parent iframe element => iframe's contentDocument & contentWindow\nlet privacyMap: WeakMap<Node, Privacy> = null; // Maps node => Privacy (enum)\nlet fraudMap: WeakMap<Node, number> = null; // Maps node => FraudId (number)\n\nexport function start(): void {\n reset();\n parse(document, true);\n}\n\nexport function stop(): void {\n reset();\n}\n\nfunction reset(): void {\n index = 1;\n values = [];\n updateMap = [];\n hashMap = {};\n override = [];\n unmask = [];\n maskText = Mask.Text.split(Constant.Comma);\n maskExclude = Mask.Exclude.split(Constant.Comma);\n maskDisable = Mask.Disable.split(Constant.Comma);\n maskTags = Mask.Tags.split(Constant.Comma);\n nodesMap = new Map();\n idMap = new WeakMap();\n iframeMap = new WeakMap();\n iframeContentMap = new WeakMap();\n privacyMap = new WeakMap();\n fraudMap = new WeakMap();\n selector.reset();\n}\n\n// We parse new root nodes for any regions or masked nodes in the beginning (document) and\n// later whenever there are new additions or modifications to DOM (mutations)\nexport function parse(root: ParentNode, init: boolean = false): void {\n // Wrap selectors in a try / catch block.\n // It's possible for script to receive invalid selectors, e.g. \"'#id'\" with extra quotes, and cause the code below to fail\n try {\n // Parse unmask configuration into separate query selectors and override tokens as part of initialization\n if (init) { config.unmask.forEach(x => x.indexOf(Constant.Bang) < 0 ? unmask.push(x) : override.push(x.substr(1))); }\n\n // Since mutations may happen on leaf nodes too, e.g. text nodes, which may not support all selector APIs.\n // We ensure that the root note supports querySelectorAll API before executing the code below to identify new regions.\n if (\"querySelectorAll\" in root) {\n config.regions.forEach(x => root.querySelectorAll(x[1]).forEach(e => region.observe(e, `${x[0]}`))); // Regions\n config.mask.forEach(x => root.querySelectorAll(x).forEach(e => privacyMap.set(e, Privacy.TextImage))); // Masked Elements\n config.checksum.forEach(x => root.querySelectorAll(x[1]).forEach(e => fraudMap.set(e, x[0]))); // Fraud Checksum Check\n unmask.forEach(x => root.querySelectorAll(x).forEach(e => privacyMap.set(e, Privacy.None))); // Unmasked Elements\n }\n } catch (e) { internal.log(Code.Selector, Severity.Warning, e ? e.name : null); }\n}\n\nexport function getId(node: Node, autogen: boolean = false): number {\n if (node === null) { return null; }\n let id = idMap.get(node);\n if (!id && autogen) {\n id = index++;\n idMap.set(node, id);\n }\n\n return id ? id : null;\n}\n\nexport function add(node: Node, parent: Node, data: NodeInfo, source: Source): void {\n let parentId = parent ? getId(parent) : null;\n\n // Do not add detached nodes\n if ((!parent || !parentId) && (node as ShadowRoot).host == null && node.nodeType !== Node.DOCUMENT_TYPE_NODE) {\n return;\n }\n\n let id = getId(node, true);\n let previousId = getPreviousId(node);\n let parentValue: NodeValue = null;\n let regionId = region.exists(node) ? id : null;\n let fraudId = fraudMap.has(node) ? fraudMap.get(node) : null;\n let privacyId = config.content ? Privacy.Sensitive : Privacy.TextImage\n if (parentId >= 0 && values[parentId]) {\n parentValue = values[parentId];\n parentValue.children.push(id);\n regionId = regionId === null ? parentValue.region : regionId;\n fraudId = fraudId === null ? parentValue.metadata.fraud : fraudId;\n privacyId = parentValue.metadata.privacy;\n }\n\n // If there's an explicit region attribute set on the element, use it to mark a region on the page\n if (data.attributes && Constant.RegionData in data.attributes) {\n region.observe(node, data.attributes[Constant.RegionData]);\n regionId = id;\n }\n\n nodesMap.set(id, node);\n values[id] = {\n id,\n parent: parentId,\n previous: previousId,\n children: [],\n data,\n selector: null,\n hash: null,\n region: regionId,\n metadata: { active: true, suspend: false, privacy: privacyId, position: null, fraud: fraudId, size: null },\n };\n\n privacy(node, values[id], parentValue);\n updateSelector(values[id]);\n updateImageSize(values[id]);\n track(id, source);\n}\n\nexport function update(node: Node, parent: Node, data: NodeInfo, source: Source): void {\n let id = getId(node);\n let parentId = parent ? getId(parent) : null;\n let previousId = getPreviousId(node);\n let changed = false;\n let parentChanged = false;\n\n if (id in values) {\n let value = values[id];\n value.metadata.active = true;\n\n // Handle case where internal ordering may have changed\n if (value.previous !== previousId) {\n changed = true;\n value.previous = previousId;\n }\n\n // Handle case where parent might have been updated\n if (value.parent !== parentId) {\n changed = true;\n let oldParentId = value.parent;\n value.parent = parentId;\n // Move this node to the right location under new parent\n if (parentId !== null && parentId >= 0) {\n let childIndex = previousId === null ? 0 : values[parentId].children.indexOf(previousId) + 1;\n values[parentId].children.splice(childIndex, 0, id);\n // Update region after the move\n value.region = region.exists(node) ? id : values[parentId].region;\n } else {\n // Mark this element as deleted if the parent has been updated to null\n remove(id, source);\n }\n\n // Remove reference to this node from the old parent\n if (oldParentId !== null && oldParentId >= 0) {\n let nodeIndex = values[oldParentId].children.indexOf(id);\n if (nodeIndex >= 0) {\n values[oldParentId].children.splice(nodeIndex, 1);\n }\n }\n parentChanged = true;\n }\n\n // Update data\n for (let key in data) {\n if (diff(value[\"data\"], data, key)) {\n changed = true;\n value[\"data\"][key] = data[key];\n }\n }\n\n // Update selector\n updateSelector(value);\n track(id, source, changed, parentChanged);\n }\n}\n\nexport function sameorigin(node: Node): boolean {\n let output = false;\n if (node.nodeType === Node.ELEMENT_NODE && (node as HTMLElement).tagName === Constant.IFrameTag) {\n let frame = node as HTMLIFrameElement;\n // To determine if the iframe is same-origin or not, we try accessing it's contentDocument.\n // If the browser throws an exception, we assume it's cross-origin and move on.\n // However, if we do a get a valid document object back, we assume the contents are accessible and iframe is same-origin.\n try {\n let doc = frame.contentDocument;\n if (doc) {\n iframeMap.set(frame.contentDocument, frame);\n iframeContentMap.set(frame, { doc: frame.contentDocument, win: frame.contentWindow });\n output = true;\n }\n } catch { /* do nothing */ }\n }\n return output;\n}\n\nexport function iframe(node: Node): HTMLIFrameElement {\n let doc = node.nodeType === Node.DOCUMENT_NODE ? node as Document : null;\n return doc && iframeMap.has(doc) ? iframeMap.get(doc) : null;\n}\n\nexport function iframeContent(frame: HTMLIFrameElement): {doc: Document, win: Window } {\n if (iframeContentMap.has(frame)) {\n return iframeContentMap.get(frame);\n }\n return null;\n}\n\nexport function removeIFrame(frame: HTMLIFrameElement, doc: Document): void {\n iframeContentMap.delete(frame);\n iframeMap.delete(doc);\n}\n\nfunction privacy(node: Node, value: NodeValue, parent: NodeValue): void {\n let data = value.data;\n let metadata = value.metadata;\n let current = metadata.privacy;\n let attributes = data.attributes || {};\n let tag = data.tag.toUpperCase();\n\n switch (true) {\n case maskTags.indexOf(tag) >= 0:\n let type = attributes[Constant.Type];\n let meta: string = Constant.Empty;\n const excludedPrivacyAttributes = [Constant.Class, Constant.Style]\n Object.keys(attributes)\n .filter((x) => !excludedPrivacyAttributes.includes(x as Constant))\n .forEach((x) => (meta += attributes[x].toLowerCase()));\n let exclude = maskExclude.some((x) => meta.indexOf(x) >= 0);\n // Regardless of privacy mode, always mask off user input from input boxes or drop downs with two exceptions:\n // (1) The node is detected to be one of the excluded fields, in which case we drop everything\n // (2) The node's type is one of the allowed types (like checkboxes)\n metadata.privacy = tag === Constant.InputTag && maskDisable.indexOf(type) >= 0 ? current : (exclude ? Privacy.Exclude : Privacy.Text);\n break;\n case Constant.MaskData in attributes:\n metadata.privacy = Privacy.TextImage;\n break;\n case Constant.UnmaskData in attributes:\n metadata.privacy = Privacy.None;\n break;\n case privacyMap.has(node):\n // If this node was explicitly configured to contain sensitive content, honor that privacy setting\n metadata.privacy = privacyMap.get(node);\n break;\n case fraudMap.has(node):\n // If this node was explicitly configured to be evaluated for fraud, then also mask content\n metadata.privacy = Privacy.Text;\n break;\n case tag === Constant.TextTag:\n // If it's a text node belonging to a STYLE or TITLE tag or one of scrub exceptions, then capture content\n let pTag = parent && parent.data ? parent.data.tag : Constant.Empty;\n let pSelector = parent && parent.selector ? parent.selector[Selector.Default] : Constant.Empty;\n let tags: string[] = [Constant.StyleTag, Constant.TitleTag, Constant.SvgStyle];\n metadata.privacy = tags.includes(pTag) || override.some(x => pSelector.indexOf(x) >= 0) ? Privacy.None : current;\n break;\n case current === Privacy.Sensitive:\n // In a mode where we mask sensitive information by default, look through class names to aggressively mask content\n metadata.privacy = inspect(attributes[Constant.Class], maskText, metadata);\n break;\n case tag === Constant.ImageTag:\n // Mask images with blob src as it is not publicly available anyway.\n if(attributes.src?.startsWith('blob:')){\n metadata.privacy = Privacy.TextImage;\n }\n break;\n }\n}\n\nfunction inspect(input: string, lookup: string[], metadata: NodeMeta): Privacy {\n if (input && lookup.some(x => input.indexOf(x) >= 0)) {\n return Privacy.Text;\n }\n return metadata.privacy;\n}\n\nfunction diff(a: NodeInfo, b: NodeInfo, field: string): boolean {\n if (typeof a[field] === \"object\" && typeof b[field] === \"object\") {\n for (let key in a[field]) { if (a[field][key] !== b[field][key]) { return true; } }\n for (let key in b[field]) { if (b[field][key] !== a[field][key]) { return true; } }\n return false;\n }\n return a[field] !== b[field];\n}\n\nfunction position(parent: NodeValue, child: NodeValue): number {\n child.metadata.position = 1;\n let idx = parent ? parent.children.indexOf(child.id) : -1;\n while (idx-- > 0) {\n let sibling = values[parent.children[idx]];\n if (child.data.tag === sibling.data.tag) {\n child.metadata.position = sibling.metadata.position + 1;\n break;\n }\n }\n return child.metadata.position;\n}\n\nfunction updateSelector(value: NodeValue): void {\n let parent = value.parent && value.parent in values ? values[value.parent] : null;\n let prefix = parent ? parent.selector : null;\n let d = value.data;\n let p = position(parent, value);\n let s: SelectorInput = { id: value.id, tag: d.tag, prefix, position: p, attributes: d.attributes };\n value.selector = [selector.get(s, Selector.Alpha), selector.get(s, Selector.Beta)];\n value.hash = value.selector.map(x => x ? hash(x) : null) as [string, string];\n value.hash.forEach(h => hashMap[h] = value.id);\n}\n\nexport function hashText(hash: string): string {\n let id = lookup(hash);\n let node = getNode(id);\n return node !== null && node.textContent !== null ? node.textContent.substr(0, Setting.ClickText) : '';\n}\n\nexport function getNode(id: number): Node {\n return nodesMap.has(id) ? nodesMap.get(id) : null;\n}\n\nexport function getValue(id: number): NodeValue {\n if (id in values) {\n return values[id];\n }\n return null;\n}\n\nexport function get(node: Node): NodeValue {\n let id = getId(node);\n return id in values ? values[id] : null;\n}\n\nexport function lookup(hash: string): number {\n return hash in hashMap ? hashMap[hash] : null;\n}\n\nexport function has(node: Node): boolean {\n return nodesMap.has(getId(node));\n}\n\nexport function updates(): NodeValue[] {\n let output = [];\n for (let id of updateMap) {\n if (id in values) { output.push(values[id]); }\n }\n updateMap = [];\n\n return output;\n}\n\nfunction remove(id: number, source: Source): void {\n if (id in values) {\n let value = values[id];\n value.metadata.active = false;\n value.parent = null;\n track(id, source);\n\n // Clean up node references for removed nodes\n removeNodeFromNodesMap(id);\n }\n}\n\nfunction removeNodeFromNodesMap(id: number) {\n const nodeToBeRemoved = nodesMap.get(id);\n // Shadow dom roots shouldn't be deleted, \n // we should keep listening to the mutations there even they're not rendered in the DOM.\n if(nodeToBeRemoved?.nodeType === Node.DOCUMENT_FRAGMENT_NODE){\n return;\n }\n\n if (nodeToBeRemoved && nodeToBeRemoved?.nodeType === Node.ELEMENT_NODE && nodeToBeRemoved[\"tagName\"] === \"IFRAME\") {\n const iframe = nodeToBeRemoved as HTMLIFrameElement;\n removeObserver(iframe);\n }\n\n nodesMap.delete(id);\n\n let value = id in values ? values[id] : null;\n if (value && value.children) {\n for (let childId of value.children) {\n removeNodeFromNodesMap(childId);\n }\n }\n}\n\nfunction updateImageSize(value: NodeValue): void {\n // If this element is a image node, and is masked, then track box model for the current element\n if (value.data.tag === Constant.ImageTag && value.metadata.privacy === Privacy.TextImage) { \n let img = getNode(value.id) as HTMLImageElement;\n // We will not capture the natural image dimensions until it loads. \n if(img && (!img.complete || img.naturalWidth === 0)){\n // This will trigger mutation to update the original width and height after image loads.\n bind(img, 'load', () => {\n img.setAttribute('data-clarity-loaded', `${shortid()}`);\n })\n }\n value.metadata.size = [];\n }\n}\n\nfunction getPreviousId(node: Node): number {\n let id = null;\n\n // Some nodes may not have an ID by design since Clarity skips over tags like SCRIPT, NOSCRIPT, META, COMMENTS, etc..\n // In that case, we keep going back and check for their sibling until we find a sibling with ID or no more sibling nodes are left.\n while (id === null && node.previousSibling) {\n id = getId(node.previousSibling);\n node = node.previousSibling;\n }\n return id;\n}\n\nfunction track(id: number, source: Source, changed: boolean = true, parentChanged: boolean = false): void {\n if (config.lean && config.lite) { return; }\n\n // Keep track of the order in which mutations happened, they may not be sequential\n // Edge case: If an element is added later on, and pre-discovered element is moved as a child.\n // In that case, we need to reorder the pre-discovered element in the update list to keep visualization consistent.\n let uIndex = updateMap.indexOf(id);\n if (uIndex >= 0 && source === Source.ChildListAdd && parentChanged) {\n updateMap.splice(uIndex, 1);\n updateMap.push(id);\n } else if (uIndex === -1 && changed) { updateMap.push(id); }\n}\n","import { Event, Setting } from \"@clarity-types/data\";\nimport { InteractionState, RegionData, RegionState, RegionQueue, RegionVisibility } from \"@clarity-types/layout\";\nimport { time } from \"@src/core/time\";\nimport * as dom from \"@src/layout/dom\";\nimport encode from \"@src/layout/encode\";\n\nexport let state: RegionState[] = [];\nlet regionMap: WeakMap<Node, string> = null; // Maps region nodes => region name\nlet regions: { [key: number]: RegionData } = {};\nlet queue: RegionQueue[] = [];\nlet watch = false;\nlet observer: IntersectionObserver = null;\n\nexport function start(): void {\n reset();\n observer = null;\n regionMap = new WeakMap();\n regions = {};\n queue = [];\n watch = window[\"IntersectionObserver\"] ? true : false;\n \n}\n\nexport function observe(node: Node, name: string): void {\n if (regionMap.has(node) === false) {\n regionMap.set(node, name);\n observer = observer === null && watch ? new IntersectionObserver(handler, {\n // Get notified as intersection continues to change\n // This allows us to process regions that get partially hidden during the lifetime of the page\n // See: https://developer.mozilla.org/en-US/docs/Web/API/Intersection_Observer_API#creating_an_intersection_observer\n // By default, intersection observers only fire an event when even a single pixel is visible and not thereafter.\n threshold: [0, 0.05, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1]\n }) : observer;\n if (observer && node && node.nodeType === Node.ELEMENT_NODE) {\n observer.observe(node as Element);\n }\n }\n}\n\nexport function exists(node: Node): boolean {\n // Check if regionMap is not null before looking up a node\n // Since, dom module stops after region module, it's possible that we may set regionMap to be null\n // and still attempt to call exists on a late coming DOM mutation (or addition), effectively causing a script error\n return regionMap && regionMap.has(node);\n}\n\nexport function track(id: number, event: Event): void {\n let node = dom.getNode(id);\n let data = id in regions ? regions[id] : { id, visibility: RegionVisibility.Rendered, interaction: InteractionState.None, name: regionMap.get(node) };\n \n // Determine the interaction state based on incoming event\n let interaction = InteractionState.None;\n switch (event) {\n case Event.Click: interaction = InteractionState.Clicked; break;\n case Event.Input: interaction = InteractionState.Input; break;\n }\n // Process updates to this region, if applicable\n process(node, data, interaction, data.visibility);\n}\n\nexport function compute(): void {\n // Process any regions where we couldn't resolve an \"id\" for at the time of last intersection observer event\n // This could happen in cases where elements are not yet processed by Clarity's virtual DOM but browser reports a change, regardless.\n // For those cases we add them to the queue and re-process them below\n let q = [];\n for (let r of queue) {\n let id = dom.getId(r.node);\n if (id) {\n r.state.data.id = id;\n regions[id] = r.state.data;\n state.push(r.state);\n } else { q.push(r); }\n }\n queue = q;\n\n // Schedule encode only when we have at least one valid data entry\n if (state.length > 0) { encode(Event.Region); }\n}\n\nfunction handler(entries: IntersectionObserverEntry[]): void {\n for (let entry of entries) {\n let target = entry.target;\n let rect = entry.boundingClientRect;\n let overlap = entry.intersectionRect;\n let viewport = entry.rootBounds;\n // Only capture regions that have non-zero width or height to avoid tracking and sending regions\n // that cannot ever be seen by the user. In some cases, websites will have a multiple copy of the same region\n // like search box - one for desktop, and another for mobile. In those cases, CSS media queries determine which one should be visible.\n // Also, if these regions ever become non-zero width or height (through AJAX, user action or orientation change) - we will automatically start monitoring them from that point onwards\n if (regionMap.has(target) && rect.width + rect.height > 0 && viewport && viewport.width > 0 && viewport.height > 0) {\n let id = target ? dom.getId(target) : null;\n let data = id in regions ? regions[id] : { id, name: regionMap.get(target), interaction: InteractionState.None, visibility: RegionVisibility.Rendered };\n \n // For regions that have relatively smaller area, we look at intersection ratio and see the overlap relative to element's area\n // However, for larger regions, area of regions could be bigger than viewport and therefore comparison is relative to visible area\n let viewportRatio = overlap ? (overlap.width * overlap.height * 1.0) / (viewport.width * viewport.height) : 0;\n let visible = viewportRatio > Setting.ViewportIntersectionRatio || entry.intersectionRatio > Setting.IntersectionRatio;\n // If an element is either visible or was visible and has been scrolled to the end\n // i.e. Scrolled to end is determined by if the starting position of the element + the window height is more than the total element height. \n // starting position is relative to the viewport - so Intersection observer returns a negative value for rect.top to indicate that the element top is above the viewport\n let scrolledToEnd = (visible || data.visibility == RegionVisibility.Visible) && Math.abs(rect.top) + viewport.height > rect.height;\n // Process updates to this region, if applicable\n process(target, data, data.interaction, \n (scrolledToEnd ? \n RegionVisibility.ScrolledToEnd :\n (visible ? RegionVisibility.Visible : RegionVisibility.Rendered)));\n\n // Stop observing this element now that we have already received scrolled signal\n if (data.visibility >= RegionVisibility.ScrolledToEnd && observer) { observer.unobserve(target); }\n }\n }\n if (state.length > 0) { encode(Event.Region); }\n}\n\nfunction process(n: Node, d: RegionData, s: InteractionState, v: RegionVisibility): void {\n // Check if received a state that supersedes existing state\n let updated = s > d.interaction || v > d.visibility;\n d.interaction = s > d.interaction ? s : d.interaction;\n d.visibility = v > d.visibility ? v : d.visibility;\n // If the corresponding node is already discovered, update the internal state\n // Otherwise, track it in a queue to reprocess later.\n if (d.id) {\n if ((d.id in regions && updated) || !(d.id in regions)) {\n regions[d.id] = d;\n state.push(clone(d));\n }\n } else {\n // Get the time before adding to queue to ensure accurate event time\n queue.push({node: n, state: clone(d)}); \n }\n}\n\nfunction clone(r: RegionData): RegionState {\n return { time: time(), data: { id: r.id, interaction: r.interaction, visibility: r.visibility, name: r.name }};\n}\n\nexport function reset(): void {\n state = []; \n}\n\nexport function stop(): void {\n reset();\n regionMap = null;\n regions = {};\n queue = [];\n if (observer) {\n observer.disconnect();\n observer = null;\n }\n watch = false;\n}\n","import { Privacy } from \"@clarity-types/core\";\nimport { Event } from \"@clarity-types/data\";\nimport { TargetMetadata } from \"@clarity-types/layout\";\nimport * as fraud from \"@src/diagnostic/fraud\";\nimport * as region from \"@src/layout/region\";\nimport * as dom from \"@src/layout/dom\";\nimport * as mutation from \"@src/layout/mutation\";\n\nexport function target(evt: UIEvent): Node {\n let path = evt.composed && evt.composedPath ? evt.composedPath() : null;\n let node = (path && path.length > 0 ? path[0] : evt.target) as Node;\n mutation.active(); // Mark active periods of time so mutations can continue uninterrupted\n return node && node.nodeType === Node.DOCUMENT_NODE ? (node as Document).documentElement : node;\n}\n\nexport function metadata(node: Node, event: Event, text: string = null): TargetMetadata {\n // If the node is null, we return a reserved value for id: 0. Valid assignment of id begins from 1+.\n let output: TargetMetadata = { id: 0, hash: null, privacy: Privacy.Text };\n if (node) {\n let value = dom.get(node);\n if (value !== null) {\n let metadata = value.metadata;\n output.id = value.id;\n output.hash = value.hash;\n output.privacy = metadata.privacy;\n if (value.region) { region.track(value.region, event); }\n if (metadata.fraud) { fraud.check(metadata.fraud, value.id, text || value.data.value); }\n }\n }\n\n return output;\n}\n","import { Constant, Event, Token } from \"@clarity-types/data\";\nimport * as scrub from \"@src/core/scrub\";\nimport { time } from \"@src/core/time\";\nimport * as baseline from \"@src/data/baseline\";\nimport { queue } from \"@src/data/upload\";\nimport { metadata } from \"@src/layout/target\";\nimport * as change from \"@src/interaction/change\";\nimport * as click from \"@src/interaction/click\";\nimport * as clipboard from \"@src/interaction/clipboard\";\nimport * as input from \"@src/interaction/input\";\nimport * as pointer from \"@src/interaction/pointer\";\nimport * as resize from \"@src/interaction/resize\";\nimport * as scroll from \"@src/interaction/scroll\";\nimport * as selection from \"@src/interaction/selection\";\nimport * as submit from \"@src/interaction/submit\";\nimport * as timeline from \"@src/interaction/timeline\";\nimport * as unload from \"@src/interaction/unload\";\nimport * as visibility from \"@src/interaction/visibility\";\nimport * as focus from \"@src/interaction/focus\";\n\nexport default async function (type: Event, ts: number = null): Promise<void> {\n let t = ts || time();\n let tokens: Token[] = [t, type];\n switch (type) {\n case Event.MouseDown:\n case Event.MouseUp:\n case Event.MouseMove:\n case Event.MouseWheel:\n case Event.DoubleClick:\n case Event.TouchStart:\n case Event.TouchEnd:\n case Event.TouchMove:\n case Event.TouchCancel:\n for (let entry of pointer.state) {\n let pTarget = metadata(entry.data.target as Node, entry.event);\n if (pTarget.id > 0) {\n tokens = [entry.time, entry.event];\n tokens.push(pTarget.id);\n tokens.push(entry.data.x);\n tokens.push(entry.data.y);\n if (entry.data.id !== undefined) { \n tokens.push(entry.data.id); \n\n if (entry.data.isPrimary !== undefined) {\n tokens.push(entry.data.isPrimary.toString());\n }\n }\n queue(tokens);\n if (entry.data.isPrimary === undefined || entry.data.isPrimary) {\n baseline.track(entry.event, entry.data.x, entry.data.y, entry.time);\n }\n }\n }\n pointer.reset();\n break;\n case Event.Click:\n case Event.ContextMenu:\n for (let entry of click.state) {\n let cTarget = metadata(entry.data.target as Node, entry.event, entry.data.text);\n tokens = [entry.time, entry.event];\n let cHash = cTarget.hash ? cTarget.hash.join(Constant.Dot) : Constant.Empty;\n tokens.push(cTarget.id);\n tokens.push(entry.data.x);\n tokens.push(entry.data.y);\n tokens.push(entry.data.eX);\n tokens.push(entry.data.eY);\n tokens.push(entry.data.button);\n tokens.push(entry.data.reaction);\n tokens.push(entry.data.context);\n tokens.push(scrub.text(entry.data.text, \"click\", cTarget.privacy));\n tokens.push(scrub.url(entry.data.link));\n tokens.push(cHash);\n tokens.push(entry.data.trust);\n tokens.push(entry.data.isFullText);\n tokens.push(entry.data.w);\n tokens.push(entry.data.h);\n tokens.push(entry.data.tag);\n tokens.push(entry.data.class);\n tokens.push(entry.data.id);\n queue(tokens);\n timeline.track(entry.time, entry.event, cHash, entry.data.x, entry.data.y, entry.data.reaction, entry.data.context);\n }\n click.reset();\n break;\n case Event.Clipboard:\n for (let entry of clipboard.state) {\n tokens = [entry.time, entry.event];\n let target = metadata(entry.data.target as Node, entry.event);\n if (target.id > 0) {\n tokens.push(target.id);\n tokens.push(entry.data.action);\n queue(tokens);\n }\n }\n clipboard.reset();\n break;\n case Event.Resize:\n let r = resize.data;\n tokens.push(r.width);\n tokens.push(r.height);\n baseline.track(type, r.width, r.height);\n resize.reset();\n queue(tokens);\n break;\n case Event.Unload:\n let u = unload.data;\n tokens.push(u.name);\n tokens.push(u.persisted);\n unload.reset();\n queue(tokens);\n break;\n case Event.Input:\n for (let entry of input.state) {\n let iTarget = metadata(entry.data.target as Node, entry.event, entry.data.value);\n tokens = [entry.time, entry.event];\n tokens.push(iTarget.id);\n tokens.push(scrub.text(entry.data.value, \"input\", iTarget.privacy, false, entry.data.type));\n tokens.push(entry.data.trust);\n queue(tokens);\n }\n input.reset();\n break;\n case Event.Selection:\n let s = selection.data;\n if (s) {\n let startTarget = metadata(s.start as Node, type);\n let endTarget = metadata(s.end as Node, type);\n tokens.push(startTarget.id);\n tokens.push(s.startOffset);\n tokens.push(endTarget.id);\n tokens.push(s.endOffset);\n selection.reset();\n queue(tokens);\n }\n break;\n case Event.Scroll:\n for (let entry of scroll.state) {\n let sTarget = metadata(entry.data.target as Node, entry.event);\n const top = metadata(entry.data.top as Node, entry.event);\n const bottom = metadata(entry.data.bottom as Node, entry.event);\n const sTopHash = top?.hash ? top.hash.join(Constant.Dot) : Constant.Empty;\n const sBottomHash = bottom?.hash ? bottom.hash.join(Constant.Dot) : Constant.Empty;\n if (sTarget.id > 0) {\n tokens = [entry.time, entry.event];\n tokens.push(sTarget.id);\n tokens.push(entry.data.x);\n tokens.push(entry.data.y);\n tokens.push(sTopHash);\n tokens.push(sBottomHash);\n queue(tokens);\n baseline.track(entry.event, entry.data.x, entry.data.y, entry.time);\n }\n }\n scroll.reset();\n break;\n case Event.Change:\n for (let entry of change.state) {\n tokens = [entry.time, entry.event];\n let target = metadata(entry.data.target as Node, entry.event);\n if (target.id > 0) {\n tokens = [entry.time, entry.event];\n tokens.push(target.id);\n tokens.push(entry.data.type);\n tokens.push(scrub.text(entry.data.value, \"change\", target.privacy));\n tokens.push(scrub.text(entry.data.checksum, \"checksum\", target.privacy));\n queue(tokens);\n }\n }\n change.reset();\n break;\n case Event.Submit:\n for (let entry of submit.state) {\n tokens = [entry.time, entry.event];\n let target = metadata(entry.data.target as Node, entry.event);\n if (target.id > 0) {\n tokens.push(target.id);\n queue(tokens);\n }\n }\n submit.reset();\n break;\n case Event.Timeline:\n for (let entry of timeline.updates) {\n tokens = [entry.time, entry.event];\n tokens.push(entry.data.type);\n tokens.push(entry.data.hash);\n tokens.push(entry.data.x);\n tokens.push(entry.data.y);\n tokens.push(entry.data.reaction);\n tokens.push(entry.data.context);\n queue(tokens, false);\n }\n timeline.reset();\n break;\n case Event.Visibility:\n let v = visibility.data;\n tokens.push(v.visible);\n queue(tokens);\n baseline.visibility(t, v.visible);\n visibility.reset();\n break;\n case Event.Focus: {\n let f = focus.data;\n tokens.push(f.focused);\n queue(tokens, false);\n focus.reset();\n break;\n }\n }\n}\n","import { BooleanFlag, Event } from \"@clarity-types/data\";\nimport { BrowsingContext, Setting, TimelineState } from \"@clarity-types/interaction\";\nimport * as baseline from \"@src/data/baseline\";\nimport * as envelope from \"@src/data/envelope\";\nimport encode from \"@src/interaction/encode\";\n\nlet state: TimelineState[] = [];\nexport let updates: TimelineState[] = [];\n\nexport function start(): void {\n state = [];\n reset();\n}\n\nexport function reset(): void {\n updates = [];\n}\n\nexport function track(time: number,\n event: Event,\n hash: string,\n x: number,\n y: number,\n reaction: number = BooleanFlag.True,\n context: number = BrowsingContext.Self): void {\n state.push({\n time,\n event: Event.Timeline,\n data: {\n type: event,\n hash,\n x,\n y,\n reaction,\n context\n }\n });\n\n // Since timeline only keeps the data for configured time, we still want to continue tracking these values\n // as part of the baseline. For instance, in a scenario where last scroll happened 5s ago.\n // We would still need to capture the last scroll position as part of the baseline event, even when timeline will be empty.\n baseline.track(event, x, y, time);\n}\n\nexport function compute(): void {\n if (!envelope.data) {\n return;\n }\n\n const temp = [];\n updates = [];\n let max = (envelope.data.start || 0) + (envelope.data.duration || 0);\n let min = Math.max(max - Setting.TimelineSpan, 0);\n\n for (let s of state) {\n if (s.time >= min) {\n if (s.time <= max) { updates.push(s); }\n temp.push(s);\n }\n }\n\n state = temp; // Drop events less than the min time\n encode(Event.Timeline);\n}\n\nexport function stop(): void {\n state = [];\n reset();\n}\n","import { Privacy } from \"@clarity-types/core\";\nimport { Event, Token } from \"@clarity-types/data\";\nimport { Constant, NodeInfo } from \"@clarity-types/layout\";\nimport * as scrub from \"@src/core/scrub\";\nimport { time } from \"@src/core/time\";\nimport * as baseline from \"@src/data/baseline\";\nimport tokenize from \"@src/data/token\";\nimport { queue } from \"@src/data/upload\";\nimport * as snapshot from \"@src/insight/snapshot\";\nimport * as doc from \"@src/layout/document\";\n\nexport default async function (type: Event): Promise<void> {\n let eventTime = time()\n let tokens: Token[] = [eventTime, type];\n switch (type) {\n case Event.Document:\n let d = doc.data;\n tokens.push(d.width);\n tokens.push(d.height);\n baseline.track(type, d.width, d.height);\n queue(tokens);\n break;\n case Event.Snapshot:\n let values = snapshot.values;\n // Only encode and queue DOM updates if we have valid updates to report back\n if (values.length > 0) {\n for (let value of values) {\n let privacy = value.metadata.privacy;\n let data: NodeInfo = value.data;\n for (let key of [\"tag\", \"attributes\", \"value\"]) {\n if (data[key]) {\n switch (key) {\n case \"tag\":\n tokens.push(value.id);\n if (value.parent) { tokens.push(value.parent); }\n if (value.previous) { tokens.push(value.previous); }\n tokens.push(data[key]);\n break;\n case \"attributes\":\n for (let attr in data[key]) {\n if (data[key][attr] !== undefined) {\n tokens.push(attribute(attr, data[key][attr], privacy));\n }\n }\n break;\n case \"value\":\n tokens.push(scrub.text(data[key], data.tag, privacy));\n break;\n }\n }\n }\n }\n queue(tokenize(tokens), true);\n }\n break;\n }\n}\n\nfunction attribute(key: string, value: string, privacy: Privacy): string {\n return `${key}=${scrub.text(value, key.indexOf(Constant.DataAttribute) === 0 ? Constant.DataAttribute : key, privacy)}`;\n}","import { OffsetDistance, Privacy } from \"@clarity-types/core\";\nimport { Event } from \"@clarity-types/data\";\nimport { Constant, NodeInfo, NodeValue, TargetMetadata } from \"@clarity-types/layout\";\nimport * as doc from \"@src/layout/document\";\nimport encode from \"@src/insight/encode\";\nimport * as interaction from \"@src/interaction\";\nimport config from \"@src/core/config\";\nexport let values: NodeValue[] = [];\nlet index: number = 1;\nlet idMap: WeakMap<Node, number> = null; // Maps node => id.\n\nexport function start(): void {\n reset();\n doc.start();\n getId(document.documentElement); // Pre-discover ID for page root\n interaction.observe(document);\n}\n\nexport function stop(): void {\n reset();\n doc.stop();\n}\n\nexport function compute(): void { /* Intentionally Blank */ }\nexport function iframe(): boolean { return false; }\nexport function offset(): OffsetDistance { return { x: 0, y: 0 }; }\nexport function hashText(): void { /* Intentionally Blank */ }\n\nexport function target(evt: UIEvent): Node {\n let path = evt.composed && evt.composedPath ? evt.composedPath() : null;\n let node = (path && path.length > 0 ? path[0] : evt.target) as Node;\n return node.nodeType === Node.DOCUMENT_NODE ? (node as Document).documentElement : node;\n}\n\nexport function metadata(node: Node): TargetMetadata {\n let output: TargetMetadata = { id: 0, hash: null, privacy: config.conversions ? Privacy.Sensitive : Privacy.Snapshot };\n if (node) { output.id = idMap.has(node) ? idMap.get(node) : getId(node); }\n return output;\n}\n\nexport function snapshot(): void { \n values = [];\n traverse(document);\n encode(Event.Snapshot);\n}\n\nfunction reset(): void {\n idMap = new WeakMap();\n}\n\nfunction traverse(root: Node): void {\n let queue = [root];\n while (queue.length > 0) {\n let attributes = null, tag = null, value = null;\n let node = queue.shift();\n let next = node.firstChild;\n let parent = node.parentElement ? node.parentElement : (node.parentNode ? node.parentNode : null);\n\n while (next) {\n queue.push(next);\n next = next.nextSibling;\n }\n \n // Process the node\n let type = node.nodeType;\n switch (type) {\n case Node.DOCUMENT_TYPE_NODE:\n let doctype = node as DocumentType;\n tag = Constant.DocumentTag;\n attributes = { name: doctype.name, publicId: doctype.publicId, systemId: doctype.systemId }\n break;\n case Node.TEXT_NODE: \n value = node.nodeValue;\n tag = idMap.get(parent) ? Constant.TextTag : tag;\n break;\n case Node.ELEMENT_NODE:\n let element = node as HTMLElement;\n attributes = getAttributes(element);\n tag = [\"NOSCRIPT\", \"SCRIPT\", \"STYLE\"].indexOf(element.tagName) < 0 ? element.tagName : tag;\n break;\n }\n add(node, parent, { tag, attributes, value }); \n }\n}\n\n/* Helper Functions - Snapshot Traversal */\nfunction getAttributes(element: HTMLElement): { [key: string]: string } {\n let output = {};\n let attributes = element.attributes;\n if (attributes && attributes.length > 0) {\n for (let i = 0; i < attributes.length; i++) { \n output[attributes[i].name] = attributes[i].value;\n }\n }\n return output;\n}\n\nfunction getId(node: Node): number {\n if (node === null) { return null; }\n if (idMap.has(node)) { return idMap.get(node); }\n idMap.set(node, index);\n return index++;\n}\n\nfunction add(node: Node, parent: Node, data: NodeInfo): void {\n if (node && data && data.tag) {\n let id = getId(node);\n let parentId = parent ? idMap.get(parent) : null;\n let previous = node.previousSibling ? idMap.get(node.previousSibling) : null;\n let metadata = { active: true, suspend: false, privacy: Privacy.Snapshot, position: null, fraud: null, size: null };\n values.push({ id, parent: parentId, previous, children: [], data, selector: null, hash: null, region: null, metadata });\n }\n}\n\nexport function get(_node: Node): NodeValue {return null;}","import { Constant } from \"@clarity-types/layout\";\r\nimport { Constant as DataConstant } from \"@clarity-types/data\";\r\nimport * as baseline from \"@src/data/baseline\";\r\nimport { report } from \"@src/core/report\";\r\n\r\nlet stopCallbacks: (() => void)[] = [];\r\nlet active = false;\r\nlet modules: Set<number> = null;\r\n\r\nexport function start(): void {\r\n active = true;\r\n modules = new Set<number>();\r\n}\r\n\r\nexport function stop(): void {\r\n stopCallbacks.reverse().forEach((callback) => {\r\n try {\r\n callback();\r\n } catch (error) {\r\n // Do nothing\r\n }\r\n });\r\n stopCallbacks = [];\r\n active = false;\r\n}\r\n\r\nexport function register(stopCallback: () => void): void {\r\n if (active && typeof stopCallback === \"function\") {\r\n stopCallbacks.push(stopCallback);\r\n }\r\n}\r\n\r\nexport function event(signal: string): void {\r\n if (!active) return;\r\n\r\n const parts = signal ? signal.split(\" \") : [Constant.Empty];\r\n const m = parts.length > 1 ? parseInt(parts[1], 10) : null;\r\n if (m && modules.has(m)) {\r\n return;\r\n }\r\n\r\n load(parts[0], m);\r\n}\r\n\r\nfunction load(url: string, mid: number | null): void {\r\n try {\r\n const script = document.createElement(\"script\");\r\n script.src = url;\r\n script.async = true;\r\n script.onload = () => {\r\n if (mid) {\r\n modules.add(mid);\r\n baseline.dynamic(modules);\r\n }\r\n };\r\n script.onerror = () => {\r\n report(new Error(`${DataConstant.Module}: ${url}`));\r\n };\r\n document.head.appendChild(script);\r\n } catch (error) {\r\n // Do nothing\r\n }\r\n}\r\n","import { UploadCallback } from \"@clarity-types/core\";\nimport { BooleanFlag, Check, Code, Constant, EncodedPayload, Event, Metric, Setting, Severity, Token, Transit, UploadData, XMLReadyState } from \"@clarity-types/data\";\nimport * as clarity from \"@src/clarity\";\nimport config from \"@src/core/config\";\nimport measure from \"@src/core/measure\";\nimport { time } from \"@src/core/time\";\nimport { clearTimeout, setTimeout } from \"@src/core/timeout\";\nimport compress from \"@src/data/compress\";\nimport encode from \"@src/data/encode\";\nimport * as envelope from \"@src/data/envelope\";\nimport * as data from \"@src/data/index\";\nimport * as limit from \"@src/data/limit\";\nimport * as metadata from \"@src/data/metadata\";\nimport * as metric from \"@src/data/metric\";\nimport * as ping from \"@src/data/ping\";\nimport * as internal from \"@src/diagnostic/internal\";\nimport * as timeline from \"@src/interaction/timeline\";\nimport * as region from \"@src/layout/region\";\nimport * as extract from \"@src/data/extract\";\nimport * as style from \"@src/layout/style\";\nimport { report } from \"@src/core/report\";\nimport { signalsEvent } from \"@src/data/signal\";\nimport { snapshot } from \"@src/insight/snapshot\";\nimport * as dynamic from \"@src/core/dynamic\";\n\nlet discoverBytes: number = 0;\nlet playbackBytes: number = 0;\nlet playback: string[];\nlet analysis: string[];\nlet timeout: number = null;\nlet transit: Transit;\nlet active: boolean;\nlet queuedTime: number = 0;\nlet leanLimit = false;\nexport let track: UploadData;\n\nexport function start(): void {\n active = true;\n discoverBytes = 0;\n playbackBytes = 0;\n leanLimit = false;\n queuedTime = 0;\n playback = [];\n analysis = [];\n transit = {};\n track = null;\n}\n\nexport function queue(tokens: Token[], transmit: boolean = true): void {\n if (!active) {\n return;\n }\n\n let now = time();\n let type = tokens.length > 1 ? tokens[1] : null;\n let event = JSON.stringify(tokens);\n\n if (!config.lean) {\n leanLimit = false;\n } else if (!leanLimit && playbackBytes + event.length > Setting.PlaybackBytesLimit) {\n internal.log(Code.LeanLimit, Severity.Info);\n leanLimit = true;\n }\n\n switch (type) {\n case Event.Discover:\n if (leanLimit) { break; }\n discoverBytes += event.length;\n case Event.Box:\n case Event.Mutation:\n case Event.Snapshot:\n case Event.StyleSheetAdoption:\n case Event.StyleSheetUpdate:\n case Event.Animation:\n case Event.CustomElement:\n if (leanLimit) { break; }\n playbackBytes += event.length;\n playback.push(event);\n break;\n default:\n analysis.push(event);\n break;\n }\n\n // Increment event count metric\n metric.count(Metric.EventCount);\n\n // Following two checks are precautionary and act as a fail safe mechanism to get out of unexpected situations.\n // Check 1: If for any reason the upload hasn't happened after waiting for 2x the config.delay time,\n // reset the timer. This allows Clarity to attempt an upload again.\n let gap = delay();\n if (now - queuedTime > (gap * 2)) {\n clearTimeout(timeout);\n timeout = null;\n }\n\n // Transmit Check: When transmit is set to true (default), it indicates that we should schedule an upload\n // However, in certain scenarios - like metric calculation - which are triggered as part of an existing upload\n // We enrich the data going out with the existing upload. In these cases, call to upload comes with 'transmit' set to false.\n if (transmit && timeout === null) {\n if (type !== Event.Ping) { ping.reset(); }\n timeout = setTimeout(upload, gap);\n queuedTime = now;\n limit.check(playbackBytes);\n }\n}\n\nexport function stop(): void {\n clearTimeout(timeout);\n upload(true);\n discoverBytes = 0;\n playbackBytes = 0;\n leanLimit = false;\n queuedTime = 0;\n playback = [];\n analysis = [];\n transit = {};\n track = null;\n active = false;\n}\n\nasync function upload(final: boolean = false): Promise<void> {\n if (!active) {\n return;\n }\n\n timeout = null;\n\n // Check if we can send playback bytes over the wire or not\n // For better instrumentation coverage, we send playback bytes from second sequence onwards\n // And, we only send playback metric when we are able to send the playback bytes back to server\n let sendPlaybackBytes = config.lean === false && playbackBytes > 0 && (playbackBytes < Setting.MaxFirstPayloadBytes || envelope.data.sequence > 0);\n if (sendPlaybackBytes) { metric.max(Metric.Playback, BooleanFlag.True); }\n\n // CAUTION: Ensure \"transmit\" is set to false in the queue function for following events\n // Otherwise you run a risk of infinite loop.\n region.compute();\n timeline.compute();\n data.compute();\n style.compute();\n\n // Treat this as the last payload only if final boolean was explicitly set to true.\n // In real world tests, we noticed that certain third party scripts (e.g. https://www.npmjs.com/package/raven-js)\n // could inject function arguments for internal tracking (likely stack traces for script errors).\n // For these edge cases, we want to ensure that an injected object (e.g. {\"key\": \"value\"}) isn't mistaken to be true.\n let last = final === true;\n \n // In some cases envelope has null data because it's part of the shutdown process while there's one upload call queued which might introduce runtime error\n if(!envelope.data) return;\n\n let e = JSON.stringify(envelope.envelope(last));\n let a = `[${analysis.join()}]`;\n\n let p = sendPlaybackBytes ? `[${playback.join()}]` : Constant.Empty;\n \n // For final (beacon) payloads, If size is too large, we need to remove playback data\n if (last && p.length > 0 && (e.length + a.length + p.length > Setting.MaxBeaconPayloadBytes)) {\n p = Constant.Empty;\n }\n\n let encoded: EncodedPayload = {e, a, p};\n\n // Get the payload ready for sending over the wire\n // We also attempt to compress the payload if it is not the last payload and the browser supports it\n // In all other cases, we continue to send back string value\n let payload = stringify(encoded);\n let zipped = last ? null : await compress(payload);\n metric.sum(Metric.TotalBytes, zipped ? zipped.length : payload.length);\n send(payload, zipped, envelope.data.sequence, last);\n\n // Clear out events now that payload has been dispatched\n analysis = [];\n if (sendPlaybackBytes) {\n playback = [];\n playbackBytes = 0;\n discoverBytes = 0;\n leanLimit = false;\n }\n}\n\nfunction stringify(encoded: EncodedPayload): string {\n return encoded.p.length > 0 ? `{\"e\":${encoded.e},\"a\":${encoded.a},\"p\":${encoded.p}}` : `{\"e\":${encoded.e},\"a\":${encoded.a}}`;\n}\n\nfunction send(payload: string, zipped: Uint8Array, sequence: number, beacon: boolean = false): void {\n // Upload data if a valid URL is defined in the config\n if (typeof config.upload === Constant.String) {\n const url = config.upload as string;\n let dispatched = false;\n\n // If it's the last payload, attempt to upload using sendBeacon first.\n // The advantage to using sendBeacon is that browser can decide to upload asynchronously, improving chances of success\n // However, we don't want to rely on it for every payload, since we have no ability to retry if the upload failed.\n // Also, in case of sendBeacon, we do not have a way to alter HTTP headers and therefore can't send compressed payload\n if (beacon && navigator && navigator[\"sendBeacon\"]) {\n try {\n // Navigator needs to be bound to sendBeacon before it is used to avoid errors in some browsers\n dispatched = navigator.sendBeacon.bind(navigator)(url, payload);\n if (dispatched) { \n done(sequence); \n }\n } catch(error) {\n // If sendBeacon fails, we do nothing and continue with XHR upload\n }\n }\n\n // Before initiating XHR upload, we check if the data has already been uploaded using sendBeacon\n // There are two cases when dispatched could still be false:\n // a) It's not the last payload, and therefore we didn't attempt sending sendBeacon\n // b) It's the last payload, however, we failed to queue sendBeacon call and need to now fall back to XHR.\n // E.g. if data is over 64KB, several user agents (like Chrome) will reject to queue the sendBeacon call.\n if (dispatched === false) {\n // While tracking payload for retry, we only track string value of the payload to err on the safe side\n // Not all browsers support compression API and the support for it in supported browsers is still experimental\n if (sequence in transit) { transit[sequence].attempts++; } else { transit[sequence] = { data: payload, attempts: 1 }; }\n let xhr = new XMLHttpRequest();\n xhr.open(\"POST\", url, true);\n xhr.timeout = Setting.UploadTimeout;\n xhr.ontimeout = () => { report(new Error(`${Constant.Timeout} : ${url}`)) };\n if (sequence !== null) { xhr.onreadystatechange = (): void => { measure(check)(xhr, sequence); }; }\n xhr.withCredentials = true;\n if (zipped) {\n // If we do have valid compressed array, send it with appropriate HTTP headers so server can decode it appropriately\n xhr.setRequestHeader(Constant.Accept, Constant.ClarityGzip);\n xhr.send(zipped);\n } else {\n // In all other cases, continue sending string back to the server\n xhr.send(payload);\n }\n }\n } else if (config.upload) {\n const callback = config.upload as UploadCallback;\n callback(payload);\n done(sequence);\n }\n}\n\nfunction check(xhr: XMLHttpRequest, sequence: number): void {\n var transitData = transit[sequence];\n if (xhr && xhr.readyState === XMLReadyState.Done && transitData) {\n // Attempt send payload again (as configured in settings) if we do not receive a success (2XX) response code back from the server\n if ((xhr.status < 200 || xhr.status > 208) && transitData.attempts <= Setting.RetryLimit) {\n // We re-attempt in all cases except when server explicitly rejects our request with 4XX error\n if (xhr.status >= 400 && xhr.status < 500) {\n // In case of a 4XX response from the server, we bail out instead of trying again\n limit.trigger(Check.Server);\n } else {\n // Browser will send status = 0 when it refuses to put network request over the wire\n // This could happen for several reasons, couple of known ones are:\n // 1: Browsers block upload because of content security policy violation\n // 2: Safari will terminate pending XHR requests with status code 0 if the user navigates away from the page\n // In any case, we switch the upload URL to fallback configuration (if available) before re-trying one more time\n if (xhr.status === 0) { config.upload = config.fallback ? config.fallback : config.upload; }\n // Capture the status code and number of attempts so we can report it back to the server\n track = { sequence, attempts: transitData.attempts, status: xhr.status };\n encode(Event.Upload);\n // In all other cases, re-attempt sending the same data\n // For retry we always fallback to string payload, even though we may have attempted\n // sending zipped payload earlier\n send(transitData.data, null, sequence);\n }\n } else {\n track = { sequence, attempts: transitData.attempts, status: xhr.status };\n // Send back an event only if we were not successful in our first attempt\n if (transitData.attempts > 1) { encode(Event.Upload); }\n // Handle response if it was a 200 response with a valid body\n if (xhr.status === 200 && xhr.responseText) { response(xhr.responseText); }\n // If we exhausted our retries then trigger Clarity's shutdown for this page since the data will be incomplete\n if (xhr.status === 0) {\n // And, right before we terminate the session, we will attempt one last time to see if we can use\n // different transport option (sendBeacon vs. XHR) to get this data to the server for analysis purposes\n send(transitData.data, null, sequence, true);\n limit.trigger(Check.Retry);\n }\n // Signal that this request completed successfully\n if (xhr.status >= 200 && xhr.status <= 208) { done(sequence); }\n // Stop tracking this payload now that it's all done\n delete transit[sequence];\n }\n }\n}\n\nfunction done(sequence: number): void {\n // If we everything went successfully, and it is the first sequence, save this session for future reference\n if (sequence === 1) {\n metadata.save();\n metadata.callback();\n }\n}\n\nfunction delay(): number {\n // Progressively increase delay as we continue to send more payloads from the client to the server\n // If we are not uploading data to a server, and instead invoking UploadCallback, in that case keep returning configured value\n let gap = config.lean === false && discoverBytes > 0 ? Setting.MinUploadDelay : envelope.data.sequence * config.delay;\n return typeof config.upload === Constant.String ? Math.max(Math.min(gap, Setting.MaxUploadDelay), Setting.MinUploadDelay) : config.delay;\n}\n\nfunction response(payload: string): void {\n let lines = payload && payload.length > 0 ? payload.split(\"\\n\") : [];\n for (var line of lines)\n {\n let parts = line && line.length > 0 ? line.split(/ (.*)/) : [Constant.Empty];\n switch (parts[0]) {\n case Constant.End:\n // Clear out session storage and end the session so we can start fresh the next time\n limit.trigger(Check.Server);\n break;\n case Constant.Upgrade:\n // Upgrade current session to send back playback information\n clarity.upgrade(Constant.Auto);\n break;\n case Constant.Action:\n // Invoke action callback, if configured and has a valid value\n if (config.action && parts.length > 1) { config.action(parts[1]); }\n break;\n case Constant.Extract:\n if (parts.length > 1) { extract.trigger(parts[1]); }\n break;\n case Constant.Signal:\n if (parts.length > 1) { signalsEvent(parts[1]); }\n break;\n case Constant.Module:\n if (parts.length > 1) {\n dynamic.event(parts[1]);\n }\n break;\n case Constant.Snapshot:\n config.lean = false; // Disable lean mode to ensure we can send playback information to server.\n snapshot();\n break;\n }\n }\n}\n","import { Event, Setting } from \"@clarity-types/data\";\nimport { ScriptErrorData } from \"@clarity-types/diagnostic\";\nimport { bind } from \"@src/core/event\";\nimport encode from \"./encode\";\n\nlet history: { [key: string]: number } = {};\nexport let data: ScriptErrorData;\n\nexport function start(): void {\n bind(window, \"error\", handler);\n history = {};\n}\n\nfunction handler(error: ErrorEvent): boolean {\n let e = error[\"error\"] || error;\n // While rare, it's possible for code to fail repeatedly during the lifetime of the same page\n // In those cases, we only want to log the failure first few times and not spam logs with redundant information.\n if (!(e.message in history)) { history[e.message] = 0; }\n if (history[e.message]++ >= Setting.ScriptErrorLimit) { return true; }\n\n // Send back information only if the handled error has valid information\n if (e && e.message) {\n data = {\n message: e.message,\n line: error[\"lineno\"],\n column: error[\"colno\"],\n stack: e.stack,\n source: error[\"filename\"]\n };\n\n encode(Event.ScriptError);\n }\n\n return true;\n}\n","import { Event, Token } from \"@clarity-types/data\";\nimport * as scrub from \"@src/core/scrub\";\nimport { time } from \"@src/core/time\";\nimport { queue } from \"@src/data/upload\";\nimport * as fraud from \"@src/diagnostic/fraud\";\nimport * as internal from \"@src/diagnostic/internal\";\nimport * as script from \"@src/diagnostic/script\";\n\nexport default async function (type: Event): Promise<void> {\n let tokens: Token[] = [time(), type];\n\n switch (type) {\n case Event.ScriptError:\n tokens.push(script.data.message);\n tokens.push(script.data.line);\n tokens.push(script.data.column);\n tokens.push(script.data.stack);\n tokens.push(scrub.url(script.data.source));\n queue(tokens);\n break;\n case Event.Log:\n if (internal.data) {\n tokens.push(internal.data.code);\n tokens.push(internal.data.name);\n tokens.push(internal.data.message);\n tokens.push(internal.data.stack);\n tokens.push(internal.data.severity);\n queue(tokens, false);\n }\n break;\n case Event.Fraud:\n if (fraud.data) {\n tokens.push(fraud.data.id);\n tokens.push(fraud.data.target);\n tokens.push(fraud.data.checksum);\n queue(tokens, false);\n }\n break;\n }\n}\n","import { Code, Event, Severity } from \"@clarity-types/data\";\nimport { LogData } from \"@clarity-types/diagnostic\";\nimport encode from \"./encode\";\n\nlet history: { [key: number]: string[] } = {};\nexport let data: LogData;\n\nexport function start(): void {\n history = {};\n}\n\nexport function log(code: Code, severity: Severity, name: string = null, message: string = null, stack: string = null): void {\n let key = name ? `${name}|${message}`: \"\";\n // While rare, it's possible for code to fail repeatedly during the lifetime of the same page\n // In those cases, we only want to log the failure once and not spam logs with redundant information.\n if (code in history && history[code].indexOf(key) >= 0) { return; }\n\n data = { code, name, message, stack, severity };\n\n // Maintain history of errors in memory to avoid sending redundant information\n if (code in history) { history[code].push(key); } else { history[code] = [key]; }\n\n encode(Event.Log);\n}\n\nexport function stop(): void {\n history = {};\n}\n","import { AsyncTask, Priority, RequestIdleCallbackDeadline, RequestIdleCallbackOptions, Task, Timer } from \"@clarity-types/core\";\nimport { TaskFunction, TaskResolve, Tasks } from \"@clarity-types/core\";\nimport { Code, Metric, Setting, Severity } from \"@clarity-types/data\";\nimport * as metadata from \"@src/data/metadata\";\nimport * as metric from \"@src/data/metric\";\nimport * as internal from \"@src/diagnostic/internal\";\n\n// Track the start time to be able to compute duration at the end of the task\nconst idleTimeout = 5000;\nlet tracker: Tasks = {};\nlet queuedTasks: AsyncTask[] = [];\nlet activeTask: AsyncTask = null;\nlet pauseTask: Promise<void> = null;\nlet resumeResolve: TaskResolve = null;\n\nexport function pause(): void {\n if (pauseTask === null) {\n pauseTask = new Promise<void>((resolve: TaskResolve): void => {\n resumeResolve = resolve;\n });\n }\n}\n\nexport function resume(): void {\n if (pauseTask) {\n resumeResolve();\n pauseTask = null;\n if (activeTask === null) { run(); }\n }\n}\n\nexport function reset(): void {\n tracker = {};\n queuedTasks = [];\n activeTask = null;\n pauseTask = null;\n}\n\nexport async function schedule(task: TaskFunction, priority: Priority = Priority.Normal): Promise<void> {\n // If this task is already scheduled, skip it\n for (let q of queuedTasks) {\n if (q.task === task) {\n return;\n }\n }\n\n let promise = new Promise<void>((resolve: TaskResolve): void => {\n let insert = priority === Priority.High ? \"unshift\" : \"push\";\n // Queue this task for asynchronous execution later\n // We also store a unique page identifier (id) along with the task to ensure\n // ensure that we do not accidentally execute this task in context of a different page\n queuedTasks[insert]({ task, resolve, id: metadata.id() });\n });\n\n // If there is no active task running, and Clarity is not in pause state,\n // invoke the first task in the queue synchronously. This ensures that we don't yield the thread during unload event\n if (activeTask === null && pauseTask === null) { run(); }\n\n return promise;\n}\n\nfunction run(): void {\n let entry = queuedTasks.shift();\n if (entry) {\n activeTask = entry;\n entry.task().then((): void => {\n // Bail out if the context in which this task was operating is different from the current page\n // An example scenario where task could span across pages is Single Page Applications (SPA)\n // A task that started on page #1, but completes on page #2\n if (entry.id !== metadata.id()) { return; }\n entry.resolve();\n activeTask = null; // Reset active task back to null now that the promise is resolved\n run();\n }).catch((error: Error): void => {\n // If one of the scheduled tasks failed, log, recover and continue processing rest of the tasks\n if (entry.id !== metadata.id()) { return; }\n if (error) { internal.log(Code.RunTask, Severity.Warning, error.name, error.message, error.stack); }\n activeTask = null;\n run();\n });\n }\n}\n\nexport function state(timer: Timer): Task {\n let id = key(timer);\n if (id in tracker) {\n let elapsed = performance.now() - tracker[id].start;\n return (elapsed > tracker[id].yield) ? Task.Wait : Task.Run;\n }\n // If this task is no longer being tracked, send stop message to the caller\n return Task.Stop;\n}\n\nexport function start(timer: Timer): void {\n tracker[key(timer)] = { start: performance.now(), calls: 0, yield: Setting.LongTask };\n}\n\nfunction restart(timer: Timer): void {\n let id = key(timer);\n if (tracker && tracker[id]) {\n let c = tracker[id].calls;\n let y = tracker[id].yield;\n start(timer);\n tracker[id].calls = c + 1;\n tracker[id].yield = y;\n }\n}\n\nexport function stop(timer: Timer): void {\n let end = performance.now();\n let id = key(timer);\n let duration = end - tracker[id].start;\n metric.sum(timer.cost, duration);\n metric.count(Metric.InvokeCount);\n\n // For the first execution, which is synchronous, time is automatically counted towards TotalDuration.\n // However, for subsequent asynchronous runs, we need to manually update TotalDuration metric.\n if (tracker[id].calls > 0) { metric.sum(Metric.TotalCost, duration); }\n}\n\nexport async function suspend(timer: Timer): Promise<Task> {\n // Suspend and yield the thread only if the task is still being tracked\n // It's possible that Clarity is wrapping up instrumentation on a page and we are still in the middle of an async task.\n // In that case, we do not wish to continue yielding thread.\n // Instead, we will turn async task into a sync task and maximize our chances of getting some data back.\n let id = key(timer);\n if (id in tracker) {\n stop(timer);\n // some customer polyfills for requestIdleCallback return null \n tracker[id].yield = (await wait())?.timeRemaining() || Setting.LongTask;\n restart(timer);\n }\n // After we are done with suspending task, ensure that we are still operating in the right context\n // If the task is still being tracked, continue running the task, otherwise ask caller to stop execution\n return id in tracker ? Task.Run : Task.Stop;\n}\n\nfunction key(timer: Timer): string {\n return `${timer.id}.${timer.cost}`;\n}\n\nasync function wait(): Promise<RequestIdleCallbackDeadline> {\n if (pauseTask) { await pauseTask; }\n return new Promise<RequestIdleCallbackDeadline>((resolve: (deadline: RequestIdleCallbackDeadline) => void): void => {\n requestIdleCallback(resolve, { timeout: idleTimeout });\n });\n}\n\n// Use native implementation of requestIdleCallback if it exists.\n// Otherwise, fall back to a custom implementation using requestAnimationFrame & MessageChannel.\n// While it's not possible to build a perfect polyfill given the nature of this API, the following code attempts to get close.\n// Background context: requestAnimationFrame invokes the js code right before: style, layout and paint computation within the frame.\n// This means, that any code that runs as part of requestAnimationFrame will by default be blocking in nature. Not what we want.\n// For non-blocking behavior, We need to know when browser has finished painting. This can be accomplished in two different ways (hacks):\n// (1) Use MessageChannel to pass the message, and browser will receive the message right after paint event has occured.\n// (2) Use setTimeout call within requestAnimationFrame. This also works, but there's a risk that browser may throttle setTimeout calls.\n// Given this information, we are currently using (1) from above. More information on (2) as well as some additional context is below:\n// https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Performance_best_practices_for_Firefox_fe_engineers\nfunction requestIdleCallbackPolyfill(callback: (deadline: RequestIdleCallbackDeadline) => void, options: RequestIdleCallbackOptions): void {\n const startTime = performance.now();\n const channel = new MessageChannel();\n const incoming = channel.port1;\n const outgoing = channel.port2;\n incoming.onmessage = (event: MessageEvent): void => {\n let currentTime = performance.now();\n let elapsed = currentTime - startTime;\n let duration = currentTime - event.data;\n if (duration > Setting.LongTask && elapsed < options.timeout) {\n requestAnimationFrame((): void => { outgoing.postMessage(currentTime); });\n } else {\n let didTimeout = elapsed > options.timeout;\n callback({\n didTimeout,\n timeRemaining: (): number => didTimeout ? Setting.LongTask : Math.max(0, Setting.LongTask - duration)\n });\n }\n };\n requestAnimationFrame((): void => { outgoing.postMessage(performance.now()); });\n}\n\nlet requestIdleCallback = window[\"requestIdleCallback\"] || requestIdleCallbackPolyfill;\n","import { Priority, Timer } from \"@clarity-types/core\";\nimport { Event, Metric } from \"@clarity-types/data\";\nimport { Source } from \"@clarity-types/layout\";\nimport measure from \"@src/core/measure\";\nimport * as task from \"@src/core/task\";\nimport { time } from \"@src/core/time\";\nimport { id } from \"@src/data/metadata\";\nimport * as doc from \"@src/layout/document\";\nimport encode from \"@src/layout/encode\";\nimport * as region from \"@src/layout/region\";\nimport traverse from \"@src/layout/traverse\";\nimport { checkDocumentStyles } from \"@src/layout/style\";\nimport * as scroll from \"@src/interaction/scroll\";\n\nexport function start(): void {\n task.schedule(discover, Priority.High).then((): void => {\n measure(doc.compute)();\n measure(region.compute)();\n measure(scroll.compute)();\n });\n}\n\nasync function discover(): Promise<void> {\n let ts = time();\n let timer: Timer = { id: id(), cost: Metric.LayoutCost };\n task.start(timer);\n await traverse(document, timer, Source.Discover, ts);\n checkDocumentStyles(document, ts);\n await encode(Event.Discover, timer, ts);\n task.stop(timer);\n}\n","import { Constant, Event, UpgradeData } from \"@clarity-types/data\";\nimport * as core from \"@src/core\";\nimport config from \"@src/core/config\";\nimport encode from \"@src/data/encode\";\nimport * as metadata from \"@src/data/metadata\";\nimport * as discover from \"@src/layout/discover\";\nimport * as style from \"@src/layout/style\";\n\nexport let data: UpgradeData = null;\n\nexport function start(): void {\n if (!config.lean && config.upgrade) { config.upgrade(Constant.Config); }\n data = null;\n}\n\n// Following call will upgrade the session from lean mode into the full mode retroactively from the start of the page.\n// As part of the lean mode, we do not send back any layout information - including discovery of DOM and mutations.\n// However, if there's a need for full fidelity playback, calling this function will disable lean mode\n// and send all backed up layout events to the server.\nexport function upgrade(key: string): void {\n // Upgrade only if Clarity was successfully activated on the page\n if (core.active() && config.lean) {\n config.lean = false;\n data = { key };\n\n // Update metadata to track we have upgraded this session\n metadata.callback();\n metadata.save();\n\n // Callback upgrade handler, if configured\n if (config.upgrade) { config.upgrade(key); }\n\n encode(Event.Upgrade);\n\n if (config.lite) {\n discover.start();\n style.start();\n }\n }\n}\n\nexport function stop(): void {\n data = null;\n}\n","import { Event, Token } from \"@clarity-types/data\";\nimport { time } from \"@src/core/time\";\nimport * as baseline from \"@src/data/baseline\";\nimport * as consent from \"@src/data/consent\";\nimport * as custom from \"@src/data/custom\";\nimport * as dimension from \"@src/data/dimension\";\nimport * as limit from \"@src/data/limit\";\nimport * as metric from \"@src/data/metric\";\nimport * as ping from \"@src/data/ping\";\nimport * as summary from \"@src/data/summary\";\nimport * as upgrade from \"@src/data/upgrade\";\nimport * as variable from \"@src/data/variable\";\nimport * as extract from \"@src/data/extract\";\nimport { queue, track } from \"./upload\";\n\nexport default function(event: Event): void {\n const t = time();\n let tokens: Token[] = [t, event]; \n switch (event) {\n case Event.Baseline: {\n const b = baseline.state;\n if (b && b.data) {\n tokens = [b.time, b.event];\n tokens.push(b.data.visible);\n tokens.push(b.data.docWidth);\n tokens.push(b.data.docHeight);\n tokens.push(b.data.screenWidth);\n tokens.push(b.data.screenHeight);\n tokens.push(b.data.scrollX);\n tokens.push(b.data.scrollY);\n tokens.push(b.data.pointerX);\n tokens.push(b.data.pointerY);\n tokens.push(b.data.activityTime);\n tokens.push(b.data.scrollTime);\n tokens.push(b.data.pointerTime);\n tokens.push(b.data.moveX);\n tokens.push(b.data.moveY);\n tokens.push(b.data.moveTime);\n tokens.push(b.data.downX);\n tokens.push(b.data.downY);\n tokens.push(b.data.downTime);\n tokens.push(b.data.upX);\n tokens.push(b.data.upY);\n tokens.push(b.data.upTime);\n tokens.push(b.data.pointerPrevX);\n tokens.push(b.data.pointerPrevY);\n tokens.push(b.data.pointerPrevTime);\n tokens.push(b.data.modules);\n queue(tokens, false);\n }\n baseline.reset();\n break;\n }\n case Event.Ping:\n tokens.push(ping.data.gap);\n queue(tokens);\n break;\n case Event.Limit:\n tokens.push(limit.data.check);\n queue(tokens, false);\n break;\n case Event.Upgrade:\n tokens.push(upgrade.data.key);\n queue(tokens);\n break;\n case Event.Upload:\n tokens.push(track.sequence);\n tokens.push(track.attempts);\n tokens.push(track.status);\n queue(tokens, false);\n break;\n case Event.Custom:\n // not all custom events have a key - if it wasn't passed server handles just value\n custom.data.key && tokens.push(custom.data.key);\n tokens.push(custom.data.value);\n queue(tokens);\n break;\n case Event.Variable: {\n const variableKeys = Object.keys(variable.data);\n if (variableKeys.length > 0) {\n for (const v of variableKeys) {\n tokens.push(v);\n tokens.push(variable.data[v]);\n }\n variable.reset();\n queue(tokens, false);\n }\n break;\n }\n case Event.Metric: {\n const metricKeys = Object.keys(metric.updates);\n if (metricKeys.length > 0) {\n for (const m of metricKeys) {\n const key = parseInt(m, 10);\n tokens.push(key);\n // For computation, we need microseconds precision that performance.now() API offers\n // However, for data over the wire, we round it off to milliseconds precision.\n tokens.push(Math.round(metric.updates[m]));\n }\n metric.reset();\n queue(tokens, false);\n }\n break;\n }\n case Event.Dimension: {\n const dimensionKeys = Object.keys(dimension.updates);\n if (dimensionKeys.length > 0) {\n for (const d of dimensionKeys) {\n const key = parseInt(d, 10);\n tokens.push(key);\n tokens.push(dimension.updates[d]);\n }\n dimension.reset();\n queue(tokens, false);\n }\n break;\n }\n case Event.Summary: {\n const eventKeys = Object.keys(summary.data);\n if (eventKeys.length > 0) {\n for (const e of eventKeys) {\n const key = parseInt(e, 10);\n tokens.push(key);\n tokens.push([].concat(...summary.data[e]));\n }\n summary.reset();\n queue(tokens, false);\n }\n break;\n }\n case Event.Extract: {\n const extractKeys = extract.keys;\n extractKeys.forEach(e => {\n tokens.push(e);\n const token = []\n for (const d in extract.data[e]) {\n const key = parseInt(d, 10);\n token.push(key);\n token.push(extract.data[e][d]);\n }\n tokens.push(token);\n });\n \n extract.reset();\n queue(tokens, false);\n break;\n }\n case Event.Consent: \n tokens.push(consent.data.source);\n tokens.push(consent.data.ad_Storage);\n tokens.push(consent.data.analytics_Storage);\n queue(tokens, false);\n break;\n }\n}\n","import { Check, Event, LimitData, Setting } from \"@clarity-types/data\";\nimport * as clarity from \"@src/clarity\";\nimport { time } from \"@src/core/time\";\nimport * as envelope from \"@src/data/envelope\";\nimport * as metadata from \"@src/data/metadata\";\nimport encode from \"./encode\";\n\nexport let data: LimitData;\n\nexport function start(): void {\n data = { check: Check.None };\n}\n\nexport function check(bytes: number): void {\n if (data.check === Check.None) {\n let reason = data.check;\n reason = envelope.data.sequence >= Setting.PayloadLimit ? Check.Payload : reason;\n reason = envelope.data.pageNum >= Setting.PageLimit ? Check.Page : reason;\n reason = time() > Setting.ShutdownLimit ? Check.Shutdown : reason;\n reason = bytes > Setting.PlaybackBytesLimit ? Check.Shutdown : reason;\n if (reason !== data.check) {\n trigger(reason);\n }\n }\n}\n\nexport function trigger(reason: Check): void {\n data.check = reason;\n // limit the dimensions we collect, but we don't need to stop Clarity entirely if we hit the limit\n if (reason !== Check.Collection) {\n metadata.clear();\n clarity.stop();\n }\n}\n\nexport function compute(): void {\n if (data.check !== Check.None) {\n encode(Event.Limit);\n }\n}\n\nexport function stop(): void {\n data = null;\n}\n","import { Check, Event, Dimension, DimensionData, Setting } from \"@clarity-types/data\";\nimport * as limit from \"@src/data/limit\";\nimport encode from \"./encode\";\n\nexport let data: DimensionData = null;\nexport let updates: DimensionData = null;\nlet limited = false;\n\nexport function start(): void {\n data = {};\n updates = {};\n limited = false;\n}\n\nexport function stop(): void {\n data = {};\n updates = {};\n limited = false;\n}\n\nexport function log(dimension: Dimension, value: string): void {\n // Check valid value before moving ahead\n if (value) {\n // Ensure received value is casted into a string if it wasn't a string to begin with\n value = `${value}`;\n if (!(dimension in data)) { data[dimension] = []; }\n if (data[dimension].indexOf(value) < 0) {\n // Limit check to ensure we have a cap on number of dimensions we can collect\n if (data[dimension].length > Setting.CollectionLimit) {\n if (!limited) {\n limited = true;\n limit.trigger(Check.Collection); \n }\n return;\n }\n\n data[dimension].push(value);\n // If this is a new value, track it as part of updates object\n // This allows us to only send back new values in subsequent payloads\n if (!(dimension in updates)) { updates[dimension] = []; }\n updates[dimension].push(value);\n }\n }\n}\n\nexport function compute(): void {\n encode(Event.Dimension);\n}\n\nexport function reset(): void {\n updates = {};\n limited = false;\n}\n","import { ConsentData, ConsentSource, ConsentState, ConsentType, Constant, Dimension, Event, GCMConsent, GCMConsentState } from \"@clarity-types/data\";\nimport * as dimension from \"@src/data/dimension\";\nimport encode from \"./encode\";\nimport { consentv2 } from \"@src/data/metadata\";\nimport coreConfig from \"@src/core/config\";\n\nexport let data: ConsentData = null;\nlet updateConsent: boolean = true;\n\nexport function start(): void {\n const ics = window.google_tag_data?.ics;\n updateConsent = true;\n if (ics?.addListener) {\n ics.addListener(\n [Constant.AdStorage, Constant.AnalyticsStorage],\n processConsent\n );\n }\n}\n\nexport function stop(): void {\n updateConsent = true;\n}\n\nfunction processConsent(): void {\n const ics = window.google_tag_data?.ics;\n if (!ics?.getConsentState) {\n return;\n }\n\n const analytics_storage = ics.getConsentState(Constant.AnalyticsStorage);\n const ad_storage = ics.getConsentState(Constant.AdStorage);\n const consentState = getGcmConsentState({ ad_Storage: ad_storage, analytics_Storage: analytics_storage });\n consentv2(consentState);\n}\n\nfunction getGcmConsentState(googleConsent: GCMConsentState): ConsentState {\n const consentState: ConsentState = {\n source: ConsentSource.GCM,\n ad_Storage: googleConsent.ad_Storage === GCMConsent.Granted ? Constant.Granted : Constant.Denied,\n analytics_Storage: googleConsent.analytics_Storage === GCMConsent.Granted ? Constant.Granted : Constant.Denied,\n };\n\n return consentState;\n}\n\n\nexport function config(consent: ConsentData): void {\n trackConsent(consent.analytics_Storage ? ConsentType.Implicit : ConsentType.None);\n data = consent;\n}\n\n// When we get consent signal as false, we restart the service and track config as false.\nexport function consent(): void {\n trackConsent(ConsentType.General);\n}\n\nfunction trackConsent(consent: ConsentType): void {\n dimension.log(Dimension.Consent, consent.toString());\n}\n\nexport function trackConsentv2(consent: ConsentData): void {\n data = consent;\n encode(Event.Consent);\n}\n\n// Compute function is called every upload, but we only want to send consent data once.\nexport function compute(): void {\n if (updateConsent) {\n encode(Event.Consent);\n updateConsent = false;\n if (!coreConfig.track) {\n const ics = window.google_tag_data?.ics;\n if (ics?.usedUpdate) {\n processConsent();\n }\n }\n }\n}","import { Constant as CoreConstant, Time } from \"@clarity-types/core\";\nimport { BooleanFlag, ConsentData, ConsentSource, ConsentState, Constant, Dimension, Metadata, MetadataCallback, MetadataCallbackOptions, Metric, Session, Setting, User } from \"@clarity-types/data\";\nimport * as clarity from \"@src/clarity\";\nimport * as core from \"@src/core\";\nimport config from \"@src/core/config\";\nimport hash from \"@src/core/hash\";\nimport * as scrub from \"@src/core/scrub\";\nimport * as trackConsent from \"@src/data/consent\";\nimport { COOKIE_SEP, getCookie, setCookie } from \"@src/data/cookie\";\nimport * as dimension from \"@src/data/dimension\";\nimport * as metric from \"@src/data/metric\";\nimport { supported } from \"@src/data/util\";\nimport { set } from \"@src/data/variable\";\n\nexport let data: Metadata = null;\nexport let callbacks: MetadataCallbackOptions[] = [];\nexport let electron = BooleanFlag.False;\nlet consentStatus: ConsentState = null;\nlet defaultStatus: ConsentState = { source: ConsentSource.Default, ad_Storage: Constant.Denied, analytics_Storage: Constant.Denied };\n\nexport function start(): void {\n const ua = navigator && \"userAgent\" in navigator ? navigator.userAgent : Constant.Empty;\n const timezone = (typeof Intl !== 'undefined' && Intl?.DateTimeFormat()?.resolvedOptions()?.timeZone) ?? '';\n const timezoneOffset = new Date().getTimezoneOffset().toString();\n const ancestorOrigins = window.location.ancestorOrigins ? Array.from(window.location.ancestorOrigins).toString() : '';\n const title = document && document.title ? document.title : Constant.Empty;\n electron = ua.indexOf(Constant.Electron) > 0 ? BooleanFlag.True : BooleanFlag.False;\n\n // Populate ids for this page\n let s = session();\n let u = user();\n let projectId = config.projectId || hash(location.host);\n data = { projectId, userId: u.id, sessionId: s.session, pageNum: s.count };\n\n // Override configuration based on what's in the session storage, unless it is blank (e.g. using upload callback, like in devtools)\n config.lean = config.track && s.upgrade !== null ? s.upgrade === BooleanFlag.False : config.lean;\n config.upload = config.track && typeof config.upload === Constant.String && s.upload && s.upload.length > Constant.HTTPS.length ? s.upload : config.upload;\n\n // Log page metadata as dimensions\n dimension.log(Dimension.UserAgent, ua);\n dimension.log(Dimension.PageTitle, title);\n dimension.log(Dimension.Url, scrub.url(location.href, !!electron));\n dimension.log(Dimension.Referrer, document.referrer);\n dimension.log(Dimension.TabId, tab());\n dimension.log(Dimension.PageLanguage, document.documentElement.lang);\n dimension.log(Dimension.DocumentDirection, document.dir);\n dimension.log(Dimension.DevicePixelRatio, `${window.devicePixelRatio}`);\n dimension.log(Dimension.Dob, u.dob.toString());\n dimension.log(Dimension.CookieVersion, u.version.toString());\n dimension.log(Dimension.AncestorOrigins, ancestorOrigins);\n dimension.log(Dimension.Timezone, timezone);\n dimension.log(Dimension.TimezoneOffset, timezoneOffset);\n\n // Capture additional metadata as metrics\n metric.max(Metric.ClientTimestamp, s.ts);\n metric.max(Metric.Playback, BooleanFlag.False);\n metric.max(Metric.Electron, electron);\n\n const zone = (window as any)?.[CoreConstant.Zone];\n const isZone = zone && CoreConstant.Symbol in zone;\n\n if (isZone) {\n metric.max(Metric.AngularZone, BooleanFlag.True);\n }\n\n // Capture navigator specific dimensions\n if (navigator) {\n dimension.log(Dimension.Language, navigator.language);\n metric.max(Metric.HardwareConcurrency, navigator.hardwareConcurrency);\n metric.max(Metric.MaxTouchPoints, navigator.maxTouchPoints);\n metric.max(Metric.DeviceMemory, Math.round((<any>navigator).deviceMemory));\n userAgentData();\n }\n\n if (screen) {\n metric.max(Metric.ScreenWidth, Math.round(screen.width));\n metric.max(Metric.ScreenHeight, Math.round(screen.height));\n metric.max(Metric.ColorDepth, Math.round(screen.colorDepth));\n }\n\n // Read cookies specified in configuration\n for (let key of config.cookies) {\n let value = getCookie(key);\n if (value) { set(key, value); }\n }\n\n // Track consent config\n // If consent status is not already set, initialize it based on project configuration. Otherwise, use the existing consent status.\n if (consentStatus === null) {\n consentStatus = {\n source: u.consent ? ConsentSource.Cookie : ConsentSource.Implicit,\n ad_Storage: config.track ? Constant.Granted : Constant.Denied,\n analytics_Storage: config.track ? Constant.Granted : Constant.Denied,\n };\n }\n const consent = getConsentData(consentStatus);\n trackConsent.config(consent);\n // Track ids using a cookie if configuration allows it\n track(u);\n}\n\nfunction userAgentData(): void {\n let uaData = navigator[\"userAgentData\"];\n if (uaData && uaData.getHighEntropyValues) {\n uaData.getHighEntropyValues([\"model\", \"platform\", \"platformVersion\", \"uaFullVersion\"]).then(ua => {\n dimension.log(Dimension.Platform, ua.platform);\n dimension.log(Dimension.PlatformVersion, ua.platformVersion);\n ua.brands?.forEach(brand => { dimension.log(Dimension.Brand, brand.name + Constant.Tilde + brand.version); });\n dimension.log(Dimension.Model, ua.model);\n metric.max(Metric.Mobile, ua.mobile ? BooleanFlag.True : BooleanFlag.False);\n });\n } else { dimension.log(Dimension.Platform, navigator.platform); }\n}\n\nexport function stop(): void {\n data = null;\n callbacks.forEach(cb => { cb.called = false; });\n}\n\nexport function metadata(cb: MetadataCallback, wait: boolean = true, recall: boolean = false, consentInfo: boolean = false): void {\n let upgraded = config.lean ? BooleanFlag.False : BooleanFlag.True;\n let called = false;\n // if caller hasn't specified that they want to skip waiting for upgrade but we've already upgraded, we need to\n // directly execute the callback in addition to adding to our list as we only process callbacks at the moment\n // we go through the upgrading flow.\n if (data && (upgraded || wait === false)) {\n // Immediately invoke the callback if the caller explicitly doesn't want to wait for the upgrade confirmation\n cb(data, !config.lean, consentInfo ? consentStatus : undefined);\n called = true;\n }\n if (recall || !called) {\n callbacks.push({ callback: cb, wait, recall, called, consentInfo });\n }\n}\n\nexport function id(): string {\n return data ? [data.userId, data.sessionId, data.pageNum].join(Constant.Dot) : Constant.Empty;\n}\n\n//TODO: Remove this function once consentv2 is fully released\nexport function consent(status = true): void {\n if (!status) {\n consentv2({ source: ConsentSource.APIv1, ad_Storage: Constant.Denied, analytics_Storage: Constant.Denied });\n return;\n }\n\n consentv2({ source: ConsentSource.APIv1, ad_Storage: Constant.Granted, analytics_Storage: Constant.Granted });\n trackConsent.consent();\n}\n\nexport function consentv2(consentState: ConsentState = defaultStatus, source: number = ConsentSource.APIv2): void {\n const updatedStatus = {\n source: consentState.source ?? source,\n ad_Storage: normalizeConsent(consentState.ad_Storage, consentStatus?.ad_Storage),\n analytics_Storage: normalizeConsent(consentState.analytics_Storage, consentStatus?.analytics_Storage),\n };\n\n if (\n consentStatus &&\n updatedStatus.ad_Storage === consentStatus.ad_Storage &&\n updatedStatus.analytics_Storage === consentStatus.analytics_Storage\n ) {\n consentStatus.source = updatedStatus.source;\n trackConsent.trackConsentv2(getConsentData(consentStatus));\n trackConsent.consent();\n return;\n }\n\n consentStatus = updatedStatus;\n callback(true);\n const consentData = getConsentData(consentStatus);\n\n if (!consentData.analytics_Storage && config.track) {\n config.track = false;\n clear(true);\n clarity.stop();\n window.setTimeout(clarity.start, Setting.RestartDelay);\n return;\n }\n\n if (core.active() && consentData.analytics_Storage) {\n config.track = true;\n track(user(), BooleanFlag.True);\n save();\n }\n\n trackConsent.trackConsentv2(consentData);\n trackConsent.consent();\n}\n\nfunction getConsentData(consentState: ConsentState): ConsentData {\n let consent: ConsentData = {\n source: consentState.source ?? ConsentSource.Implicit,\n ad_Storage: consentState.ad_Storage === Constant.Granted ? BooleanFlag.True : BooleanFlag.False,\n analytics_Storage: consentState.analytics_Storage === Constant.Granted ? BooleanFlag.True : BooleanFlag.False,\n };\n\n return consent;\n}\n\nfunction normalizeConsent(value: unknown, fallback: string = Constant.Denied): string {\n return typeof value === 'string' ? value.toLowerCase() : fallback;\n}\n\nexport function clear(all: boolean = false): void {\n // Clear any stored information in the cookie that tracks session information so we can restart fresh the next time\n setCookie(Constant.SessionKey, Constant.Empty, -Number.MAX_VALUE);\n\n // Clear user cookie as well if all flag is set\n if (all) {\n setCookie(Constant.CookieKey, Constant.Empty, -Number.MAX_VALUE);\n }\n}\n\nfunction tab(): string {\n let id = shortid();\n if (config.track && supported(window, Constant.SessionStorage)) {\n let value = sessionStorage.getItem(Constant.TabKey);\n id = value ? value : id;\n sessionStorage.setItem(Constant.TabKey, id);\n }\n return id;\n}\n\nexport function callback(consentUpdate: boolean = false): void {\n let upgrade = config.lean ? BooleanFlag.False : BooleanFlag.True;\n processCallback(upgrade, consentUpdate);\n}\n\nexport function save(): void {\n if (!data || !config.track) return;\n let ts = Math.round(Date.now());\n let upload = config.upload && typeof config.upload === Constant.String ? (config.upload as string).replace(Constant.HTTPS, Constant.Empty) : Constant.Empty;\n let upgrade = config.lean ? BooleanFlag.False : BooleanFlag.True;\n setCookie(Constant.SessionKey, [data.sessionId, ts, data.pageNum, upgrade, upload].join(COOKIE_SEP), Setting.SessionExpire);\n}\n\nfunction processCallback(upgrade: BooleanFlag, consentUpdate: boolean = false): void {\n if (callbacks.length > 0) {\n for (let i = 0; i < callbacks.length; i++) {\n const cb = callbacks[i];\n if (\n cb.callback &&\n ((!cb.called && !consentUpdate) || (cb.consentInfo && consentUpdate)) && //If consentUpdate is true, we only call the callback if it has consentInfo\n (!cb.wait || upgrade)\n ) {\n cb.callback(data, !config.lean, cb.consentInfo ? consentStatus : undefined);\n cb.called = true;\n if (!cb.recall) {\n callbacks.splice(i, 1);\n i--;\n }\n }\n }\n }\n}\n\nfunction track(u: User, consent: BooleanFlag = null): void {\n // If consent is not explicitly specified, infer it from the user object\n consent = consent === null ? u.consent : consent;\n // Convert time precision into days to reduce number of bytes we have to write in a cookie\n // E.g. Math.ceil(1628735962643 / (24*60*60*1000)) => 18852 (days) => ejo in base36 (13 bytes => 3 bytes)\n let end = Math.ceil((Date.now() + (Setting.Expire * Time.Day)) / Time.Day);\n // If DOB is not set in the user object, use the date set in the config as a DOB\n let dob = u.dob === 0 ? (config.dob === null ? 0 : config.dob) : u.dob;\n\n // To avoid cookie churn, write user id cookie only once every day\n if (u.expiry === null || Math.abs(end - u.expiry) >= Setting.CookieInterval || u.consent !== consent || u.dob !== dob) {\n let cookieParts = [data.userId, Setting.CookieVersion, end.toString(36), consent, dob];\n setCookie(Constant.CookieKey, cookieParts.join(COOKIE_SEP), Setting.Expire);\n }\n}\n\nexport function shortid(): string {\n let id = Math.floor(Math.random() * Math.pow(2, 32));\n if (window && window.crypto && window.crypto.getRandomValues && Uint32Array) {\n id = window.crypto.getRandomValues(new Uint32Array(1))[0];\n }\n return id.toString(36);\n}\n\nfunction session(): Session {\n let output: Session = { session: shortid(), ts: Math.round(Date.now()), count: 1, upgrade: null, upload: Constant.Empty };\n let value = getCookie(Constant.SessionKey, !config.includeSubdomains);\n if (value) {\n // Maintaining support for pipe separator for backward compatibility, this can be removed in future releases\n let parts = value.includes(Constant.Caret) ? value.split(Constant.Caret) : value.split(Constant.Pipe);\n // Making it backward & forward compatible by using greater than comparison (v0.6.21)\n // In future version, we can reduce the parts length to be 5 where the last part contains the full upload URL\n if (parts.length >= 5 && output.ts - num(parts[1]) < Setting.SessionTimeout) {\n output.session = parts[0];\n output.count = num(parts[2]) + 1;\n output.upgrade = num(parts[3]);\n output.upload = parts.length >= 6 ? `${Constant.HTTPS}${parts[5]}/${parts[4]}` : `${Constant.HTTPS}${parts[4]}`;\n }\n }\n return output;\n}\n\nfunction num(string: string, base: number = 10): number {\n return parseInt(string, base);\n}\n\nfunction user(): User {\n let output: User = { id: shortid(), version: 0, expiry: null, consent: BooleanFlag.False, dob: 0 };\n let cookie = getCookie(Constant.CookieKey, !config.includeSubdomains);\n if (cookie && cookie.length > 0) {\n // Splitting and looking up first part for forward compatibility, in case we wish to store additional information in a cookie\n // Maintaining support for pipe separator for backward compatibility, this can be removed in future releases\n let parts = cookie.includes(Constant.Caret) ? cookie.split(Constant.Caret) : cookie.split(Constant.Pipe);\n // Read version information and timestamp from cookie, if available\n if (parts.length > 1) { output.version = num(parts[1]); }\n if (parts.length > 2) { output.expiry = num(parts[2], 36); }\n // Check if we have explicit consent to track this user\n if (parts.length > 3 && num(parts[3]) === 1) { output.consent = BooleanFlag.True; }\n if (parts.length > 4 && num(parts[1]) > 1) { output.dob = num(parts[4]); }\n // Set track configuration to true for this user if we have explicit consent, regardless of project setting\n config.track = config.track || output.consent === BooleanFlag.True;\n // Get user id from cookie only if we tracking is enabled, otherwise fallback to a random id\n output.id = config.track ? parts[0] : output.id;\n }\n return output;\n}\n\n","import { BooleanFlag, Token, Upload, Envelope, ApplicationPlatform } from \"@clarity-types/data\";\nimport { time } from \"@src/core/time\";\nimport version from \"@src/core/version\";\nimport * as metadata from \"@src/data/metadata\";\nimport * as scrub from \"@src/core/scrub\";\n\nexport let data: Envelope = null;\n\nexport function start(): void {\n const m = metadata.data;\n data = {\n version,\n sequence: 0,\n start: 0,\n duration: 0,\n projectId: m.projectId,\n userId: m.userId,\n sessionId: m.sessionId,\n pageNum: m.pageNum,\n upload: Upload.Async,\n end: BooleanFlag.False,\n applicationPlatform: ApplicationPlatform.WebApp,\n url: ''\n };\n}\n\nexport function stop(): void {\n data = null;\n}\n\nexport function envelope(last: boolean): Token[] {\n data.start = data.start + data.duration;\n data.duration = time() - data.start;\n data.sequence++;\n data.upload = last && \"sendBeacon\" in navigator ? Upload.Beacon : Upload.Async;\n data.end = last ? BooleanFlag.True : BooleanFlag.False;\n data.applicationPlatform = ApplicationPlatform.WebApp;\n data.url = scrub.url(location.href, false, true);\n return [\n data.version,\n data.sequence,\n data.start,\n data.duration,\n data.projectId,\n data.userId,\n data.sessionId,\n data.pageNum,\n data.upload,\n data.end,\n data.applicationPlatform,\n data.url\n ];\n}\n","import { Report } from \"@clarity-types/core\";\nimport config from \"@src/core/config\";\nimport { data } from \"@src/data/envelope\";\n\nlet history: string[];\n\nexport function reset(): void {\n history = [];\n}\n\nexport function report(e: Error): Error {\n // Do not report the same message twice for the same page\n if (history && history.indexOf(e.message) === -1) {\n const url = config.report;\n if (url && url.length > 0 && data) {\n let payload: Report = {v: data.version, p: data.projectId, u: data.userId, s: data.sessionId, n: data.pageNum};\n if (e.message) { payload.m = e.message; }\n if (e.stack) { payload.e = e.stack; }\n // Using POST request instead of a GET request (img-src) to not violate existing CSP rules\n // Since, Clarity already uses XHR to upload data, we stick with similar POST mechanism for reporting too\n let xhr = new XMLHttpRequest();\n xhr.open(\"POST\", url, true);\n xhr.send(JSON.stringify(payload));\n history.push(e.message);\n }\n }\n return e;\n}\n","import { Code, Metric, Setting, Severity } from \"@clarity-types/data\";\nimport { report } from \"@src/core/report\";\nimport * as metric from \"@src/data/metric\";\nimport * as internal from \"@src/diagnostic/internal\";\n\n// tslint:disable-next-line: ban-types\nexport default function (method: Function): Function {\n return function (): void {\n let start = performance.now();\n try { method.apply(this, arguments); } catch (ex) { throw report(ex); }\n let duration = performance.now() - start;\n metric.sum(Metric.TotalCost, duration);\n if (duration > Setting.LongTask) {\n metric.count(Metric.LongTaskCount);\n metric.max(Metric.ThreadBlockedTime, duration);\n method.dn && internal.log(Code.FunctionExecutionTime, Severity.Info, `${method.dn}-${duration}`);\n }\n };\n}\n","import { BrowserEvent, Constant } from \"@clarity-types/core\";\nimport api from \"./api\";\nimport measure from \"./measure\";\n\nlet bindings: Map<EventTarget, BrowserEvent[]> = new Map();\n\nexport function bind(target: EventTarget, event: string, listener: EventListener, capture: boolean = false, passive: boolean = true): void {\n listener = measure(listener) as EventListener;\n // Wrapping following lines inside try / catch to cover edge cases where we might try to access an inaccessible element.\n // E.g. Iframe may start off as same-origin but later turn into cross-origin, and the following lines will throw an exception.\n try {\n target[api(Constant.AddEventListener)](event, listener, { capture, passive });\n if (!has(target)) {\n bindings.set(target, []);\n }\n\n bindings.get(target).push({ event, listener, options: { capture, passive } });\n } catch {\n /* do nothing */\n }\n}\n\nexport function reset(): void {\n // Walk through existing list of bindings and remove them all\n bindings.forEach((bindingsPerTarget: BrowserEvent[], target: EventTarget) => {\n resetByTarget(bindingsPerTarget, target);\n });\n\n bindings = new Map();\n}\n\nexport function unbind(target: EventTarget) {\n if (!has(target)) {\n return;\n }\n resetByTarget(bindings.get(target), target);\n}\n\nexport function has(target: EventTarget): boolean {\n return bindings.has(target);\n}\n\nfunction resetByTarget(bindingsPerTarget: BrowserEvent[], target: EventTarget): void {\n bindingsPerTarget.forEach((binding) => {\n // Wrapping inside try / catch to avoid situations where the element may be destroyed before we get a chance to unbind\n try {\n target[api(Constant.RemoveEventListener)](binding.event, binding.listener, { capture: binding.options.capture, passive: binding.options.passive });\n } catch {\n /* do nothing */\n }\n });\n bindings.delete(target);\n}\n","import { BooleanFlag, Code, Constant, Metric, Setting, Severity } from \"@clarity-types/data\";\nimport * as clarity from \"@src/clarity\";\nimport * as core from \"@src/core\"\nimport { bind } from \"@src/core/event\";\nimport * as internal from \"@src/diagnostic/internal\";\nimport * as metric from \"@src/data/metric\";\n\nlet pushState = null;\nlet replaceState = null;\nlet url = null;\nlet count = 0;\n\nexport function start(): void {\n url = getCurrentUrl();\n count = 0;\n bind(window, \"popstate\", compute);\n\n // Add a proxy to history.pushState function\n if (pushState === null) { \n pushState = history.pushState; \n history.pushState = function(): void {\n pushState.apply(this, arguments);\n if (core.active() && check()) {\n compute();\n }\n };\n }\n\n // Add a proxy to history.replaceState function\n if (replaceState === null) \n { \n replaceState = history.replaceState; \n history.replaceState = function(): void {\n replaceState.apply(this, arguments);\n if (core.active() && check()) {\n compute();\n }\n };\n }\n}\n\nfunction check(): boolean {\n if (count++ > Setting.CallStackDepth) {\n internal.log(Code.CallStackDepth, Severity.Info);\n return false;\n }\n return true;\n}\n\nfunction compute(): void {\n count = 0; // Reset the counter\n if (url !== getCurrentUrl()) {\n // If the url changed, start tracking it as a new page\n clarity.stop();\n window.setTimeout(restart, Setting.RestartDelay);\n }\n}\n\nfunction restart(): void {\n clarity.start();\n metric.max(Metric.SinglePage, BooleanFlag.True);\n}\n\nfunction getCurrentUrl(): string {\n return location.href ? location.href.replace(location.hash, Constant.Empty) : location.href;\n}\n\nexport function stop(): void {\n url = null;\n count = 0;\n}\n","import { Config } from \"@clarity-types/core\";\nimport { Constant } from \"@clarity-types/data\";\nimport configuration from \"@src/core/config\";\nimport * as event from \"@src/core/event\";\nimport * as history from \"@src/core/history\";\nimport * as report from \"@src/core/report\";\nimport * as task from \"@src/core/task\";\nimport * as time from \"@src/core/time\";\nimport * as clarity from \"@src/clarity\";\nimport * as custom from \"@src/data/custom\";\n\nlet status = false;\n\nexport function start(): void {\n status = true;\n time.start();\n task.reset();\n event.reset();\n report.reset();\n history.start();\n}\n\nexport function stop(): void {\n history.stop();\n report.reset();\n event.reset();\n task.reset();\n time.stop();\n status = false;\n}\n\nexport function active(): boolean {\n return status;\n}\n\nexport function check(): boolean {\n try {\n let globalPrivacyControlSet = navigator && \"globalPrivacyControl\" in navigator && navigator['globalPrivacyControl'] == true;\n return status === false &&\n typeof Promise !== \"undefined\" &&\n window[\"MutationObserver\"] &&\n document[\"createTreeWalker\"] &&\n \"now\" in Date &&\n \"now\" in performance &&\n typeof WeakMap !== \"undefined\" &&\n !globalPrivacyControlSet\n } catch (ex) {\n return false;\n }\n}\n\nexport function config(override: Config): boolean {\n // Process custom configuration overrides, if available\n if (override === null || status) { return false; }\n for (let key in override) {\n if (key in configuration) { configuration[key] = override[key]; }\n }\n return true;\n}\n\n// Suspend ends the current Clarity instance after a configured timeout period\n// The way it differs from the \"end\" call is that it starts listening to\n// user interaction events as soon as it terminates existing clarity instance.\n// On the next interaction, it automatically starts another instance under a different page id\n// E.g. if configured timeout is 10m, and user stays inactive for an hour.\n// In this case, we will suspend clarity after 10m of inactivity and after another 50m when user interacts again\n// Clarity will restart and start another instance seamlessly. Effectively not missing any active time, but also\n// not holding the session during inactive time periods.\nexport function suspend(): void {\n if (status) {\n custom.event(Constant.Clarity, Constant.Suspend);\n clarity.stop();\n [\"mousemove\", \"touchstart\"].forEach(x => event.bind(document, x, restart));\n [\"resize\", \"scroll\", \"pageshow\"].forEach(x => event.bind(window, x, restart));\n }\n}\n\nfunction restart(): void {\n clarity.start();\n custom.event(Constant.Clarity, Constant.Restart);\n}\n","import * as fraud from \"@src/diagnostic/fraud\";\nimport * as internal from \"@src/diagnostic/internal\";\nimport * as script from \"@src/diagnostic/script\";\n\nexport function start(): void {\n fraud.start();\n script.start();\n internal.start();\n}\n\nexport function stop(): void {\n internal.stop();\n}\n","import * as discover from \"@src/layout/discover\";\nimport * as doc from \"@src/layout/document\";\nimport * as dom from \"@src/layout/dom\";\nimport * as mutation from \"@src/layout/mutation\";\nimport * as region from \"@src/layout/region\";\nimport * as style from \"@src/layout/style\";\nimport * as animation from \"@src/layout/animation\";\nimport * as custom from \"@src/layout/custom\";\nimport { bind } from \"@src/core/event\";\nimport config from \"@src/core/config\";\n\nexport { hashText } from \"@src/layout/dom\";\n\nexport function start(): void {\n // The order below is important \n // and is determined by interdependencies of modules\n doc.start();\n region.start();\n dom.start();\n if (config.delayDom) {\n // Lazy load layout module as part of page load time performance improvements experiment \n bind(window, 'load', () => {\n mutation.start();\n });\n } else {\n mutation.start();\n }\n discover.start();\n style.start();\n animation.start();\n custom.start();\n}\n\nexport function stop(): void {\n region.stop();\n dom.stop();\n mutation.stop();\n doc.stop();\n style.stop();\n animation.stop();\n custom.stop();\n}\n","import {Event, Token} from \"@clarity-types/data\";\nimport { time } from \"@src/core/time\";\nimport { queue } from \"@src/data/upload\";\nimport * as navigation from \"@src/performance/navigation\";\n\nexport default async function(type: Event): Promise<void> {\n let t = time();\n let tokens: Token[] = [t, type];\n switch (type) {\n case Event.Navigation:\n tokens.push(navigation.data.fetchStart);\n tokens.push(navigation.data.connectStart);\n tokens.push(navigation.data.connectEnd);\n tokens.push(navigation.data.requestStart);\n tokens.push(navigation.data.responseStart);\n tokens.push(navigation.data.responseEnd);\n tokens.push(navigation.data.domInteractive);\n tokens.push(navigation.data.domComplete);\n tokens.push(navigation.data.loadEventStart);\n tokens.push(navigation.data.loadEventEnd);\n tokens.push(navigation.data.redirectCount);\n tokens.push(navigation.data.size);\n tokens.push(navigation.data.type);\n tokens.push(navigation.data.protocol);\n tokens.push(navigation.data.encodedSize);\n tokens.push(navigation.data.decodedSize);\n navigation.reset();\n queue(tokens);\n break;\n }\n}\n","import { Event } from \"@clarity-types/data\";\nimport { NavigationData } from \"@clarity-types/performance\";\nimport encode from \"./encode\";\n\nexport let data: NavigationData = null;\n\nexport function reset(): void {\n data = null;\n}\n\nexport function compute(entry: PerformanceNavigationTiming): void {\n data = {\n fetchStart: Math.round(entry.fetchStart),\n connectStart: Math.round(entry.connectStart),\n connectEnd: Math.round(entry.connectEnd),\n requestStart: Math.round(entry.requestStart),\n responseStart: Math.round(entry.responseStart),\n responseEnd: Math.round(entry.responseEnd),\n domInteractive: Math.round(entry.domInteractive),\n domComplete: Math.round(entry.domComplete),\n loadEventStart: Math.round(entry.loadEventStart),\n loadEventEnd: Math.round(entry.loadEventEnd),\n redirectCount: Math.round(entry.redirectCount),\n size: entry.transferSize ? entry.transferSize : 0,\n type: entry.type,\n protocol: entry.nextHopProtocol,\n encodedSize: entry.encodedBodySize ? entry.encodedBodySize : 0,\n decodedSize: entry.decodedBodySize ? entry.decodedBodySize : 0\n };\n encode(Event.Navigation);\n}\n","import { PerformanceEventTiming, Interaction } from '@clarity-types/data';\n\n// Estimate variables to keep track of interactions\nlet interactionCountEstimate = 0;\nlet minKnownInteractionId = Infinity;\nlet maxKnownInteractionId = 0;\n\nlet prevInteractionCount = 0; // Used to track interaction count between pages\n\nconst MAX_INTERACTIONS_TO_CONSIDER = 10; // Maximum number of interactions we consider for INP\nconst DEFAULT_DURATION_THRESHOLD = 40; // Threshold to ignore very short interactions\n\n// List to store the longest interaction events\nconst longestInteractionList: Interaction[] = [];\n// Map to track interactions by their ID, ensuring we handle duplicates\nconst longestInteractionMap: Map<number, Interaction> = new Map();\n\n/**\n * Update the approx number of interactions estimate count if the interactionCount is not supported.\n * The difference between `maxKnownInteractionId` and `minKnownInteractionId` gives us a rough range of how many interactions have occurred.\n * Dividing by 7 helps approximate the interaction count more accurately, since interaction IDs are spread out across a large range.\n */\nconst countInteractions = (entry: PerformanceEventTiming) => {\n if ('interactionCount' in performance) {\n interactionCountEstimate = performance.interactionCount as number;\n return;\n }\n\n if (entry.interactionId) {\n minKnownInteractionId = Math.min(\n minKnownInteractionId,\n entry.interactionId\n );\n maxKnownInteractionId = Math.max(\n maxKnownInteractionId,\n entry.interactionId\n );\n\n interactionCountEstimate = maxKnownInteractionId\n ? (maxKnownInteractionId - minKnownInteractionId) / 7 + 1\n : 0;\n }\n};\n\nconst getInteractionCount = () => {\n return interactionCountEstimate || 0;\n};\n\nconst getInteractionCountForNavigation = () => {\n return getInteractionCount() - prevInteractionCount;\n};\n\n/**\n * Estimates the 98th percentile (P98) of the longest interactions by selecting\n * the candidate interaction based on the current interaction count.\n * Dividing by 50 is a heuristic to estimate the 98th percentile (P98) interaction.\n * This assumes one out of every 50 interactions represents the P98 interaction.\n * By dividing the total interaction count by 50, we get an index to approximate \n * the slowest 2% of interactions, helping identify a likely P98 candidate.\n */\nexport const estimateP98LongestInteraction = () => {\n if(!longestInteractionList.length){\n return -1;\n }\n\n const candidateInteractionIndex = Math.min(\n longestInteractionList.length - 1,\n Math.floor(getInteractionCountForNavigation() / 50)\n );\n\n return longestInteractionList[candidateInteractionIndex].latency;\n};\n\n/**\n * Resets the interaction tracking, usually called after navigation to a new page.\n */\nexport const resetInteractions = () => {\n prevInteractionCount = getInteractionCount();\n longestInteractionList.length = 0;\n longestInteractionMap.clear();\n};\n\n/**\n * Processes a PerformanceEventTiming entry by updating the longest interaction list.\n */\nexport const processInteractionEntry = (entry: PerformanceEventTiming) => {\n // Ignore entries with 0 interactionId or very short durations\n if (!entry.interactionId || entry.duration < DEFAULT_DURATION_THRESHOLD) {\n return;\n }\n\n countInteractions(entry);\n\n const minLongestInteraction =\n longestInteractionList[longestInteractionList.length - 1];\n\n const existingInteraction = longestInteractionMap.get(entry.interactionId!);\n\n // Either update existing, add new, or replace shortest interaction if necessary\n if (\n existingInteraction ||\n longestInteractionList.length < MAX_INTERACTIONS_TO_CONSIDER ||\n entry.duration > minLongestInteraction?.latency\n ) {\n if (!existingInteraction) {\n const interaction = {\n id: entry.interactionId,\n latency: entry.duration,\n };\n longestInteractionMap.set(interaction.id, interaction);\n longestInteractionList.push(interaction);\n } else if (entry.duration > existingInteraction.latency) {\n existingInteraction.latency = entry.duration;\n }\n\n longestInteractionList.sort((a, b) => b.latency - a.latency);\n\n // Trim the list to the maximum number of interactions to consider\n if (longestInteractionList.length > MAX_INTERACTIONS_TO_CONSIDER) {\n longestInteractionList\n .splice(MAX_INTERACTIONS_TO_CONSIDER)\n .forEach((i) => longestInteractionMap.delete(i.id));\n }\n }\n};\n","import { Code, Constant, Dimension, Metric, Severity, PerformanceEventTiming } from \"@clarity-types/data\";\nimport config from \"@src/core/config\";\nimport { bind } from \"@src/core/event\";\nimport measure from \"@src/core/measure\";\nimport { setTimeout } from \"@src/core/timeout\";\nimport * as dimension from \"@src/data/dimension\";\nimport * as metric from \"@src/data/metric\";\nimport * as internal from \"@src/diagnostic/internal\";\nimport * as navigation from \"@src/performance/navigation\";\nimport * as interaction from \"@src/performance/interaction\";\n\nlet observer: PerformanceObserver;\nconst types: string[] = [Constant.Navigation, Constant.Resource, Constant.LongTask, Constant.FID, Constant.CLS, Constant.LCP, Constant.PerformanceEventTiming];\n\nexport function start(): void {\n // Capture connection properties, if available\n if (navigator && navigator[\"connection\"]) {\n dimension.log(Dimension.ConnectionType, navigator[\"connection\"][\"effectiveType\"]);\n }\n\n // Check the browser support performance observer as a pre-requisite for any performance measurement\n if (window[\"PerformanceObserver\"] && PerformanceObserver.supportedEntryTypes) {\n // Start monitoring performance data after page has finished loading.\n // If the document.readyState is not yet complete, we intentionally call observe using a setTimeout.\n // This allows us to capture loadEventEnd on navigation timeline.\n if (document.readyState !== \"complete\") {\n bind(window, \"load\", setTimeout.bind(this, observe, 0));\n } else { observe(); }\n } else { internal.log(Code.PerformanceObserver, Severity.Info); }\n}\n\nfunction observe(): void {\n // Some browsers will throw an error for unsupported entryType, e.g. \"layout-shift\"\n // In those cases, we log it as a warning and continue with rest of the Clarity processing\n try {\n if (observer) { observer.disconnect(); }\n observer = new PerformanceObserver(measure(handle) as PerformanceObserverCallback);\n // Reference: https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserver/observe\n // \"buffered\" flag indicates whether buffered entries should be queued into the observer's buffer.\n // It must only be used only with the \"type\" option, and cannot be used with entryTypes.\n // This is why we need to individually \"observe\" each supported type\n for (let x of types) {\n if (PerformanceObserver.supportedEntryTypes.indexOf(x) >= 0) {\n // Initialize CLS with a value of zero. It's possible (and recommended) for sites to not have any cumulative layout shift.\n // In those cases, we want to still initialize the metric in Clarity\n if (x === Constant.CLS) { metric.sum(Metric.CumulativeLayoutShift, 0); }\n observer.observe({type: x, buffered: true});\n }\n }\n } catch { internal.log(Code.PerformanceObserver, Severity.Warning); }\n}\n\nfunction handle(entries: PerformanceObserverEntryList): void {\n process(entries.getEntries());\n}\n\nfunction process(entries: PerformanceEntryList): void {\n let visible = \"visibilityState\" in document ? document.visibilityState === \"visible\" : true;\n for (let i = 0; i < entries.length; i++) {\n let entry = entries[i];\n switch (entry.entryType) {\n case Constant.Navigation:\n navigation.compute(entry as PerformanceNavigationTiming);\n break;\n case Constant.Resource:\n let name = entry.name;\n dimension.log(Dimension.NetworkHosts, host(name));\n if (name === config.upload || name === config.fallback) { metric.max(Metric.UploadTime, entry.duration); }\n break;\n case Constant.LongTask:\n metric.count(Metric.LongTaskCount);\n break;\n case Constant.FID:\n if (visible) { metric.max(Metric.FirstInputDelay, entry[\"processingStart\"] - entry.startTime); }\n break;\n case Constant.PerformanceEventTiming:\n if (visible && 'PerformanceEventTiming' in window && 'interactionId' in PerformanceEventTiming.prototype)\n {\n interaction.processInteractionEntry(entry as PerformanceEventTiming); \n // Logging it as dimension because we're always looking for the last value.\n dimension.log(Dimension.InteractionNextPaint, interaction.estimateP98LongestInteraction().toString()); \n }\n break;\n case Constant.CLS:\n // Scale the value to avoid sending back floating point number\n if (visible && !entry[\"hadRecentInput\"]) { metric.sum(Metric.CumulativeLayoutShift, entry[\"value\"] * 1000); }\n break;\n case Constant.LCP:\n if (visible) { metric.max(Metric.LargestPaint, entry.startTime); }\n break;\n }\n }\n}\n\nexport function stop(): void {\n if (observer) { observer.disconnect(); }\n observer = null;\n interaction.resetInteractions();\n anchorCache = null;\n}\n\n// Cached anchor element for optimal performance & memory management\nlet anchorCache: HTMLAnchorElement | null = null;\n\nfunction host(url: string): string {\n if (!anchorCache) {\n anchorCache = document.createElement(\"a\");\n }\n\n anchorCache.href = url;\n return anchorCache.host;\n}\n","import * as navigation from \"@src/performance/navigation\";\nimport * as observer from \"@src/performance/observer\";\n\nexport function start(): void {\n navigation.reset();\n observer.start();\n}\n\nexport function stop(): void {\n observer.stop();\n navigation.reset();\n}\n","import { Config, Module } from \"@clarity-types/core\";\nimport { Constant } from \"@clarity-types/data\";\nimport * as queue from \"@src/queue\";\nimport * as core from \"@src/core\";\nimport measure from \"@src/core/measure\";\nimport * as task from \"@src/core/task\";\nimport version from \"@src/core/version\";\nimport * as data from \"@src/data\";\nimport * as diagnostic from \"@src/diagnostic\";\nimport * as interaction from \"@src/interaction\";\nimport * as layout from \"@src/layout\";\nimport * as performance from \"@src/performance\";\nimport * as dynamic from \"@src/core/dynamic\";\nexport { version };\nexport { consent, consentv2, event, identify, set, upgrade, metadata, signal, maxMetric, dlog } from \"@src/data\";\nexport { queue } from \"@src/data/upload\";\nexport { register } from \"@src/core/dynamic\";\nexport { schedule } from \"@src/core/task\";\nexport { time } from \"@src/core/time\";\nexport { hashText } from \"@src/layout\";\nexport { measure };\nconst modules: Module[] = [diagnostic, layout, interaction, performance, dynamic];\n\nexport function start(config: Config = null): void {\n // Check that browser supports required APIs and we do not attempt to start Clarity multiple times\n if (core.check()) {\n core.config(config);\n core.start();\n data.start();\n modules.forEach(x => measure(x.start)());\n\n // If it's an internal call to start, without explicit configuration,\n // re-process any newly accumulated items in the queue\n if (config === null) { queue.process(); }\n }\n}\n\n// By default Clarity is asynchronous and will yield by looking for requestIdleCallback.\n// However, there can still be situations with single page apps where a user action can result\n// in the whole DOM being destroyed and reconstructed. While Clarity will perform favorably out of the box,\n// we do allow external clients to manually pause Clarity for that short burst of time and minimize\n// performance impact even further. For reference, we are talking single digit milliseconds optimization here, not seconds.\nexport function pause(): void {\n if (core.active()) {\n data.event(Constant.Clarity, Constant.Pause);\n task.pause();\n }\n}\n\n// This is how external clients can get out of pause state, and resume Clarity to continue monitoring the page\nexport function resume(): void {\n if (core.active()) {\n task.resume();\n data.event(Constant.Clarity, Constant.Resume);\n }\n}\n\nexport function stop(): void {\n if (core.active()) {\n // Stop modules in the reverse order of their initialization and start queuing up items again\n modules.slice().reverse().forEach(x => measure(x.stop)());\n data.stop();\n core.stop();\n queue.setup();\n }\n}","import { Constant } from \"@clarity-types/data\";\nimport * as clarity from \"@src/clarity\";\n\nconst w = window; \nconst c = Constant.Clarity;\n\nexport function setup() {\n // Start queuing up calls while Clarity is inactive and we are in a browser enviornment \n if (typeof w !== \"undefined\") {\n w[c] = function() {\n (w[c].q = w[c].q || []).push(arguments);\n // if the start function was called, don't queue it and instead process the queue\n arguments[0] === \"start\" && w[c].q.unshift(w[c].q.pop()) && process();\n };\n }\n}\n\nexport function process() {\n if (typeof w !== \"undefined\") {\n // Do not execute or reset global \"clarity\" variable if a version of Clarity is already running on the page\n if (w[c] && w[c].v) { return console.warn(\"Error CL001: Multiple Clarity tags detected.\"); }\n\n // Expose clarity in a browser environment\n // To be efficient about queuing up operations while Clarity is wiring up, we expose clarity.*(args) => clarity(*, args);\n // This allows us to reprocess any calls that we missed once Clarity is available on the page\n // Once Clarity script bundle is loaded on the page, we also initialize a \"v\" property that holds current version\n // We use the presence or absence of \"v\" to determine if we are attempting to run a duplicate instance\n let queue = w[c] ? (w[c].q || []) : [];\n w[c] = function(method: string, ...args: any[]): void { return clarity[method](...args); }\n w[c].v = clarity.version;\n while (queue.length > 0) { w[c](...queue.shift()); }\n }\n}\n","import * as queue from \"@src/queue\";\n\n// Process anything that was queued up before the script loaded\n(function(): void {\n queue.process();\n})();\n"],"names":["config","start","stop","text","redact","url","state","update","reset","track","dynamic","compute","encode","data","event","core.active","updates","count","setTimeout","clearTimeout","timeout","supported","log","trigger","parse","internal.log","clone","str","modules","consent","metadata","envelope","upload","ping","upgrade","metric.start","metric.stop","variable.compute","baseline.compute","dimension.compute","metric.compute","summary.compute","limit.compute","extract.compute","consent.compute","history","metric.max","check","observe","recompute","handler","layout","process","similar","throttledRecompute","dimension.log","clarity.stop","timeline.start","click.start","clipboard.start","pointer.start","input.start","resize.start","visibility.start","focus.start","scroll.start","selection.start","change.start","submit.start","unload.start","timeline.stop","click.stop","clipboard.stop","pointer.stop","input.stop","resize.stop","visibility.stop","focus.stop","scroll.stop","selection.stop","change.stop","submit.stop","unload.stop","scroll.observe","click.observe","clipboard.observe","pointer.observe","input.observe","selection.observe","change.observe","submit.observe","proxyStyleRules","getId","register","doc.data","baseline.track","region.state","region.reset","style.sheetAdoptionState","style.sheetUpdateState","style.reset","animation.state","animation.reset","task.state","dom.updates","task.suspend","attribute","fraud.check","scrub.text","baseline.activity","custom.elements","custom.reset","dom.getNode","node","queue","handle","dom.has","event.bind","active","summary.track","task.schedule","doc.compute","region.compute","dom.parse","task.start","task.stop","metric.count","dom.get","traverse","schedule","num","dom.iframe","getAttributes","schema.ld","iframe","dom.sameorigin","mutation.monitor","dialogCustom.trackDialog","dialogCustom.createDialogNodeData","custom.check","event.has","mutation.observe","interaction.observe","event.unbind","dom.iframeContent","mutation.disconnect","dom.removeIFrame","get","index","values","idMap","selector.reset","region.observe","add","region.exists","selector.get","has","observer","dom.getId","mutation.active","region.track","pointer.state","pointer.reset","click.state","scrub.url","timeline.track","click.reset","clipboard.state","clipboard.reset","resize.data","resize.reset","unload.data","unload.reset","input.state","input.reset","selection.data","selection.reset","scroll.state","scroll.reset","change.state","change.reset","submit.state","submit.reset","timeline.updates","timeline.reset","visibility.data","baseline.visibility","visibility.reset","focus.data","focus.reset","envelope.data","snapshot.values","baseline.dynamic","ping.reset","limit.check","timeline.compute","data.compute","style.compute","envelope.envelope","metric.sum","limit.trigger","metadata.save","metadata.callback","clarity.upgrade","extract.trigger","dynamic.event","script.data","internal.data","fraud.data","pause","resume","metadata.id","restart","suspend","scroll.compute","discover.start","style.start","baseline.state","baseline.reset","ping.data","limit.data","upgrade.data","custom.data","variable.data","variable.reset","metric.updates","metric.reset","dimension.updates","dimension.reset","summary.data","summary.reset","extract.keys","extract.data","extract.reset","consent.data","metadata.clear","coreConfig","trackConsent.config","trackConsent.consent","trackConsent.trackConsentv2","clarity.start","metadata.data","time.start","task.reset","event.reset","report.reset","history.start","history.stop","time.stop","configuration","custom.event","fraud.start","script.start","internal.start","internal.stop","doc.start","region.start","dom.start","mutation.start","animation.start","custom.start","region.stop","dom.stop","mutation.stop","doc.stop","style.stop","animation.stop","custom.stop","navigation.data","navigation.reset","navigation.compute","interaction.processInteractionEntry","interaction.estimateP98LongestInteraction","interaction.resetInteractions","observer.start","observer.stop","performance","core.check","core.config","core.start","data.start","queue.process","data.event","task.pause","task.resume","data.stop","core.stop","queue.setup","clarity.version"],"mappings":"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","x_google_ignoreList":[12]}
|