{"version":3,"file":"chunks/db2828bd26fd06.js","mappings":"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","sources":["webpack:///./node_modules/@atlassian/ufo-round-number/dist/es2019/index.js","webpack:///./node_modules/@atlassian/ufo-custom-timings/dist/es2019/index.js","webpack:///./node_modules/@atlassian/ufo-initial-page-load-extra-timing/dist/es2019/index.js","webpack:///./node_modules/@atlassian/ufo-resource-timing/dist/es2019/common/utils/config.js","webpack:///./node_modules/@atlassian/ufo-resource-timing/dist/es2019/common/utils/resource-timing-buffer.js","webpack:///./node_modules/@atlassian/ufo-resource-timing/dist/es2019/main.js","webpack:///./node_modules/@atlassian/ufo-ssr/dist/es2019/index.js","webpack:///./node_modules/@atlassian/ufo-create-payload/dist/es2019/common/utils/index.js","webpack:///./node_modules/@atlassian/ufo-create-payload/dist/es2019/index.js","webpack:///./node_modules/@atlassian/ufo-bundle-eval-timing/dist/es2019/index.js"],"sourcesContent":["export const roundEpsilon = (num, places = 3) => {\n const factor = Math.pow(10, places);\n return Math.round((num + Number.EPSILON) * factor) / factor;\n};","import { useContext, useMemo } from 'react';\nimport UFOInteractionContext from '@atlassian/ufo-interaction-context';\nimport { getInteractionId } from '@atlassian/ufo-interaction-id-context';\nimport { addCustomTiming, getCurrentInteractionType } from '@atlassian/ufo-interaction-metrics';\nexport function getBm3Timings(marks, timingConfigs) {\n const bm3Timings = {};\n if (!marks || !timingConfigs) {\n return bm3Timings;\n }\n timingConfigs.forEach(item => {\n if (!item.startMark || !item.endMark) {\n return;\n }\n const startTime = marks[item.startMark];\n if (!startTime) {\n return;\n }\n const endTime = marks[item.endMark];\n if (!endTime) {\n return;\n }\n bm3Timings[item.key] = {\n startTime,\n endTime\n };\n });\n return bm3Timings;\n}\nexport function UFOBM3TimingsToUFO({\n marks,\n timings\n}) {\n const interactionContext = useContext(UFOInteractionContext);\n const interactionId = getInteractionId().current;\n useMemo(() => {\n if (interactionContext != null && interactionId != null && marks != null && timings != null) {\n const interactionType = getCurrentInteractionType(interactionId);\n if (interactionType === 'press') {\n return;\n }\n const bm3Timings = getBm3Timings(marks, timings);\n interactionContext.addCustomTimings(bm3Timings);\n }\n }, [interactionContext, interactionId, marks, timings]);\n return null;\n}\nexport function addBM3TimingsToUFO(marks, timingsConfig) {\n const interactionId = getInteractionId().current;\n if (interactionId) {\n const interactionType = getCurrentInteractionType(interactionId);\n if (interactionType === 'press') {\n return;\n }\n const bm3Timings = getBm3Timings(marks, timingsConfig);\n addCustomTiming(interactionId, [], bm3Timings);\n }\n}","const timings = [];\nexport function addTimingFromPerformanceMark(name, startMark, stopMark, cleanStart = false, cleanStop = false) {\n timings.push({\n name,\n startMark,\n stopMark,\n cleanStart,\n cleanStop\n });\n}\nexport function getTimings() {\n const reportedTimingsObj = {};\n timings.forEach(({\n name,\n startMark,\n stopMark,\n cleanStart,\n cleanStop\n }) => {\n const startEntryList = performance.getEntriesByName(startMark);\n const stopEntryList = performance.getEntriesByName(stopMark);\n if ((startEntryList === null || startEntryList === void 0 ? void 0 : startEntryList.length) > 0 && (stopEntryList === null || stopEntryList === void 0 ? void 0 : stopEntryList.length) > 0) {\n const startEntry = startEntryList[startEntryList.length - 1];\n const stopEntry = stopEntryList[stopEntryList.length - 1];\n const {\n startTime\n } = startEntry;\n const duration = stopEntry.startTime - startTime;\n const timing = {\n startTime: Math.round(startTime),\n duration: Math.round(duration)\n };\n reportedTimingsObj[name] = timing;\n }\n if (cleanStart) {\n performance.clearMarks(startMark);\n }\n if (cleanStop) {\n performance.clearMarks(stopMark);\n }\n });\n return reportedTimingsObj;\n}","import { getConfig as getConfigUFO } from '@atlassian/ufo-config';\nconst defaultAllowedParams = ['operationName', 'operation', 'q'];\nconst getAllowedParams = () => {\n const config = getConfigUFO();\n return (config === null || config === void 0 ? void 0 : config.allowedResourcesParams) || defaultAllowedParams;\n};\nconst handleQueryParams = urlString => {\n try {\n if (typeof urlString !== 'string') {\n return urlString;\n }\n const url = new URL(urlString);\n const params = new URLSearchParams(url.search);\n const allowedParams = getAllowedParams();\n for (const [key] of params) {\n if (!allowedParams.includes(key)) {\n url.searchParams.delete(key);\n }\n }\n return url.toString();\n } catch (e) {\n return urlString;\n }\n};\nlet config = {\n mapResources: url => url,\n sanitiseEndpoints: url => {\n return handleQueryParams(url);\n }\n};\nexport function configure(resourceTimingConfig) {\n const newConfig = {\n mapResources: resourceTimingConfig.mapResources,\n sanitiseEndpoints: url => {\n const sanitised = resourceTimingConfig.sanitiseEndpoints(url);\n if (sanitised) {\n return handleQueryParams(sanitised);\n }\n return sanitised;\n }\n };\n config = newConfig;\n}\nexport const getConfig = () => config;","import { roundEpsilon } from '@atlassian/ufo-round-number';\nconst getPerformanceObject = () => {\n var _window;\n return ((_window = window) !== null && _window !== void 0 ? _window : {}).performance;\n};\nconst getPerformanceObserverObject = () => {\n var _window2;\n return ((_window2 = window) !== null && _window2 !== void 0 ? _window2 : {}).PerformanceObserver;\n};\nexport const resourceTimingBuffer = {\n timings: [],\n maxSize: 1000,\n observer: null,\n transformResource: entry => {\n var _entry$serverTiming;\n const duration = roundEpsilon(entry.duration);\n const totalBackendTimeEntry = (_entry$serverTiming = entry.serverTiming) === null || _entry$serverTiming === void 0 ? void 0 : _entry$serverTiming.find(\n // timing name should come from per-product config in the future\n timing => timing.name === 'total' || timing.name === 'filter-request-papi');\n const serverTime = totalBackendTimeEntry ? roundEpsilon(totalBackendTimeEntry.duration) : undefined;\n const networkTime = serverTime ? duration - serverTime : undefined;\n return {\n name: entry.name,\n initiatorType: entry.initiatorType,\n transferSize: entry.transferSize,\n startTime: roundEpsilon(entry.startTime),\n duration: roundEpsilon(entry.duration),\n fetchStart: roundEpsilon(entry.fetchStart || 0),\n workerStart: roundEpsilon(entry.workerStart || 0),\n responseStart: roundEpsilon(entry.responseStart || 0),\n serverTime,\n networkTime\n };\n },\n start: () => {\n var _performance$getEntri;\n const performance = getPerformanceObject();\n const PerformanceObserver = getPerformanceObserverObject();\n if (!PerformanceObserver || !performance || typeof PerformanceObserver === 'undefined') {\n return;\n }\n if (resourceTimingBuffer.observer) {\n return;\n }\n const resources = (_performance$getEntri = performance.getEntriesByType) === null || _performance$getEntri === void 0 ? void 0 : _performance$getEntri.call(performance, 'resource');\n if (resources) {\n resourceTimingBuffer.timings = resources.map(resource => resourceTimingBuffer.transformResource(resource));\n }\n resourceTimingBuffer.observer = new PerformanceObserver(resourceTimingBuffer.addTimings);\n resourceTimingBuffer.observer.observe({\n entryTypes: ['resource']\n });\n },\n stop: () => {\n if (resourceTimingBuffer.observer) {\n resourceTimingBuffer.observer.disconnect();\n resourceTimingBuffer.observer = null;\n }\n resourceTimingBuffer.timings = [];\n },\n addTimings: list => {\n const entries = list.getEntries().map(entry => resourceTimingBuffer.transformResource(entry));\n const overflow = resourceTimingBuffer.timings.length + entries.length;\n if (overflow > resourceTimingBuffer.maxSize) {\n const fieldsToRemove = overflow - resourceTimingBuffer.maxSize;\n resourceTimingBuffer.timings.splice(0, fieldsToRemove);\n }\n resourceTimingBuffer.timings.push(...entries);\n }\n};\nconst isValidTiming = (timing, startTime, endTime) => timing.startTime >= startTime && timing.startTime + timing.duration <= endTime;\nexport const filterResourceTimings = (startTime, endTime) => {\n const performance = getPerformanceObject();\n const PerformanceObserver = getPerformanceObserverObject();\n if (!PerformanceObserver || !resourceTimingBuffer.observer) {\n const resources = performance === null || performance === void 0 ? void 0 : performance.getEntriesByType('resource');\n if (resources) {\n return resources.filter(timing => isValidTiming(timing, startTime, endTime));\n }\n return null;\n }\n return resourceTimingBuffer.timings.filter(timing => isValidTiming(timing, startTime, endTime));\n};","import { getConfig as getConfigUFO } from '@atlassian/ufo-config';\nimport { roundEpsilon } from '@atlassian/ufo-round-number';\nimport { getConfig } from './common/utils/config';\nimport { filterResourceTimings } from './common/utils/resource-timing-buffer';\nconst cacheableTypes = ['script', 'link'];\nconst resourceTypes = ['fetch', 'xmlhttprequest'];\nconst CACHE_NETWORK = 'network';\nconst CACHE_MEMORY = 'memory';\nconst CACHE_DISK = 'disk';\n\n// eslint-disable-next-line @typescript-eslint/no-invalid-void-type\nconst calculateTransferType = (type, duration, size) => {\n if (!cacheableTypes.includes(type)) {\n return CACHE_NETWORK;\n }\n if ((size === undefined || size === 0) && duration === 0) {\n return CACHE_MEMORY;\n }\n if (size === 0 && duration > 0) {\n return CACHE_DISK;\n }\n if (size === undefined) {\n return null;\n }\n return CACHE_NETWORK;\n};\nconst getWindowObject = () => typeof window !== 'undefined' && !!window ? window : undefined;\nconst hasAccessToResourceSize = (url, type, entry, hasTimingHeaders) => !cacheableTypes.includes(type) || url.includes('localhost') || !!getWindowObject() && url.includes(window.location.hostname) || hasTimingHeaders(url, entry);\nconst getReportedInitiatorTypes = xhrEnabled => {\n const ufoConfig = getConfigUFO();\n if (!(ufoConfig !== null && ufoConfig !== void 0 && ufoConfig.allowedResources)) {\n if (xhrEnabled) {\n return ['script', 'link', 'fetch', 'xmlhttprequest'];\n }\n return ['script', 'link', 'fetch'];\n }\n return ufoConfig.allowedResources;\n};\nconst evaluateAccessToResourceTimings = (url, entry) => !(entry.responseStart === 0 && entry.startTime > entry.responseStart);\n\n// eslint-disable-next-line @typescript-eslint/no-invalid-void-type\nconst getSizeObject = size => size !== undefined ? {\n size\n} : null;\nconst getNetworkData = (item, eventStart, hasTimingHeaders = evaluateAccessToResourceTimings) => {\n const {\n name,\n duration,\n transferSize,\n initiatorType,\n responseStart,\n serverTime,\n networkTime\n } = item;\n const ttfb = roundEpsilon(responseStart - eventStart);\n if (!hasAccessToResourceSize(name, initiatorType, item, hasTimingHeaders)) {\n return {};\n }\n if (cacheableTypes.includes(initiatorType)) {\n const transferType = calculateTransferType(initiatorType, duration, transferSize);\n if (!transferType) {\n return {\n ttfb,\n ...getSizeObject(transferSize)\n };\n }\n if (transferType !== CACHE_NETWORK) {\n return {\n transferType\n };\n }\n return {\n ttfb,\n transferType,\n serverTime,\n networkTime,\n ...getSizeObject(transferSize)\n };\n }\n return {\n ttfb,\n serverTime,\n networkTime,\n ...getSizeObject(transferSize)\n };\n};\nexport const getResourceTimings = (interactionStart, interactionEnd) => {\n const resourceTiming = {};\n if (interactionStart === null) {\n return resourceTiming;\n }\n const resources = filterResourceTimings(interactionStart, interactionEnd);\n if (!(resources !== null && resources !== void 0 && resources.length)) {\n return resourceTiming;\n }\n const {\n xhrFilter,\n sanitiseEndpoints,\n mapResources,\n hasTimingHeaders\n } = getConfig();\n const reportedInitiatorTypes = getReportedInitiatorTypes(!!xhrFilter);\n resources.forEach(item => {\n if (!reportedInitiatorTypes.includes(item.initiatorType)) {\n return;\n }\n const {\n name,\n startTime,\n duration,\n workerStart,\n fetchStart,\n initiatorType\n } = item;\n if (!name) {\n return;\n }\n if (initiatorType === 'xmlhttprequest' && (xhrFilter === undefined || xhrFilter(name) === false)) {\n return;\n }\n const url = resourceTypes.includes(initiatorType) ? sanitiseEndpoints(name) : mapResources(name);\n if (!url || resourceTiming[url]) {\n return;\n }\n resourceTiming[url] = {\n startTime: roundEpsilon(startTime - interactionStart),\n duration: roundEpsilon(duration),\n workerStart: Math.max(roundEpsilon(workerStart - interactionStart), 0),\n fetchStart: Math.max(roundEpsilon(fetchStart - interactionStart), 0),\n type: initiatorType,\n ...getNetworkData(item, interactionStart, hasTimingHeaders)\n };\n });\n return resourceTiming;\n};","const NESTED_METRIC_SEPARATOR = '/';\nconst filterEntry = entry => !(!entry || typeof entry !== 'object' || entry.startTime < 0 || entry.duration < 0);\nconst mapEntry = entry => ({\n startTime: Math.round(entry.startTime),\n duration: Math.round(entry.duration)\n});\nconst SSR_PREFIX = 'ssr';\nconst mapKey = key => {\n if (key === 'total') {\n return SSR_PREFIX;\n }\n return `${SSR_PREFIX}${NESTED_METRIC_SEPARATOR}${key}`;\n};\nlet config;\nexport function configure(ssrConfig) {\n config = ssrConfig;\n}\nexport function getSSRTimings() {\n var _config;\n if (!((_config = config) !== null && _config !== void 0 && _config.getTimings)) {\n return {};\n }\n const timings = config.getTimings();\n if (!timings) {\n return {};\n }\n const ssrTimings = Object.entries(timings).reduce((acc, entry) => {\n if (filterEntry(entry[1])) {\n acc[mapKey(entry[0])] = mapEntry(entry[1]);\n }\n return acc;\n }, {});\n return ssrTimings;\n}\nexport function getSSRSuccess() {\n var _config2;\n return !!((_config2 = config) !== null && _config2 !== void 0 && _config2.getDoneMark());\n}\nexport function getSSRDoneTime() {\n var _config$getDoneMark, _config3;\n return (_config$getDoneMark = (_config3 = config) === null || _config3 === void 0 ? void 0 : _config3.getDoneMark()) !== null && _config$getDoneMark !== void 0 ? _config$getDoneMark : undefined;\n}\nexport function getSSRFeatureFlags() {\n var _config4;\n if (!((_config4 = config) !== null && _config4 !== void 0 && _config4.getFeatureFlags)) {\n return undefined;\n }\n try {\n var _config$getFeatureFla;\n return (_config$getFeatureFla = config.getFeatureFlags()) !== null && _config$getFeatureFla !== void 0 ? _config$getFeatureFla : undefined;\n // eslint-disable-next-line no-empty\n } catch (e) {}\n return undefined;\n}","export const sanitizeUfoName = name => {\n const nameNoUnderscore = name.replace(/_/g, '-');\n return nameNoUnderscore;\n};","import Bowser from 'bowser-ultralight';\nimport { getLighthouseMetrics } from '@atlassian/ufo-additional-payload';\nimport * as bundleEvalTiming from '@atlassian/ufo-bundle-eval-timing';\nimport { getConfig, getUfoNameOverrides } from '@atlassian/ufo-config';\nimport { getBm3Timings } from '@atlassian/ufo-custom-timings';\nimport { getLastVisibleChangeTimestamp } from '@atlassian/ufo-dropbox-ttvc';\nimport { getPageVisibilityState } from '@atlassian/ufo-hidden-timing';\nimport * as initialPageLoadExtraTiming from '@atlassian/ufo-initial-page-load-extra-timing';\nimport * as resourceTiming from '@atlassian/ufo-resource-timing';\nimport { roundEpsilon } from '@atlassian/ufo-round-number';\nimport * as ssr from '@atlassian/ufo-ssr';\nimport { getVCObserver } from '@atlassian/ufo-vc';\nimport { sanitizeUfoName } from './common/utils';\nconst REACT_UFO_VERSION = '1.0.1';\nfunction getUfoNameOverride(interaction) {\n const {\n ufoName,\n apdex\n } = interaction;\n try {\n const ufoNameOverrides = getUfoNameOverrides();\n if (ufoNameOverrides != null) {\n const metricKey = apdex.length > 0 ? apdex[0].key : '';\n if (ufoNameOverrides[ufoName][metricKey]) {\n return ufoNameOverrides[ufoName][metricKey];\n }\n }\n return ufoName;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e) {\n return ufoName;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction isSegmentLabel(obj) {\n return obj && typeof obj.name === 'string' && typeof obj.segmentId === 'string';\n}\nfunction stringifyLabelStackFully(labelStack) {\n return labelStack.map(l => {\n if (isSegmentLabel(l)) {\n return `${l.name}:${l.segmentId}`;\n }\n return l.name;\n }).join('/');\n}\nfunction labelStackStartWith(labelStack, startWith) {\n return stringifyLabelStackFully(labelStack).startsWith(stringifyLabelStackFully(startWith));\n}\nfunction getEarliestLegacyStopTime(interaction, labelStack) {\n let earliestLegacyStopTime = null;\n interaction.apdex.forEach(a => {\n var _a$labelStack, _earliestLegacyStopTi;\n if (!(a !== null && a !== void 0 && a.stopTime)) {\n return;\n }\n if (!labelStackStartWith((_a$labelStack = a.labelStack) !== null && _a$labelStack !== void 0 ? _a$labelStack : [], labelStack)) {\n return;\n }\n if (a.stopTime > interaction.start && ((_earliestLegacyStopTi = earliestLegacyStopTime) !== null && _earliestLegacyStopTi !== void 0 ? _earliestLegacyStopTi : a.stopTime) >= a.stopTime) {\n earliestLegacyStopTime = a.stopTime;\n }\n });\n return earliestLegacyStopTime;\n}\nfunction getBm3EndTimeOrFallbackValue(interaction, labelStack = [], fallbackValue = interaction.end) {\n var _getEarliestLegacySto;\n if (interaction.type === 'press') {\n return fallbackValue;\n }\n return (_getEarliestLegacySto = getEarliestLegacyStopTime(interaction, labelStack)) !== null && _getEarliestLegacySto !== void 0 ? _getEarliestLegacySto : fallbackValue;\n}\nconst getPageVisibilityUpToTTI = interaction => {\n const {\n start\n } = interaction;\n const bm3EndTimeOrInteractionEndTime = getBm3EndTimeOrFallbackValue(interaction);\n return getPageVisibilityState(start, bm3EndTimeOrInteractionEndTime);\n};\nconst getPageVisibilityUpToTTAI = interaction => {\n const {\n start,\n end\n } = interaction;\n return getPageVisibilityState(start, end);\n};\nconst getVisibilityStateFromPerformance = stop => {\n try {\n const results = performance.getEntriesByType('visibility-state');\n if (!results || results.length === 0) {\n return null;\n }\n return results.reduce((acc = null, {\n name,\n startTime\n }) => {\n if (startTime > stop) {\n return acc;\n }\n if (acc === null && name === null) {\n return null;\n }\n if (acc === null) {\n return name;\n }\n if (acc !== name) {\n return 'mixed';\n }\n return acc;\n }, null);\n } catch (e) {\n return null;\n }\n};\nconst getMoreAccuratePageVisibilityUpToTTI = interaction => {\n const old = getPageVisibilityUpToTTI(interaction);\n const tti = getEarliestLegacyStopTime(interaction, []);\n if (!tti) {\n return old;\n }\n const buffered = getVisibilityStateFromPerformance(tti);\n if (!buffered) {\n return old;\n }\n if (buffered !== old) {\n return 'mixed';\n }\n return old;\n};\nconst getMoreAccuratePageVisibilityUpToTTAI = interaction => {\n const old = getPageVisibilityUpToTTAI(interaction);\n const buffered = getVisibilityStateFromPerformance(interaction.end);\n if (!buffered) {\n return old;\n }\n if (buffered !== old) {\n return 'mixed';\n }\n return old;\n};\nconst getInteractionStatus = interaction => {\n const originalInteractionStatus = interaction.abortReason ? 'ABORTED' : 'SUCCEEDED';\n const hasBm3TTI = interaction.apdex.length > 0;\n const overrideStatus = hasBm3TTI ? 'SUCCEEDED' : originalInteractionStatus;\n return {\n originalInteractionStatus,\n overrideStatus\n };\n};\nconst getResourceTimings = (start, end) => {\n var _resourceTiming$getRe;\n return (_resourceTiming$getRe = resourceTiming.getResourceTimings(start, end)) !== null && _resourceTiming$getRe !== void 0 ? _resourceTiming$getRe : undefined;\n};\nconst getBundleEvalTimings = start => bundleEvalTiming.getBundleEvalTimings(start);\nconst getSSRSuccess = type => type === 'page_load' ? ssr.getSSRSuccess() : undefined;\nconst getSSRFeatureFlags = type => type === 'page_load' ? ssr.getSSRFeatureFlags() : undefined;\nconst getPaintMetrics = type => {\n if (type !== 'page_load') {\n return {};\n }\n const metrics = {};\n performance.getEntriesByType('paint').forEach(entry => {\n if (entry.name === 'first-paint') {\n metrics['metric:fp'] = Math.round(entry.startTime);\n }\n if (entry.name === 'first-contentful-paint') {\n metrics['metric:fcp'] = Math.round(entry.startTime);\n }\n });\n return metrics;\n};\nconst getTTVC = interaction => {\n const config = getConfig();\n if (!(config !== null && config !== void 0 && config.enableTTVC)) {\n return {};\n }\n if (interaction.type !== 'page_load' && interaction.type !== 'transition') {\n return {};\n }\n const ttvc = getLastVisibleChangeTimestamp() - interaction.measureStart;\n if (ttvc < 0) {\n return {};\n }\n return {\n 'custom:metric:ttvc': Math.round(ttvc)\n };\n};\nconst getVCMetrics = interaction => {\n var _config$vc, _interaction$apdex, _interaction$apdex$;\n const config = getConfig();\n if (!(config !== null && config !== void 0 && (_config$vc = config.vc) !== null && _config$vc !== void 0 && _config$vc.enabled)) {\n return {};\n }\n if (interaction.type !== 'page_load' && interaction.type !== 'transition') {\n return {};\n }\n const tti = (_interaction$apdex = interaction.apdex) === null || _interaction$apdex === void 0 ? void 0 : (_interaction$apdex$ = _interaction$apdex[0]) === null || _interaction$apdex$ === void 0 ? void 0 : _interaction$apdex$.stopTime;\n const prefix = 'ufo';\n const result = getVCObserver().getVCResult({\n start: interaction.start,\n stop: interaction.end,\n tti,\n prefix\n });\n const VC = result === null || result === void 0 ? void 0 : result['metrics:vc'];\n if (!VC || !(result !== null && result !== void 0 && result[`${prefix}:vc:clean`])) {\n return result;\n }\n const interactionStatus = getInteractionStatus(interaction);\n const pageVisibilityUpToTTAI = getPageVisibilityUpToTTAI(interaction);\n if (interactionStatus.originalInteractionStatus !== 'SUCCEEDED' || pageVisibilityUpToTTAI !== 'visible') {\n return result;\n }\n return {\n ...result,\n 'metric:vc90': VC['90']\n };\n};\nconst getNavigationMetrics = type => {\n if (type !== 'page_load') {\n return {};\n }\n const entries = performance.getEntriesByType('navigation');\n if (entries.length === 0) {\n return {};\n }\n const navigation = entries[0];\n const metrics = {\n // From https://www.w3.org/TR/resource-timing/\n redirectStart: Math.round(navigation.redirectStart),\n redirectEnd: Math.round(navigation.redirectEnd),\n fetchStart: Math.round(navigation.fetchStart),\n domainLookupStart: Math.round(navigation.domainLookupStart),\n domainLookupEnd: Math.round(navigation.domainLookupEnd),\n connectStart: Math.round(navigation.connectStart),\n connectEnd: Math.round(navigation.connectEnd),\n secureConnectionStart: Math.round(navigation.secureConnectionStart),\n requestStart: Math.round(navigation.requestStart),\n responseStart: Math.round(navigation.responseStart),\n responseEnd: Math.round(navigation.responseEnd),\n encodedBodySize: Math.round(navigation.encodedBodySize),\n decodedBodySize: Math.round(navigation.decodedBodySize),\n transferSize: Math.round(navigation.transferSize),\n // From https://www.w3.org/TR/navigation-timing-2/\n redirectCount: navigation.redirectCount,\n type: navigation.type,\n unloadEventEnd: Math.round(navigation.unloadEventEnd),\n unloadEventStart: Math.round(navigation.unloadEventStart),\n workerStart: Math.round(navigation.workerStart),\n nextHopProtocol: navigation.nextHopProtocol\n\n // The following properties are ignored because they provided limited value on a modern stack (e.g. the content\n // is usually rendered and interactive before the dom is fully parsed, dont't play well with streamed content...)\n // * domComplete\n // * domContentLoadedEventEnd\n // * domContentLoadedEventStart\n // * domInteractive\n // * loadEventEnd\n // * loadEventStart\n };\n return {\n 'metrics:navigation': metrics\n };\n};\nconst getPPSMetrics = interaction => {\n var _interaction$apdex2, _interaction$apdex2$;\n const {\n start,\n end\n } = interaction;\n const interactionStatus = getInteractionStatus(interaction);\n const pageVisibilityUpToTTAI = getPageVisibilityUpToTTAI(interaction);\n const ttai = interactionStatus.originalInteractionStatus === 'SUCCEEDED' && pageVisibilityUpToTTAI === 'visible' ? Math.round(end - start) : undefined;\n const payload = {};\n const PPSMetricsAtTTAI = ttai !== undefined ? {\n 'metrics:@ttai': getLighthouseMetrics({\n start,\n stop: interaction.end\n })\n } : null;\n PPSMetricsAtTTAI !== null && Object.assign(payload, PPSMetricsAtTTAI);\n const tti = (_interaction$apdex2 = interaction.apdex) === null || _interaction$apdex2 === void 0 ? void 0 : (_interaction$apdex2$ = _interaction$apdex2[0]) === null || _interaction$apdex2$ === void 0 ? void 0 : _interaction$apdex2$.stopTime;\n const PPSMetricsAtTTI = tti !== undefined ? getLighthouseMetrics({\n start,\n stop: tti\n }) : null;\n PPSMetricsAtTTI !== null && Object.assign(payload, PPSMetricsAtTTI);\n return payload;\n};\nfunction getSSRProperties(type) {\n return {\n 'ssr:success': getSSRSuccess(type),\n 'ssr:featureFlags': getSSRFeatureFlags(type)\n };\n}\nconst getBrowserMetadata = () => {\n const data = {};\n if (navigator.userAgent != null) {\n const browser = Bowser.getParser(navigator.userAgent);\n data['event:browser:name'] = browser.getBrowserName();\n data['event:browser:version'] = browser.getBrowserVersion();\n }\n if (navigator.hardwareConcurrency != null) {\n data['event:cpus'] = navigator.hardwareConcurrency;\n }\n if (navigator.deviceMemory != null) {\n data['event:memory'] = navigator.deviceMemory;\n }\n\n // eslint-disable-next-line compat/compat\n if (navigator.connection != null) {\n data['event:network:effectiveType'] = navigator.connection.effectiveType;\n data['event:network:rtt'] = navigator.connection.rtt;\n data['event:network:downlink'] = navigator.connection.downlink;\n }\n return data;\n};\nconst getTracingContextData = interaction => {\n const {\n trace,\n start\n } = interaction;\n let tracingContextData = {};\n if (trace) {\n tracingContextData = {\n 'ufo:tracingContext': {\n 'X-B3-TraceId': trace.traceId,\n 'X-B3-SpanId': trace.spanId,\n // eslint-disable-next-line compat/compat\n browserTimeOrigin: +(performance.timeOrigin + start).toFixed(2)\n }\n };\n }\n return tracingContextData;\n};\n\n// interaction metric\n\nfunction optimizeLabelStack(labelStack) {\n return labelStack.map(ls => ({\n n: ls.name,\n ...(ls.segmentId ? {\n s: ls.segmentId\n } : {})\n }));\n}\nfunction optimizeCustomData(interaction) {\n const {\n customData,\n legacyMetrics\n } = interaction;\n const customDataMap = customData.reduce((result, {\n labelStack,\n data\n }) => {\n var _result$get$data, _result$get;\n const label = stringifyLabelStackFully(labelStack);\n const value = (_result$get$data = (_result$get = result.get(label)) === null || _result$get === void 0 ? void 0 : _result$get.data) !== null && _result$get$data !== void 0 ? _result$get$data : {};\n result.set(label, {\n labelStack: optimizeLabelStack(labelStack),\n data: Object.assign(value, data)\n });\n return result;\n }, new Map());\n if (legacyMetrics) {\n const legacyMetricsFiltered = legacyMetrics.filter(item => item.type === 'PAGE_LOAD').reduce((result, currentValue) => {\n for (const [key, value] of Object.entries(currentValue.custom || {})) {\n var _result$get$data2, _result$get2;\n const label = stringifyLabelStackFully([]);\n const labelValue = (_result$get$data2 = (_result$get2 = result.get(label)) === null || _result$get2 === void 0 ? void 0 : _result$get2.data) !== null && _result$get$data2 !== void 0 ? _result$get$data2 : {};\n result.set(label, {\n labelStack: optimizeLabelStack([]),\n data: Object.assign(labelValue, {\n [key]: value\n })\n });\n }\n return result;\n }, new Map());\n return [...customDataMap.values(), ...legacyMetricsFiltered.values()];\n }\n return [...customDataMap.values()];\n}\nfunction optimizeReactProfilerTimings(reactProfilerTimings, interactionStart) {\n const reactProfilerTimingsMap = reactProfilerTimings.reduce((result, {\n labelStack,\n startTime,\n commitTime,\n actualDuration,\n type\n }) => {\n if (labelStack && startTime >= interactionStart) {\n const label = stringifyLabelStackFully(labelStack);\n const start = Math.round(startTime);\n const end = Math.round(commitTime);\n const timing = result.get(label) || {\n labelStack: optimizeLabelStack(labelStack),\n startTime: start,\n endTime: end,\n mountCount: 0,\n rerenderCount: 0,\n renderDuration: 0\n };\n if (start < timing.startTime) {\n timing.startTime = start;\n }\n if (end > timing.endTime) {\n timing.endTime = end;\n }\n if (type === 'mount') {\n timing.mountCount += 1;\n }\n if (type === 'update') {\n timing.rerenderCount += 1;\n }\n timing.renderDuration += Math.round(actualDuration);\n result.set(label, timing);\n }\n return result;\n }, new Map());\n return [...reactProfilerTimingsMap.values()];\n}\nfunction optimizeRedirects(redirects, interactionStart) {\n let lastRedirectTime = interactionStart;\n const updatedRedirects = redirects.sort((a, b) => a.time - b.time).reduce((result, redirect) => {\n const {\n fromInteractionName,\n time\n } = redirect;\n if (lastRedirectTime >= interactionStart) {\n result.push({\n labelStack: [{\n n: fromInteractionName\n }],\n startTime: Math.round(lastRedirectTime),\n endTime: Math.round(time)\n });\n }\n lastRedirectTime = time;\n return result;\n }, []);\n return updatedRedirects;\n}\nfunction optimizeHoldInfo(holdInfo, interactionStart) {\n const holdInfoMap = holdInfo.reduce((result, hold) => {\n const {\n labelStack,\n name,\n start,\n end,\n ignoreOnSubmit\n } = hold;\n if (labelStack && !ignoreOnSubmit && start >= interactionStart) {\n const label = stringifyLabelStackFully([...labelStack, {\n name\n }]);\n const startTime = Math.round(start);\n const endTime = Math.round(end);\n const timing = result.get(label) || {\n labelStack: optimizeLabelStack([...labelStack, {\n name\n }]),\n startTime,\n endTime\n };\n if (startTime < timing.startTime) {\n timing.startTime = startTime;\n }\n if (endTime > timing.endTime) {\n timing.endTime = endTime;\n }\n result.set(label, timing);\n }\n return result;\n }, new Map());\n return [...holdInfoMap.values()];\n}\nfunction optimizeSpans(spans, interactionStart) {\n const updatedSpans = spans.reduce((result, span) => {\n const {\n labelStack,\n type,\n name,\n start,\n end\n } = span;\n if (labelStack && start >= interactionStart) {\n result.push({\n labelStack: optimizeLabelStack([...labelStack, {\n name\n }]),\n startTime: Math.round(start),\n endTime: Math.round(end),\n type\n });\n }\n return result;\n }, []);\n return updatedSpans;\n}\nfunction optimizeRequestInfo(requestInfo, interactionStart) {\n const updatedRequestInfo = requestInfo.reduce((result, reqInfo) => {\n const {\n labelStack,\n name,\n start,\n end,\n networkStart,\n networkComplete\n } = reqInfo;\n const startTime = networkStart !== null && networkStart !== void 0 ? networkStart : start;\n const endTime = networkComplete !== null && networkComplete !== void 0 ? networkComplete : end;\n if (labelStack && start >= interactionStart && endTime) {\n result.push({\n labelStack: optimizeLabelStack([...labelStack, {\n name\n }]),\n startTime: Math.round(startTime),\n endTime: Math.round(endTime)\n });\n }\n return result;\n }, []);\n return updatedRequestInfo;\n}\nfunction optimizeCustomTimings(customTimings, interactionStart) {\n const updatedCustomTimings = customTimings.reduce((result, item) => {\n Object.keys(item.data).forEach(key => {\n if (item.data[key].startTime >= interactionStart) {\n result.push({\n labelStack: [{\n n: key\n }],\n startTime: Math.round(item.data[key].startTime),\n endTime: Math.round(item.data[key].endTime)\n });\n }\n });\n return result;\n }, []);\n return updatedCustomTimings;\n}\nfunction optimizeMarks(marks) {\n return marks.map(({\n labelStack,\n time,\n ...others\n }) => ({\n ...others,\n labelStack: labelStack && optimizeLabelStack(labelStack),\n time: Math.round(time)\n }));\n}\nfunction optimizeApdex(apdex) {\n return apdex.map(({\n stopTime,\n labelStack,\n ...others\n }) => ({\n ...others,\n stopTime: Math.round(stopTime),\n ...(labelStack ? {\n labelStack: optimizeLabelStack(labelStack)\n } : {})\n }));\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction objectToArray(obj = {}) {\n return Object.keys(obj).reduce((result, key) => {\n result.push({\n label: key,\n data: obj[key]\n });\n return result;\n },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n []);\n}\nfunction getBM3SubmetricsTimings(submetrics) {\n if (!submetrics) {\n return null;\n }\n const submetricsTimings = submetrics.filter(item => {\n return typeof item.stop === 'number' && !!item.key && typeof item.start === 'number';\n }).map(item => {\n let childSubmetrics;\n const newKey = `include/${item.key}`;\n if (item.submetrics) {\n childSubmetrics = getBM3SubmetricsTimings(item.submetrics);\n }\n return {\n [newKey]: {\n endTime: item.stop - item.start,\n startTime: item.start\n },\n ...(childSubmetrics ? childSubmetrics : {})\n };\n });\n return submetricsTimings;\n}\nfunction getBm3TrackerTimings(interaction) {\n const interactionLegacyMetrics = interaction.legacyMetrics;\n if (!interactionLegacyMetrics) {\n return {};\n }\n const legacyMetrics = interactionLegacyMetrics.map(item => {\n var _item$config, _item$marks;\n return {\n key: item.key,\n startTime: item.start,\n stopTime: item.stop,\n type: (_item$config = item.config) === null || _item$config === void 0 ? void 0 : _item$config.type,\n fmp: ((_item$marks = item.marks) === null || _item$marks === void 0 ? void 0 : _item$marks['fmp']) || item.stop,\n source: 'bm3',\n timings: getBm3Timings(item.marks, item.config.timings),\n submetrics: getBM3SubmetricsTimings(item.submetrics),\n pageVisibleState: item.pageVisibleState\n };\n }).filter(item => !!item.type);\n return {\n legacyMetrics\n };\n}\nfunction createInteractionMetricsPayload(interaction, interactionId) {\n var _window$location, _config$additionalPay;\n const interactionPayloadStart = performance.now();\n const config = getConfig();\n if (!config) {\n throw Error('UFO Configuration not provided');\n }\n const {\n end,\n start,\n ufoName,\n knownSegments,\n rate,\n type,\n abortReason,\n routeName,\n featureFlags,\n previousInteractionName,\n isPreviousInteractionAborted,\n abortedByInteractionName\n } = interaction;\n const pageVisibilityAtTTI = getPageVisibilityUpToTTI(interaction);\n const pageVisibilityAtTTAI = getPageVisibilityUpToTTAI(interaction);\n const segments = config.killswitchNestedSegments ? [] : knownSegments;\n const isDetailedPayload = pageVisibilityAtTTAI === 'visible';\n const isPageLoad = type === 'page_load';\n const calculatePageVisibilityFromTheStartOfPageLoad = config.enableBetterPageVisibilityApi && isPageLoad;\n const moreAccuratePageVisibilityAtTTI = calculatePageVisibilityFromTheStartOfPageLoad ? getMoreAccuratePageVisibilityUpToTTI(interaction) : null;\n const moreAccuratePageVisibilityAtTTAI = calculatePageVisibilityFromTheStartOfPageLoad ? getMoreAccuratePageVisibilityUpToTTAI(interaction) : null;\n const labelStack = interaction.labelStack ? {\n labelStack: optimizeLabelStack(interaction.labelStack)\n } : {};\n // Page Load\n const getPageLoadInteractionMetrics = () => {\n var _config$ssr, _config$ssr2, _config$ssr3;\n if (!isPageLoad) {\n return {};\n }\n const config = getConfig();\n const SSRDoneTimeValue = config !== null && config !== void 0 && (_config$ssr = config.ssr) !== null && _config$ssr !== void 0 && _config$ssr.getSSRDoneTime ? config === null || config === void 0 ? void 0 : (_config$ssr2 = config.ssr) === null || _config$ssr2 === void 0 ? void 0 : _config$ssr2.getSSRDoneTime() : ssr.getSSRDoneTime();\n const SSRDoneTime = SSRDoneTimeValue !== undefined ? {\n SSRDoneTime: Math.round(SSRDoneTimeValue)\n } : {};\n return {\n ...SSRDoneTime,\n isBM3ConfigSSRDoneAsFmp: interaction.metaData.__legacy__bm3ConfigSSRDoneAsFmp,\n isUFOConfigSSRDoneAsFmp: interaction.metaData.__legacy__bm3ConfigSSRDoneAsFmp || !!(config !== null && config !== void 0 && (_config$ssr3 = config.ssr) !== null && _config$ssr3 !== void 0 && _config$ssr3.getSSRDoneTime)\n };\n };\n // Detailed payload. Page visibility = visible\n const getDetailedInteractionMetrics = () => {\n if (!isDetailedPayload) {\n return {};\n }\n return {\n errors: interaction.errors.map(({\n labelStack,\n ...others\n }) => ({\n ...others,\n labelStack: labelStack && optimizeLabelStack(labelStack)\n })),\n holdActive: [...interaction.holdActive.values()],\n redirects: optimizeRedirects(interaction.redirects, start),\n holdInfo: optimizeHoldInfo(interaction.holdInfo, start),\n spans: optimizeSpans(interaction.spans, start),\n requestInfo: optimizeRequestInfo(interaction.requestInfo, start),\n customTimings: optimizeCustomTimings(interaction.customTimings, start),\n bundleEvalTimings: objectToArray(getBundleEvalTimings(start)),\n resourceTimings: objectToArray(getResourceTimings(start, end))\n };\n };\n // Page load & detailed payload\n const getPageLoadDetailedInteractionMetrics = () => {\n var _config$ssr4;\n if (!isPageLoad || !isDetailedPayload) {\n return {};\n }\n const config = getConfig();\n return {\n initialPageLoadExtraTimings: objectToArray(initialPageLoadExtraTiming.getTimings()),\n SSRTimings: config !== null && config !== void 0 && (_config$ssr4 = config.ssr) !== null && _config$ssr4 !== void 0 && _config$ssr4.getSSRTimings ? config.ssr.getSSRTimings() : objectToArray(ssr.getSSRTimings())\n };\n };\n const newUFOName = sanitizeUfoName(ufoName);\n return {\n actionSubject: 'experience',\n action: 'measured',\n eventType: 'operational',\n source: 'measured',\n tags: ['observability'],\n attributes: {\n properties: {\n // basic\n 'event:hostname': ((_window$location = window.location) === null || _window$location === void 0 ? void 0 : _window$location.hostname) || 'unknown',\n 'event:product': config.product,\n 'event:schema': '1.0.0',\n 'event:source': {\n name: 'react-ufo/web',\n version: REACT_UFO_VERSION,\n payloadSource: 'platform'\n },\n 'event:region': config.region || 'unknown',\n 'experience:key': 'custom.interaction-metrics',\n 'experience:name': newUFOName,\n // root\n ...getBrowserMetadata(),\n ...getSSRProperties(type),\n ...getPPSMetrics(interaction),\n ...getPaintMetrics(type),\n ...getTTVC(interaction),\n ...getNavigationMetrics(type),\n ...getVCMetrics(interaction),\n ...((_config$additionalPay = config.additionalPayloadData) === null || _config$additionalPay === void 0 ? void 0 : _config$additionalPay.call(config, interaction)),\n ...getTracingContextData(interaction),\n interactionMetrics: {\n namePrefix: config.namePrefix || '',\n segmentPrefix: config.segmentPrefix || '',\n interactionId,\n pageVisibilityAtTTI,\n pageVisibilityAtTTAI,\n experimental__pageVisibilityAtTTI: moreAccuratePageVisibilityAtTTI,\n experimental__pageVisibilityAtTTAI: moreAccuratePageVisibilityAtTTAI,\n // raw interaction metrics\n rate,\n routeName,\n type,\n abortReason,\n featureFlags,\n previousInteractionName,\n isPreviousInteractionAborted,\n abortedByInteractionName,\n // performance\n apdex: optimizeApdex(interaction.apdex),\n end: Math.round(end),\n start: Math.round(start),\n segments: segments.map(({\n labelStack,\n ...others\n }) => ({\n ...others,\n labelStack: optimizeLabelStack(labelStack)\n })),\n marks: optimizeMarks(interaction.marks),\n customData: optimizeCustomData(interaction),\n reactProfilerTimings: optimizeReactProfilerTimings(interaction.reactProfilerTimings, start),\n ...labelStack,\n ...getPageLoadInteractionMetrics(),\n ...getDetailedInteractionMetrics(),\n ...getPageLoadDetailedInteractionMetrics(),\n ...getBm3TrackerTimings(interaction)\n },\n 'ufo:payloadTime': roundEpsilon(performance.now() - interactionPayloadStart)\n }\n }\n };\n}\nexport function createPayloads(interactionId, interaction) {\n const ufoNameOverride = getUfoNameOverride(interaction);\n const modifiedInteraction = {\n ...interaction,\n ufoName: ufoNameOverride\n };\n const interactionMetricsPayload = createInteractionMetricsPayload(modifiedInteraction, interactionId);\n return [interactionMetricsPayload];\n}","import { roundEpsilon } from '@atlassian/ufo-round-number';\nlet config = null;\nexport function configure(bundleEvalTimingConfiguration) {\n config = bundleEvalTimingConfiguration;\n}\nconst getPerformanceObject = () => {\n var _window;\n return ((_window = window) !== null && _window !== void 0 ? _window : {}).performance;\n};\nexport function getBundleEvalTimings(interactionStartTime) {\n if (config == null) {\n return {};\n }\n const started = {};\n const timings = {};\n const cachedConfig = config;\n const performance = getPerformanceObject();\n performance === null || performance === void 0 ? void 0 : performance.getEntriesByType('mark').forEach(mark => {\n const result = cachedConfig.mapPerformanceMark(mark.name);\n if (!result) {\n return;\n }\n const {\n type,\n name\n } = result;\n if (type === 'start' && mark.startTime >= interactionStartTime) {\n started[name] = mark;\n return;\n }\n if (type === 'end' && started[name]) {\n timings[name] = {\n startTime: roundEpsilon(started[name].startTime - interactionStartTime),\n duration: roundEpsilon(mark.startTime - started[name].startTime)\n };\n delete started[name];\n }\n });\n if (Object.keys(timings).length === 0) {\n return {};\n }\n return timings;\n}"],"names":["roundEpsilon","num","places","factor","Math","pow","round","Number","EPSILON","getBm3Timings","marks","timingConfigs","bm3Timings","forEach","item","startMark","endMark","startTime","endTime","key","timings","getTimings","reportedTimingsObj","name","stopMark","cleanStart","cleanStop","startEntryList","performance","getEntriesByName","stopEntryList","length","startEntry","stopEntry","duration","timing","clearMarks","defaultAllowedParams","mapResources","url","sanitiseEndpoints","urlString","URL","params","URLSearchParams","search","allowedParams","config","allowedResourcesParams","getAllowedParams","includes","searchParams","delete","toString","e","handleQueryParams","_window","window","getPerformanceObserverObject","_window2","PerformanceObserver","resourceTimingBuffer","maxSize","observer","transformResource","entry","_entry$serverTiming","totalBackendTimeEntry","serverTiming","find","serverTime","undefined","networkTime","initiatorType","transferSize","fetchStart","workerStart","responseStart","start","_performance$getEntri","resources","getEntriesByType","call","map","resource","addTimings","observe","entryTypes","stop","disconnect","list","entries","getEntries","overflow","fieldsToRemove","splice","push","isValidTiming","cacheableTypes","resourceTypes","CACHE_NETWORK","evaluateAccessToResourceTimings","getSizeObject","size","getNetworkData","eventStart","hasTimingHeaders","ttfb","type","location","hostname","hasAccessToResourceSize","transferType","calculateTransferType","filterEntry","mapEntry","mapKey","getSSRTimings","_config","Object","reduce","acc","sanitizeUfoName","replace","REACT_UFO_VERSION","stringifyLabelStackFully","labelStack","l","obj","segmentId","join","getEarliestLegacyStopTime","interaction","earliestLegacyStopTime","apdex","a","_a$labelStack","_earliestLegacyStopTi","stopTime","startWith","startsWith","labelStackStartWith","getPageVisibilityUpToTTI","bm3EndTimeOrInteractionEndTime","fallbackValue","end","_getEarliestLegacySto","getBm3EndTimeOrFallbackValue","getPageVisibilityUpToTTAI","getVisibilityStateFromPerformance","results","getMoreAccuratePageVisibilityUpToTTI","old","tti","buffered","getMoreAccuratePageVisibilityUpToTTAI","getInteractionStatus","originalInteractionStatus","abortReason","overrideStatus","_resourceTiming$getRe","interactionStart","interactionEnd","resourceTiming","filter","filterResourceTimings","xhrFilter","reportedInitiatorTypes","xhrEnabled","ufoConfig","allowedResources","getReportedInitiatorTypes","max","_config2","getDoneMark","_config4","getFeatureFlags","_config$getFeatureFla","getPaintMetrics","metrics","getTTVC","enableTTVC","ttvc","measureStart","getVCMetrics","_config$vc","_interaction$apdex","_interaction$apdex$","vc","enabled","result","getVCResult","prefix","VC","interactionStatus","pageVisibilityUpToTTAI","getNavigationMetrics","navigation","redirectStart","redirectEnd","domainLookupStart","domainLookupEnd","connectStart","connectEnd","secureConnectionStart","requestStart","responseEnd","encodedBodySize","decodedBodySize","redirectCount","unloadEventEnd","unloadEventStart","nextHopProtocol","getPPSMetrics","_interaction$apdex2","_interaction$apdex2$","payload","PPSMetricsAtTTAI","assign","PPSMetricsAtTTI","getSSRProperties","getBrowserMetadata","data","navigator","userAgent","browser","getBrowserName","getBrowserVersion","hardwareConcurrency","deviceMemory","connection","effectiveType","rtt","downlink","getTracingContextData","trace","tracingContextData","traceId","spanId","browserTimeOrigin","timeOrigin","toFixed","optimizeLabelStack","ls","n","s","optimizeCustomData","customData","legacyMetrics","customDataMap","_result$get$data","_result$get","label","value","get","set","Map","legacyMetricsFiltered","currentValue","custom","_result$get$data2","_result$get2","labelValue","values","optimizeRedirects","redirects","lastRedirectTime","sort","b","time","redirect","fromInteractionName","optimizeSpans","spans","span","optimizeRequestInfo","requestInfo","reqInfo","networkStart","networkComplete","optimizeCustomTimings","customTimings","keys","objectToArray","getBM3SubmetricsTimings","submetrics","childSubmetrics","newKey","getBm3TrackerTimings","interactionLegacyMetrics","_item$config","_item$marks","fmp","source","pageVisibleState","createInteractionMetricsPayload","interactionId","_window$location","_config$additionalPay","interactionPayloadStart","now","Error","ufoName","knownSegments","rate","routeName","featureFlags","previousInteractionName","isPreviousInteractionAborted","abortedByInteractionName","pageVisibilityAtTTI","pageVisibilityAtTTAI","segments","killswitchNestedSegments","isDetailedPayload","isPageLoad","calculatePageVisibilityFromTheStartOfPageLoad","enableBetterPageVisibilityApi","moreAccuratePageVisibilityAtTTI","moreAccuratePageVisibilityAtTTAI","newUFOName","actionSubject","action","eventType","tags","attributes","properties","product","version","payloadSource","region","additionalPayloadData","interactionMetrics","namePrefix","segmentPrefix","experimental__pageVisibilityAtTTI","experimental__pageVisibilityAtTTAI","others","reactProfilerTimings","commitTime","actualDuration","mountCount","rerenderCount","renderDuration","_config$ssr","_config$ssr2","_config$ssr3","SSRDoneTimeValue","ssr","getSSRDoneTime","_config$getDoneMark","_config3","SSRDoneTime","isBM3ConfigSSRDoneAsFmp","metaData","__legacy__bm3ConfigSSRDoneAsFmp","isUFOConfigSSRDoneAsFmp","getPageLoadInteractionMetrics","errors","holdActive","holdInfo","hold","ignoreOnSubmit","bundleEvalTimings","resourceTimings","getDetailedInteractionMetrics","_config$ssr4","initialPageLoadExtraTimings","SSRTimings","getPageLoadDetailedInteractionMetrics","createPayloads","ufoNameOverride","ufoNameOverrides","metricKey","getUfoNameOverride"],"sourceRoot":""}