@atlaskit/react-ufo 3.3.1 → 3.3.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 (73) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/create-payload/index.js +106 -163
  3. package/dist/cjs/create-payload/utils/get-interaction-status.js +37 -0
  4. package/dist/cjs/create-payload/utils/get-page-visibility-up-to-ttai.js +12 -0
  5. package/dist/cjs/create-payload/utils/get-ssr-done-time-value.js +14 -0
  6. package/dist/cjs/create-payload/utils/get-vc-metrics.js +96 -0
  7. package/dist/cjs/interaction-metrics-init/index.js +11 -9
  8. package/dist/cjs/vc/index.js +6 -2
  9. package/dist/cjs/vc/vc-observer-new/get-element-name.js +19 -6
  10. package/dist/cjs/vc/vc-observer-new/index.js +6 -3
  11. package/dist/cjs/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +4 -2
  12. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +10 -11
  13. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +23 -30
  14. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +7 -7
  15. package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +3 -3
  16. package/dist/cjs/vc/vc-observer-new/window-event-observer/index.js +5 -1
  17. package/dist/es2019/create-payload/index.js +14 -73
  18. package/dist/es2019/create-payload/utils/get-interaction-status.js +31 -0
  19. package/dist/es2019/create-payload/utils/get-page-visibility-up-to-ttai.js +8 -0
  20. package/dist/es2019/create-payload/utils/get-ssr-done-time-value.js +5 -0
  21. package/dist/es2019/create-payload/utils/get-vc-metrics.js +53 -0
  22. package/dist/es2019/interaction-metrics-init/index.js +11 -9
  23. package/dist/es2019/vc/index.js +6 -2
  24. package/dist/es2019/vc/vc-observer-new/get-element-name.js +19 -6
  25. package/dist/es2019/vc/vc-observer-new/index.js +7 -3
  26. package/dist/es2019/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +4 -0
  27. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +1 -2
  28. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +15 -12
  29. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +5 -4
  30. package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +3 -2
  31. package/dist/es2019/vc/vc-observer-new/window-event-observer/index.js +5 -1
  32. package/dist/esm/create-payload/index.js +99 -156
  33. package/dist/esm/create-payload/utils/get-interaction-status.js +31 -0
  34. package/dist/esm/create-payload/utils/get-page-visibility-up-to-ttai.js +6 -0
  35. package/dist/esm/create-payload/utils/get-ssr-done-time-value.js +5 -0
  36. package/dist/esm/create-payload/utils/get-vc-metrics.js +89 -0
  37. package/dist/esm/interaction-metrics-init/index.js +11 -9
  38. package/dist/esm/vc/index.js +6 -2
  39. package/dist/esm/vc/vc-observer-new/get-element-name.js +19 -6
  40. package/dist/esm/vc/vc-observer-new/index.js +6 -3
  41. package/dist/esm/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +4 -2
  42. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +10 -11
  43. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +23 -30
  44. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +7 -7
  45. package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +3 -3
  46. package/dist/esm/vc/vc-observer-new/window-event-observer/index.js +5 -1
  47. package/dist/types/config/index.d.ts +1 -0
  48. package/dist/types/create-payload/index.d.ts +1 -1
  49. package/dist/types/create-payload/utils/get-interaction-status.d.ts +27 -0
  50. package/dist/types/create-payload/utils/get-page-visibility-up-to-ttai.d.ts +2 -0
  51. package/dist/types/create-payload/utils/get-ssr-done-time-value.d.ts +2 -0
  52. package/dist/types/create-payload/utils/get-vc-metrics.d.ts +5 -0
  53. package/dist/types/vc/vc-observer-new/index.d.ts +3 -2
  54. package/dist/types/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.d.ts +1 -1
  55. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.d.ts +2 -2
  56. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.d.ts +2 -1
  57. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.d.ts +2 -1
  58. package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/types.d.ts +2 -0
  59. package/dist/types/vc/vc-observer-new/metric-calculator/types.d.ts +2 -0
  60. package/dist/types-ts4.5/config/index.d.ts +1 -0
  61. package/dist/types-ts4.5/create-payload/index.d.ts +1 -1
  62. package/dist/types-ts4.5/create-payload/utils/get-interaction-status.d.ts +27 -0
  63. package/dist/types-ts4.5/create-payload/utils/get-page-visibility-up-to-ttai.d.ts +2 -0
  64. package/dist/types-ts4.5/create-payload/utils/get-ssr-done-time-value.d.ts +2 -0
  65. package/dist/types-ts4.5/create-payload/utils/get-vc-metrics.d.ts +5 -0
  66. package/dist/types-ts4.5/vc/vc-observer-new/index.d.ts +3 -2
  67. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.d.ts +1 -1
  68. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.d.ts +2 -2
  69. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.d.ts +2 -1
  70. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.d.ts +2 -1
  71. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/types.d.ts +2 -0
  72. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/types.d.ts +2 -0
  73. package/package.json +5 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @atlaskit/ufo-interaction-ignore
2
2
 
3
+ ## 3.3.3
4
+
5
+ ### Patch Changes
6
+
7
+ - [#123538](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/123538)
8
+ [`2dd75c16ca0c4`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/2dd75c16ca0c4) -
9
+ fix handling of potentially invalid selectors in TTVC v3
10
+
11
+ ## 3.3.2
12
+
13
+ ### Patch Changes
14
+
15
+ - [#122448](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/122448)
16
+ [`e3c0eec530ab2`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/e3c0eec530ab2) -
17
+ do not produce VC info on failed, aborted, or non active tab events
18
+
3
19
  ## 3.3.1
4
20
 
5
21
  ### Patch Changes
@@ -7,12 +7,12 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.createExperimentalMetricsPayload = createExperimentalMetricsPayload;
9
9
  exports.createPayloads = createPayloads;
10
- var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
10
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
12
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
12
13
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
13
14
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
14
15
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
16
16
  var _bowserUltralight = _interopRequireDefault(require("bowser-ultralight"));
17
17
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
18
18
  var _additionalPayload = require("../additional-payload");
@@ -30,8 +30,11 @@ var _interactionMetrics = require("../interaction-metrics");
30
30
  var resourceTiming = _interopRequireWildcard(require("../resource-timing"));
31
31
  var _roundNumber = require("../round-number");
32
32
  var ssr = _interopRequireWildcard(require("../ssr"));
33
- var _vc = require("../vc");
34
33
  var _utils = require("./common/utils");
34
+ var _getInteractionStatus = _interopRequireDefault(require("./utils/get-interaction-status"));
35
+ var _getPageVisibilityUpToTtai = _interopRequireDefault(require("./utils/get-page-visibility-up-to-ttai"));
36
+ var _getSsrDoneTimeValue = _interopRequireDefault(require("./utils/get-ssr-done-time-value"));
37
+ var _getVcMetrics = _interopRequireDefault(require("./utils/get-vc-metrics"));
35
38
  var _excluded = ["labelStack", "time"],
36
39
  _excluded2 = ["stopTime", "labelStack"],
37
40
  _excluded3 = ["labelStack"],
@@ -86,11 +89,6 @@ var getPageVisibilityUpToTTI = function getPageVisibilityUpToTTI(interaction) {
86
89
  var bm3EndTimeOrInteractionEndTime = getBm3EndTimeOrFallbackValue(interaction);
87
90
  return (0, _hiddenTiming.getPageVisibilityState)(start, bm3EndTimeOrInteractionEndTime);
88
91
  };
89
- var getPageVisibilityUpToTTAI = function getPageVisibilityUpToTTAI(interaction) {
90
- var start = interaction.start,
91
- end = interaction.end;
92
- return (0, _hiddenTiming.getPageVisibilityState)(start, end);
93
- };
94
92
  var getVisibilityStateFromPerformance = function getVisibilityStateFromPerformance(stop) {
95
93
  try {
96
94
  var results = performance.getEntriesByType('visibility-state');
@@ -136,7 +134,7 @@ var getMoreAccuratePageVisibilityUpToTTI = function getMoreAccuratePageVisibilit
136
134
  return old;
137
135
  };
138
136
  var getMoreAccuratePageVisibilityUpToTTAI = function getMoreAccuratePageVisibilityUpToTTAI(interaction) {
139
- var old = getPageVisibilityUpToTTAI(interaction);
137
+ var old = (0, _getPageVisibilityUpToTtai.default)(interaction);
140
138
  var buffered = getVisibilityStateFromPerformance(interaction.end);
141
139
  if (!buffered) {
142
140
  return old;
@@ -146,15 +144,6 @@ var getMoreAccuratePageVisibilityUpToTTAI = function getMoreAccuratePageVisibili
146
144
  }
147
145
  return old;
148
146
  };
149
- var getInteractionStatus = function getInteractionStatus(interaction) {
150
- var originalInteractionStatus = interaction.abortReason ? 'ABORTED' : 'SUCCEEDED';
151
- var hasBm3TTI = interaction.apdex.length > 0;
152
- var overrideStatus = hasBm3TTI ? 'SUCCEEDED' : originalInteractionStatus;
153
- return {
154
- originalInteractionStatus: originalInteractionStatus,
155
- overrideStatus: overrideStatus
156
- };
157
- };
158
147
  var getResourceTimings = function getResourceTimings(start, end) {
159
148
  var _resourceTiming$getRe;
160
149
  return (_resourceTiming$getRe = resourceTiming.getResourceTimings(start, end)) !== null && _resourceTiming$getRe !== void 0 ? _resourceTiming$getRe : undefined;
@@ -186,79 +175,9 @@ var getPaintMetrics = function getPaintMetrics(type) {
186
175
  var getTTAI = function getTTAI(interaction) {
187
176
  var start = interaction.start,
188
177
  end = interaction.end;
189
- var pageVisibilityUpToTTAI = getPageVisibilityUpToTTAI(interaction);
178
+ var pageVisibilityUpToTTAI = (0, _getPageVisibilityUpToTtai.default)(interaction);
190
179
  return !interaction.abortReason && pageVisibilityUpToTTAI === 'visible' ? Math.round(end - start) : undefined;
191
180
  };
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, interactionStatus, pageVisibilityUpToTTAI, result, VC;
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
- interactionStatus = getInteractionStatus(interaction);
220
- pageVisibilityUpToTTAI = getPageVisibilityUpToTTAI(interaction);
221
- _context.next = 14;
222
- return (0, _vc.getVCObserver)().getVCResult(_objectSpread({
223
- start: interaction.start,
224
- stop: interaction.end,
225
- tti: tti,
226
- prefix: prefix,
227
- vc: interaction.vc,
228
- isEventAborted: interactionStatus.originalInteractionStatus !== 'SUCCEEDED'
229
- }, ssr));
230
- case 14:
231
- result = _context.sent;
232
- if ((_config$experimentalI = config.experimentalInteractionMetrics) !== null && _config$experimentalI !== void 0 && _config$experimentalI.enabled) {
233
- (0, _vc.getVCObserver)().stop();
234
- }
235
- _interactionMetrics.postInteractionLog.setLastInteractionFinishVCResult(result);
236
- VC = result === null || result === void 0 ? void 0 : result['metrics:vc'];
237
- if (!(!VC || !(result !== null && result !== void 0 && result["".concat(prefix, ":vc:clean")]))) {
238
- _context.next = 20;
239
- break;
240
- }
241
- return _context.abrupt("return", result);
242
- case 20:
243
- if (!(interactionStatus.originalInteractionStatus !== 'SUCCEEDED' || pageVisibilityUpToTTAI !== 'visible')) {
244
- _context.next = 22;
245
- break;
246
- }
247
- return _context.abrupt("return", result);
248
- case 22:
249
- return _context.abrupt("return", _objectSpread(_objectSpread({}, result), {}, {
250
- 'metric:vc90': VC['90']
251
- }));
252
- case 23:
253
- case "end":
254
- return _context.stop();
255
- }
256
- }, _callee);
257
- }));
258
- return function getVCMetrics(_x) {
259
- return _ref2.apply(this, arguments);
260
- };
261
- }();
262
181
  var getNavigationMetrics = function getNavigationMetrics(type) {
263
182
  if (type !== 'page_load') {
264
183
  return {};
@@ -306,13 +225,13 @@ var getNavigationMetrics = function getNavigationMetrics(type) {
306
225
  };
307
226
  };
308
227
  var getPPSMetrics = function getPPSMetrics(interaction) {
309
- var _interaction$apdex2;
228
+ var _interaction$apdex;
310
229
  var start = interaction.start,
311
230
  end = interaction.end;
312
231
  var config = (0, _config.getConfig)();
313
- var interactionStatus = getInteractionStatus(interaction);
314
- var pageVisibilityUpToTTAI = getPageVisibilityUpToTTAI(interaction);
315
- var tti = (_interaction$apdex2 = interaction.apdex) === null || _interaction$apdex2 === void 0 || (_interaction$apdex2 = _interaction$apdex2[0]) === null || _interaction$apdex2 === void 0 ? void 0 : _interaction$apdex2.stopTime;
232
+ var interactionStatus = (0, _getInteractionStatus.default)(interaction);
233
+ var pageVisibilityUpToTTAI = (0, _getPageVisibilityUpToTtai.default)(interaction);
234
+ 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;
316
235
  var ttai = interactionStatus.originalInteractionStatus === 'SUCCEEDED' && pageVisibilityUpToTTAI === 'visible' ? Math.round(end - start) : undefined;
317
236
  var PPSMetricsAtTTI = tti !== undefined ? (0, _additionalPayload.getLighthouseMetrics)({
318
237
  start: start,
@@ -408,10 +327,10 @@ var getTracingContextData = function getTracingContextData(interaction) {
408
327
  function optimizeCustomData(interaction) {
409
328
  var customData = interaction.customData,
410
329
  legacyMetrics = interaction.legacyMetrics;
411
- var customDataMap = customData.reduce(function (result, _ref3) {
330
+ var customDataMap = customData.reduce(function (result, _ref2) {
412
331
  var _result$get$data, _result$get;
413
- var labelStack = _ref3.labelStack,
414
- data = _ref3.data;
332
+ var labelStack = _ref2.labelStack,
333
+ data = _ref2.data;
415
334
  var label = (0, _utils.stringifyLabelStackFully)(labelStack);
416
335
  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 : {};
417
336
  result.set(label, {
@@ -427,13 +346,13 @@ function optimizeCustomData(interaction) {
427
346
  for (var _i = 0, _Object$entries = Object.entries(currentValue.custom || {}); _i < _Object$entries.length; _i++) {
428
347
  var _result$get$data2, _result$get2;
429
348
  var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i], 2),
430
- _key = _Object$entries$_i[0],
349
+ key = _Object$entries$_i[0],
431
350
  value = _Object$entries$_i[1];
432
351
  var label = (0, _utils.stringifyLabelStackFully)([]);
433
352
  var labelValue = (_result$get$data2 = (_result$get2 = result.get(label)) === null || _result$get2 === void 0 ? void 0 : _result$get2.data) !== null && _result$get$data2 !== void 0 ? _result$get$data2 : {};
434
353
  result.set(label, {
435
354
  labelStack: (0, _utils.optimizeLabelStack)([], (0, _constants.getReactUFOVersion)(interaction.type)),
436
- data: Object.assign(labelValue, (0, _defineProperty2.default)({}, _key, value))
355
+ data: Object.assign(labelValue, (0, _defineProperty2.default)({}, key, value))
437
356
  });
438
357
  }
439
358
  return result;
@@ -443,12 +362,12 @@ function optimizeCustomData(interaction) {
443
362
  return (0, _toConsumableArray2.default)(customDataMap.values());
444
363
  }
445
364
  function optimizeReactProfilerTimings(reactProfilerTimings, interactionStart, reactUFOVersion) {
446
- var reactProfilerTimingsMap = reactProfilerTimings.reduce(function (result, _ref4) {
447
- var labelStack = _ref4.labelStack,
448
- startTime = _ref4.startTime,
449
- commitTime = _ref4.commitTime,
450
- actualDuration = _ref4.actualDuration,
451
- type = _ref4.type;
365
+ var reactProfilerTimingsMap = reactProfilerTimings.reduce(function (result, _ref3) {
366
+ var labelStack = _ref3.labelStack,
367
+ startTime = _ref3.startTime,
368
+ commitTime = _ref3.commitTime,
369
+ actualDuration = _ref3.actualDuration,
370
+ type = _ref3.type;
452
371
  if (labelStack && startTime >= interactionStart) {
453
372
  var label = (0, _utils.stringifyLabelStackFully)(labelStack);
454
373
  var start = Math.round(startTime);
@@ -594,10 +513,10 @@ function optimizeCustomTimings(customTimings, interactionStart) {
594
513
  }, []);
595
514
  }
596
515
  function optimizeMarks(marks, reactUFOVersion) {
597
- return marks.map(function (_ref5) {
598
- var labelStack = _ref5.labelStack,
599
- time = _ref5.time,
600
- others = (0, _objectWithoutProperties2.default)(_ref5, _excluded);
516
+ return marks.map(function (_ref4) {
517
+ var labelStack = _ref4.labelStack,
518
+ time = _ref4.time,
519
+ others = (0, _objectWithoutProperties2.default)(_ref4, _excluded);
601
520
  return _objectSpread(_objectSpread({}, others), {}, {
602
521
  labelStack: labelStack && (0, _utils.optimizeLabelStack)(labelStack, reactUFOVersion),
603
522
  time: Math.round(time)
@@ -605,10 +524,10 @@ function optimizeMarks(marks, reactUFOVersion) {
605
524
  });
606
525
  }
607
526
  function optimizeApdex(apdex, reactUFOVersion) {
608
- return apdex.map(function (_ref6) {
609
- var stopTime = _ref6.stopTime,
610
- labelStack = _ref6.labelStack,
611
- others = (0, _objectWithoutProperties2.default)(_ref6, _excluded2);
527
+ return apdex.map(function (_ref5) {
528
+ var stopTime = _ref5.stopTime,
529
+ labelStack = _ref5.labelStack,
530
+ others = (0, _objectWithoutProperties2.default)(_ref5, _excluded2);
612
531
  return _objectSpread(_objectSpread({}, others), {}, {
613
532
  stopTime: Math.round(stopTime)
614
533
  }, labelStack ? {
@@ -671,10 +590,6 @@ function getBm3TrackerTimings(interaction) {
671
590
  legacyMetrics: legacyMetrics
672
591
  };
673
592
  }
674
- function getSSRDoneTimeValue(config) {
675
- var _config$ssr, _config$ssr2;
676
- return config !== null && config !== void 0 && (_config$ssr = config.ssr) !== null && _config$ssr !== void 0 && _config$ssr.getSSRDoneTime ? config === null || config === void 0 || (_config$ssr2 = config.ssr) === null || _config$ssr2 === void 0 ? void 0 : _config$ssr2.getSSRDoneTime() : ssr.getSSRDoneTime();
677
- }
678
593
  function getPayloadSize(payload) {
679
594
  return Math.round(new TextEncoder().encode(JSON.stringify(payload)).length / 1024);
680
595
  }
@@ -726,27 +641,27 @@ function getErrorCounts(interaction) {
726
641
  'ufo:errors:count': interaction.errors.length
727
642
  };
728
643
  }
729
- function createInteractionMetricsPayload(_x2, _x3, _x4) {
644
+ function createInteractionMetricsPayload(_x, _x2, _x3) {
730
645
  return _createInteractionMetricsPayload.apply(this, arguments);
731
646
  }
732
647
  function _createInteractionMetricsPayload() {
733
- _createInteractionMetricsPayload = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(interaction, interactionId, experimental) {
648
+ _createInteractionMetricsPayload = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(interaction, interactionId, experimental) {
734
649
  var _window$location, _config$additionalPay;
735
650
  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;
736
- return _regenerator.default.wrap(function _callee2$(_context2) {
737
- while (1) switch (_context2.prev = _context2.next) {
651
+ return _regenerator.default.wrap(function _callee$(_context) {
652
+ while (1) switch (_context.prev = _context.next) {
738
653
  case 0:
739
654
  interactionPayloadStart = performance.now();
740
655
  config = (0, _config.getConfig)();
741
656
  if (config) {
742
- _context2.next = 4;
657
+ _context.next = 4;
743
658
  break;
744
659
  }
745
660
  throw Error('UFO Configuration not provided');
746
661
  case 4:
747
662
  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;
748
663
  pageVisibilityAtTTI = getPageVisibilityUpToTTI(interaction);
749
- pageVisibilityAtTTAI = getPageVisibilityUpToTTAI(interaction);
664
+ pageVisibilityAtTTAI = (0, _getPageVisibilityUpToTtai.default)(interaction);
750
665
  segments = config.killswitchNestedSegments ? [] : knownSegments;
751
666
  segmentTree = (0, _constants.getReactUFOVersion)(interaction.type) === '2.0.0' ? (0, _utils.buildSegmentTree)(segments.map(function (segment) {
752
667
  return segment.labelStack;
@@ -760,18 +675,18 @@ function _createInteractionMetricsPayload() {
760
675
  labelStack: (0, _utils.optimizeLabelStack)(interaction.labelStack, (0, _constants.getReactUFOVersion)(interaction.type))
761
676
  } : {}; // Page Load
762
677
  getPageLoadInteractionMetrics = function getPageLoadInteractionMetrics() {
763
- var _config$ssr3;
678
+ var _config$ssr;
764
679
  if (!isPageLoad) {
765
680
  return {};
766
681
  }
767
682
  var config = (0, _config.getConfig)();
768
- var SSRDoneTimeValue = getSSRDoneTimeValue(config);
683
+ var SSRDoneTimeValue = (0, _getSsrDoneTimeValue.default)(config);
769
684
  var SSRDoneTime = SSRDoneTimeValue !== undefined ? {
770
685
  SSRDoneTime: Math.round(SSRDoneTimeValue)
771
686
  } : {};
772
687
  return _objectSpread(_objectSpread({}, SSRDoneTime), {}, {
773
688
  isBM3ConfigSSRDoneAsFmp: interaction.metaData.__legacy__bm3ConfigSSRDoneAsFmp,
774
- isUFOConfigSSRDoneAsFmp: interaction.metaData.__legacy__bm3ConfigSSRDoneAsFmp || !!(config !== null && config !== void 0 && (_config$ssr3 = config.ssr) !== null && _config$ssr3 !== void 0 && _config$ssr3.getSSRDoneTime)
689
+ isUFOConfigSSRDoneAsFmp: interaction.metaData.__legacy__bm3ConfigSSRDoneAsFmp || !!(config !== null && config !== void 0 && (_config$ssr = config.ssr) !== null && _config$ssr !== void 0 && _config$ssr.getSSRDoneTime)
775
690
  });
776
691
  }; // Detailed payload. Page visibility = visible
777
692
  getDetailedInteractionMetrics = function getDetailedInteractionMetrics(resourceTimings) {
@@ -781,9 +696,9 @@ function _createInteractionMetricsPayload() {
781
696
  var spans = [].concat((0, _toConsumableArray2.default)(interaction.spans), (0, _toConsumableArray2.default)(_interactionMetrics.interactionSpans));
782
697
  _interactionMetrics.interactionSpans.length = 0;
783
698
  return {
784
- errors: interaction.errors.map(function (_ref7) {
785
- var labelStack = _ref7.labelStack,
786
- others = (0, _objectWithoutProperties2.default)(_ref7, _excluded3);
699
+ errors: interaction.errors.map(function (_ref6) {
700
+ var labelStack = _ref6.labelStack,
701
+ others = (0, _objectWithoutProperties2.default)(_ref6, _excluded3);
787
702
  return _objectSpread(_objectSpread({}, others), {}, {
788
703
  labelStack: labelStack && (0, _utils.optimizeLabelStack)(labelStack, (0, _constants.getReactUFOVersion)(interaction.type))
789
704
  });
@@ -799,14 +714,14 @@ function _createInteractionMetricsPayload() {
799
714
  };
800
715
  }; // Page load & detailed payload
801
716
  getPageLoadDetailedInteractionMetrics = function getPageLoadDetailedInteractionMetrics() {
802
- var _config$ssr4;
717
+ var _config$ssr2;
803
718
  if (!isPageLoad || !isDetailedPayload) {
804
719
  return {};
805
720
  }
806
721
  var config = (0, _config.getConfig)();
807
722
  return {
808
723
  initialPageLoadExtraTimings: objectToArray(initialPageLoadExtraTiming.getTimings()),
809
- SSRTimings: config !== null && config !== void 0 && (_config$ssr4 = config.ssr) !== null && _config$ssr4 !== void 0 && _config$ssr4.getSSRTimings ? config.ssr.getSSRTimings() : objectToArray(ssr.getSSRTimings())
724
+ SSRTimings: config !== null && config !== void 0 && (_config$ssr2 = config.ssr) !== null && _config$ssr2 !== void 0 && _config$ssr2.getSSRTimings ? config.ssr.getSSRTimings() : objectToArray(ssr.getSSRTimings())
810
725
  };
811
726
  };
812
727
  if (experimental) {
@@ -816,10 +731,10 @@ function _createInteractionMetricsPayload() {
816
731
  }
817
732
  newUFOName = (0, _utils.sanitizeUfoName)(ufoName);
818
733
  resourceTimings = getResourceTimings(start, end);
819
- _context2.next = 23;
820
- return Promise.all([getVCMetrics(interaction), experimental ? (0, _createExperimentalInteractionMetricsPayload.getExperimentalVCMetrics)(interaction) : Promise.resolve(undefined)]);
734
+ _context.next = 23;
735
+ return Promise.all([(0, _getVcMetrics.default)(interaction), experimental ? (0, _createExperimentalInteractionMetricsPayload.getExperimentalVCMetrics)(interaction) : Promise.resolve(undefined)]);
821
736
  case 23:
822
- _yield$Promise$all = _context2.sent;
737
+ _yield$Promise$all = _context.sent;
823
738
  _yield$Promise$all2 = (0, _slicedToArray2.default)(_yield$Promise$all, 2);
824
739
  vcMetrics = _yield$Promise$all2[0];
825
740
  experimentalMetrics = _yield$Promise$all2[1];
@@ -865,9 +780,9 @@ function _createInteractionMetricsPayload() {
865
780
  apdex: optimizeApdex(interaction.apdex, (0, _constants.getReactUFOVersion)(interaction.type)),
866
781
  end: Math.round(end),
867
782
  start: Math.round(start),
868
- segments: (0, _constants.getReactUFOVersion)(interaction.type) === '2.0.0' ? segmentTree : segments.map(function (_ref8) {
869
- var labelStack = _ref8.labelStack,
870
- others = (0, _objectWithoutProperties2.default)(_ref8, _excluded4);
783
+ segments: (0, _constants.getReactUFOVersion)(interaction.type) === '2.0.0' ? segmentTree : segments.map(function (_ref7) {
784
+ var labelStack = _ref7.labelStack,
785
+ others = (0, _objectWithoutProperties2.default)(_ref7, _excluded4);
871
786
  return _objectSpread(_objectSpread({}, others), {}, {
872
787
  labelStack: (0, _utils.optimizeLabelStack)(labelStack, (0, _constants.getReactUFOVersion)(interaction.type))
873
788
  });
@@ -888,54 +803,82 @@ function _createInteractionMetricsPayload() {
888
803
  expTTAI = undefined;
889
804
  }
890
805
  payload.attributes.properties['event:sizeInKb'] = getPayloadSize(payload.attributes.properties);
891
- return _context2.abrupt("return", payload);
806
+ return _context.abrupt("return", payload);
892
807
  case 31:
893
808
  case "end":
894
- return _context2.stop();
809
+ return _context.stop();
895
810
  }
896
- }, _callee2);
811
+ }, _callee);
897
812
  }));
898
813
  return _createInteractionMetricsPayload.apply(this, arguments);
899
814
  }
900
- function createPayloads(_x5, _x6) {
815
+ function createPayloads(_x4, _x5) {
901
816
  return _createPayloads.apply(this, arguments);
902
817
  }
903
818
  function _createPayloads() {
904
- _createPayloads = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(interactionId, interaction) {
819
+ _createPayloads = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(interactionId, interaction) {
905
820
  var ufoNameOverride, modifiedInteraction, interactionMetricsPayload;
906
- return _regenerator.default.wrap(function _callee3$(_context3) {
907
- while (1) switch (_context3.prev = _context3.next) {
821
+ return _regenerator.default.wrap(function _callee2$(_context2) {
822
+ while (1) switch (_context2.prev = _context2.next) {
908
823
  case 0:
909
824
  ufoNameOverride = getUfoNameOverride(interaction);
910
825
  modifiedInteraction = _objectSpread(_objectSpread({}, interaction), {}, {
911
826
  ufoName: ufoNameOverride
912
827
  });
913
- _context3.next = 4;
828
+ _context2.next = 4;
914
829
  return createInteractionMetricsPayload(modifiedInteraction, interactionId);
915
830
  case 4:
916
- interactionMetricsPayload = _context3.sent;
917
- return _context3.abrupt("return", [interactionMetricsPayload]);
831
+ interactionMetricsPayload = _context2.sent;
832
+ return _context2.abrupt("return", [interactionMetricsPayload]);
918
833
  case 6:
919
834
  case "end":
920
- return _context3.stop();
835
+ return _context2.stop();
921
836
  }
922
- }, _callee3);
837
+ }, _callee2);
923
838
  }));
924
839
  return _createPayloads.apply(this, arguments);
925
840
  }
926
- function createExperimentalMetricsPayload(interactionId, interaction) {
927
- var config = (0, _config.getConfig)();
928
- if (!config) {
929
- throw Error('UFO Configuration not provided');
930
- }
931
- var ufoName = (0, _utils.sanitizeUfoName)(interaction.ufoName);
932
- var rate = (0, _config.getExperimentalInteractionRate)(ufoName, interaction.type);
933
- if (!(0, _coinflip.default)(rate)) {
934
- return null;
935
- }
936
- var pageVisibilityState = (0, _hiddenTiming.getPageVisibilityState)(interaction.start, interaction.end);
937
- if (pageVisibilityState !== 'visible') {
938
- return null;
939
- }
940
- return createInteractionMetricsPayload(interaction, interactionId, true);
841
+ function createExperimentalMetricsPayload(_x6, _x7) {
842
+ return _createExperimentalMetricsPayload.apply(this, arguments);
843
+ }
844
+ function _createExperimentalMetricsPayload() {
845
+ _createExperimentalMetricsPayload = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(interactionId, interaction) {
846
+ var config, ufoName, rate, pageVisibilityState, result;
847
+ return _regenerator.default.wrap(function _callee3$(_context3) {
848
+ while (1) switch (_context3.prev = _context3.next) {
849
+ case 0:
850
+ config = (0, _config.getConfig)();
851
+ if (config) {
852
+ _context3.next = 3;
853
+ break;
854
+ }
855
+ throw Error('UFO Configuration not provided');
856
+ case 3:
857
+ ufoName = (0, _utils.sanitizeUfoName)(interaction.ufoName);
858
+ rate = (0, _config.getExperimentalInteractionRate)(ufoName, interaction.type);
859
+ if ((0, _coinflip.default)(rate)) {
860
+ _context3.next = 7;
861
+ break;
862
+ }
863
+ return _context3.abrupt("return", null);
864
+ case 7:
865
+ pageVisibilityState = (0, _hiddenTiming.getPageVisibilityState)(interaction.start, interaction.end);
866
+ if (!(pageVisibilityState !== 'visible')) {
867
+ _context3.next = 10;
868
+ break;
869
+ }
870
+ return _context3.abrupt("return", null);
871
+ case 10:
872
+ _context3.next = 12;
873
+ return createInteractionMetricsPayload(interaction, interactionId, true);
874
+ case 12:
875
+ result = _context3.sent;
876
+ return _context3.abrupt("return", result);
877
+ case 14:
878
+ case "end":
879
+ return _context3.stop();
880
+ }
881
+ }, _callee3);
882
+ }));
883
+ return _createExperimentalMetricsPayload.apply(this, arguments);
941
884
  }
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = getInteractionStatus;
7
+ /**
8
+ * Determines the interaction status based on abort reason and BM3 TTI presence.
9
+ *
10
+ * @param {InteractionMetrics} interaction - The interaction metrics object containing abort reason and apdex data
11
+ * @returns {{
12
+ * originalInteractionStatus: 'ABORTED' | 'SUCCEEDED',
13
+ * overrideStatus: 'ABORTED' | 'SUCCEEDED'
14
+ * }} An object containing both the original and override status
15
+ *
16
+ * @description
17
+ * This function evaluates the interaction status in two ways:
18
+ * 1. originalInteractionStatus: Based on whether there's an abort reason
19
+ * 2. overrideStatus: Based on the presence of BM3 TTI (apdex data)
20
+ *
21
+ * @example
22
+ * const interaction = {
23
+ * abortReason: null,
24
+ * apdex: [1, 2, 3]
25
+ * };
26
+ * const result = getInteractionStatus(interaction);
27
+ * // Returns: { originalInteractionStatus: 'SUCCEEDED', overrideStatus: 'SUCCEEDED' }
28
+ */
29
+ function getInteractionStatus(interaction) {
30
+ var originalInteractionStatus = interaction.abortReason ? 'ABORTED' : 'SUCCEEDED';
31
+ var hasBm3TTI = interaction.apdex.length > 0;
32
+ var overrideStatus = hasBm3TTI ? 'SUCCEEDED' : originalInteractionStatus;
33
+ return {
34
+ originalInteractionStatus: originalInteractionStatus,
35
+ overrideStatus: overrideStatus
36
+ };
37
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = getPageVisibilityUpToTTAI;
7
+ var _hiddenTiming = require("../../hidden-timing");
8
+ function getPageVisibilityUpToTTAI(interaction) {
9
+ var start = interaction.start,
10
+ end = interaction.end;
11
+ return (0, _hiddenTiming.getPageVisibilityState)(start, end);
12
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.default = getSSRDoneTimeValue;
8
+ var ssr = _interopRequireWildcard(require("../../ssr"));
9
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
10
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
11
+ function getSSRDoneTimeValue(config) {
12
+ var _config$ssr, _config$ssr2;
13
+ return config !== null && config !== void 0 && (_config$ssr = config.ssr) !== null && _config$ssr !== void 0 && _config$ssr.getSSRDoneTime ? config === null || config === void 0 || (_config$ssr2 = config.ssr) === null || _config$ssr2 === void 0 ? void 0 : _config$ssr2.getSSRDoneTime() : ssr.getSSRDoneTime();
14
+ }