@atlaskit/react-ufo 3.14.2 → 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.
- package/CHANGELOG.md +16 -0
- package/dist/cjs/create-payload/common/utils/index.js +9 -3
- package/dist/cjs/create-payload/critical-metrics-payload/index.js +38 -0
- package/dist/cjs/create-payload/critical-metrics-payload/root-metrics.js +180 -0
- package/dist/cjs/create-payload/critical-metrics-payload/segment-metrics/create-segment-metrics.js +251 -0
- package/dist/cjs/create-payload/critical-metrics-payload/segment-metrics/get-is-root-segment.js +9 -0
- package/dist/cjs/create-payload/critical-metrics-payload/segment-metrics/get-segment-id.js +15 -0
- package/dist/cjs/create-payload/critical-metrics-payload/segment-metrics/get-segment-status.js +59 -0
- package/dist/cjs/create-payload/critical-metrics-payload/segment-metrics/has-segment-failed.js +17 -0
- package/dist/cjs/create-payload/critical-metrics-payload/segment-metrics/is-label-stack-under-segment.js +11 -0
- package/dist/cjs/create-payload/critical-metrics-payload/types.js +5 -0
- package/dist/cjs/create-payload/index.js +122 -214
- package/dist/cjs/create-payload/utils/find-matching-legacy-metric.js +15 -0
- package/dist/cjs/create-payload/utils/get-browser-metadata.js +87 -0
- package/dist/cjs/create-payload/utils/get-fmp.js +52 -0
- package/dist/cjs/create-payload/utils/get-navigation-metrics.js +66 -0
- package/dist/cjs/create-payload/utils/get-paint-metrics.js +124 -0
- package/dist/cjs/create-payload/utils/get-payload-size.js +17 -0
- package/dist/cjs/create-payload/utils/get-react-ufo-payload-version.js +3 -1
- package/dist/cjs/create-payload/utils/get-ssr-success.js +15 -0
- package/dist/cjs/create-payload/utils/get-ttai.js +14 -0
- package/dist/cjs/create-payload/utils/get-tti.js +38 -0
- package/dist/cjs/interaction-metrics/index.js +25 -0
- package/dist/cjs/segment/segment.js +10 -4
- package/dist/es2019/create-payload/common/utils/index.js +9 -1
- package/dist/es2019/create-payload/critical-metrics-payload/index.js +6 -0
- package/dist/es2019/create-payload/critical-metrics-payload/root-metrics.js +166 -0
- package/dist/es2019/create-payload/critical-metrics-payload/segment-metrics/create-segment-metrics.js +155 -0
- package/dist/es2019/create-payload/critical-metrics-payload/segment-metrics/get-is-root-segment.js +3 -0
- package/dist/es2019/create-payload/critical-metrics-payload/segment-metrics/get-segment-id.js +9 -0
- package/dist/es2019/create-payload/critical-metrics-payload/segment-metrics/get-segment-status.js +40 -0
- package/dist/es2019/create-payload/critical-metrics-payload/segment-metrics/has-segment-failed.js +10 -0
- package/dist/es2019/create-payload/critical-metrics-payload/segment-metrics/is-label-stack-under-segment.js +5 -0
- package/dist/es2019/create-payload/critical-metrics-payload/types.js +1 -0
- package/dist/es2019/create-payload/index.js +55 -151
- package/dist/es2019/create-payload/utils/find-matching-legacy-metric.js +7 -0
- package/dist/es2019/create-payload/utils/get-browser-metadata.js +79 -0
- package/dist/es2019/create-payload/utils/get-fmp.js +47 -0
- package/dist/es2019/create-payload/utils/get-navigation-metrics.js +59 -0
- package/dist/es2019/create-payload/utils/get-paint-metrics.js +78 -0
- package/dist/es2019/create-payload/utils/get-payload-size.js +11 -0
- package/dist/es2019/create-payload/utils/get-react-ufo-payload-version.js +2 -1
- package/dist/es2019/create-payload/utils/get-ssr-success.js +7 -0
- package/dist/es2019/create-payload/utils/get-ttai.js +9 -0
- package/dist/es2019/create-payload/utils/get-tti.js +35 -0
- package/dist/es2019/interaction-metrics/index.js +24 -0
- package/dist/es2019/segment/segment.js +12 -4
- package/dist/esm/create-payload/common/utils/index.js +9 -3
- package/dist/esm/create-payload/critical-metrics-payload/index.js +31 -0
- package/dist/esm/create-payload/critical-metrics-payload/root-metrics.js +174 -0
- package/dist/esm/create-payload/critical-metrics-payload/segment-metrics/create-segment-metrics.js +244 -0
- package/dist/esm/create-payload/critical-metrics-payload/segment-metrics/get-is-root-segment.js +3 -0
- package/dist/esm/create-payload/critical-metrics-payload/segment-metrics/get-segment-id.js +9 -0
- package/dist/esm/create-payload/critical-metrics-payload/segment-metrics/get-segment-status.js +52 -0
- package/dist/esm/create-payload/critical-metrics-payload/segment-metrics/has-segment-failed.js +10 -0
- package/dist/esm/create-payload/critical-metrics-payload/segment-metrics/is-label-stack-under-segment.js +5 -0
- package/dist/esm/create-payload/critical-metrics-payload/types.js +1 -0
- package/dist/esm/create-payload/index.js +121 -210
- package/dist/esm/create-payload/utils/find-matching-legacy-metric.js +9 -0
- package/dist/esm/create-payload/utils/get-browser-metadata.js +79 -0
- package/dist/esm/create-payload/utils/get-fmp.js +47 -0
- package/dist/esm/create-payload/utils/get-navigation-metrics.js +59 -0
- package/dist/esm/create-payload/utils/get-paint-metrics.js +119 -0
- package/dist/esm/create-payload/utils/get-payload-size.js +11 -0
- package/dist/esm/create-payload/utils/get-react-ufo-payload-version.js +2 -1
- package/dist/esm/create-payload/utils/get-ssr-success.js +7 -0
- package/dist/esm/create-payload/utils/get-ttai.js +7 -0
- package/dist/esm/create-payload/utils/get-tti.js +33 -0
- package/dist/esm/interaction-metrics/index.js +24 -0
- package/dist/esm/segment/segment.js +10 -4
- package/dist/types/common/common/types.d.ts +1 -1
- package/dist/types/common/react-ufo-payload-schema.d.ts +23 -2
- package/dist/types/create-payload/common/utils/index.d.ts +3 -0
- package/dist/types/create-payload/critical-metrics-payload/index.d.ts +6 -0
- package/dist/types/create-payload/critical-metrics-payload/root-metrics.d.ts +7 -0
- package/dist/types/create-payload/critical-metrics-payload/segment-metrics/create-segment-metrics.d.ts +3 -0
- package/dist/types/create-payload/critical-metrics-payload/segment-metrics/get-is-root-segment.d.ts +2 -0
- package/dist/types/create-payload/critical-metrics-payload/segment-metrics/get-segment-id.d.ts +2 -0
- package/dist/types/create-payload/critical-metrics-payload/segment-metrics/get-segment-status.d.ts +7 -0
- package/dist/types/create-payload/critical-metrics-payload/segment-metrics/has-segment-failed.d.ts +2 -0
- package/dist/types/create-payload/critical-metrics-payload/segment-metrics/is-label-stack-under-segment.d.ts +2 -0
- package/dist/types/create-payload/critical-metrics-payload/types.d.ts +128 -0
- package/dist/types/create-payload/index.d.ts +979 -834
- package/dist/types/create-payload/utils/find-matching-legacy-metric.d.ts +5 -0
- package/dist/types/create-payload/utils/get-browser-metadata.d.ts +21 -0
- package/dist/types/create-payload/utils/get-fmp.d.ts +6 -0
- package/dist/types/create-payload/utils/get-navigation-metrics.d.ts +29 -0
- package/dist/types/create-payload/utils/get-paint-metrics.d.ts +13 -0
- package/dist/types/create-payload/utils/get-payload-size.d.ts +1 -0
- package/dist/types/create-payload/utils/get-react-ufo-payload-version.d.ts +2 -1
- package/dist/types/create-payload/utils/get-ssr-success.d.ts +2 -0
- package/dist/types/create-payload/utils/get-ttai.d.ts +2 -0
- package/dist/types/create-payload/utils/get-tti.d.ts +7 -0
- package/dist/types/create-post-interaction-log-payload/get-late-mutations.d.ts +1 -1
- package/dist/types/create-post-interaction-log-payload/index.d.ts +4 -4
- package/dist/types/interaction-context/index.d.ts +2 -0
- package/dist/types/interaction-ignore/ufo-interaction-ignore.d.ts +1 -1
- package/dist/types/interaction-metrics/index.d.ts +1 -0
- package/dist/types/segment/third-party-segment.d.ts +1 -1
- package/dist/types/vc/vc-observer-new/viewport-observer/utils/get-component-name-and-child-props.d.ts +2 -2
- package/dist/types-ts4.5/common/common/types.d.ts +1 -1
- package/dist/types-ts4.5/common/react-ufo-payload-schema.d.ts +23 -2
- package/dist/types-ts4.5/create-payload/common/utils/index.d.ts +3 -0
- package/dist/types-ts4.5/create-payload/critical-metrics-payload/index.d.ts +6 -0
- package/dist/types-ts4.5/create-payload/critical-metrics-payload/root-metrics.d.ts +7 -0
- package/dist/types-ts4.5/create-payload/critical-metrics-payload/segment-metrics/create-segment-metrics.d.ts +3 -0
- package/dist/types-ts4.5/create-payload/critical-metrics-payload/segment-metrics/get-is-root-segment.d.ts +2 -0
- package/dist/types-ts4.5/create-payload/critical-metrics-payload/segment-metrics/get-segment-id.d.ts +2 -0
- package/dist/types-ts4.5/create-payload/critical-metrics-payload/segment-metrics/get-segment-status.d.ts +7 -0
- package/dist/types-ts4.5/create-payload/critical-metrics-payload/segment-metrics/has-segment-failed.d.ts +2 -0
- package/dist/types-ts4.5/create-payload/critical-metrics-payload/segment-metrics/is-label-stack-under-segment.d.ts +2 -0
- package/dist/types-ts4.5/create-payload/critical-metrics-payload/types.d.ts +130 -0
- package/dist/types-ts4.5/create-payload/index.d.ts +979 -834
- package/dist/types-ts4.5/create-payload/utils/find-matching-legacy-metric.d.ts +5 -0
- package/dist/types-ts4.5/create-payload/utils/get-browser-metadata.d.ts +21 -0
- package/dist/types-ts4.5/create-payload/utils/get-fmp.d.ts +6 -0
- package/dist/types-ts4.5/create-payload/utils/get-navigation-metrics.d.ts +29 -0
- package/dist/types-ts4.5/create-payload/utils/get-paint-metrics.d.ts +13 -0
- package/dist/types-ts4.5/create-payload/utils/get-payload-size.d.ts +1 -0
- package/dist/types-ts4.5/create-payload/utils/get-react-ufo-payload-version.d.ts +2 -1
- package/dist/types-ts4.5/create-payload/utils/get-ssr-success.d.ts +2 -0
- package/dist/types-ts4.5/create-payload/utils/get-ttai.d.ts +2 -0
- package/dist/types-ts4.5/create-payload/utils/get-tti.d.ts +7 -0
- package/dist/types-ts4.5/create-post-interaction-log-payload/get-late-mutations.d.ts +1 -1
- package/dist/types-ts4.5/create-post-interaction-log-payload/index.d.ts +4 -4
- package/dist/types-ts4.5/interaction-context/index.d.ts +2 -0
- package/dist/types-ts4.5/interaction-ignore/ufo-interaction-ignore.d.ts +1 -1
- package/dist/types-ts4.5/interaction-metrics/index.d.ts +1 -0
- package/dist/types-ts4.5/segment/third-party-segment.d.ts +1 -1
- package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/utils/get-component-name-and-child-props.d.ts +2 -2
- package/package.json +8 -1
|
@@ -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
|
|
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,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;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { LastInteractionFinishInfo } from '../common';
|
|
2
|
-
import { LateMutation } from '../common/react-ufo-payload-schema';
|
|
2
|
+
import type { LateMutation } from '../common/react-ufo-payload-schema';
|
|
3
3
|
import type { RevisionPayloadVCDetails } from '../common/vc/types';
|
|
4
4
|
declare function getLateMutations(vcDetails: RevisionPayloadVCDetails, lastInteractionFinish: LastInteractionFinishInfo, postInteractionFinishVCRatios: Record<string, number>): LateMutation[];
|
|
5
5
|
export default getLateMutations;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type PostInteractionLogOutput } from '../common';
|
|
2
|
-
import { LateMutation } from '../common/react-ufo-payload-schema';
|
|
2
|
+
import type { LateMutation } from '../common/react-ufo-payload-schema';
|
|
3
3
|
declare function createPostInteractionLogPayload({ lastInteractionFinish, reactProfilerTimings, lastInteractionFinishVCResult, postInteractionFinishVCResult, }: PostInteractionLogOutput): {
|
|
4
4
|
actionSubject: string;
|
|
5
5
|
action: string;
|
|
@@ -26,13 +26,13 @@ declare function createPostInteractionLogPayload({ lastInteractionFinish, reactP
|
|
|
26
26
|
vc90: number | null;
|
|
27
27
|
vcClean: boolean;
|
|
28
28
|
type: import("../common").InteractionType;
|
|
29
|
-
id: string;
|
|
30
29
|
abortReason?: import("../common").AbortReasonType | undefined;
|
|
30
|
+
id: string;
|
|
31
|
+
errors: import("../common").InteractionError[];
|
|
31
32
|
abortedByInteractionName?: string | undefined;
|
|
32
33
|
routeName: string | null;
|
|
33
|
-
experimentalVC90?: number | undefined;
|
|
34
34
|
experimentalTTAI?: number | undefined;
|
|
35
|
-
|
|
35
|
+
experimentalVC90?: number | undefined;
|
|
36
36
|
};
|
|
37
37
|
revisedEndTime: number;
|
|
38
38
|
revisedTtai: number;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type Context } from 'react';
|
|
2
2
|
import { type InteractionContextType } from '@atlaskit/interaction-context';
|
|
3
|
+
import { UFOSegmentType } from '../segment/segment';
|
|
3
4
|
export type CustomData = {
|
|
4
5
|
[key: string]: null | string | number | boolean | undefined | CustomData;
|
|
5
6
|
};
|
|
@@ -16,6 +17,7 @@ export type SegmentLabel = Readonly<{
|
|
|
16
17
|
name: string;
|
|
17
18
|
segmentId?: string;
|
|
18
19
|
mode?: 'list' | 'single';
|
|
20
|
+
type?: UFOSegmentType;
|
|
19
21
|
}>;
|
|
20
22
|
export type LabelStack = ReadonlyArray<SegmentLabel | Label>;
|
|
21
23
|
export interface UFOInteractionContextType extends InteractionContextType {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { UFOIgnoreHoldsProps } from '../ignore-holds';
|
|
2
|
+
import { type UFOIgnoreHoldsProps } from '../ignore-holds';
|
|
3
3
|
/**
|
|
4
4
|
* Legacy wrapper component that delegates to `UFOIgnoreHolds`.
|
|
5
5
|
* Use `UFOIgnoreHolds` instead for new implementations.
|
|
@@ -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;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { Props as SegmentProps } from './segment';
|
|
2
|
+
import { type Props as SegmentProps } from './segment';
|
|
3
3
|
export declare function UFOThirdPartySegment(props: Omit<SegmentProps, 'type'>): React.JSX.Element;
|
|
4
4
|
export declare namespace UFOThirdPartySegment {
|
|
5
5
|
var displayName: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { UFOIgnoreHoldsReason } from '../../../../ignore-holds';
|
|
2
|
-
import { VCObserverEntryType } from '../../types';
|
|
1
|
+
import type { UFOIgnoreHoldsReason } from '../../../../ignore-holds';
|
|
2
|
+
import type { VCObserverEntryType } from '../../types';
|
|
3
3
|
export declare function checkWithinComponentAndExtractChildProps<T = string>(node: HTMLElement, targetComponentName: string, childComponentConfig?: {
|
|
4
4
|
componentName: string;
|
|
5
5
|
propName: string;
|
|
@@ -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:
|
|
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>;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { LabelStack, SegmentLabel } from '../../../interaction-context';
|
|
2
|
+
import { UFOSegmentType } from '../../../segment/segment';
|
|
2
3
|
import { getReactUFOPayloadVersion } from '../../utils/get-react-ufo-payload-version';
|
|
3
4
|
export type SegmentItem = {
|
|
4
5
|
n: string;
|
|
5
6
|
c?: Record<string, SegmentItem>;
|
|
7
|
+
t?: UFOSegmentType;
|
|
6
8
|
};
|
|
7
9
|
export type SegmentTree = {
|
|
8
10
|
r: SegmentItem;
|
|
@@ -13,6 +15,7 @@ export declare function buildSegmentTree(labelStacks: LabelStack[]): SegmentTree
|
|
|
13
15
|
export declare function stringifyLabelStackFully(labelStack: LabelStack): string;
|
|
14
16
|
export declare function labelStackStartWith(labelStack: LabelStack, startWith: LabelStack): boolean;
|
|
15
17
|
export declare function optimizeLabelStack(labelStack: LabelStack, reactUFOVersion: ReturnType<typeof getReactUFOPayloadVersion>): string | {
|
|
18
|
+
t?: UFOSegmentType | undefined;
|
|
16
19
|
s?: string | undefined;
|
|
17
20
|
n: string;
|
|
18
21
|
}[];
|
|
@@ -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,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
|
+
}
|