@atlaskit/react-ufo 2.4.5 → 2.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/create-experimental-interaction-metrics-payload/package.json +15 -0
  3. package/dist/cjs/config/index.js +40 -18
  4. package/dist/cjs/create-experimental-interaction-metrics-payload/index.js +89 -0
  5. package/dist/cjs/create-payload/common/utils/index.js +85 -1
  6. package/dist/cjs/create-payload/index.js +49 -85
  7. package/dist/cjs/create-post-interaction-log-payload/index.js +1 -4
  8. package/dist/cjs/interaction-metrics/common/constants.js +7 -1
  9. package/dist/cjs/interaction-metrics/common/index.js +151 -0
  10. package/dist/cjs/interaction-metrics/index.js +139 -204
  11. package/dist/cjs/interaction-metrics/post-interaction-log.js +6 -2
  12. package/dist/cjs/interaction-metrics-init/index.js +27 -9
  13. package/dist/cjs/load-hold/UFOLoadHold.js +3 -4
  14. package/dist/cjs/segment/segment.js +7 -9
  15. package/dist/cjs/trace-pageload/index.js +2 -1
  16. package/dist/cjs/vc/vc-observer/observers/index.js +1 -40
  17. package/dist/es2019/config/index.js +22 -0
  18. package/dist/es2019/create-experimental-interaction-metrics-payload/index.js +67 -0
  19. package/dist/es2019/create-payload/common/utils/index.js +86 -1
  20. package/dist/es2019/create-payload/index.js +40 -81
  21. package/dist/es2019/create-post-interaction-log-payload/index.js +1 -4
  22. package/dist/es2019/interaction-metrics/common/constants.js +6 -0
  23. package/dist/es2019/interaction-metrics/common/index.js +103 -0
  24. package/dist/es2019/interaction-metrics/index.js +92 -129
  25. package/dist/es2019/interaction-metrics/post-interaction-log.js +6 -2
  26. package/dist/es2019/interaction-metrics-init/index.js +21 -8
  27. package/dist/es2019/load-hold/UFOLoadHold.js +3 -4
  28. package/dist/es2019/segment/segment.js +6 -12
  29. package/dist/es2019/trace-pageload/index.js +1 -1
  30. package/dist/es2019/vc/vc-observer/observers/index.js +1 -20
  31. package/dist/esm/config/index.js +39 -18
  32. package/dist/esm/create-experimental-interaction-metrics-payload/index.js +81 -0
  33. package/dist/esm/create-payload/common/utils/index.js +80 -1
  34. package/dist/esm/create-payload/index.js +45 -83
  35. package/dist/esm/create-post-interaction-log-payload/index.js +1 -4
  36. package/dist/esm/interaction-metrics/common/constants.js +6 -0
  37. package/dist/esm/interaction-metrics/common/index.js +132 -0
  38. package/dist/esm/interaction-metrics/index.js +87 -156
  39. package/dist/esm/interaction-metrics/post-interaction-log.js +6 -2
  40. package/dist/esm/interaction-metrics-init/index.js +24 -10
  41. package/dist/esm/load-hold/UFOLoadHold.js +3 -4
  42. package/dist/esm/segment/segment.js +7 -9
  43. package/dist/esm/trace-pageload/index.js +1 -1
  44. package/dist/esm/vc/vc-observer/observers/index.js +1 -40
  45. package/dist/types/common/common/types.d.ts +9 -5
  46. package/dist/types/config/index.d.ts +6 -0
  47. package/dist/types/create-experimental-interaction-metrics-payload/index.d.ts +31 -0
  48. package/dist/types/create-payload/common/utils/index.d.ts +12 -0
  49. package/dist/types/create-payload/index.d.ts +13 -5716
  50. package/dist/types/create-post-interaction-log-payload/index.d.ts +2 -0
  51. package/dist/types/interaction-metrics/common/constants.d.ts +31 -1
  52. package/dist/types/interaction-metrics/common/index.d.ts +16 -0
  53. package/dist/types/interaction-metrics/index.d.ts +4 -15
  54. package/dist/types/interaction-metrics/post-interaction-log.d.ts +1 -1
  55. package/dist/types/load-hold/UFOLoadHold.d.ts +1 -2
  56. package/dist/types/trace-pageload/index.d.ts +1 -0
  57. package/dist/types/vc/vc-observer/observers/index.d.ts +0 -1
  58. package/dist/types-ts4.5/common/common/types.d.ts +9 -5
  59. package/dist/types-ts4.5/config/index.d.ts +6 -0
  60. package/dist/types-ts4.5/create-experimental-interaction-metrics-payload/index.d.ts +31 -0
  61. package/dist/types-ts4.5/create-payload/common/utils/index.d.ts +12 -0
  62. package/dist/types-ts4.5/create-payload/index.d.ts +13 -5716
  63. package/dist/types-ts4.5/create-post-interaction-log-payload/index.d.ts +2 -0
  64. package/dist/types-ts4.5/interaction-metrics/common/constants.d.ts +31 -1
  65. package/dist/types-ts4.5/interaction-metrics/common/index.d.ts +16 -0
  66. package/dist/types-ts4.5/interaction-metrics/index.d.ts +4 -15
  67. package/dist/types-ts4.5/interaction-metrics/post-interaction-log.d.ts +1 -1
  68. package/dist/types-ts4.5/load-hold/UFOLoadHold.d.ts +1 -2
  69. package/dist/types-ts4.5/trace-pageload/index.d.ts +1 -0
  70. package/dist/types-ts4.5/vc/vc-observer/observers/index.d.ts +0 -1
  71. package/package.json +2 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,30 @@
1
1
  # @atlaskit/ufo-interaction-ignore
2
2
 
3
+ ## 2.4.7
4
+
5
+ ### Patch Changes
6
+
7
+ - [#175818](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/175818)
8
+ [`1401a5646d271`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/1401a5646d271) -
9
+ Add experimentalTTAI and experimentalVC90 to custom.post-interaction-log
10
+ - [#173211](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/173211)
11
+ [`202bc8df0c75a`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/202bc8df0c75a) -
12
+ Experimental UFO holds, VC90 and TTAI metrics
13
+ - [#175826](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/175826)
14
+ [`b5c5bf59d1cff`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/b5c5bf59d1cff) -
15
+ add rate limiting to experimental interaction metrics
16
+
17
+ ## 2.4.6
18
+
19
+ ### Patch Changes
20
+
21
+ - [#174829](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/174829)
22
+ [`381735c03773b`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/381735c03773b) -
23
+ add ufo: prefix to error count and stylesheet count metrics
24
+ - [#174760](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/174760)
25
+ [`0c5bbf0079bee`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/0c5bbf0079bee) -
26
+ Remove display style attribute mutation check
27
+
3
28
  ## 2.4.5
4
29
 
5
30
  ### Patch Changes
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@atlaskit/react-ufo/create-experimental-interaction-metrics-payload",
3
+ "main": "../dist/cjs/create-experimental-interaction-metrics-payload/index.js",
4
+ "module": "../dist/esm/create-experimental-interaction-metrics-payload/index.js",
5
+ "module:es2019": "../dist/es2019/create-experimental-interaction-metrics-payload/index.js",
6
+ "sideEffects": false,
7
+ "types": "../dist/types/create-experimental-interaction-metrics-payload/index.d.ts",
8
+ "typesVersions": {
9
+ ">=4.5 <5.4": {
10
+ "*": [
11
+ "../dist/types-ts4.5/create-experimental-interaction-metrics-payload/index.d.ts"
12
+ ]
13
+ }
14
+ }
15
+ }
@@ -8,6 +8,7 @@ exports.getCapabilityRate = getCapabilityRate;
8
8
  exports.getConfig = getConfig;
9
9
  exports.getDoNotAbortActivePressInteraction = getDoNotAbortActivePressInteraction;
10
10
  exports.getDoNotAbortActivePressInteractionOnTransition = getDoNotAbortActivePressInteractionOnTransition;
11
+ exports.getExperimentalInteractionRate = getExperimentalInteractionRate;
11
12
  exports.getInteractionRate = getInteractionRate;
12
13
  exports.getPostInteractionRate = getPostInteractionRate;
13
14
  exports.getRemoveInteractionsUFOPrefixes = getRemoveInteractionsUFOPrefixes;
@@ -81,13 +82,34 @@ function getInteractionRate(name, interactionKind) {
81
82
  return 0;
82
83
  }
83
84
  }
84
- function getPostInteractionRate(name, interactionType) {
85
+ function getExperimentalInteractionRate(name, interactionType) {
85
86
  try {
86
87
  if (!config) {
87
88
  return 0;
88
89
  }
89
90
  var _config2 = config,
90
- postInteractionLog = _config2.postInteractionLog;
91
+ experimentalInteractionMetrics = _config2.experimentalInteractionMetrics;
92
+ if (!(experimentalInteractionMetrics !== null && experimentalInteractionMetrics !== void 0 && experimentalInteractionMetrics.enabled)) {
93
+ return 0;
94
+ }
95
+ if (experimentalInteractionMetrics.rates && typeof experimentalInteractionMetrics.rates[name] === 'number') {
96
+ return experimentalInteractionMetrics.rates[name];
97
+ }
98
+ if (experimentalInteractionMetrics.kind && typeof experimentalInteractionMetrics.kind[interactionType] === 'number') {
99
+ return experimentalInteractionMetrics.kind[interactionType];
100
+ }
101
+ return 0;
102
+ } catch (e) {
103
+ return 0;
104
+ }
105
+ }
106
+ function getPostInteractionRate(name, interactionType) {
107
+ try {
108
+ if (!config) {
109
+ return 0;
110
+ }
111
+ var _config3 = config,
112
+ postInteractionLog = _config3.postInteractionLog;
91
113
  if (!(postInteractionLog !== null && postInteractionLog !== void 0 && postInteractionLog.enabled)) {
92
114
  return 0;
93
115
  }
@@ -107,8 +129,8 @@ function getCapabilityRate(capability) {
107
129
  if (!config) {
108
130
  return 0;
109
131
  }
110
- var _config3 = config,
111
- capabilityRate = _config3.capability;
132
+ var _config4 = config,
133
+ capabilityRate = _config4.capability;
112
134
  if (capabilityRate != null) {
113
135
  var rate = capabilityRate[capability];
114
136
  if (rate != null) {
@@ -127,8 +149,8 @@ function getTypingPerformanceTracingMethod() {
127
149
  if (!config) {
128
150
  return defaultMethod;
129
151
  }
130
- var _config4 = config,
131
- typingMethod = _config4.typingMethod;
152
+ var _config5 = config,
153
+ typingMethod = _config5.typingMethod;
132
154
  if (typingMethod != null && validTypingMethods.find(function (m) {
133
155
  return m === typingMethod;
134
156
  })) {
@@ -147,8 +169,8 @@ function getAwaitBM3TTIList() {
147
169
  if (!config) {
148
170
  return [];
149
171
  }
150
- var _config5 = config,
151
- awaitBM3TTI = _config5.awaitBM3TTI;
172
+ var _config6 = config,
173
+ awaitBM3TTI = _config6.awaitBM3TTI;
152
174
  if (awaitBM3TTI != null) {
153
175
  return awaitBM3TTI;
154
176
  } else {
@@ -165,8 +187,8 @@ function getRemovePageSegmentsUFOPrefixes() {
165
187
  if (!config) {
166
188
  return false;
167
189
  }
168
- var _config6 = config,
169
- removePageSegmentsUFOPrefixes = _config6.removePageSegmentsUFOPrefixes;
190
+ var _config7 = config,
191
+ removePageSegmentsUFOPrefixes = _config7.removePageSegmentsUFOPrefixes;
170
192
  if (removePageSegmentsUFOPrefixes != null) {
171
193
  return removePageSegmentsUFOPrefixes;
172
194
  } else {
@@ -183,8 +205,8 @@ function getRemoveInteractionsUFOPrefixes() {
183
205
  if (!config) {
184
206
  return false;
185
207
  }
186
- var _config7 = config,
187
- removeInteractionsUFOPrefixes = _config7.removeInteractionsUFOPrefixes;
208
+ var _config8 = config,
209
+ removeInteractionsUFOPrefixes = _config8.removeInteractionsUFOPrefixes;
188
210
  if (removeInteractionsUFOPrefixes != null) {
189
211
  return removeInteractionsUFOPrefixes;
190
212
  } else {
@@ -204,8 +226,8 @@ function getUfoNameOverrides() {
204
226
  if (!config) {
205
227
  return undefined;
206
228
  }
207
- var _config8 = config,
208
- ufoNameOverrides = _config8.ufoNameOverrides;
229
+ var _config9 = config,
230
+ ufoNameOverrides = _config9.ufoNameOverrides;
209
231
  if (ufoNameOverrides != null) {
210
232
  return ufoNameOverrides;
211
233
  }
@@ -221,8 +243,8 @@ function getDoNotAbortActivePressInteraction() {
221
243
  if (!config) {
222
244
  return undefined;
223
245
  }
224
- var _config9 = config,
225
- doNotAbortActivePressInteraction = _config9.doNotAbortActivePressInteraction;
246
+ var _config10 = config,
247
+ doNotAbortActivePressInteraction = _config10.doNotAbortActivePressInteraction;
226
248
  return doNotAbortActivePressInteraction;
227
249
  } catch (e) {
228
250
  return undefined;
@@ -235,8 +257,8 @@ function getDoNotAbortActivePressInteractionOnTransition() {
235
257
  if (!config) {
236
258
  return undefined;
237
259
  }
238
- var _config10 = config,
239
- doNotAbortActivePressInteractionOnTransition = _config10.doNotAbortActivePressInteractionOnTransition;
260
+ var _config11 = config,
261
+ doNotAbortActivePressInteractionOnTransition = _config11.doNotAbortActivePressInteractionOnTransition;
240
262
  return doNotAbortActivePressInteractionOnTransition;
241
263
  } catch (e) {
242
264
  return undefined;
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.ExperimentalInteractionMetrics = void 0;
8
+ exports.createExperimentalInteractionMetricsPayload = createExperimentalInteractionMetricsPayload;
9
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
+ var _coinflip = _interopRequireDefault(require("../coinflip"));
13
+ var _config = require("../config");
14
+ var _createPayload = require("../create-payload");
15
+ var _hiddenTiming = require("../hidden-timing");
16
+ var _vcObserver = require("../vc/vc-observer");
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; }
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; }
19
+ var ExperimentalInteractionMetrics = exports.ExperimentalInteractionMetrics = /*#__PURE__*/function () {
20
+ function ExperimentalInteractionMetrics() {
21
+ (0, _classCallCheck2.default)(this, ExperimentalInteractionMetrics);
22
+ /**
23
+ * Handler function to process / send the observation data
24
+ */
25
+ (0, _defineProperty2.default)(this, "sinkHandlerFn", function () {});
26
+ /**
27
+ * independent VC observer that observes until `custom.post-interaction-logs` event is sent
28
+ */
29
+ (0, _defineProperty2.default)(this, "vcObserver", null);
30
+ }
31
+ (0, _createClass2.default)(ExperimentalInteractionMetrics, [{
32
+ key: "sinkHandler",
33
+ value:
34
+ /**
35
+ * Set the fn that would be invoked to process / send the observation data
36
+ */
37
+ function sinkHandler(sinkHandlerFn) {
38
+ this.sinkHandlerFn = sinkHandlerFn;
39
+ }
40
+ }, {
41
+ key: "onInteractionComplete",
42
+ value: function onInteractionComplete(interactionId, data) {
43
+ var endTime = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : performance.now();
44
+ if (data.ufoName) {
45
+ data.end = endTime;
46
+ this.sinkHandlerFn(interactionId, data);
47
+ }
48
+ }
49
+ }, {
50
+ key: "initializeVCObserver",
51
+ value: function initializeVCObserver(options) {
52
+ if (this.vcObserver === null) {
53
+ this.vcObserver = new _vcObserver.VCObserver(_objectSpread(_objectSpread({}, options), {}, {
54
+ isPostInteraction: true
55
+ }));
56
+ }
57
+ return this;
58
+ }
59
+ }, {
60
+ key: "startVCObserver",
61
+ value: function startVCObserver(_ref) {
62
+ var _this$vcObserver;
63
+ var startTime = _ref.startTime;
64
+ (_this$vcObserver = this.vcObserver) === null || _this$vcObserver === void 0 || _this$vcObserver.start({
65
+ startTime: startTime
66
+ });
67
+ }
68
+ }]);
69
+ return ExperimentalInteractionMetrics;
70
+ }();
71
+ function createExperimentalInteractionMetricsPayload(interactionId, interaction) {
72
+ var config = (0, _config.getConfig)();
73
+ if (!config) {
74
+ throw Error('UFO Configuration not provided');
75
+ }
76
+ var ufoName = (0, _createPayload.getUfoNameOverride)(interaction);
77
+ var modifiedInteraction = _objectSpread(_objectSpread({}, interaction), {}, {
78
+ ufoName: ufoName
79
+ });
80
+ var rate = (0, _config.getExperimentalInteractionRate)(ufoName, interaction.type);
81
+ if (!(0, _coinflip.default)(rate)) {
82
+ return null;
83
+ }
84
+ var pageVisibilityState = (0, _hiddenTiming.getPageVisibilityState)(interaction.start, interaction.end);
85
+ if (pageVisibilityState !== 'visible') {
86
+ return null;
87
+ }
88
+ return (0, _createPayload.createInteractionMetricsPayload)(modifiedInteraction, interactionId, true);
89
+ }
@@ -1,10 +1,14 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
8
  exports.buildSegmentTree = buildSegmentTree;
9
+ exports.getPageVisibilityUpToTTAI = exports.getInteractionStatus = exports.getExperimentalVCMetrics = exports.calculateVCMetrics = void 0;
10
+ exports.getSSRDoneTimeValue = getSSRDoneTimeValue;
11
+ exports.getVCMetrics = exports.getTTAI = void 0;
8
12
  exports.isSegmentLabel = isSegmentLabel;
9
13
  exports.labelStackStartWith = labelStackStartWith;
10
14
  exports.optimizeLabelStack = optimizeLabelStack;
@@ -12,6 +16,13 @@ exports.sanitizeUfoName = void 0;
12
16
  exports.stringifyLabelStackFully = stringifyLabelStackFully;
13
17
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
18
  var _constants = require("../../../common/constants");
19
+ var _config = require("../../../config");
20
+ var _hiddenTiming = require("../../../hidden-timing");
21
+ var _interactionMetrics = require("../../../interaction-metrics");
22
+ var ssr = _interopRequireWildcard(require("../../../ssr"));
23
+ var _vc = require("../../../vc");
24
+ 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); }
25
+ 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; }
15
26
  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
27
  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; } /* eslint-disable @typescript-eslint/no-non-null-asserted-optional-chain */
17
28
  var sanitizeUfoName = exports.sanitizeUfoName = function sanitizeUfoName(name) {
@@ -70,4 +81,77 @@ function optimizeLabelStack(labelStack) {
70
81
  s: ls.segmentId
71
82
  } : {});
72
83
  });
73
- }
84
+ }
85
+ var getInteractionStatus = exports.getInteractionStatus = function getInteractionStatus(interaction) {
86
+ var originalInteractionStatus = interaction.abortReason ? 'ABORTED' : 'SUCCEEDED';
87
+ var hasBm3TTI = interaction.apdex.length > 0;
88
+ var overrideStatus = hasBm3TTI ? 'SUCCEEDED' : originalInteractionStatus;
89
+ return {
90
+ originalInteractionStatus: originalInteractionStatus,
91
+ overrideStatus: overrideStatus
92
+ };
93
+ };
94
+ var getPageVisibilityUpToTTAI = exports.getPageVisibilityUpToTTAI = function getPageVisibilityUpToTTAI(interaction) {
95
+ var start = interaction.start,
96
+ end = interaction.end;
97
+ return (0, _hiddenTiming.getPageVisibilityState)(start, end);
98
+ };
99
+ var calculateVCMetrics = exports.calculateVCMetrics = function calculateVCMetrics(interaction, prefix, getVCResultFn) {
100
+ var _interaction$apdex;
101
+ var result = getVCResultFn({
102
+ start: interaction.start,
103
+ stop: interaction.end,
104
+ 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,
105
+ prefix: prefix,
106
+ vc: interaction.vc
107
+ });
108
+ var VC = result === null || result === void 0 ? void 0 : result['metrics:vc'];
109
+ if (!VC || !(result !== null && result !== void 0 && result["".concat(prefix, ":vc:clean")])) {
110
+ return result;
111
+ }
112
+ var interactionStatus = getInteractionStatus(interaction);
113
+ var pageVisibilityUpToTTAI = getPageVisibilityUpToTTAI(interaction);
114
+ if (interactionStatus.originalInteractionStatus !== 'SUCCEEDED' || pageVisibilityUpToTTAI !== 'visible') {
115
+ return result;
116
+ }
117
+ return result;
118
+ };
119
+ function getSSRDoneTimeValue(config) {
120
+ var _config$ssr, _config$ssr2;
121
+ 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();
122
+ }
123
+ var getVCMetrics = exports.getVCMetrics = function getVCMetrics(interaction) {
124
+ var _config$vc, _result$metricsVc;
125
+ var config = (0, _config.getConfig)();
126
+ if (!(config !== null && config !== void 0 && (_config$vc = config.vc) !== null && _config$vc !== void 0 && _config$vc.enabled)) {
127
+ return {};
128
+ }
129
+ if (interaction.type !== 'page_load' && interaction.type !== 'transition') {
130
+ return {};
131
+ }
132
+ var ssr = interaction.type === 'page_load' && config !== null && config !== void 0 && config.ssr ? {
133
+ ssr: getSSRDoneTimeValue(config)
134
+ } : null;
135
+ _interactionMetrics.postInteractionLog.setVCObserverSSRConfig(ssr);
136
+ var result = calculateVCMetrics(interaction, 'ufo', (0, _vc.getVCObserver)().getVCResult);
137
+ return _objectSpread(_objectSpread({}, result), {}, {
138
+ 'metric:vc90': result === null || result === void 0 || (_result$metricsVc = result['metrics:vc']) === null || _result$metricsVc === void 0 ? void 0 : _result$metricsVc['90']
139
+ });
140
+ };
141
+ var getExperimentalVCMetrics = exports.getExperimentalVCMetrics = function getExperimentalVCMetrics(interaction) {
142
+ if (_interactionMetrics.experimentalInteractionLog.vcObserver) {
143
+ var _result$metricsVc2;
144
+ var result = calculateVCMetrics(interaction, 'ufo-experimental', _interactionMetrics.experimentalInteractionLog.vcObserver.getVCResult);
145
+ return _objectSpread(_objectSpread({}, result), {}, {
146
+ 'metric:experimental:vc90': result === null || result === void 0 || (_result$metricsVc2 = result['metrics:vc']) === null || _result$metricsVc2 === void 0 ? void 0 : _result$metricsVc2['90']
147
+ });
148
+ }
149
+ return null;
150
+ };
151
+ var getTTAI = exports.getTTAI = function getTTAI(interaction) {
152
+ var start = interaction.start,
153
+ end = interaction.end;
154
+ var interactionStatus = getInteractionStatus(interaction);
155
+ var pageVisibilityUpToTTAI = getPageVisibilityUpToTTAI(interaction);
156
+ return interactionStatus.originalInteractionStatus === 'SUCCEEDED' && pageVisibilityUpToTTAI === 'visible' ? Math.round(end - start) : undefined;
157
+ };