@atlaskit/react-ufo 3.14.3 → 3.14.4

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.
Files changed (111) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/cjs/create-payload/critical-metrics-payload/index.js +38 -0
  3. package/dist/cjs/create-payload/critical-metrics-payload/root-metrics.js +180 -0
  4. package/dist/cjs/create-payload/critical-metrics-payload/segment-metrics/create-segment-metrics.js +251 -0
  5. package/dist/cjs/create-payload/critical-metrics-payload/segment-metrics/get-is-root-segment.js +9 -0
  6. package/dist/cjs/create-payload/critical-metrics-payload/segment-metrics/get-segment-id.js +15 -0
  7. package/dist/cjs/create-payload/critical-metrics-payload/segment-metrics/get-segment-status.js +59 -0
  8. package/dist/cjs/create-payload/critical-metrics-payload/segment-metrics/has-segment-failed.js +17 -0
  9. package/dist/cjs/create-payload/critical-metrics-payload/segment-metrics/is-label-stack-under-segment.js +11 -0
  10. package/dist/cjs/create-payload/critical-metrics-payload/types.js +5 -0
  11. package/dist/cjs/create-payload/index.js +122 -214
  12. package/dist/cjs/create-payload/utils/find-matching-legacy-metric.js +15 -0
  13. package/dist/cjs/create-payload/utils/get-browser-metadata.js +87 -0
  14. package/dist/cjs/create-payload/utils/get-fmp.js +52 -0
  15. package/dist/cjs/create-payload/utils/get-navigation-metrics.js +66 -0
  16. package/dist/cjs/create-payload/utils/get-paint-metrics.js +124 -0
  17. package/dist/cjs/create-payload/utils/get-payload-size.js +17 -0
  18. package/dist/cjs/create-payload/utils/get-react-ufo-payload-version.js +3 -1
  19. package/dist/cjs/create-payload/utils/get-ssr-success.js +15 -0
  20. package/dist/cjs/create-payload/utils/get-ttai.js +14 -0
  21. package/dist/cjs/create-payload/utils/get-tti.js +38 -0
  22. package/dist/cjs/interaction-metrics/index.js +25 -0
  23. package/dist/es2019/create-payload/critical-metrics-payload/index.js +6 -0
  24. package/dist/es2019/create-payload/critical-metrics-payload/root-metrics.js +166 -0
  25. package/dist/es2019/create-payload/critical-metrics-payload/segment-metrics/create-segment-metrics.js +155 -0
  26. package/dist/es2019/create-payload/critical-metrics-payload/segment-metrics/get-is-root-segment.js +3 -0
  27. package/dist/es2019/create-payload/critical-metrics-payload/segment-metrics/get-segment-id.js +9 -0
  28. package/dist/es2019/create-payload/critical-metrics-payload/segment-metrics/get-segment-status.js +40 -0
  29. package/dist/es2019/create-payload/critical-metrics-payload/segment-metrics/has-segment-failed.js +10 -0
  30. package/dist/es2019/create-payload/critical-metrics-payload/segment-metrics/is-label-stack-under-segment.js +5 -0
  31. package/dist/es2019/create-payload/critical-metrics-payload/types.js +1 -0
  32. package/dist/es2019/create-payload/index.js +55 -151
  33. package/dist/es2019/create-payload/utils/find-matching-legacy-metric.js +7 -0
  34. package/dist/es2019/create-payload/utils/get-browser-metadata.js +79 -0
  35. package/dist/es2019/create-payload/utils/get-fmp.js +47 -0
  36. package/dist/es2019/create-payload/utils/get-navigation-metrics.js +59 -0
  37. package/dist/es2019/create-payload/utils/get-paint-metrics.js +78 -0
  38. package/dist/es2019/create-payload/utils/get-payload-size.js +11 -0
  39. package/dist/es2019/create-payload/utils/get-react-ufo-payload-version.js +2 -1
  40. package/dist/es2019/create-payload/utils/get-ssr-success.js +7 -0
  41. package/dist/es2019/create-payload/utils/get-ttai.js +9 -0
  42. package/dist/es2019/create-payload/utils/get-tti.js +35 -0
  43. package/dist/es2019/interaction-metrics/index.js +24 -0
  44. package/dist/esm/create-payload/critical-metrics-payload/index.js +31 -0
  45. package/dist/esm/create-payload/critical-metrics-payload/root-metrics.js +174 -0
  46. package/dist/esm/create-payload/critical-metrics-payload/segment-metrics/create-segment-metrics.js +244 -0
  47. package/dist/esm/create-payload/critical-metrics-payload/segment-metrics/get-is-root-segment.js +3 -0
  48. package/dist/esm/create-payload/critical-metrics-payload/segment-metrics/get-segment-id.js +9 -0
  49. package/dist/esm/create-payload/critical-metrics-payload/segment-metrics/get-segment-status.js +52 -0
  50. package/dist/esm/create-payload/critical-metrics-payload/segment-metrics/has-segment-failed.js +10 -0
  51. package/dist/esm/create-payload/critical-metrics-payload/segment-metrics/is-label-stack-under-segment.js +5 -0
  52. package/dist/esm/create-payload/critical-metrics-payload/types.js +1 -0
  53. package/dist/esm/create-payload/index.js +121 -210
  54. package/dist/esm/create-payload/utils/find-matching-legacy-metric.js +9 -0
  55. package/dist/esm/create-payload/utils/get-browser-metadata.js +79 -0
  56. package/dist/esm/create-payload/utils/get-fmp.js +47 -0
  57. package/dist/esm/create-payload/utils/get-navigation-metrics.js +59 -0
  58. package/dist/esm/create-payload/utils/get-paint-metrics.js +119 -0
  59. package/dist/esm/create-payload/utils/get-payload-size.js +11 -0
  60. package/dist/esm/create-payload/utils/get-react-ufo-payload-version.js +2 -1
  61. package/dist/esm/create-payload/utils/get-ssr-success.js +7 -0
  62. package/dist/esm/create-payload/utils/get-ttai.js +7 -0
  63. package/dist/esm/create-payload/utils/get-tti.js +33 -0
  64. package/dist/esm/interaction-metrics/index.js +24 -0
  65. package/dist/types/common/common/types.d.ts +1 -1
  66. package/dist/types/common/react-ufo-payload-schema.d.ts +23 -2
  67. package/dist/types/create-payload/critical-metrics-payload/index.d.ts +6 -0
  68. package/dist/types/create-payload/critical-metrics-payload/root-metrics.d.ts +7 -0
  69. package/dist/types/create-payload/critical-metrics-payload/segment-metrics/create-segment-metrics.d.ts +3 -0
  70. package/dist/types/create-payload/critical-metrics-payload/segment-metrics/get-is-root-segment.d.ts +2 -0
  71. package/dist/types/create-payload/critical-metrics-payload/segment-metrics/get-segment-id.d.ts +2 -0
  72. package/dist/types/create-payload/critical-metrics-payload/segment-metrics/get-segment-status.d.ts +7 -0
  73. package/dist/types/create-payload/critical-metrics-payload/segment-metrics/has-segment-failed.d.ts +2 -0
  74. package/dist/types/create-payload/critical-metrics-payload/segment-metrics/is-label-stack-under-segment.d.ts +2 -0
  75. package/dist/types/create-payload/critical-metrics-payload/types.d.ts +128 -0
  76. package/dist/types/create-payload/index.d.ts +339 -834
  77. package/dist/types/create-payload/utils/find-matching-legacy-metric.d.ts +5 -0
  78. package/dist/types/create-payload/utils/get-browser-metadata.d.ts +21 -0
  79. package/dist/types/create-payload/utils/get-fmp.d.ts +6 -0
  80. package/dist/types/create-payload/utils/get-navigation-metrics.d.ts +29 -0
  81. package/dist/types/create-payload/utils/get-paint-metrics.d.ts +13 -0
  82. package/dist/types/create-payload/utils/get-payload-size.d.ts +1 -0
  83. package/dist/types/create-payload/utils/get-react-ufo-payload-version.d.ts +2 -1
  84. package/dist/types/create-payload/utils/get-ssr-success.d.ts +2 -0
  85. package/dist/types/create-payload/utils/get-ttai.d.ts +2 -0
  86. package/dist/types/create-payload/utils/get-tti.d.ts +7 -0
  87. package/dist/types/interaction-metrics/index.d.ts +1 -0
  88. package/dist/types-ts4.5/common/common/types.d.ts +1 -1
  89. package/dist/types-ts4.5/common/react-ufo-payload-schema.d.ts +23 -2
  90. package/dist/types-ts4.5/create-payload/critical-metrics-payload/index.d.ts +6 -0
  91. package/dist/types-ts4.5/create-payload/critical-metrics-payload/root-metrics.d.ts +7 -0
  92. package/dist/types-ts4.5/create-payload/critical-metrics-payload/segment-metrics/create-segment-metrics.d.ts +3 -0
  93. package/dist/types-ts4.5/create-payload/critical-metrics-payload/segment-metrics/get-is-root-segment.d.ts +2 -0
  94. package/dist/types-ts4.5/create-payload/critical-metrics-payload/segment-metrics/get-segment-id.d.ts +2 -0
  95. package/dist/types-ts4.5/create-payload/critical-metrics-payload/segment-metrics/get-segment-status.d.ts +7 -0
  96. package/dist/types-ts4.5/create-payload/critical-metrics-payload/segment-metrics/has-segment-failed.d.ts +2 -0
  97. package/dist/types-ts4.5/create-payload/critical-metrics-payload/segment-metrics/is-label-stack-under-segment.d.ts +2 -0
  98. package/dist/types-ts4.5/create-payload/critical-metrics-payload/types.d.ts +130 -0
  99. package/dist/types-ts4.5/create-payload/index.d.ts +339 -834
  100. package/dist/types-ts4.5/create-payload/utils/find-matching-legacy-metric.d.ts +5 -0
  101. package/dist/types-ts4.5/create-payload/utils/get-browser-metadata.d.ts +21 -0
  102. package/dist/types-ts4.5/create-payload/utils/get-fmp.d.ts +6 -0
  103. package/dist/types-ts4.5/create-payload/utils/get-navigation-metrics.d.ts +29 -0
  104. package/dist/types-ts4.5/create-payload/utils/get-paint-metrics.d.ts +13 -0
  105. package/dist/types-ts4.5/create-payload/utils/get-payload-size.d.ts +1 -0
  106. package/dist/types-ts4.5/create-payload/utils/get-react-ufo-payload-version.d.ts +2 -1
  107. package/dist/types-ts4.5/create-payload/utils/get-ssr-success.d.ts +2 -0
  108. package/dist/types-ts4.5/create-payload/utils/get-ttai.d.ts +2 -0
  109. package/dist/types-ts4.5/create-payload/utils/get-tti.d.ts +7 -0
  110. package/dist/types-ts4.5/interaction-metrics/index.d.ts +1 -0
  111. package/package.json +5 -1
@@ -0,0 +1,5 @@
1
+ import type { BM3Event, InteractionMetrics } from '../../common';
2
+ /**
3
+ * Find matching legacy metric by experience name and type
4
+ */
5
+ export declare function findMatchingLegacyMetric(interaction: InteractionMetrics, experienceName: string): BM3Event | undefined;
@@ -0,0 +1,21 @@
1
+ export default function getBrowserMetadata(): {
2
+ browser?: {
3
+ name: string;
4
+ version: string;
5
+ } | undefined;
6
+ device?: {
7
+ cpus?: number | undefined;
8
+ memory?: number | undefined;
9
+ } | undefined;
10
+ network?: {
11
+ effectiveType: string;
12
+ rtt: number;
13
+ downlink: number;
14
+ } | undefined;
15
+ time: {
16
+ localHour: number;
17
+ localDayOfWeek: number;
18
+ localTimezoneOffset: number;
19
+ };
20
+ };
21
+ export declare function getBrowserMetadataToLegacyFormat(): Record<string, any>;
@@ -0,0 +1,6 @@
1
+ import type { InteractionMetrics } from '../../common';
2
+ /**
3
+ * Calculate FMP (First Meaningful Paint) based on interaction type and configuration
4
+ * FMP is calculated based on legacy metrics or marks depending on interaction type and configuration
5
+ */
6
+ export declare function getFMP(interaction: InteractionMetrics, experienceName: string): number | undefined;
@@ -0,0 +1,29 @@
1
+ import type { InteractionType } from '../../common';
2
+ export interface NavigationMetrics {
3
+ redirectStart: number;
4
+ redirectEnd: number;
5
+ fetchStart: number;
6
+ domainLookupStart: number;
7
+ domainLookupEnd: number;
8
+ connectStart: number;
9
+ connectEnd: number;
10
+ secureConnectionStart: number;
11
+ requestStart: number;
12
+ responseStart: number;
13
+ responseEnd: number;
14
+ encodedBodySize: number;
15
+ decodedBodySize: number;
16
+ transferSize: number;
17
+ redirectCount: number;
18
+ type: string;
19
+ unloadEventEnd: number;
20
+ unloadEventStart: number;
21
+ workerStart: number;
22
+ nextHopProtocol: string;
23
+ }
24
+ export default function getNavigationMetrics(type: InteractionType): NavigationMetrics | null;
25
+ export declare function getNavigationMetricsToLegacyFormat(type: InteractionType): {
26
+ 'metrics:navigation'?: undefined;
27
+ } | {
28
+ 'metrics:navigation': NavigationMetrics;
29
+ };
@@ -0,0 +1,13 @@
1
+ import type { InteractionType } from '../../common';
2
+ export interface PaintMetrics {
3
+ fp?: number;
4
+ fcp?: number;
5
+ lcp?: number;
6
+ }
7
+ export interface LegacyPaintMetrics {
8
+ 'metric:fp'?: number;
9
+ 'metric:fcp'?: number;
10
+ 'metric:lcp'?: number;
11
+ }
12
+ export default function getPaintMetrics(type: InteractionType, end: number): Promise<PaintMetrics>;
13
+ export declare function getPaintMetricsToLegacyFormat(type: InteractionType, end: number): Promise<LegacyPaintMetrics>;
@@ -0,0 +1 @@
1
+ export default function getPayloadSize(payload: object): number;
@@ -1,2 +1,3 @@
1
1
  import type { InteractionType } from '../../interaction-metrics';
2
- export declare function getReactUFOPayloadVersion(interactionType: InteractionType, isPostInteractionLog?: boolean): "1.0.1" | "2.0.0";
2
+ export declare const LATEST_REACT_UFO_PAYLOAD_VERSION = "2.0.0";
3
+ export declare function getReactUFOPayloadVersion(interactionType: InteractionType, isPostInteractionLog?: boolean): "2.0.0" | "1.0.1";
@@ -0,0 +1,2 @@
1
+ import type { InteractionType } from '../../common';
2
+ export default function getSSRSuccess(type: InteractionType): boolean | undefined;
@@ -0,0 +1,2 @@
1
+ import type { InteractionMetrics } from '../../common';
2
+ export default function getTTAI(interaction: InteractionMetrics): number | undefined;
@@ -0,0 +1,7 @@
1
+ import type { InteractionMetrics } from '../../common';
2
+ /**
3
+ * Calculate TTI (Time to Interactive) based on server-side logic
4
+ * TTI is the time from interaction start to the end of the first matching legacy metric,
5
+ * or falls back to apdex/UFO end time if no legacy metrics exist
6
+ */
7
+ export declare function getTTI(interaction: InteractionMetrics, experienceName: string): number | undefined;
@@ -12,6 +12,7 @@ export declare function remove(interactionId: string): void;
12
12
  export declare function updatePageLoadInteractionName(ufoName: string, routeName?: string | null | undefined): void;
13
13
  export declare function addMetadata(interactionId: string, data: Record<string, unknown>): void;
14
14
  export declare function addCustomData(interactionId: string, labelStack: LabelStack, data: CustomData): void;
15
+ export declare function addCohortingCustomData(interactionId: string, key: string, value: number | boolean | string | null | undefined): void;
15
16
  export declare function addCustomTiming(interactionId: string, labelStack: LabelStack, data: CustomTiming): void;
16
17
  export declare function addMark(interactionId: string, type: MarkType, name: string, labelStack: LabelStack | null, time?: number): void;
17
18
  export declare function addMarkToAll(type: MarkType, name: string, labelStack: LabelStack | null, time?: number): void;
@@ -101,6 +101,7 @@ export interface InteractionMetrics {
101
101
  labelStack: LabelStack;
102
102
  data: CustomData;
103
103
  }[];
104
+ cohortingCustomData: Map<string, number | boolean | string | null | undefined>;
104
105
  customTimings: {
105
106
  labelStack: LabelStack;
106
107
  data: CustomTiming;
@@ -142,7 +143,6 @@ export interface InteractionMetrics {
142
143
  * { name: 'issue-navigator', segmentId: 'xxx' },
143
144
  * { name: 'ui', segmentId: 'xxx' }
144
145
  * ]
145
- * ```
146
146
  */
147
147
  responsiveness?: ResponsivenessMetric;
148
148
  labelStack: LabelStack | null;
@@ -1,7 +1,7 @@
1
1
  import { createPayloads } from '../create-payload';
2
2
  import { type LabelStack } from '../interaction-context';
3
3
  import { VCObserver } from '../vc/vc-observer';
4
- import type { AbortReasonType, ApdexType, InteractionError, InteractionType, SegmentInfo } from './common/types';
4
+ import type { AbortReasonType, ApdexType, HoldActive, InteractionError, InteractionType, SegmentInfo } from './common/types';
5
5
  import type { RevisionPayload } from './vc/types';
6
6
  type ExtractPromise<T> = T extends Promise<infer U> ? U : never;
7
7
  export type PageVisibility = 'hidden' | 'mixed' | 'visible';
@@ -36,6 +36,11 @@ export type HoldInfo = {
36
36
  startTime: number;
37
37
  endTime: number;
38
38
  };
39
+ export type OptimizedHoldInfo = {
40
+ labelStack: string;
41
+ startTime: number;
42
+ endTime: number;
43
+ };
39
44
  export type VCParts = (typeof VCObserver.VCParts)[number];
40
45
  export type LeafSegment = {
41
46
  n: string;
@@ -109,6 +114,7 @@ export type ReactUFOPayload = {
109
114
  };
110
115
  'ufo:errors:globalCount': number;
111
116
  'ufo:errors:count': number;
117
+ 'ufo:payloadTime'?: number;
112
118
  interactionMetrics: {
113
119
  namePrefix: string;
114
120
  segmentPrefix: string;
@@ -136,8 +142,23 @@ export type ReactUFOPayload = {
136
142
  resourceTimings: ResourceTiming[];
137
143
  segments: SegmentInfo[] | RootSegment;
138
144
  reactProfilerTimings: ReactProfilerTiming[];
139
- holdInfo: HoldInfo[];
145
+ holdInfo: OptimizedHoldInfo[];
140
146
  errors: InteractionError[];
147
+ responsiveness?: {
148
+ inputDelay?: number;
149
+ experimentalInputToNextPaint?: number;
150
+ };
151
+ customData: Array<{
152
+ labelStack: LabelStack;
153
+ data: any;
154
+ }>;
155
+ SSRTimings: Array<{
156
+ label: string;
157
+ data: any;
158
+ }>;
159
+ holdActive: HoldActive[];
160
+ unknownElementName?: string;
161
+ unknownElementHierarchy?: string;
141
162
  };
142
163
  'ufo:vc:rev': RevisionPayload;
143
164
  'ufo:vc:ratios': Record<string, number>;
@@ -0,0 +1,6 @@
1
+ import type { InteractionMetrics } from '../../common';
2
+ import type { VCResult } from '../../common/vc/types';
3
+ import { CriticalMetricsPayload } from './types';
4
+ export declare function createCriticalMetricsPayloads(interactionId: string, interaction: InteractionMetrics, vcMetrics?: VCResult & {
5
+ 'metric:vc90'?: number | null;
6
+ }): Promise<CriticalMetricsPayload[]>;
@@ -0,0 +1,7 @@
1
+ import type { InteractionMetrics } from '../../common';
2
+ import type { VCResult } from '../../common/vc/types';
3
+ import type { CriticalMetricsPayload } from './types';
4
+ export type { CriticalMetricsPayload, CriticalMetricsPayloadProperties } from './types';
5
+ export declare function createRootCriticalMetricsPayload(interactionId: string, interaction: InteractionMetrics, vcMetrics?: VCResult & {
6
+ 'metric:vc90'?: number | null;
7
+ }): Promise<CriticalMetricsPayload>;
@@ -0,0 +1,3 @@
1
+ import { InteractionMetrics } from '../../../common';
2
+ import { CriticalMetricsPayload } from '../types';
3
+ export declare function createSegmentMetricsPayloads(interactionId: string, interaction: InteractionMetrics): Promise<CriticalMetricsPayload[]>;
@@ -0,0 +1,2 @@
1
+ import type { LabelStack } from '../../../interaction-context';
2
+ export default function getIsRootSegment(labelStack: LabelStack): boolean;
@@ -0,0 +1,2 @@
1
+ import type { LabelStack } from '../../../interaction-context';
2
+ export default function getSegmentId(labelStack: LabelStack): string | undefined;
@@ -0,0 +1,7 @@
1
+ import type { InteractionMetrics, LabelStack } from '../../../common';
2
+ export default function getSegmentStatus(interaction: InteractionMetrics, segment: {
3
+ labelStack: LabelStack;
4
+ }): {
5
+ status: string;
6
+ abortReason: string | undefined;
7
+ };
@@ -0,0 +1,2 @@
1
+ import type { InteractionMetrics } from '../../../common';
2
+ export default function hasSegmentFailed(errors: InteractionMetrics['errors'], segmentId: string): boolean;
@@ -0,0 +1,2 @@
1
+ import type { LabelStack } from '../../../interaction-context';
2
+ export default function isLabelStackUnderSegment(labelStack: LabelStack, segmentId: string): boolean;
@@ -0,0 +1,130 @@
1
+ import type { InteractionType } from '../../common';
2
+ import { NavigationMetrics } from '../utils/get-navigation-metrics';
3
+ export interface CriticalMetricsPayloadProperties {
4
+ 'event:hostname': string;
5
+ 'event:product': string;
6
+ 'event:schema': string;
7
+ 'event:region': string;
8
+ 'event:source': {
9
+ name: string;
10
+ version: string;
11
+ };
12
+ 'experience:key': string;
13
+ 'experience:name': string;
14
+ browser?: {
15
+ name: string;
16
+ version: string;
17
+ };
18
+ device?: {
19
+ cpus?: number;
20
+ memory?: number;
21
+ };
22
+ network?: {
23
+ effectiveType: string;
24
+ rtt: number;
25
+ downlink: number;
26
+ };
27
+ time: {
28
+ localHour: number;
29
+ localDayOfWeek: number;
30
+ localTimezoneOffset: number;
31
+ };
32
+ metrics: {
33
+ /**
34
+ * First Paint
35
+ */
36
+ fp?: number;
37
+ /**
38
+ * First Contentful Paint
39
+ */
40
+ fcp?: number;
41
+ /**
42
+ * Largest Contentful Paint
43
+ */
44
+ lcp?: number;
45
+ /**
46
+ * Time to App Idle
47
+ */
48
+ ttai?: number;
49
+ /**
50
+ * Time to Interactive
51
+ * This is legacy metric, that was marked manually by the team
52
+ */
53
+ tti?: number;
54
+ /**
55
+ * First Meaningful Paint
56
+ */
57
+ fmp?: number;
58
+ /**
59
+ * Total Blocking Time
60
+ */
61
+ tbt?: number;
62
+ /**
63
+ * Total Blocking Time Observed
64
+ */
65
+ tbtObserved?: number;
66
+ /**
67
+ * Cumulative Layout Shift
68
+ */
69
+ cls?: number;
70
+ /**
71
+ * Time to Visually Complete
72
+ * Contains array of multiple versions of the metric
73
+ */
74
+ ttvc?: {
75
+ /**
76
+ * Revision of the metric. e.g. 'fy25.02'
77
+ */
78
+ revision: string;
79
+ /**
80
+ * Time to Visually Complete 90% of the view port
81
+ */
82
+ vc90: number;
83
+ }[];
84
+ /**
85
+ * Earliest Hold Start, for Interaction Response
86
+ */
87
+ earliestHoldStart?: number;
88
+ /**
89
+ * Input Delay
90
+ */
91
+ inputDelay?: number;
92
+ /**
93
+ * Input to Next Paint
94
+ */
95
+ inp?: number;
96
+ /**
97
+ * Navigation metrics, only valid for initial page load from:
98
+ * https://www.w3.org/TR/resource-timing/
99
+ * https://www.w3.org/TR/navigation-timing-2/
100
+ */
101
+ navigation?: NavigationMetrics;
102
+ };
103
+ interactionId: string;
104
+ type: InteractionType | 'page_segment_load';
105
+ rate: number;
106
+ routeName?: string;
107
+ start: number;
108
+ end: number;
109
+ status: string;
110
+ abortReason?: string;
111
+ previousInteractionName?: string;
112
+ isPreviousInteractionAborted?: boolean;
113
+ abortedByInteractionName?: string;
114
+ pageVisibilityAtTTAI?: string;
115
+ pageVisibilityAtTTI?: string;
116
+ errorCount: number;
117
+ cohortingCustomData?: Record<string, number | boolean | string | null | undefined>;
118
+ }
119
+ export interface CriticalMetricsPayload {
120
+ actionSubject: 'experience';
121
+ action: 'measured';
122
+ eventType: 'operational';
123
+ source: 'measured';
124
+ tags: [
125
+ 'observability'
126
+ ];
127
+ attributes: {
128
+ properties: CriticalMetricsPayloadProperties;
129
+ };
130
+ }