@atlaskit/react-ufo 2.11.0 → 2.12.1

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 (49) 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 +42 -20
  4. package/dist/cjs/create-experimental-interaction-metrics-payload/index.js +114 -0
  5. package/dist/cjs/create-payload/index.js +51 -10
  6. package/dist/cjs/interaction-metrics/common/constants.js +2 -3
  7. package/dist/cjs/interaction-metrics/index.js +130 -55
  8. package/dist/cjs/interaction-metrics/post-interaction-log.js +20 -10
  9. package/dist/cjs/interaction-metrics-init/index.js +28 -7
  10. package/dist/cjs/load-hold/UFOLoadHold.js +5 -3
  11. package/dist/cjs/segment/segment.js +9 -8
  12. package/dist/cjs/vc/vc-observer/index.js +1 -1
  13. package/dist/es2019/config/index.js +22 -0
  14. package/dist/es2019/create-experimental-interaction-metrics-payload/index.js +85 -0
  15. package/dist/es2019/create-payload/index.js +50 -8
  16. package/dist/es2019/interaction-metrics/common/constants.js +1 -2
  17. package/dist/es2019/interaction-metrics/index.js +109 -28
  18. package/dist/es2019/interaction-metrics/post-interaction-log.js +21 -11
  19. package/dist/es2019/interaction-metrics-init/index.js +26 -7
  20. package/dist/es2019/load-hold/UFOLoadHold.js +5 -3
  21. package/dist/es2019/segment/segment.js +8 -11
  22. package/dist/es2019/vc/vc-observer/index.js +1 -0
  23. package/dist/esm/config/index.js +41 -20
  24. package/dist/esm/create-experimental-interaction-metrics-payload/index.js +104 -0
  25. package/dist/esm/create-payload/index.js +51 -11
  26. package/dist/esm/interaction-metrics/common/constants.js +1 -2
  27. package/dist/esm/interaction-metrics/index.js +102 -27
  28. package/dist/esm/interaction-metrics/post-interaction-log.js +20 -10
  29. package/dist/esm/interaction-metrics-init/index.js +26 -7
  30. package/dist/esm/load-hold/UFOLoadHold.js +5 -3
  31. package/dist/esm/segment/segment.js +9 -8
  32. package/dist/esm/vc/vc-observer/index.js +1 -1
  33. package/dist/types/common/common/types.d.ts +6 -4
  34. package/dist/types/config/index.d.ts +6 -0
  35. package/dist/types/create-experimental-interaction-metrics-payload/index.d.ts +16 -0
  36. package/dist/types/create-payload/index.d.ts +5922 -0
  37. package/dist/types/interaction-context/index.d.ts +1 -0
  38. package/dist/types/interaction-metrics/common/constants.d.ts +1 -2
  39. package/dist/types/interaction-metrics/index.d.ts +1 -1
  40. package/dist/types/load-hold/UFOLoadHold.d.ts +1 -2
  41. package/dist/types-ts4.5/common/common/types.d.ts +6 -4
  42. package/dist/types-ts4.5/config/index.d.ts +6 -0
  43. package/dist/types-ts4.5/create-experimental-interaction-metrics-payload/index.d.ts +16 -0
  44. package/dist/types-ts4.5/create-payload/index.d.ts +5922 -0
  45. package/dist/types-ts4.5/interaction-context/index.d.ts +1 -0
  46. package/dist/types-ts4.5/interaction-metrics/common/constants.d.ts +1 -2
  47. package/dist/types-ts4.5/interaction-metrics/index.d.ts +1 -1
  48. package/dist/types-ts4.5/load-hold/UFOLoadHold.d.ts +1 -2
  49. package/package.json +3 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # @atlaskit/ufo-interaction-ignore
2
2
 
3
+ ## 2.12.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#105652](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/105652)
8
+ [`6b7f41a93ff25`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/6b7f41a93ff25) -
9
+ add ufo:vc:next:entries to payload
10
+
11
+ ## 2.12.0
12
+
13
+ ### Minor Changes
14
+
15
+ - [#99207](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/99207)
16
+ [`59963df2ae2f3`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/59963df2ae2f3) -
17
+ Experimental UFO holds
18
+
19
+ ### Patch Changes
20
+
21
+ - Updated dependencies
22
+
3
23
  ## 2.11.0
4
24
 
5
25
  ### Minor 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;
@@ -82,13 +83,34 @@ function getInteractionRate(name, interactionKind) {
82
83
  return 0;
83
84
  }
84
85
  }
85
- function getPostInteractionRate(name, interactionType) {
86
+ function getExperimentalInteractionRate(name, interactionType) {
86
87
  try {
87
88
  if (!config) {
88
89
  return 0;
89
90
  }
90
91
  var _config2 = config,
91
- postInteractionLog = _config2.postInteractionLog;
92
+ experimentalInteractionMetrics = _config2.experimentalInteractionMetrics;
93
+ if (!(experimentalInteractionMetrics !== null && experimentalInteractionMetrics !== void 0 && experimentalInteractionMetrics.enabled)) {
94
+ return 0;
95
+ }
96
+ if (experimentalInteractionMetrics.rates && typeof experimentalInteractionMetrics.rates[name] === 'number') {
97
+ return experimentalInteractionMetrics.rates[name];
98
+ }
99
+ if (experimentalInteractionMetrics.kind && typeof experimentalInteractionMetrics.kind[interactionType] === 'number') {
100
+ return experimentalInteractionMetrics.kind[interactionType];
101
+ }
102
+ return 0;
103
+ } catch (e) {
104
+ return 0;
105
+ }
106
+ }
107
+ function getPostInteractionRate(name, interactionType) {
108
+ try {
109
+ if (!config) {
110
+ return 0;
111
+ }
112
+ var _config3 = config,
113
+ postInteractionLog = _config3.postInteractionLog;
92
114
  if (!(postInteractionLog !== null && postInteractionLog !== void 0 && postInteractionLog.enabled)) {
93
115
  return 0;
94
116
  }
@@ -108,8 +130,8 @@ function getCapabilityRate(capability) {
108
130
  if (!config) {
109
131
  return 0;
110
132
  }
111
- var _config3 = config,
112
- capabilityRate = _config3.capability;
133
+ var _config4 = config,
134
+ capabilityRate = _config4.capability;
113
135
  if (capabilityRate != null) {
114
136
  var rate = capabilityRate[capability];
115
137
  if (rate != null) {
@@ -128,8 +150,8 @@ function getTypingPerformanceTracingMethod() {
128
150
  if (!config) {
129
151
  return defaultMethod;
130
152
  }
131
- var _config4 = config,
132
- typingMethod = _config4.typingMethod;
153
+ var _config5 = config,
154
+ typingMethod = _config5.typingMethod;
133
155
  if (typingMethod != null && validTypingMethods.find(function (m) {
134
156
  return m === typingMethod;
135
157
  })) {
@@ -148,8 +170,8 @@ function getAwaitBM3TTIList() {
148
170
  if (!config) {
149
171
  return [];
150
172
  }
151
- var _config5 = config,
152
- awaitBM3TTI = _config5.awaitBM3TTI;
173
+ var _config6 = config,
174
+ awaitBM3TTI = _config6.awaitBM3TTI;
153
175
  if (awaitBM3TTI != null) {
154
176
  return awaitBM3TTI;
155
177
  } else {
@@ -166,8 +188,8 @@ function getRemovePageSegmentsUFOPrefixes() {
166
188
  if (!config) {
167
189
  return false;
168
190
  }
169
- var _config6 = config,
170
- removePageSegmentsUFOPrefixes = _config6.removePageSegmentsUFOPrefixes;
191
+ var _config7 = config,
192
+ removePageSegmentsUFOPrefixes = _config7.removePageSegmentsUFOPrefixes;
171
193
  if (removePageSegmentsUFOPrefixes != null) {
172
194
  return removePageSegmentsUFOPrefixes;
173
195
  } else {
@@ -184,8 +206,8 @@ function getRemoveInteractionsUFOPrefixes() {
184
206
  if (!config) {
185
207
  return false;
186
208
  }
187
- var _config7 = config,
188
- removeInteractionsUFOPrefixes = _config7.removeInteractionsUFOPrefixes;
209
+ var _config8 = config,
210
+ removeInteractionsUFOPrefixes = _config8.removeInteractionsUFOPrefixes;
189
211
  if (removeInteractionsUFOPrefixes != null) {
190
212
  return removeInteractionsUFOPrefixes;
191
213
  } else {
@@ -205,8 +227,8 @@ function getUfoNameOverrides() {
205
227
  if (!config) {
206
228
  return undefined;
207
229
  }
208
- var _config8 = config,
209
- ufoNameOverrides = _config8.ufoNameOverrides;
230
+ var _config9 = config,
231
+ ufoNameOverrides = _config9.ufoNameOverrides;
210
232
  if (ufoNameOverrides != null) {
211
233
  return ufoNameOverrides;
212
234
  }
@@ -222,8 +244,8 @@ function getDoNotAbortActivePressInteraction() {
222
244
  if (!config) {
223
245
  return undefined;
224
246
  }
225
- var _config9 = config,
226
- doNotAbortActivePressInteraction = _config9.doNotAbortActivePressInteraction;
247
+ var _config10 = config,
248
+ doNotAbortActivePressInteraction = _config10.doNotAbortActivePressInteraction;
227
249
  return doNotAbortActivePressInteraction;
228
250
  } catch (e) {
229
251
  return undefined;
@@ -236,8 +258,8 @@ function getDoNotAbortActivePressInteractionOnTransition() {
236
258
  if (!config) {
237
259
  return undefined;
238
260
  }
239
- var _config10 = config,
240
- doNotAbortActivePressInteractionOnTransition = _config10.doNotAbortActivePressInteractionOnTransition;
261
+ var _config11 = config,
262
+ doNotAbortActivePressInteractionOnTransition = _config11.doNotAbortActivePressInteractionOnTransition;
241
263
  return doNotAbortActivePressInteractionOnTransition;
242
264
  } catch (e) {
243
265
  return undefined;
@@ -245,8 +267,8 @@ function getDoNotAbortActivePressInteractionOnTransition() {
245
267
  }
246
268
  function shouldHandleEditorLnv() {
247
269
  try {
248
- var _config$enableEditorL, _config11;
249
- return (_config$enableEditorL = (_config11 = config) === null || _config11 === void 0 ? void 0 : _config11.enableEditorLnvHandler) !== null && _config$enableEditorL !== void 0 ? _config$enableEditorL : false;
270
+ var _config$enableEditorL, _config12;
271
+ return (_config$enableEditorL = (_config12 = config) === null || _config12 === void 0 ? void 0 : _config12.enableEditorLnvHandler) !== null && _config$enableEditorL !== void 0 ? _config$enableEditorL : false;
250
272
  } catch (e) {
251
273
  return false;
252
274
  }
@@ -0,0 +1,114 @@
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 _hiddenTiming = require("../hidden-timing");
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 _interaction$apdex;
93
+ var prefix = 'ufo-experimental';
94
+ var result = experimentalVC.vcObserver.getVCResult({
95
+ start: interaction.start,
96
+ stop: interaction.end,
97
+ 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,
98
+ prefix: prefix,
99
+ vc: interaction.vc
100
+ });
101
+ var VC = result === null || result === void 0 ? void 0 : result['metrics:vc'];
102
+ if (!VC || !(result !== null && result !== void 0 && result["".concat(prefix, ":vc:clean")])) {
103
+ return result;
104
+ }
105
+ var pageVisibilityUpToTTAI = (0, _hiddenTiming.getPageVisibilityState)(interaction.start, interaction.end);
106
+ if (interaction.abortReason || pageVisibilityUpToTTAI !== 'visible') {
107
+ return result;
108
+ }
109
+ return _objectSpread(_objectSpread({}, result), {}, {
110
+ 'metric:experimental:vc90': VC['90']
111
+ });
112
+ }
113
+ return null;
114
+ };
@@ -5,6 +5,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
+ exports.createExperimentalMetricsPayload = createExperimentalMetricsPayload;
8
9
  exports.createPayloads = createPayloads;
9
10
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
10
11
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
@@ -14,8 +15,10 @@ var _bowserUltralight = _interopRequireDefault(require("bowser-ultralight"));
14
15
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
15
16
  var _additionalPayload = require("../additional-payload");
16
17
  var bundleEvalTiming = _interopRequireWildcard(require("../bundle-eval-timing"));
18
+ var _coinflip = _interopRequireDefault(require("../coinflip"));
17
19
  var _constants = require("../common/constants");
18
20
  var _config = require("../config");
21
+ var _createExperimentalInteractionMetricsPayload = require("../create-experimental-interaction-metrics-payload");
19
22
  var _customTimings = require("../custom-timings");
20
23
  var _globalErrorHandler = require("../global-error-handler");
21
24
  var _hiddenTiming = require("../hidden-timing");
@@ -46,7 +49,6 @@ function getUfoNameOverride(interaction) {
46
49
  }
47
50
  }
48
51
  return ufoName;
49
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
50
52
  } catch (e) {
51
53
  return ufoName;
52
54
  }
@@ -178,8 +180,14 @@ var getPaintMetrics = function getPaintMetrics(type) {
178
180
  });
179
181
  return metrics;
180
182
  };
183
+ var getTTAI = function getTTAI(interaction) {
184
+ var start = interaction.start,
185
+ end = interaction.end;
186
+ var pageVisibilityUpToTTAI = getPageVisibilityUpToTTAI(interaction);
187
+ return !interaction.abortReason && pageVisibilityUpToTTAI === 'visible' ? Math.round(end - start) : undefined;
188
+ };
181
189
  var getVCMetrics = function getVCMetrics(interaction) {
182
- var _config$vc, _config$vc$ssrWhiteli, _interaction$apdex;
190
+ var _config$vc, _config$vc$ssrWhiteli, _interaction$apdex, _config$experimentalI;
183
191
  var config = (0, _config.getConfig)();
184
192
  if (!(config !== null && config !== void 0 && (_config$vc = config.vc) !== null && _config$vc !== void 0 && _config$vc.enabled)) {
185
193
  return {};
@@ -201,6 +209,9 @@ var getVCMetrics = function getVCMetrics(interaction) {
201
209
  prefix: prefix,
202
210
  vc: interaction.vc
203
211
  }, ssr));
212
+ if ((_config$experimentalI = config.experimentalInteractionMetrics) !== null && _config$experimentalI !== void 0 && _config$experimentalI.enabled) {
213
+ (0, _vc.getVCObserver)().stop();
214
+ }
204
215
  _interactionMetrics.postInteractionLog.setLastInteractionFinishVCResult(result);
205
216
  var VC = result === null || result === void 0 ? void 0 : result['metrics:vc'];
206
217
  if (!VC || !(result !== null && result !== void 0 && result["".concat(prefix, ":vc:clean")])) {
@@ -649,13 +660,15 @@ function getStylesheetMetrics() {
649
660
  return {};
650
661
  }
651
662
  }
663
+ var regularTTAI;
664
+ var expTTAI;
652
665
  function getErrorCounts(interaction) {
653
666
  return {
654
667
  'ufo:errors:globalCount': (0, _globalErrorHandler.getGlobalErrorCount)(),
655
668
  'ufo:errors:count': interaction.errors.length
656
669
  };
657
670
  }
658
- function createInteractionMetricsPayload(interaction, interactionId) {
671
+ function createInteractionMetricsPayload(interaction, interactionId, experimental) {
659
672
  var _window$location, _config$additionalPay;
660
673
  var interactionPayloadStart = performance.now();
661
674
  var config = (0, _config.getConfig)();
@@ -706,7 +719,7 @@ function createInteractionMetricsPayload(interaction, interactionId) {
706
719
  };
707
720
  // Detailed payload. Page visibility = visible
708
721
  var getDetailedInteractionMetrics = function getDetailedInteractionMetrics() {
709
- if (window.__UFO_COMPACT_PAYLOAD__ || !isDetailedPayload) {
722
+ if (experimental || window.__UFO_COMPACT_PAYLOAD__ || !isDetailedPayload) {
710
723
  return {};
711
724
  }
712
725
  var spans = [].concat((0, _toConsumableArray2.default)(interaction.spans), (0, _toConsumableArray2.default)(_interactionMetrics.interactionSpans));
@@ -721,7 +734,7 @@ function createInteractionMetricsPayload(interaction, interactionId) {
721
734
  }),
722
735
  holdActive: (0, _toConsumableArray2.default)(interaction.holdActive.values()),
723
736
  redirects: optimizeRedirects(interaction.redirects, start),
724
- holdInfo: optimizeHoldInfo(interaction.holdInfo, start),
737
+ holdInfo: optimizeHoldInfo(experimental ? interaction.holdExpInfo : interaction.holdInfo, start),
725
738
  spans: optimizeSpans(spans, start),
726
739
  requestInfo: optimizeRequestInfo(interaction.requestInfo, start),
727
740
  customTimings: optimizeCustomTimings(interaction.customTimings, start),
@@ -741,6 +754,11 @@ function createInteractionMetricsPayload(interaction, interactionId) {
741
754
  SSRTimings: config !== null && config !== void 0 && (_config$ssr4 = config.ssr) !== null && _config$ssr4 !== void 0 && _config$ssr4.getSSRTimings ? config.ssr.getSSRTimings() : objectToArray(ssr.getSSRTimings())
742
755
  };
743
756
  };
757
+ if (experimental) {
758
+ expTTAI = getTTAI(interaction);
759
+ } else {
760
+ regularTTAI = getTTAI(interaction);
761
+ }
744
762
  var newUFOName = (0, _utils.sanitizeUfoName)(ufoName);
745
763
  var payload = {
746
764
  actionSubject: 'experience',
@@ -749,7 +767,7 @@ function createInteractionMetricsPayload(interaction, interactionId) {
749
767
  source: 'measured',
750
768
  tags: ['observability'],
751
769
  attributes: {
752
- properties: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
770
+ properties: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
753
771
  // basic
754
772
  'event:hostname': ((_window$location = window.location) === null || _window$location === void 0 ? void 0 : _window$location.hostname) || 'unknown',
755
773
  'event:product': config.product,
@@ -761,10 +779,10 @@ function createInteractionMetricsPayload(interaction, interactionId) {
761
779
  payloadSource: 'platform'
762
780
  },
763
781
  'event:region': config.region || 'unknown',
764
- 'experience:key': 'custom.interaction-metrics',
782
+ 'experience:key': experimental ? 'custom.experimental-interaction-metrics' : 'custom.interaction-metrics',
765
783
  'experience:name': newUFOName
766
- }, getBrowserMetadata()), getSSRProperties(type)), getPPSMetrics(interaction)), getPaintMetrics(type)), getNavigationMetrics(type)), getVCMetrics(interaction)), (_config$additionalPay = config.additionalPayloadData) === null || _config$additionalPay === void 0 ? void 0 : _config$additionalPay.call(config, interaction)), getTracingContextData(interaction)), getStylesheetMetrics()), getErrorCounts(interaction)), {}, {
767
- interactionMetrics: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
784
+ }, getBrowserMetadata()), getSSRProperties(type)), 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)), {}, {
785
+ interactionMetrics: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
768
786
  namePrefix: config.namePrefix || '',
769
787
  segmentPrefix: config.segmentPrefix || '',
770
788
  interactionId: interactionId,
@@ -795,11 +813,18 @@ function createInteractionMetricsPayload(interaction, interactionId) {
795
813
  marks: optimizeMarks(interaction.marks),
796
814
  customData: optimizeCustomData(interaction),
797
815
  reactProfilerTimings: optimizeReactProfilerTimings(interaction.reactProfilerTimings, start)
798
- }, labelStack), getPageLoadInteractionMetrics()), getDetailedInteractionMetrics()), getPageLoadDetailedInteractionMetrics()), getBm3TrackerTimings(interaction)),
816
+ }, labelStack), getPageLoadInteractionMetrics()), getDetailedInteractionMetrics()), getPageLoadDetailedInteractionMetrics()), getBm3TrackerTimings(interaction)), {}, {
817
+ 'metric:ttai': experimental ? regularTTAI || expTTAI : undefined,
818
+ 'metric:experimental:ttai': expTTAI
819
+ }),
799
820
  'ufo:payloadTime': (0, _roundNumber.roundEpsilon)(performance.now() - interactionPayloadStart)
800
821
  })
801
822
  }
802
823
  };
824
+ if (experimental) {
825
+ regularTTAI = undefined;
826
+ expTTAI = undefined;
827
+ }
803
828
  payload.attributes.properties['event:sizeInKb'] = getPayloadSize(payload.attributes.properties);
804
829
  return payload;
805
830
  }
@@ -810,4 +835,20 @@ function createPayloads(interactionId, interaction) {
810
835
  });
811
836
  var interactionMetricsPayload = createInteractionMetricsPayload(modifiedInteraction, interactionId);
812
837
  return [interactionMetricsPayload];
838
+ }
839
+ function createExperimentalMetricsPayload(interactionId, interaction) {
840
+ var config = (0, _config.getConfig)();
841
+ if (!config) {
842
+ throw Error('UFO Configuration not provided');
843
+ }
844
+ var ufoName = (0, _utils.sanitizeUfoName)(interaction.ufoName);
845
+ var rate = (0, _config.getExperimentalInteractionRate)(ufoName, interaction.type);
846
+ if (!(0, _coinflip.default)(rate)) {
847
+ return null;
848
+ }
849
+ var pageVisibilityState = (0, _hiddenTiming.getPageVisibilityState)(interaction.start, interaction.end);
850
+ if (pageVisibilityState !== 'visible') {
851
+ return null;
852
+ }
853
+ return createInteractionMetricsPayload(interaction, interactionId, true);
813
854
  }
@@ -3,6 +3,5 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
7
- var interactions = new Map();
8
- var _default = exports.default = interactions;
6
+ exports.interactions = void 0;
7
+ var interactions = exports.interactions = new Map();