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