o11y 258.3.0 → 258.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sources":["../../../../src/library/TaskerImpl.ts","../../../../src/library/IdleDetectorImpl.ts","../../../../../../node_modules/o11y_schema/sfcore_performance/navigation_timing.js","../../../../../../node_modules/o11y_schema/sfcore_performance/resource_timing.js","../../../../src/library/FuzzyMapper.ts","../../../../src/library/PerformanceObservability.ts","../../../../src/library/Tracing.ts","../../../../src/library/TimerOverride.ts","../../../../src/library/ActivityImpl.ts","../../../../src/library/ActivityNoOp.ts","../../../../src/library/DomEventHelpers.ts","../../../../src/library/BucketHistogramImpl.ts","../../../../src/library/ValueRecorderImpl.ts","../../../../src/library/SizeLimitedMap.ts","../../../../src/library/MetricsImpl.ts","../../../../src/library/MockObj.ts","../../../../src/library/InstrumentationImpl.ts","../../../../src/library/RootActivityHistoryImpl.ts","../../../../src/library/RootActivityImpl.ts","../../../../src/library/RootActivityNoOp.ts","../../../../src/library/AppInstrumentationImpl.ts","../../../../src/library/AutomaticClickTracker.ts","../../../../src/library/ReceiverConnector.ts","../../../../src/library/SenderConnector.ts","../../../../src/library/MetricsStore.ts","../../../../src/sender_collector/SenderCollector.ts","../../../../src/library/NextgenImpl.ts","../../../../src/index.ts","../../../../src/console-collector/ConsoleCollector.ts","../../../../src/version.ts","../../../../src/client.ts"],"sourcesContent":["import { TaskerMulti, TaskerSingle } from '../interfaces/IdleDetector';\n\nexport type TaskDoneNotifier = () => void;\n\nexport class TaskerImpl implements TaskerSingle, TaskerMulti {\n private _busyCount = 0;\n private _isOk = true; // Once an error occurs, make operations no-op\n\n get isBusy(): boolean {\n return this._isOk ? this._busyCount > 0 : undefined;\n }\n\n constructor(\n public readonly name: string,\n initialCount: number,\n private readonly _doneCallback: TaskDoneNotifier,\n private readonly _overDoneCallback: TaskDoneNotifier\n ) {\n this._busyCount = initialCount;\n }\n\n add(): void {\n if (this._isOk) {\n this._busyCount += 1;\n }\n }\n done(): void {\n if (this._isOk) {\n if (this._busyCount > 0) {\n this._busyCount -= 1;\n if (!this._busyCount) {\n this._doneCallback();\n }\n } else {\n this._isOk = false;\n this._overDoneCallback();\n }\n }\n }\n}\n","import { IdleDetector, IdleDetectorOptions, IdleDetectorReport } from '../interfaces';\nimport {\n ErrorListener,\n IdleDetectedListener,\n IsBusyChecker,\n ReportListener,\n TaskerMulti,\n TaskerSingle\n} from '../interfaces/IdleDetector';\nimport { TaskerImpl } from './TaskerImpl';\nimport { utility } from 'o11y/shared';\n\nconst defaultLogThreshold = 300;\n\ntype TaskReportEntry = {\n name: string;\n start: number;\n end: number;\n};\n\ntype PollableReportEntry = {\n name: string;\n count: number;\n};\n\nexport class IdleDetectorImpl implements IdleDetector {\n private readonly _taskers = new Map<TaskerImpl, TaskReportEntry>();\n private readonly _listeners = new Set<IdleDetectedListener>();\n private readonly _busyCheckers = new Map<IsBusyChecker, string>();\n private readonly _logThreshold: number = defaultLogThreshold;\n private readonly _endedTasks = new Array<TaskReportEntry>();\n private readonly _pollableReport = new Array<PollableReportEntry>();\n private _firstCallbackTime: number;\n private _timerCheckQueued: NodeJS.Timeout;\n private readonly _reportListener: ReportListener;\n private readonly _errorListener: ErrorListener;\n\n constructor(options?: IdleDetectorOptions) {\n if (\n utility.requireArgumentIfDefined(\n options?.logThreshold,\n 'options.logThreshold',\n 'number'\n )\n ) {\n this._logThreshold = options.logThreshold;\n }\n\n if (\n utility.requireArgumentIfDefined(\n options?.reportListener,\n 'options.reportListener',\n 'function'\n )\n ) {\n this._reportListener = options.reportListener;\n }\n\n if (\n utility.requireArgumentIfDefined(\n options?.errorListener,\n 'options.errorListener',\n 'function'\n )\n ) {\n this._errorListener = options.errorListener;\n }\n }\n\n requestIdleDetectedCallback(callback: IdleDetectedListener): void {\n utility.requireArgument(callback, 'callback', 'function');\n if (this._listeners.size === 0) {\n this._firstCallbackTime = utility.time().perfNow;\n }\n this._listeners.add(callback);\n this._checkIfLoaded();\n }\n\n private _reportTaskEnded(tasker: TaskerImpl): void {\n // Report only if we have any listeners\n if (this._listeners.size) {\n const snapshot = Object.assign({}, this._taskers.get(tasker));\n this._endedTasks.push(snapshot);\n }\n }\n\n declareNotifierTaskSingle(name: string): TaskerSingle {\n utility.requireArgument(name, 'name', 'string');\n const tasker = this._addTasker(name, 1);\n\n const retVal: TaskerSingle = {\n get isBusy() {\n return tasker.isBusy;\n },\n done: () => {\n tasker.done();\n this._taskers.delete(tasker);\n }\n };\n\n return retVal;\n }\n\n declareNotifierTaskMulti(name: string, existingBusyCount = 0): TaskerMulti {\n utility.requireArgument(name, 'name', 'string');\n if (existingBusyCount !== undefined) {\n utility.requireArgument(existingBusyCount, 'existingBusyCount', 'number');\n\n if (!Number.isInteger(existingBusyCount) || existingBusyCount < 0) {\n throw new Error('existingBusyCount accepts only non-negative integers');\n }\n }\n const tasker = this._addTasker(name, existingBusyCount);\n\n const retVal: TaskerMulti = {\n get isBusy() {\n return tasker.isBusy;\n },\n add: () => {\n if (!tasker.isBusy) {\n const meta = this._taskers.get(tasker);\n meta.start = utility.time().perfNow;\n meta.end = undefined;\n }\n tasker.add();\n },\n done: tasker.done.bind(tasker) // Note: don't delete multi tasker\n };\n return retVal;\n }\n\n declarePollableTaskMulti(name: string, isBusyChecker: IsBusyChecker): void {\n utility.requireArgument(name, 'name', 'string');\n utility.requireArgument(isBusyChecker, 'isBusyChecker', 'function');\n\n this._busyCheckers.set(isBusyChecker, name);\n }\n\n private _addTasker(name: string, existingBusyCount: number): TaskerImpl {\n const tasker = new TaskerImpl(\n name,\n existingBusyCount,\n () => {\n // Done callback\n this._taskers.get(tasker).end = utility.time().perfNow;\n this._reportTaskEnded(tasker);\n this._checkIfLoaded();\n },\n () => {\n // Overdone callback\n this._errorListener?.(`Overdone: ${tasker.name}`);\n utility.noProdThrow(`Tasker '${tasker.name}' is done too many times.`);\n }\n );\n this._taskers.set(tasker, {\n name,\n start: existingBusyCount > 0 ? utility.time().perfNow : undefined,\n end: undefined\n });\n return tasker;\n }\n\n private _areAllNotifiersIdle(): boolean {\n return !Array.from(this._taskers.keys()).some((t) => t.isBusy);\n }\n\n private _getFirstBusyPollable(): string {\n const entry = Array.from(this._busyCheckers).find((entry) => {\n const isBusyChecker = entry[0];\n const name = entry[1];\n try {\n return isBusyChecker();\n } catch (e) {\n this._errorListener?.(e, `BusyChecker ${name}`);\n utility.noProdThrow(e);\n return false; // Not busy\n }\n });\n\n return entry ? entry[1] : undefined;\n }\n\n private _checkIfLoaded(): void {\n if (!this._listeners.size) {\n // bail out early. We don't have any callbacks queued\n return;\n }\n\n // We restart the idle timer check logic whenever we get an external\n // trigger that a resource was loaded since that would imply that more\n // work could be queued up and we want to be aware of that\n if (this._timerCheckQueued) {\n clearTimeout(this._timerCheckQueued);\n }\n\n if (this._areAllNotifiersIdle()) {\n // Enqueue two RAF to make sure nothing got queued in this js cycle\n // note the use of double setTimeout. We want our setTimeout to queue up after\n // any set timeouts queued within micro tasks that may run after processing this\n // xhr response.\n // Here's a sample timeline\n // .....[ Single Event Loop ].....................................\n // .....[XHR callback][checkIfLoaded][microtasks]-[1st setTimeout]....[2nd setTimeout]\n // ^\n // queue settimeout at the end of event loop --->|\n this._timerCheckQueued = setTimeout(() => {\n this._timerCheckQueued = setTimeout(() => {\n this._doubleCheck();\n }, 40);\n }, 0);\n }\n }\n\n private _doubleCheck(): void {\n this._timerCheckQueued = undefined;\n\n if (this._areAllNotifiersIdle()) {\n const pollableName: string = this._getFirstBusyPollable();\n if (pollableName !== undefined) {\n // we'll have to keep polling until polled operations finish\n this._addToPollableReport(pollableName);\n this._timerCheckQueued = setTimeout(() => {\n this._doubleCheck();\n }, 15);\n } else {\n // OK!! We are certified idle.\n const maxDuration = utility.time().perfNow - this._firstCallbackTime;\n\n // Take a snapshot of internal variables so that we don't get confused\n // if tasks are created or listeners or worse, get into an infinite loop\n // if idle is requested\n const listeners = Array.from(this._listeners.values());\n this._listeners.clear();\n\n this._firstCallbackTime = undefined;\n const endedTasks = this._endedTasks.splice(0);\n const pollableReport = this._pollableReport.splice(0);\n\n this._notify(listeners, maxDuration, endedTasks, pollableReport);\n }\n }\n }\n\n private _addToPollableReport(name: string): void {\n const lastEntry: PollableReportEntry = this._pollableReport.length\n ? this._pollableReport[this._pollableReport.length - 1]\n : undefined;\n\n if (lastEntry?.name === name) {\n lastEntry.count += 1;\n } else {\n this._pollableReport.push({\n name,\n count: 1\n });\n }\n }\n\n private _notify(\n listeners: IdleDetectedListener[],\n maxDuration: number,\n taskReport: Array<TaskReportEntry>,\n pollableReport: Array<PollableReportEntry>\n ): void {\n if (maxDuration >= this._logThreshold && this._reportListener) {\n const logData: IdleDetectorReport = this._getReport(\n maxDuration,\n listeners.length,\n taskReport,\n pollableReport\n );\n this._reportListener(logData);\n }\n listeners.reverse();\n\n const tsNow = utility.time().tsNow;\n for (const [index, listener] of listeners.entries()) {\n try {\n listener(tsNow);\n } catch (e) {\n this._errorListener?.(e, `Listener #${listeners.length - 1 - index}`);\n utility.noProdThrow(e);\n }\n }\n }\n\n getReport(): IdleDetectorReport {\n const perfNow = utility.time().perfNow;\n const maxDuration =\n this._firstCallbackTime > 0 ? perfNow - this._firstCallbackTime : undefined;\n\n const onGoingTasks: Array<TaskReportEntry> = Array.from(this._taskers.entries())\n .filter((e) => e[0].isBusy)\n .map((e) => ({\n name: e[1].name,\n start: e[1].start,\n end: perfNow\n }));\n return this._getReport(\n maxDuration,\n this._listeners.size,\n this._endedTasks.concat(onGoingTasks),\n this._pollableReport\n );\n }\n\n private _getReport(\n maxDuration: number,\n listenerCount: number,\n taskReport: Array<TaskReportEntry>,\n pollableReport: Array<PollableReportEntry>\n ): IdleDetectorReport {\n const sortedTaskers = taskReport\n .map((t) => ({\n name: t.name,\n duration: t.end - t.start\n }))\n .sort((a, b) => b.duration - a.duration);\n return {\n logThreshold: this._logThreshold,\n maxDuration,\n listenerCount,\n pollableCount: this._busyCheckers.size,\n busyTasks: sortedTaskers.map((t) => t.name),\n busyDurations: sortedTaskers.map((t) => t.duration),\n pollables: pollableReport.map((p) => p.name),\n pollCounts: pollableReport.map((p) => p.count)\n };\n }\n}\n","export const navigation_timing={namespace:\"sfcore.performance\",name:\"NavigationTiming\",pbjsSchema:{\"nested\":{\"sfcore\":{\"nested\":{\"performance\":{\"nested\":{\"NavigationTiming\":{\"oneofs\":{\"_xhrDelay\":{\"oneof\":[\"xhrDelay\"]},\"_renderBlockingStatus\":{\"oneof\":[\"renderBlockingStatus\"]},\"_firstInterimResponseStart\":{\"oneof\":[\"firstInterimResponseStart\"]},\"_srvDuration\":{\"oneof\":[\"srvDuration\"]},\"_isCdnCached\":{\"oneof\":[\"isCdnCached\"]},\"_responseStatus\":{\"oneof\":[\"responseStatus\"]},\"_dbDuration\":{\"oneof\":[\"dbDuration\"]},\n\"_reqBatchCount\":{\"oneof\":[\"reqBatchCount\"]}},\"fields\":{\"redirectCount\":{\"id\":37,\"type\":\"uint32\"},\"encodedBodySize\":{\"id\":21,\"type\":\"uint32\"},\"reqActionNames\":{\"rule\":\"repeated\",\"id\":28,\"type\":\"string\"},\"unloadEventEnd\":{\"id\":40,\"type\":\"double\"},\"responseEnd\":{\"id\":19,\"type\":\"double\"},\"domainLookupEnd\":{\"id\":12,\"type\":\"double\"},\"unloadEventStart\":{\"id\":39,\"type\":\"double\"},\"domContentLoadedEventStart\":{\"id\":32,\"type\":\"double\"},\"type\":{\"id\":38,\"type\":\"string\"},\"firstInterimResponseStart\":{\"options\":{\"proto3_optional\":true},\n\"id\":18,\"type\":\"double\"},\"duration\":{\"id\":3,\"type\":\"double\"},\"decodedBodySize\":{\"id\":22,\"type\":\"uint32\"},\"redirectStart\":{\"id\":8,\"type\":\"double\"},\"connectEnd\":{\"id\":15,\"type\":\"double\"},\"isCdnCached\":{\"options\":{\"proto3_optional\":true},\"id\":24,\"type\":\"bool\"},\"requestStart\":{\"id\":16,\"type\":\"double\"},\"startTime\":{\"id\":2,\"type\":\"double\"},\"fetchStart\":{\"id\":10,\"type\":\"double\"},\"domContentLoadedEventEnd\":{\"id\":33,\"type\":\"double\"},\"srvReqId\":{\"id\":29,\"type\":\"string\"},\"reqBatchCount\":{\"options\":{\"proto3_optional\":true},\n\"id\":27,\"type\":\"uint32\"},\"renderBlockingStatus\":{\"options\":{\"proto3_optional\":true},\"id\":6,\"type\":\"string\"},\"workerStart\":{\"id\":7,\"type\":\"double\"},\"responseStart\":{\"id\":17,\"type\":\"double\"},\"xhrDelay\":{\"options\":{\"proto3_optional\":true},\"id\":30,\"type\":\"double\"},\"domInteractive\":{\"id\":34,\"type\":\"double\"},\"domComplete\":{\"id\":31,\"type\":\"double\"},\"domainLookupStart\":{\"id\":11,\"type\":\"double\"},\"responseStatus\":{\"options\":{\"proto3_optional\":true},\"id\":23,\"type\":\"uint32\"},\"redirectEnd\":{\"id\":9,\"type\":\"double\"},\n\"logEvent\":{\"id\":41,\"type\":\"string\"},\"transferSize\":{\"id\":20,\"type\":\"uint32\"},\"srvDuration\":{\"options\":{\"proto3_optional\":true},\"id\":26,\"type\":\"double\"},\"dbDuration\":{\"options\":{\"proto3_optional\":true},\"id\":25,\"type\":\"double\"},\"connectStart\":{\"id\":13,\"type\":\"double\"},\"loadEventStart\":{\"id\":35,\"type\":\"double\"},\"secureConnectionStart\":{\"id\":14,\"type\":\"double\"},\"name\":{\"id\":1,\"type\":\"string\"},\"nextHopProtocol\":{\"id\":5,\"type\":\"string\"},\"initiatorType\":{\"id\":4,\"type\":\"string\"},\"loadEventEnd\":{\"id\":36,\n\"type\":\"double\"}}}}}}}}}};","export const resource_timing={namespace:\"sfcore.performance\",name:\"ResourceTiming\",pbjsSchema:{\"nested\":{\"sfcore\":{\"nested\":{\"performance\":{\"nested\":{\"ResourceTiming\":{\"oneofs\":{\"_xhrDelay\":{\"oneof\":[\"xhrDelay\"]},\"_renderBlockingStatus\":{\"oneof\":[\"renderBlockingStatus\"]},\"_firstInterimResponseStart\":{\"oneof\":[\"firstInterimResponseStart\"]},\"_srvDuration\":{\"oneof\":[\"srvDuration\"]},\"_isCdnCached\":{\"oneof\":[\"isCdnCached\"]},\"_responseStatus\":{\"oneof\":[\"responseStatus\"]},\"_dbDuration\":{\"oneof\":[\"dbDuration\"]},\n\"_reqBatchCount\":{\"oneof\":[\"reqBatchCount\"]}},\"fields\":{\"encodedBodySize\":{\"id\":21,\"type\":\"uint32\"},\"reqActionNames\":{\"rule\":\"repeated\",\"id\":28,\"type\":\"string\"},\"responseEnd\":{\"id\":19,\"type\":\"double\"},\"domainLookupEnd\":{\"id\":12,\"type\":\"double\"},\"firstInterimResponseStart\":{\"options\":{\"proto3_optional\":true},\"id\":18,\"type\":\"double\"},\"duration\":{\"id\":3,\"type\":\"double\"},\"decodedBodySize\":{\"id\":22,\"type\":\"uint32\"},\"redirectStart\":{\"id\":8,\"type\":\"double\"},\"connectEnd\":{\"id\":15,\"type\":\"double\"},\"isCdnCached\":{\"options\":{\"proto3_optional\":true},\n\"id\":24,\"type\":\"bool\"},\"requestStart\":{\"id\":16,\"type\":\"double\"},\"startTime\":{\"id\":2,\"type\":\"double\"},\"fetchStart\":{\"id\":10,\"type\":\"double\"},\"srvReqId\":{\"id\":29,\"type\":\"string\"},\"reqBatchCount\":{\"options\":{\"proto3_optional\":true},\"id\":27,\"type\":\"uint32\"},\"renderBlockingStatus\":{\"options\":{\"proto3_optional\":true},\"id\":6,\"type\":\"string\"},\"workerStart\":{\"id\":7,\"type\":\"double\"},\"responseStart\":{\"id\":17,\"type\":\"double\"},\"xhrDelay\":{\"options\":{\"proto3_optional\":true},\"id\":30,\"type\":\"double\"},\"domainLookupStart\":{\"id\":11,\n\"type\":\"double\"},\"responseStatus\":{\"options\":{\"proto3_optional\":true},\"id\":23,\"type\":\"uint32\"},\"redirectEnd\":{\"id\":9,\"type\":\"double\"},\"transferSize\":{\"id\":20,\"type\":\"uint32\"},\"srvDuration\":{\"options\":{\"proto3_optional\":true},\"id\":26,\"type\":\"double\"},\"dbDuration\":{\"options\":{\"proto3_optional\":true},\"id\":25,\"type\":\"double\"},\"connectStart\":{\"id\":13,\"type\":\"double\"},\"secureConnectionStart\":{\"id\":14,\"type\":\"double\"},\"name\":{\"id\":1,\"type\":\"string\"},\"nextHopProtocol\":{\"id\":5,\"type\":\"string\"},\"initiatorType\":{\"id\":4,\n\"type\":\"string\"}}}}}}}}}};","import { utility } from 'o11y/shared';\n\ntype MapValueEntry<T> = {\n fuzzyKey: number;\n value: T;\n};\n\ntype MapValues<T> = Array<MapValueEntry<T>>;\n\n// A match is made if the strict key matches and the fuzzy key value is within the range.\n// If there are multiple such matches, the one with the smallest delta is returned.\nexport class FuzzyMapper<T> {\n private readonly _map: Map<string, MapValues<T>> = new Map();\n\n constructor(private readonly _fuzzyKeyRange: number) {\n utility.requireArgument(_fuzzyKeyRange, '_fuzzyKeyRange', 'number');\n }\n\n add(key: string, fuzzyKey: number, value: T): void {\n const mapValue = this._map.get(key);\n if (mapValue) {\n mapValue.push({ fuzzyKey, value });\n } else {\n this._map.set(key, [{ fuzzyKey, value }]);\n }\n }\n pop(key: string, fuzzyKey: number): T {\n const mapValues = this._map.get(key);\n if (mapValues?.length >= 1) {\n let minDelta = Number.POSITIVE_INFINITY;\n let minIndex = -1;\n for (let index = 0; index < mapValues.length; index++) {\n const { fuzzyKey: curFuzzyKey } = mapValues[index];\n const curDelta = Math.abs(curFuzzyKey - fuzzyKey);\n if (curDelta <= this._fuzzyKeyRange && curDelta < minDelta) {\n minDelta = curDelta;\n minIndex = index;\n }\n // keep looking for a better match\n }\n if (minIndex >= 0) {\n const { value } = mapValues.splice(minIndex, 1)[0];\n if (mapValues.length === 0) {\n this._map.delete(key);\n }\n return value;\n }\n }\n return undefined;\n }\n clear(): void {\n this._map.clear();\n }\n}\n","import { utility } from 'o11y/shared';\nimport { resourceTimingSchema, navigationTimingSchema } from 'o11y_schema/sfcore_performance';\nimport {\n ActivityStartApiOptions,\n ActivityStopOptions,\n Instrumentation,\n Schema\n} from '../interfaces';\nimport {\n NavigationTiming,\n NavigationTimingOnly,\n ResourceTiming\n} from '../types/TypeDefinitions-Private';\nimport { FuzzyMapper } from './FuzzyMapper';\n\nexport const enum LogLevel {\n Basic,\n Full\n}\n\nexport type RequestMetadata = {\n requestId?: string;\n activityDuration?: number;\n activityId?: string;\n errorCount?: number;\n responseStatus?: number;\n};\n\nconst basicInitiatorTypes = ['fetch', 'xmlhttprequest'];\n\nexport class PerformanceObservability {\n private readonly _hasPerf: boolean;\n private readonly _hasWindow: boolean;\n private readonly _boundObserverCallback = this._logPerformanceEntries.bind(this);\n private readonly _boundNavigationTimingEventCallback = (event: Event): void => {\n this._logNavigationEntries(event);\n };\n // setTimeout to push callback execution to the end of the event loop so that load event will have terminated.\n private readonly _setTimeoutNavigationCallback = (event: Event): void => {\n setTimeout(() => {\n this._boundNavigationTimingEventCallback(event);\n }, 0);\n };\n\n private readonly _visibilityChangeNavigationCallback = (event: Event): void => {\n if (document.visibilityState === 'hidden') {\n this._boundNavigationTimingEventCallback(event);\n }\n };\n private readonly _fuzzyMapper: FuzzyMapper<RequestMetadata>;\n private readonly _logLevel: LogLevel;\n private _resourceObserver: PerformanceObserver;\n private _isStarted = false;\n private _processedNavigationTiming = false;\n\n constructor(\n private readonly _instr: Instrumentation,\n fuzzyMapRange: number,\n private readonly _skipUrls: (string | RegExp)[],\n private readonly _logPerformanceActivityName?: string,\n logLevel?: string\n ) {\n utility.requireArgument(_instr, '_instr', 'object');\n utility.requireArgument(fuzzyMapRange, 'fuzzyMapRange', 'number');\n utility.requireArgumentIfDefined(_skipUrls, '_skipUrls', Array);\n utility.requireArgumentIfDefined(\n _logPerformanceActivityName,\n '_logPerformanceActivityName',\n 'string'\n );\n utility.requireArgumentIfDefined(logLevel, 'logLevel', 'string');\n\n this._hasPerf =\n typeof performance !== 'undefined' && typeof PerformanceObserver === 'function';\n this._hasWindow = typeof window !== 'undefined';\n\n if (!logLevel || logLevel.toLowerCase() === 'full') {\n this._logLevel = LogLevel.Full;\n } else if (logLevel?.toLowerCase() === 'basic') {\n this._logLevel = LogLevel.Basic;\n } else {\n throw new Error(`Invalid log level: ${logLevel}`);\n }\n\n this._fuzzyMapper = new FuzzyMapper(fuzzyMapRange);\n }\n\n get isStarted(): boolean {\n return this._isStarted;\n }\n\n get logLevel(): LogLevel {\n return this._logLevel;\n }\n\n start(): void {\n if (!this._hasPerf) {\n return;\n }\n if (!this._isStarted) {\n this._isStarted = true;\n this._resourceObserver = new PerformanceObserver(this._boundObserverCallback);\n this._resourceObserver.observe({ type: 'resource', buffered: true });\n this._addNavigationListeners();\n }\n }\n\n stop(): void {\n if (this._resourceObserver) {\n this._resourceObserver.disconnect();\n this._resourceObserver = undefined;\n }\n\n this._removeNavigationListeners();\n this._fuzzyMapper.clear();\n this._isStarted = false;\n }\n\n private _addNavigationListeners(): void {\n if (!this._hasWindow) {\n return;\n }\n\n // Event recommendations from https://nicj.net/beaconing-in-practice/#beaconing-reliability-avoiding-abandons\n window.addEventListener('load', this._setTimeoutNavigationCallback);\n window.addEventListener('pagehide', this._boundNavigationTimingEventCallback);\n document.addEventListener('visibilitychange', this._visibilityChangeNavigationCallback);\n }\n\n private _removeNavigationListeners(): void {\n if (!this._hasWindow) {\n return;\n }\n\n window.removeEventListener('load', this._setTimeoutNavigationCallback);\n window.removeEventListener('pagehide', this._boundNavigationTimingEventCallback);\n document.removeEventListener('visibilitychange', this._visibilityChangeNavigationCallback);\n }\n\n // The caller must make sure that url is absolute for exact string matching\n // as the performance API we call later uses absolute URLs.\n addEntry(absoluteUrl: string, perfTime: number, data: RequestMetadata): void {\n this._fuzzyMapper.add(absoluteUrl, perfTime, data);\n }\n\n private _resourceEntryToResourceTiming(\n prt: PerformanceResourceTiming\n ): Partial<ResourceTiming> {\n const rt: Omit<\n ResourceTiming,\n 'reqBatchCount' | 'reqActionNames' | 'srvReqId' | 'xhrDelay'\n > = {\n name: prt.name,\n startTime: prt.startTime,\n duration: prt.duration,\n initiatorType: prt.initiatorType,\n nextHopProtocol: prt.nextHopProtocol,\n // @ts-expect-error https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/renderBlockingStatus\n renderBlockingStatus: prt.renderBlockingStatus,\n workerStart: prt.workerStart,\n redirectStart: prt.redirectStart,\n redirectEnd: prt.redirectEnd,\n fetchStart: prt.fetchStart,\n domainLookupStart: prt.domainLookupStart,\n domainLookupEnd: prt.domainLookupEnd,\n connectStart: prt.connectStart,\n secureConnectionStart: prt.secureConnectionStart,\n connectEnd: prt.connectEnd,\n requestStart: prt.requestStart,\n responseStart: prt.responseStart,\n // @ts-expect-error https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/firstInterimResponseStart\n firstInterimResponseStart: prt.firstInterimResponseStart,\n responseEnd: prt.responseEnd,\n transferSize: prt.transferSize,\n encodedBodySize: prt.encodedBodySize,\n decodedBodySize: prt.decodedBodySize,\n // @ts-expect-error https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseStatus\n responseStatus: prt.responseStatus\n };\n\n const sts: ReadonlyArray<PerformanceServerTiming> = prt.serverTiming;\n if (Array.isArray(sts)) {\n rt.dbDuration = sts.find((st) => st.name === 'db')?.duration;\n rt.srvDuration = sts.find((st) => st.name === 'Total')?.duration;\n // TODO: nr.isCdnCached\n }\n\n return rt;\n }\n\n private _shouldInclude(entry: PerformanceResourceTiming): boolean {\n const isFiltered = this._skipUrls?.some((skipUrl) => {\n if (skipUrl instanceof RegExp) {\n return skipUrl.test(entry.name);\n } else {\n return entry.name === skipUrl;\n }\n });\n\n if (isFiltered) {\n return false;\n }\n\n if (this._logLevel === LogLevel.Full) {\n return true;\n }\n return (\n basicInitiatorTypes.indexOf(entry.initiatorType) >= 0 ||\n entry.entryType === 'navigation'\n );\n }\n\n private _logActivity(\n schema: Schema,\n payload: Partial<ResourceTiming>,\n activityId?: string,\n errorCount?: number\n ): void {\n const startOptions: ActivityStartApiOptions = {\n id: activityId\n };\n const stopOptions: ActivityStopOptions = {\n perfStartOverride: payload.startTime,\n perfStopOverride: payload.startTime + payload.duration,\n errorCount\n };\n\n this._instr\n .startActivity(this._logPerformanceActivityName, startOptions)\n .stop(schema, payload, stopOptions);\n }\n\n /**\n * Called by event listener callback. Will have differing amounts of data based on callback timing.\n * The dom content fields will only be available if the window load event is fired.\n * If the window is closed before load, we will call this method with sendBeacon to capture\n * whatever is available at that time.\n */\n private _logNavigationEntries(event: Event): void {\n if (this._processedNavigationTiming) {\n return;\n }\n\n for (const entry of performance.getEntriesByType('navigation')) {\n const nt: PerformanceNavigationTiming = entry as PerformanceNavigationTiming;\n\n if (this._shouldInclude(nt)) {\n this._processedNavigationTiming = true;\n\n const payload: Partial<NavigationTiming> = this._resourceEntryToResourceTiming(nt);\n\n const navOnly: NavigationTimingOnly = {\n domComplete: nt.domComplete,\n domContentLoadedEventStart: nt.domContentLoadedEventStart,\n domContentLoadedEventEnd: nt.domContentLoadedEventEnd,\n domInteractive: nt.domInteractive,\n loadEventStart: nt.loadEventStart,\n loadEventEnd: nt.loadEventEnd,\n redirectCount: nt.redirectCount,\n type: nt.type,\n unloadEventStart: nt.unloadEventStart,\n unloadEventEnd: nt.unloadEventEnd,\n logEvent: event.type\n };\n\n this._logActivity(navigationTimingSchema, Object.assign(payload, navOnly));\n }\n\n break; // Only log the first navigation entry (which there should only be one of)\n }\n }\n\n private _logPerformanceEntries(list: PerformanceObserverEntryList): void {\n for (const entry of list.getEntriesByType('resource')) {\n const rt: PerformanceResourceTiming = entry as PerformanceResourceTiming;\n\n // Always pop the request info, even if we don't log it, so we don't leak memory\n const requestInfo: RequestMetadata = this._fuzzyMapper.pop(rt.name, rt.startTime);\n\n if (this._shouldInclude(rt)) {\n const payload: Partial<ResourceTiming> = this._resourceEntryToResourceTiming(rt);\n\n Object.assign(payload, {\n srvReqId: requestInfo?.requestId,\n xhrDelay: requestInfo ? requestInfo.activityDuration - rt.duration : undefined\n });\n\n if (payload.responseStatus === undefined) {\n payload.responseStatus = requestInfo?.responseStatus;\n }\n\n this._logActivity(\n resourceTimingSchema,\n payload,\n requestInfo?.activityId,\n requestInfo?.errorCount\n );\n }\n }\n }\n}\n","import { TraceHeaders, utility } from 'o11y/shared';\nimport { networkSchema } from 'o11y_schema/sf_instrumentation';\nimport {\n IdleDetector,\n Instrumentation,\n TaskerMulti,\n TracingHeadersOptions,\n NetworkInstrumentationOptions,\n Activity\n} from '../interfaces';\nimport { PerformanceObservability } from './PerformanceObservability';\nimport type { InstrumentationImpl } from './InstrumentationImpl';\n\ntype FetchType = (resource: RequestInfo | URL, options?: RequestInit) => Promise<Response>;\n\ntype O11yFetchOptions = {\n skipInstr?: boolean;\n};\n\ntype O11yFetchType = (\n resource: RequestInfo | URL,\n options?: RequestInit & { o11y?: O11yFetchOptions }\n) => Promise<Response>;\n\ntype XhrType = typeof XMLHttpRequest;\n\ntype XhrOpenType = (\n method: string,\n url: string | URL,\n async?: boolean, // Note: when unspecified, this defaults to true by the spec\n username?: string | null,\n password?: string | null\n) => void;\n\ntype XhrSetRequestHeaderType = (name: string, value: string) => void;\n\ntype XhrSendType = (body?: Document | XMLHttpRequestBodyInit | null) => void;\n\ntype O11yInfo = {\n activity?: Activity;\n method?: string;\n url?: string;\n absoluteUrl?: string;\n sendTime?: number;\n requestId?: string;\n suspendInstrumentation?: boolean;\n};\n\nconst defaultTraceIdLengthW3 = 32; // 32 Characters = 128 bits\nconst defaultTraceIdLengthB3 = 16; // 16 Characters = 64 bits\nconst defaultSpanIdLength = 16; // 16 Characters = 64 bits\n\n// Headers for W3 tracing (https://www.w3.org/TR/trace-context/#traceparent-header)\nconst headerTraceParent = 'traceparent';\n\n// Headers for B3 tracing (https://github.com/openzipkin/b3-propagation)\nconst headerB3 = 'b3';\nconst headerTraceId = 'X-B3-TraceId';\nconst headerSpanId = 'X-B3-SpanId';\nconst headerSampled = 'X-B3-Sampled';\nconst headerParentSpanId = 'X-B3-ParentSpanId';\nconst headerRequestId = 'X-SFDC-Request-Id'; // This is a custom header for Salesforce\nconst defaultActivityNameForFetch = 'fetch';\nconst defaultActivityNameForXhrSend = 'xhr_send';\nconst defaultTimingActivityName = 'perf-timing';\nconst defaultFuzzyMapRange = 50; // msecs\n\n// This must remain in closure so that it doesn't leak at all\nconst o11yInfoForXHR: WeakMap<XMLHttpRequest, O11yInfo> = new WeakMap();\nexport class Tracing {\n private static _global: typeof globalThis = utility.getGlobal();\n private static _originalFetch: FetchType;\n private static _originalXhr: XhrType;\n private static _originalXhrOpen: XhrOpenType;\n private static _originalXhrSetRequestHeader: XhrSetRequestHeaderType;\n private static _originalXhrSend: XhrSendType;\n private static _isNetworkInstrumentationEnabled = false;\n private static _reqIndex = 0;\n private static _performanceObservability: PerformanceObservability;\n\n constructor(\n private readonly _instr: Instrumentation,\n private readonly _idleDetector: IdleDetector\n ) {\n utility.requireArgument(_instr, '_instr', 'object');\n utility.requireArgument(_idleDetector, '_idleDetector', 'object');\n }\n\n private static _getB3CompactFormat(\n traceId: string,\n spanId: string,\n isSampled?: boolean,\n parentSpanId?: string\n ): string {\n // b3={TraceId}-{SpanId}-{SamplingState}-{ParentSpanId}\n // Note: last two fields are optional\n\n let b3 = `${traceId}-${spanId}`;\n\n if (isSampled !== undefined || parentSpanId !== undefined) {\n b3 += isSampled ? '-1' : '-0';\n if (parentSpanId !== undefined) {\n b3 += `-${parentSpanId}`;\n }\n }\n return b3;\n }\n\n private static _getW3CompactFormat(\n traceId: string,\n spanId: string,\n isSampled: boolean\n ): string {\n // traceparent={version}-{trace-id}-{parent-id}-{trace-flags}\n // \"in some tracing systems, parent-id is known as the span-id, where a span is the execution of a client request\"\n return `00-${traceId}-${spanId}-${isSampled ? '01' : '00'}`;\n }\n\n private static _conformTextAsId(text: string, numChars: number): string {\n // First validate\n text = text.toLowerCase();\n const len: number = text.length;\n for (let i = 0; i < len; i += 1) {\n const c = text[i];\n if (!(c >= 'a' && c <= 'f') && !(c >= '0' && c <= '9')) {\n throw new Error(`The text '${text}' has an invalid character at index #${i}`);\n }\n }\n\n if (len > numChars) {\n // Use the right-most characters per spec\n return text.substr(len - numChars);\n }\n if (len < numChars) {\n // Pad left with 0s per spec\n return text.padStart(numChars, '0');\n }\n return text;\n }\n\n public static getHeaders(\n traceId: string,\n spanId: string,\n isSampled?: boolean,\n options?: TracingHeadersOptions\n ): TraceHeaders {\n utility.requireArgument(spanId, 'spanId', 'string');\n\n const useB3Headers: boolean = options?.useB3Headers;\n const headers: TraceHeaders = {};\n\n // Send no tracing headers when no RootActivity is running,\n // allows the server to decide if they want to start their own trace.\n if (traceId === undefined) {\n return headers;\n }\n\n traceId = this._conformTextAsId(\n traceId,\n options?.traceIdEffectiveLength !== undefined\n ? options.traceIdEffectiveLength\n : useB3Headers\n ? defaultTraceIdLengthB3\n : defaultTraceIdLengthW3\n );\n spanId = this._conformTextAsId(spanId, defaultSpanIdLength);\n\n const parentSpanId =\n (options &&\n options.parentSpanId !== undefined &&\n this._conformTextAsId(options.parentSpanId, defaultSpanIdLength)) ||\n undefined;\n\n if (useB3Headers) {\n // By default, use non-compact\n const isCompact: boolean = options?.useCompactHeader;\n if (isCompact) {\n headers[headerB3] = this._getB3CompactFormat(\n traceId,\n spanId,\n isSampled,\n parentSpanId\n );\n } else {\n headers[headerTraceId] = traceId;\n headers[headerSpanId] = spanId;\n if (parentSpanId !== undefined) {\n headers[headerParentSpanId] = parentSpanId;\n }\n if (isSampled !== undefined) {\n headers[headerSampled] = isSampled ? '1' : '0';\n }\n }\n } else {\n headers[headerTraceParent] = this._getW3CompactFormat(traceId, spanId, isSampled);\n }\n\n return headers;\n }\n\n private _disableNetworkInstrumentation(): void {\n if (Tracing._isNetworkInstrumentationEnabled) {\n if (Tracing._originalFetch) {\n Tracing._global.fetch = Tracing._originalFetch;\n Tracing._originalFetch = undefined;\n }\n if (Tracing._originalXhr) {\n Tracing._global.XMLHttpRequest = Tracing._originalXhr;\n Tracing._originalXhr = undefined;\n }\n if (Tracing._originalXhrOpen) {\n Tracing._global.XMLHttpRequest.prototype.open = Tracing._originalXhrOpen;\n Tracing._originalXhrOpen = undefined;\n }\n if (Tracing._originalXhrSetRequestHeader) {\n Tracing._global.XMLHttpRequest.prototype.setRequestHeader =\n Tracing._originalXhrSetRequestHeader;\n Tracing._originalXhrSetRequestHeader = undefined;\n }\n if (Tracing._originalXhrSend) {\n Tracing._global.XMLHttpRequest.prototype.send = Tracing._originalXhrSend;\n Tracing._originalXhrSend = undefined;\n }\n if (Tracing._performanceObservability) {\n Tracing._performanceObservability.stop();\n Tracing._performanceObservability = undefined;\n }\n Tracing._isNetworkInstrumentationEnabled = false;\n }\n }\n\n private _enableNetworkInstrumentation(\n instr: Instrumentation,\n logErrors: boolean,\n activityName: string,\n useTracing: boolean,\n options: TracingHeadersOptions,\n tasker: TaskerMulti,\n logPerformance: boolean | string,\n logPerformanceActivityName: string,\n skipUrls: (string | RegExp)[],\n fuzzyMapRange: number\n ): void {\n if (typeof Tracing._global.fetch === 'function') {\n this._overrideFetch(\n instr,\n logErrors,\n activityName,\n useTracing,\n options,\n tasker,\n skipUrls\n );\n Tracing._isNetworkInstrumentationEnabled = true;\n }\n\n if (typeof Tracing._global.XMLHttpRequest === 'function') {\n this._overrideXhr(\n instr,\n logErrors,\n activityName,\n useTracing,\n options,\n tasker,\n skipUrls\n );\n Tracing._isNetworkInstrumentationEnabled = true;\n }\n\n if (logPerformance) {\n Tracing._performanceObservability = new PerformanceObservability(\n instr,\n fuzzyMapRange,\n skipUrls,\n logPerformanceActivityName,\n logPerformance === true ? 'full' : logPerformance\n );\n Tracing._performanceObservability.start();\n Tracing._isNetworkInstrumentationEnabled = true;\n }\n }\n\n private static _getTraceHeaders(\n activity: Activity | undefined,\n tracingInstr: Instrumentation,\n options: TracingHeadersOptions | undefined,\n method: string,\n url: string\n ): TraceHeaders {\n let traceHeaders: TraceHeaders;\n\n if (activity) {\n traceHeaders = activity.getTraceHeaders(options) || {};\n } else {\n const context = (tracingInstr as InstrumentationImpl).internalInstrumentationContext;\n if (context?.rootId) {\n traceHeaders = Tracing.getHeaders(\n context.rootId,\n utility.generateUniqueId(),\n context.isRootActivitySampled,\n options\n );\n } else {\n traceHeaders = {};\n }\n }\n\n if (typeof options?.headerProcessor === 'function') {\n traceHeaders = options.headerProcessor({\n method,\n url,\n defaultHeaders: traceHeaders\n });\n } else if (typeof window === 'object') {\n // By default, only send to the original domain on browsers\n let newUrl;\n try {\n newUrl = new URL(url); // no base argument - will throw on non-absolute URLs\n } catch {\n // Relative URL.\n }\n // Check host (not hostname) to ensure port numbers match too.\n if (newUrl && newUrl.host !== window.location.host) {\n traceHeaders = undefined;\n }\n }\n return traceHeaders || {};\n }\n\n private static _extractHeader(\n headerName: string,\n input: RequestInfo | URL,\n init?: RequestInit\n ): string {\n if (init?.headers instanceof Headers) {\n return init.headers.get(headerName);\n }\n if (Array.isArray(init?.headers)) {\n const header = init.headers.find((entry) => entry[0] === headerName);\n return header?.[1];\n }\n if (typeof init?.headers === 'object') {\n return init.headers[headerName];\n }\n if (input instanceof Request) {\n return input.headers.get(headerName);\n }\n return undefined;\n }\n\n private _overrideFetch(\n instr: Instrumentation,\n logErrors: boolean,\n activityName: string,\n useTracing: boolean,\n tracingHeadersOptions: TracingHeadersOptions,\n tasker: TaskerMulti,\n skipUrls: (string | RegExp)[]\n ): void {\n Tracing._originalFetch = Tracing._global.fetch;\n const o11yFetch: O11yFetchType = async (resource, options, ...restArgs) => {\n // Note: We can't make any assumptions about the arguments before we pass them to the\n // original fetch. Invalid arguments should not cause us to throw, and be\n // passed to the original fetch as-is.\n let activity: Activity;\n let url: string;\n let absoluteUrl: string;\n let method: string;\n let fetchTime: number;\n let suspendInstrumentation = false;\n let response: Response;\n try {\n tasker?.add();\n method = options?.method;\n const ofo: O11yFetchOptions = options?.o11y;\n\n // Setting skipInstr in the fetch options is a signal for older o11y users to skip\n // instrumentation for certain requests. The new approach is to use the skipUrls option.\n // If skipInstr was set, we *assumed* that the call was making a request to upload\n // the instrumentation, in which case, we would modify the URL to include the\n // request index as a search parameter. The below code maintains this behavior but\n // doesn't carry it over to skipUrls approach.\n // We don't want to start an activity in either case to avoid additional\n // instrumentation from being generated and going into an indefinite loop.\n\n const isSkipInstrSet = ofo?.skipInstr;\n suspendInstrumentation =\n isSkipInstrSet || Tracing._shouldSkipUrl(skipUrls, resource);\n\n if (!suspendInstrumentation) {\n activity = instr.startActivity(activityName || defaultActivityNameForFetch);\n } else if (isSkipInstrSet) {\n Tracing._reqIndex += 1;\n try {\n // Best effort -- we can't modify other types of resources\n if (resource instanceof URL) {\n resource.searchParams.append('o11y', Tracing._reqIndex.toString());\n } else if (typeof resource === 'string') {\n // Review: the function call below should be new URL(utility.tryGetAbsoluteUrl(resource))\n const urlObj = new URL(resource);\n const kv = `o11y=${Tracing._reqIndex}`;\n urlObj.search += urlObj.search.startsWith('?') ? `&${kv}` : kv;\n resource = urlObj.toString();\n }\n\n // Note: the code above is buggy, but not modifying it because we know\n // the only user of this code path is passing an absolute path as a string to fetch.\n // We want to minimize the risk of introducing new bugs.\n // Here's the list of issues.\n // 1. `resource instanceof Request` case is not handled.\n // 2. `typeof resource === 'string'` case isn't protected against non-absolute URLs\n } catch {}\n }\n delete options?.o11y;\n\n url = resource?.toString();\n absoluteUrl = utility.tryGetAbsoluteUrl(url);\n\n if (useTracing) {\n if (resource instanceof Request) {\n if (!method) {\n // the method specifed in options overrides the method in the resource\n method = resource.method;\n }\n url = resource.url;\n absoluteUrl = utility.tryGetAbsoluteUrl(url);\n }\n\n const traceHeaders = Tracing._getTraceHeaders(\n activity,\n instr,\n tracingHeadersOptions,\n method,\n absoluteUrl\n );\n\n if (\n !this._applyTraceHeaders(resource, options, traceHeaders) &&\n options === undefined\n ) {\n options = {\n headers: traceHeaders\n };\n }\n }\n\n fetchTime = utility.perfNow();\n response = await Tracing._originalFetch.call(\n Tracing._global,\n resource,\n options,\n ...restArgs\n );\n\n return response;\n } catch (ex) {\n if (logErrors && !suspendInstrumentation) {\n if (activity) {\n activity.error(ex);\n } else {\n instr.error(ex);\n }\n }\n throw ex;\n } finally {\n try {\n const activityDuration = Tracing._endActivity(activity, url, method);\n if (Tracing._performanceObservability?.isStarted) {\n const requestId = Tracing._extractHeader(\n headerRequestId,\n resource,\n options\n );\n\n Tracing._performanceObservability.addEntry(absoluteUrl, fetchTime, {\n requestId,\n activityDuration,\n activityId: activity?.getId(),\n errorCount: activity?.getErrorCount(),\n responseStatus: response?.status\n });\n }\n } finally {\n tasker?.done();\n }\n }\n };\n Tracing._global.fetch = o11yFetch;\n }\n\n private static _endActivity(activity: Activity, url: string, method: string): number {\n if (activity) {\n // We will not log the activity if performance observability is started\n // because we are using the ID of the wrapper activity in the performance observability\n // activity and don't want duplication. Any errors generated for the first activity\n // will be linked to the other one.\n if (Tracing._performanceObservability?.isStarted) {\n activity.discard();\n } else {\n activity.stop(networkSchema, {\n mtd: method,\n url\n });\n }\n return activity.getStopPerfTime() - activity.getStartPerfTime();\n }\n return undefined;\n }\n\n private _overrideXhr(\n instr: Instrumentation,\n logErrors: boolean,\n activityName: string,\n useTracing: boolean,\n options: TracingHeadersOptions,\n tasker: TaskerMulti,\n skipUrls: (string | RegExp)[]\n ): void {\n Tracing._originalXhr = Tracing._global.XMLHttpRequest;\n Tracing._originalXhrOpen = Tracing._originalXhr.prototype.open;\n Tracing._originalXhrSetRequestHeader = Tracing._originalXhr.prototype.setRequestHeader;\n Tracing._originalXhrSend = Tracing._originalXhr.prototype.send;\n\n function postProcess(xhr: XMLHttpRequest, failedAtInit?: boolean): void {\n const _o11y = o11yInfoForXHR.get(xhr);\n if (_o11y) {\n const activity: Activity = _o11y.activity;\n const activityDuration = Tracing._endActivity(activity, _o11y.url, _o11y.method);\n if (!failedAtInit && Tracing._performanceObservability?.isStarted) {\n Tracing._performanceObservability.addEntry(_o11y.absoluteUrl, _o11y.sendTime, {\n requestId: _o11y.requestId,\n activityDuration,\n activityId: activity?.getId(),\n errorCount: activity?.getErrorCount(),\n responseStatus: xhr.status\n });\n }\n }\n }\n\n Tracing._originalXhr.prototype.open = function (\n this: XMLHttpRequest,\n method: string,\n url: string | URL,\n __async?: boolean, // Defaults to true if not specified\n __username?: string | null,\n __password?: string | null\n ) {\n const _o11y: O11yInfo = {\n method,\n url: url?.toString()\n };\n o11yInfoForXHR.set(this, _o11y);\n\n _o11y.absoluteUrl = utility.tryGetAbsoluteUrl(_o11y.url);\n\n _o11y.suspendInstrumentation = Tracing._shouldSkipUrl(skipUrls, _o11y.absoluteUrl);\n\n // Use arguments to ensure that any parameters are passed through unchanged.\n // For example, if the 3rd parameters is not specified, it defaults to true due to spec\n // of the underlying method.\n // eslint-disable-next-line prefer-rest-params, @typescript-eslint/ban-types\n (Tracing._originalXhrOpen as Function).apply(this, arguments);\n };\n\n Tracing._originalXhr.prototype.setRequestHeader = function (\n this: XMLHttpRequest,\n name: string,\n value: string\n ) {\n if (name?.toLowerCase?.() === headerRequestId.toLowerCase()) {\n const _o11y = o11yInfoForXHR.get(this);\n if (_o11y) {\n _o11y.requestId = value;\n }\n }\n\n // Use arguments to ensure that any parameters are passed through unchanged.\n // eslint-disable-next-line prefer-rest-params, @typescript-eslint/ban-types\n (Tracing._originalXhrSetRequestHeader as Function).apply(this, arguments);\n };\n\n Tracing._originalXhr.prototype.send = function (this: XMLHttpRequest, ...args) {\n let activity: Activity;\n\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr: XMLHttpRequest = this;\n let _o11y = o11yInfoForXHR.get(xhr);\n if (!_o11y) {\n _o11y = {};\n o11yInfoForXHR.set(xhr, _o11y);\n }\n try {\n tasker?.add();\n if (!_o11y.suspendInstrumentation) {\n _o11y.activity = activity = instr.startActivity(\n activityName || defaultActivityNameForXhrSend\n );\n }\n if (useTracing) {\n const traceHeaders = Tracing._getTraceHeaders(\n activity,\n instr,\n options,\n _o11y.method,\n _o11y.absoluteUrl\n );\n\n Object.entries(traceHeaders).forEach((entry) => {\n xhr.setRequestHeader(entry[0], entry[1]);\n });\n }\n _o11y.sendTime = utility.perfNow();\n Tracing._originalXhrSend.call(this, ...args);\n } catch (ex) {\n if (logErrors && !_o11y?.suspendInstrumentation) {\n if (activity) {\n activity.error(ex);\n } else {\n instr.error(ex);\n }\n }\n postProcess(xhr, true);\n tasker?.done();\n throw ex;\n }\n };\n\n const xhrProxy = new Proxy<XhrType>(Tracing._originalXhr, {\n construct(target: XhrType) {\n const newXhr = new target() as XMLHttpRequest;\n\n // Be the first in the event chain\n newXhr.addEventListener('load', () => {\n postProcess(newXhr);\n tasker?.done();\n });\n newXhr.addEventListener(\n 'error',\n (__err: ProgressEvent<XMLHttpRequestEventTarget>) => {\n const _o11y = o11yInfoForXHR.get(newXhr) || {};\n try {\n if (logErrors && !_o11y?.suspendInstrumentation) {\n const error = new Error('XHR Network-Level Error');\n const activity = _o11y?.activity;\n if (activity) {\n activity.error(error);\n } else {\n instr.error(error);\n }\n }\n postProcess(newXhr);\n } finally {\n tasker?.done();\n }\n }\n );\n newXhr.addEventListener('abort', () => {\n const _o11y = o11yInfoForXHR.get(newXhr) || {};\n _o11y?.activity?.discard();\n tasker?.done();\n });\n return newXhr;\n }\n });\n\n Tracing._global.XMLHttpRequest = xhrProxy;\n }\n\n networkInstrumentation(options: boolean | NetworkInstrumentationOptions): void {\n utility.requireArgument(options, 'options', ['boolean', 'object']);\n\n // First disable it if necessary, so we can use the new options if it was already enabled\n this._disableNetworkInstrumentation();\n if (options) {\n const tracingOptions: NetworkInstrumentationOptions =\n typeof options === 'object' ? options : {};\n\n let tasker: TaskerMulti = undefined;\n if (utility.definedValueOrDefault(tracingOptions.useTasker, true)) {\n tasker = this._idleDetector?.declareNotifierTaskMulti('o11y network');\n }\n\n this._enableNetworkInstrumentation(\n utility.definedValueOrDefault(tracingOptions.instrumentation, this._instr),\n utility.definedValueOrDefault(tracingOptions.logErrors, true),\n tracingOptions.activityName,\n utility.definedValueOrDefault(tracingOptions.useTracing, true),\n tracingOptions.tracingHeadersOptions,\n tasker,\n utility.definedValueOrDefault(tracingOptions.logPerformance, true),\n utility.definedValueOrDefault(\n tracingOptions.logPerformanceActivityName,\n defaultTimingActivityName\n ),\n utility.definedValueOrDefault(tracingOptions.skipUrls, []),\n utility.definedValueOrDefault(tracingOptions.fuzzyMapRange, defaultFuzzyMapRange)\n );\n }\n }\n\n resetRequestCounter(): void {\n Tracing._reqIndex = 0;\n }\n\n // returns true if the headers were applied to either the options or the resource.\n private _applyTraceHeaders(\n resource: RequestInfo | URL,\n options: RequestInit,\n traceHeaders: TraceHeaders\n ): boolean {\n if (options?.headers !== undefined) {\n // if headers are defined in the options,\n // they trump any headers defined in the resource\n\n if (options.headers instanceof Headers && typeof options.headers.set === 'function') {\n Object.entries(traceHeaders).forEach(([key, value]) => {\n // This headers resolves to the interface defined in\n // lib.dom.iterable.d.ts, which doesn't include the set method.\n (options.headers as Headers).set(key, value);\n });\n return true;\n }\n if (Array.isArray(options.headers)) {\n Object.entries(traceHeaders).forEach((entry) => {\n (options.headers as [string, string][]).push(entry);\n });\n return true;\n }\n if (typeof options.headers === 'object') {\n options.headers = Object.assign(options.headers, traceHeaders);\n return true;\n }\n } else if (resource instanceof Request && resource.headers instanceof Headers) {\n Object.entries(traceHeaders).forEach(([key, value]) => {\n // This headers resolves to the interface defined in lib.dom.d.ts\n resource.headers.set(key, value);\n });\n return true;\n } else if (options) {\n options.headers = Object.assign({}, traceHeaders);\n return true;\n }\n return false;\n }\n\n private static _shouldSkipUrl(\n skipUrls: (string | RegExp)[],\n urlLike: string | URL | Request\n ): boolean {\n let url: string = urlLike as string;\n\n if (urlLike instanceof URL) {\n url = urlLike.toString?.();\n } else if (urlLike instanceof Request) {\n url = urlLike.url;\n }\n\n return skipUrls?.some((skipUrl) => {\n if (skipUrl instanceof RegExp) {\n return skipUrl.test(url);\n } else {\n return url === skipUrl;\n }\n });\n }\n}\n","export enum TimerOverride {\n none,\n start,\n stop,\n both\n}\n","import { PublicSafety, SchematizedData, TraceHeaders, utility } from 'o11y/shared';\n\nimport {\n Activity,\n ActivityDetail,\n ActivityStopOptions,\n Schema,\n TracingHeadersOptions\n} from '../interfaces';\nimport { Tracing } from './Tracing';\nimport { TimerOverride } from './TimerOverride';\nexport const timedout = 'timedout';\nexport const terminated = 'terminated';\nexport const discarded = 'discarded';\n\nconst stopReason = {\n timedout,\n terminated,\n discarded\n};\n\nexport type onActivityStop = (detail: ActivityDetail) => void;\nexport type onActivityError = (error: unknown, detail: ActivityDetail) => void;\n\nexport class ActivityImpl implements Activity {\n protected readonly _id: string;\n protected _isRoot = false;\n private readonly _safety: PublicSafety;\n private readonly _usePerf: boolean;\n protected static _count = 0;\n private readonly _perfId: string;\n private readonly _perfName: string;\n private _startTimestamp: number;\n private _startPerfTime: number;\n private _stopPerfTime: number;\n private _stopReason: string;\n private _timer: NodeJS.Timer;\n private _errorCount = 0;\n private _timerOverridden: TimerOverride = TimerOverride.none;\n\n constructor(\n protected readonly _name: string,\n protected readonly _rootId: string,\n private readonly _onStopped: onActivityStop,\n private readonly _onError: onActivityError,\n timeout?: number,\n id?: string,\n protected readonly _isSampled?: boolean,\n _startPerfTime?: number,\n protected readonly _noRerooting?: boolean\n ) {\n const { tsNow, perfNow } = utility.time();\n\n ActivityImpl._count += 1;\n this._id = id || utility.generateUniqueId();\n\n this._usePerf =\n typeof performance !== 'undefined' &&\n typeof performance.mark === 'function' &&\n typeof performance.measure === 'function';\n if (this._usePerf) {\n this._perfName = `${this._name}__${ActivityImpl._count}`;\n this._perfId = `${this._name}__${this.id}`;\n try {\n performance.mark(this._perfId);\n } catch {\n this._usePerf = false;\n }\n }\n\n this._startTimestamp = tsNow;\n this._startPerfTime = perfNow;\n this._overrideTimer(_startPerfTime);\n\n if (timeout > 0) {\n this._timer = setTimeout(() => {\n this._stopReason = this._stopReason || stopReason.timedout;\n this.stop();\n }, timeout);\n }\n this._safety = new PublicSafety();\n }\n\n get id(): string {\n return this._id;\n }\n\n getId(): string {\n return this.id;\n }\n\n getRootId(): string {\n return this._rootId;\n }\n\n get stopReason(): string {\n return this._stopReason;\n }\n\n error(error: unknown, userSchemaOrText?: Schema | string, userData?: SchematizedData): void {\n this._safety.tryCatch(\n () => {\n this._errorCount += 1;\n if (typeof error === 'string') {\n error = new Error(error);\n }\n this._onError(error, this._getDetail(userSchemaOrText, userData));\n },\n { op: 'activity.error' }\n );\n }\n\n stop(\n userSchemaOrText?: Schema | string,\n userData?: SchematizedData,\n options?: ActivityStopOptions\n ): void {\n this._safety.tryCatch(\n () => {\n utility.requireArgumentIfDefined(userSchemaOrText, 'userSchemaOrText', [\n 'object',\n 'string'\n ]);\n utility.requireArgumentIfDefined(userData, 'userData', 'object');\n\n if (options) {\n const perfStart: number = options.perfStartOverride;\n const isStartTimeDefined = utility.requireArgumentIfDefined(\n perfStart,\n 'options.perfStartOverride',\n 'number'\n );\n\n const perfStop: number = options.perfStopOverride;\n const isStopTimeDefined = utility.requireArgumentIfDefined(\n perfStop,\n 'options.perfStopOverride',\n 'number'\n );\n\n const errorCount: number = options.errorCount;\n if (\n utility.requireArgumentIfDefined(errorCount, 'options.errorCount', 'number')\n ) {\n this._errorCount = errorCount;\n }\n\n if (isStartTimeDefined && perfStart < 0) {\n throw new Error('perfStartOverride, if defined, must be >= 0');\n }\n\n if (\n isStopTimeDefined &&\n (perfStop < 0 ||\n perfStop < (isStartTimeDefined ? perfStart : this._startPerfTime) ||\n perfStop > utility.time().perfNow + 100) // 100ms for safety\n ) {\n throw new Error(\n 'perfStopOverride, if defined, must be >= 0 and >= startTime and <= now'\n );\n }\n }\n\n this._stopInternal(userSchemaOrText, userData, options);\n },\n { op: 'activity.stop' }\n );\n }\n\n private _overrideTimer(perfStartTime?: number, perfStopTime?: number): void {\n if (perfStartTime !== undefined) {\n this._startTimestamp = Math.round(\n this._startTimestamp - (this._startPerfTime - perfStartTime)\n );\n this._startPerfTime = perfStartTime;\n this._setTimerOverride(TimerOverride.start);\n }\n\n if (perfStopTime !== undefined) {\n this._stopPerfTime = perfStopTime;\n this._setTimerOverride(TimerOverride.stop);\n }\n }\n\n private _setTimerOverride(value: TimerOverride): void {\n if (\n this._timerOverridden === TimerOverride.both ||\n this._timerOverridden === value ||\n value === TimerOverride.none\n ) {\n return;\n }\n this._timerOverridden =\n this._timerOverridden === TimerOverride.none ? value : TimerOverride.both;\n }\n\n private _stopInternal(\n userSchemaOrText: Schema | string,\n userData: SchematizedData,\n options?: ActivityStopOptions\n ): void {\n // First things first.\n const stopPerfTime = utility.perfNow();\n if (this._usePerf) {\n try {\n // Use a more user-friendly name for measure.\n if (this._stopReason !== stopReason.discarded) {\n performance.measure(this._perfName, this._perfId);\n }\n performance.clearMarks(this._perfId);\n performance.clearMeasures(this._perfName);\n } catch {}\n }\n\n if (this._timer) {\n clearTimeout(this._timer);\n this._timer = undefined;\n }\n if (this.isStopped) {\n // Already stopped\n return;\n }\n\n if (options) {\n this._overrideTimer(options.perfStartOverride, options.perfStopOverride);\n }\n\n // We may set this already in override so check that here\n this._stopPerfTime =\n this._timerOverridden === TimerOverride.none ||\n this._timerOverridden === TimerOverride.start\n ? stopPerfTime\n : this._stopPerfTime;\n\n const activityDetail: ActivityDetail = this._getDetail(userSchemaOrText, userData);\n this._onStopped(activityDetail);\n }\n\n get isStopped(): boolean {\n return this._stopPerfTime !== undefined;\n }\n\n discard(): void {\n this._safety.tryCatch(\n () => {\n this._stopReason = this._stopReason || stopReason.discarded;\n this.stop();\n },\n { op: 'activity.discard' }\n );\n }\n\n terminate(\n userSchemaOrText?: Schema | string,\n userData?: SchematizedData,\n options?: ActivityStopOptions\n ): void {\n this._safety.tryCatch(\n () => {\n this._stopReason = this._stopReason || stopReason.terminated;\n this.stop(userSchemaOrText, userData, options);\n },\n { op: 'activity.terminate' }\n );\n }\n\n getIsSampled(): boolean {\n return this._isSampled || false;\n }\n\n protected _getDetail(\n userSchemaOrText: Schema | string,\n userData: SchematizedData\n ): ActivityDetail {\n return {\n id: this._id,\n rootId: this._rootId,\n name: this._name,\n userSchemaOrText: userSchemaOrText,\n userData,\n stopReason: this._stopReason,\n startTimestamp: this._startTimestamp,\n startPerfTime: this._startPerfTime,\n stopPerfTime: this._stopPerfTime,\n errorCount: this._errorCount,\n isSampled: this.getIsSampled(),\n timerOverridden: this._timerOverridden,\n noRerooting: this._noRerooting\n };\n }\n\n public getTraceHeaders(options: TracingHeadersOptions): TraceHeaders {\n // Normally, the root activity ID is the traceId.\n // If the activity is root, it's ID is (also) the traceId.\n // If the activity has no root, no traceId is set and the headers object will be empty\n const spanId = this.id;\n const traceId = this._isRoot ? this.id : this._rootId;\n\n return Tracing.getHeaders(traceId, spanId, this.getIsSampled(), options);\n }\n\n getStartTimestamp(): number {\n return this._startTimestamp;\n }\n\n getStartPerfTime(): number {\n return this._startPerfTime;\n }\n\n getStopPerfTime(): number {\n return this._stopPerfTime;\n }\n\n getErrorCount(): number {\n return this._errorCount;\n }\n}\n","import { Activity, TracingHeadersOptions } from '../interfaces';\n\nconst id: string = new Array(16).fill(0).join('');\nclass ActivityNoOp implements Activity {\n getId(): string {\n return id;\n }\n getRootId(): string {\n return undefined;\n }\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n error(): void {}\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n stop(): void {}\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n discard(): void {}\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n terminate(): void {}\n\n getIsSampled(): boolean {\n return false;\n }\n getTraceHeaders(__options: TracingHeadersOptions): Record<string, string> {\n return {};\n }\n getStartTimestamp(): number {\n return undefined;\n }\n getStartPerfTime(): number {\n return undefined;\n }\n getStopPerfTime(): number {\n return undefined;\n }\n getErrorCount(): number {\n return 0;\n }\n}\n\nexport const activityNoOp = Object.freeze(new ActivityNoOp());\n","import { SchematizedPayload } from '../interfaces';\nimport { EventData, InstrumentedEventData, MouseEventData } from '../interfaces-private';\nimport { DomEventData, DomEventDataField } from '../types/TypeDefinitions-Private';\nimport { schemaUtil, utility } from 'o11y/shared';\n\nexport class DomEventHelpers {\n getInstrumentedEventData(\n domEventDataField: DomEventDataField,\n domEventData: DomEventData,\n handledBy: HTMLElement,\n userPayload: SchematizedPayload\n ): InstrumentedEventData {\n const instrumentedEvent: InstrumentedEventData = {\n ownerComponent: handledBy.tagName,\n parentComponent: handledBy.parentElement?.tagName || undefined,\n simplePath: utility.getXpath(handledBy)\n };\n\n switch (domEventDataField) {\n case DomEventDataField.BaseEvent:\n instrumentedEvent.baseEvent = domEventData as EventData;\n break;\n case DomEventDataField.MouseEvent:\n instrumentedEvent.mouseEvent = domEventData as MouseEventData;\n break;\n }\n\n if (userPayload) {\n instrumentedEvent.userPayload = schemaUtil.makePayload(\n userPayload.schema,\n userPayload.payload,\n true\n );\n }\n\n return instrumentedEvent;\n }\n\n getEventData(e: MouseEvent | UIEvent | Event): EventData {\n return {\n type: e.type\n };\n }\n\n getMouseEventData(e: MouseEvent): MouseEventData {\n return {\n altKey: e.altKey,\n bubbles: e.bubbles,\n button: e.button,\n buttons: e.buttons,\n cancelable: e.cancelable,\n clientX: e.clientX,\n clientY: e.clientY,\n composed: e.composed,\n defaultPrevented: e.defaultPrevented,\n detail: e.detail,\n eventPhase: e.eventPhase,\n isTrusted: e.isTrusted,\n timeStamp: e.timeStamp,\n type: e.type,\n ctrlKey: e.ctrlKey,\n metaKey: e.metaKey,\n movementX: e.movementX,\n movementY: e.movementY,\n offsetX: e.offsetX,\n offsetY: e.offsetY,\n pageX: e.pageX,\n pageY: e.pageY,\n screenX: e.screenX,\n screenY: e.screenY,\n shiftKey: e.shiftKey\n };\n }\n}\n\nconst singleton = new DomEventHelpers();\nexport const domEventHelpers = singleton;\n","import { BucketHistogram } from '../interfaces/BucketHistogram';\nimport { MetricsTags, utility } from 'o11y/shared';\nimport { BucketMetric } from 'src/interfaces';\n\nexport class BucketHistogramImpl implements BucketMetric<number[]>, BucketHistogram {\n private readonly _createdOn: number;\n private _lastUpdatedOn: number;\n private _values = new Array<number>();\n\n constructor(\n private readonly _name: string,\n private readonly _ownerName: string,\n private readonly _ownerAppName: string,\n private readonly _tags: MetricsTags,\n private readonly _buckets: number[],\n createdOn?: number,\n lastUpdatedOn?: number,\n values?: number[]\n ) {\n this._createdOn = createdOn === undefined ? utility.time().tsNow : createdOn;\n if (lastUpdatedOn !== undefined) {\n this._lastUpdatedOn = lastUpdatedOn;\n }\n if (values !== undefined) {\n this._values = values;\n }\n }\n\n getName(): string {\n return this._name;\n }\n\n getCreatedOn(): number {\n return this._createdOn;\n }\n\n getLastUpdatedOn(): number {\n return this._lastUpdatedOn;\n }\n\n getData(): number[] {\n return this.values;\n }\n\n getBuckets(): number[] {\n return this.buckets;\n }\n\n get buckets(): number[] {\n return this._buckets.slice(0, this._buckets.length);\n }\n\n get values(): number[] {\n return this._values.slice(0, this._values.length);\n }\n\n record(value: number): void {\n if (typeof value === 'number') {\n this._values.push(value);\n this._lastUpdatedOn = utility.time().tsNow;\n return;\n }\n\n throw new Error('BucketHistogram can only record numbers.');\n }\n\n reset(): void {\n this._lastUpdatedOn = undefined;\n this._values = [];\n }\n\n getOwnerName(): string {\n return this._ownerName;\n }\n\n getOwnerAppName(): string {\n return this._ownerAppName;\n }\n\n getTags(): MetricsTags {\n return this._tags;\n }\n}\n","import { Metric } from '../interfaces/Metric';\nimport { ValueRecorder } from '../interfaces/ValueRecorder';\nimport { MetricsTags, utility } from 'o11y/shared';\n\nexport class ValueRecorderImpl implements Metric<number[]>, ValueRecorder {\n private readonly _createdOn: number;\n private _lastUpdatedOn: number;\n private _values = new Array<number>();\n\n constructor(\n private readonly _name: string,\n private readonly _ownerName: string,\n private readonly _ownerAppName: string,\n private readonly _tags: MetricsTags,\n createdOn?: number,\n lastUpdatedOn?: number,\n values?: number[]\n ) {\n this._createdOn = createdOn === undefined ? utility.time().tsNow : createdOn;\n if (lastUpdatedOn !== undefined) {\n this._lastUpdatedOn = lastUpdatedOn;\n }\n if (values !== undefined) {\n this._values = values;\n }\n // TODO: Add sampling/throttling to put a cap on the size of the array\n }\n\n getName(): string {\n return this._name;\n }\n\n getCreatedOn(): number {\n return this._createdOn;\n }\n\n getLastUpdatedOn(): number {\n return this._lastUpdatedOn;\n }\n\n getData(): number[] {\n return this.values;\n }\n\n get values(): number[] {\n return this._values.slice(0, this._values.length);\n }\n\n record(value: number): void {\n if (typeof value === 'number') {\n this._values.push(value);\n this._lastUpdatedOn = utility.time().tsNow;\n return;\n }\n\n throw new Error('ValueRecorder can only record numbers.');\n }\n\n reset(): void {\n this._lastUpdatedOn = undefined;\n this._values = [];\n }\n\n getOwnerName(): string {\n return this._ownerName;\n }\n\n getOwnerAppName(): string {\n return this._ownerAppName;\n }\n\n getTags(): MetricsTags {\n return this._tags;\n }\n}\n","export class SizeLimitedMap<K, V> {\n private readonly _map = new Map<K, V>();\n\n private _maxSize: number;\n constructor(maxSize: number) {\n if (typeof maxSize === 'number' && maxSize > 0) {\n this._maxSize = Math.ceil(maxSize);\n return;\n }\n throw new Error('maxSize must be a positive number');\n }\n\n get maxSize(): number {\n return this._maxSize;\n }\n\n get(key: K): V {\n return this._map.get(key);\n }\n\n has(key: K): boolean {\n return this._map.has(key);\n }\n\n set(key: K, value: V): boolean {\n if (this.has(key) || this._map.size < this.maxSize) {\n this._map.set(key, value);\n return true;\n }\n return false;\n }\n\n getElements(): V[] {\n return Array.from(this._map.values());\n }\n\n clear(): void {\n this._map.clear();\n }\n}\n","import { UpCounterImpl } from 'o11y/shared';\nimport type { MetricsTags } from 'o11y/shared';\n\nimport { MetricsReporter, UpCounter, ValueRecorder } from '../interfaces';\n\nimport { BucketHistogramImpl } from './BucketHistogramImpl';\nimport { ValueRecorderImpl } from './ValueRecorderImpl';\nimport { SizeLimitedMap } from './SizeLimitedMap';\n\nconst maxCounters = 1000;\nconst maxValueRecorders = 500;\nconst maxBucketHistograms = 500;\n\nenum MetricType {\n Counter,\n Percentile,\n BucketHistogram\n}\n\nexport class MetricsImpl implements MetricsReporter {\n private readonly _upCounters = new SizeLimitedMap<string, UpCounterImpl>(maxCounters);\n private readonly _valueRecorders = new SizeLimitedMap<string, ValueRecorderImpl>(\n maxValueRecorders\n );\n private readonly _bucketHistograms = new SizeLimitedMap<string, BucketHistogramImpl>(\n maxBucketHistograms\n );\n\n constructor(\n private readonly _ownerName: string,\n private readonly _getOwnerAppName: () => string\n ) {}\n\n incrementCounter(\n operation: string,\n increment: number,\n hasError = false,\n tags: MetricsTags = {}\n ): void {\n this._tagError(tags, hasError);\n this._upCounter(operation, tags).increment(increment);\n }\n\n trackValue(operation: string, value: number, hasError = false, tags: MetricsTags = {}): void {\n this._tagError(tags, hasError);\n this._valueRecorder(operation, tags).record(value);\n }\n\n bucketValue(\n operation: string,\n value: number,\n buckets: number[],\n hasError = false,\n tags: MetricsTags = {}\n ): void {\n this._tagError(tags, hasError);\n this._bucketHistogram(operation, tags, buckets).record(value);\n }\n\n private _bucketHistogram(name: string, tags: MetricsTags, buckets: number[]): ValueRecorder {\n const { key, sortedTags } = this._getKeyAndSortedTags(\n name,\n tags,\n MetricType.BucketHistogram\n );\n let instrument = this._bucketHistograms.get(key);\n if (!instrument) {\n instrument = new BucketHistogramImpl(\n name,\n this._ownerName,\n this._getOwnerAppName(),\n sortedTags,\n buckets\n );\n if (!this._bucketHistograms.set(key, instrument)) {\n throw new Error(`Max size of ${maxBucketHistograms} exceeded for BucketHistograms`);\n }\n }\n return instrument;\n }\n\n private _upCounter(name: string, tags: MetricsTags): UpCounter {\n const { key, sortedTags } = this._getKeyAndSortedTags(name, tags, MetricType.Counter);\n let instrument = this._upCounters.get(key);\n if (!instrument) {\n instrument = new UpCounterImpl(\n name,\n this._ownerName,\n this._getOwnerAppName(),\n sortedTags\n );\n if (!this._upCounters.set(key, instrument)) {\n throw new Error(`Max size of ${maxCounters} exceeded for UpCounters`);\n }\n }\n return instrument;\n }\n\n private _valueRecorder(name: string, tags: MetricsTags): ValueRecorder {\n const { key, sortedTags } = this._getKeyAndSortedTags(name, tags, MetricType.Percentile);\n let instrument = this._valueRecorders.get(key);\n if (!instrument) {\n instrument = new ValueRecorderImpl(\n name,\n this._ownerName,\n this._getOwnerAppName(),\n sortedTags\n );\n if (!this._valueRecorders.set(key, instrument)) {\n throw new Error(`Max size of ${maxValueRecorders} exceeded for ValueRecorders`);\n }\n }\n return instrument;\n }\n\n getUpCounters(): UpCounterImpl[] {\n return this._upCounters.getElements();\n }\n\n getValueRecorders(): ValueRecorderImpl[] {\n return this._valueRecorders.getElements();\n }\n\n getBucketHistograms(): BucketHistogramImpl[] {\n return this._bucketHistograms.getElements();\n }\n\n private _tagError(tags: MetricsTags, hasError: boolean): void {\n tags.status = hasError === true ? 'error' : 'success';\n }\n\n private _getKeyAndSortedTags(\n operation: string,\n tags: MetricsTags,\n metricType: MetricType\n ): { key: string; sortedTags: MetricsTags } {\n // This method should be called after any manipulation of tags\n const sortedTags = Object.keys(tags)\n .sort()\n .reduce((prev: MetricsTags, curr: string) => {\n prev[curr] = tags[curr];\n return prev;\n }, {});\n const key = `${MetricType[metricType]}:${operation}${JSON.stringify(sortedTags)}`;\n return {\n key,\n sortedTags\n };\n }\n}\n","export class MockBase {\n // All mock objects should extend this\n public readonly isMock = true;\n}\n","import {\n activitySchema,\n errorSchema,\n instrumentedEventSchema,\n payloadDiagsSchema,\n simpleSchema\n} from 'o11y_schema/sf_instrumentation';\n\nimport {\n LightningElement,\n LogPromptListener,\n maxStringLengthAppLimit,\n MetricsTags,\n payloadUtility,\n PublicSafety,\n SchematizedData,\n schemaUtil,\n utility\n} from 'o11y/shared';\n\nimport {\n Activity,\n ActivityApiOptions,\n ActivityDetail,\n ApiOptions,\n BucketMetric,\n DomEventApiOptions,\n Instrumentation,\n InstrumentationContext,\n Metric,\n MetricsReporter,\n Schema,\n SchematizedPayload\n} from '../interfaces';\nimport { ActivityData, ErrorData, InstrumentedEventData } from '../interfaces-private';\n\nimport { ActivityImpl, discarded, onActivityError, onActivityStop } from './ActivityImpl';\nimport { activityNoOp } from './ActivityNoOp';\nimport { AutomaticClickTracker } from './AutomaticClickTracker';\nimport { domEventHelpers } from './DomEventHelpers';\nimport { MetricsImpl } from './MetricsImpl';\nimport { MockBase } from './MockObj';\nimport { NextgenImpl } from './NextgenImpl';\nimport { DomEventDataField } from 'src/types/TypeDefinitions-Private';\nimport { RootActivityHistoryEntry } from 'src/types/RootActivityHistoryEntry';\nimport { ActivityStartApiOptions } from 'src/interfaces/ActivityStartApiOptions';\n\n// @W-10241440, disable timeouts\nconst maxActivityDurationMsecs: number = undefined;\nconst reservedMetricCharacters = ['`'];\nconst reservedMetricNames = {\n internalError: 'o11y-error'\n};\nconst denyListMetricNames = Object.freeze(Array.from(Object.values(reservedMetricNames)));\n\nexport class InstrumentationImpl implements Instrumentation, MetricsReporter {\n protected static readonly defaultAppName = 'APP_NOT_REGISTERED';\n private readonly _metrics: MetricsImpl;\n private readonly _onActivityStoppedCallback: onActivityStop =\n this._handleActivityStop.bind(this);\n protected readonly _onActivityErrorCallback: onActivityError =\n this._handleActivityError.bind(this);\n protected readonly _safety: PublicSafety;\n private readonly _simpleTextMaxLength: number;\n\n constructor(protected readonly _nextGen: NextgenImpl, private readonly _name: string) {\n for (const reservedChar of reservedMetricCharacters) {\n if (this._name.indexOf(reservedChar) >= 0) {\n throw new Error(`Name cannot include the reserved character \"${reservedChar}\"`);\n }\n }\n\n this._safety = new PublicSafety({\n increment: (increment) => this._incrementError(increment)\n });\n\n this._metrics = this._initMetrics();\n\n const simpleTextOptions = schemaUtil.getOptions(simpleSchema, 'Simple', 'text');\n this._simpleTextMaxLength = simpleTextOptions\n ? simpleTextOptions['(meta.max_length)']\n : maxStringLengthAppLimit;\n }\n\n protected _initMetrics(): MetricsImpl {\n return new MetricsImpl(\n this.name,\n () => this._nextGen.appName || InstrumentationImpl.defaultAppName\n );\n }\n\n private _incrementError(increment = 1): void {\n // Note: this metric was setting false for hasError until 246.3.x\n this._metrics.incrementCounter(reservedMetricNames.internalError, increment, true);\n }\n\n get name(): string {\n return this._name;\n }\n\n /**\n * This function is to allow for convenience calls to our API, where a string can\n * be provided instead of an actual Schema. In that case, we wrap the text in\n * a built-in simple schema.\n * @param userSchemaOrText Schema or string.\n * @param userData\n * @param onlyIfBoth If true, then both the schema and the data must be specified.\n * @returns\n */\n protected _wrapUserPayload(\n userSchemaOrText: Schema | string,\n userData: SchematizedData,\n onlyIfBoth = false\n ): SchematizedPayload {\n let userSchema: Schema;\n if (typeof userSchemaOrText === 'string') {\n userSchema = simpleSchema;\n if (userSchemaOrText) {\n userData = {\n text: userSchemaOrText.substring(0, this._simpleTextMaxLength)\n };\n } else {\n userData = undefined;\n }\n } else {\n userSchema = userSchemaOrText;\n }\n\n return schemaUtil.makePayload(userSchema, userData, onlyIfBoth);\n }\n\n private _getEffectiveRootId(options?: ApiOptions): string {\n return (\n options?.instrumentationContext?.rootId ??\n this._nextGen.getDefaultInstrumentationContext().rootId\n );\n }\n\n // This is a public function for internal use only\n get internalInstrumentationContext(): InstrumentationContext {\n return this._nextGen.getDefaultInstrumentationContext();\n }\n\n /**\n *\n * @param userSchema The schema of the second argument. Also used as the basis for auto-generated\n * counters for log calls using the same schema.\n * @param userData Optional data that complies with the provided schema\n */\n log(userSchemaOrText: Schema | string, userData?: SchematizedData, options?: ApiOptions): void {\n this._safety.tryCatch(\n () => {\n const timestamp = utility.time().tsNow;\n utility.requireArgument(userSchemaOrText, 'userSchemaOrText', ['object', 'string']);\n utility.requireArgumentIfDefined(userData, 'userData', 'object');\n utility.requireArgumentIfDefined(options, 'options', 'object');\n\n const userPayload = this._wrapUserPayload(userSchemaOrText, userData);\n\n if (userPayload?.payload) {\n this._logInternal(\n this.name,\n userPayload.schema,\n userPayload.payload,\n timestamp,\n this._getEffectiveRootId(options)\n );\n }\n },\n { op: 'log' }\n );\n }\n\n protected _logInternal(\n loggerName: string,\n schema: Schema,\n data: SchematizedData,\n timestamp: number,\n rootId?: string\n ): number {\n const sequence = this._nextGen.addLog(loggerName, schema, data, timestamp, rootId);\n if (!utility.isProduction) {\n const extraFields: string[] = payloadUtility.getExtraFields(schema, data);\n if (!utility.isProduction && extraFields.length > 0) {\n this.error('Extra fields', payloadDiagsSchema, {\n extras: extraFields\n });\n }\n }\n return sequence;\n }\n\n error(\n error: unknown,\n userSchemaOrText?: Schema | string,\n userData?: SchematizedData,\n options?: ApiOptions\n ): void {\n return this._safety.tryCatch(\n () => {\n utility.requireArgumentIfDefined(userSchemaOrText, 'userSchemaOrText', [\n 'object',\n 'string'\n ]);\n utility.requireArgumentIfDefined(userData, 'userData', 'object');\n utility.requireArgumentIfDefined(options, 'options', 'object');\n\n const rootId: string = this._getEffectiveRootId(options);\n this._errorInternal(error, userSchemaOrText, userData, undefined, rootId);\n },\n { op: 'error' }\n );\n }\n\n protected _errorInternal(\n err: unknown,\n userSchemaOrText?: Schema | string,\n userData?: SchematizedData,\n activityId?: string,\n rootActivityId?: string\n ): number {\n const loggedTimestamp = utility.time().tsNow;\n\n let error: Error;\n if (err instanceof Error) {\n error = err;\n } else {\n let msg: string;\n if (err === undefined || err === null || typeof err.toString !== 'function') {\n msg = 'UNKNOWN';\n } else {\n msg = err.toString();\n }\n error = new Error(msg);\n }\n\n const userPayload = this._wrapUserPayload(userSchemaOrText, userData, true);\n\n const errorData: ErrorData = {\n name: error.name,\n message: error.message,\n stack: error.stack,\n userPayload,\n activityId\n };\n\n return this._logInternal(\n this.name,\n errorSchema,\n errorData,\n loggedTimestamp,\n rootActivityId\n );\n }\n\n startActivity(name: string, options?: ActivityStartApiOptions): Activity {\n return this._safety.tryCatchReturn(\n () => {\n utility.requireArgument(name, 'name');\n utility.requireArgumentIfDefined(options, 'options', 'object');\n\n let context: InstrumentationContext;\n let noRerooting = options?.perfStartOverride !== undefined;\n const rootId: string = options?.instrumentationContext?.rootId;\n if (rootId) {\n noRerooting = true; // root info is explicitly specified, do not override\n context = {\n rootId,\n isRootActivitySampled: options.instrumentationContext.isRootActivitySampled\n };\n } else {\n // By definition, an activity is sampled if root activity is sampled\n context = this._nextGen.getDefaultInstrumentationContext();\n }\n const activity: Activity = new ActivityImpl(\n name,\n context.rootId,\n this._onActivityStoppedCallback,\n this._onActivityErrorCallback,\n maxActivityDurationMsecs,\n options?.id,\n context.isRootActivitySampled,\n options?.perfStartOverride,\n noRerooting\n );\n return activity;\n },\n activityNoOp,\n { op: 'startActivity' }\n );\n }\n\n protected _getActivityData(detail: ActivityDetail): ActivityData {\n const userPayload = this._wrapUserPayload(detail.userSchemaOrText, detail.userData, true);\n\n return {\n id: detail.id,\n name: detail.name,\n duration: detail.stopPerfTime - detail.startPerfTime,\n stopReason: detail.stopReason,\n userPayload,\n errorCount: detail.errorCount,\n isSampled: detail.isSampled,\n timerOverridden: detail.timerOverridden,\n isRerooted: detail.isRerooted\n };\n }\n\n private _handleActivityStop(detail: ActivityDetail): void {\n if (detail.stopReason === discarded) {\n return;\n }\n\n if (!detail.isRoot && !detail.noRerooting) {\n const rahe: RootActivityHistoryEntry = this._nextGen.getRootActivityHistoryEntryByTime(\n detail.startPerfTime\n );\n if ((!rahe && detail.rootId !== undefined) || (rahe && detail.rootId !== rahe.id)) {\n detail.rootId = rahe?.id;\n detail.isSampled = rahe?.isSampled || false;\n detail.isRerooted = true;\n\n // Note: we cannot retroactively reroot activity errors\n }\n }\n\n const activityData: ActivityData = this._getActivityData(detail);\n\n this._logActivity(activityData, detail.startTimestamp, detail.rootId);\n }\n\n protected _logActivity(\n activityData: ActivityData,\n startTimestamp: number,\n rootId?: string\n ): void {\n this._logInternal(this.name, activitySchema, activityData, startTimestamp, rootId);\n }\n\n private _handleActivityError(error: unknown, detail: ActivityDetail): void {\n this._errorInternal(\n error,\n detail.userSchemaOrText,\n detail.userData,\n detail.id,\n detail.rootId\n );\n }\n\n domEvent(\n event: Event,\n handledBy: HTMLElement | LightningElement,\n userSchemaOrText?: Schema | string,\n userData?: SchematizedData,\n options?: DomEventApiOptions\n ): void {\n this._safety.tryCatch(\n () => {\n const tsNow = utility.time().tsNow;\n\n utility.requireArgument(event, 'event', [Event, MockBase]);\n // TODO: Using 'object' instead of 'LightningElement' for now (no imports)\n utility.requireArgument(handledBy, 'handledBy', [HTMLElement, 'object']);\n\n let htmlElement;\n if (handledBy instanceof HTMLElement) {\n htmlElement = handledBy;\n } else {\n handledBy = handledBy as LightningElement;\n // Convenience for LightningElement developers who pass \"this\" in handledBy.\n // Get the underlying HTML element\n if (handledBy.template?.host instanceof HTMLElement) {\n htmlElement = handledBy.template.host;\n } else {\n utility.requireArgument(undefined, 'handledBy');\n }\n }\n\n const userPayload: SchematizedPayload = this._wrapUserPayload(\n userSchemaOrText,\n userData,\n true\n );\n\n const rootId: string = this._getEffectiveRootId(options);\n\n switch (event.type) {\n case 'click': {\n const mouseEvent = event as MouseEvent;\n\n // If the user has called domEvent API on this event explicitly,\n // then we don't need to log it by default.\n const acd: AutomaticClickTracker = this._nextGen.getClickTracker();\n if (acd) {\n acd.markEventHandled(mouseEvent);\n }\n\n const captureMouse = options?.captureMouseData;\n\n // Distinguish between different fields of the oneof\n const instrumentedEvent: InstrumentedEventData =\n domEventHelpers.getInstrumentedEventData(\n captureMouse\n ? DomEventDataField.MouseEvent\n : DomEventDataField.BaseEvent,\n captureMouse\n ? domEventHelpers.getMouseEventData(mouseEvent)\n : domEventHelpers.getEventData(mouseEvent),\n htmlElement,\n userPayload\n );\n instrumentedEvent.auto = options?._auto;\n\n this._logInternal(\n this.name,\n instrumentedEventSchema,\n instrumentedEvent,\n tsNow,\n rootId\n );\n break;\n }\n default:\n throw new Error(utility.notImplemented);\n }\n },\n { op: 'domEvent' }\n );\n }\n\n private _siftTags(tags: MetricsTags): MetricsTags {\n const modTags = Object.assign({}, tags); // Need only the top level fields\n Object.entries(modTags).forEach(([key, value]) => {\n // Be more forgiving about individual tag values. Instead of throwing an exception, set the tag value to the type of the invalid value.\n if (value === null) {\n modTags[key] = 'null';\n } else if (value === '') {\n modTags[key] = 'empty';\n } else if (Number.isNaN(value)) {\n // Don't use the stand-alone isNaN function\n modTags[key] = 'NaN';\n } else {\n const type = typeof value;\n if (['number', 'string', 'boolean'].indexOf(type) === -1) {\n modTags[key] = type;\n }\n }\n });\n return modTags;\n }\n\n incrementCounter(\n operation: string,\n increment = 1,\n hasError = false,\n tags: MetricsTags = {}\n ): void {\n this._safety.tryCatch(\n () => {\n utility.requireArgument(operation, 'operation', 'string');\n utility.checkForDenyListedValues(operation, 'operation', denyListMetricNames);\n utility.checkForReservedCharacters(\n operation,\n 'operation',\n reservedMetricCharacters\n );\n utility.requireArgument(increment, 'increment', 'number');\n utility.requireArgument(hasError, 'hasError', 'boolean');\n utility.requireArgument(tags, 'tags', 'object');\n this._metrics.incrementCounter(\n operation,\n increment,\n hasError,\n this._siftTags(tags)\n );\n },\n { op: 'incrementCounter' }\n );\n }\n\n trackValue(operation: string, value: number, hasError = false, tags: MetricsTags = {}): void {\n this._safety.tryCatch(\n () => {\n utility.requireArgument(operation, 'operation', 'string');\n utility.checkForDenyListedValues(operation, 'operation', denyListMetricNames);\n utility.checkForReservedCharacters(\n operation,\n 'operation',\n reservedMetricCharacters\n );\n utility.requireArgument(value, 'value', 'number');\n utility.requireArgument(hasError, 'hasError', 'boolean');\n utility.requireArgument(tags, 'tags', 'object');\n this._metrics.trackValue(operation, value, hasError, this._siftTags(tags));\n },\n { op: 'trackValue' }\n );\n }\n\n bucketValue(\n operation: string,\n value: number,\n buckets: number[] = [],\n hasError = false,\n tags: MetricsTags = {}\n ): void {\n this._safety.tryCatch(\n () => {\n utility.requireArgument(operation, 'operation', 'string');\n utility.checkForDenyListedValues(operation, 'operation', denyListMetricNames);\n utility.checkForReservedCharacters(\n operation,\n 'operation',\n reservedMetricCharacters\n );\n utility.requireArgument(value, 'value', 'number');\n utility.requireArgument(buckets, 'buckets', Array);\n Object.entries(buckets).forEach(([key, value]) => {\n utility.requireArgument(value, `Bucket value for '${key}'`, 'number');\n });\n utility.requireArgument(hasError, 'hasError', 'boolean');\n utility.requireArgument(tags, 'tags', 'object');\n this._metrics.bucketValue(\n operation,\n value,\n buckets,\n hasError,\n this._siftTags(tags)\n );\n },\n { op: 'bucketValue' }\n );\n }\n\n getUpCounters(): Metric<number>[] {\n return this._metrics.getUpCounters().filter((m) => m.getLastUpdatedOn());\n }\n\n getValueRecorders(): Metric<number[]>[] {\n return this._metrics.getValueRecorders().filter((m) => m.getLastUpdatedOn());\n }\n\n getBucketHistograms(): BucketMetric<number[]>[] {\n return this._metrics.getBucketHistograms().filter((m) => m.getLastUpdatedOn());\n }\n\n registerForLogPrompt(listener: LogPromptListener): void {\n utility.requireArgument(listener, 'listener', 'function');\n this._nextGen.registerForLogPrompt(listener);\n }\n\n _getAsaOptions(options?: ActivityApiOptions): ActivityStartApiOptions {\n return options\n ? Object.assign(\n {\n instrumentationContext: options?.instrumentationContext\n },\n options.startOptions\n )\n : undefined;\n }\n\n activity<T>(name: string, execute: (act: Activity) => T, options?: ActivityApiOptions): T {\n const asaOptions: ActivityStartApiOptions = this._getAsaOptions(options);\n const act = this.startActivity(name, asaOptions);\n try {\n return execute(act);\n } catch (err) {\n act.error(err, options?.errorPayload?.schema, options?.errorPayload?.payload);\n throw err;\n } finally {\n act.stop(\n options?.stopPayload?.schema,\n options?.stopPayload?.payload,\n options?.stopOptions\n );\n }\n }\n\n async activityAsync<T>(\n name: string,\n execute: (act: Activity) => Promise<T>,\n options?: ActivityApiOptions\n ): Promise<T> {\n const asaOptions: ActivityStartApiOptions = this._getAsaOptions(options);\n const act = this.startActivity(name, asaOptions);\n try {\n return await execute(act);\n } catch (err) {\n act.error(err, options?.errorPayload?.schema, options?.errorPayload?.payload);\n throw err;\n } finally {\n act.stop(\n options?.stopPayload?.schema,\n options?.stopPayload?.payload,\n options?.stopOptions\n );\n }\n }\n}\n","import { utility } from 'o11y/shared';\nimport { RootActivityHistoryEntry } from '../types/RootActivityHistoryEntry';\n\nconst GRACE = 0.1; // 10%\nconst DEFAULT_LIMIT = 20; // Must be a positive number\n\nexport class RootActivityHistoryImpl {\n private readonly _historyMap = new Map<string, RootActivityHistoryEntry>();\n private readonly _historyList = new Array<RootActivityHistoryEntry>();\n private readonly _graceCount: number;\n private readonly _realLimit: number;\n\n constructor(limit?: number) {\n if (utility.requireArgumentIfDefined(limit, 'limit', 'number')) {\n limit = Math.ceil(limit);\n if (limit <= 0) {\n throw new Error('Limit must be a positive number');\n }\n } else {\n limit = DEFAULT_LIMIT;\n }\n this._graceCount = Math.max(1, Math.floor(limit * GRACE));\n\n // We add one to the limit because we will never delete the first root activity.\n this._realLimit = 1 + limit + this._graceCount;\n }\n\n add(entry: RootActivityHistoryEntry): void {\n if (this._historyMap.has(entry.id)) {\n throw new Error(\n `RootActivityHistoryImpl.add: entry already exists for rootId: ${entry.id}`\n );\n }\n\n this._historyMap.set(entry.id, entry);\n this._historyList.push(entry);\n\n if (this._historyList.length === this._realLimit) {\n // Start deleting from the second element because the first root activity\n // tends to be special.\n const removed = this._historyList.splice(1, this._graceCount);\n removed.forEach((e) => this._historyMap.delete(e.id));\n }\n }\n\n get count(): number {\n return this._historyList.length;\n }\n\n findById(rootId: string): RootActivityHistoryEntry {\n return this._historyMap.get(rootId);\n }\n\n findByTime(atTime: number): RootActivityHistoryEntry {\n let closest: RootActivityHistoryEntry;\n let closestDiff = Number.MAX_VALUE;\n\n // We have to iterate all the elements because we can't rely on an implicit sort\n // order of time of add, as the start time can be modified at any time.\n for (const entry of this._historyList) {\n const startDelta = atTime - entry.startPerfTime;\n const isDuringRoot =\n startDelta >= 0 &&\n (entry.stopPerfTime === undefined || atTime < entry.stopPerfTime);\n if (isDuringRoot && startDelta < closestDiff) {\n closest = entry;\n closestDiff = startDelta;\n }\n }\n return closest;\n }\n}\n","import { RootActivity, Schema } from '../interfaces';\nimport { ActivityDetail } from '../interfaces/ActivityDetail';\nimport { ActivityImpl, onActivityError, onActivityStop } from './ActivityImpl';\nimport { SchematizedData, utility } from 'o11y/shared';\n\nexport class RootActivityImpl extends ActivityImpl implements RootActivity {\n constructor(\n name: string,\n onStopped: onActivityStop,\n onError: onActivityError,\n rootId?: string,\n isSampled?: boolean,\n startPerfTime?: number,\n generatedRootIdLength?: number // Used only if rootId isn't specified\n ) {\n super(\n name,\n undefined,\n onStopped,\n onError,\n undefined,\n rootId || utility.generateUniqueId(generatedRootIdLength ?? 32),\n isSampled,\n startPerfTime\n );\n this._isRoot = true;\n }\n\n private _preRootId: string;\n get preRootId(): string {\n return this._preRootId;\n }\n set preRootId(value: string) {\n this._preRootId = value;\n }\n\n protected _getDetail(userSchema: Schema, userData: SchematizedData): ActivityDetail {\n const detail = super._getDetail(userSchema, userData);\n detail.isRoot = true;\n detail.preRootId = this.preRootId;\n return detail;\n }\n}\n","import { RootActivity, TracingHeadersOptions } from '../interfaces';\n\nconst rootId: string = new Array(32).fill(0).join('');\nclass RootActivityNoOp implements RootActivity {\n getId(): string {\n return rootId;\n }\n getRootId(): string {\n return undefined;\n }\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n error(): void {}\n\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n stop(): void {}\n\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n discard(): void {}\n\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n terminate(): void {}\n\n getIsSampled(): boolean {\n return false;\n }\n getTraceHeaders(__options: TracingHeadersOptions): Record<string, string> {\n return {};\n }\n getStartTimestamp(): number {\n return undefined;\n }\n getStartPerfTime(): number {\n return undefined;\n }\n getStopPerfTime(): number {\n return undefined;\n }\n getErrorCount(): number {\n return 0;\n }\n}\n\nexport const rootActivityNoOp = Object.freeze(new RootActivityNoOp());\n","import { utility } from 'o11y/shared';\n\nimport { ActivityDetail, ActivityStartOptions, RootActivity } from '../interfaces';\nimport { ActivityData } from '../interfaces-private';\nimport { RootActivityHistoryEntry } from '../types/RootActivityHistoryEntry';\nimport { discarded, onActivityStop } from './ActivityImpl';\nimport { InstrumentationImpl } from './InstrumentationImpl';\nimport { MetricsImpl } from './MetricsImpl';\nimport { NextgenImpl } from './NextgenImpl';\nimport { RootActivityHistoryImpl } from './RootActivityHistoryImpl';\nimport { RootActivityImpl } from './RootActivityImpl';\nimport { rootActivityNoOp } from './RootActivityNoOp';\n\nexport class AppInstrumentationImpl extends InstrumentationImpl {\n private _singleRootActivity: RootActivityImpl; // Not used when _allowMulti = true\n private _rootActivityHistory = new RootActivityHistoryImpl();\n\n private readonly _onRootActivityStoppedCallback: onActivityStop =\n this._handleRootActivityStop.bind(this);\n\n constructor(_nextGen: NextgenImpl, _name: string, private readonly _allowMulti: boolean) {\n super(_nextGen, _name);\n }\n\n startRootActivity(\n name: string,\n rootId?: string,\n isSampled?: boolean,\n options?: ActivityStartOptions\n ): RootActivity {\n return this._safety.tryCatchReturn(\n () => {\n utility.requireArgument(name, 'name');\n\n if (options?.id !== undefined) {\n throw new Error(\n 'Cannot specify id for root activity, use rootId argument instead'\n );\n }\n\n const newRootActivity = new RootActivityImpl(\n name,\n this._onRootActivityStoppedCallback,\n this._onActivityErrorCallback,\n rootId,\n isSampled,\n options?.perfStartOverride,\n this._nextGen.preferredRootIdLength\n );\n\n if (!this._allowMulti) {\n const entry: RootActivityHistoryEntry = {\n id: newRootActivity.getId(),\n name,\n startPerfTime: newRootActivity.getStartPerfTime(),\n isSampled: newRootActivity.getIsSampled()\n };\n this._rootActivityHistory.add(entry);\n\n if (this._singleRootActivity && !this._singleRootActivity.isStopped) {\n const preRootId = this._singleRootActivity.getId();\n this._singleRootActivity.terminate();\n newRootActivity.preRootId = preRootId;\n }\n this._singleRootActivity = newRootActivity;\n }\n\n return newRootActivity as RootActivity;\n },\n rootActivityNoOp,\n { op: 'startRootActivity' }\n );\n }\n\n private _handleRootActivityStop(detail: ActivityDetail): void {\n // If we are here, this is the first time the activity is being stopped.\n\n const historyEntry = this._rootActivityHistory.findById(detail.id);\n if (historyEntry) {\n historyEntry.stopPerfTime = detail.stopPerfTime;\n // Also, do the fields that may be overridden at stop time.\n historyEntry.startPerfTime = detail.startPerfTime;\n }\n\n if (detail.stopReason === discarded) {\n return;\n }\n\n const activityData: ActivityData = this._getActivityData(detail);\n\n this._logActivity(activityData, detail.startTimestamp);\n this._singleRootActivity = undefined;\n }\n\n protected _getActivityData(detail: ActivityDetail): ActivityData {\n const activityData: ActivityData = super._getActivityData(detail);\n activityData.isRoot = detail.isRoot;\n activityData.preRootId = detail.preRootId;\n return activityData;\n }\n\n getSingleRootActivityId(): string {\n return this._singleRootActivity?.getId();\n }\n\n isSingleRootActivitySampled(): boolean {\n return this._singleRootActivity?.getIsSampled();\n }\n\n protected _initMetrics(): MetricsImpl {\n return new MetricsImpl(this.name, () => this.name);\n }\n\n getRootActivityHistoryEntry(atTime: number): RootActivityHistoryEntry {\n return this._rootActivityHistory.findByTime(atTime);\n }\n}\n","import { Instrumentation } from '../interfaces';\nimport { utility } from 'o11y/shared';\n\nconst pathLimit = 5;\n\nexport class AutomaticClickTracker {\n private _ignoredEvent: Event;\n private _isActive = false;\n private readonly _boundClickListener = this._clickListener.bind(this);\n\n constructor(private readonly _instr: Instrumentation, private readonly _doc: Document) {\n utility.requireArgument(_instr, '_instr');\n utility.requireArgument(_doc, '_doc');\n }\n\n activate(): void {\n if (!this._isActive) {\n this._doc.addEventListener('click', this._boundClickListener, true);\n this._isActive = true;\n }\n }\n\n deactivate(): void {\n if (this._isActive) {\n this._doc.removeEventListener('click', this._boundClickListener, true);\n this._isActive = false;\n }\n }\n\n markEventHandled(event: MouseEvent): void {\n this._ignoredEvent = event;\n }\n\n private _clickListener(event: MouseEvent): void {\n let eventTargets: EventTarget[] = event.composedPath?.();\n if (!eventTargets || !eventTargets.length) {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n eventTargets = (event as any).path;\n }\n const handledBy: HTMLElement = this._getClickableElement(eventTargets);\n\n if (handledBy) {\n // Immediate\n setTimeout(() => {\n if (event !== this._ignoredEvent) {\n this._instr.domEvent(event, handledBy, undefined, undefined, {\n _auto: true\n });\n }\n });\n }\n }\n\n private _getClickableElement(path: EventTarget[]): HTMLElement {\n const limit = path ? Math.min(path.length, pathLimit) : 0;\n for (let x = 0; x < limit; x += 1) {\n const currentElement = path[x] as HTMLElement;\n const tagName = currentElement.tagName?.toLowerCase();\n if (tagName === 'a' || tagName === 'button') {\n return currentElement;\n }\n if (tagName === 'input') {\n const inputElement = currentElement as HTMLInputElement;\n if (inputElement.type?.toLowerCase() === 'button') {\n return inputElement;\n }\n }\n }\n return undefined;\n }\n}\n","import { utility } from 'o11y/shared';\nimport { Communicator } from '../interfaces';\nimport { SenderLogMessage, SenderMetricsMessage } from '../interfaces-private';\nimport {\n MESSAGE_TYPE_LOG,\n MESSAGE_TYPE_METRICS,\n MESSAGE_TYPE_HANDSHAKE,\n MessageChannelData\n} from './SenderConnector';\n\nexport const MESSAGE_FROM_RECEIVER = 'o11y:receiver';\n\nexport type LogCallback = (log: SenderLogMessage) => void;\nexport type MetricsCallback = (metric: SenderMetricsMessage) => void;\n\nexport type CommErrorInfo = {\n data: unknown;\n};\n// This callback will be called if we receive data that can't be serialized.\nexport type CommErrorCallback = () => void;\n\nenum CommState {\n Unknown,\n Opening\n}\n\ntype CommStatus = {\n state: CommState;\n port: MessagePort;\n};\n\nexport class ReceiverConnector {\n private _senders: Map<Communicator, CommStatus> = new Map();\n\n constructor(\n private readonly _logCallback: LogCallback,\n private readonly _metricsCallback: MetricsCallback,\n private readonly _commErrorCallback: CommErrorCallback\n ) {\n utility.requireArgument(this._logCallback, '_logCallback', 'function');\n utility.requireArgument(this._metricsCallback, '_metricsCallback', 'function');\n utility.requireArgument(this._commErrorCallback, '_commErrorCallback', 'function');\n }\n\n public openComms(sender: Communicator): void {\n utility.requireArgument(sender, 'sender', 'object');\n\n if (!this._senders.has(sender)) {\n const messageChannel = new MessageChannel();\n\n const status: CommStatus = {\n state: CommState.Opening,\n port: messageChannel.port1\n };\n this._senders.set(sender, status);\n\n status.port.onmessage = this._messagePortEventHandler.bind(this);\n // According to the docs, this error occurs on the receiving end.\n status.port.onmessageerror = this._messagePortErrorHandler.bind(this);\n\n sender.postMessage(\n {\n from: MESSAGE_FROM_RECEIVER,\n type: MESSAGE_TYPE_HANDSHAKE\n },\n '*',\n [messageChannel.port2]\n );\n }\n }\n\n public closeComms(sender: Communicator): void {\n const status = this._senders.get(sender);\n if (status) {\n status.port.onmessage = undefined;\n status.port.onmessageerror = undefined;\n this._senders.delete(sender);\n }\n }\n\n private _messagePortEventHandler(e: MessageEvent<MessageChannelData>): void {\n if (e.data.type === MESSAGE_TYPE_LOG) {\n this._logCallback(e.data.data as SenderLogMessage);\n } else if (e.data.type === MESSAGE_TYPE_METRICS) {\n this._metricsCallback(e.data.data as SenderMetricsMessage);\n }\n }\n\n private _messagePortErrorHandler(): void {\n // Not passing any error info for now\n this._commErrorCallback();\n }\n}\n","import { utility } from 'o11y/shared';\nimport { AllowedOrigins, Communicator } from '../interfaces';\nimport { SenderLogMessage, SenderMetricsMessage } from '../interfaces-private';\nimport { MESSAGE_FROM_RECEIVER } from './ReceiverConnector';\n\nexport const MESSAGE_FROM_SENDER = 'o11y:sender';\nexport const MESSAGE_TYPE_HANDSHAKE = 'handshake';\nexport const MESSAGE_TYPE_LOG = 'log';\nexport const MESSAGE_TYPE_METRICS = 'metrics';\n\nexport type HandshakeData = {\n from: string;\n type: string;\n};\n\nexport type MessageChannelData = {\n // No need for from here.\n type: string;\n data: SenderLogMessage | SenderMetricsMessage;\n};\n\n// This is typically the iframe\nexport class SenderConnector {\n private readonly _messageEventHandlerFunc = this._messageEventHandler.bind(this);\n private _otherPort: MessagePort;\n private _handshakeComplete = false;\n private _logBuffer: SenderLogMessage[] = [];\n private _metricsBuffer: SenderMetricsMessage[] = [];\n\n constructor(\n private readonly _self: Communicator,\n private readonly _allowedOrigins?: AllowedOrigins\n ) {\n utility.requireArgument(this._self, '_self', 'object');\n utility.requireArgumentIfDefined(_allowedOrigins, 'allowedOrigins', Array);\n\n // Start listening to handshake return\n this._self.addEventListener('message', this._messageEventHandlerFunc);\n }\n\n private _messageEventHandler(e: MessageEvent<HandshakeData>): void {\n // When the receiever sends the handshake, it's ready to receive data\n if (\n e.data.from === MESSAGE_FROM_RECEIVER &&\n e.data.type === MESSAGE_TYPE_HANDSHAKE &&\n e.ports[0] instanceof MessagePort &&\n utility.isAllowedOrigin(e.origin, this._allowedOrigins)\n ) {\n this._handshakeComplete = true;\n this._self.removeEventListener('message', this._messageEventHandlerFunc);\n this._otherPort = e.ports[0];\n this._emptyBuffers();\n }\n }\n\n public sendLog(log: SenderLogMessage): void {\n if (!this._handshakeComplete) {\n this._logBuffer.push(log);\n } else {\n this._otherPort.postMessage({\n type: MESSAGE_TYPE_LOG,\n data: log\n });\n }\n }\n\n public sendMetrics(metrics: SenderMetricsMessage): void {\n if (!this._handshakeComplete) {\n this._metricsBuffer.push(metrics);\n } else {\n this._otherPort.postMessage({\n type: MESSAGE_TYPE_METRICS,\n data: metrics\n });\n }\n }\n\n private _emptyBuffers(): void {\n this._logBuffer.forEach((log) => this.sendLog(log));\n this._metricsBuffer.forEach((metrics) => this.sendMetrics(metrics));\n this._logBuffer = undefined;\n this._metricsBuffer = undefined;\n }\n}\n","import { metricsUtility, UpCounterImpl } from 'o11y/shared';\nimport { BucketMetric, Metric, MetricsReporter } from '../interfaces';\nimport {\n BucketHistogram,\n SenderMetricsMessage,\n UpCounter,\n ValueRecorder\n} from '../interfaces-private';\nimport { BucketHistogramImpl } from './BucketHistogramImpl';\nimport { ValueRecorderImpl } from './ValueRecorderImpl';\n\nexport class MetricsStore implements MetricsReporter {\n private _upCounters: UpCounterImpl[] = [];\n private _valueRecorders: ValueRecorderImpl[] = [];\n private _bucketHistograms: BucketHistogramImpl[] = [];\n\n add(senderMetrics: SenderMetricsMessage): void {\n if (senderMetrics.upCounters?.length) {\n this._upCounters.push(\n ...senderMetrics.upCounters.map(\n (it: UpCounter) =>\n new UpCounterImpl(\n it.name,\n it.ownerName,\n it.ownerAppName,\n metricsUtility.getMetricsTags(it.tags),\n it.createdTimestamp,\n it.lastUpdatedTimestamp,\n it.value\n )\n )\n );\n }\n\n if (senderMetrics.valueRecorders?.length) {\n this._valueRecorders.push(\n ...senderMetrics.valueRecorders.map(\n (it: ValueRecorder) =>\n new ValueRecorderImpl(\n it.name,\n it.ownerName,\n it.ownerAppName,\n metricsUtility.getMetricsTags(it.tags),\n it.createdTimestamp,\n it.lastUpdatedTimestamp,\n it.values\n )\n )\n );\n }\n\n if (senderMetrics.bucketHistograms?.length) {\n this._bucketHistograms.push(\n ...senderMetrics.bucketHistograms.map(\n (it: BucketHistogram) =>\n new BucketHistogramImpl(\n it.name,\n it.ownerName,\n it.ownerAppName,\n metricsUtility.getMetricsTags(it.tags),\n it.buckets,\n it.createdTimestamp,\n it.lastUpdatedTimestamp,\n it.values\n )\n )\n );\n }\n }\n\n getUpCounters(): Metric<number>[] {\n // Remove any metrics that have been reset from before\n this._upCounters = this._upCounters.filter((i) => i.getLastUpdatedOn() !== undefined);\n return this._upCounters;\n }\n getValueRecorders(): Metric<number[]>[] {\n // Remove any metrics that have been reset from before\n this._valueRecorders = this._valueRecorders.filter(\n (i) => i.getLastUpdatedOn() !== undefined\n );\n return this._valueRecorders;\n }\n getBucketHistograms(): BucketMetric<number[]>[] {\n // Remove any metrics that have been reset from before\n this._bucketHistograms = this._bucketHistograms.filter(\n (i) => i.getLastUpdatedOn() !== undefined\n );\n return this._bucketHistograms;\n }\n}\n","import { SchematizedData, metricsUtility, utility } from 'o11y/shared';\nimport { SenderLogMessage, SenderMetricsMessage } from '../interfaces-private';\nimport {\n LogCollector,\n LogMeta,\n MetricsCollector,\n MetricsExtractorMethods,\n Schema\n} from '../interfaces';\nimport { SenderConnector } from '../library/SenderConnector';\n\nexport const DEFAULT_POLL_INTERVAL = 1000;\n\nexport class SenderCollector implements LogCollector, MetricsCollector {\n private readonly _pollInterval: number = DEFAULT_POLL_INTERVAL;\n private _metricsExtractors: MetricsExtractorMethods;\n\n constructor(private readonly _connector: SenderConnector, _pollInterval?: number) {\n utility.requireArgument(_connector, '_connector', 'object');\n if (\n utility.requireArgumentIfDefined(_pollInterval, '_pollInterval', 'number') &&\n _pollInterval > 0\n ) {\n this._pollInterval = _pollInterval;\n }\n }\n\n collect(schema: Schema, data: SchematizedData, logMeta: LogMeta): void {\n const msg: SenderLogMessage = {\n schema,\n data,\n logMeta\n };\n\n this._connector.sendLog(msg);\n }\n\n receiveMetricsExtractors(extractors: MetricsExtractorMethods): void {\n this._metricsExtractors = extractors;\n\n // Send metrics immediately after receiving extractors\n this._collectAndSendMetrics();\n setInterval(this._collectAndSendMetrics.bind(this), this._pollInterval);\n }\n\n private _collectAndSendMetrics(): void {\n const metrics: SenderMetricsMessage = {\n upCounters: metricsUtility.getUpCounters(this._metricsExtractors.getAllUpCounters()),\n valueRecorders: metricsUtility.getValueRecorders(\n this._metricsExtractors.getAllValueRecorders()\n ),\n bucketHistograms: metricsUtility.getBucketHistograms(\n this._metricsExtractors.getAllBucketHistograms()\n )\n };\n\n if (\n metrics.upCounters.length ||\n metrics.valueRecorders.length ||\n metrics.bucketHistograms.length\n ) {\n this._connector.sendMetrics(metrics);\n }\n }\n}\n","import {\n co11y,\n LogPromptListener,\n payloadUtility,\n SchematizedData,\n schemaUtil,\n utility\n} from 'o11y/shared';\nimport {\n BucketMetric,\n BufferedLog,\n IdleDetector,\n Instrumentation,\n InstrumentationContext,\n InstrumentedAppMethods,\n InstrumentedAppOptions,\n LogCollector,\n LogCollectorOptions,\n LogMeta,\n Metric,\n MetricsCollector,\n Nextgen,\n OperationMode,\n OperationModeDetector,\n PayloadProvider,\n PayloadProviderArgs,\n Schema\n} from '../interfaces';\nimport { SenderLogMessage, SenderMetricsMessage } from 'src/interfaces-private';\nimport { AppInstrumentationImpl } from './AppInstrumentationImpl';\nimport { AutomaticClickTracker } from './AutomaticClickTracker';\nimport { InstrumentationImpl } from './InstrumentationImpl';\nimport { Tracing } from './Tracing';\nimport { SenderConnector } from './SenderConnector';\nimport { MetricsStore } from './MetricsStore';\nimport { SenderCollector } from '../sender_collector/SenderCollector';\nimport { ReceiverConnector } from './ReceiverConnector';\nimport { RootActivityHistoryEntry } from 'src/types/RootActivityHistoryEntry';\n\nconst maxInstrumentationLength = 80;\nconst defaultRootIdLength = 32;\nconst truncatedText = '_CUT';\nconst maxInstrumentationLengthBeforeTruncated = maxInstrumentationLength - truncatedText.length;\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nfunction noOpFunc(): void {}\n\nexport class NextgenImpl implements Nextgen {\n private readonly _logCollectors = new Set<LogCollector>();\n private readonly _instruments = new Map<string, InstrumentationImpl | AppInstrumentationImpl>();\n private readonly _seqBySchema = new Map<string, number>();\n private _sequence = 0;\n private _appInstr: AppInstrumentationImpl;\n private _autoClickTracker: AutomaticClickTracker;\n private _metricsCollector: MetricsCollector;\n private _appPayloadProvider: PayloadProvider;\n private _pagePayloadProvider: PayloadProvider;\n private _forceDisabledLogCollectors = new Set<LogCollector>();\n private _logCollectorFailures = new Map<LogCollector, number>();\n private static _collectorFailureLimit = 5;\n private _isBufferingEnabled = false;\n private _buffer: BufferedLog[] = [];\n private readonly _logCollectionListeners = new Set<LogPromptListener>();\n private _clientSessionId: string;\n private _opMode: OperationMode = 'default';\n private _isSender = false;\n private _isReceiver = false;\n private _metricsStore: MetricsStore;\n private _receiverConnector: ReceiverConnector;\n private _decimalPoints: number | null = 2;\n private _preferredRootIdLength: number;\n\n get preferredRootIdLength(): number {\n return this._preferredRootIdLength;\n }\n\n get pagePayloadProvider(): PayloadProvider {\n return this._pagePayloadProvider;\n }\n set pagePayloadProvider(provider: PayloadProvider) {\n this._pagePayloadProvider = provider;\n }\n\n get appPayloadProvider(): PayloadProvider {\n return this._appPayloadProvider;\n }\n set appPayloadProvider(provider: PayloadProvider) {\n this._appPayloadProvider = provider;\n }\n\n constructor(private readonly _idleDetector: IdleDetector) {}\n\n registerApp(name: string, options?: InstrumentedAppOptions): InstrumentedAppMethods {\n utility.requireArgument(name, 'name', 'string');\n if (this._appInstr) {\n throw new Error('An app has already been registered with instrumentation.');\n }\n const instr = this._instruments.get(name);\n if (instr) {\n throw new Error(`The instrumentation name ${name} is already taken`);\n }\n co11y.setOwnerAppName(name);\n\n this._initOpMode(options?.operationMode);\n this._isSender = this._opMode === 'sender';\n this._isReceiver = this._opMode === 'receiver';\n\n if (options?.decimalPoints !== undefined) {\n this._decimalPoints = options.decimalPoints;\n }\n\n this._preferredRootIdLength = options?.preferredRootIdLength ?? defaultRootIdLength;\n\n this._clientSessionId = options?.clientSessionId?.toString() || utility.generateUniqueId();\n this._appInstr = new AppInstrumentationImpl(\n this,\n name,\n options?.allowMultipleRootActivities\n );\n this._instruments.set(name, this._appInstr);\n\n if (this._isSender) {\n const senderCollector = new SenderCollector(\n new SenderConnector(window, options?.allowedReceiverOrigins),\n options?.senderMetricsPollingInterval\n );\n this.registerLogCollector(senderCollector);\n this.registerMetricsCollector(senderCollector);\n } else if (this._isReceiver) {\n this._metricsStore = new MetricsStore();\n\n this._receiverConnector = new ReceiverConnector(\n (msg: SenderLogMessage) => {\n msg.logMeta.receiverClientSessionId = this._clientSessionId;\n msg.logMeta.receiverRootId = this._appInstr.getSingleRootActivityId();\n\n this._multiplex(msg.schema, msg.data, msg.logMeta);\n },\n (msg: SenderMetricsMessage) => {\n this._metricsStore.add(msg);\n },\n () => {\n this._appInstr.incrementCounter('o11y-error-receiver', 1, true);\n }\n );\n }\n\n // Skip buffering if sender mode is enabled\n this._isBufferingEnabled = !this._isSender && options?.enableBuffering;\n\n const tracing = new Tracing(this.getInstrumentation('Network'), this._idleDetector);\n\n return {\n log: this._appInstr.log.bind(this._appInstr),\n error: this._appInstr.error.bind(this._appInstr),\n startActivity: this._appInstr.startActivity.bind(this._appInstr),\n domEvent: this._appInstr.domEvent.bind(this._appInstr),\n incrementCounter: this._appInstr.incrementCounter.bind(this._appInstr),\n trackValue: this._appInstr.trackValue.bind(this._appInstr),\n bucketValue: this._appInstr.bucketValue.bind(this._appInstr),\n networkInstrumentation: tracing.networkInstrumentation.bind(tracing),\n registerForLogPrompt: this._appInstr.registerForLogPrompt.bind(this._appInstr),\n activity: this._appInstr.activity.bind(this._appInstr),\n activityAsync: this._appInstr.activityAsync.bind(this._appInstr),\n\n startRootActivity: this._appInstr.startRootActivity.bind(this._appInstr),\n registerLogCollector: this._isSender ? noOpFunc : this.registerLogCollector.bind(this),\n registerMetricsCollector: this._isSender\n ? noOpFunc\n : this.registerMetricsCollector.bind(this),\n activateClickTracker: this.activateClickTracker.bind(this),\n deactivateClickTracker: this.deactivateClickTracker.bind(this),\n disableBuffering: this.disableBuffering.bind(this),\n promptLogCollection: this.promptLogCollection.bind(this),\n getClientSessionId: this.getClientSessionId.bind(this),\n\n getOperationMode: this.getOperationMode.bind(this),\n startReceiving: this._isReceiver\n ? this._receiverConnector.openComms.bind(this._receiverConnector)\n : noOpFunc,\n stopReceiving: this._isReceiver\n ? this._receiverConnector.closeComms.bind(this._receiverConnector)\n : noOpFunc\n };\n }\n\n getInstrumentation(name: string): Instrumentation {\n utility.requireArgument(name, 'name', 'string');\n if (name.length > maxInstrumentationLength) {\n // don't throw if it's too long. just add truncated suffix, but stay within max length\n name = name.substring(0, maxInstrumentationLengthBeforeTruncated) + truncatedText;\n }\n let instr: InstrumentationImpl | AppInstrumentationImpl = this._instruments.get(name);\n if (!instr) {\n instr = new InstrumentationImpl(this, name);\n this._instruments.set(name, instr);\n } else if (instr === this._appInstr) {\n throw new Error(`The instrumentation name ${name} is being used by the app.`);\n }\n return instr;\n }\n\n get appName(): string {\n return this._appInstr?.name;\n }\n\n getRootActivityHistoryEntryByTime(atTime: number): RootActivityHistoryEntry {\n return this._appInstr?.getRootActivityHistoryEntry(atTime);\n }\n\n // This is an internal method that needs to be public\n addLog(\n loggerName: string,\n schema: Schema,\n data: SchematizedData,\n timestamp: number,\n rootId: string\n ): number {\n payloadUtility.checkInputs(schema, data);\n this._sequence += 1;\n\n // Schema sequences are per user-defined schema, not internal ones such as ActivityData\n const isInternal = schemaUtil.isInternal(schema);\n const userSchema = isInternal && data?.userPayload ? data.userPayload.schema : schema;\n const schemaId = schemaUtil.getSchemaId(userSchema);\n let schemaSequence = this._seqBySchema.get(schemaId) || 0;\n schemaSequence += 1;\n this._seqBySchema.set(schemaId, schemaSequence);\n\n const logMeta: LogMeta = {\n timestamp,\n rootId,\n sequence: this._sequence,\n schemaSequence,\n loggerName,\n pagePayload: undefined,\n appPayload: undefined,\n loggerAppName: this.appName,\n connectionType: utility.getConnectionType(),\n clientSessionId: this._clientSessionId,\n // Calculate age here rather than later to ensure we use the timeOrigin where the log was created (e.g. sender or receiver)\n age: utility.getAge(timestamp)\n };\n\n const payloadArgs: PayloadProviderArgs = {\n schema,\n data,\n logMeta\n };\n\n // We want the appPayloadProvider to have access to the pagePayload via logMeta, so the order is important.\n // We are not cloning the pagePayload and appPayload like we used to because they are\n // provided by trusted entities of the app: The payloadArgs object must not be mutated,\n // although *careful* mutation of the underlying data and logMeta objects is allowed.\n logMeta.pagePayload = payloadUtility.getPayloadFromProvider(\n this.pagePayloadProvider,\n payloadArgs\n );\n logMeta.appPayload = payloadUtility.getPayloadFromProvider(\n this.appPayloadProvider,\n payloadArgs\n );\n\n if (!this._isSender) {\n // Make a copy of the data once, lest they get mutated by the caller\n // This is not needed for sender mode since the data is already serialized\n data = utility.clone(data);\n }\n\n if (typeof this._decimalPoints === 'number') {\n utility.roundNumbersInObject(data, this._decimalPoints);\n if (isInternal) {\n utility.roundNumbersInObject(data.userPayload?.payload, this._decimalPoints);\n }\n utility.roundNumbersInObject(logMeta.pagePayload?.payload, this._decimalPoints);\n utility.roundNumbersInObject(logMeta.appPayload?.payload, this._decimalPoints);\n }\n\n if (this._isBufferingEnabled) {\n const bufferedLog: BufferedLog = {\n schema,\n data,\n logMeta\n };\n // Always push to the buffer, even if no eligible collectors\n this._buffer.push(bufferedLog);\n }\n\n this._multiplex(schema, data, logMeta);\n return this._sequence;\n }\n\n private _multiplex(schema: Schema, data: SchematizedData, logMeta: LogMeta): void {\n const eligibleCollectors: LogCollector[] = Array.from(this._logCollectors).filter(\n (collector: LogCollector) =>\n !this._forceDisabledLogCollectors.has(collector) &&\n !collector.getIsCollectDisabled?.()\n );\n\n if (eligibleCollectors.length > 0) {\n for (const collector of eligibleCollectors) {\n // Not cloning the data for each collector (like we used to) as they are trusted entities of the app\n let failures: number = this._logCollectorFailures.get(collector) || 0;\n\n try {\n collector.collect(schema, data, logMeta);\n // if it got here it means it succeeded/didn't throw so we want to decrement the failure count\n if (failures > 0) {\n this._logCollectorFailures.set(collector, failures - 1);\n }\n } catch (err) {\n failures += 1;\n // If a collector fails too much we just disable it\n if (failures >= NextgenImpl._collectorFailureLimit) {\n this._forceDisabledLogCollectors.add(collector);\n if (this._appInstr && (typeof err === 'string' || err instanceof Error)) {\n this._appInstr.error(err);\n }\n } else {\n this._logCollectorFailures.set(collector, failures);\n // We can't log an error here, or the same collector will immediately be called\n // again, likely resulting in repeat exceptions until the collector gets disabled.\n }\n }\n }\n }\n }\n\n getBuffer(): BufferedLog[] {\n return this._buffer;\n }\n\n disableBuffering(): void {\n this._isBufferingEnabled = false;\n this._buffer = [];\n }\n\n getClickTracker(): AutomaticClickTracker {\n return this._autoClickTracker;\n }\n\n getDefaultInstrumentationContext(): InstrumentationContext {\n return {\n rootId: this._appInstr?.getSingleRootActivityId(),\n isRootActivitySampled: this._appInstr?.isSingleRootActivitySampled()\n };\n }\n\n activateClickTracker(): void {\n if (typeof document !== 'undefined') {\n if (!this._autoClickTracker) {\n this._autoClickTracker = new AutomaticClickTracker(this._appInstr, document);\n }\n this._autoClickTracker.activate();\n }\n }\n\n deactivateClickTracker(): void {\n if (this._autoClickTracker) {\n this._autoClickTracker.deactivate();\n // In case activateClickTracker is called later with a different instrumentation\n this._autoClickTracker = undefined;\n }\n }\n\n registerLogCollector(collector: LogCollector, options?: LogCollectorOptions): void {\n utility.requireArgument(collector, 'collector');\n if (this._logCollectors.has(collector)) {\n return;\n }\n this._logCollectors.add(collector);\n this._logCollectorFailures.set(collector, 0);\n if (\n (!collector.getIsCollectDisabled || !collector.getIsCollectDisabled()) &&\n options?.retroactive\n ) {\n for (const log of this._buffer) {\n collector.collect(log.schema, log.data, log.logMeta);\n }\n }\n }\n\n registerMetricsCollector(collector: MetricsCollector): void {\n utility.requireArgument(collector, 'collector');\n if (this._metricsCollector) {\n throw new Error('A metrics Collector is already registered.');\n }\n this._metricsCollector = collector;\n this._metricsCollector.receiveMetricsExtractors({\n getAllUpCounters: this._getAllUpCounters.bind(this),\n getAllValueRecorders: this._getAllValueRecorders.bind(this),\n getAllBucketHistograms: this._getAllBucketHistograms.bind(this)\n });\n }\n\n private _getAllUpCounters(): Metric<number>[] {\n return (this._metricsStore?.getUpCounters() || [])\n .concat(\n Array.from(this._instruments.values())\n .map((instr) => instr.getUpCounters())\n .flat()\n )\n .concat(co11y.getUpCounters());\n }\n\n private _getAllValueRecorders(): Metric<number[]>[] {\n return (this._metricsStore?.getValueRecorders() || [])\n .concat(\n Array.from(this._instruments.values())\n .map((instr) => instr.getValueRecorders())\n .flat()\n )\n .concat(co11y.getValueRecorders());\n }\n\n private _getAllBucketHistograms(): BucketMetric<number[]>[] {\n return (this._metricsStore?.getBucketHistograms() || [])\n .concat(\n Array.from(this._instruments.values())\n .map((instr) => instr.getBucketHistograms())\n .flat()\n )\n .concat(co11y.getBucketHistograms());\n }\n\n registerForLogPrompt(listener: LogPromptListener): void {\n this._logCollectionListeners.add(listener);\n }\n\n promptLogCollection(reason: string): void {\n for (const listener of this._logCollectionListeners.keys()) {\n try {\n listener(reason);\n } catch (err) {\n if (!utility.isProduction) {\n throw err;\n }\n }\n }\n }\n\n getClientSessionId(): string {\n return this._clientSessionId;\n }\n\n private _initOpMode(opMode: OperationMode | OperationModeDetector): void {\n if (typeof opMode === 'function') {\n opMode = opMode();\n }\n if (opMode === undefined || typeof window !== 'object') {\n // Support receiver and sender mode only if window is available, othwerwise fallback to default\n opMode = 'default';\n }\n\n if (['default', 'receiver', 'sender'].indexOf(opMode) >= 0) {\n this._opMode = opMode;\n } else {\n throw new Error(`Invalid operation mode: ${opMode}`);\n }\n }\n\n getOperationMode(): OperationMode {\n return this._opMode;\n }\n}\n","import {\n IdleDetector,\n Instrumentation,\n InstrumentedAppMethods,\n InstrumentedAppOptions\n} from './interfaces';\nimport { NextgenImpl } from './library/NextgenImpl';\nimport { utility } from 'o11y/shared';\n\nexport class Index {\n private _nextgen: NextgenImpl;\n // We are lazily initializing the singleton to allow any options to be processed\n // before the instantiation.\n private get _lazyNextGen(): NextgenImpl {\n if (!this._nextgen) {\n this._nextgen = new NextgenImpl(this._idleDetector);\n }\n return this._nextgen;\n }\n\n constructor(private readonly _idleDetector: IdleDetector) {\n utility.requireArgument(_idleDetector, '_idleDetector');\n }\n\n public registerInstrumentedApp(\n name: string,\n options?: InstrumentedAppOptions\n ): InstrumentedAppMethods {\n const retVal: InstrumentedAppMethods = this._lazyNextGen.registerApp(name, options);\n if (options) {\n utility.markProduction(options.isProduction);\n this._nextgen.appPayloadProvider = options.appPayloadProvider;\n this._nextgen.pagePayloadProvider = options.pagePayloadProvider;\n }\n return retVal;\n }\n\n public getInstrumentation(name?: string): Instrumentation {\n return this._lazyNextGen.getInstrumentation(name);\n }\n}\n\nexport const time = utility.time.bind(utility);\n","import { Environment, LogCollector, LogMeta, Schema } from '../interfaces';\nimport { SchematizedData, schemaUtil } from 'o11y/shared';\n\nconst lightningLoggerSchemaId = 'sfcore.customCmp.CustomComponentLog';\n\ntype ColorMap = Record<string, string>;\n\nconst bgColorMap: ColorMap = {\n Error: 'Crimson',\n Activity: 'CadetBlue',\n InstrumentedEvent: 'DarkOliveGreen',\n O11ySample: 'BlueViolet'\n};\nconst colorMap: ColorMap = {\n Error: 'white',\n Activity: 'white',\n InstrumentedEvent: 'white',\n O11ySample: 'white'\n};\nconst defaultColor = 'black';\nconst defaultBgColor = 'Gainsboro';\n\nexport class ConsoleCollector implements LogCollector {\n private readonly _simpleFilters = new Set<string>();\n private readonly _regexFilters: RegExp[] = [];\n\n constructor(environment?: Environment) {\n if (environment) {\n this._log('ConsoleCollector', environment);\n }\n }\n\n collect(schema: Schema, data: SchematizedData, logMeta: LogMeta): void {\n const id = schemaUtil.getSchemaId(schema);\n\n if (!this._shouldLog(id)) {\n return;\n }\n\n if (id === lightningLoggerSchemaId) {\n this._logCustom(data);\n return;\n }\n\n let label, color, bgColor;\n if (schemaUtil.isInternal(schema)) {\n label = schema.name;\n color = colorMap[schema.name] || defaultColor;\n bgColor = bgColorMap[schema.name] || defaultBgColor;\n } else {\n label = id;\n }\n\n this._log(label, data, logMeta, color, bgColor);\n }\n\n private _shouldLog(schemaId: string): boolean {\n if (this._simpleFilters.size == 0 && this._regexFilters.length == 0) {\n return true;\n }\n\n return (\n this._simpleFilters.has(schemaId) || this._regexFilters.some((r) => r.test(schemaId))\n );\n }\n\n addFilter(filter: string | RegExp): void {\n if (filter instanceof RegExp) {\n this._regexFilters.push(filter);\n } else {\n this._simpleFilters.add(filter);\n }\n }\n\n removeFilter(filter: string | RegExp): void {\n if (filter instanceof RegExp) {\n const index = this._regexFilters.findIndex((r) => r.source === filter.source);\n if (index >= 0) {\n this._regexFilters.splice(index, 1);\n }\n } else {\n this._simpleFilters.delete(filter);\n }\n }\n\n clearFilters(): void {\n this._simpleFilters.clear();\n this._regexFilters.splice(0, this._regexFilters.length);\n }\n\n getFilters(): (string | RegExp)[] {\n const filters: (string | RegExp)[] = Array.from(this._simpleFilters);\n return filters.concat(this._regexFilters).sort();\n }\n\n private _log(\n label: string,\n first?: unknown,\n second?: unknown,\n color: string = defaultColor,\n bgColor: string = defaultBgColor\n ): void {\n const css = `color:${color};background-color:${bgColor}`;\n // eslint-disable-next-line no-console\n console.log(\n `%cO11Y%c ${label}`,\n 'color:white;background-color:#FF6600;font-weight:bold',\n css,\n first || '',\n second || ''\n );\n }\n\n private _logCustom(data?: unknown): void {\n // eslint-disable-next-line no-console\n console.log(\n '%clightning/logger',\n 'color:white;background-color:#00a1e0;font-weight:bold',\n data || ''\n );\n }\n}\n","// auto-generated\nexport const version = '258.3.0';\nexport const webVitalsVersion = '^4.2.4';\n","// This is the file that exports all `o11y` module level exports.\nimport { idleDetectorReportSchema } from 'o11y_schema/sf_instrumentation';\nimport { IdleDetector, IdleDetectorReport } from './interfaces';\nimport { IdleDetectorImpl } from './library/IdleDetectorImpl';\nimport { time, Index } from './index';\n\nexport const idleDetector: IdleDetector = new IdleDetectorImpl({\n logThreshold: 300,\n reportListener: (report: IdleDetectorReport) => {\n idleDetectorInstr?.log(idleDetectorReportSchema, report);\n },\n errorListener: (e: unknown, text?: string) => {\n idleDetectorInstr?.error(e, text);\n }\n});\nconst index = new Index(idleDetector); // singleton\nconst registerInstrumentedApp = index.registerInstrumentedApp.bind(index);\nconst getInstrumentation = index.getInstrumentation.bind(index);\n\nconst idleDetectorInstr = getInstrumentation('IdleDetector');\n\nexport { registerInstrumentedApp, getInstrumentation, time };\nexport { ConsoleCollector } from './console-collector/ConsoleCollector';\nexport { version as _version } from './version';\n"],"names":["navigationTimingSchema","resourceTimingSchema"],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sources":["../../../../src/library/TaskerImpl.ts","../../../../src/library/IdleDetectorImpl.ts","../../../../../../node_modules/o11y_schema/sfcore_performance/navigation_timing.js","../../../../../../node_modules/o11y_schema/sfcore_performance/resource_timing.js","../../../../src/library/FuzzyMapper.ts","../../../../src/library/PerformanceObservability.ts","../../../../src/library/Tracing.ts","../../../../src/library/TimerOverride.ts","../../../../src/library/ActivityImpl.ts","../../../../src/library/ActivityNoOp.ts","../../../../src/library/DomEventHelpers.ts","../../../../src/library/BucketHistogramImpl.ts","../../../../src/library/ValueRecorderImpl.ts","../../../../src/library/SizeLimitedMap.ts","../../../../src/library/MetricsImpl.ts","../../../../src/library/MockObj.ts","../../../../src/library/InstrumentationImpl.ts","../../../../src/library/RootActivityHistoryImpl.ts","../../../../src/library/RootActivityImpl.ts","../../../../src/library/RootActivityNoOp.ts","../../../../src/library/AppInstrumentationImpl.ts","../../../../src/library/AutomaticClickTracker.ts","../../../../src/library/ReceiverConnector.ts","../../../../src/library/SenderConnector.ts","../../../../src/library/MetricsStore.ts","../../../../src/sender_collector/SenderCollector.ts","../../../../src/library/NextgenImpl.ts","../../../../src/index.ts","../../../../src/console-collector/ConsoleCollector.ts","../../../../src/version.ts","../../../../src/client.ts"],"sourcesContent":["import { TaskerMulti, TaskerSingle } from '../interfaces/IdleDetector';\n\nexport type TaskDoneNotifier = () => void;\n\nexport class TaskerImpl implements TaskerSingle, TaskerMulti {\n private _busyCount = 0;\n private _isOk = true; // Once an error occurs, make operations no-op\n\n get isBusy(): boolean {\n return this._isOk ? this._busyCount > 0 : undefined;\n }\n\n constructor(\n public readonly name: string,\n initialCount: number,\n private readonly _doneCallback: TaskDoneNotifier,\n private readonly _overDoneCallback: TaskDoneNotifier\n ) {\n this._busyCount = initialCount;\n }\n\n add(): void {\n if (this._isOk) {\n this._busyCount += 1;\n }\n }\n done(): void {\n if (this._isOk) {\n if (this._busyCount > 0) {\n this._busyCount -= 1;\n if (!this._busyCount) {\n this._doneCallback();\n }\n } else {\n this._isOk = false;\n this._overDoneCallback();\n }\n }\n }\n}\n","import { IdleDetector, IdleDetectorOptions, IdleDetectorReport } from '../interfaces';\nimport {\n ErrorListener,\n IdleDetectedListener,\n IsBusyChecker,\n ReportListener,\n TaskerMulti,\n TaskerSingle\n} from '../interfaces/IdleDetector';\nimport { TaskerImpl } from './TaskerImpl';\nimport { utility } from 'o11y/shared';\n\nconst defaultLogThreshold = 300;\n\ntype TaskReportEntry = {\n name: string;\n start: number;\n end: number;\n};\n\ntype PollableReportEntry = {\n name: string;\n count: number;\n};\n\nexport class IdleDetectorImpl implements IdleDetector {\n private readonly _taskers = new Map<TaskerImpl, TaskReportEntry>();\n private readonly _listeners = new Set<IdleDetectedListener>();\n private readonly _busyCheckers = new Map<IsBusyChecker, string>();\n private readonly _logThreshold: number = defaultLogThreshold;\n private readonly _endedTasks = new Array<TaskReportEntry>();\n private readonly _pollableReport = new Array<PollableReportEntry>();\n private _firstCallbackTime: number;\n private _timerCheckQueued: NodeJS.Timeout;\n private readonly _reportListener: ReportListener;\n private readonly _errorListener: ErrorListener;\n\n constructor(options?: IdleDetectorOptions) {\n if (\n utility.requireArgumentIfDefined(\n options?.logThreshold,\n 'options.logThreshold',\n 'number'\n )\n ) {\n this._logThreshold = options.logThreshold;\n }\n\n if (\n utility.requireArgumentIfDefined(\n options?.reportListener,\n 'options.reportListener',\n 'function'\n )\n ) {\n this._reportListener = options.reportListener;\n }\n\n if (\n utility.requireArgumentIfDefined(\n options?.errorListener,\n 'options.errorListener',\n 'function'\n )\n ) {\n this._errorListener = options.errorListener;\n }\n }\n\n requestIdleDetectedCallback(callback: IdleDetectedListener): void {\n utility.requireArgument(callback, 'callback', 'function');\n if (this._listeners.size === 0) {\n this._firstCallbackTime = utility.time().perfNow;\n }\n this._listeners.add(callback);\n this._checkIfLoaded();\n }\n\n private _reportTaskEnded(tasker: TaskerImpl): void {\n // Report only if we have any listeners\n if (this._listeners.size) {\n const snapshot = Object.assign({}, this._taskers.get(tasker));\n this._endedTasks.push(snapshot);\n }\n }\n\n declareNotifierTaskSingle(name: string): TaskerSingle {\n utility.requireArgument(name, 'name', 'string');\n const tasker = this._addTasker(name, 1);\n\n const retVal: TaskerSingle = {\n get isBusy() {\n return tasker.isBusy;\n },\n done: () => {\n tasker.done();\n this._taskers.delete(tasker);\n }\n };\n\n return retVal;\n }\n\n declareNotifierTaskMulti(name: string, existingBusyCount = 0): TaskerMulti {\n utility.requireArgument(name, 'name', 'string');\n if (existingBusyCount !== undefined) {\n utility.requireArgument(existingBusyCount, 'existingBusyCount', 'number');\n\n if (!Number.isInteger(existingBusyCount) || existingBusyCount < 0) {\n throw new Error('existingBusyCount accepts only non-negative integers');\n }\n }\n const tasker = this._addTasker(name, existingBusyCount);\n\n const retVal: TaskerMulti = {\n get isBusy() {\n return tasker.isBusy;\n },\n add: () => {\n if (!tasker.isBusy) {\n const meta = this._taskers.get(tasker);\n meta.start = utility.time().perfNow;\n meta.end = undefined;\n }\n tasker.add();\n },\n done: tasker.done.bind(tasker) // Note: don't delete multi tasker\n };\n return retVal;\n }\n\n declarePollableTaskMulti(name: string, isBusyChecker: IsBusyChecker): void {\n utility.requireArgument(name, 'name', 'string');\n utility.requireArgument(isBusyChecker, 'isBusyChecker', 'function');\n\n this._busyCheckers.set(isBusyChecker, name);\n }\n\n private _addTasker(name: string, existingBusyCount: number): TaskerImpl {\n const tasker = new TaskerImpl(\n name,\n existingBusyCount,\n () => {\n // Done callback\n this._taskers.get(tasker).end = utility.time().perfNow;\n this._reportTaskEnded(tasker);\n this._checkIfLoaded();\n },\n () => {\n // Overdone callback\n this._errorListener?.(`Overdone: ${tasker.name}`);\n utility.noProdThrow(`Tasker '${tasker.name}' is done too many times.`);\n }\n );\n this._taskers.set(tasker, {\n name,\n start: existingBusyCount > 0 ? utility.time().perfNow : undefined,\n end: undefined\n });\n return tasker;\n }\n\n private _areAllNotifiersIdle(): boolean {\n return !Array.from(this._taskers.keys()).some((t) => t.isBusy);\n }\n\n private _getFirstBusyPollable(): string {\n const entry = Array.from(this._busyCheckers).find((entry) => {\n const isBusyChecker = entry[0];\n const name = entry[1];\n try {\n return isBusyChecker();\n } catch (e) {\n this._errorListener?.(e, `BusyChecker ${name}`);\n utility.noProdThrow(e);\n return false; // Not busy\n }\n });\n\n return entry ? entry[1] : undefined;\n }\n\n private _checkIfLoaded(): void {\n if (!this._listeners.size) {\n // bail out early. We don't have any callbacks queued\n return;\n }\n\n // We restart the idle timer check logic whenever we get an external\n // trigger that a resource was loaded since that would imply that more\n // work could be queued up and we want to be aware of that\n if (this._timerCheckQueued) {\n clearTimeout(this._timerCheckQueued);\n }\n\n if (this._areAllNotifiersIdle()) {\n // Enqueue two RAF to make sure nothing got queued in this js cycle\n // note the use of double setTimeout. We want our setTimeout to queue up after\n // any set timeouts queued within micro tasks that may run after processing this\n // xhr response.\n // Here's a sample timeline\n // .....[ Single Event Loop ].....................................\n // .....[XHR callback][checkIfLoaded][microtasks]-[1st setTimeout]....[2nd setTimeout]\n // ^\n // queue settimeout at the end of event loop --->|\n this._timerCheckQueued = setTimeout(() => {\n this._timerCheckQueued = setTimeout(() => {\n this._doubleCheck();\n }, 40);\n }, 0);\n }\n }\n\n private _doubleCheck(): void {\n this._timerCheckQueued = undefined;\n\n if (this._areAllNotifiersIdle()) {\n const pollableName: string = this._getFirstBusyPollable();\n if (pollableName !== undefined) {\n // we'll have to keep polling until polled operations finish\n this._addToPollableReport(pollableName);\n this._timerCheckQueued = setTimeout(() => {\n this._doubleCheck();\n }, 15);\n } else {\n // OK!! We are certified idle.\n const maxDuration = utility.time().perfNow - this._firstCallbackTime;\n\n // Take a snapshot of internal variables so that we don't get confused\n // if tasks are created or listeners or worse, get into an infinite loop\n // if idle is requested\n const listeners = Array.from(this._listeners.values());\n this._listeners.clear();\n\n this._firstCallbackTime = undefined;\n const endedTasks = this._endedTasks.splice(0);\n const pollableReport = this._pollableReport.splice(0);\n\n this._notify(listeners, maxDuration, endedTasks, pollableReport);\n }\n }\n }\n\n private _addToPollableReport(name: string): void {\n const lastEntry: PollableReportEntry = this._pollableReport.length\n ? this._pollableReport[this._pollableReport.length - 1]\n : undefined;\n\n if (lastEntry?.name === name) {\n lastEntry.count += 1;\n } else {\n this._pollableReport.push({\n name,\n count: 1\n });\n }\n }\n\n private _notify(\n listeners: IdleDetectedListener[],\n maxDuration: number,\n taskReport: Array<TaskReportEntry>,\n pollableReport: Array<PollableReportEntry>\n ): void {\n if (maxDuration >= this._logThreshold && this._reportListener) {\n const logData: IdleDetectorReport = this._getReport(\n maxDuration,\n listeners.length,\n taskReport,\n pollableReport\n );\n this._reportListener(logData);\n }\n listeners.reverse();\n\n const tsNow = utility.time().tsNow;\n for (const [index, listener] of listeners.entries()) {\n try {\n listener(tsNow);\n } catch (e) {\n this._errorListener?.(e, `Listener #${listeners.length - 1 - index}`);\n utility.noProdThrow(e);\n }\n }\n }\n\n getReport(): IdleDetectorReport {\n const perfNow = utility.time().perfNow;\n const maxDuration =\n this._firstCallbackTime > 0 ? perfNow - this._firstCallbackTime : undefined;\n\n const onGoingTasks: Array<TaskReportEntry> = Array.from(this._taskers.entries())\n .filter((e) => e[0].isBusy)\n .map((e) => ({\n name: e[1].name,\n start: e[1].start,\n end: perfNow\n }));\n return this._getReport(\n maxDuration,\n this._listeners.size,\n this._endedTasks.concat(onGoingTasks),\n this._pollableReport\n );\n }\n\n private _getReport(\n maxDuration: number,\n listenerCount: number,\n taskReport: Array<TaskReportEntry>,\n pollableReport: Array<PollableReportEntry>\n ): IdleDetectorReport {\n const sortedTaskers = taskReport\n .map((t) => ({\n name: t.name,\n duration: t.end - t.start\n }))\n .sort((a, b) => b.duration - a.duration);\n return {\n logThreshold: this._logThreshold,\n maxDuration,\n listenerCount,\n pollableCount: this._busyCheckers.size,\n busyTasks: sortedTaskers.map((t) => t.name),\n busyDurations: sortedTaskers.map((t) => t.duration),\n pollables: pollableReport.map((p) => p.name),\n pollCounts: pollableReport.map((p) => p.count)\n };\n }\n}\n","export const navigation_timing={namespace:\"sfcore.performance\",name:\"NavigationTiming\",pbjsSchema:{\"nested\":{\"sfcore\":{\"nested\":{\"performance\":{\"nested\":{\"NavigationTiming\":{\"oneofs\":{\"_xhrDelay\":{\"oneof\":[\"xhrDelay\"]},\"_renderBlockingStatus\":{\"oneof\":[\"renderBlockingStatus\"]},\"_firstInterimResponseStart\":{\"oneof\":[\"firstInterimResponseStart\"]},\"_srvDuration\":{\"oneof\":[\"srvDuration\"]},\"_isCdnCached\":{\"oneof\":[\"isCdnCached\"]},\"_responseStatus\":{\"oneof\":[\"responseStatus\"]},\"_dbDuration\":{\"oneof\":[\"dbDuration\"]},\n\"_reqBatchCount\":{\"oneof\":[\"reqBatchCount\"]}},\"fields\":{\"redirectCount\":{\"id\":37,\"type\":\"uint32\"},\"encodedBodySize\":{\"id\":21,\"type\":\"uint32\"},\"reqActionNames\":{\"rule\":\"repeated\",\"id\":28,\"type\":\"string\"},\"unloadEventEnd\":{\"id\":40,\"type\":\"double\"},\"responseEnd\":{\"id\":19,\"type\":\"double\"},\"domainLookupEnd\":{\"id\":12,\"type\":\"double\"},\"unloadEventStart\":{\"id\":39,\"type\":\"double\"},\"domContentLoadedEventStart\":{\"id\":32,\"type\":\"double\"},\"type\":{\"id\":38,\"type\":\"string\"},\"firstInterimResponseStart\":{\"options\":{\"proto3_optional\":true},\n\"id\":18,\"type\":\"double\"},\"duration\":{\"id\":3,\"type\":\"double\"},\"decodedBodySize\":{\"id\":22,\"type\":\"uint32\"},\"redirectStart\":{\"id\":8,\"type\":\"double\"},\"connectEnd\":{\"id\":15,\"type\":\"double\"},\"isCdnCached\":{\"options\":{\"proto3_optional\":true},\"id\":24,\"type\":\"bool\"},\"requestStart\":{\"id\":16,\"type\":\"double\"},\"startTime\":{\"id\":2,\"type\":\"double\"},\"fetchStart\":{\"id\":10,\"type\":\"double\"},\"domContentLoadedEventEnd\":{\"id\":33,\"type\":\"double\"},\"srvReqId\":{\"id\":29,\"type\":\"string\"},\"reqBatchCount\":{\"options\":{\"proto3_optional\":true},\n\"id\":27,\"type\":\"uint32\"},\"renderBlockingStatus\":{\"options\":{\"proto3_optional\":true},\"id\":6,\"type\":\"string\"},\"workerStart\":{\"id\":7,\"type\":\"double\"},\"responseStart\":{\"id\":17,\"type\":\"double\"},\"xhrDelay\":{\"options\":{\"proto3_optional\":true},\"id\":30,\"type\":\"double\"},\"domInteractive\":{\"id\":34,\"type\":\"double\"},\"domComplete\":{\"id\":31,\"type\":\"double\"},\"domainLookupStart\":{\"id\":11,\"type\":\"double\"},\"responseStatus\":{\"options\":{\"proto3_optional\":true},\"id\":23,\"type\":\"uint32\"},\"redirectEnd\":{\"id\":9,\"type\":\"double\"},\n\"logEvent\":{\"id\":41,\"type\":\"string\"},\"transferSize\":{\"id\":20,\"type\":\"uint32\"},\"srvDuration\":{\"options\":{\"proto3_optional\":true},\"id\":26,\"type\":\"double\"},\"dbDuration\":{\"options\":{\"proto3_optional\":true},\"id\":25,\"type\":\"double\"},\"connectStart\":{\"id\":13,\"type\":\"double\"},\"loadEventStart\":{\"id\":35,\"type\":\"double\"},\"secureConnectionStart\":{\"id\":14,\"type\":\"double\"},\"name\":{\"id\":1,\"type\":\"string\"},\"nextHopProtocol\":{\"id\":5,\"type\":\"string\"},\"initiatorType\":{\"id\":4,\"type\":\"string\"},\"loadEventEnd\":{\"id\":36,\n\"type\":\"double\"}}}}}}}}}};","export const resource_timing={namespace:\"sfcore.performance\",name:\"ResourceTiming\",pbjsSchema:{\"nested\":{\"sfcore\":{\"nested\":{\"performance\":{\"nested\":{\"ResourceTiming\":{\"oneofs\":{\"_xhrDelay\":{\"oneof\":[\"xhrDelay\"]},\"_renderBlockingStatus\":{\"oneof\":[\"renderBlockingStatus\"]},\"_firstInterimResponseStart\":{\"oneof\":[\"firstInterimResponseStart\"]},\"_srvDuration\":{\"oneof\":[\"srvDuration\"]},\"_isCdnCached\":{\"oneof\":[\"isCdnCached\"]},\"_responseStatus\":{\"oneof\":[\"responseStatus\"]},\"_dbDuration\":{\"oneof\":[\"dbDuration\"]},\n\"_reqBatchCount\":{\"oneof\":[\"reqBatchCount\"]}},\"fields\":{\"encodedBodySize\":{\"id\":21,\"type\":\"uint32\"},\"reqActionNames\":{\"rule\":\"repeated\",\"id\":28,\"type\":\"string\"},\"responseEnd\":{\"id\":19,\"type\":\"double\"},\"domainLookupEnd\":{\"id\":12,\"type\":\"double\"},\"firstInterimResponseStart\":{\"options\":{\"proto3_optional\":true},\"id\":18,\"type\":\"double\"},\"duration\":{\"id\":3,\"type\":\"double\"},\"decodedBodySize\":{\"id\":22,\"type\":\"uint32\"},\"redirectStart\":{\"id\":8,\"type\":\"double\"},\"connectEnd\":{\"id\":15,\"type\":\"double\"},\"isCdnCached\":{\"options\":{\"proto3_optional\":true},\n\"id\":24,\"type\":\"bool\"},\"requestStart\":{\"id\":16,\"type\":\"double\"},\"startTime\":{\"id\":2,\"type\":\"double\"},\"fetchStart\":{\"id\":10,\"type\":\"double\"},\"srvReqId\":{\"id\":29,\"type\":\"string\"},\"reqBatchCount\":{\"options\":{\"proto3_optional\":true},\"id\":27,\"type\":\"uint32\"},\"renderBlockingStatus\":{\"options\":{\"proto3_optional\":true},\"id\":6,\"type\":\"string\"},\"workerStart\":{\"id\":7,\"type\":\"double\"},\"responseStart\":{\"id\":17,\"type\":\"double\"},\"xhrDelay\":{\"options\":{\"proto3_optional\":true},\"id\":30,\"type\":\"double\"},\"domainLookupStart\":{\"id\":11,\n\"type\":\"double\"},\"responseStatus\":{\"options\":{\"proto3_optional\":true},\"id\":23,\"type\":\"uint32\"},\"redirectEnd\":{\"id\":9,\"type\":\"double\"},\"transferSize\":{\"id\":20,\"type\":\"uint32\"},\"srvDuration\":{\"options\":{\"proto3_optional\":true},\"id\":26,\"type\":\"double\"},\"dbDuration\":{\"options\":{\"proto3_optional\":true},\"id\":25,\"type\":\"double\"},\"connectStart\":{\"id\":13,\"type\":\"double\"},\"secureConnectionStart\":{\"id\":14,\"type\":\"double\"},\"name\":{\"id\":1,\"type\":\"string\"},\"nextHopProtocol\":{\"id\":5,\"type\":\"string\"},\"initiatorType\":{\"id\":4,\n\"type\":\"string\"}}}}}}}}}};","import { utility } from 'o11y/shared';\n\ntype MapValueEntry<T> = {\n fuzzyKey: number;\n value: T;\n};\n\ntype MapValues<T> = Array<MapValueEntry<T>>;\n\n// A match is made if the strict key matches and the fuzzy key value is within the range.\n// If there are multiple such matches, the one with the smallest delta is returned.\nexport class FuzzyMapper<T> {\n private readonly _map: Map<string, MapValues<T>> = new Map();\n\n constructor(private readonly _fuzzyKeyRange: number) {\n utility.requireArgument(_fuzzyKeyRange, '_fuzzyKeyRange', 'number');\n }\n\n add(key: string, fuzzyKey: number, value: T): void {\n const mapValue = this._map.get(key);\n if (mapValue) {\n mapValue.push({ fuzzyKey, value });\n } else {\n this._map.set(key, [{ fuzzyKey, value }]);\n }\n }\n pop(key: string, fuzzyKey: number): T {\n const mapValues = this._map.get(key);\n if (mapValues?.length >= 1) {\n let minDelta = Number.POSITIVE_INFINITY;\n let minIndex = -1;\n for (let index = 0; index < mapValues.length; index++) {\n const { fuzzyKey: curFuzzyKey } = mapValues[index];\n const curDelta = Math.abs(curFuzzyKey - fuzzyKey);\n if (curDelta <= this._fuzzyKeyRange && curDelta < minDelta) {\n minDelta = curDelta;\n minIndex = index;\n }\n // keep looking for a better match\n }\n if (minIndex >= 0) {\n const { value } = mapValues.splice(minIndex, 1)[0];\n if (mapValues.length === 0) {\n this._map.delete(key);\n }\n return value;\n }\n }\n return undefined;\n }\n clear(): void {\n this._map.clear();\n }\n}\n","import { utility } from 'o11y/shared';\nimport { resourceTimingSchema, navigationTimingSchema } from 'o11y_schema/sfcore_performance';\nimport {\n ActivityStartApiOptions,\n ActivityStopOptions,\n Instrumentation,\n Schema\n} from '../interfaces';\nimport {\n NavigationTiming,\n NavigationTimingOnly,\n ResourceTiming\n} from '../types/TypeDefinitions-Private';\nimport { FuzzyMapper } from './FuzzyMapper';\n\nexport const enum LogLevel {\n Basic,\n Full\n}\n\nexport type RequestMetadata = {\n requestId?: string;\n activityDuration?: number;\n activityId?: string;\n errorCount?: number;\n responseStatus?: number;\n};\n\nconst basicInitiatorTypes = ['fetch', 'xmlhttprequest'];\n\nexport class PerformanceObservability {\n private readonly _hasPerf: boolean;\n private readonly _hasWindow: boolean;\n private readonly _boundObserverCallback = this._logPerformanceEntries.bind(this);\n private readonly _boundNavigationTimingEventCallback = (event: Event): void => {\n this._logNavigationEntries(event);\n };\n // setTimeout to push callback execution to the end of the event loop so that load event will have terminated.\n private readonly _setTimeoutNavigationCallback = (event: Event): void => {\n setTimeout(() => {\n this._boundNavigationTimingEventCallback(event);\n }, 0);\n };\n\n private readonly _visibilityChangeNavigationCallback = (event: Event): void => {\n if (document.visibilityState === 'hidden') {\n this._boundNavigationTimingEventCallback(event);\n }\n };\n private readonly _fuzzyMapper: FuzzyMapper<RequestMetadata>;\n private readonly _logLevel: LogLevel;\n private _resourceObserver: PerformanceObserver;\n private _isStarted = false;\n private _processedNavigationTiming = false;\n\n constructor(\n private readonly _instr: Instrumentation,\n fuzzyMapRange: number,\n private readonly _skipUrls: (string | RegExp)[],\n private readonly _logPerformanceActivityName?: string,\n logLevel?: string\n ) {\n utility.requireArgument(_instr, '_instr', 'object');\n utility.requireArgument(fuzzyMapRange, 'fuzzyMapRange', 'number');\n utility.requireArgumentIfDefined(_skipUrls, '_skipUrls', Array);\n utility.requireArgumentIfDefined(\n _logPerformanceActivityName,\n '_logPerformanceActivityName',\n 'string'\n );\n utility.requireArgumentIfDefined(logLevel, 'logLevel', 'string');\n\n this._hasPerf =\n typeof performance !== 'undefined' && typeof PerformanceObserver === 'function';\n this._hasWindow = typeof window !== 'undefined';\n\n if (!logLevel || logLevel.toLowerCase() === 'full') {\n this._logLevel = LogLevel.Full;\n } else if (logLevel?.toLowerCase() === 'basic') {\n this._logLevel = LogLevel.Basic;\n } else {\n throw new Error(`Invalid log level: ${logLevel}`);\n }\n\n this._fuzzyMapper = new FuzzyMapper(fuzzyMapRange);\n }\n\n get isStarted(): boolean {\n return this._isStarted;\n }\n\n get logLevel(): LogLevel {\n return this._logLevel;\n }\n\n start(): void {\n if (!this._hasPerf) {\n return;\n }\n if (!this._isStarted) {\n this._isStarted = true;\n this._resourceObserver = new PerformanceObserver(this._boundObserverCallback);\n this._resourceObserver.observe({ type: 'resource', buffered: true });\n this._addNavigationListeners();\n }\n }\n\n stop(): void {\n if (this._resourceObserver) {\n this._resourceObserver.disconnect();\n this._resourceObserver = undefined;\n }\n\n this._removeNavigationListeners();\n this._fuzzyMapper.clear();\n this._isStarted = false;\n }\n\n private _addNavigationListeners(): void {\n if (!this._hasWindow) {\n return;\n }\n\n // Event recommendations from https://nicj.net/beaconing-in-practice/#beaconing-reliability-avoiding-abandons\n window.addEventListener('load', this._setTimeoutNavigationCallback);\n window.addEventListener('pagehide', this._boundNavigationTimingEventCallback);\n document.addEventListener('visibilitychange', this._visibilityChangeNavigationCallback);\n }\n\n private _removeNavigationListeners(): void {\n if (!this._hasWindow) {\n return;\n }\n\n window.removeEventListener('load', this._setTimeoutNavigationCallback);\n window.removeEventListener('pagehide', this._boundNavigationTimingEventCallback);\n document.removeEventListener('visibilitychange', this._visibilityChangeNavigationCallback);\n }\n\n // The caller must make sure that url is absolute for exact string matching\n // as the performance API we call later uses absolute URLs.\n addEntry(absoluteUrl: string, perfTime: number, data: RequestMetadata): void {\n this._fuzzyMapper.add(absoluteUrl, perfTime, data);\n }\n\n private _resourceEntryToResourceTiming(\n prt: PerformanceResourceTiming\n ): Partial<ResourceTiming> {\n const rt: Omit<\n ResourceTiming,\n 'reqBatchCount' | 'reqActionNames' | 'srvReqId' | 'xhrDelay'\n > = {\n name: prt.name,\n startTime: prt.startTime,\n duration: prt.duration,\n initiatorType: prt.initiatorType,\n nextHopProtocol: prt.nextHopProtocol,\n // @ts-expect-error https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/renderBlockingStatus\n renderBlockingStatus: prt.renderBlockingStatus,\n workerStart: prt.workerStart,\n redirectStart: prt.redirectStart,\n redirectEnd: prt.redirectEnd,\n fetchStart: prt.fetchStart,\n domainLookupStart: prt.domainLookupStart,\n domainLookupEnd: prt.domainLookupEnd,\n connectStart: prt.connectStart,\n secureConnectionStart: prt.secureConnectionStart,\n connectEnd: prt.connectEnd,\n requestStart: prt.requestStart,\n responseStart: prt.responseStart,\n // @ts-expect-error https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/firstInterimResponseStart\n firstInterimResponseStart: prt.firstInterimResponseStart,\n responseEnd: prt.responseEnd,\n transferSize: prt.transferSize,\n encodedBodySize: prt.encodedBodySize,\n decodedBodySize: prt.decodedBodySize,\n // @ts-expect-error https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming/responseStatus\n responseStatus: prt.responseStatus\n };\n\n const sts: ReadonlyArray<PerformanceServerTiming> = prt.serverTiming;\n if (Array.isArray(sts)) {\n rt.dbDuration = sts.find((st) => st.name === 'db')?.duration;\n rt.srvDuration = sts.find((st) => st.name === 'Total')?.duration;\n // TODO: nr.isCdnCached\n }\n\n return rt;\n }\n\n private _shouldInclude(entry: PerformanceResourceTiming): boolean {\n const isFiltered = this._skipUrls?.some((skipUrl) => {\n if (skipUrl instanceof RegExp) {\n return skipUrl.test(entry.name);\n } else {\n return entry.name === skipUrl;\n }\n });\n\n if (isFiltered) {\n return false;\n }\n\n if (this._logLevel === LogLevel.Full) {\n return true;\n }\n return (\n basicInitiatorTypes.indexOf(entry.initiatorType) >= 0 ||\n entry.entryType === 'navigation'\n );\n }\n\n private _logActivity(\n schema: Schema,\n payload: Partial<ResourceTiming>,\n activityId?: string,\n errorCount?: number\n ): void {\n const startOptions: ActivityStartApiOptions = {\n id: activityId\n };\n const stopOptions: ActivityStopOptions = {\n perfStartOverride: payload.startTime,\n perfStopOverride: payload.startTime + payload.duration,\n errorCount\n };\n\n this._instr\n .startActivity(this._logPerformanceActivityName, startOptions)\n .stop(schema, payload, stopOptions);\n }\n\n /**\n * Called by event listener callback. Will have differing amounts of data based on callback timing.\n * The dom content fields will only be available if the window load event is fired.\n * If the window is closed before load, we will call this method with sendBeacon to capture\n * whatever is available at that time.\n */\n private _logNavigationEntries(event: Event): void {\n if (this._processedNavigationTiming) {\n return;\n }\n\n for (const entry of performance.getEntriesByType('navigation')) {\n const nt: PerformanceNavigationTiming = entry as PerformanceNavigationTiming;\n\n if (this._shouldInclude(nt)) {\n this._processedNavigationTiming = true;\n\n const payload: Partial<NavigationTiming> = this._resourceEntryToResourceTiming(nt);\n\n const navOnly: NavigationTimingOnly = {\n domComplete: nt.domComplete,\n domContentLoadedEventStart: nt.domContentLoadedEventStart,\n domContentLoadedEventEnd: nt.domContentLoadedEventEnd,\n domInteractive: nt.domInteractive,\n loadEventStart: nt.loadEventStart,\n loadEventEnd: nt.loadEventEnd,\n redirectCount: nt.redirectCount,\n type: nt.type,\n unloadEventStart: nt.unloadEventStart,\n unloadEventEnd: nt.unloadEventEnd,\n logEvent: event.type\n };\n\n this._logActivity(navigationTimingSchema, Object.assign(payload, navOnly));\n }\n\n break; // Only log the first navigation entry (which there should only be one of)\n }\n }\n\n private _logPerformanceEntries(list: PerformanceObserverEntryList): void {\n for (const entry of list.getEntriesByType('resource')) {\n const rt: PerformanceResourceTiming = entry as PerformanceResourceTiming;\n\n // Always pop the request info, even if we don't log it, so we don't leak memory\n const requestInfo: RequestMetadata = this._fuzzyMapper.pop(rt.name, rt.startTime);\n\n if (this._shouldInclude(rt)) {\n const payload: Partial<ResourceTiming> = this._resourceEntryToResourceTiming(rt);\n\n Object.assign(payload, {\n srvReqId: requestInfo?.requestId,\n xhrDelay: requestInfo ? requestInfo.activityDuration - rt.duration : undefined\n });\n\n if (payload.responseStatus === undefined) {\n payload.responseStatus = requestInfo?.responseStatus;\n }\n\n this._logActivity(\n resourceTimingSchema,\n payload,\n requestInfo?.activityId,\n requestInfo?.errorCount\n );\n }\n }\n }\n}\n","import { TraceHeaders, utility } from 'o11y/shared';\nimport { networkSchema } from 'o11y_schema/sf_instrumentation';\nimport {\n IdleDetector,\n Instrumentation,\n TaskerMulti,\n TracingHeadersOptions,\n NetworkInstrumentationOptions,\n Activity\n} from '../interfaces';\nimport { PerformanceObservability } from './PerformanceObservability';\nimport type { InstrumentationImpl } from './InstrumentationImpl';\n\ntype FetchType = (resource: RequestInfo | URL, options?: RequestInit) => Promise<Response>;\n\ntype O11yFetchOptions = {\n skipInstr?: boolean;\n};\n\ntype O11yFetchType = (\n resource: RequestInfo | URL,\n options?: RequestInit & { o11y?: O11yFetchOptions }\n) => Promise<Response>;\n\ntype XhrType = typeof XMLHttpRequest;\n\ntype XhrOpenType = (\n method: string,\n url: string | URL,\n async?: boolean, // Note: when unspecified, this defaults to true by the spec\n username?: string | null,\n password?: string | null\n) => void;\n\ntype XhrSetRequestHeaderType = (name: string, value: string) => void;\n\ntype XhrSendType = (body?: Document | XMLHttpRequestBodyInit | null) => void;\n\ntype O11yInfo = {\n activity?: Activity;\n method?: string;\n url?: string;\n absoluteUrl?: string;\n sendTime?: number;\n requestId?: string;\n suspendInstrumentation?: boolean;\n};\n\nconst defaultTraceIdLengthW3 = 32; // 32 Characters = 128 bits\nconst defaultTraceIdLengthB3 = 16; // 16 Characters = 64 bits\nconst defaultSpanIdLength = 16; // 16 Characters = 64 bits\n\n// Headers for W3 tracing (https://www.w3.org/TR/trace-context/#traceparent-header)\nconst headerTraceParent = 'traceparent';\n\n// Headers for B3 tracing (https://github.com/openzipkin/b3-propagation)\nconst headerB3 = 'b3';\nconst headerTraceId = 'X-B3-TraceId';\nconst headerSpanId = 'X-B3-SpanId';\nconst headerSampled = 'X-B3-Sampled';\nconst headerParentSpanId = 'X-B3-ParentSpanId';\nconst headerRequestId = 'X-SFDC-Request-Id'; // This is a custom header for Salesforce\nconst defaultActivityNameForFetch = 'fetch';\nconst defaultActivityNameForXhrSend = 'xhr_send';\nconst defaultTimingActivityName = 'perf-timing';\nconst defaultFuzzyMapRange = 50; // msecs\n\n// This must remain in closure so that it doesn't leak at all\nconst o11yInfoForXHR: WeakMap<XMLHttpRequest, O11yInfo> = new WeakMap();\nexport class Tracing {\n private static _global: typeof globalThis = utility.getGlobal();\n private static _originalFetch: FetchType;\n private static _originalXhr: XhrType;\n private static _originalXhrOpen: XhrOpenType;\n private static _originalXhrSetRequestHeader: XhrSetRequestHeaderType;\n private static _originalXhrSend: XhrSendType;\n private static _isNetworkInstrumentationEnabled = false;\n private static _reqIndex = 0;\n private static _performanceObservability: PerformanceObservability;\n\n constructor(\n private readonly _instr: Instrumentation,\n private readonly _idleDetector: IdleDetector\n ) {\n utility.requireArgument(_instr, '_instr', 'object');\n utility.requireArgument(_idleDetector, '_idleDetector', 'object');\n }\n\n private static _getB3CompactFormat(\n traceId: string,\n spanId: string,\n isSampled?: boolean,\n parentSpanId?: string\n ): string {\n // b3={TraceId}-{SpanId}-{SamplingState}-{ParentSpanId}\n // Note: last two fields are optional\n\n let b3 = `${traceId}-${spanId}`;\n\n if (isSampled !== undefined || parentSpanId !== undefined) {\n b3 += isSampled ? '-1' : '-0';\n if (parentSpanId !== undefined) {\n b3 += `-${parentSpanId}`;\n }\n }\n return b3;\n }\n\n private static _getW3CompactFormat(\n traceId: string,\n spanId: string,\n isSampled: boolean\n ): string {\n // traceparent={version}-{trace-id}-{parent-id}-{trace-flags}\n // \"in some tracing systems, parent-id is known as the span-id, where a span is the execution of a client request\"\n return `00-${traceId}-${spanId}-${isSampled ? '01' : '00'}`;\n }\n\n private static _conformTextAsId(text: string, numChars: number): string {\n // First validate\n text = text.toLowerCase();\n const len: number = text.length;\n for (let i = 0; i < len; i += 1) {\n const c = text[i];\n if (!(c >= 'a' && c <= 'f') && !(c >= '0' && c <= '9')) {\n throw new Error(`The text '${text}' has an invalid character at index #${i}`);\n }\n }\n\n if (len > numChars) {\n // Use the right-most characters per spec\n return text.substr(len - numChars);\n }\n if (len < numChars) {\n // Pad left with 0s per spec\n return text.padStart(numChars, '0');\n }\n return text;\n }\n\n public static getHeaders(\n traceId: string,\n spanId: string,\n isSampled?: boolean,\n options?: TracingHeadersOptions\n ): TraceHeaders {\n utility.requireArgument(spanId, 'spanId', 'string');\n\n const useB3Headers: boolean = options?.useB3Headers;\n const headers: TraceHeaders = {};\n\n // Send no tracing headers when no RootActivity is running,\n // allows the server to decide if they want to start their own trace.\n if (traceId === undefined) {\n return headers;\n }\n\n traceId = this._conformTextAsId(\n traceId,\n options?.traceIdEffectiveLength !== undefined\n ? options.traceIdEffectiveLength\n : useB3Headers\n ? defaultTraceIdLengthB3\n : defaultTraceIdLengthW3\n );\n spanId = this._conformTextAsId(spanId, defaultSpanIdLength);\n\n const parentSpanId =\n (options &&\n options.parentSpanId !== undefined &&\n this._conformTextAsId(options.parentSpanId, defaultSpanIdLength)) ||\n undefined;\n\n if (useB3Headers) {\n // By default, use non-compact\n const isCompact: boolean = options?.useCompactHeader;\n if (isCompact) {\n headers[headerB3] = this._getB3CompactFormat(\n traceId,\n spanId,\n isSampled,\n parentSpanId\n );\n } else {\n headers[headerTraceId] = traceId;\n headers[headerSpanId] = spanId;\n if (parentSpanId !== undefined) {\n headers[headerParentSpanId] = parentSpanId;\n }\n if (isSampled !== undefined) {\n headers[headerSampled] = isSampled ? '1' : '0';\n }\n }\n } else {\n headers[headerTraceParent] = this._getW3CompactFormat(traceId, spanId, isSampled);\n }\n\n return headers;\n }\n\n private _disableNetworkInstrumentation(): void {\n if (Tracing._isNetworkInstrumentationEnabled) {\n if (Tracing._originalFetch) {\n Tracing._global.fetch = Tracing._originalFetch;\n Tracing._originalFetch = undefined;\n }\n if (Tracing._originalXhr) {\n Tracing._global.XMLHttpRequest = Tracing._originalXhr;\n Tracing._originalXhr = undefined;\n }\n if (Tracing._originalXhrOpen) {\n Tracing._global.XMLHttpRequest.prototype.open = Tracing._originalXhrOpen;\n Tracing._originalXhrOpen = undefined;\n }\n if (Tracing._originalXhrSetRequestHeader) {\n Tracing._global.XMLHttpRequest.prototype.setRequestHeader =\n Tracing._originalXhrSetRequestHeader;\n Tracing._originalXhrSetRequestHeader = undefined;\n }\n if (Tracing._originalXhrSend) {\n Tracing._global.XMLHttpRequest.prototype.send = Tracing._originalXhrSend;\n Tracing._originalXhrSend = undefined;\n }\n if (Tracing._performanceObservability) {\n Tracing._performanceObservability.stop();\n Tracing._performanceObservability = undefined;\n }\n Tracing._isNetworkInstrumentationEnabled = false;\n }\n }\n\n private _enableNetworkInstrumentation(\n instr: Instrumentation,\n logErrors: boolean,\n activityName: string,\n useTracing: boolean,\n options: TracingHeadersOptions,\n tasker: TaskerMulti,\n logPerformance: boolean | string,\n logPerformanceActivityName: string,\n skipUrls: (string | RegExp)[],\n fuzzyMapRange: number\n ): void {\n if (typeof Tracing._global.fetch === 'function') {\n this._overrideFetch(\n instr,\n logErrors,\n activityName,\n useTracing,\n options,\n tasker,\n skipUrls\n );\n Tracing._isNetworkInstrumentationEnabled = true;\n }\n\n if (typeof Tracing._global.XMLHttpRequest === 'function') {\n this._overrideXhr(\n instr,\n logErrors,\n activityName,\n useTracing,\n options,\n tasker,\n skipUrls\n );\n Tracing._isNetworkInstrumentationEnabled = true;\n }\n\n if (logPerformance) {\n Tracing._performanceObservability = new PerformanceObservability(\n instr,\n fuzzyMapRange,\n skipUrls,\n logPerformanceActivityName,\n logPerformance === true ? 'full' : logPerformance\n );\n Tracing._performanceObservability.start();\n Tracing._isNetworkInstrumentationEnabled = true;\n }\n }\n\n private static _getTraceHeaders(\n activity: Activity | undefined,\n tracingInstr: Instrumentation,\n options: TracingHeadersOptions | undefined,\n method: string,\n url: string\n ): TraceHeaders {\n let traceHeaders: TraceHeaders;\n\n if (activity) {\n traceHeaders = activity.getTraceHeaders(options) || {};\n } else {\n const context = (tracingInstr as InstrumentationImpl).internalInstrumentationContext;\n if (context?.rootId) {\n traceHeaders = Tracing.getHeaders(\n context.rootId,\n utility.generateUniqueId(),\n context.isRootActivitySampled,\n options\n );\n } else {\n traceHeaders = {};\n }\n }\n\n if (typeof options?.headerProcessor === 'function') {\n traceHeaders = options.headerProcessor({\n method,\n url,\n defaultHeaders: traceHeaders\n });\n } else if (typeof window === 'object') {\n // By default, only send to the original domain on browsers\n let newUrl;\n try {\n newUrl = new URL(url); // no base argument - will throw on non-absolute URLs\n } catch {\n // Relative URL.\n }\n // Check host (not hostname) to ensure port numbers match too.\n if (newUrl && newUrl.host !== window.location.host) {\n traceHeaders = undefined;\n }\n }\n return traceHeaders || {};\n }\n\n private static _extractHeader(\n headerName: string,\n input: RequestInfo | URL,\n init?: RequestInit\n ): string {\n if (init?.headers instanceof Headers) {\n return init.headers.get(headerName);\n }\n if (Array.isArray(init?.headers)) {\n const header = init.headers.find((entry) => entry[0] === headerName);\n return header?.[1];\n }\n if (typeof init?.headers === 'object') {\n return init.headers[headerName];\n }\n if (input instanceof Request) {\n return input.headers.get(headerName);\n }\n return undefined;\n }\n\n private _overrideFetch(\n instr: Instrumentation,\n logErrors: boolean,\n activityName: string,\n useTracing: boolean,\n tracingHeadersOptions: TracingHeadersOptions,\n tasker: TaskerMulti,\n skipUrls: (string | RegExp)[]\n ): void {\n Tracing._originalFetch = Tracing._global.fetch;\n const o11yFetch: O11yFetchType = async (resource, options, ...restArgs) => {\n // Note: We can't make any assumptions about the arguments before we pass them to the\n // original fetch. Invalid arguments should not cause us to throw, and be\n // passed to the original fetch as-is.\n let activity: Activity;\n let url: string;\n let absoluteUrl: string;\n let method: string;\n let fetchTime: number;\n let suspendInstrumentation = false;\n let response: Response;\n try {\n tasker?.add();\n method = options?.method;\n const ofo: O11yFetchOptions = options?.o11y;\n\n // Setting skipInstr in the fetch options is a signal for older o11y users to skip\n // instrumentation for certain requests. The new approach is to use the skipUrls option.\n // If skipInstr was set, we *assumed* that the call was making a request to upload\n // the instrumentation, in which case, we would modify the URL to include the\n // request index as a search parameter. The below code maintains this behavior but\n // doesn't carry it over to skipUrls approach.\n // We don't want to start an activity in either case to avoid additional\n // instrumentation from being generated and going into an indefinite loop.\n\n const isSkipInstrSet = ofo?.skipInstr;\n suspendInstrumentation =\n isSkipInstrSet || Tracing._shouldSkipUrl(skipUrls, resource);\n\n if (!suspendInstrumentation) {\n activity = instr.startActivity(activityName || defaultActivityNameForFetch);\n } else if (isSkipInstrSet) {\n Tracing._reqIndex += 1;\n try {\n // Best effort -- we can't modify other types of resources\n if (resource instanceof URL) {\n resource.searchParams.append('o11y', Tracing._reqIndex.toString());\n } else if (typeof resource === 'string') {\n // Review: the function call below should be new URL(utility.tryGetAbsoluteUrl(resource))\n const urlObj = new URL(resource);\n const kv = `o11y=${Tracing._reqIndex}`;\n urlObj.search += urlObj.search.startsWith('?') ? `&${kv}` : kv;\n resource = urlObj.toString();\n }\n\n // Note: the code above is buggy, but not modifying it because we know\n // the only user of this code path is passing an absolute path as a string to fetch.\n // We want to minimize the risk of introducing new bugs.\n // Here's the list of issues.\n // 1. `resource instanceof Request` case is not handled.\n // 2. `typeof resource === 'string'` case isn't protected against non-absolute URLs\n } catch {}\n }\n delete options?.o11y;\n\n url = resource?.toString();\n absoluteUrl = utility.tryGetAbsoluteUrl(url);\n\n if (useTracing) {\n if (resource instanceof Request) {\n if (!method) {\n // the method specifed in options overrides the method in the resource\n method = resource.method;\n }\n url = resource.url;\n absoluteUrl = utility.tryGetAbsoluteUrl(url);\n }\n\n const traceHeaders = Tracing._getTraceHeaders(\n activity,\n instr,\n tracingHeadersOptions,\n method,\n absoluteUrl\n );\n\n if (\n !this._applyTraceHeaders(resource, options, traceHeaders) &&\n options === undefined\n ) {\n options = {\n headers: traceHeaders\n };\n }\n }\n\n fetchTime = utility.perfNow();\n response = await Tracing._originalFetch.call(\n Tracing._global,\n resource,\n options,\n ...restArgs\n );\n\n return response;\n } catch (ex) {\n if (logErrors && !suspendInstrumentation) {\n if (activity) {\n activity.error(ex);\n } else {\n instr.error(ex);\n }\n }\n throw ex;\n } finally {\n try {\n const activityDuration = Tracing._endActivity(activity, url, method);\n if (Tracing._performanceObservability?.isStarted) {\n const requestId = Tracing._extractHeader(\n headerRequestId,\n resource,\n options\n );\n\n Tracing._performanceObservability.addEntry(absoluteUrl, fetchTime, {\n requestId,\n activityDuration,\n activityId: activity?.getId(),\n errorCount: activity?.getErrorCount(),\n responseStatus: response?.status\n });\n }\n } finally {\n tasker?.done();\n }\n }\n };\n Tracing._global.fetch = o11yFetch;\n }\n\n private static _endActivity(activity: Activity, url: string, method: string): number {\n if (activity) {\n // We will not log the activity if performance observability is started\n // because we are using the ID of the wrapper activity in the performance observability\n // activity and don't want duplication. Any errors generated for the first activity\n // will be linked to the other one.\n if (Tracing._performanceObservability?.isStarted) {\n activity.discard();\n } else {\n activity.stop(networkSchema, {\n mtd: method,\n url\n });\n }\n return activity.getStopPerfTime() - activity.getStartPerfTime();\n }\n return undefined;\n }\n\n private _overrideXhr(\n instr: Instrumentation,\n logErrors: boolean,\n activityName: string,\n useTracing: boolean,\n options: TracingHeadersOptions,\n tasker: TaskerMulti,\n skipUrls: (string | RegExp)[]\n ): void {\n Tracing._originalXhr = Tracing._global.XMLHttpRequest;\n Tracing._originalXhrOpen = Tracing._originalXhr.prototype.open;\n Tracing._originalXhrSetRequestHeader = Tracing._originalXhr.prototype.setRequestHeader;\n Tracing._originalXhrSend = Tracing._originalXhr.prototype.send;\n\n function postProcess(xhr: XMLHttpRequest, failedAtInit?: boolean): void {\n const _o11y = o11yInfoForXHR.get(xhr);\n if (_o11y) {\n const activity: Activity = _o11y.activity;\n const activityDuration = Tracing._endActivity(activity, _o11y.url, _o11y.method);\n if (!failedAtInit && Tracing._performanceObservability?.isStarted) {\n Tracing._performanceObservability.addEntry(_o11y.absoluteUrl, _o11y.sendTime, {\n requestId: _o11y.requestId,\n activityDuration,\n activityId: activity?.getId(),\n errorCount: activity?.getErrorCount(),\n responseStatus: xhr.status\n });\n }\n }\n }\n\n Tracing._originalXhr.prototype.open = function (\n this: XMLHttpRequest,\n method: string,\n url: string | URL,\n __async?: boolean, // Defaults to true if not specified\n __username?: string | null,\n __password?: string | null\n ) {\n const _o11y: O11yInfo = {\n method,\n url: url?.toString()\n };\n o11yInfoForXHR.set(this, _o11y);\n\n _o11y.absoluteUrl = utility.tryGetAbsoluteUrl(_o11y.url);\n\n _o11y.suspendInstrumentation = Tracing._shouldSkipUrl(skipUrls, _o11y.absoluteUrl);\n\n // Use arguments to ensure that any parameters are passed through unchanged.\n // For example, if the 3rd parameters is not specified, it defaults to true due to spec\n // of the underlying method.\n // eslint-disable-next-line prefer-rest-params, @typescript-eslint/ban-types\n (Tracing._originalXhrOpen as Function).apply(this, arguments);\n };\n\n Tracing._originalXhr.prototype.setRequestHeader = function (\n this: XMLHttpRequest,\n name: string,\n value: string\n ) {\n if (name?.toLowerCase?.() === headerRequestId.toLowerCase()) {\n const _o11y = o11yInfoForXHR.get(this);\n if (_o11y) {\n _o11y.requestId = value;\n }\n }\n\n // Use arguments to ensure that any parameters are passed through unchanged.\n // eslint-disable-next-line prefer-rest-params, @typescript-eslint/ban-types\n (Tracing._originalXhrSetRequestHeader as Function).apply(this, arguments);\n };\n\n Tracing._originalXhr.prototype.send = function (this: XMLHttpRequest, ...args) {\n let activity: Activity;\n\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const xhr: XMLHttpRequest = this;\n let _o11y = o11yInfoForXHR.get(xhr);\n if (!_o11y) {\n _o11y = {};\n o11yInfoForXHR.set(xhr, _o11y);\n }\n try {\n tasker?.add();\n if (!_o11y.suspendInstrumentation) {\n _o11y.activity = activity = instr.startActivity(\n activityName || defaultActivityNameForXhrSend\n );\n }\n if (useTracing) {\n const traceHeaders = Tracing._getTraceHeaders(\n activity,\n instr,\n options,\n _o11y.method,\n _o11y.absoluteUrl\n );\n\n Object.entries(traceHeaders).forEach((entry) => {\n xhr.setRequestHeader(entry[0], entry[1]);\n });\n }\n _o11y.sendTime = utility.perfNow();\n Tracing._originalXhrSend.call(this, ...args);\n } catch (ex) {\n if (logErrors && !_o11y?.suspendInstrumentation) {\n if (activity) {\n activity.error(ex);\n } else {\n instr.error(ex);\n }\n }\n postProcess(xhr, true);\n tasker?.done();\n throw ex;\n }\n };\n\n const xhrProxy = new Proxy<XhrType>(Tracing._originalXhr, {\n construct(target: XhrType) {\n const newXhr = new target() as XMLHttpRequest;\n\n // Be the first in the event chain\n newXhr.addEventListener('load', () => {\n postProcess(newXhr);\n tasker?.done();\n });\n newXhr.addEventListener(\n 'error',\n (__err: ProgressEvent<XMLHttpRequestEventTarget>) => {\n const _o11y = o11yInfoForXHR.get(newXhr) || {};\n try {\n if (logErrors && !_o11y?.suspendInstrumentation) {\n const error = new Error('XHR Network-Level Error');\n const activity = _o11y?.activity;\n if (activity) {\n activity.error(error);\n } else {\n instr.error(error);\n }\n }\n postProcess(newXhr);\n } finally {\n tasker?.done();\n }\n }\n );\n newXhr.addEventListener('abort', () => {\n const _o11y = o11yInfoForXHR.get(newXhr) || {};\n _o11y?.activity?.discard();\n tasker?.done();\n });\n return newXhr;\n }\n });\n\n Tracing._global.XMLHttpRequest = xhrProxy;\n }\n\n networkInstrumentation(options: boolean | NetworkInstrumentationOptions): void {\n utility.requireArgument(options, 'options', ['boolean', 'object']);\n\n // First disable it if necessary, so we can use the new options if it was already enabled\n this._disableNetworkInstrumentation();\n if (options) {\n const tracingOptions: NetworkInstrumentationOptions =\n typeof options === 'object' ? options : {};\n\n let tasker: TaskerMulti = undefined;\n if (utility.definedValueOrDefault(tracingOptions.useTasker, true)) {\n tasker = this._idleDetector?.declareNotifierTaskMulti('o11y network');\n }\n\n this._enableNetworkInstrumentation(\n utility.definedValueOrDefault(tracingOptions.instrumentation, this._instr),\n utility.definedValueOrDefault(tracingOptions.logErrors, true),\n tracingOptions.activityName,\n utility.definedValueOrDefault(tracingOptions.useTracing, true),\n tracingOptions.tracingHeadersOptions,\n tasker,\n utility.definedValueOrDefault(tracingOptions.logPerformance, true),\n utility.definedValueOrDefault(\n tracingOptions.logPerformanceActivityName,\n defaultTimingActivityName\n ),\n utility.definedValueOrDefault(tracingOptions.skipUrls, []),\n utility.definedValueOrDefault(tracingOptions.fuzzyMapRange, defaultFuzzyMapRange)\n );\n }\n }\n\n resetRequestCounter(): void {\n Tracing._reqIndex = 0;\n }\n\n // returns true if the headers were applied to either the options or the resource.\n private _applyTraceHeaders(\n resource: RequestInfo | URL,\n options: RequestInit,\n traceHeaders: TraceHeaders\n ): boolean {\n if (options?.headers !== undefined) {\n // if headers are defined in the options,\n // they trump any headers defined in the resource\n\n if (options.headers instanceof Headers && typeof options.headers.set === 'function') {\n Object.entries(traceHeaders).forEach(([key, value]) => {\n // This headers resolves to the interface defined in\n // lib.dom.iterable.d.ts, which doesn't include the set method.\n (options.headers as Headers).set(key, value);\n });\n return true;\n }\n if (Array.isArray(options.headers)) {\n Object.entries(traceHeaders).forEach((entry) => {\n (options.headers as [string, string][]).push(entry);\n });\n return true;\n }\n if (typeof options.headers === 'object') {\n options.headers = Object.assign(options.headers, traceHeaders);\n return true;\n }\n } else if (resource instanceof Request && resource.headers instanceof Headers) {\n Object.entries(traceHeaders).forEach(([key, value]) => {\n // This headers resolves to the interface defined in lib.dom.d.ts\n resource.headers.set(key, value);\n });\n return true;\n } else if (options) {\n options.headers = Object.assign({}, traceHeaders);\n return true;\n }\n return false;\n }\n\n private static _shouldSkipUrl(\n skipUrls: (string | RegExp)[],\n urlLike: string | URL | Request\n ): boolean {\n let url: string = urlLike as string;\n\n if (urlLike instanceof URL) {\n url = urlLike.toString?.();\n } else if (urlLike instanceof Request) {\n url = urlLike.url;\n }\n\n return skipUrls?.some((skipUrl) => {\n if (skipUrl instanceof RegExp) {\n return skipUrl.test(url);\n } else {\n return url === skipUrl;\n }\n });\n }\n}\n","export enum TimerOverride {\n none,\n start,\n stop,\n both\n}\n","import { PublicSafety, SchematizedData, TraceHeaders, utility } from 'o11y/shared';\n\nimport {\n Activity,\n ActivityDetail,\n ActivityStopOptions,\n Schema,\n TracingHeadersOptions\n} from '../interfaces';\nimport { Tracing } from './Tracing';\nimport { TimerOverride } from './TimerOverride';\nexport const timedout = 'timedout';\nexport const terminated = 'terminated';\nexport const discarded = 'discarded';\n\nconst stopReason = {\n timedout,\n terminated,\n discarded\n};\n\nexport type onActivityStop = (detail: ActivityDetail) => void;\nexport type onActivityError = (error: unknown, detail: ActivityDetail) => void;\n\nexport class ActivityImpl implements Activity {\n protected readonly _id: string;\n protected _isRoot = false;\n private readonly _safety: PublicSafety;\n private readonly _usePerf: boolean;\n protected static _count = 0;\n private readonly _perfId: string;\n private readonly _perfName: string;\n private _startTimestamp: number;\n private _startPerfTime: number;\n private _stopPerfTime: number;\n private _stopReason: string;\n private _timer: NodeJS.Timer;\n private _errorCount = 0;\n private _timerOverridden: TimerOverride = TimerOverride.none;\n\n constructor(\n protected readonly _name: string,\n protected readonly _rootId: string,\n private readonly _onStopped: onActivityStop,\n private readonly _onError: onActivityError,\n timeout?: number,\n id?: string,\n protected readonly _isSampled?: boolean,\n _startPerfTime?: number,\n protected readonly _noRerooting?: boolean\n ) {\n const { tsNow, perfNow } = utility.time();\n\n ActivityImpl._count += 1;\n this._id = id || utility.generateUniqueId();\n\n this._usePerf =\n typeof performance !== 'undefined' &&\n typeof performance.mark === 'function' &&\n typeof performance.measure === 'function';\n if (this._usePerf) {\n this._perfName = `${this._name}__${ActivityImpl._count}`;\n this._perfId = `${this._name}__${this.id}`;\n try {\n performance.mark(this._perfId);\n } catch {\n this._usePerf = false;\n }\n }\n\n this._startTimestamp = tsNow;\n this._startPerfTime = perfNow;\n this._overrideTimer(_startPerfTime);\n\n if (timeout > 0) {\n this._timer = setTimeout(() => {\n this._stopReason = this._stopReason || stopReason.timedout;\n this.stop();\n }, timeout);\n }\n this._safety = new PublicSafety();\n }\n\n get id(): string {\n return this._id;\n }\n\n getId(): string {\n return this.id;\n }\n\n getRootId(): string {\n return this._rootId;\n }\n\n get stopReason(): string {\n return this._stopReason;\n }\n\n error(error: unknown, userSchemaOrText?: Schema | string, userData?: SchematizedData): void {\n this._safety.tryCatch(\n () => {\n this._errorCount += 1;\n if (typeof error === 'string') {\n error = new Error(error);\n }\n this._onError(error, this._getDetail(userSchemaOrText, userData));\n },\n { op: 'activity.error' }\n );\n }\n\n stop(\n userSchemaOrText?: Schema | string,\n userData?: SchematizedData,\n options?: ActivityStopOptions\n ): void {\n this._safety.tryCatch(\n () => {\n utility.requireArgumentIfDefined(userSchemaOrText, 'userSchemaOrText', [\n 'object',\n 'string'\n ]);\n utility.requireArgumentIfDefined(userData, 'userData', 'object');\n\n if (options) {\n const perfStart: number = options.perfStartOverride;\n const isStartTimeDefined = utility.requireArgumentIfDefined(\n perfStart,\n 'options.perfStartOverride',\n 'number'\n );\n\n const perfStop: number = options.perfStopOverride;\n const isStopTimeDefined = utility.requireArgumentIfDefined(\n perfStop,\n 'options.perfStopOverride',\n 'number'\n );\n\n const errorCount: number = options.errorCount;\n if (\n utility.requireArgumentIfDefined(errorCount, 'options.errorCount', 'number')\n ) {\n this._errorCount = errorCount;\n }\n\n if (isStartTimeDefined && perfStart < 0) {\n throw new Error('perfStartOverride, if defined, must be >= 0');\n }\n\n if (\n isStopTimeDefined &&\n (perfStop < 0 ||\n perfStop < (isStartTimeDefined ? perfStart : this._startPerfTime) ||\n perfStop > utility.time().perfNow + 100) // 100ms for safety\n ) {\n throw new Error(\n 'perfStopOverride, if defined, must be >= 0 and >= startTime and <= now'\n );\n }\n }\n\n this._stopInternal(userSchemaOrText, userData, options);\n },\n { op: 'activity.stop' }\n );\n }\n\n private _overrideTimer(perfStartTime?: number, perfStopTime?: number): void {\n if (perfStartTime !== undefined) {\n this._startTimestamp = Math.round(\n this._startTimestamp - (this._startPerfTime - perfStartTime)\n );\n this._startPerfTime = perfStartTime;\n this._setTimerOverride(TimerOverride.start);\n }\n\n if (perfStopTime !== undefined) {\n this._stopPerfTime = perfStopTime;\n this._setTimerOverride(TimerOverride.stop);\n }\n }\n\n private _setTimerOverride(value: TimerOverride): void {\n if (\n this._timerOverridden === TimerOverride.both ||\n this._timerOverridden === value ||\n value === TimerOverride.none\n ) {\n return;\n }\n this._timerOverridden =\n this._timerOverridden === TimerOverride.none ? value : TimerOverride.both;\n }\n\n private _stopInternal(\n userSchemaOrText: Schema | string,\n userData: SchematizedData,\n options?: ActivityStopOptions\n ): void {\n // First things first.\n const stopPerfTime = utility.perfNow();\n if (this._usePerf) {\n try {\n // Use a more user-friendly name for measure.\n if (this._stopReason !== stopReason.discarded) {\n performance.measure(this._perfName, this._perfId);\n }\n performance.clearMarks(this._perfId);\n performance.clearMeasures(this._perfName);\n } catch {}\n }\n\n if (this._timer) {\n clearTimeout(this._timer);\n this._timer = undefined;\n }\n if (this.isStopped) {\n // Already stopped\n return;\n }\n\n if (options) {\n this._overrideTimer(options.perfStartOverride, options.perfStopOverride);\n }\n\n // We may set this already in override so check that here\n this._stopPerfTime =\n this._timerOverridden === TimerOverride.none ||\n this._timerOverridden === TimerOverride.start\n ? stopPerfTime\n : this._stopPerfTime;\n\n const activityDetail: ActivityDetail = this._getDetail(userSchemaOrText, userData);\n this._onStopped(activityDetail);\n }\n\n get isStopped(): boolean {\n return this._stopPerfTime !== undefined;\n }\n\n discard(): void {\n this._safety.tryCatch(\n () => {\n this._stopReason = this._stopReason || stopReason.discarded;\n this.stop();\n },\n { op: 'activity.discard' }\n );\n }\n\n terminate(\n userSchemaOrText?: Schema | string,\n userData?: SchematizedData,\n options?: ActivityStopOptions\n ): void {\n this._safety.tryCatch(\n () => {\n this._stopReason = this._stopReason || stopReason.terminated;\n this.stop(userSchemaOrText, userData, options);\n },\n { op: 'activity.terminate' }\n );\n }\n\n getIsSampled(): boolean {\n return this._isSampled || false;\n }\n\n protected _getDetail(\n userSchemaOrText: Schema | string,\n userData: SchematizedData\n ): ActivityDetail {\n return {\n id: this._id,\n rootId: this._rootId,\n name: this._name,\n userSchemaOrText: userSchemaOrText,\n userData,\n stopReason: this._stopReason,\n startTimestamp: this._startTimestamp,\n startPerfTime: this._startPerfTime,\n stopPerfTime: this._stopPerfTime,\n errorCount: this._errorCount,\n isSampled: this.getIsSampled(),\n timerOverridden: this._timerOverridden,\n noRerooting: this._noRerooting\n };\n }\n\n public getTraceHeaders(options: TracingHeadersOptions): TraceHeaders {\n // Normally, the root activity ID is the traceId.\n // If the activity is root, it's ID is (also) the traceId.\n // If the activity has no root, no traceId is set and the headers object will be empty\n const spanId = this.id;\n const traceId = this._isRoot ? this.id : this._rootId;\n\n return Tracing.getHeaders(traceId, spanId, this.getIsSampled(), options);\n }\n\n getStartTimestamp(): number {\n return this._startTimestamp;\n }\n\n getStartPerfTime(): number {\n return this._startPerfTime;\n }\n\n getStopPerfTime(): number {\n return this._stopPerfTime;\n }\n\n getErrorCount(): number {\n return this._errorCount;\n }\n}\n","import { Activity, TracingHeadersOptions } from '../interfaces';\n\nconst id: string = new Array(16).fill(0).join('');\nclass ActivityNoOp implements Activity {\n getId(): string {\n return id;\n }\n getRootId(): string {\n return undefined;\n }\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n error(): void {}\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n stop(): void {}\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n discard(): void {}\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n terminate(): void {}\n\n getIsSampled(): boolean {\n return false;\n }\n getTraceHeaders(__options: TracingHeadersOptions): Record<string, string> {\n return {};\n }\n getStartTimestamp(): number {\n return undefined;\n }\n getStartPerfTime(): number {\n return undefined;\n }\n getStopPerfTime(): number {\n return undefined;\n }\n getErrorCount(): number {\n return 0;\n }\n}\n\nexport const activityNoOp = Object.freeze(new ActivityNoOp());\n","import { SchematizedPayload } from '../interfaces';\nimport { EventData, InstrumentedEventData, MouseEventData } from '../interfaces-private';\nimport { DomEventData, DomEventDataField } from '../types/TypeDefinitions-Private';\nimport { schemaUtil, utility } from 'o11y/shared';\n\nexport class DomEventHelpers {\n getInstrumentedEventData(\n domEventDataField: DomEventDataField,\n domEventData: DomEventData,\n handledBy: HTMLElement,\n userPayload: SchematizedPayload\n ): InstrumentedEventData {\n const instrumentedEvent: InstrumentedEventData = {\n ownerComponent: handledBy.tagName,\n parentComponent: handledBy.parentElement?.tagName || undefined,\n simplePath: utility.getXpath(handledBy)\n };\n\n switch (domEventDataField) {\n case DomEventDataField.BaseEvent:\n instrumentedEvent.baseEvent = domEventData as EventData;\n break;\n case DomEventDataField.MouseEvent:\n instrumentedEvent.mouseEvent = domEventData as MouseEventData;\n break;\n }\n\n if (userPayload) {\n instrumentedEvent.userPayload = schemaUtil.makePayload(\n userPayload.schema,\n userPayload.payload,\n true\n );\n }\n\n return instrumentedEvent;\n }\n\n getEventData(e: MouseEvent | UIEvent | Event): EventData {\n return {\n type: e.type\n };\n }\n\n getMouseEventData(e: MouseEvent): MouseEventData {\n return {\n altKey: e.altKey,\n bubbles: e.bubbles,\n button: e.button,\n buttons: e.buttons,\n cancelable: e.cancelable,\n clientX: e.clientX,\n clientY: e.clientY,\n composed: e.composed,\n defaultPrevented: e.defaultPrevented,\n detail: e.detail,\n eventPhase: e.eventPhase,\n isTrusted: e.isTrusted,\n timeStamp: e.timeStamp,\n type: e.type,\n ctrlKey: e.ctrlKey,\n metaKey: e.metaKey,\n movementX: e.movementX,\n movementY: e.movementY,\n offsetX: e.offsetX,\n offsetY: e.offsetY,\n pageX: e.pageX,\n pageY: e.pageY,\n screenX: e.screenX,\n screenY: e.screenY,\n shiftKey: e.shiftKey\n };\n }\n}\n\nconst singleton = new DomEventHelpers();\nexport const domEventHelpers = singleton;\n","import { BucketHistogram } from '../interfaces/BucketHistogram';\nimport { MetricsTags, utility } from 'o11y/shared';\nimport { BucketMetric } from 'src/interfaces';\n\nexport class BucketHistogramImpl implements BucketMetric<number[]>, BucketHistogram {\n private readonly _createdOn: number;\n private _lastUpdatedOn: number;\n private _values = new Array<number>();\n\n constructor(\n private readonly _name: string,\n private readonly _ownerName: string,\n private readonly _ownerAppName: string,\n private readonly _tags: MetricsTags,\n private readonly _buckets: number[],\n createdOn?: number,\n lastUpdatedOn?: number,\n values?: number[]\n ) {\n this._createdOn = createdOn === undefined ? utility.time().tsNow : createdOn;\n if (lastUpdatedOn !== undefined) {\n this._lastUpdatedOn = lastUpdatedOn;\n }\n if (values !== undefined) {\n this._values = values;\n }\n }\n\n getName(): string {\n return this._name;\n }\n\n getCreatedOn(): number {\n return this._createdOn;\n }\n\n getLastUpdatedOn(): number {\n return this._lastUpdatedOn;\n }\n\n getData(): number[] {\n return this.values;\n }\n\n getBuckets(): number[] {\n return this.buckets;\n }\n\n get buckets(): number[] {\n return this._buckets.slice(0, this._buckets.length);\n }\n\n get values(): number[] {\n return this._values.slice(0, this._values.length);\n }\n\n record(value: number): void {\n if (typeof value === 'number') {\n this._values.push(value);\n this._lastUpdatedOn = utility.time().tsNow;\n return;\n }\n\n throw new Error('BucketHistogram can only record numbers.');\n }\n\n reset(): void {\n this._lastUpdatedOn = undefined;\n this._values = [];\n }\n\n getOwnerName(): string {\n return this._ownerName;\n }\n\n getOwnerAppName(): string {\n return this._ownerAppName;\n }\n\n getTags(): MetricsTags {\n return this._tags;\n }\n}\n","import { Metric } from '../interfaces/Metric';\nimport { ValueRecorder } from '../interfaces/ValueRecorder';\nimport { MetricsTags, utility } from 'o11y/shared';\n\nexport class ValueRecorderImpl implements Metric<number[]>, ValueRecorder {\n private readonly _createdOn: number;\n private _lastUpdatedOn: number;\n private _values = new Array<number>();\n\n constructor(\n private readonly _name: string,\n private readonly _ownerName: string,\n private readonly _ownerAppName: string,\n private readonly _tags: MetricsTags,\n createdOn?: number,\n lastUpdatedOn?: number,\n values?: number[]\n ) {\n this._createdOn = createdOn === undefined ? utility.time().tsNow : createdOn;\n if (lastUpdatedOn !== undefined) {\n this._lastUpdatedOn = lastUpdatedOn;\n }\n if (values !== undefined) {\n this._values = values;\n }\n // TODO: Add sampling/throttling to put a cap on the size of the array\n }\n\n getName(): string {\n return this._name;\n }\n\n getCreatedOn(): number {\n return this._createdOn;\n }\n\n getLastUpdatedOn(): number {\n return this._lastUpdatedOn;\n }\n\n getData(): number[] {\n return this.values;\n }\n\n get values(): number[] {\n return this._values.slice(0, this._values.length);\n }\n\n record(value: number): void {\n if (typeof value === 'number') {\n this._values.push(value);\n this._lastUpdatedOn = utility.time().tsNow;\n return;\n }\n\n throw new Error('ValueRecorder can only record numbers.');\n }\n\n reset(): void {\n this._lastUpdatedOn = undefined;\n this._values = [];\n }\n\n getOwnerName(): string {\n return this._ownerName;\n }\n\n getOwnerAppName(): string {\n return this._ownerAppName;\n }\n\n getTags(): MetricsTags {\n return this._tags;\n }\n}\n","export class SizeLimitedMap<K, V> {\n private readonly _map = new Map<K, V>();\n\n private _maxSize: number;\n constructor(maxSize: number) {\n if (typeof maxSize === 'number' && maxSize > 0) {\n this._maxSize = Math.ceil(maxSize);\n return;\n }\n throw new Error('maxSize must be a positive number');\n }\n\n get maxSize(): number {\n return this._maxSize;\n }\n\n get(key: K): V {\n return this._map.get(key);\n }\n\n has(key: K): boolean {\n return this._map.has(key);\n }\n\n set(key: K, value: V): boolean {\n if (this.has(key) || this._map.size < this.maxSize) {\n this._map.set(key, value);\n return true;\n }\n return false;\n }\n\n getElements(): V[] {\n return Array.from(this._map.values());\n }\n\n clear(): void {\n this._map.clear();\n }\n}\n","import { UpCounterImpl } from 'o11y/shared';\nimport type { MetricsTags } from 'o11y/shared';\n\nimport { MetricsReporter, UpCounter, ValueRecorder } from '../interfaces';\n\nimport { BucketHistogramImpl } from './BucketHistogramImpl';\nimport { ValueRecorderImpl } from './ValueRecorderImpl';\nimport { SizeLimitedMap } from './SizeLimitedMap';\n\nconst maxCounters = 1000;\nconst maxValueRecorders = 500;\nconst maxBucketHistograms = 500;\n\nenum MetricType {\n Counter,\n Percentile,\n BucketHistogram\n}\n\nexport class MetricsImpl implements MetricsReporter {\n private readonly _upCounters = new SizeLimitedMap<string, UpCounterImpl>(maxCounters);\n private readonly _valueRecorders = new SizeLimitedMap<string, ValueRecorderImpl>(\n maxValueRecorders\n );\n private readonly _bucketHistograms = new SizeLimitedMap<string, BucketHistogramImpl>(\n maxBucketHistograms\n );\n\n constructor(\n private readonly _ownerName: string,\n private readonly _getOwnerAppName: () => string\n ) {}\n\n incrementCounter(\n operation: string,\n increment: number,\n hasError = false,\n tags: MetricsTags = {}\n ): void {\n this._tagError(tags, hasError);\n this._upCounter(operation, tags).increment(increment);\n }\n\n trackValue(operation: string, value: number, hasError = false, tags: MetricsTags = {}): void {\n this._tagError(tags, hasError);\n this._valueRecorder(operation, tags).record(value);\n }\n\n bucketValue(\n operation: string,\n value: number,\n buckets: number[],\n hasError = false,\n tags: MetricsTags = {}\n ): void {\n this._tagError(tags, hasError);\n this._bucketHistogram(operation, tags, buckets).record(value);\n }\n\n private _bucketHistogram(name: string, tags: MetricsTags, buckets: number[]): ValueRecorder {\n const { key, sortedTags } = this._getKeyAndSortedTags(\n name,\n tags,\n MetricType.BucketHistogram\n );\n let instrument = this._bucketHistograms.get(key);\n if (!instrument) {\n instrument = new BucketHistogramImpl(\n name,\n this._ownerName,\n this._getOwnerAppName(),\n sortedTags,\n buckets\n );\n if (!this._bucketHistograms.set(key, instrument)) {\n throw new Error(`Max size of ${maxBucketHistograms} exceeded for BucketHistograms`);\n }\n }\n return instrument;\n }\n\n private _upCounter(name: string, tags: MetricsTags): UpCounter {\n const { key, sortedTags } = this._getKeyAndSortedTags(name, tags, MetricType.Counter);\n let instrument = this._upCounters.get(key);\n if (!instrument) {\n instrument = new UpCounterImpl(\n name,\n this._ownerName,\n this._getOwnerAppName(),\n sortedTags\n );\n if (!this._upCounters.set(key, instrument)) {\n throw new Error(`Max size of ${maxCounters} exceeded for UpCounters`);\n }\n }\n return instrument;\n }\n\n private _valueRecorder(name: string, tags: MetricsTags): ValueRecorder {\n const { key, sortedTags } = this._getKeyAndSortedTags(name, tags, MetricType.Percentile);\n let instrument = this._valueRecorders.get(key);\n if (!instrument) {\n instrument = new ValueRecorderImpl(\n name,\n this._ownerName,\n this._getOwnerAppName(),\n sortedTags\n );\n if (!this._valueRecorders.set(key, instrument)) {\n throw new Error(`Max size of ${maxValueRecorders} exceeded for ValueRecorders`);\n }\n }\n return instrument;\n }\n\n getUpCounters(): UpCounterImpl[] {\n return this._upCounters.getElements();\n }\n\n getValueRecorders(): ValueRecorderImpl[] {\n return this._valueRecorders.getElements();\n }\n\n getBucketHistograms(): BucketHistogramImpl[] {\n return this._bucketHistograms.getElements();\n }\n\n private _tagError(tags: MetricsTags, hasError: boolean): void {\n tags.status = hasError === true ? 'error' : 'success';\n }\n\n private _getKeyAndSortedTags(\n operation: string,\n tags: MetricsTags,\n metricType: MetricType\n ): { key: string; sortedTags: MetricsTags } {\n // This method should be called after any manipulation of tags\n const sortedTags = Object.keys(tags)\n .sort()\n .reduce((prev: MetricsTags, curr: string) => {\n prev[curr] = tags[curr];\n return prev;\n }, {});\n const key = `${MetricType[metricType]}:${operation}${JSON.stringify(sortedTags)}`;\n return {\n key,\n sortedTags\n };\n }\n}\n","export class MockBase {\n // All mock objects should extend this\n public readonly isMock = true;\n}\n","import {\n activitySchema,\n errorSchema,\n instrumentedEventSchema,\n payloadDiagsSchema,\n simpleSchema\n} from 'o11y_schema/sf_instrumentation';\n\nimport {\n LightningElement,\n LogPromptListener,\n maxStringLengthAppLimit,\n MetricsTags,\n payloadUtility,\n PublicSafety,\n SchematizedData,\n schemaUtil,\n utility\n} from 'o11y/shared';\n\nimport {\n Activity,\n ActivityApiOptions,\n ActivityDetail,\n ApiOptions,\n BucketMetric,\n DomEventApiOptions,\n Instrumentation,\n InstrumentationContext,\n Metric,\n MetricsReporter,\n Schema,\n SchematizedPayload\n} from '../interfaces';\nimport { ActivityData, ErrorData, InstrumentedEventData } from '../interfaces-private';\n\nimport { ActivityImpl, discarded, onActivityError, onActivityStop } from './ActivityImpl';\nimport { activityNoOp } from './ActivityNoOp';\nimport { AutomaticClickTracker } from './AutomaticClickTracker';\nimport { domEventHelpers } from './DomEventHelpers';\nimport { MetricsImpl } from './MetricsImpl';\nimport { MockBase } from './MockObj';\nimport { NextgenImpl } from './NextgenImpl';\nimport { DomEventDataField } from 'src/types/TypeDefinitions-Private';\nimport { RootActivityHistoryEntry } from 'src/types/RootActivityHistoryEntry';\nimport { ActivityStartApiOptions } from 'src/interfaces/ActivityStartApiOptions';\n\n// @W-10241440, disable timeouts\nconst maxActivityDurationMsecs: number = undefined;\nconst reservedMetricCharacters = ['`'];\nconst reservedMetricNames = {\n internalError: 'o11y-error'\n};\nconst denyListMetricNames = Object.freeze(Array.from(Object.values(reservedMetricNames)));\n\nexport class InstrumentationImpl implements Instrumentation, MetricsReporter {\n protected static readonly defaultAppName = 'APP_NOT_REGISTERED';\n private readonly _metrics: MetricsImpl;\n private readonly _onActivityStoppedCallback: onActivityStop =\n this._handleActivityStop.bind(this);\n protected readonly _onActivityErrorCallback: onActivityError =\n this._handleActivityError.bind(this);\n protected readonly _safety: PublicSafety;\n private readonly _simpleTextMaxLength: number;\n\n constructor(protected readonly _nextGen: NextgenImpl, private readonly _name: string) {\n for (const reservedChar of reservedMetricCharacters) {\n if (this._name.indexOf(reservedChar) >= 0) {\n throw new Error(`Name cannot include the reserved character \"${reservedChar}\"`);\n }\n }\n\n this._safety = new PublicSafety({\n increment: (increment) => this._incrementError(increment)\n });\n\n this._metrics = this._initMetrics();\n\n const simpleTextOptions = schemaUtil.getOptions(simpleSchema, 'Simple', 'text');\n this._simpleTextMaxLength = simpleTextOptions\n ? simpleTextOptions['(meta.max_length)']\n : maxStringLengthAppLimit;\n }\n\n protected _initMetrics(): MetricsImpl {\n return new MetricsImpl(\n this.name,\n () => this._nextGen.appName || InstrumentationImpl.defaultAppName\n );\n }\n\n private _incrementError(increment = 1): void {\n // Note: this metric was setting false for hasError until 246.3.x\n this._metrics.incrementCounter(reservedMetricNames.internalError, increment, true);\n }\n\n get name(): string {\n return this._name;\n }\n\n /**\n * This function is to allow for convenience calls to our API, where a string can\n * be provided instead of an actual Schema. In that case, we wrap the text in\n * a built-in simple schema.\n * @param userSchemaOrText Schema or string.\n * @param userData\n * @param onlyIfBoth If true, then both the schema and the data must be specified.\n * @returns\n */\n protected _wrapUserPayload(\n userSchemaOrText: Schema | string,\n userData: SchematizedData,\n onlyIfBoth = false\n ): SchematizedPayload {\n let userSchema: Schema;\n if (typeof userSchemaOrText === 'string') {\n userSchema = simpleSchema;\n if (userSchemaOrText) {\n userData = {\n text: userSchemaOrText.substring(0, this._simpleTextMaxLength)\n };\n } else {\n userData = undefined;\n }\n } else {\n userSchema = userSchemaOrText;\n }\n\n return schemaUtil.makePayload(userSchema, userData, onlyIfBoth);\n }\n\n private _getEffectiveRootId(options?: ApiOptions): string {\n return (\n options?.instrumentationContext?.rootId ??\n this._nextGen.getDefaultInstrumentationContext().rootId\n );\n }\n\n // This is a public function for internal use only\n get internalInstrumentationContext(): InstrumentationContext {\n return this._nextGen.getDefaultInstrumentationContext();\n }\n\n /**\n *\n * @param userSchema The schema of the second argument. Also used as the basis for auto-generated\n * counters for log calls using the same schema.\n * @param userData Optional data that complies with the provided schema\n */\n log(userSchemaOrText: Schema | string, userData?: SchematizedData, options?: ApiOptions): void {\n this._safety.tryCatch(\n () => {\n const timestamp = utility.time().tsNow;\n utility.requireArgument(userSchemaOrText, 'userSchemaOrText', ['object', 'string']);\n utility.requireArgumentIfDefined(userData, 'userData', 'object');\n utility.requireArgumentIfDefined(options, 'options', 'object');\n\n const userPayload = this._wrapUserPayload(userSchemaOrText, userData);\n\n if (userPayload?.payload) {\n this._logInternal(\n this.name,\n userPayload.schema,\n userPayload.payload,\n timestamp,\n this._getEffectiveRootId(options)\n );\n }\n },\n { op: 'log' }\n );\n }\n\n protected _logInternal(\n loggerName: string,\n schema: Schema,\n data: SchematizedData,\n timestamp: number,\n rootId?: string\n ): number {\n const sequence = this._nextGen.addLog(loggerName, schema, data, timestamp, rootId);\n if (!utility.isProduction) {\n const extraFields: string[] = payloadUtility.getExtraFields(schema, data);\n if (!utility.isProduction && extraFields.length > 0) {\n this.error('Extra fields', payloadDiagsSchema, {\n extras: extraFields\n });\n }\n }\n return sequence;\n }\n\n error(\n error: unknown,\n userSchemaOrText?: Schema | string,\n userData?: SchematizedData,\n options?: ApiOptions\n ): void {\n return this._safety.tryCatch(\n () => {\n utility.requireArgumentIfDefined(userSchemaOrText, 'userSchemaOrText', [\n 'object',\n 'string'\n ]);\n utility.requireArgumentIfDefined(userData, 'userData', 'object');\n utility.requireArgumentIfDefined(options, 'options', 'object');\n\n const rootId: string = this._getEffectiveRootId(options);\n this._errorInternal(error, userSchemaOrText, userData, undefined, rootId);\n },\n { op: 'error' }\n );\n }\n\n protected _errorInternal(\n err: unknown,\n userSchemaOrText?: Schema | string,\n userData?: SchematizedData,\n activityId?: string,\n rootActivityId?: string\n ): number {\n const loggedTimestamp = utility.time().tsNow;\n\n let error: Error;\n if (err instanceof Error) {\n error = err;\n } else {\n let msg: string;\n if (err === undefined || err === null || typeof err.toString !== 'function') {\n msg = 'UNKNOWN';\n } else {\n msg = err.toString();\n }\n error = new Error(msg);\n }\n\n const userPayload = this._wrapUserPayload(userSchemaOrText, userData, true);\n\n const errorData: ErrorData = {\n name: error.name,\n message: error.message,\n stack: error.stack,\n userPayload,\n activityId\n };\n\n return this._logInternal(\n this.name,\n errorSchema,\n errorData,\n loggedTimestamp,\n rootActivityId\n );\n }\n\n startActivity(name: string, options?: ActivityStartApiOptions): Activity {\n return this._safety.tryCatchReturn(\n () => {\n utility.requireArgument(name, 'name');\n utility.requireArgumentIfDefined(options, 'options', 'object');\n\n let context: InstrumentationContext;\n let noRerooting = options?.perfStartOverride !== undefined;\n const rootId: string = options?.instrumentationContext?.rootId;\n if (rootId) {\n noRerooting = true; // root info is explicitly specified, do not override\n context = {\n rootId,\n isRootActivitySampled: options.instrumentationContext.isRootActivitySampled\n };\n } else {\n // By definition, an activity is sampled if root activity is sampled\n context = this._nextGen.getDefaultInstrumentationContext();\n }\n const activity: Activity = new ActivityImpl(\n name,\n context.rootId,\n this._onActivityStoppedCallback,\n this._onActivityErrorCallback,\n maxActivityDurationMsecs,\n options?.id,\n context.isRootActivitySampled,\n options?.perfStartOverride,\n noRerooting\n );\n return activity;\n },\n activityNoOp,\n { op: 'startActivity' }\n );\n }\n\n protected _getActivityData(detail: ActivityDetail): ActivityData {\n const userPayload = this._wrapUserPayload(detail.userSchemaOrText, detail.userData, true);\n\n return {\n id: detail.id,\n name: detail.name,\n duration: detail.stopPerfTime - detail.startPerfTime,\n stopReason: detail.stopReason,\n userPayload,\n errorCount: detail.errorCount,\n isSampled: detail.isSampled,\n timerOverridden: detail.timerOverridden,\n isRerooted: detail.isRerooted\n };\n }\n\n private _handleActivityStop(detail: ActivityDetail): void {\n if (detail.stopReason === discarded) {\n return;\n }\n\n if (!detail.isRoot && !detail.noRerooting) {\n const rahe: RootActivityHistoryEntry = this._nextGen.getRootActivityHistoryEntryByTime(\n detail.startPerfTime\n );\n if ((!rahe && detail.rootId !== undefined) || (rahe && detail.rootId !== rahe.id)) {\n detail.rootId = rahe?.id;\n detail.isSampled = rahe?.isSampled || false;\n detail.isRerooted = true;\n\n // Note: we cannot retroactively reroot activity errors\n }\n }\n\n const activityData: ActivityData = this._getActivityData(detail);\n\n this._logActivity(activityData, detail.startTimestamp, detail.rootId);\n }\n\n protected _logActivity(\n activityData: ActivityData,\n startTimestamp: number,\n rootId?: string\n ): void {\n this._logInternal(this.name, activitySchema, activityData, startTimestamp, rootId);\n }\n\n private _handleActivityError(error: unknown, detail: ActivityDetail): void {\n this._errorInternal(\n error,\n detail.userSchemaOrText,\n detail.userData,\n detail.id,\n detail.rootId\n );\n }\n\n domEvent(\n event: Event,\n handledBy: HTMLElement | LightningElement,\n userSchemaOrText?: Schema | string,\n userData?: SchematizedData,\n options?: DomEventApiOptions\n ): void {\n this._safety.tryCatch(\n () => {\n const tsNow = utility.time().tsNow;\n\n utility.requireArgument(event, 'event', [Event, MockBase]);\n // TODO: Using 'object' instead of 'LightningElement' for now (no imports)\n utility.requireArgument(handledBy, 'handledBy', [HTMLElement, 'object']);\n\n let htmlElement;\n if (handledBy instanceof HTMLElement) {\n htmlElement = handledBy;\n } else {\n handledBy = handledBy as LightningElement;\n // Convenience for LightningElement developers who pass \"this\" in handledBy.\n // Get the underlying HTML element\n if (handledBy.template?.host instanceof HTMLElement) {\n htmlElement = handledBy.template.host;\n } else {\n utility.requireArgument(undefined, 'handledBy');\n }\n }\n\n const userPayload: SchematizedPayload = this._wrapUserPayload(\n userSchemaOrText,\n userData,\n true\n );\n\n const rootId: string = this._getEffectiveRootId(options);\n\n switch (event.type) {\n case 'click': {\n const mouseEvent = event as MouseEvent;\n\n // If the user has called domEvent API on this event explicitly,\n // then we don't need to log it by default.\n const acd: AutomaticClickTracker = this._nextGen.getClickTracker();\n if (acd) {\n acd.markEventHandled(mouseEvent);\n }\n\n const captureMouse = options?.captureMouseData;\n\n // Distinguish between different fields of the oneof\n const instrumentedEvent: InstrumentedEventData =\n domEventHelpers.getInstrumentedEventData(\n captureMouse\n ? DomEventDataField.MouseEvent\n : DomEventDataField.BaseEvent,\n captureMouse\n ? domEventHelpers.getMouseEventData(mouseEvent)\n : domEventHelpers.getEventData(mouseEvent),\n htmlElement,\n userPayload\n );\n instrumentedEvent.auto = options?._auto;\n\n this._logInternal(\n this.name,\n instrumentedEventSchema,\n instrumentedEvent,\n tsNow,\n rootId\n );\n break;\n }\n default:\n throw new Error(utility.notImplemented);\n }\n },\n { op: 'domEvent' }\n );\n }\n\n private _siftTags(tags: MetricsTags): MetricsTags {\n const modTags = Object.assign({}, tags); // Need only the top level fields\n Object.entries(modTags).forEach(([key, value]) => {\n // Be more forgiving about individual tag values. Instead of throwing an exception, set the tag value to the type of the invalid value.\n if (value === null) {\n modTags[key] = 'null';\n } else if (value === '') {\n modTags[key] = 'empty';\n } else if (Number.isNaN(value)) {\n // Don't use the stand-alone isNaN function\n modTags[key] = 'NaN';\n } else {\n const type = typeof value;\n if (['number', 'string', 'boolean'].indexOf(type) === -1) {\n modTags[key] = type;\n }\n }\n });\n return modTags;\n }\n\n incrementCounter(\n operation: string,\n increment = 1,\n hasError = false,\n tags: MetricsTags = {}\n ): void {\n this._safety.tryCatch(\n () => {\n utility.requireArgument(operation, 'operation', 'string');\n utility.checkForDenyListedValues(operation, 'operation', denyListMetricNames);\n utility.checkForReservedCharacters(\n operation,\n 'operation',\n reservedMetricCharacters\n );\n utility.requireArgument(increment, 'increment', 'number');\n utility.requireArgument(hasError, 'hasError', 'boolean');\n utility.requireArgument(tags, 'tags', 'object');\n this._metrics.incrementCounter(\n operation,\n increment,\n hasError,\n this._siftTags(tags)\n );\n },\n { op: 'incrementCounter' }\n );\n }\n\n trackValue(operation: string, value: number, hasError = false, tags: MetricsTags = {}): void {\n this._safety.tryCatch(\n () => {\n utility.requireArgument(operation, 'operation', 'string');\n utility.checkForDenyListedValues(operation, 'operation', denyListMetricNames);\n utility.checkForReservedCharacters(\n operation,\n 'operation',\n reservedMetricCharacters\n );\n utility.requireArgument(value, 'value', 'number');\n utility.requireArgument(hasError, 'hasError', 'boolean');\n utility.requireArgument(tags, 'tags', 'object');\n this._metrics.trackValue(operation, value, hasError, this._siftTags(tags));\n },\n { op: 'trackValue' }\n );\n }\n\n bucketValue(\n operation: string,\n value: number,\n buckets: number[] = [],\n hasError = false,\n tags: MetricsTags = {}\n ): void {\n this._safety.tryCatch(\n () => {\n utility.requireArgument(operation, 'operation', 'string');\n utility.checkForDenyListedValues(operation, 'operation', denyListMetricNames);\n utility.checkForReservedCharacters(\n operation,\n 'operation',\n reservedMetricCharacters\n );\n utility.requireArgument(value, 'value', 'number');\n utility.requireArgument(buckets, 'buckets', Array);\n Object.entries(buckets).forEach(([key, value]) => {\n utility.requireArgument(value, `Bucket value for '${key}'`, 'number');\n });\n utility.requireArgument(hasError, 'hasError', 'boolean');\n utility.requireArgument(tags, 'tags', 'object');\n this._metrics.bucketValue(\n operation,\n value,\n buckets,\n hasError,\n this._siftTags(tags)\n );\n },\n { op: 'bucketValue' }\n );\n }\n\n getUpCounters(): Metric<number>[] {\n return this._metrics.getUpCounters().filter((m) => m.getLastUpdatedOn());\n }\n\n getValueRecorders(): Metric<number[]>[] {\n return this._metrics.getValueRecorders().filter((m) => m.getLastUpdatedOn());\n }\n\n getBucketHistograms(): BucketMetric<number[]>[] {\n return this._metrics.getBucketHistograms().filter((m) => m.getLastUpdatedOn());\n }\n\n registerForLogPrompt(listener: LogPromptListener): void {\n utility.requireArgument(listener, 'listener', 'function');\n this._nextGen.registerForLogPrompt(listener);\n }\n\n _getAsaOptions(options?: ActivityApiOptions): ActivityStartApiOptions {\n return options\n ? Object.assign(\n {\n instrumentationContext: options?.instrumentationContext\n },\n options.startOptions\n )\n : undefined;\n }\n\n activity<T>(name: string, execute: (act: Activity) => T, options?: ActivityApiOptions): T {\n const asaOptions: ActivityStartApiOptions = this._getAsaOptions(options);\n const act = this.startActivity(name, asaOptions);\n try {\n return execute(act);\n } catch (err) {\n act.error(err, options?.errorPayload?.schema, options?.errorPayload?.payload);\n throw err;\n } finally {\n act.stop(\n options?.stopPayload?.schema,\n options?.stopPayload?.payload,\n options?.stopOptions\n );\n }\n }\n\n async activityAsync<T>(\n name: string,\n execute: (act: Activity) => Promise<T>,\n options?: ActivityApiOptions\n ): Promise<T> {\n const asaOptions: ActivityStartApiOptions = this._getAsaOptions(options);\n const act = this.startActivity(name, asaOptions);\n try {\n return await execute(act);\n } catch (err) {\n act.error(err, options?.errorPayload?.schema, options?.errorPayload?.payload);\n throw err;\n } finally {\n act.stop(\n options?.stopPayload?.schema,\n options?.stopPayload?.payload,\n options?.stopOptions\n );\n }\n }\n}\n","import { utility } from 'o11y/shared';\nimport { RootActivityHistoryEntry } from '../types/RootActivityHistoryEntry';\n\nconst GRACE = 0.1; // 10%\nconst DEFAULT_LIMIT = 20; // Must be a positive number\n\nexport class RootActivityHistoryImpl {\n private readonly _historyMap = new Map<string, RootActivityHistoryEntry>();\n private readonly _historyList = new Array<RootActivityHistoryEntry>();\n private readonly _graceCount: number;\n private readonly _realLimit: number;\n\n constructor(limit?: number) {\n if (utility.requireArgumentIfDefined(limit, 'limit', 'number')) {\n limit = Math.ceil(limit);\n if (limit <= 0) {\n throw new Error('Limit must be a positive number');\n }\n } else {\n limit = DEFAULT_LIMIT;\n }\n this._graceCount = Math.max(1, Math.floor(limit * GRACE));\n\n // We add one to the limit because we will never delete the first root activity.\n this._realLimit = 1 + limit + this._graceCount;\n }\n\n add(entry: RootActivityHistoryEntry): void {\n if (this._historyMap.has(entry.id)) {\n throw new Error(\n `RootActivityHistoryImpl.add: entry already exists for rootId: ${entry.id}`\n );\n }\n\n this._historyMap.set(entry.id, entry);\n this._historyList.push(entry);\n\n if (this._historyList.length === this._realLimit) {\n // Start deleting from the second element because the first root activity\n // tends to be special.\n const removed = this._historyList.splice(1, this._graceCount);\n removed.forEach((e) => this._historyMap.delete(e.id));\n }\n }\n\n get count(): number {\n return this._historyList.length;\n }\n\n findById(rootId: string): RootActivityHistoryEntry {\n return this._historyMap.get(rootId);\n }\n\n findByTime(atTime: number): RootActivityHistoryEntry {\n let closest: RootActivityHistoryEntry;\n let closestDiff = Number.MAX_VALUE;\n\n // We have to iterate all the elements because we can't rely on an implicit sort\n // order of time of add, as the start time can be modified at any time.\n for (const entry of this._historyList) {\n const startDelta = atTime - entry.startPerfTime;\n const isDuringRoot =\n startDelta >= 0 &&\n (entry.stopPerfTime === undefined || atTime < entry.stopPerfTime);\n if (isDuringRoot && startDelta < closestDiff) {\n closest = entry;\n closestDiff = startDelta;\n }\n }\n return closest;\n }\n}\n","import { RootActivity, Schema } from '../interfaces';\nimport { ActivityDetail } from '../interfaces/ActivityDetail';\nimport { ActivityImpl, onActivityError, onActivityStop } from './ActivityImpl';\nimport { SchematizedData, utility } from 'o11y/shared';\n\nexport class RootActivityImpl extends ActivityImpl implements RootActivity {\n constructor(\n name: string,\n onStopped: onActivityStop,\n onError: onActivityError,\n rootId?: string,\n isSampled?: boolean,\n startPerfTime?: number,\n generatedRootIdLength?: number // Used only if rootId isn't specified\n ) {\n super(\n name,\n undefined,\n onStopped,\n onError,\n undefined,\n rootId || utility.generateUniqueId(generatedRootIdLength ?? 32),\n isSampled,\n startPerfTime\n );\n this._isRoot = true;\n }\n\n private _preRootId: string;\n get preRootId(): string {\n return this._preRootId;\n }\n set preRootId(value: string) {\n this._preRootId = value;\n }\n\n protected _getDetail(userSchema: Schema, userData: SchematizedData): ActivityDetail {\n const detail = super._getDetail(userSchema, userData);\n detail.isRoot = true;\n detail.preRootId = this.preRootId;\n return detail;\n }\n}\n","import { RootActivity, TracingHeadersOptions } from '../interfaces';\n\nconst rootId: string = new Array(32).fill(0).join('');\nclass RootActivityNoOp implements RootActivity {\n getId(): string {\n return rootId;\n }\n getRootId(): string {\n return undefined;\n }\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n error(): void {}\n\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n stop(): void {}\n\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n discard(): void {}\n\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n terminate(): void {}\n\n getIsSampled(): boolean {\n return false;\n }\n getTraceHeaders(__options: TracingHeadersOptions): Record<string, string> {\n return {};\n }\n getStartTimestamp(): number {\n return undefined;\n }\n getStartPerfTime(): number {\n return undefined;\n }\n getStopPerfTime(): number {\n return undefined;\n }\n getErrorCount(): number {\n return 0;\n }\n}\n\nexport const rootActivityNoOp = Object.freeze(new RootActivityNoOp());\n","import { utility } from 'o11y/shared';\n\nimport { ActivityDetail, ActivityStartOptions, RootActivity } from '../interfaces';\nimport { ActivityData } from '../interfaces-private';\nimport { RootActivityHistoryEntry } from '../types/RootActivityHistoryEntry';\nimport { discarded, onActivityStop } from './ActivityImpl';\nimport { InstrumentationImpl } from './InstrumentationImpl';\nimport { MetricsImpl } from './MetricsImpl';\nimport { NextgenImpl } from './NextgenImpl';\nimport { RootActivityHistoryImpl } from './RootActivityHistoryImpl';\nimport { RootActivityImpl } from './RootActivityImpl';\nimport { rootActivityNoOp } from './RootActivityNoOp';\n\nexport class AppInstrumentationImpl extends InstrumentationImpl {\n private _singleRootActivity: RootActivityImpl; // Not used when _allowMulti = true\n private _rootActivityHistory = new RootActivityHistoryImpl();\n\n private readonly _onRootActivityStoppedCallback: onActivityStop =\n this._handleRootActivityStop.bind(this);\n\n constructor(_nextGen: NextgenImpl, _name: string, private readonly _allowMulti: boolean) {\n super(_nextGen, _name);\n }\n\n startRootActivity(\n name: string,\n rootId?: string,\n isSampled?: boolean,\n options?: ActivityStartOptions\n ): RootActivity {\n return this._safety.tryCatchReturn(\n () => {\n utility.requireArgument(name, 'name');\n\n if (options?.id !== undefined) {\n throw new Error(\n 'Cannot specify id for root activity, use rootId argument instead'\n );\n }\n\n const newRootActivity = new RootActivityImpl(\n name,\n this._onRootActivityStoppedCallback,\n this._onActivityErrorCallback,\n rootId,\n isSampled,\n options?.perfStartOverride,\n this._nextGen.preferredRootIdLength\n );\n\n if (!this._allowMulti) {\n const entry: RootActivityHistoryEntry = {\n id: newRootActivity.getId(),\n name,\n startPerfTime: newRootActivity.getStartPerfTime(),\n isSampled: newRootActivity.getIsSampled()\n };\n this._rootActivityHistory.add(entry);\n\n if (this._singleRootActivity && !this._singleRootActivity.isStopped) {\n const preRootId = this._singleRootActivity.getId();\n this._singleRootActivity.terminate();\n newRootActivity.preRootId = preRootId;\n }\n this._singleRootActivity = newRootActivity;\n }\n\n return newRootActivity as RootActivity;\n },\n rootActivityNoOp,\n { op: 'startRootActivity' }\n );\n }\n\n private _handleRootActivityStop(detail: ActivityDetail): void {\n // If we are here, this is the first time the activity is being stopped.\n\n const historyEntry = this._rootActivityHistory.findById(detail.id);\n if (historyEntry) {\n historyEntry.stopPerfTime = detail.stopPerfTime;\n // Also, do the fields that may be overridden at stop time.\n historyEntry.startPerfTime = detail.startPerfTime;\n }\n\n if (detail.stopReason === discarded) {\n return;\n }\n\n const activityData: ActivityData = this._getActivityData(detail);\n\n this._logActivity(activityData, detail.startTimestamp);\n this._singleRootActivity = undefined;\n }\n\n protected _getActivityData(detail: ActivityDetail): ActivityData {\n const activityData: ActivityData = super._getActivityData(detail);\n activityData.isRoot = detail.isRoot;\n activityData.preRootId = detail.preRootId;\n return activityData;\n }\n\n getSingleRootActivityId(): string {\n return this._singleRootActivity?.getId();\n }\n\n isSingleRootActivitySampled(): boolean {\n return this._singleRootActivity?.getIsSampled();\n }\n\n protected _initMetrics(): MetricsImpl {\n return new MetricsImpl(this.name, () => this.name);\n }\n\n getRootActivityHistoryEntry(atTime: number): RootActivityHistoryEntry {\n return this._rootActivityHistory.findByTime(atTime);\n }\n}\n","import { Instrumentation } from '../interfaces';\nimport { utility } from 'o11y/shared';\n\nconst pathLimit = 5;\n\nexport class AutomaticClickTracker {\n private _ignoredEvent: Event;\n private _isActive = false;\n private readonly _boundClickListener = this._clickListener.bind(this);\n\n constructor(private readonly _instr: Instrumentation, private readonly _doc: Document) {\n utility.requireArgument(_instr, '_instr');\n utility.requireArgument(_doc, '_doc');\n }\n\n activate(): void {\n if (!this._isActive) {\n this._doc.addEventListener('click', this._boundClickListener, true);\n this._isActive = true;\n }\n }\n\n deactivate(): void {\n if (this._isActive) {\n this._doc.removeEventListener('click', this._boundClickListener, true);\n this._isActive = false;\n }\n }\n\n markEventHandled(event: MouseEvent): void {\n this._ignoredEvent = event;\n }\n\n private _clickListener(event: MouseEvent): void {\n let eventTargets: EventTarget[] = event.composedPath?.();\n if (!eventTargets || !eventTargets.length) {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n eventTargets = (event as any).path;\n }\n const handledBy: HTMLElement = this._getClickableElement(eventTargets);\n\n if (handledBy) {\n // Immediate\n setTimeout(() => {\n if (event !== this._ignoredEvent) {\n this._instr.domEvent(event, handledBy, undefined, undefined, {\n _auto: true\n });\n }\n });\n }\n }\n\n private _getClickableElement(path: EventTarget[]): HTMLElement {\n const limit = path ? Math.min(path.length, pathLimit) : 0;\n for (let x = 0; x < limit; x += 1) {\n const currentElement = path[x] as HTMLElement;\n const tagName = currentElement.tagName?.toLowerCase();\n if (tagName === 'a' || tagName === 'button') {\n return currentElement;\n }\n if (tagName === 'input') {\n const inputElement = currentElement as HTMLInputElement;\n if (inputElement.type?.toLowerCase() === 'button') {\n return inputElement;\n }\n }\n }\n return undefined;\n }\n}\n","import { utility } from 'o11y/shared';\nimport { Communicator } from '../interfaces';\nimport { SenderLogMessage, SenderMetricsMessage } from '../interfaces-private';\nimport {\n MESSAGE_TYPE_LOG,\n MESSAGE_TYPE_METRICS,\n MESSAGE_TYPE_HANDSHAKE,\n MessageChannelData\n} from './SenderConnector';\n\nexport const MESSAGE_FROM_RECEIVER = 'o11y:receiver';\n\nexport type LogCallback = (log: SenderLogMessage) => void;\nexport type MetricsCallback = (metric: SenderMetricsMessage) => void;\n\nexport type CommErrorInfo = {\n data: unknown;\n};\n// This callback will be called if we receive data that can't be serialized.\nexport type CommErrorCallback = () => void;\n\nenum CommState {\n Unknown,\n Opening\n}\n\ntype CommStatus = {\n state: CommState;\n port: MessagePort;\n};\n\nexport class ReceiverConnector {\n private _senders: Map<Communicator, CommStatus> = new Map();\n\n constructor(\n private readonly _logCallback: LogCallback,\n private readonly _metricsCallback: MetricsCallback,\n private readonly _commErrorCallback: CommErrorCallback\n ) {\n utility.requireArgument(this._logCallback, '_logCallback', 'function');\n utility.requireArgument(this._metricsCallback, '_metricsCallback', 'function');\n utility.requireArgument(this._commErrorCallback, '_commErrorCallback', 'function');\n }\n\n public openComms(sender: Communicator): void {\n utility.requireArgument(sender, 'sender', 'object');\n\n if (!this._senders.has(sender)) {\n const messageChannel = new MessageChannel();\n\n const status: CommStatus = {\n state: CommState.Opening,\n port: messageChannel.port1\n };\n this._senders.set(sender, status);\n\n status.port.onmessage = this._messagePortEventHandler.bind(this);\n // According to the docs, this error occurs on the receiving end.\n status.port.onmessageerror = this._messagePortErrorHandler.bind(this);\n\n sender.postMessage(\n {\n from: MESSAGE_FROM_RECEIVER,\n type: MESSAGE_TYPE_HANDSHAKE\n },\n '*',\n [messageChannel.port2]\n );\n }\n }\n\n public closeComms(sender: Communicator): void {\n const status = this._senders.get(sender);\n if (status) {\n status.port.onmessage = undefined;\n status.port.onmessageerror = undefined;\n this._senders.delete(sender);\n }\n }\n\n private _messagePortEventHandler(e: MessageEvent<MessageChannelData>): void {\n if (e.data.type === MESSAGE_TYPE_LOG) {\n this._logCallback(e.data.data as SenderLogMessage);\n } else if (e.data.type === MESSAGE_TYPE_METRICS) {\n this._metricsCallback(e.data.data as SenderMetricsMessage);\n }\n }\n\n private _messagePortErrorHandler(): void {\n // Not passing any error info for now\n this._commErrorCallback();\n }\n}\n","import { utility } from 'o11y/shared';\nimport { AllowedOrigins, Communicator } from '../interfaces';\nimport { SenderLogMessage, SenderMetricsMessage } from '../interfaces-private';\nimport { MESSAGE_FROM_RECEIVER } from './ReceiverConnector';\n\nexport const MESSAGE_FROM_SENDER = 'o11y:sender';\nexport const MESSAGE_TYPE_HANDSHAKE = 'handshake';\nexport const MESSAGE_TYPE_LOG = 'log';\nexport const MESSAGE_TYPE_METRICS = 'metrics';\n\nexport type HandshakeData = {\n from: string;\n type: string;\n};\n\nexport type MessageChannelData = {\n // No need for from here.\n type: string;\n data: SenderLogMessage | SenderMetricsMessage;\n};\n\n// This is typically the iframe\nexport class SenderConnector {\n private readonly _messageEventHandlerFunc = this._messageEventHandler.bind(this);\n private _otherPort: MessagePort;\n private _handshakeComplete = false;\n private _logBuffer: SenderLogMessage[] = [];\n private _metricsBuffer: SenderMetricsMessage[] = [];\n\n constructor(\n private readonly _self: Communicator,\n private readonly _allowedOrigins?: AllowedOrigins\n ) {\n utility.requireArgument(this._self, '_self', 'object');\n utility.requireArgumentIfDefined(_allowedOrigins, 'allowedOrigins', Array);\n\n // Start listening to handshake return\n this._self.addEventListener('message', this._messageEventHandlerFunc);\n }\n\n private _messageEventHandler(e: MessageEvent<HandshakeData>): void {\n // When the receiever sends the handshake, it's ready to receive data\n if (\n e.data.from === MESSAGE_FROM_RECEIVER &&\n e.data.type === MESSAGE_TYPE_HANDSHAKE &&\n e.ports[0] instanceof MessagePort &&\n utility.isAllowedOrigin(e.origin, this._allowedOrigins)\n ) {\n this._handshakeComplete = true;\n this._self.removeEventListener('message', this._messageEventHandlerFunc);\n this._otherPort = e.ports[0];\n this._emptyBuffers();\n }\n }\n\n public sendLog(log: SenderLogMessage): void {\n if (!this._handshakeComplete) {\n this._logBuffer.push(log);\n } else {\n this._otherPort.postMessage({\n type: MESSAGE_TYPE_LOG,\n data: log\n });\n }\n }\n\n public sendMetrics(metrics: SenderMetricsMessage): void {\n if (!this._handshakeComplete) {\n this._metricsBuffer.push(metrics);\n } else {\n this._otherPort.postMessage({\n type: MESSAGE_TYPE_METRICS,\n data: metrics\n });\n }\n }\n\n private _emptyBuffers(): void {\n this._logBuffer.forEach((log) => this.sendLog(log));\n this._metricsBuffer.forEach((metrics) => this.sendMetrics(metrics));\n this._logBuffer = undefined;\n this._metricsBuffer = undefined;\n }\n}\n","import { metricsUtility, UpCounterImpl } from 'o11y/shared';\nimport { BucketMetric, Metric, MetricsReporter } from '../interfaces';\nimport {\n BucketHistogram,\n SenderMetricsMessage,\n UpCounter,\n ValueRecorder\n} from '../interfaces-private';\nimport { BucketHistogramImpl } from './BucketHistogramImpl';\nimport { ValueRecorderImpl } from './ValueRecorderImpl';\n\nexport class MetricsStore implements MetricsReporter {\n private _upCounters: UpCounterImpl[] = [];\n private _valueRecorders: ValueRecorderImpl[] = [];\n private _bucketHistograms: BucketHistogramImpl[] = [];\n\n add(senderMetrics: SenderMetricsMessage): void {\n if (senderMetrics.upCounters?.length) {\n this._upCounters.push(\n ...senderMetrics.upCounters.map(\n (it: UpCounter) =>\n new UpCounterImpl(\n it.name,\n it.ownerName,\n it.ownerAppName,\n metricsUtility.getMetricsTags(it.tags),\n it.createdTimestamp,\n it.lastUpdatedTimestamp,\n it.value\n )\n )\n );\n }\n\n if (senderMetrics.valueRecorders?.length) {\n this._valueRecorders.push(\n ...senderMetrics.valueRecorders.map(\n (it: ValueRecorder) =>\n new ValueRecorderImpl(\n it.name,\n it.ownerName,\n it.ownerAppName,\n metricsUtility.getMetricsTags(it.tags),\n it.createdTimestamp,\n it.lastUpdatedTimestamp,\n it.values\n )\n )\n );\n }\n\n if (senderMetrics.bucketHistograms?.length) {\n this._bucketHistograms.push(\n ...senderMetrics.bucketHistograms.map(\n (it: BucketHistogram) =>\n new BucketHistogramImpl(\n it.name,\n it.ownerName,\n it.ownerAppName,\n metricsUtility.getMetricsTags(it.tags),\n it.buckets,\n it.createdTimestamp,\n it.lastUpdatedTimestamp,\n it.values\n )\n )\n );\n }\n }\n\n getUpCounters(): Metric<number>[] {\n // Remove any metrics that have been reset from before\n this._upCounters = this._upCounters.filter((i) => i.getLastUpdatedOn() !== undefined);\n return this._upCounters;\n }\n getValueRecorders(): Metric<number[]>[] {\n // Remove any metrics that have been reset from before\n this._valueRecorders = this._valueRecorders.filter(\n (i) => i.getLastUpdatedOn() !== undefined\n );\n return this._valueRecorders;\n }\n getBucketHistograms(): BucketMetric<number[]>[] {\n // Remove any metrics that have been reset from before\n this._bucketHistograms = this._bucketHistograms.filter(\n (i) => i.getLastUpdatedOn() !== undefined\n );\n return this._bucketHistograms;\n }\n}\n","import { SchematizedData, metricsUtility, utility } from 'o11y/shared';\nimport { SenderLogMessage, SenderMetricsMessage } from '../interfaces-private';\nimport {\n LogCollector,\n LogMeta,\n MetricsCollector,\n MetricsExtractorMethods,\n Schema\n} from '../interfaces';\nimport { SenderConnector } from '../library/SenderConnector';\n\nexport const DEFAULT_POLL_INTERVAL = 1000;\n\nexport class SenderCollector implements LogCollector, MetricsCollector {\n private readonly _pollInterval: number = DEFAULT_POLL_INTERVAL;\n private _metricsExtractors: MetricsExtractorMethods;\n\n constructor(private readonly _connector: SenderConnector, _pollInterval?: number) {\n utility.requireArgument(_connector, '_connector', 'object');\n if (\n utility.requireArgumentIfDefined(_pollInterval, '_pollInterval', 'number') &&\n _pollInterval > 0\n ) {\n this._pollInterval = _pollInterval;\n }\n }\n\n collect(schema: Schema, data: SchematizedData, logMeta: LogMeta): void {\n const msg: SenderLogMessage = {\n schema,\n data,\n logMeta\n };\n\n this._connector.sendLog(msg);\n }\n\n receiveMetricsExtractors(extractors: MetricsExtractorMethods): void {\n this._metricsExtractors = extractors;\n\n // Send metrics immediately after receiving extractors\n this._collectAndSendMetrics();\n setInterval(this._collectAndSendMetrics.bind(this), this._pollInterval);\n }\n\n private _collectAndSendMetrics(): void {\n const metrics: SenderMetricsMessage = {\n upCounters: metricsUtility.getUpCounters(this._metricsExtractors.getAllUpCounters()),\n valueRecorders: metricsUtility.getValueRecorders(\n this._metricsExtractors.getAllValueRecorders()\n ),\n bucketHistograms: metricsUtility.getBucketHistograms(\n this._metricsExtractors.getAllBucketHistograms()\n )\n };\n\n if (\n metrics.upCounters.length ||\n metrics.valueRecorders.length ||\n metrics.bucketHistograms.length\n ) {\n this._connector.sendMetrics(metrics);\n }\n }\n}\n","import {\n co11y,\n LogPromptListener,\n payloadUtility,\n SchematizedData,\n schemaUtil,\n utility\n} from 'o11y/shared';\nimport {\n BucketMetric,\n BufferedLog,\n IdleDetector,\n Instrumentation,\n InstrumentationContext,\n InstrumentedAppMethods,\n InstrumentedAppOptions,\n LogCollector,\n LogCollectorOptions,\n LogMeta,\n Metric,\n MetricsCollector,\n Nextgen,\n OperationMode,\n OperationModeDetector,\n PayloadProvider,\n PayloadProviderArgs,\n Schema\n} from '../interfaces';\nimport { SenderLogMessage, SenderMetricsMessage } from 'src/interfaces-private';\nimport { AppInstrumentationImpl } from './AppInstrumentationImpl';\nimport { AutomaticClickTracker } from './AutomaticClickTracker';\nimport { InstrumentationImpl } from './InstrumentationImpl';\nimport { Tracing } from './Tracing';\nimport { SenderConnector } from './SenderConnector';\nimport { MetricsStore } from './MetricsStore';\nimport { SenderCollector } from '../sender_collector/SenderCollector';\nimport { ReceiverConnector } from './ReceiverConnector';\nimport { RootActivityHistoryEntry } from 'src/types/RootActivityHistoryEntry';\n\nconst maxInstrumentationLength = 80;\nconst defaultRootIdLength = 32;\nconst truncatedText = '_CUT';\nconst maxInstrumentationLengthBeforeTruncated = maxInstrumentationLength - truncatedText.length;\n\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nfunction noOpFunc(): void {}\n\nexport class NextgenImpl implements Nextgen {\n private readonly _logCollectors = new Set<LogCollector>();\n private readonly _instruments = new Map<string, InstrumentationImpl | AppInstrumentationImpl>();\n private readonly _seqBySchema = new Map<string, number>();\n private _sequence = 0;\n private _appInstr: AppInstrumentationImpl;\n private _autoClickTracker: AutomaticClickTracker;\n private _metricsCollector: MetricsCollector;\n private _appPayloadProvider: PayloadProvider;\n private _pagePayloadProvider: PayloadProvider;\n private _forceDisabledLogCollectors = new Set<LogCollector>();\n private _logCollectorFailures = new Map<LogCollector, number>();\n private static _collectorFailureLimit = 5;\n private _isBufferingEnabled = false;\n private _buffer: BufferedLog[] = [];\n private readonly _logCollectionListeners = new Set<LogPromptListener>();\n private _clientSessionId: string;\n private _opMode: OperationMode = 'default';\n private _isSender = false;\n private _isReceiver = false;\n private _metricsStore: MetricsStore;\n private _receiverConnector: ReceiverConnector;\n private _decimalPoints: number | null = 2;\n private _preferredRootIdLength: number;\n\n get preferredRootIdLength(): number {\n return this._preferredRootIdLength;\n }\n\n get pagePayloadProvider(): PayloadProvider {\n return this._pagePayloadProvider;\n }\n set pagePayloadProvider(provider: PayloadProvider) {\n this._pagePayloadProvider = provider;\n }\n\n get appPayloadProvider(): PayloadProvider {\n return this._appPayloadProvider;\n }\n set appPayloadProvider(provider: PayloadProvider) {\n this._appPayloadProvider = provider;\n }\n\n constructor(private readonly _idleDetector: IdleDetector) {}\n\n registerApp(name: string, options?: InstrumentedAppOptions): InstrumentedAppMethods {\n utility.requireArgument(name, 'name', 'string');\n if (this._appInstr) {\n throw new Error('An app has already been registered with instrumentation.');\n }\n const instr = this._instruments.get(name);\n if (instr) {\n throw new Error(`The instrumentation name ${name} is already taken`);\n }\n co11y.setOwnerAppName(name);\n\n this._initOpMode(options?.operationMode);\n this._isSender = this._opMode === 'sender';\n this._isReceiver = this._opMode === 'receiver';\n\n if (options?.decimalPoints !== undefined) {\n this._decimalPoints = options.decimalPoints;\n }\n\n this._preferredRootIdLength = options?.preferredRootIdLength ?? defaultRootIdLength;\n\n this._clientSessionId = options?.clientSessionId?.toString() || utility.generateUniqueId();\n this._appInstr = new AppInstrumentationImpl(\n this,\n name,\n options?.allowMultipleRootActivities\n );\n this._instruments.set(name, this._appInstr);\n\n if (this._isSender) {\n const senderCollector = new SenderCollector(\n new SenderConnector(window, options?.allowedReceiverOrigins),\n options?.senderMetricsPollingInterval\n );\n this.registerLogCollector(senderCollector);\n this.registerMetricsCollector(senderCollector);\n } else if (this._isReceiver) {\n this._metricsStore = new MetricsStore();\n\n this._receiverConnector = new ReceiverConnector(\n (msg: SenderLogMessage) => {\n msg.logMeta.receiverClientSessionId = this._clientSessionId;\n msg.logMeta.receiverRootId = this._appInstr.getSingleRootActivityId();\n\n this._multiplex(msg.schema, msg.data, msg.logMeta);\n },\n (msg: SenderMetricsMessage) => {\n this._metricsStore.add(msg);\n },\n () => {\n this._appInstr.incrementCounter('o11y-error-receiver', 1, true);\n }\n );\n }\n\n // Skip buffering if sender mode is enabled\n this._isBufferingEnabled = !this._isSender && options?.enableBuffering;\n\n const tracing = new Tracing(this.getInstrumentation('Network'), this._idleDetector);\n\n return {\n log: this._appInstr.log.bind(this._appInstr),\n error: this._appInstr.error.bind(this._appInstr),\n startActivity: this._appInstr.startActivity.bind(this._appInstr),\n domEvent: this._appInstr.domEvent.bind(this._appInstr),\n incrementCounter: this._appInstr.incrementCounter.bind(this._appInstr),\n trackValue: this._appInstr.trackValue.bind(this._appInstr),\n bucketValue: this._appInstr.bucketValue.bind(this._appInstr),\n networkInstrumentation: tracing.networkInstrumentation.bind(tracing),\n registerForLogPrompt: this._appInstr.registerForLogPrompt.bind(this._appInstr),\n activity: this._appInstr.activity.bind(this._appInstr),\n activityAsync: this._appInstr.activityAsync.bind(this._appInstr),\n\n startRootActivity: this._appInstr.startRootActivity.bind(this._appInstr),\n registerLogCollector: this._isSender ? noOpFunc : this.registerLogCollector.bind(this),\n registerMetricsCollector: this._isSender\n ? noOpFunc\n : this.registerMetricsCollector.bind(this),\n activateClickTracker: this.activateClickTracker.bind(this),\n deactivateClickTracker: this.deactivateClickTracker.bind(this),\n disableBuffering: this.disableBuffering.bind(this),\n promptLogCollection: this.promptLogCollection.bind(this),\n getClientSessionId: this.getClientSessionId.bind(this),\n\n getOperationMode: this.getOperationMode.bind(this),\n startReceiving: this._isReceiver\n ? this._receiverConnector.openComms.bind(this._receiverConnector)\n : noOpFunc,\n stopReceiving: this._isReceiver\n ? this._receiverConnector.closeComms.bind(this._receiverConnector)\n : noOpFunc\n };\n }\n\n getInstrumentation(name: string): Instrumentation {\n utility.requireArgument(name, 'name', 'string');\n if (name.length > maxInstrumentationLength) {\n // don't throw if it's too long. just add truncated suffix, but stay within max length\n name = name.substring(0, maxInstrumentationLengthBeforeTruncated) + truncatedText;\n }\n let instr: InstrumentationImpl | AppInstrumentationImpl = this._instruments.get(name);\n if (!instr) {\n instr = new InstrumentationImpl(this, name);\n this._instruments.set(name, instr);\n } else if (instr === this._appInstr) {\n throw new Error(`The instrumentation name ${name} is being used by the app.`);\n }\n return instr;\n }\n\n get appName(): string {\n return this._appInstr?.name;\n }\n\n getRootActivityHistoryEntryByTime(atTime: number): RootActivityHistoryEntry {\n return this._appInstr?.getRootActivityHistoryEntry(atTime);\n }\n\n // This is an internal method that needs to be public\n addLog(\n loggerName: string,\n schema: Schema,\n data: SchematizedData,\n timestamp: number,\n rootId: string\n ): number {\n payloadUtility.checkInputs(schema, data);\n this._sequence += 1;\n\n // Schema sequences are per user-defined schema, not internal ones such as ActivityData\n const isInternal = schemaUtil.isInternal(schema);\n const userSchema = isInternal && data?.userPayload ? data.userPayload.schema : schema;\n const schemaId = schemaUtil.getSchemaId(userSchema);\n let schemaSequence = this._seqBySchema.get(schemaId) || 0;\n schemaSequence += 1;\n this._seqBySchema.set(schemaId, schemaSequence);\n\n const logMeta: LogMeta = {\n timestamp,\n rootId,\n sequence: this._sequence,\n schemaSequence,\n loggerName,\n pagePayload: undefined,\n appPayload: undefined,\n loggerAppName: this.appName,\n connectionType: utility.getConnectionType(),\n clientSessionId: this._clientSessionId,\n // Calculate age here rather than later to ensure we use the timeOrigin where the log was created (e.g. sender or receiver)\n age: utility.getAge(timestamp)\n };\n\n const payloadArgs: PayloadProviderArgs = {\n schema,\n data,\n logMeta\n };\n\n // We want the appPayloadProvider to have access to the pagePayload via logMeta, so the order is important.\n // We are not cloning the pagePayload and appPayload like we used to because they are\n // provided by trusted entities of the app: The payloadArgs object must not be mutated,\n // although *careful* mutation of the underlying data and logMeta objects is allowed.\n logMeta.pagePayload = payloadUtility.getPayloadFromProvider(\n this.pagePayloadProvider,\n payloadArgs\n );\n logMeta.appPayload = payloadUtility.getPayloadFromProvider(\n this.appPayloadProvider,\n payloadArgs\n );\n\n if (!this._isSender) {\n // Make a copy of the data once, lest they get mutated by the caller\n // This is not needed for sender mode since the data is already serialized\n data = utility.clone(data);\n }\n\n if (typeof this._decimalPoints === 'number') {\n utility.roundNumbersInObject(data, this._decimalPoints);\n if (isInternal) {\n utility.roundNumbersInObject(data.userPayload?.payload, this._decimalPoints);\n }\n utility.roundNumbersInObject(logMeta.pagePayload?.payload, this._decimalPoints);\n utility.roundNumbersInObject(logMeta.appPayload?.payload, this._decimalPoints);\n }\n\n if (this._isBufferingEnabled) {\n const bufferedLog: BufferedLog = {\n schema,\n data,\n logMeta\n };\n // Always push to the buffer, even if no eligible collectors\n this._buffer.push(bufferedLog);\n }\n\n this._multiplex(schema, data, logMeta);\n return this._sequence;\n }\n\n private _multiplex(schema: Schema, data: SchematizedData, logMeta: LogMeta): void {\n const eligibleCollectors: LogCollector[] = Array.from(this._logCollectors).filter(\n (collector: LogCollector) =>\n !this._forceDisabledLogCollectors.has(collector) &&\n !collector.getIsCollectDisabled?.()\n );\n\n if (eligibleCollectors.length > 0) {\n for (const collector of eligibleCollectors) {\n // Not cloning the data for each collector (like we used to) as they are trusted entities of the app\n let failures: number = this._logCollectorFailures.get(collector) || 0;\n\n try {\n collector.collect(schema, data, logMeta);\n // if it got here it means it succeeded/didn't throw so we want to decrement the failure count\n if (failures > 0) {\n this._logCollectorFailures.set(collector, failures - 1);\n }\n } catch (err) {\n failures += 1;\n // If a collector fails too much we just disable it\n if (failures >= NextgenImpl._collectorFailureLimit) {\n this._forceDisabledLogCollectors.add(collector);\n if (this._appInstr && (typeof err === 'string' || err instanceof Error)) {\n this._appInstr.error(err);\n }\n } else {\n this._logCollectorFailures.set(collector, failures);\n // We can't log an error here, or the same collector will immediately be called\n // again, likely resulting in repeat exceptions until the collector gets disabled.\n }\n }\n }\n }\n }\n\n getBuffer(): BufferedLog[] {\n return this._buffer;\n }\n\n disableBuffering(): void {\n this._isBufferingEnabled = false;\n this._buffer = [];\n }\n\n getClickTracker(): AutomaticClickTracker {\n return this._autoClickTracker;\n }\n\n getDefaultInstrumentationContext(): InstrumentationContext {\n return {\n rootId: this._appInstr?.getSingleRootActivityId(),\n isRootActivitySampled: this._appInstr?.isSingleRootActivitySampled()\n };\n }\n\n activateClickTracker(): void {\n if (typeof document !== 'undefined') {\n if (!this._autoClickTracker) {\n this._autoClickTracker = new AutomaticClickTracker(this._appInstr, document);\n }\n this._autoClickTracker.activate();\n }\n }\n\n deactivateClickTracker(): void {\n if (this._autoClickTracker) {\n this._autoClickTracker.deactivate();\n // In case activateClickTracker is called later with a different instrumentation\n this._autoClickTracker = undefined;\n }\n }\n\n registerLogCollector(collector: LogCollector, options?: LogCollectorOptions): void {\n utility.requireArgument(collector, 'collector');\n if (this._logCollectors.has(collector)) {\n return;\n }\n this._logCollectors.add(collector);\n this._logCollectorFailures.set(collector, 0);\n if (\n (!collector.getIsCollectDisabled || !collector.getIsCollectDisabled()) &&\n options?.retroactive\n ) {\n for (const log of this._buffer) {\n collector.collect(log.schema, log.data, log.logMeta);\n }\n }\n }\n\n registerMetricsCollector(collector: MetricsCollector): void {\n utility.requireArgument(collector, 'collector');\n if (this._metricsCollector) {\n throw new Error('A metrics Collector is already registered.');\n }\n this._metricsCollector = collector;\n this._metricsCollector.receiveMetricsExtractors({\n getAllUpCounters: this._getAllUpCounters.bind(this),\n getAllValueRecorders: this._getAllValueRecorders.bind(this),\n getAllBucketHistograms: this._getAllBucketHistograms.bind(this)\n });\n }\n\n private _getAllUpCounters(): Metric<number>[] {\n return (this._metricsStore?.getUpCounters() || [])\n .concat(\n Array.from(this._instruments.values())\n .map((instr) => instr.getUpCounters())\n .flat()\n )\n .concat(co11y.getUpCounters());\n }\n\n private _getAllValueRecorders(): Metric<number[]>[] {\n return (this._metricsStore?.getValueRecorders() || [])\n .concat(\n Array.from(this._instruments.values())\n .map((instr) => instr.getValueRecorders())\n .flat()\n )\n .concat(co11y.getValueRecorders());\n }\n\n private _getAllBucketHistograms(): BucketMetric<number[]>[] {\n return (this._metricsStore?.getBucketHistograms() || [])\n .concat(\n Array.from(this._instruments.values())\n .map((instr) => instr.getBucketHistograms())\n .flat()\n )\n .concat(co11y.getBucketHistograms());\n }\n\n registerForLogPrompt(listener: LogPromptListener): void {\n this._logCollectionListeners.add(listener);\n }\n\n promptLogCollection(reason: string): void {\n for (const listener of this._logCollectionListeners.keys()) {\n try {\n listener(reason);\n } catch (err) {\n if (!utility.isProduction) {\n throw err;\n }\n }\n }\n }\n\n getClientSessionId(): string {\n return this._clientSessionId;\n }\n\n private _initOpMode(opMode: OperationMode | OperationModeDetector): void {\n if (typeof opMode === 'function') {\n opMode = opMode();\n }\n if (opMode === undefined || typeof window !== 'object') {\n // Support receiver and sender mode only if window is available, othwerwise fallback to default\n opMode = 'default';\n }\n\n if (['default', 'receiver', 'sender'].indexOf(opMode) >= 0) {\n this._opMode = opMode;\n } else {\n throw new Error(`Invalid operation mode: ${opMode}`);\n }\n }\n\n getOperationMode(): OperationMode {\n return this._opMode;\n }\n}\n","import {\n IdleDetector,\n Instrumentation,\n InstrumentedAppMethods,\n InstrumentedAppOptions\n} from './interfaces';\nimport { NextgenImpl } from './library/NextgenImpl';\nimport { utility } from 'o11y/shared';\n\nexport class Index {\n private _nextgen: NextgenImpl;\n // We are lazily initializing the singleton to allow any options to be processed\n // before the instantiation.\n private get _lazyNextGen(): NextgenImpl {\n if (!this._nextgen) {\n this._nextgen = new NextgenImpl(this._idleDetector);\n }\n return this._nextgen;\n }\n\n constructor(private readonly _idleDetector: IdleDetector) {\n utility.requireArgument(_idleDetector, '_idleDetector');\n }\n\n public registerInstrumentedApp(\n name: string,\n options?: InstrumentedAppOptions\n ): InstrumentedAppMethods {\n const retVal: InstrumentedAppMethods = this._lazyNextGen.registerApp(name, options);\n if (options) {\n utility.markProduction(options.isProduction);\n this._nextgen.appPayloadProvider = options.appPayloadProvider;\n this._nextgen.pagePayloadProvider = options.pagePayloadProvider;\n }\n return retVal;\n }\n\n public getInstrumentation(name?: string): Instrumentation {\n return this._lazyNextGen.getInstrumentation(name);\n }\n}\n\nexport const time = utility.time.bind(utility);\n","import { Environment, LogCollector, LogMeta, Schema } from '../interfaces';\nimport { SchematizedData, schemaUtil } from 'o11y/shared';\n\nconst lightningLoggerSchemaId = 'sfcore.customCmp.CustomComponentLog';\n\ntype ColorMap = Record<string, string>;\n\nconst bgColorMap: ColorMap = {\n Error: 'Crimson',\n Activity: 'CadetBlue',\n InstrumentedEvent: 'DarkOliveGreen',\n O11ySample: 'BlueViolet'\n};\nconst colorMap: ColorMap = {\n Error: 'white',\n Activity: 'white',\n InstrumentedEvent: 'white',\n O11ySample: 'white'\n};\nconst defaultColor = 'black';\nconst defaultBgColor = 'Gainsboro';\n\nexport class ConsoleCollector implements LogCollector {\n private readonly _simpleFilters = new Set<string>();\n private readonly _regexFilters: RegExp[] = [];\n\n constructor(environment?: Environment) {\n if (environment) {\n this._log('ConsoleCollector', environment);\n }\n }\n\n collect(schema: Schema, data: SchematizedData, logMeta: LogMeta): void {\n const id = schemaUtil.getSchemaId(schema);\n\n if (!this._shouldLog(id)) {\n return;\n }\n\n if (id === lightningLoggerSchemaId) {\n this._logCustom(data);\n return;\n }\n\n let label, color, bgColor;\n if (schemaUtil.isInternal(schema)) {\n label = schema.name;\n color = colorMap[schema.name] || defaultColor;\n bgColor = bgColorMap[schema.name] || defaultBgColor;\n } else {\n label = id;\n }\n\n this._log(label, data, logMeta, color, bgColor);\n }\n\n private _shouldLog(schemaId: string): boolean {\n if (this._simpleFilters.size == 0 && this._regexFilters.length == 0) {\n return true;\n }\n\n return (\n this._simpleFilters.has(schemaId) || this._regexFilters.some((r) => r.test(schemaId))\n );\n }\n\n addFilter(filter: string | RegExp): void {\n if (filter instanceof RegExp) {\n this._regexFilters.push(filter);\n } else {\n this._simpleFilters.add(filter);\n }\n }\n\n removeFilter(filter: string | RegExp): void {\n if (filter instanceof RegExp) {\n const index = this._regexFilters.findIndex((r) => r.source === filter.source);\n if (index >= 0) {\n this._regexFilters.splice(index, 1);\n }\n } else {\n this._simpleFilters.delete(filter);\n }\n }\n\n clearFilters(): void {\n this._simpleFilters.clear();\n this._regexFilters.splice(0, this._regexFilters.length);\n }\n\n getFilters(): (string | RegExp)[] {\n const filters: (string | RegExp)[] = Array.from(this._simpleFilters);\n return filters.concat(this._regexFilters).sort();\n }\n\n private _log(\n label: string,\n first?: unknown,\n second?: unknown,\n color: string = defaultColor,\n bgColor: string = defaultBgColor\n ): void {\n const css = `color:${color};background-color:${bgColor}`;\n // eslint-disable-next-line no-console\n console.log(\n `%cO11Y%c ${label}`,\n 'color:white;background-color:#FF6600;font-weight:bold',\n css,\n first || '',\n second || ''\n );\n }\n\n private _logCustom(data?: unknown): void {\n // eslint-disable-next-line no-console\n console.log(\n '%clightning/logger',\n 'color:white;background-color:#00a1e0;font-weight:bold',\n data || ''\n );\n }\n}\n","// auto-generated\nexport const version = '258.4.0';\nexport const webVitalsVersion = '^4.2.4';\n","// This is the file that exports all `o11y` module level exports.\nimport { idleDetectorReportSchema } from 'o11y_schema/sf_instrumentation';\nimport { IdleDetector, IdleDetectorReport } from './interfaces';\nimport { IdleDetectorImpl } from './library/IdleDetectorImpl';\nimport { time, Index } from './index';\n\nexport const idleDetector: IdleDetector = new IdleDetectorImpl({\n logThreshold: 300,\n reportListener: (report: IdleDetectorReport) => {\n idleDetectorInstr?.log(idleDetectorReportSchema, report);\n },\n errorListener: (e: unknown, text?: string) => {\n idleDetectorInstr?.error(e, text);\n }\n});\nconst index = new Index(idleDetector); // singleton\nconst registerInstrumentedApp = index.registerInstrumentedApp.bind(index);\nconst getInstrumentation = index.getInstrumentation.bind(index);\n\nconst idleDetectorInstr = getInstrumentation('IdleDetector');\n\nexport { registerInstrumentedApp, getInstrumentation, time };\nexport { ConsoleCollector } from './console-collector/ConsoleCollector';\nexport { version as _version } from './version';\n"],"names":["navigationTimingSchema","resourceTimingSchema"],"mappings":"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"}