@atlaskit/react-ufo 3.1.4 → 3.3.0

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 (179) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +11 -0
  3. package/dist/cjs/create-experimental-interaction-metrics-payload/index.js +52 -25
  4. package/dist/cjs/create-payload/index.js +290 -231
  5. package/dist/cjs/interaction-metrics/index.js +61 -23
  6. package/dist/cjs/interaction-metrics/post-interaction-log.js +63 -34
  7. package/dist/cjs/interaction-metrics-init/index.js +26 -7
  8. package/dist/cjs/segment/schedule-on-paint.js +35 -0
  9. package/dist/cjs/segment/segment.js +10 -1
  10. package/dist/cjs/vc/index.js +105 -1
  11. package/dist/cjs/vc/types.js +5 -0
  12. package/dist/cjs/vc/vc-observer/index.js +198 -208
  13. package/dist/cjs/vc/vc-observer-new/entries-timeline/index.js +56 -0
  14. package/dist/cjs/vc/vc-observer-new/get-element-name.js +68 -0
  15. package/dist/cjs/vc/vc-observer-new/index.js +132 -0
  16. package/dist/cjs/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +75 -0
  17. package/dist/cjs/vc/vc-observer-new/metric-calculator/fy25_03/index.js +60 -0
  18. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +274 -0
  19. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +151 -0
  20. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.js +367 -0
  21. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +397 -0
  22. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.js +5 -0
  23. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +61 -0
  24. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.js +151 -0
  25. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +107 -0
  26. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/types.js +5 -0
  27. package/dist/cjs/vc/vc-observer-new/metric-calculator/types.js +5 -0
  28. package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.js +16 -0
  29. package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.js +16 -0
  30. package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.js +16 -0
  31. package/dist/cjs/vc/vc-observer-new/metric-calculator/utils/task-yield.js +45 -0
  32. package/dist/cjs/vc/vc-observer-new/types.js +5 -0
  33. package/dist/cjs/vc/vc-observer-new/viewport-observer/index.js +195 -0
  34. package/dist/cjs/vc/vc-observer-new/viewport-observer/intersection-observer/index.js +71 -0
  35. package/dist/cjs/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +65 -0
  36. package/dist/cjs/vc/vc-observer-new/viewport-observer/performance-observer/index.js +58 -0
  37. package/dist/cjs/vc/vc-observer-new/viewport-observer/types.js +1 -0
  38. package/dist/cjs/vc/vc-observer-new/window-event-observer/index.js +54 -0
  39. package/dist/es2019/create-experimental-interaction-metrics-payload/index.js +2 -2
  40. package/dist/es2019/create-payload/index.js +8 -7
  41. package/dist/es2019/interaction-metrics/index.js +3 -3
  42. package/dist/es2019/interaction-metrics/post-interaction-log.js +5 -5
  43. package/dist/es2019/interaction-metrics-init/index.js +26 -7
  44. package/dist/es2019/segment/schedule-on-paint.js +29 -0
  45. package/dist/es2019/segment/segment.js +9 -1
  46. package/dist/es2019/vc/index.js +56 -1
  47. package/dist/es2019/vc/types.js +1 -0
  48. package/dist/es2019/vc/vc-observer/index.js +1 -4
  49. package/dist/es2019/vc/vc-observer-new/entries-timeline/index.js +34 -0
  50. package/dist/es2019/vc/vc-observer-new/get-element-name.js +62 -0
  51. package/dist/es2019/vc/vc-observer-new/index.js +98 -0
  52. package/dist/es2019/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +38 -0
  53. package/dist/es2019/vc/vc-observer-new/metric-calculator/fy25_03/index.js +39 -0
  54. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +194 -0
  55. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +69 -0
  56. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.js +248 -0
  57. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +261 -0
  58. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.js +1 -0
  59. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +19 -0
  60. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.js +98 -0
  61. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +58 -0
  62. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/types.js +1 -0
  63. package/dist/es2019/vc/vc-observer-new/metric-calculator/types.js +1 -0
  64. package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.js +9 -0
  65. package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.js +9 -0
  66. package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.js +10 -0
  67. package/dist/es2019/vc/vc-observer-new/metric-calculator/utils/task-yield.js +17 -0
  68. package/dist/es2019/vc/vc-observer-new/types.js +1 -0
  69. package/dist/es2019/vc/vc-observer-new/viewport-observer/index.js +168 -0
  70. package/dist/es2019/vc/vc-observer-new/viewport-observer/intersection-observer/index.js +65 -0
  71. package/dist/es2019/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +48 -0
  72. package/dist/es2019/vc/vc-observer-new/viewport-observer/performance-observer/index.js +41 -0
  73. package/dist/es2019/vc/vc-observer-new/viewport-observer/types.js +0 -0
  74. package/dist/es2019/vc/vc-observer-new/window-event-observer/index.js +36 -0
  75. package/dist/esm/create-experimental-interaction-metrics-payload/index.js +52 -25
  76. package/dist/esm/create-payload/index.js +290 -231
  77. package/dist/esm/interaction-metrics/index.js +61 -23
  78. package/dist/esm/interaction-metrics/post-interaction-log.js +63 -34
  79. package/dist/esm/interaction-metrics-init/index.js +26 -7
  80. package/dist/esm/segment/schedule-on-paint.js +29 -0
  81. package/dist/esm/segment/segment.js +10 -1
  82. package/dist/esm/vc/index.js +104 -1
  83. package/dist/esm/vc/types.js +1 -0
  84. package/dist/esm/vc/vc-observer/index.js +198 -208
  85. package/dist/esm/vc/vc-observer-new/entries-timeline/index.js +50 -0
  86. package/dist/esm/vc/vc-observer-new/get-element-name.js +62 -0
  87. package/dist/esm/vc/vc-observer-new/index.js +126 -0
  88. package/dist/esm/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +69 -0
  89. package/dist/esm/vc/vc-observer-new/metric-calculator/fy25_03/index.js +54 -0
  90. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +268 -0
  91. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +143 -0
  92. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.js +361 -0
  93. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +390 -0
  94. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.js +1 -0
  95. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/index.js +54 -0
  96. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.js +144 -0
  97. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +100 -0
  98. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/types.js +1 -0
  99. package/dist/esm/vc/vc-observer-new/metric-calculator/types.js +1 -0
  100. package/dist/esm/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.js +10 -0
  101. package/dist/esm/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.js +10 -0
  102. package/dist/esm/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.js +10 -0
  103. package/dist/esm/vc/vc-observer-new/metric-calculator/utils/task-yield.js +38 -0
  104. package/dist/esm/vc/vc-observer-new/types.js +1 -0
  105. package/dist/esm/vc/vc-observer-new/viewport-observer/index.js +189 -0
  106. package/dist/esm/vc/vc-observer-new/viewport-observer/intersection-observer/index.js +65 -0
  107. package/dist/esm/vc/vc-observer-new/viewport-observer/mutation-observer/index.js +59 -0
  108. package/dist/esm/vc/vc-observer-new/viewport-observer/performance-observer/index.js +51 -0
  109. package/dist/esm/vc/vc-observer-new/viewport-observer/types.js +0 -0
  110. package/dist/esm/vc/vc-observer-new/window-event-observer/index.js +48 -0
  111. package/dist/types/common/index.d.ts +1 -0
  112. package/dist/types/create-experimental-interaction-metrics-payload/index.d.ts +3 -2
  113. package/dist/types/create-payload/index.d.ts +4 -4
  114. package/dist/types/interaction-metrics/post-interaction-log.d.ts +3 -2
  115. package/dist/types/segment/schedule-on-paint.d.ts +2 -0
  116. package/dist/types/vc/index.d.ts +3 -3
  117. package/dist/types/vc/types.d.ts +34 -0
  118. package/dist/types/vc/vc-observer/index.d.ts +5 -21
  119. package/dist/types/vc/vc-observer-new/entries-timeline/index.d.ts +13 -0
  120. package/dist/types/vc/vc-observer-new/get-element-name.d.ts +8 -0
  121. package/dist/types/vc/vc-observer-new/index.d.ts +18 -0
  122. package/dist/types/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.d.ts +9 -0
  123. package/dist/types/vc/vc-observer-new/metric-calculator/fy25_03/index.d.ts +7 -0
  124. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.d.ts +91 -0
  125. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.d.ts +4 -0
  126. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.d.ts +39 -0
  127. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.d.ts +8 -0
  128. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.d.ts +43 -0
  129. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/index.d.ts +3 -0
  130. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.d.ts +11 -0
  131. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.d.ts +23 -0
  132. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/types.d.ts +9 -0
  133. package/dist/types/vc/vc-observer-new/metric-calculator/types.d.ts +20 -0
  134. package/dist/types/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.d.ts +1 -0
  135. package/dist/types/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.d.ts +1 -0
  136. package/dist/types/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.d.ts +2 -0
  137. package/dist/types/vc/vc-observer-new/metric-calculator/utils/task-yield.d.ts +1 -0
  138. package/dist/types/vc/vc-observer-new/types.d.ts +21 -0
  139. package/dist/types/vc/vc-observer-new/viewport-observer/index.d.ts +22 -0
  140. package/dist/types/vc/vc-observer-new/viewport-observer/intersection-observer/index.d.ts +30 -0
  141. package/dist/types/vc/vc-observer-new/viewport-observer/mutation-observer/index.d.ts +14 -0
  142. package/dist/types/vc/vc-observer-new/viewport-observer/performance-observer/index.d.ts +14 -0
  143. package/dist/types/vc/vc-observer-new/viewport-observer/types.d.ts +10 -0
  144. package/dist/types/vc/vc-observer-new/window-event-observer/index.d.ts +17 -0
  145. package/dist/types-ts4.5/common/index.d.ts +1 -0
  146. package/dist/types-ts4.5/create-experimental-interaction-metrics-payload/index.d.ts +3 -2
  147. package/dist/types-ts4.5/create-payload/index.d.ts +4 -4
  148. package/dist/types-ts4.5/interaction-metrics/post-interaction-log.d.ts +3 -2
  149. package/dist/types-ts4.5/segment/schedule-on-paint.d.ts +2 -0
  150. package/dist/types-ts4.5/vc/index.d.ts +3 -3
  151. package/dist/types-ts4.5/vc/types.d.ts +34 -0
  152. package/dist/types-ts4.5/vc/vc-observer/index.d.ts +5 -21
  153. package/dist/types-ts4.5/vc/vc-observer-new/entries-timeline/index.d.ts +13 -0
  154. package/dist/types-ts4.5/vc/vc-observer-new/get-element-name.d.ts +8 -0
  155. package/dist/types-ts4.5/vc/vc-observer-new/index.d.ts +18 -0
  156. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.d.ts +9 -0
  157. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/fy25_03/index.d.ts +7 -0
  158. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.d.ts +91 -0
  159. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.d.ts +4 -0
  160. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/heatmap.d.ts +39 -0
  161. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.d.ts +8 -0
  162. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/types.d.ts +43 -0
  163. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/index.d.ts +3 -0
  164. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/calc-union-area.d.ts +11 -0
  165. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.d.ts +23 -0
  166. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/types.d.ts +9 -0
  167. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/types.d.ts +20 -0
  168. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/get-viewport-height.d.ts +1 -0
  169. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/get-viewport-width.d.ts +1 -0
  170. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/is-viewport-entry-data.d.ts +2 -0
  171. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/utils/task-yield.d.ts +1 -0
  172. package/dist/types-ts4.5/vc/vc-observer-new/types.d.ts +21 -0
  173. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/index.d.ts +22 -0
  174. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/intersection-observer/index.d.ts +30 -0
  175. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/mutation-observer/index.d.ts +14 -0
  176. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/performance-observer/index.d.ts +14 -0
  177. package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/types.d.ts +10 -0
  178. package/dist/types-ts4.5/vc/vc-observer-new/window-event-observer/index.d.ts +17 -0
  179. package/package.json +13 -1
@@ -8,9 +8,11 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.createExperimentalMetricsPayload = createExperimentalMetricsPayload;
9
9
  exports.createPayloads = createPayloads;
10
10
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
12
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
13
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
14
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
14
16
  var _bowserUltralight = _interopRequireDefault(require("bowser-ultralight"));
15
17
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
16
18
  var _additionalPayload = require("../additional-payload");
@@ -187,56 +189,84 @@ var getTTAI = function getTTAI(interaction) {
187
189
  var pageVisibilityUpToTTAI = getPageVisibilityUpToTTAI(interaction);
188
190
  return !interaction.abortReason && pageVisibilityUpToTTAI === 'visible' ? Math.round(end - start) : undefined;
189
191
  };
190
- var getVCMetrics = function getVCMetrics(interaction) {
191
- var _config$vc, _config$vc$ssrWhiteli, _interaction$apdex, _config$experimentalI;
192
- var config = (0, _config.getConfig)();
193
- if (!(config !== null && config !== void 0 && (_config$vc = config.vc) !== null && _config$vc !== void 0 && _config$vc.enabled)) {
194
- return {};
195
- }
196
- if (interaction.type !== 'page_load' && interaction.type !== 'transition') {
197
- return {};
198
- }
199
- var isSSREnabled = (config === null || config === void 0 ? void 0 : config.ssr) || (config === null || config === void 0 || (_config$vc$ssrWhiteli = config.vc.ssrWhitelist) === null || _config$vc$ssrWhiteli === void 0 ? void 0 : _config$vc$ssrWhiteli.includes(interaction.ufoName));
200
- var ssr = interaction.type === 'page_load' && isSSREnabled ? {
201
- ssr: getSSRDoneTimeValue(config)
202
- } : null;
203
- _interactionMetrics.postInteractionLog.setVCObserverSSRConfig(ssr);
204
- var tti = (_interaction$apdex = interaction.apdex) === null || _interaction$apdex === void 0 || (_interaction$apdex = _interaction$apdex[0]) === null || _interaction$apdex === void 0 ? void 0 : _interaction$apdex.stopTime;
205
- var prefix = 'ufo';
206
- var result = (0, _vc.getVCObserver)().getVCResult(_objectSpread({
207
- start: interaction.start,
208
- stop: interaction.end,
209
- tti: tti,
210
- prefix: prefix,
211
- vc: interaction.vc
212
- }, ssr));
213
- if ((_config$experimentalI = config.experimentalInteractionMetrics) !== null && _config$experimentalI !== void 0 && _config$experimentalI.enabled) {
214
- (0, _vc.getVCObserver)().stop();
215
- }
216
- _interactionMetrics.postInteractionLog.setLastInteractionFinishVCResult(result);
217
- var VC = result === null || result === void 0 ? void 0 : result['metrics:vc'];
218
- if (!VC || !(result !== null && result !== void 0 && result["".concat(prefix, ":vc:clean")])) {
219
- return result;
220
- }
221
- var interactionStatus = getInteractionStatus(interaction);
222
- var pageVisibilityUpToTTAI = getPageVisibilityUpToTTAI(interaction);
223
- if (interactionStatus.originalInteractionStatus !== 'SUCCEEDED' || pageVisibilityUpToTTAI !== 'visible') {
224
- return result;
225
- }
226
- if ((0, _platformFeatureFlags.fg)('ufo_vc_multiheatmap')) {
227
- var _result;
228
- (_result = result["".concat(prefix, ":vc:rev")]) === null || _result === void 0 || _result.forEach(function (element) {
229
- var _element$vcDetails;
230
- if ((_element$vcDetails = element.vcDetails) !== null && _element$vcDetails !== void 0 && (_element$vcDetails = _element$vcDetails['90']) !== null && _element$vcDetails !== void 0 && _element$vcDetails.t) {
231
- var _element$vcDetails$;
232
- element['metric:vc90'] = (_element$vcDetails$ = element.vcDetails['90']) === null || _element$vcDetails$ === void 0 ? void 0 : _element$vcDetails$.t;
192
+ var getVCMetrics = /*#__PURE__*/function () {
193
+ var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(interaction) {
194
+ var _config$vc, _config$vc$ssrWhiteli, _interaction$apdex, _config$experimentalI;
195
+ var config, isSSREnabled, ssr, tti, prefix, result, VC, interactionStatus, pageVisibilityUpToTTAI, _result;
196
+ return _regenerator.default.wrap(function _callee$(_context) {
197
+ while (1) switch (_context.prev = _context.next) {
198
+ case 0:
199
+ config = (0, _config.getConfig)();
200
+ if (config !== null && config !== void 0 && (_config$vc = config.vc) !== null && _config$vc !== void 0 && _config$vc.enabled) {
201
+ _context.next = 3;
202
+ break;
203
+ }
204
+ return _context.abrupt("return", {});
205
+ case 3:
206
+ if (!(interaction.type !== 'page_load' && interaction.type !== 'transition')) {
207
+ _context.next = 5;
208
+ break;
209
+ }
210
+ return _context.abrupt("return", {});
211
+ case 5:
212
+ isSSREnabled = (config === null || config === void 0 ? void 0 : config.ssr) || (config === null || config === void 0 || (_config$vc$ssrWhiteli = config.vc.ssrWhitelist) === null || _config$vc$ssrWhiteli === void 0 ? void 0 : _config$vc$ssrWhiteli.includes(interaction.ufoName));
213
+ ssr = interaction.type === 'page_load' && isSSREnabled ? {
214
+ ssr: getSSRDoneTimeValue(config)
215
+ } : null;
216
+ _interactionMetrics.postInteractionLog.setVCObserverSSRConfig(ssr);
217
+ tti = (_interaction$apdex = interaction.apdex) === null || _interaction$apdex === void 0 || (_interaction$apdex = _interaction$apdex[0]) === null || _interaction$apdex === void 0 ? void 0 : _interaction$apdex.stopTime;
218
+ prefix = 'ufo';
219
+ _context.next = 12;
220
+ return (0, _vc.getVCObserver)().getVCResult(_objectSpread({
221
+ start: interaction.start,
222
+ stop: interaction.end,
223
+ tti: tti,
224
+ prefix: prefix,
225
+ vc: interaction.vc
226
+ }, ssr));
227
+ case 12:
228
+ result = _context.sent;
229
+ if ((_config$experimentalI = config.experimentalInteractionMetrics) !== null && _config$experimentalI !== void 0 && _config$experimentalI.enabled) {
230
+ (0, _vc.getVCObserver)().stop();
231
+ }
232
+ _interactionMetrics.postInteractionLog.setLastInteractionFinishVCResult(result);
233
+ VC = result === null || result === void 0 ? void 0 : result['metrics:vc'];
234
+ if (!(!VC || !(result !== null && result !== void 0 && result["".concat(prefix, ":vc:clean")]))) {
235
+ _context.next = 18;
236
+ break;
237
+ }
238
+ return _context.abrupt("return", result);
239
+ case 18:
240
+ interactionStatus = getInteractionStatus(interaction);
241
+ pageVisibilityUpToTTAI = getPageVisibilityUpToTTAI(interaction);
242
+ if (!(interactionStatus.originalInteractionStatus !== 'SUCCEEDED' || pageVisibilityUpToTTAI !== 'visible')) {
243
+ _context.next = 22;
244
+ break;
245
+ }
246
+ return _context.abrupt("return", result);
247
+ case 22:
248
+ if ((0, _platformFeatureFlags.fg)('ufo_vc_multiheatmap')) {
249
+ (_result = result["".concat(prefix, ":vc:rev")]) === null || _result === void 0 || _result.forEach(function (element) {
250
+ var _element$vcDetails;
251
+ if ((_element$vcDetails = element.vcDetails) !== null && _element$vcDetails !== void 0 && (_element$vcDetails = _element$vcDetails['90']) !== null && _element$vcDetails !== void 0 && _element$vcDetails.t) {
252
+ var _element$vcDetails$;
253
+ element['metric:vc90'] = (_element$vcDetails$ = element.vcDetails['90']) === null || _element$vcDetails$ === void 0 ? void 0 : _element$vcDetails$.t;
254
+ }
255
+ });
256
+ }
257
+ return _context.abrupt("return", _objectSpread(_objectSpread({}, result), {}, {
258
+ 'metric:vc90': VC['90']
259
+ }));
260
+ case 24:
261
+ case "end":
262
+ return _context.stop();
233
263
  }
234
- });
235
- }
236
- return _objectSpread(_objectSpread({}, result), {}, {
237
- 'metric:vc90': VC['90']
238
- });
239
- };
264
+ }, _callee);
265
+ }));
266
+ return function getVCMetrics(_x) {
267
+ return _ref2.apply(this, arguments);
268
+ };
269
+ }();
240
270
  var getNavigationMetrics = function getNavigationMetrics(type) {
241
271
  if (type !== 'page_load') {
242
272
  return {};
@@ -386,10 +416,10 @@ var getTracingContextData = function getTracingContextData(interaction) {
386
416
  function optimizeCustomData(interaction) {
387
417
  var customData = interaction.customData,
388
418
  legacyMetrics = interaction.legacyMetrics;
389
- var customDataMap = customData.reduce(function (result, _ref2) {
419
+ var customDataMap = customData.reduce(function (result, _ref3) {
390
420
  var _result$get$data, _result$get;
391
- var labelStack = _ref2.labelStack,
392
- data = _ref2.data;
421
+ var labelStack = _ref3.labelStack,
422
+ data = _ref3.data;
393
423
  var label = (0, _utils.stringifyLabelStackFully)(labelStack);
394
424
  var value = (_result$get$data = (_result$get = result.get(label)) === null || _result$get === void 0 ? void 0 : _result$get.data) !== null && _result$get$data !== void 0 ? _result$get$data : {};
395
425
  result.set(label, {
@@ -421,12 +451,12 @@ function optimizeCustomData(interaction) {
421
451
  return (0, _toConsumableArray2.default)(customDataMap.values());
422
452
  }
423
453
  function optimizeReactProfilerTimings(reactProfilerTimings, interactionStart, reactUFOVersion) {
424
- var reactProfilerTimingsMap = reactProfilerTimings.reduce(function (result, _ref3) {
425
- var labelStack = _ref3.labelStack,
426
- startTime = _ref3.startTime,
427
- commitTime = _ref3.commitTime,
428
- actualDuration = _ref3.actualDuration,
429
- type = _ref3.type;
454
+ var reactProfilerTimingsMap = reactProfilerTimings.reduce(function (result, _ref4) {
455
+ var labelStack = _ref4.labelStack,
456
+ startTime = _ref4.startTime,
457
+ commitTime = _ref4.commitTime,
458
+ actualDuration = _ref4.actualDuration,
459
+ type = _ref4.type;
430
460
  if (labelStack && startTime >= interactionStart) {
431
461
  var label = (0, _utils.stringifyLabelStackFully)(labelStack);
432
462
  var start = Math.round(startTime);
@@ -572,10 +602,10 @@ function optimizeCustomTimings(customTimings, interactionStart) {
572
602
  }, []);
573
603
  }
574
604
  function optimizeMarks(marks, reactUFOVersion) {
575
- return marks.map(function (_ref4) {
576
- var labelStack = _ref4.labelStack,
577
- time = _ref4.time,
578
- others = (0, _objectWithoutProperties2.default)(_ref4, _excluded);
605
+ return marks.map(function (_ref5) {
606
+ var labelStack = _ref5.labelStack,
607
+ time = _ref5.time,
608
+ others = (0, _objectWithoutProperties2.default)(_ref5, _excluded);
579
609
  return _objectSpread(_objectSpread({}, others), {}, {
580
610
  labelStack: labelStack && (0, _utils.optimizeLabelStack)(labelStack, reactUFOVersion),
581
611
  time: Math.round(time)
@@ -583,10 +613,10 @@ function optimizeMarks(marks, reactUFOVersion) {
583
613
  });
584
614
  }
585
615
  function optimizeApdex(apdex, reactUFOVersion) {
586
- return apdex.map(function (_ref5) {
587
- var stopTime = _ref5.stopTime,
588
- labelStack = _ref5.labelStack,
589
- others = (0, _objectWithoutProperties2.default)(_ref5, _excluded2);
616
+ return apdex.map(function (_ref6) {
617
+ var stopTime = _ref6.stopTime,
618
+ labelStack = _ref6.labelStack,
619
+ others = (0, _objectWithoutProperties2.default)(_ref6, _excluded2);
590
620
  return _objectSpread(_objectSpread({}, others), {}, {
591
621
  stopTime: Math.round(stopTime)
592
622
  }, labelStack ? {
@@ -704,173 +734,202 @@ function getErrorCounts(interaction) {
704
734
  'ufo:errors:count': interaction.errors.length
705
735
  };
706
736
  }
707
- function createInteractionMetricsPayload(interaction, interactionId, experimental) {
708
- var _window$location, _config$additionalPay;
709
- var interactionPayloadStart = performance.now();
710
- var config = (0, _config.getConfig)();
711
- if (!config) {
712
- throw Error('UFO Configuration not provided');
713
- }
714
- var end = interaction.end,
715
- start = interaction.start,
716
- ufoName = interaction.ufoName,
717
- knownSegments = interaction.knownSegments,
718
- rate = interaction.rate,
719
- type = interaction.type,
720
- abortReason = interaction.abortReason,
721
- routeName = interaction.routeName,
722
- featureFlags = interaction.featureFlags,
723
- previousInteractionName = interaction.previousInteractionName,
724
- isPreviousInteractionAborted = interaction.isPreviousInteractionAborted,
725
- abortedByInteractionName = interaction.abortedByInteractionName;
726
- var pageVisibilityAtTTI = getPageVisibilityUpToTTI(interaction);
727
- var pageVisibilityAtTTAI = getPageVisibilityUpToTTAI(interaction);
728
- var segments = config.killswitchNestedSegments ? [] : knownSegments;
729
- var segmentTree = (0, _constants.getReactUFOVersion)(interaction.type) === '2.0.0' ? (0, _utils.buildSegmentTree)(segments.map(function (segment) {
730
- return segment.labelStack;
731
- })) : {};
732
- var isDetailedPayload = pageVisibilityAtTTAI === 'visible';
733
- var isPageLoad = type === 'page_load';
734
- var calculatePageVisibilityFromTheStartOfPageLoad = config.enableBetterPageVisibilityApi && isPageLoad;
735
- var moreAccuratePageVisibilityAtTTI = calculatePageVisibilityFromTheStartOfPageLoad ? getMoreAccuratePageVisibilityUpToTTI(interaction) : null;
736
- var moreAccuratePageVisibilityAtTTAI = calculatePageVisibilityFromTheStartOfPageLoad ? getMoreAccuratePageVisibilityUpToTTAI(interaction) : null;
737
- var labelStack = interaction.labelStack ? {
738
- labelStack: (0, _utils.optimizeLabelStack)(interaction.labelStack, (0, _constants.getReactUFOVersion)(interaction.type))
739
- } : {};
740
- // Page Load
741
- var getPageLoadInteractionMetrics = function getPageLoadInteractionMetrics() {
742
- var _config$ssr3;
743
- if (!isPageLoad) {
744
- return {};
745
- }
746
- var config = (0, _config.getConfig)();
747
- var SSRDoneTimeValue = getSSRDoneTimeValue(config);
748
- var SSRDoneTime = SSRDoneTimeValue !== undefined ? {
749
- SSRDoneTime: Math.round(SSRDoneTimeValue)
750
- } : {};
751
- return _objectSpread(_objectSpread({}, SSRDoneTime), {}, {
752
- isBM3ConfigSSRDoneAsFmp: interaction.metaData.__legacy__bm3ConfigSSRDoneAsFmp,
753
- isUFOConfigSSRDoneAsFmp: interaction.metaData.__legacy__bm3ConfigSSRDoneAsFmp || !!(config !== null && config !== void 0 && (_config$ssr3 = config.ssr) !== null && _config$ssr3 !== void 0 && _config$ssr3.getSSRDoneTime)
754
- });
755
- };
756
- // Detailed payload. Page visibility = visible
757
- var getDetailedInteractionMetrics = function getDetailedInteractionMetrics(resourceTimings) {
758
- if (experimental || window.__UFO_COMPACT_PAYLOAD__ || !isDetailedPayload) {
759
- return {};
760
- }
761
- var spans = [].concat((0, _toConsumableArray2.default)(interaction.spans), (0, _toConsumableArray2.default)(_interactionMetrics.interactionSpans));
762
- _interactionMetrics.interactionSpans.length = 0;
763
- return {
764
- errors: interaction.errors.map(function (_ref6) {
765
- var labelStack = _ref6.labelStack,
766
- others = (0, _objectWithoutProperties2.default)(_ref6, _excluded3);
767
- return _objectSpread(_objectSpread({}, others), {}, {
768
- labelStack: labelStack && (0, _utils.optimizeLabelStack)(labelStack, (0, _constants.getReactUFOVersion)(interaction.type))
769
- });
770
- }),
771
- holdActive: (0, _toConsumableArray2.default)(interaction.holdActive.values()),
772
- redirects: optimizeRedirects(interaction.redirects, start),
773
- holdInfo: optimizeHoldInfo(experimental ? interaction.holdExpInfo : interaction.holdInfo, start, (0, _constants.getReactUFOVersion)(interaction.type)),
774
- spans: optimizeSpans(spans, start, (0, _constants.getReactUFOVersion)(interaction.type)),
775
- requestInfo: optimizeRequestInfo(interaction.requestInfo, start, (0, _constants.getReactUFOVersion)(interaction.type)),
776
- customTimings: optimizeCustomTimings(interaction.customTimings, start),
777
- bundleEvalTimings: objectToArray(getBundleEvalTimings(start)),
778
- resourceTimings: objectToArray(resourceTimings)
779
- };
780
- };
781
- // Page load & detailed payload
782
- var getPageLoadDetailedInteractionMetrics = function getPageLoadDetailedInteractionMetrics() {
783
- var _config$ssr4;
784
- if (!isPageLoad || !isDetailedPayload) {
785
- return {};
786
- }
787
- var config = (0, _config.getConfig)();
788
- return {
789
- initialPageLoadExtraTimings: objectToArray(initialPageLoadExtraTiming.getTimings()),
790
- SSRTimings: config !== null && config !== void 0 && (_config$ssr4 = config.ssr) !== null && _config$ssr4 !== void 0 && _config$ssr4.getSSRTimings ? config.ssr.getSSRTimings() : objectToArray(ssr.getSSRTimings())
791
- };
792
- };
793
- if (experimental) {
794
- expTTAI = getTTAI(interaction);
795
- } else {
796
- regularTTAI = getTTAI(interaction);
797
- }
798
- var newUFOName = (0, _utils.sanitizeUfoName)(ufoName);
799
- var resourceTimings = getResourceTimings(start, end);
800
- var payload = {
801
- actionSubject: 'experience',
802
- action: 'measured',
803
- eventType: 'operational',
804
- source: 'measured',
805
- tags: ['observability'],
806
- attributes: {
807
- properties: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
808
- // basic
809
- 'event:hostname': ((_window$location = window.location) === null || _window$location === void 0 ? void 0 : _window$location.hostname) || 'unknown',
810
- 'event:product': config.product,
811
- 'event:schema': '1.0.0',
812
- 'event:sizeInKb': 0,
813
- 'event:source': {
814
- name: 'react-ufo/web',
815
- version: (0, _constants.getReactUFOVersion)(interaction.type)
816
- },
817
- 'event:region': config.region || 'unknown',
818
- 'experience:key': experimental ? 'custom.experimental-interaction-metrics' : 'custom.interaction-metrics',
819
- 'experience:name': newUFOName
820
- }, getBrowserMetadata()), getSSRProperties(type)), getAssetsMetrics(interaction, resourceTimings)), getPPSMetrics(interaction)), getPaintMetrics(type)), getNavigationMetrics(type)), getVCMetrics(interaction)), experimental ? (0, _createExperimentalInteractionMetricsPayload.getExperimentalVCMetrics)(interaction) : undefined), (_config$additionalPay = config.additionalPayloadData) === null || _config$additionalPay === void 0 ? void 0 : _config$additionalPay.call(config, interaction)), getTracingContextData(interaction)), getStylesheetMetrics()), getErrorCounts(interaction)), {}, {
821
- interactionMetrics: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
822
- namePrefix: config.namePrefix || '',
823
- segmentPrefix: config.segmentPrefix || '',
824
- interactionId: interactionId,
825
- pageVisibilityAtTTI: pageVisibilityAtTTI,
826
- pageVisibilityAtTTAI: pageVisibilityAtTTAI,
827
- experimental__pageVisibilityAtTTI: moreAccuratePageVisibilityAtTTI,
828
- experimental__pageVisibilityAtTTAI: moreAccuratePageVisibilityAtTTAI,
829
- // raw interaction metrics
830
- rate: rate,
831
- routeName: routeName,
832
- type: type,
833
- abortReason: abortReason,
834
- featureFlags: featureFlags,
835
- previousInteractionName: previousInteractionName,
836
- isPreviousInteractionAborted: isPreviousInteractionAborted,
837
- abortedByInteractionName: abortedByInteractionName,
838
- // performance
839
- apdex: optimizeApdex(interaction.apdex, (0, _constants.getReactUFOVersion)(interaction.type)),
840
- end: Math.round(end),
841
- start: Math.round(start),
842
- segments: (0, _constants.getReactUFOVersion)(interaction.type) === '2.0.0' ? segmentTree : segments.map(function (_ref7) {
843
- var labelStack = _ref7.labelStack,
844
- others = (0, _objectWithoutProperties2.default)(_ref7, _excluded4);
845
- return _objectSpread(_objectSpread({}, others), {}, {
846
- labelStack: (0, _utils.optimizeLabelStack)(labelStack, (0, _constants.getReactUFOVersion)(interaction.type))
737
+ function createInteractionMetricsPayload(_x2, _x3, _x4) {
738
+ return _createInteractionMetricsPayload.apply(this, arguments);
739
+ }
740
+ function _createInteractionMetricsPayload() {
741
+ _createInteractionMetricsPayload = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(interaction, interactionId, experimental) {
742
+ var _window$location, _config$additionalPay;
743
+ var interactionPayloadStart, config, end, start, ufoName, knownSegments, rate, type, abortReason, routeName, featureFlags, previousInteractionName, isPreviousInteractionAborted, abortedByInteractionName, pageVisibilityAtTTI, pageVisibilityAtTTAI, segments, segmentTree, isDetailedPayload, isPageLoad, calculatePageVisibilityFromTheStartOfPageLoad, moreAccuratePageVisibilityAtTTI, moreAccuratePageVisibilityAtTTAI, labelStack, getPageLoadInteractionMetrics, getDetailedInteractionMetrics, getPageLoadDetailedInteractionMetrics, newUFOName, resourceTimings, _yield$Promise$all, _yield$Promise$all2, vcMetrics, experimentalMetrics, payload;
744
+ return _regenerator.default.wrap(function _callee2$(_context2) {
745
+ while (1) switch (_context2.prev = _context2.next) {
746
+ case 0:
747
+ interactionPayloadStart = performance.now();
748
+ config = (0, _config.getConfig)();
749
+ if (config) {
750
+ _context2.next = 4;
751
+ break;
752
+ }
753
+ throw Error('UFO Configuration not provided');
754
+ case 4:
755
+ end = interaction.end, start = interaction.start, ufoName = interaction.ufoName, knownSegments = interaction.knownSegments, rate = interaction.rate, type = interaction.type, abortReason = interaction.abortReason, routeName = interaction.routeName, featureFlags = interaction.featureFlags, previousInteractionName = interaction.previousInteractionName, isPreviousInteractionAborted = interaction.isPreviousInteractionAborted, abortedByInteractionName = interaction.abortedByInteractionName;
756
+ pageVisibilityAtTTI = getPageVisibilityUpToTTI(interaction);
757
+ pageVisibilityAtTTAI = getPageVisibilityUpToTTAI(interaction);
758
+ segments = config.killswitchNestedSegments ? [] : knownSegments;
759
+ segmentTree = (0, _constants.getReactUFOVersion)(interaction.type) === '2.0.0' ? (0, _utils.buildSegmentTree)(segments.map(function (segment) {
760
+ return segment.labelStack;
761
+ })) : {};
762
+ isDetailedPayload = pageVisibilityAtTTAI === 'visible';
763
+ isPageLoad = type === 'page_load';
764
+ calculatePageVisibilityFromTheStartOfPageLoad = config.enableBetterPageVisibilityApi && isPageLoad;
765
+ moreAccuratePageVisibilityAtTTI = calculatePageVisibilityFromTheStartOfPageLoad ? getMoreAccuratePageVisibilityUpToTTI(interaction) : null;
766
+ moreAccuratePageVisibilityAtTTAI = calculatePageVisibilityFromTheStartOfPageLoad ? getMoreAccuratePageVisibilityUpToTTAI(interaction) : null;
767
+ labelStack = interaction.labelStack ? {
768
+ labelStack: (0, _utils.optimizeLabelStack)(interaction.labelStack, (0, _constants.getReactUFOVersion)(interaction.type))
769
+ } : {}; // Page Load
770
+ getPageLoadInteractionMetrics = function getPageLoadInteractionMetrics() {
771
+ var _config$ssr3;
772
+ if (!isPageLoad) {
773
+ return {};
774
+ }
775
+ var config = (0, _config.getConfig)();
776
+ var SSRDoneTimeValue = getSSRDoneTimeValue(config);
777
+ var SSRDoneTime = SSRDoneTimeValue !== undefined ? {
778
+ SSRDoneTime: Math.round(SSRDoneTimeValue)
779
+ } : {};
780
+ return _objectSpread(_objectSpread({}, SSRDoneTime), {}, {
781
+ isBM3ConfigSSRDoneAsFmp: interaction.metaData.__legacy__bm3ConfigSSRDoneAsFmp,
782
+ isUFOConfigSSRDoneAsFmp: interaction.metaData.__legacy__bm3ConfigSSRDoneAsFmp || !!(config !== null && config !== void 0 && (_config$ssr3 = config.ssr) !== null && _config$ssr3 !== void 0 && _config$ssr3.getSSRDoneTime)
847
783
  });
848
- }),
849
- marks: optimizeMarks(interaction.marks, (0, _constants.getReactUFOVersion)(interaction.type)),
850
- customData: optimizeCustomData(interaction),
851
- reactProfilerTimings: optimizeReactProfilerTimings(interaction.reactProfilerTimings, start, (0, _constants.getReactUFOVersion)(interaction.type))
852
- }, labelStack), getPageLoadInteractionMetrics()), getDetailedInteractionMetrics(resourceTimings)), getPageLoadDetailedInteractionMetrics()), getBm3TrackerTimings(interaction)), {}, {
853
- 'metric:ttai': experimental ? regularTTAI || expTTAI : undefined,
854
- 'metric:experimental:ttai': expTTAI
855
- }),
856
- 'ufo:payloadTime': (0, _roundNumber.roundEpsilon)(performance.now() - interactionPayloadStart)
857
- })
858
- }
859
- };
860
- if (experimental) {
861
- regularTTAI = undefined;
862
- expTTAI = undefined;
863
- }
864
- payload.attributes.properties['event:sizeInKb'] = getPayloadSize(payload.attributes.properties);
865
- return payload;
784
+ }; // Detailed payload. Page visibility = visible
785
+ getDetailedInteractionMetrics = function getDetailedInteractionMetrics(resourceTimings) {
786
+ if (experimental || window.__UFO_COMPACT_PAYLOAD__ || !isDetailedPayload) {
787
+ return {};
788
+ }
789
+ var spans = [].concat((0, _toConsumableArray2.default)(interaction.spans), (0, _toConsumableArray2.default)(_interactionMetrics.interactionSpans));
790
+ _interactionMetrics.interactionSpans.length = 0;
791
+ return {
792
+ errors: interaction.errors.map(function (_ref7) {
793
+ var labelStack = _ref7.labelStack,
794
+ others = (0, _objectWithoutProperties2.default)(_ref7, _excluded3);
795
+ return _objectSpread(_objectSpread({}, others), {}, {
796
+ labelStack: labelStack && (0, _utils.optimizeLabelStack)(labelStack, (0, _constants.getReactUFOVersion)(interaction.type))
797
+ });
798
+ }),
799
+ holdActive: (0, _toConsumableArray2.default)(interaction.holdActive.values()),
800
+ redirects: optimizeRedirects(interaction.redirects, start),
801
+ holdInfo: optimizeHoldInfo(experimental ? interaction.holdExpInfo : interaction.holdInfo, start, (0, _constants.getReactUFOVersion)(interaction.type)),
802
+ spans: optimizeSpans(spans, start, (0, _constants.getReactUFOVersion)(interaction.type)),
803
+ requestInfo: optimizeRequestInfo(interaction.requestInfo, start, (0, _constants.getReactUFOVersion)(interaction.type)),
804
+ customTimings: optimizeCustomTimings(interaction.customTimings, start),
805
+ bundleEvalTimings: objectToArray(getBundleEvalTimings(start)),
806
+ resourceTimings: objectToArray(resourceTimings)
807
+ };
808
+ }; // Page load & detailed payload
809
+ getPageLoadDetailedInteractionMetrics = function getPageLoadDetailedInteractionMetrics() {
810
+ var _config$ssr4;
811
+ if (!isPageLoad || !isDetailedPayload) {
812
+ return {};
813
+ }
814
+ var config = (0, _config.getConfig)();
815
+ return {
816
+ initialPageLoadExtraTimings: objectToArray(initialPageLoadExtraTiming.getTimings()),
817
+ SSRTimings: config !== null && config !== void 0 && (_config$ssr4 = config.ssr) !== null && _config$ssr4 !== void 0 && _config$ssr4.getSSRTimings ? config.ssr.getSSRTimings() : objectToArray(ssr.getSSRTimings())
818
+ };
819
+ };
820
+ if (experimental) {
821
+ expTTAI = getTTAI(interaction);
822
+ } else {
823
+ regularTTAI = getTTAI(interaction);
824
+ }
825
+ newUFOName = (0, _utils.sanitizeUfoName)(ufoName);
826
+ resourceTimings = getResourceTimings(start, end);
827
+ _context2.next = 23;
828
+ return Promise.all([getVCMetrics(interaction), experimental ? (0, _createExperimentalInteractionMetricsPayload.getExperimentalVCMetrics)(interaction) : Promise.resolve(undefined)]);
829
+ case 23:
830
+ _yield$Promise$all = _context2.sent;
831
+ _yield$Promise$all2 = (0, _slicedToArray2.default)(_yield$Promise$all, 2);
832
+ vcMetrics = _yield$Promise$all2[0];
833
+ experimentalMetrics = _yield$Promise$all2[1];
834
+ payload = {
835
+ actionSubject: 'experience',
836
+ action: 'measured',
837
+ eventType: 'operational',
838
+ source: 'measured',
839
+ tags: ['observability'],
840
+ attributes: {
841
+ properties: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
842
+ // basic
843
+ 'event:hostname': ((_window$location = window.location) === null || _window$location === void 0 ? void 0 : _window$location.hostname) || 'unknown',
844
+ 'event:product': config.product,
845
+ 'event:schema': '1.0.0',
846
+ 'event:sizeInKb': 0,
847
+ 'event:source': {
848
+ name: 'react-ufo/web',
849
+ version: (0, _constants.getReactUFOVersion)(interaction.type)
850
+ },
851
+ 'event:region': config.region || 'unknown',
852
+ 'experience:key': experimental ? 'custom.experimental-interaction-metrics' : 'custom.interaction-metrics',
853
+ 'experience:name': newUFOName
854
+ }, getBrowserMetadata()), getSSRProperties(type)), getAssetsMetrics(interaction, resourceTimings)), getPPSMetrics(interaction)), getPaintMetrics(type)), getNavigationMetrics(type)), vcMetrics), experimentalMetrics), (_config$additionalPay = config.additionalPayloadData) === null || _config$additionalPay === void 0 ? void 0 : _config$additionalPay.call(config, interaction)), getTracingContextData(interaction)), getStylesheetMetrics()), getErrorCounts(interaction)), {}, {
855
+ interactionMetrics: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
856
+ namePrefix: config.namePrefix || '',
857
+ segmentPrefix: config.segmentPrefix || '',
858
+ interactionId: interactionId,
859
+ pageVisibilityAtTTI: pageVisibilityAtTTI,
860
+ pageVisibilityAtTTAI: pageVisibilityAtTTAI,
861
+ experimental__pageVisibilityAtTTI: moreAccuratePageVisibilityAtTTI,
862
+ experimental__pageVisibilityAtTTAI: moreAccuratePageVisibilityAtTTAI,
863
+ // raw interaction metrics
864
+ rate: rate,
865
+ routeName: routeName,
866
+ type: type,
867
+ abortReason: abortReason,
868
+ featureFlags: featureFlags,
869
+ previousInteractionName: previousInteractionName,
870
+ isPreviousInteractionAborted: isPreviousInteractionAborted,
871
+ abortedByInteractionName: abortedByInteractionName,
872
+ // performance
873
+ apdex: optimizeApdex(interaction.apdex, (0, _constants.getReactUFOVersion)(interaction.type)),
874
+ end: Math.round(end),
875
+ start: Math.round(start),
876
+ segments: (0, _constants.getReactUFOVersion)(interaction.type) === '2.0.0' ? segmentTree : segments.map(function (_ref8) {
877
+ var labelStack = _ref8.labelStack,
878
+ others = (0, _objectWithoutProperties2.default)(_ref8, _excluded4);
879
+ return _objectSpread(_objectSpread({}, others), {}, {
880
+ labelStack: (0, _utils.optimizeLabelStack)(labelStack, (0, _constants.getReactUFOVersion)(interaction.type))
881
+ });
882
+ }),
883
+ marks: optimizeMarks(interaction.marks, (0, _constants.getReactUFOVersion)(interaction.type)),
884
+ customData: optimizeCustomData(interaction),
885
+ reactProfilerTimings: optimizeReactProfilerTimings(interaction.reactProfilerTimings, start, (0, _constants.getReactUFOVersion)(interaction.type))
886
+ }, labelStack), getPageLoadInteractionMetrics()), getDetailedInteractionMetrics(resourceTimings)), getPageLoadDetailedInteractionMetrics()), getBm3TrackerTimings(interaction)), {}, {
887
+ 'metric:ttai': experimental ? regularTTAI || expTTAI : undefined,
888
+ 'metric:experimental:ttai': expTTAI
889
+ }),
890
+ 'ufo:payloadTime': (0, _roundNumber.roundEpsilon)(performance.now() - interactionPayloadStart)
891
+ })
892
+ }
893
+ };
894
+ if (experimental) {
895
+ regularTTAI = undefined;
896
+ expTTAI = undefined;
897
+ }
898
+ payload.attributes.properties['event:sizeInKb'] = getPayloadSize(payload.attributes.properties);
899
+ return _context2.abrupt("return", payload);
900
+ case 31:
901
+ case "end":
902
+ return _context2.stop();
903
+ }
904
+ }, _callee2);
905
+ }));
906
+ return _createInteractionMetricsPayload.apply(this, arguments);
866
907
  }
867
- function createPayloads(interactionId, interaction) {
868
- var ufoNameOverride = getUfoNameOverride(interaction);
869
- var modifiedInteraction = _objectSpread(_objectSpread({}, interaction), {}, {
870
- ufoName: ufoNameOverride
871
- });
872
- var interactionMetricsPayload = createInteractionMetricsPayload(modifiedInteraction, interactionId);
873
- return [interactionMetricsPayload];
908
+ function createPayloads(_x5, _x6) {
909
+ return _createPayloads.apply(this, arguments);
910
+ }
911
+ function _createPayloads() {
912
+ _createPayloads = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(interactionId, interaction) {
913
+ var ufoNameOverride, modifiedInteraction, interactionMetricsPayload;
914
+ return _regenerator.default.wrap(function _callee3$(_context3) {
915
+ while (1) switch (_context3.prev = _context3.next) {
916
+ case 0:
917
+ ufoNameOverride = getUfoNameOverride(interaction);
918
+ modifiedInteraction = _objectSpread(_objectSpread({}, interaction), {}, {
919
+ ufoName: ufoNameOverride
920
+ });
921
+ _context3.next = 4;
922
+ return createInteractionMetricsPayload(modifiedInteraction, interactionId);
923
+ case 4:
924
+ interactionMetricsPayload = _context3.sent;
925
+ return _context3.abrupt("return", [interactionMetricsPayload]);
926
+ case 6:
927
+ case "end":
928
+ return _context3.stop();
929
+ }
930
+ }, _callee3);
931
+ }));
932
+ return _createPayloads.apply(this, arguments);
874
933
  }
875
934
  function createExperimentalMetricsPayload(interactionId, interaction) {
876
935
  var config = (0, _config.getConfig)();