@atlaskit/react-ufo 2.5.3 → 2.7.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 (53) hide show
  1. package/CHANGELOG.md +20 -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 +100 -0
  5. package/dist/cjs/create-payload/common/utils/index.js +66 -2
  6. package/dist/cjs/create-payload/index.js +55 -78
  7. package/dist/cjs/interaction-metrics/common/constants.js +8 -3
  8. package/dist/cjs/interaction-metrics/common/index.js +151 -0
  9. package/dist/cjs/interaction-metrics/index.js +166 -238
  10. package/dist/cjs/interaction-metrics-init/index.js +31 -9
  11. package/dist/cjs/load-hold/UFOLoadHold.js +5 -3
  12. package/dist/cjs/segment/segment.js +9 -8
  13. package/dist/es2019/config/index.js +22 -0
  14. package/dist/es2019/create-experimental-interaction-metrics-payload/index.js +71 -0
  15. package/dist/es2019/create-payload/common/utils/index.js +68 -1
  16. package/dist/es2019/create-payload/index.js +48 -77
  17. package/dist/es2019/interaction-metrics/common/constants.js +7 -2
  18. package/dist/es2019/interaction-metrics/common/index.js +103 -0
  19. package/dist/es2019/interaction-metrics/index.js +91 -131
  20. package/dist/es2019/interaction-metrics-init/index.js +28 -8
  21. package/dist/es2019/load-hold/UFOLoadHold.js +5 -3
  22. package/dist/es2019/segment/segment.js +8 -11
  23. package/dist/esm/config/index.js +39 -18
  24. package/dist/esm/create-experimental-interaction-metrics-payload/index.js +90 -0
  25. package/dist/esm/create-payload/common/utils/index.js +63 -1
  26. package/dist/esm/create-payload/index.js +53 -78
  27. package/dist/esm/interaction-metrics/common/constants.js +7 -2
  28. package/dist/esm/interaction-metrics/common/index.js +132 -0
  29. package/dist/esm/interaction-metrics/index.js +86 -158
  30. package/dist/esm/interaction-metrics-init/index.js +28 -8
  31. package/dist/esm/load-hold/UFOLoadHold.js +5 -3
  32. package/dist/esm/segment/segment.js +9 -8
  33. package/dist/types/common/common/types.d.ts +6 -4
  34. package/dist/types/config/index.d.ts +7 -0
  35. package/dist/types/create-experimental-interaction-metrics-payload/index.d.ts +16 -0
  36. package/dist/types/create-payload/common/utils/index.d.ts +9 -0
  37. package/dist/types/create-payload/index.d.ts +13 -5660
  38. package/dist/types/interaction-context/index.d.ts +1 -0
  39. package/dist/types/interaction-metrics/common/constants.d.ts +32 -3
  40. package/dist/types/interaction-metrics/common/index.d.ts +16 -0
  41. package/dist/types/interaction-metrics/index.d.ts +1 -17
  42. package/dist/types/load-hold/UFOLoadHold.d.ts +1 -2
  43. package/dist/types-ts4.5/common/common/types.d.ts +6 -4
  44. package/dist/types-ts4.5/config/index.d.ts +7 -0
  45. package/dist/types-ts4.5/create-experimental-interaction-metrics-payload/index.d.ts +16 -0
  46. package/dist/types-ts4.5/create-payload/common/utils/index.d.ts +9 -0
  47. package/dist/types-ts4.5/create-payload/index.d.ts +13 -5660
  48. package/dist/types-ts4.5/interaction-context/index.d.ts +1 -0
  49. package/dist/types-ts4.5/interaction-metrics/common/constants.d.ts +32 -3
  50. package/dist/types-ts4.5/interaction-metrics/common/index.d.ts +16 -0
  51. package/dist/types-ts4.5/interaction-metrics/index.d.ts +1 -17
  52. package/dist/types-ts4.5/load-hold/UFOLoadHold.d.ts +1 -2
  53. package/package.json +3 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # @atlaskit/ufo-interaction-ignore
2
2
 
3
+ ## 2.7.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#179617](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/179617)
8
+ [`755cc79765ae8`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/755cc79765ae8) -
9
+ Added API to support SSR whitelist
10
+
11
+ ## 2.6.0
12
+
13
+ ### Minor Changes
14
+
15
+ - [#180750](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/180750)
16
+ [`a876090daed20`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/a876090daed20) -
17
+ Experimental UFO holds the third iteration
18
+
19
+ ### Patch Changes
20
+
21
+ - Updated dependencies
22
+
3
23
  ## 2.5.3
4
24
 
5
25
  ### 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,100 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.getExperimentalVCMetrics = exports.experimentalVC = exports.ExperimentalVCMetrics = void 0;
8
+ exports.installInteractionSink = installInteractionSink;
9
+ exports.onExperimentalInteractionComplete = onExperimentalInteractionComplete;
10
+ exports.sinkExperimentalHandler = sinkExperimentalHandler;
11
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
12
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
13
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
+ var _utils = require("../create-payload/common/utils");
15
+ var _vcObserver = require("../vc/vc-observer");
16
+ 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; }
17
+ 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; }
18
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
19
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
20
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
21
+ var interactionBuffer = [];
22
+ var bufferInteractionData = function bufferInteractionData(interactionId, data) {
23
+ interactionBuffer.push({
24
+ interactionId: interactionId,
25
+ data: data
26
+ });
27
+ };
28
+ function clearInteractionBuffer() {
29
+ interactionBuffer.length = 0;
30
+ }
31
+ function appendInteractionData(interactionId, data) {
32
+ bufferInteractionData(interactionId, data);
33
+ }
34
+ function installInteractionSink(handler) {
35
+ var _iterator = _createForOfIteratorHelper(interactionBuffer),
36
+ _step;
37
+ try {
38
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
39
+ var _step$value = _step.value,
40
+ _interactionId = _step$value.interactionId,
41
+ data = _step$value.data;
42
+ handler(_interactionId, data);
43
+ }
44
+ } catch (err) {
45
+ _iterator.e(err);
46
+ } finally {
47
+ _iterator.f();
48
+ }
49
+ clearInteractionBuffer();
50
+ bufferInteractionData = handler;
51
+ }
52
+ function sinkExperimentalHandler(sinkFn) {
53
+ installInteractionSink(sinkFn);
54
+ }
55
+ function onExperimentalInteractionComplete(interactionId, data) {
56
+ var endTime = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : performance.now();
57
+ if (data.ufoName) {
58
+ data.end = endTime;
59
+ appendInteractionData(interactionId, data);
60
+ clearInteractionBuffer();
61
+ }
62
+ }
63
+ var ExperimentalVCMetrics = exports.ExperimentalVCMetrics = /*#__PURE__*/function () {
64
+ function ExperimentalVCMetrics() {
65
+ (0, _classCallCheck2.default)(this, ExperimentalVCMetrics);
66
+ (0, _defineProperty2.default)(this, "vcObserver", null);
67
+ }
68
+ return (0, _createClass2.default)(ExperimentalVCMetrics, [{
69
+ key: "initialize",
70
+ value: function initialize(options) {
71
+ if (this.vcObserver === null) {
72
+ this.vcObserver = new _vcObserver.VCObserver(_objectSpread(_objectSpread({}, options), {}, {
73
+ isPostInteraction: true
74
+ }));
75
+ }
76
+ return this;
77
+ }
78
+ }, {
79
+ key: "start",
80
+ value: function start(_ref) {
81
+ var _this$vcObserver;
82
+ var startTime = _ref.startTime;
83
+ (_this$vcObserver = this.vcObserver) === null || _this$vcObserver === void 0 || _this$vcObserver.start({
84
+ startTime: startTime
85
+ });
86
+ }
87
+ }]);
88
+ }();
89
+ var experimentalVC = exports.experimentalVC = new ExperimentalVCMetrics();
90
+ var getExperimentalVCMetrics = exports.getExperimentalVCMetrics = function getExperimentalVCMetrics(interaction) {
91
+ if (experimentalVC.vcObserver) {
92
+ var _result$metricsVc;
93
+ var result = (0, _utils.calculateVCMetrics)(interaction, 'ufo-experimental', experimentalVC.vcObserver.getVCResult);
94
+ experimentalVC.vcObserver.stop();
95
+ return _objectSpread(_objectSpread({}, result), {}, {
96
+ 'metric:experimental:vc90': result === null || result === void 0 || (_result$metricsVc = result['metrics:vc']) === null || _result$metricsVc === void 0 ? void 0 : _result$metricsVc['90']
97
+ });
98
+ }
99
+ return null;
100
+ };
@@ -5,15 +5,24 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.buildSegmentTree = buildSegmentTree;
8
+ exports.getPageVisibilityUpToTTAI = exports.calculateVCMetrics = void 0;
9
+ exports.getSSRDoneTimeValue = getSSRDoneTimeValue;
10
+ exports.getVCMetrics = exports.getTTAI = void 0;
8
11
  exports.isSegmentLabel = isSegmentLabel;
9
12
  exports.labelStackStartWith = labelStackStartWith;
10
13
  exports.optimizeLabelStack = optimizeLabelStack;
11
- exports.sanitizeUfoName = void 0;
14
+ exports.sanitizeUfoName = exports.postInteractionLog = void 0;
12
15
  exports.stringifyLabelStackFully = stringifyLabelStackFully;
13
16
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
17
  var _constants = require("../../../common/constants");
18
+ var _config = require("../../../config");
19
+ var _hiddenTiming = require("../../../hidden-timing");
20
+ var _postInteractionLog = _interopRequireDefault(require("../../../interaction-metrics/post-interaction-log"));
21
+ var _ssr = require("../../../ssr");
22
+ var _vc = require("../../../vc");
15
23
  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
24
  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 */
25
+ var postInteractionLog = exports.postInteractionLog = new _postInteractionLog.default();
17
26
  var sanitizeUfoName = exports.sanitizeUfoName = function sanitizeUfoName(name) {
18
27
  return name.replace(/_/g, '-');
19
28
  };
@@ -70,4 +79,59 @@ function optimizeLabelStack(labelStack) {
70
79
  s: ls.segmentId
71
80
  } : {});
72
81
  });
73
- }
82
+ }
83
+ var getPageVisibilityUpToTTAI = exports.getPageVisibilityUpToTTAI = function getPageVisibilityUpToTTAI(interaction) {
84
+ var start = interaction.start,
85
+ end = interaction.end;
86
+ return (0, _hiddenTiming.getPageVisibilityState)(start, end);
87
+ };
88
+ var calculateVCMetrics = exports.calculateVCMetrics = function calculateVCMetrics(interaction, prefix, getVCResultFn) {
89
+ var _interaction$apdex;
90
+ var result = getVCResultFn({
91
+ start: interaction.start,
92
+ stop: interaction.end,
93
+ 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,
94
+ prefix: prefix,
95
+ vc: interaction.vc
96
+ });
97
+ var VC = result === null || result === void 0 ? void 0 : result['metrics:vc'];
98
+ if (!VC || !(result !== null && result !== void 0 && result["".concat(prefix, ":vc:clean")])) {
99
+ return result;
100
+ }
101
+ var pageVisibilityUpToTTAI = getPageVisibilityUpToTTAI(interaction);
102
+ if (interaction.abortReason || pageVisibilityUpToTTAI !== 'visible') {
103
+ return result;
104
+ }
105
+ return result;
106
+ };
107
+ function getSSRDoneTimeValue(config) {
108
+ var _config$ssr, _config$ssr2;
109
+ 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() : (0, _ssr.getSSRDoneTime)();
110
+ }
111
+ var getVCMetrics = exports.getVCMetrics = function getVCMetrics(interaction) {
112
+ var _config$vc, _config$vc$ssrWhiteli, _result$metricsVc;
113
+ var config = (0, _config.getConfig)();
114
+ if (!(config !== null && config !== void 0 && (_config$vc = config.vc) !== null && _config$vc !== void 0 && _config$vc.enabled)) {
115
+ return {};
116
+ }
117
+ if (interaction.type !== 'page_load' && interaction.type !== 'transition') {
118
+ return {};
119
+ }
120
+ 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));
121
+ var ssr = interaction.type === 'page_load' && isSSREnabled ? {
122
+ ssr: getSSRDoneTimeValue(config)
123
+ } : null;
124
+ postInteractionLog.setVCObserverSSRConfig(ssr);
125
+ var result = calculateVCMetrics(interaction, 'ufo', (0, _vc.getVCObserver)().getVCResult);
126
+ (0, _vc.getVCObserver)().stop();
127
+ postInteractionLog.setLastInteractionFinishVCResult(result);
128
+ return _objectSpread(_objectSpread({}, result), {}, {
129
+ 'metric:vc90': result === null || result === void 0 || (_result$metricsVc = result['metrics:vc']) === null || _result$metricsVc === void 0 ? void 0 : _result$metricsVc['90']
130
+ });
131
+ };
132
+ var getTTAI = exports.getTTAI = function getTTAI(interaction) {
133
+ var start = interaction.start,
134
+ end = interaction.end;
135
+ var pageVisibilityUpToTTAI = getPageVisibilityUpToTTAI(interaction);
136
+ return !interaction.abortReason && pageVisibilityUpToTTAI === 'visible' ? Math.round(end - start) : undefined;
137
+ };