@atlaskit/react-ufo 2.4.5 → 2.4.7

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 (71) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/create-experimental-interaction-metrics-payload/package.json +15 -0
  3. package/dist/cjs/config/index.js +40 -18
  4. package/dist/cjs/create-experimental-interaction-metrics-payload/index.js +89 -0
  5. package/dist/cjs/create-payload/common/utils/index.js +85 -1
  6. package/dist/cjs/create-payload/index.js +49 -85
  7. package/dist/cjs/create-post-interaction-log-payload/index.js +1 -4
  8. package/dist/cjs/interaction-metrics/common/constants.js +7 -1
  9. package/dist/cjs/interaction-metrics/common/index.js +151 -0
  10. package/dist/cjs/interaction-metrics/index.js +139 -204
  11. package/dist/cjs/interaction-metrics/post-interaction-log.js +6 -2
  12. package/dist/cjs/interaction-metrics-init/index.js +27 -9
  13. package/dist/cjs/load-hold/UFOLoadHold.js +3 -4
  14. package/dist/cjs/segment/segment.js +7 -9
  15. package/dist/cjs/trace-pageload/index.js +2 -1
  16. package/dist/cjs/vc/vc-observer/observers/index.js +1 -40
  17. package/dist/es2019/config/index.js +22 -0
  18. package/dist/es2019/create-experimental-interaction-metrics-payload/index.js +67 -0
  19. package/dist/es2019/create-payload/common/utils/index.js +86 -1
  20. package/dist/es2019/create-payload/index.js +40 -81
  21. package/dist/es2019/create-post-interaction-log-payload/index.js +1 -4
  22. package/dist/es2019/interaction-metrics/common/constants.js +6 -0
  23. package/dist/es2019/interaction-metrics/common/index.js +103 -0
  24. package/dist/es2019/interaction-metrics/index.js +92 -129
  25. package/dist/es2019/interaction-metrics/post-interaction-log.js +6 -2
  26. package/dist/es2019/interaction-metrics-init/index.js +21 -8
  27. package/dist/es2019/load-hold/UFOLoadHold.js +3 -4
  28. package/dist/es2019/segment/segment.js +6 -12
  29. package/dist/es2019/trace-pageload/index.js +1 -1
  30. package/dist/es2019/vc/vc-observer/observers/index.js +1 -20
  31. package/dist/esm/config/index.js +39 -18
  32. package/dist/esm/create-experimental-interaction-metrics-payload/index.js +81 -0
  33. package/dist/esm/create-payload/common/utils/index.js +80 -1
  34. package/dist/esm/create-payload/index.js +45 -83
  35. package/dist/esm/create-post-interaction-log-payload/index.js +1 -4
  36. package/dist/esm/interaction-metrics/common/constants.js +6 -0
  37. package/dist/esm/interaction-metrics/common/index.js +132 -0
  38. package/dist/esm/interaction-metrics/index.js +87 -156
  39. package/dist/esm/interaction-metrics/post-interaction-log.js +6 -2
  40. package/dist/esm/interaction-metrics-init/index.js +24 -10
  41. package/dist/esm/load-hold/UFOLoadHold.js +3 -4
  42. package/dist/esm/segment/segment.js +7 -9
  43. package/dist/esm/trace-pageload/index.js +1 -1
  44. package/dist/esm/vc/vc-observer/observers/index.js +1 -40
  45. package/dist/types/common/common/types.d.ts +9 -5
  46. package/dist/types/config/index.d.ts +6 -0
  47. package/dist/types/create-experimental-interaction-metrics-payload/index.d.ts +31 -0
  48. package/dist/types/create-payload/common/utils/index.d.ts +12 -0
  49. package/dist/types/create-payload/index.d.ts +13 -5716
  50. package/dist/types/create-post-interaction-log-payload/index.d.ts +2 -0
  51. package/dist/types/interaction-metrics/common/constants.d.ts +31 -1
  52. package/dist/types/interaction-metrics/common/index.d.ts +16 -0
  53. package/dist/types/interaction-metrics/index.d.ts +4 -15
  54. package/dist/types/interaction-metrics/post-interaction-log.d.ts +1 -1
  55. package/dist/types/load-hold/UFOLoadHold.d.ts +1 -2
  56. package/dist/types/trace-pageload/index.d.ts +1 -0
  57. package/dist/types/vc/vc-observer/observers/index.d.ts +0 -1
  58. package/dist/types-ts4.5/common/common/types.d.ts +9 -5
  59. package/dist/types-ts4.5/config/index.d.ts +6 -0
  60. package/dist/types-ts4.5/create-experimental-interaction-metrics-payload/index.d.ts +31 -0
  61. package/dist/types-ts4.5/create-payload/common/utils/index.d.ts +12 -0
  62. package/dist/types-ts4.5/create-payload/index.d.ts +13 -5716
  63. package/dist/types-ts4.5/create-post-interaction-log-payload/index.d.ts +2 -0
  64. package/dist/types-ts4.5/interaction-metrics/common/constants.d.ts +31 -1
  65. package/dist/types-ts4.5/interaction-metrics/common/index.d.ts +16 -0
  66. package/dist/types-ts4.5/interaction-metrics/index.d.ts +4 -15
  67. package/dist/types-ts4.5/interaction-metrics/post-interaction-log.d.ts +1 -1
  68. package/dist/types-ts4.5/load-hold/UFOLoadHold.d.ts +1 -2
  69. package/dist/types-ts4.5/trace-pageload/index.d.ts +1 -0
  70. package/dist/types-ts4.5/vc/vc-observer/observers/index.d.ts +0 -1
  71. package/package.json +2 -1
@@ -30,6 +30,8 @@ export default function createPostInteractionLogPayload({ lastInteractionFinish,
30
30
  abortReason?: import("../common").AbortReasonType | undefined;
31
31
  abortedByInteractionName?: string | undefined;
32
32
  routeName: string | null;
33
+ experimentalVC90?: number | undefined;
34
+ experimentalTTAI?: number | undefined;
33
35
  };
34
36
  revisedEndTime: number;
35
37
  revisedTtai: number;
@@ -1,3 +1,33 @@
1
- import type { InteractionMetrics } from '../../common';
1
+ import type { InteractionMetrics, SegmentInfo } from '../../common';
2
+ import type { FeatureFlagValue } from '../../feature-flags-accessed';
2
3
  declare const interactions: Map<string, InteractionMetrics>;
4
+ export declare const CLEANUP_TIMEOUT: number;
5
+ export declare const CLEANUP_TIMEOUT_AFTER_APDEX: number;
6
+ export type SegmentObserver = {
7
+ onAdd: (segment: SegmentInfo) => void;
8
+ onRemove: (segment: SegmentInfo) => void;
9
+ };
10
+ export declare const interactionQueue: {
11
+ id: string;
12
+ data: InteractionMetrics;
13
+ }[];
14
+ export declare const segmentCache: Map<string, SegmentInfo>;
15
+ export declare const segmentObservers: SegmentObserver[];
16
+ export declare const moduleLoadingRequests: Record<string, {
17
+ start: number;
18
+ timeoutId: ReturnType<typeof setTimeout> | number | undefined;
19
+ }>;
20
+ declare global {
21
+ interface Window {
22
+ __REACT_UFO_ENABLE_PERF_TRACING?: boolean;
23
+ __UFO_COMPACT_PAYLOAD__?: boolean;
24
+ __CRITERION__?: {
25
+ addFeatureFlagAccessed?: (flagName: string, flagValue: FeatureFlagValue) => void;
26
+ addUFOHold?: (id: string, name: string, labelStack: string, startTime: number) => void;
27
+ removeUFOHold?: (id: string) => void;
28
+ getFeatureFlagOverride?: (flagName: string) => boolean | undefined;
29
+ getExperimentValueOverride?: <T>(experimentName: string, parameterName: string) => T;
30
+ };
31
+ }
32
+ }
3
33
  export default interactions;
@@ -0,0 +1,16 @@
1
+ import type { InteractionMetrics } from '../../common';
2
+ import type { LabelStack, SegmentLabel } from '../../interaction-context';
3
+ import { type SegmentObserver } from './constants';
4
+ export declare function isPerformanceTracingEnabled(): boolean;
5
+ export declare function labelStackToString(labelStack: LabelStack | null | undefined, name?: string): string;
6
+ export declare function labelStackToIdString(labelStack: LabelStack | null | undefined): string | undefined;
7
+ export declare function addSegmentObserver(observer: SegmentObserver): void;
8
+ export declare function removeSegmentObserver(observer: SegmentObserver): void;
9
+ export declare function addHoldCriterion(id: string, labelStack: LabelStack, name: string, startTime: number): void;
10
+ export declare function removeHoldCriterion(id: string): void;
11
+ export declare const pushToQueue: (id: string, data: InteractionMetrics) => void;
12
+ export declare function callCleanUpCallbacks(interaction: InteractionMetrics): void;
13
+ export declare function reactProfilerTimingMap(data: InteractionMetrics): void;
14
+ export declare function callCancelCallbacks(interaction: InteractionMetrics): void;
15
+ export declare function isSegmentLabel(obj: any): obj is SegmentLabel;
16
+ export declare function getSegmentCacheKey(labelStack: LabelStack): string;
@@ -1,10 +1,11 @@
1
1
  import type { AbortReasonType, ApdexType, BM3Event, CustomData, CustomTiming, InteractionError, InteractionMetrics, InteractionType, LifecycleMarkType, LoadProfilerEventInfo, Mark, MarkType, PostInteractionLogOutput, ReactProfilerTiming, RequestInfo, Span, SpanType } from '../common';
2
+ import { ExperimentalInteractionMetrics } from '../create-experimental-interaction-metrics-payload';
2
3
  import { type TraceIdContext } from '../experience-trace-id-context';
3
- import { type FeatureFlagValue } from '../feature-flags-accessed';
4
4
  import type { LabelStack } from '../interaction-context';
5
5
  import PostInteractionLog from './post-interaction-log';
6
6
  export type { InteractionMetrics, LifecycleMarkType, Span, Mark, MarkType, InteractionType, AbortReasonType, ReactProfilerTiming, RequestInfo, ApdexType, CustomData, CustomTiming, InteractionError, };
7
7
  export declare const postInteractionLog: PostInteractionLog;
8
+ export declare const experimentalInteractionLog: ExperimentalInteractionMetrics;
8
9
  export declare function getActiveInteraction(): InteractionMetrics | undefined;
9
10
  export declare function remove(interactionId: string): void;
10
11
  export declare function updatePageLoadInteractionName(ufoName: string, routeName?: string | null | undefined): void;
@@ -18,7 +19,7 @@ export declare function addSpanToAll(type: SpanType, name: string, labelStack: L
18
19
  export declare function addPreload(moduleId: string, timestamp: number): void;
19
20
  export declare function addLoad(identifier: string, start: number, end: number): void;
20
21
  export declare function extractModuleName(input: string): string;
21
- export declare function addHold(interactionId: string, labelStack: LabelStack, name: string): () => void;
22
+ export declare function addHold(interactionId: string, labelStack: LabelStack, name: string, experimental: boolean): () => void;
22
23
  export declare function addHoldByID(interactionId: string, labelStack: LabelStack, name: string, id: string, ignoreOnSubmit?: boolean): () => void;
23
24
  export declare function removeHoldByID(interactionId: string, id: string): void;
24
25
  export declare function getCurrentInteractionType(interactionId: string): InteractionType | null;
@@ -33,6 +34,7 @@ export declare function addError(interactionId: string, name: string, labelStack
33
34
  export declare function addErrorToAll(name: string, labelStack: LabelStack | null, errorType: string, errorMessage: string, errorStack?: string): void;
34
35
  export declare const addProfilerTimings: (interactionId: string, labelStack: LabelStack, type: 'mount' | 'update' | 'nested-update', actualDuration: number, baseDuration: number, startTime: number, commitTime: number) => void;
35
36
  export declare const sinkInteractionHandler: (sinkFn: (id: string, data: InteractionMetrics) => void) => void;
37
+ export declare const sinkExperimentalHandler: (sinkFn: (interactionId: string, interaction: InteractionMetrics) => void | Promise<void>) => void;
36
38
  export declare const sinkPostInteractionLogHandler: (sinkFn: (output: PostInteractionLogOutput) => void | Promise<void>) => void;
37
39
  export declare function tryComplete(interactionId: string, endTime?: number): void;
38
40
  export declare function abort(interactionId: string, abortReason: AbortReasonType): void;
@@ -52,18 +54,5 @@ export declare function addRequestInfo(interactionId: string, labelStack: LabelS
52
54
  export declare function addSegment(labelStack: LabelStack): void;
53
55
  export declare function removeSegment(labelStack: LabelStack): void;
54
56
  export declare function addRedirect(interactionId: string, fromUfoName: string, nextUfoName: string, nextRouteName: string, time: number): void;
55
- declare global {
56
- interface Window {
57
- __REACT_UFO_ENABLE_PERF_TRACING?: boolean;
58
- __UFO_COMPACT_PAYLOAD__?: boolean;
59
- __CRITERION__?: {
60
- addFeatureFlagAccessed?: (flagName: string, flagValue: FeatureFlagValue) => void;
61
- addUFOHold?: (id: string, name: string, labelStack: string, startTime: number) => void;
62
- removeUFOHold?: (id: string) => void;
63
- getFeatureFlagOverride?: (flagName: string) => boolean | undefined;
64
- getExperimentValueOverride?: <T>(experimentName: string, parameterName: string) => T;
65
- };
66
- }
67
- }
68
57
  export declare const interactionSpans: Span[];
69
58
  export declare function addCustomSpans(name: string, start: number, end?: number, size?: number, labelStack?: LabelStack): void;
@@ -61,7 +61,7 @@ export default class PostInteractionLog {
61
61
  * Basic details about the finished interaction will be recorded
62
62
  * A timeout will be setup to send the post interaction observation after some time.
63
63
  */
64
- onInteractionComplete({ ufoName, start, end, id, abortReason, abortedByInteractionName, routeName, type, }: LastInteractionFinishInfo): void;
64
+ onInteractionComplete({ ufoName, start, end, id, abortReason, abortedByInteractionName, routeName, type, experimentalTTAI, experimentalVC90, }: LastInteractionFinishInfo): void;
65
65
  /**
66
66
  * This fn should be invoked when a React render happens after interaction has finished
67
67
  */
@@ -19,8 +19,7 @@ import { type ReactNode } from 'react';
19
19
  * return (
20
20
  * <>
21
21
  * <Skeleton />
22
- * <UFOLoadHold name="card">
23
- * </UFOLoadHold>
22
+ * <UFOLoadHold name="card" />
24
23
  * )
25
24
  * }
26
25
  * ```
@@ -1,2 +1,3 @@
1
+ export declare const AWAITING_PAGELOAD_NAME = "awaiting_pageload_name";
1
2
  export default function traceUFOPageLoad(ufoName?: string | null | undefined, routeName?: string | null | undefined): void;
2
3
  export declare function updatePageloadName(ufoName: string, routeName?: string | null | undefined): void;
@@ -33,7 +33,6 @@ export declare class Observers implements BrowserObservers {
33
33
  setReactRootRenderStop(stopTime?: number): void;
34
34
  private observeElement;
35
35
  private getMutationObserver;
36
- private getStyleDisplay;
37
36
  private getElementName;
38
37
  private getIntersectionObserver;
39
38
  private measureStart;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/react-ufo",
3
- "version": "2.4.5",
3
+ "version": "2.4.7",
4
4
  "description": "Parts of React UFO that are publicly available",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -32,6 +32,7 @@
32
32
  "./coinflip": "./src/coinflip/index.ts",
33
33
  "./common": "./src/common/index.ts",
34
34
  "./config": "./src/config/index.ts",
35
+ "./create-experimental-interaction-metrics-payload": "./src/create-experimental-interaction-metrics-payload/index.ts",
35
36
  "./create-payload": "./src/create-payload/index.ts",
36
37
  "./create-post-interaction-log-payload": "./src/create-post-interaction-log-payload/index.ts",
37
38
  "./custom-data": "./src/custom-data/index.ts",