@atlaskit/react-ufo 4.15.1 → 4.15.3
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 +14 -0
- package/dist/cjs/create-payload/index.js +18 -791
- package/dist/cjs/create-payload/utils/get-visibility-state-from-performance.js +1 -0
- package/dist/cjs/interaction-id-context/index.js +2 -1
- package/dist/cjs/ssr/index.js +103 -8
- package/dist/cjs/vc/vc-observer-new/metric-calculator/fy25_03/index.js +1 -1
- package/dist/es2019/create-payload/index.js +20 -712
- package/dist/es2019/create-payload/utils/get-visibility-state-from-performance.js +1 -0
- package/dist/es2019/interaction-id-context/index.js +2 -1
- package/dist/es2019/ssr/index.js +103 -8
- package/dist/es2019/vc/vc-observer-new/metric-calculator/fy25_03/index.js +1 -1
- package/dist/esm/create-payload/index.js +18 -783
- package/dist/esm/create-payload/utils/get-visibility-state-from-performance.js +1 -0
- package/dist/esm/interaction-id-context/index.js +2 -1
- package/dist/esm/ssr/index.js +102 -8
- package/dist/esm/vc/vc-observer-new/metric-calculator/fy25_03/index.js +1 -1
- package/dist/types/assets/utils.d.ts +1 -1
- package/dist/types/create-experimental-interaction-metrics-payload/index.d.ts +2 -1
- package/dist/types/create-interaction-extra-metrics-payload/index.d.ts +17 -14
- package/dist/types/create-payload/index.d.ts +8598 -8594
- package/dist/types/create-payload/utils/get-more-accurate-page-visibility-up-to-ttai.d.ts +2 -1
- package/dist/types/create-payload/utils/get-page-visibility-up-to-ttai.d.ts +2 -1
- package/dist/types/create-payload/utils/get-react-ufo-payload-version.d.ts +1 -1
- package/dist/types/create-payload/utils/optimize-apdex.d.ts +2 -1
- package/dist/types/create-payload/utils/optimize-marks.d.ts +4 -3
- package/dist/types/create-post-interaction-log-payload/index.d.ts +5 -4
- package/dist/types/experience-trace-id-context/index.d.ts +2 -1
- package/dist/types/ignore-holds/index.d.ts +1 -1
- package/dist/types/interaction-id-context/index.d.ts +3 -2
- package/dist/types/label/UFOLabel.d.ts +1 -1
- package/dist/types/load-hold/UFOLoadHold.d.ts +1 -1
- package/dist/types/placeholder/loosely-lazy/wait-context.d.ts +2 -1
- package/dist/types/report-error/index.d.ts +1 -1
- package/dist/types/ssr/index.d.ts +1 -0
- package/dist/types/trace-interaction/internal/map-to-interaction-type.d.ts +1 -1
- package/dist/types/typing-performance-tracing/index.d.ts +2 -1
- package/dist/types/vc/vc-observer/media-wrapper/MediaWrapper.d.ts +1 -1
- package/dist/types/vc/vc-observer/observers/ssr-placeholders/index.d.ts +3 -3
- package/dist/types/vc/vc-observer-new/viewport-observer/performance-observer/index.d.ts +1 -1
- package/dist/types-ts4.5/assets/utils.d.ts +1 -1
- package/dist/types-ts4.5/create-experimental-interaction-metrics-payload/index.d.ts +2 -1
- package/dist/types-ts4.5/create-interaction-extra-metrics-payload/index.d.ts +17 -14
- package/dist/types-ts4.5/create-payload/index.d.ts +8598 -8594
- package/dist/types-ts4.5/create-payload/utils/get-more-accurate-page-visibility-up-to-ttai.d.ts +2 -1
- package/dist/types-ts4.5/create-payload/utils/get-page-visibility-up-to-ttai.d.ts +2 -1
- package/dist/types-ts4.5/create-payload/utils/get-react-ufo-payload-version.d.ts +1 -1
- package/dist/types-ts4.5/create-payload/utils/optimize-apdex.d.ts +2 -1
- package/dist/types-ts4.5/create-payload/utils/optimize-marks.d.ts +4 -3
- package/dist/types-ts4.5/create-post-interaction-log-payload/index.d.ts +5 -4
- package/dist/types-ts4.5/experience-trace-id-context/index.d.ts +2 -1
- package/dist/types-ts4.5/ignore-holds/index.d.ts +1 -1
- package/dist/types-ts4.5/interaction-id-context/index.d.ts +3 -2
- package/dist/types-ts4.5/label/UFOLabel.d.ts +1 -1
- package/dist/types-ts4.5/load-hold/UFOLoadHold.d.ts +1 -1
- package/dist/types-ts4.5/placeholder/loosely-lazy/wait-context.d.ts +2 -1
- package/dist/types-ts4.5/report-error/index.d.ts +1 -1
- package/dist/types-ts4.5/ssr/index.d.ts +1 -0
- package/dist/types-ts4.5/trace-interaction/internal/map-to-interaction-type.d.ts +1 -1
- package/dist/types-ts4.5/typing-performance-tracing/index.d.ts +2 -1
- package/dist/types-ts4.5/vc/vc-observer/media-wrapper/MediaWrapper.d.ts +1 -1
- package/dist/types-ts4.5/vc/vc-observer/observers/ssr-placeholders/index.d.ts +3 -3
- package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/performance-observer/index.d.ts +1 -1
- package/package.json +4 -1
|
@@ -58,6 +58,7 @@ export const subscribeToInteractionIdChanges = listener => {
|
|
|
58
58
|
};
|
|
59
59
|
|
|
60
60
|
// We use a context to allow modals to have their own lifecycle
|
|
61
|
-
|
|
61
|
+
const _default_1 = /*#__PURE__*/createContext(DefaultInteractionID);
|
|
62
|
+
export default _default_1;
|
|
62
63
|
export const getInteractionId = () => DefaultInteractionID;
|
|
63
64
|
export const useInteractionId = () => DefaultInteractionID;
|
package/dist/es2019/ssr/index.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
3
2
|
const NESTED_METRIC_SEPARATOR = '/';
|
|
4
3
|
function filterEntry(entry) {
|
|
5
4
|
return !(!entry || typeof entry !== 'object' || entry.startTime < 0 || entry.duration < 0);
|
|
@@ -24,16 +23,112 @@ let config;
|
|
|
24
23
|
export function configure(ssrConfig) {
|
|
25
24
|
config = ssrConfig;
|
|
26
25
|
}
|
|
26
|
+
function getPerformanceNavigationTiming() {
|
|
27
|
+
var _performance$getEntri;
|
|
28
|
+
// getEntriesByType doesn't change the returned type based on the given type key
|
|
29
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
30
|
+
return (_performance$getEntri = performance.getEntriesByType('navigation')) === null || _performance$getEntri === void 0 ? void 0 : _performance$getEntri[0];
|
|
31
|
+
}
|
|
32
|
+
function getServerTimingsByName() {
|
|
33
|
+
var _getPerformanceNaviga, _getPerformanceNaviga2, _getPerformanceNaviga3;
|
|
34
|
+
const serverTimingsByName = Object.fromEntries((_getPerformanceNaviga = (_getPerformanceNaviga2 = getPerformanceNavigationTiming()) === null || _getPerformanceNaviga2 === void 0 ? void 0 : (_getPerformanceNaviga3 = _getPerformanceNaviga2.serverTiming) === null || _getPerformanceNaviga3 === void 0 ? void 0 : _getPerformanceNaviga3.map(timing => [timing.name, timing])) !== null && _getPerformanceNaviga !== void 0 ? _getPerformanceNaviga : []);
|
|
35
|
+
return serverTimingsByName;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* If we have the edge's view of ttfb and the clients view as well, then we should take the gap between them as
|
|
40
|
+
* the offset to use foe edge start time.
|
|
41
|
+
* This will simulate the network delays between the client and the edge as an edge startTime increase
|
|
42
|
+
*/
|
|
43
|
+
function getEdgeOffset(edgeTtfb) {
|
|
44
|
+
var _getPerformanceNaviga4;
|
|
45
|
+
const clientTtfb = (_getPerformanceNaviga4 = getPerformanceNavigationTiming()) === null || _getPerformanceNaviga4 === void 0 ? void 0 : _getPerformanceNaviga4.responseStart;
|
|
46
|
+
if (edgeTtfb == null || clientTtfb == null) {
|
|
47
|
+
return 0;
|
|
48
|
+
}
|
|
49
|
+
return clientTtfb - edgeTtfb;
|
|
50
|
+
}
|
|
51
|
+
export function getEdgeTimingsIncludingCloudfront() {
|
|
52
|
+
var _serverTimingsByName$, _serverTimingsByName$2, _serverTimingsByName$3, _serverTimingsByName$4, _serverTimingsByName$5, _serverTimingsByName$6, _serverTimingsByName$7, _serverTimingsByName$8, _serverTimingsByName$9;
|
|
53
|
+
const serverTimingsByName = getServerTimingsByName();
|
|
54
|
+
const edgeTotalDuration = (_serverTimingsByName$ = (_serverTimingsByName$2 = serverTimingsByName['cdn-downstream-fbl']) === null || _serverTimingsByName$2 === void 0 ? void 0 : _serverTimingsByName$2.duration) !== null && _serverTimingsByName$ !== void 0 ? _serverTimingsByName$ : (_serverTimingsByName$3 = serverTimingsByName['atl-edge']) === null || _serverTimingsByName$3 === void 0 ? void 0 : _serverTimingsByName$3.duration;
|
|
55
|
+
if (!edgeTotalDuration) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
const edgeOffset = getEdgeOffset(edgeTotalDuration);
|
|
59
|
+
const cfInternalDuration = (((_serverTimingsByName$4 = serverTimingsByName['cdn-upstream-dns']) === null || _serverTimingsByName$4 === void 0 ? void 0 : _serverTimingsByName$4.duration) || 0) + (((_serverTimingsByName$5 = serverTimingsByName['cdn-upstream-connect']) === null || _serverTimingsByName$5 === void 0 ? void 0 : _serverTimingsByName$5.duration) || 0);
|
|
60
|
+
const cfUpstreamDuration = (((_serverTimingsByName$6 = serverTimingsByName['cdn-upstream-fbl']) === null || _serverTimingsByName$6 === void 0 ? void 0 : _serverTimingsByName$6.duration) || 0) - cfInternalDuration;
|
|
61
|
+
const cfDownstreamDuration = (((_serverTimingsByName$7 = serverTimingsByName['cdn-downstream-fbl']) === null || _serverTimingsByName$7 === void 0 ? void 0 : _serverTimingsByName$7.duration) || 0) - (((_serverTimingsByName$8 = serverTimingsByName['cdn-upstream-fbl']) === null || _serverTimingsByName$8 === void 0 ? void 0 : _serverTimingsByName$8.duration) || 0);
|
|
62
|
+
const atlEdgeDuration = (_serverTimingsByName$9 = serverTimingsByName['atl-edge']) === null || _serverTimingsByName$9 === void 0 ? void 0 : _serverTimingsByName$9.duration;
|
|
63
|
+
const cfToAtlEdgeNetworkDuration = cfUpstreamDuration - atlEdgeDuration;
|
|
64
|
+
const edgeTimings = {
|
|
65
|
+
edge: {
|
|
66
|
+
startTime: edgeOffset,
|
|
67
|
+
duration: edgeTotalDuration
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
if (typeof serverTimingsByName['cdn-downstream-fbl'] !== 'undefined') {
|
|
71
|
+
var _serverTimingsByName$0;
|
|
72
|
+
edgeTimings['edge/cf'] = {
|
|
73
|
+
startTime: edgeOffset,
|
|
74
|
+
duration: (_serverTimingsByName$0 = serverTimingsByName['cdn-downstream-fbl']) === null || _serverTimingsByName$0 === void 0 ? void 0 : _serverTimingsByName$0.duration
|
|
75
|
+
};
|
|
76
|
+
edgeTimings['edge/cf/internal'] = {
|
|
77
|
+
startTime: edgeOffset,
|
|
78
|
+
duration: cfInternalDuration
|
|
79
|
+
};
|
|
80
|
+
edgeTimings['edge/cf/upstream'] = {
|
|
81
|
+
startTime: edgeOffset + cfInternalDuration,
|
|
82
|
+
duration: cfUpstreamDuration
|
|
83
|
+
};
|
|
84
|
+
edgeTimings['edge/cf/downstream'] = {
|
|
85
|
+
startTime: edgeOffset + cfInternalDuration + cfUpstreamDuration,
|
|
86
|
+
duration: cfDownstreamDuration
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
if (typeof serverTimingsByName['atl-edge'] !== 'undefined') {
|
|
90
|
+
var _serverTimingsByName$1;
|
|
91
|
+
edgeTimings['edge/atl-edge'] = {
|
|
92
|
+
startTime: edgeOffset + cfInternalDuration + cfToAtlEdgeNetworkDuration,
|
|
93
|
+
duration: atlEdgeDuration
|
|
94
|
+
};
|
|
95
|
+
edgeTimings['edge/atl-edge/internal'] = {
|
|
96
|
+
startTime: edgeOffset + cfInternalDuration + cfToAtlEdgeNetworkDuration,
|
|
97
|
+
duration: (_serverTimingsByName$1 = serverTimingsByName['atl-edge-internal']) === null || _serverTimingsByName$1 === void 0 ? void 0 : _serverTimingsByName$1.duration
|
|
98
|
+
};
|
|
99
|
+
edgeTimings['edge/atl-edge/ttfb'] = {
|
|
100
|
+
startTime: edgeOffset + cfInternalDuration + cfToAtlEdgeNetworkDuration,
|
|
101
|
+
duration: atlEdgeDuration
|
|
102
|
+
};
|
|
103
|
+
edgeTimings['edge/cf/upstream/network'] = {
|
|
104
|
+
startTime: edgeOffset + cfInternalDuration,
|
|
105
|
+
duration: cfToAtlEdgeNetworkDuration
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// we need a timer here to prevent UFO pipeline from shifting SSR timers to start at 0
|
|
110
|
+
(edgeTimings === null || edgeTimings === void 0 ? void 0 : edgeTimings.edge) && edgeOffset && Object.assign(edgeTimings, {
|
|
111
|
+
'client-network': {
|
|
112
|
+
startTime: 0,
|
|
113
|
+
duration: edgeOffset
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
return edgeTimings;
|
|
117
|
+
}
|
|
27
118
|
export function getSSRTimings() {
|
|
28
119
|
var _config;
|
|
29
|
-
|
|
30
|
-
|
|
120
|
+
let defaultSSRTimings = {};
|
|
121
|
+
if (fg('platform_ufo_default_ssr_edge_timings')) {
|
|
122
|
+
defaultSSRTimings = getEdgeTimingsIncludingCloudfront();
|
|
31
123
|
}
|
|
32
|
-
|
|
33
|
-
if (
|
|
34
|
-
|
|
124
|
+
let configTimings = {};
|
|
125
|
+
if (typeof ((_config = config) === null || _config === void 0 ? void 0 : _config.getTimings) === 'function') {
|
|
126
|
+
configTimings = config.getTimings();
|
|
35
127
|
}
|
|
36
|
-
const ssrTimings = Object.entries(
|
|
128
|
+
const ssrTimings = Object.entries({
|
|
129
|
+
...configTimings,
|
|
130
|
+
...defaultSSRTimings
|
|
131
|
+
}).reduce((acc, entry) => {
|
|
37
132
|
if (filterEntry(entry[1])) {
|
|
38
133
|
acc[mapKey(entry[0])] = mapEntry(entry[1]);
|
|
39
134
|
}
|
|
@@ -47,7 +47,7 @@ export default class VCCalculator_FY25_03 extends AbstractVCCalculatorBase {
|
|
|
47
47
|
if (entry.data.type === 'mutation:media' && fg('media-perf-uplift-mutation-fix')) {
|
|
48
48
|
const entryData = entry.data;
|
|
49
49
|
const attributeName = entryData.attributeName;
|
|
50
|
-
if (attributeName && (/data-(test|file|context
|
|
50
|
+
if (attributeName && (/data-(test|file|context)-\S+/g.test(attributeName) || attributeName === 'data-cursor' || attributeName === 'alt' || (attributeName === 'localid' || attributeName === 'contenteditable' || attributeName === 'anchor-name') && expVal('platform_editor_media_vc_fixes', 'isEnabled', false))) {
|
|
51
51
|
return false;
|
|
52
52
|
}
|
|
53
53
|
|