@atlaskit/react-ufo 4.4.3 → 4.4.5

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 (67) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/cjs/create-interaction-extra-metrics-payload/index.js +116 -0
  3. package/dist/cjs/create-payload/index.js +3 -2
  4. package/dist/cjs/create-payload/utils/get-vc-metrics.js +37 -21
  5. package/dist/cjs/interaction-metrics/index.js +313 -259
  6. package/dist/cjs/interaction-metrics/interaction-extra-metrics.js +89 -0
  7. package/dist/cjs/interaction-metrics-init/index.js +51 -7
  8. package/dist/cjs/segment/third-party-segment.js +3 -1
  9. package/dist/cjs/ssr/index.js +3 -2
  10. package/dist/cjs/vc/index.js +4 -3
  11. package/dist/cjs/vc/vc-observer/index.js +31 -51
  12. package/dist/cjs/vc/vc-observer-new/index.js +4 -3
  13. package/dist/cjs/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +7 -5
  14. package/dist/cjs/vc/vc-observer-new/metric-calculator/fy25_03/index.js +15 -6
  15. package/dist/es2019/create-interaction-extra-metrics-payload/index.js +93 -0
  16. package/dist/es2019/create-payload/index.js +3 -3
  17. package/dist/es2019/create-payload/utils/get-vc-metrics.js +3 -2
  18. package/dist/es2019/interaction-metrics/index.js +317 -260
  19. package/dist/es2019/interaction-metrics/interaction-extra-metrics.js +63 -0
  20. package/dist/es2019/interaction-metrics-init/index.js +29 -2
  21. package/dist/es2019/segment/third-party-segment.js +3 -1
  22. package/dist/es2019/ssr/index.js +3 -2
  23. package/dist/es2019/vc/index.js +4 -2
  24. package/dist/es2019/vc/vc-observer/index.js +41 -61
  25. package/dist/es2019/vc/vc-observer-new/index.js +4 -2
  26. package/dist/es2019/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +7 -3
  27. package/dist/es2019/vc/vc-observer-new/metric-calculator/fy25_03/index.js +12 -5
  28. package/dist/esm/create-interaction-extra-metrics-payload/index.js +109 -0
  29. package/dist/esm/create-payload/index.js +3 -3
  30. package/dist/esm/create-payload/utils/get-vc-metrics.js +37 -21
  31. package/dist/esm/interaction-metrics/index.js +312 -258
  32. package/dist/esm/interaction-metrics/interaction-extra-metrics.js +83 -0
  33. package/dist/esm/interaction-metrics-init/index.js +48 -6
  34. package/dist/esm/segment/third-party-segment.js +3 -1
  35. package/dist/esm/ssr/index.js +3 -2
  36. package/dist/esm/vc/index.js +4 -3
  37. package/dist/esm/vc/vc-observer/index.js +31 -51
  38. package/dist/esm/vc/vc-observer-new/index.js +4 -3
  39. package/dist/esm/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +7 -5
  40. package/dist/esm/vc/vc-observer-new/metric-calculator/fy25_03/index.js +15 -6
  41. package/dist/types/common/common/types.d.ts +2 -0
  42. package/dist/types/common/vc/types.d.ts +1 -0
  43. package/dist/types/create-interaction-extra-metrics-payload/index.d.ts +45 -0
  44. package/dist/types/create-payload/index.d.ts +1 -0
  45. package/dist/types/create-payload/utils/get-vc-metrics.d.ts +1 -1
  46. package/dist/types/interaction-metrics/index.d.ts +2 -0
  47. package/dist/types/interaction-metrics/interaction-extra-metrics.d.ts +17 -0
  48. package/dist/types/vc/types.d.ts +1 -0
  49. package/dist/types/vc/vc-observer/getVCRevisionDebugDetails.d.ts +1 -0
  50. package/dist/types/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.d.ts +3 -2
  51. package/dist/types/vc/vc-observer-new/metric-calculator/fy25_03/index.d.ts +2 -2
  52. package/dist/types/vc/vc-observer-new/metric-calculator/types.d.ts +1 -0
  53. package/dist/types/vc/vc-observer-new/types.d.ts +1 -0
  54. package/dist/types-ts4.5/common/common/types.d.ts +2 -0
  55. package/dist/types-ts4.5/common/vc/types.d.ts +1 -0
  56. package/dist/types-ts4.5/create-interaction-extra-metrics-payload/index.d.ts +45 -0
  57. package/dist/types-ts4.5/create-payload/index.d.ts +1 -0
  58. package/dist/types-ts4.5/create-payload/utils/get-vc-metrics.d.ts +1 -1
  59. package/dist/types-ts4.5/interaction-metrics/index.d.ts +2 -0
  60. package/dist/types-ts4.5/interaction-metrics/interaction-extra-metrics.d.ts +17 -0
  61. package/dist/types-ts4.5/vc/types.d.ts +1 -0
  62. package/dist/types-ts4.5/vc/vc-observer/getVCRevisionDebugDetails.d.ts +1 -0
  63. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.d.ts +3 -2
  64. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/fy25_03/index.d.ts +2 -2
  65. package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/types.d.ts +1 -0
  66. package/dist/types-ts4.5/vc/vc-observer-new/types.d.ts +1 -0
  67. package/package.json +7 -10
@@ -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.default = void 0;
8
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
+ var _vc = require("../vc");
12
+ var _constants = require("./common/constants");
13
+ var _index = require("./index");
14
+ 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; }
15
+ 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; }
16
+ var InteractionExtraMetrics = exports.default = /*#__PURE__*/function () {
17
+ function InteractionExtraMetrics() {
18
+ (0, _classCallCheck2.default)(this, InteractionExtraMetrics);
19
+ // Store the finished interaction ID (as non-3p interaction)
20
+ (0, _defineProperty2.default)(this, "finishedInteractionId", null);
21
+ // independent VC observer, that observes until `custom.post-interaction-logs` event is sent
22
+ (0, _defineProperty2.default)(this, "vcObserver", null);
23
+ (0, _defineProperty2.default)(this, "sinkHandlerFn", function () {});
24
+ }
25
+ return (0, _createClass2.default)(InteractionExtraMetrics, [{
26
+ key: "initializeVCObserver",
27
+ value: function initializeVCObserver(options) {
28
+ this.vcObserver = new _vc.VCObserverWrapper(_objectSpread(_objectSpread({}, options), {}, {
29
+ isPostInteraction: true
30
+ }));
31
+ }
32
+ }, {
33
+ key: "startVCObserver",
34
+ value: function startVCObserver(_ref, interactionId) {
35
+ var startTime = _ref.startTime;
36
+ if (this.eligibleToMeasure(interactionId)) {
37
+ var _this$vcObserver;
38
+ (_this$vcObserver = this.vcObserver) === null || _this$vcObserver === void 0 || _this$vcObserver.start({
39
+ startTime: startTime
40
+ });
41
+ }
42
+ }
43
+ }, {
44
+ key: "stopVCObserver",
45
+ value: function stopVCObserver() {
46
+ var _this$vcObserver2;
47
+ (_this$vcObserver2 = this.vcObserver) === null || _this$vcObserver2 === void 0 || _this$vcObserver2.stop();
48
+ }
49
+
50
+ // Check if the current interaction is eligible for measurement
51
+ }, {
52
+ key: "eligibleToMeasure",
53
+ value: function eligibleToMeasure(interactionId) {
54
+ var interaction = _constants.interactions.get(interactionId);
55
+ return (interaction === null || interaction === void 0 ? void 0 : interaction.type) === 'page_load' || (interaction === null || interaction === void 0 ? void 0 : interaction.type) === 'transition';
56
+ }
57
+ }, {
58
+ key: "updateFinishedInteractionId",
59
+ value: function updateFinishedInteractionId(interactionId) {
60
+ if (this.eligibleToMeasure(interactionId)) {
61
+ this.finishedInteractionId = interactionId;
62
+ }
63
+ }
64
+ }, {
65
+ key: "sinkHandler",
66
+ value: function sinkHandler(fn) {
67
+ this.sinkHandlerFn = fn;
68
+ }
69
+ }, {
70
+ key: "onInteractionComplete",
71
+ value: function onInteractionComplete(id, data) {
72
+ if (data.ufoName) {
73
+ var _this$vcObserver3;
74
+ var updatedData = _objectSpread(_objectSpread({}, data), {}, {
75
+ vcObserver: (_this$vcObserver3 = this.vcObserver) !== null && _this$vcObserver3 !== void 0 ? _this$vcObserver3 : undefined
76
+ });
77
+ this.sinkHandlerFn(id, updatedData);
78
+ }
79
+ this.stopVCObserver();
80
+ (0, _index.remove)(id);
81
+ this.reset();
82
+ }
83
+ }, {
84
+ key: "reset",
85
+ value: function reset() {
86
+ this.finishedInteractionId = null;
87
+ }
88
+ }]);
89
+ }();
@@ -1,12 +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.init = init;
8
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
9
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
12
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
11
13
  var _additionalPayload = require("../additional-payload");
12
14
  var _config = require("../config");
@@ -16,7 +18,7 @@ var _interactionMetrics = require("../interaction-metrics");
16
18
  var _interactionsPerformanceObserver = require("../interactions-performance-observer");
17
19
  var _machineUtilisation = require("../machine-utilisation");
18
20
  var _scheduleIdleCallback = _interopRequireDefault(require("./schedule-idle-callback"));
19
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != (0, _typeof2.default)(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
21
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
20
22
  var initialized = false;
21
23
  function sinkInteraction(instance, payloadPackage) {
22
24
  function sinkFn(interactionId, interaction) {
@@ -78,6 +80,36 @@ function sinkPostInteractionLog(instance, createPostInteractionLogPayload) {
78
80
  });
79
81
  });
80
82
  }
83
+ function sinkInteractionExtraMetrics(instance, createInteractionExtraLogPayload) {
84
+ _interactionMetrics.interactionExtraMetrics.sinkHandler(function (interactionId, interaction) {
85
+ (0, _scheduleIdleCallback.default)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
86
+ var payload, devToolObserver;
87
+ return _regenerator.default.wrap(function _callee$(_context) {
88
+ while (1) switch (_context.prev = _context.next) {
89
+ case 0:
90
+ _context.next = 2;
91
+ return createInteractionExtraLogPayload(interactionId, interaction);
92
+ case 2:
93
+ payload = _context.sent;
94
+ if (payload) {
95
+ // NOTE: This API is used by the UFO DevTool Chrome Extension and also by Criterion
96
+ // eslint-disable-next-line @atlaskit/platform/ensure-feature-flag-prefix
97
+ if ((0, _platformFeatureFlags.fg)('enable_ufo_devtools_api_for_extra_events')) {
98
+ devToolObserver = globalThis.__ufo_devtool_onUfoPayload;
99
+ if (typeof devToolObserver === 'function') {
100
+ devToolObserver === null || devToolObserver === void 0 || devToolObserver(payload);
101
+ }
102
+ }
103
+ instance.sendOperationalEvent(payload);
104
+ }
105
+ case 4:
106
+ case "end":
107
+ return _context.stop();
108
+ }
109
+ }, _callee);
110
+ })));
111
+ });
112
+ }
81
113
  function init(analyticsWebClientAsync, config) {
82
114
  var _config$vc;
83
115
  if (initialized) {
@@ -103,6 +135,9 @@ function init(analyticsWebClientAsync, config) {
103
135
  startTime: 0
104
136
  });
105
137
  }
138
+ if ((0, _platformFeatureFlags.fg)('platform_ufo_enable_ttai_with_3p')) {
139
+ _interactionMetrics.interactionExtraMetrics.initializeVCObserver(vcOptions);
140
+ }
106
141
  }
107
142
  (0, _hiddenTiming.setupHiddenTimingCapture)();
108
143
  (0, _additionalPayload.startLighthouseObserver)();
@@ -119,11 +154,14 @@ function init(analyticsWebClientAsync, config) {
119
154
  return _interopRequireWildcard(require( /* webpackChunkName: "create-payloads" */'../create-payload'));
120
155
  }), Promise.resolve().then(function () {
121
156
  return _interopRequireWildcard(require( /* webpackChunkName: "create-post-interaction-log-payload" */'../create-post-interaction-log-payload'));
122
- })]).then(function (_ref) {
123
- var _ref2 = (0, _slicedToArray2.default)(_ref, 3),
124
- awc = _ref2[0],
125
- payloadPackage = _ref2[1],
126
- createPostInteractionLogPayloadPackage = _ref2[2];
157
+ }), Promise.resolve().then(function () {
158
+ return _interopRequireWildcard(require( /* webpackChunkName: "create-interaction-extra-metrics-payload" */'../create-interaction-extra-metrics-payload'));
159
+ })]).then(function (_ref2) {
160
+ var _ref3 = (0, _slicedToArray2.default)(_ref2, 4),
161
+ awc = _ref3[0],
162
+ payloadPackage = _ref3[1],
163
+ createPostInteractionLogPayloadPackage = _ref3[2],
164
+ createInteractionExtraMetricsPayloadPackage = _ref3[3];
127
165
  if (awc.getAnalyticsWebClientPromise) {
128
166
  awc.getAnalyticsWebClientPromise().then(function (client) {
129
167
  var _config$experimentalI2, _config$postInteracti;
@@ -135,6 +173,9 @@ function init(analyticsWebClientAsync, config) {
135
173
  if ((_config$postInteracti = config.postInteractionLog) !== null && _config$postInteracti !== void 0 && _config$postInteracti.enabled) {
136
174
  sinkPostInteractionLog(instance, createPostInteractionLogPayloadPackage.default);
137
175
  }
176
+ if ((0, _platformFeatureFlags.fg)('platform_ufo_enable_ttai_with_3p')) {
177
+ sinkInteractionExtraMetrics(instance, createInteractionExtraMetricsPayloadPackage.default);
178
+ }
138
179
  });
139
180
  } else if (awc.sendOperationalEvent) {
140
181
  var _config$experimentalI3, _config$postInteracti2;
@@ -145,6 +186,9 @@ function init(analyticsWebClientAsync, config) {
145
186
  if ((_config$postInteracti2 = config.postInteractionLog) !== null && _config$postInteracti2 !== void 0 && _config$postInteracti2.enabled) {
146
187
  sinkPostInteractionLog(awc, createPostInteractionLogPayloadPackage.default);
147
188
  }
189
+ if ((0, _platformFeatureFlags.fg)('platform_ufo_enable_ttai_with_3p')) {
190
+ sinkInteractionExtraMetrics(awc, createInteractionExtraMetricsPayloadPackage.default);
191
+ }
148
192
  }
149
193
  });
150
194
  }
@@ -15,7 +15,9 @@ var _excluded = ["children"];
15
15
  function UFOThirdPartySegment(props) {
16
16
  var children = props.children,
17
17
  otherProps = (0, _objectWithoutProperties2.default)(props, _excluded);
18
- return /*#__PURE__*/_react.default.createElement(_segment.default, (0, _extends2.default)({
18
+ return (0, _platformFeatureFlags.fg)('platform_ufo_enable_ttai_with_3p') ? /*#__PURE__*/_react.default.createElement(_segment.default, (0, _extends2.default)({
19
+ type: "third-party"
20
+ }, otherProps), children) : /*#__PURE__*/_react.default.createElement(_segment.default, (0, _extends2.default)({
19
21
  type: "third-party"
20
22
  }, otherProps), /*#__PURE__*/_react.default.createElement(_ignoreHolds.default, {
21
23
  ignore: (0, _platformFeatureFlags.fg)('platform_ufo_exclude_3p_elements_from_ttai'),
@@ -12,9 +12,10 @@ exports.getSSRSuccess = getSSRSuccess;
12
12
  exports.getSSRTimings = getSSRTimings;
13
13
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
14
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
15
- var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
16
15
  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
16
  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; }
17
+ //
18
+
18
19
  var NESTED_METRIC_SEPARATOR = '/';
19
20
  function filterEntry(entry) {
20
21
  return !(!entry || (0, _typeof2.default)(entry) !== 'object' || entry.startTime < 0 || entry.duration < 0);
@@ -23,7 +24,7 @@ function mapEntry(entry) {
23
24
  return _objectSpread({
24
25
  startTime: Math.round(entry.startTime),
25
26
  duration: Math.round(entry.duration)
26
- }, entry.size && (0, _platformFeatureFlags.fg)('platform_ufo_ssr_size_field') ? {
27
+ }, entry.size ? {
27
28
  size: Math.round(entry.size)
28
29
  } : {});
29
30
  }
@@ -122,11 +122,11 @@ var VCObserverWrapper = exports.VCObserverWrapper = /*#__PURE__*/function () {
122
122
  value: function () {
123
123
  var _getVCResult = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(param) {
124
124
  var _this$oldVCObserver4, _this$newVCObserver3, _ref2;
125
- var experienceKey, v1v2Result, v3Result;
125
+ var experienceKey, include3p, v1v2Result, v3Result;
126
126
  return _regenerator.default.wrap(function _callee$(_context) {
127
127
  while (1) switch (_context.prev = _context.next) {
128
128
  case 0:
129
- experienceKey = param.experienceKey;
129
+ experienceKey = param.experienceKey, include3p = param.include3p;
130
130
  if (!((0, _config.isVCRevisionEnabled)('fy25.01', experienceKey) || (0, _config.isVCRevisionEnabled)('fy25.02', experienceKey))) {
131
131
  _context.next = 7;
132
132
  break;
@@ -150,7 +150,8 @@ var VCObserverWrapper = exports.VCObserverWrapper = /*#__PURE__*/function () {
150
150
  start: param.start,
151
151
  stop: param.stop,
152
152
  interactionId: param.interactionId,
153
- ssr: param.includeSSRInV3 ? param.ssr : undefined
153
+ ssr: param.includeSSRInV3 ? param.ssr : undefined,
154
+ include3p: include3p
154
155
  });
155
156
  case 12:
156
157
  _context.t1 = _context.sent;
@@ -103,7 +103,7 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
103
103
  });
104
104
  (0, _defineProperty2.default)(this, "getVCResult", /*#__PURE__*/function () {
105
105
  var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref3) {
106
- var start, stop, tti, prefix, ssr, vc, isEventAborted, experienceKey, interactionId, includeSSRRatio, startTime, fullPrefix, rawData, abortReason, abortReasonInfo, heatmap, heatmapNext, outOfBoundaryInfo, totalTime, componentsLog, viewport, devToolsEnabled, ratios, isTTVCv1Disabled, vcAbortedResultWithRevisions, ttvcV1Result, VC, VCBox, VCEntries, totalPainted, _componentsLog, vcNext, outOfBoundary, stopTime, ttvcV1DevToolInfo, ttvcV2DevToolInfo, shouldCreateDebugDetails, v1RevisionDebugDetails, v2RevisionDebugDetails, _window$__ufo_devtool2, _window2, _window$__ufo_devtool, _window, _window$__on_ufo_vc_d2, _window4, _window$__on_ufo_vc_d, _window3, isVCClean, revisionsData, speedIndex, SSRRatio, SSRRatioNext, SSRRatioPayload, isTTVCv3Enabled;
106
+ var start, stop, tti, prefix, ssr, vc, isEventAborted, experienceKey, interactionId, includeSSRRatio, startTime, fullPrefix, rawData, abortReason, abortReasonInfo, heatmap, heatmapNext, outOfBoundaryInfo, totalTime, componentsLog, viewport, devToolsEnabled, ratios, isTTVCv1Disabled, vcAbortedResultWithRevisions, _vcAbortedResultWithRevisions, ttvcV1Result, VC, VCBox, VCEntries, totalPainted, _componentsLog, vcNext, outOfBoundary, stopTime, ttvcV1DevToolInfo, ttvcV2DevToolInfo, shouldCreateDebugDetails, v1RevisionDebugDetails, v2RevisionDebugDetails, _window$__ufo_devtool2, _window2, _window$__ufo_devtool, _window, _window$__on_ufo_vc_d2, _window4, _window$__on_ufo_vc_d, _window3, isVCClean, revisionsData, speedIndex, SSRRatio, SSRRatioNext, SSRRatioPayload, isTTVCv3Enabled;
107
107
  return _regenerator.default.wrap(function _callee$(_context) {
108
108
  while (1) switch (_context.prev = _context.next) {
109
109
  case 0:
@@ -120,7 +120,7 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
120
120
  abortReason = rawData.abortReason, abortReasonInfo = rawData.abortReasonInfo, heatmap = rawData.heatmap, heatmapNext = rawData.heatmapNext, outOfBoundaryInfo = rawData.outOfBoundaryInfo, totalTime = rawData.totalTime, componentsLog = rawData.componentsLog, viewport = rawData.viewport, devToolsEnabled = rawData.devToolsEnabled, ratios = rawData.ratios;
121
121
  isTTVCv1Disabled = !(0, _config.isVCRevisionEnabled)('fy25.01', experienceKey);
122
122
  if (!(abortReasonInfo !== null)) {
123
- _context.next = 13;
123
+ _context.next = 19;
124
124
  break;
125
125
  }
126
126
  // exposing data to devtools
@@ -129,22 +129,44 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
129
129
  window.__vcNotAvailableReason = abortReasonInfo;
130
130
  }
131
131
  } catch (e) {}
132
- vcAbortedResultWithRevisions = (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, "".concat(fullPrefix, "vc:state"), false), "".concat(fullPrefix, "vc:abort:reason"), abortReason.reason), "".concat(fullPrefix, "vc:abort:timestamp"), abortReason.timestamp), "".concat(fullPrefix, "vc:rev"), [{
132
+ if (!(0, _platformFeatureFlags.fg)('platform_ufo_abort_timestamp_by_revision')) {
133
+ _context.next = 16;
134
+ break;
135
+ }
136
+ vcAbortedResultWithRevisions = (0, _defineProperty2.default)({}, "".concat(fullPrefix, "vc:rev"), [{
133
137
  revision: 'fy25.02',
134
138
  clean: false,
135
139
  'metric:vc90': null,
136
- abortReason: abortReason.reason
140
+ abortReason: abortReason.reason,
141
+ abortTimestamp: Math.round(abortReason.timestamp)
137
142
  }]);
138
143
  if (!isTTVCv1Disabled) {
139
144
  vcAbortedResultWithRevisions["".concat(fullPrefix, "vc:rev")].push({
140
145
  revision: 'fy25.01',
141
146
  clean: false,
142
147
  'metric:vc90': null,
143
- abortReason: abortReason.reason
148
+ abortReason: abortReason.reason,
149
+ abortTimestamp: Math.round(abortReason.timestamp)
144
150
  });
145
151
  }
146
152
  return _context.abrupt("return", vcAbortedResultWithRevisions);
147
- case 13:
153
+ case 16:
154
+ _vcAbortedResultWithRevisions = (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, "".concat(fullPrefix, "vc:state"), false), "".concat(fullPrefix, "vc:abort:reason"), abortReason.reason), "".concat(fullPrefix, "vc:abort:timestamp"), abortReason.timestamp), "".concat(fullPrefix, "vc:rev"), [{
155
+ revision: 'fy25.02',
156
+ clean: false,
157
+ 'metric:vc90': null,
158
+ abortReason: abortReason.reason
159
+ }]);
160
+ if (!isTTVCv1Disabled) {
161
+ _vcAbortedResultWithRevisions["".concat(fullPrefix, "vc:rev")].push({
162
+ revision: 'fy25.01',
163
+ clean: false,
164
+ 'metric:vc90': null,
165
+ abortReason: abortReason.reason
166
+ });
167
+ }
168
+ return _context.abrupt("return", _vcAbortedResultWithRevisions);
169
+ case 19:
148
170
  ttvcV1Result = isTTVCv1Disabled ? {
149
171
  VC: {},
150
172
  VCBox: {},
@@ -179,48 +201,6 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
179
201
  viewport: viewport,
180
202
  fixSSRAttribution: includeSSRRatio
181
203
  });
182
- try {
183
- if (!_this.isPostInteraction) {
184
- VCObserver.VCParts.forEach(function (key) {
185
- if (isTTVCv1Disabled) {
186
- var duration = vcNext.VC[key];
187
- if (duration !== null && duration !== undefined) {
188
- if (!(0, _platformFeatureFlags.fg)('ufo_chrome_devtools_uplift')) {
189
- performance.measure("VC".concat(key), {
190
- start: start,
191
- duration: duration
192
- });
193
- performance.measure("VC_Next".concat(key), {
194
- start: start,
195
- duration: duration
196
- });
197
- }
198
- }
199
- } else {
200
- var ttvcV1duration = VC[key];
201
- if (ttvcV1duration !== null && ttvcV1duration !== undefined) {
202
- if (!(0, _platformFeatureFlags.fg)('ufo_chrome_devtools_uplift')) {
203
- performance.measure("VC".concat(key), {
204
- start: start,
205
- duration: ttvcV1duration
206
- });
207
- }
208
- }
209
- var ttvcV2duration = vcNext.VC[key];
210
- if (ttvcV2duration !== null && ttvcV2duration !== undefined) {
211
- if (!(0, _platformFeatureFlags.fg)('ufo_chrome_devtools_uplift')) {
212
- performance.measure("VC_Next".concat(key), {
213
- start: start,
214
- duration: ttvcV2duration
215
- });
216
- }
217
- }
218
- }
219
- });
220
- }
221
- } catch (e) {
222
- /* empty */
223
- }
224
204
  outOfBoundary = outOfBoundaryInfo ? (0, _defineProperty2.default)({}, "".concat(fullPrefix, "vc:oob"), outOfBoundaryInfo) : {}; //const oldDomUpdates = oldDomUpdatesEnabled ? { [`${fullPrefix}vc:old:dom`]: vcNext.VCBox } : {};
225
205
  stopTime = performance.now(); // exposing data to devtools
226
206
  try {
@@ -344,16 +324,16 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
344
324
  SSRRatioNext = VCObserver.getSSRRatio(vcNext.VCEntries.rel, ssr);
345
325
  SSRRatioPayload = includeSSRRatio ? (0, _defineProperty2.default)((0, _defineProperty2.default)({}, "".concat(fullPrefix, "vc:ssrRatio"), isTTVCv1Disabled ? SSRRatioNext : SSRRatio), "".concat(fullPrefix, "vc:next:ssrRatio"), SSRRatioNext) : {};
346
326
  if (!isTTVCv1Disabled) {
347
- _context.next = 30;
327
+ _context.next = 35;
348
328
  break;
349
329
  }
350
330
  return _context.abrupt("return", _objectSpread(_objectSpread(_objectSpread(_objectSpread((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, "".concat(fullPrefix, "vc:size"), viewport), "".concat(fullPrefix, "vc:time"), Math.round(totalTime + (stopTime - startTime))), "".concat(fullPrefix, "vc:ratios"), ratios), outOfBoundary), {}, (0, _defineProperty2.default)({}, "".concat(fullPrefix, "vc:ignored"), _this.getIgnoredElements(componentsLog)), SSRRatioPayload), {}, (0, _defineProperty2.default)({}, "".concat(fullPrefix, "vc:ssrRatio"), SSRRatioNext), revisionsData), speedIndex));
351
- case 30:
331
+ case 35:
352
332
  isTTVCv3Enabled = (0, _config.isVCRevisionEnabled)('fy25.03', experienceKey);
353
333
  return _context.abrupt("return", _objectSpread(_objectSpread(_objectSpread(_objectSpread((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({
354
334
  'metrics:vc': VC
355
335
  }, "".concat(fullPrefix, "vc:state"), true), "".concat(fullPrefix, "vc:clean"), isVCClean), "".concat(fullPrefix, "vc:dom"), VCBox), "".concat(fullPrefix, "vc:updates"), isTTVCv3Enabled ? undefined : VCEntries.rel.slice(0, 50)), "".concat(fullPrefix, "vc:size"), viewport), "".concat(fullPrefix, "vc:time"), Math.round(totalTime + (stopTime - startTime))), "".concat(fullPrefix, "vc:total"), totalPainted), "".concat(fullPrefix, "vc:ratios"), ratios), "".concat(fullPrefix, "vc:ssrRatio"), SSRRatio), outOfBoundary), {}, (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, "".concat(fullPrefix, "vc:next"), vcNext.VC), "".concat(fullPrefix, "vc:next:updates"), isTTVCv3Enabled ? undefined : vcNext.VCEntries.rel.slice(0, 50)), "".concat(fullPrefix, "vc:next:dom"), vcNext.VCBox), SSRRatioPayload), {}, (0, _defineProperty2.default)({}, "".concat(fullPrefix, "vc:ignored"), _this.getIgnoredElements(componentsLog)), revisionsData), speedIndex));
356
- case 32:
336
+ case 37:
357
337
  case "end":
358
338
  return _context.stop();
359
339
  }
@@ -227,11 +227,11 @@ var VCObserverNew = exports.default = /*#__PURE__*/function () {
227
227
  key: "getVCResult",
228
228
  value: function () {
229
229
  var _getVCResult = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(param) {
230
- var start, stop, interactionId, results, calculator_fy25_03, orderedEntries, fy25_03;
230
+ var start, stop, interactionId, include3p, results, calculator_fy25_03, orderedEntries, fy25_03;
231
231
  return _regenerator.default.wrap(function _callee$(_context) {
232
232
  while (1) switch (_context.prev = _context.next) {
233
233
  case 0:
234
- start = param.start, stop = param.stop, interactionId = param.interactionId;
234
+ start = param.start, stop = param.stop, interactionId = param.interactionId, include3p = param.include3p;
235
235
  results = [];
236
236
  this.addStartEntry(start);
237
237
  calculator_fy25_03 = new _fy25_.default();
@@ -248,7 +248,8 @@ var VCObserverNew = exports.default = /*#__PURE__*/function () {
248
248
  startTime: start,
249
249
  stopTime: stop,
250
250
  interactionId: interactionId,
251
- isPostInteraction: this.isPostInteraction
251
+ isPostInteraction: this.isPostInteraction,
252
+ include3p: include3p
252
253
  });
253
254
  case 8:
254
255
  fy25_03 = _context.sent;
@@ -323,13 +323,13 @@ var AbstractVCCalculatorBase = exports.default = /*#__PURE__*/function () {
323
323
  var _this = this,
324
324
  _vcDetails$90$t,
325
325
  _vcDetails$;
326
- var startTime, stopTime, orderedEntries, interactionId, isPostInteraction, filteredEntries, isVCClean, dirtyReason, getVCCleanStatusResult, vcDetails, result;
326
+ var startTime, stopTime, orderedEntries, interactionId, isPostInteraction, include3p, filteredEntries, isVCClean, dirtyReason, getVCCleanStatusResult, vcDetails, result;
327
327
  return _regenerator.default.wrap(function _callee2$(_context2) {
328
328
  while (1) switch (_context2.prev = _context2.next) {
329
329
  case 0:
330
- startTime = _ref.startTime, stopTime = _ref.stopTime, orderedEntries = _ref.orderedEntries, interactionId = _ref.interactionId, isPostInteraction = _ref.isPostInteraction;
330
+ startTime = _ref.startTime, stopTime = _ref.stopTime, orderedEntries = _ref.orderedEntries, interactionId = _ref.interactionId, isPostInteraction = _ref.isPostInteraction, include3p = _ref.include3p;
331
331
  filteredEntries = orderedEntries.filter(function (entry) {
332
- return _this.isEntryIncluded(entry);
332
+ return _this.isEntryIncluded(entry, include3p);
333
333
  });
334
334
  getVCCleanStatusResult = this.getVCCleanStatus(filteredEntries);
335
335
  isVCClean = getVCCleanStatusResult.isVCClean;
@@ -338,12 +338,14 @@ var AbstractVCCalculatorBase = exports.default = /*#__PURE__*/function () {
338
338
  _context2.next = 7;
339
339
  break;
340
340
  }
341
- return _context2.abrupt("return", {
341
+ return _context2.abrupt("return", _objectSpread({
342
342
  revision: this.revisionNo,
343
343
  'metric:vc90': null,
344
344
  clean: false,
345
345
  abortReason: dirtyReason
346
- });
346
+ }, (0, _platformFeatureFlags.fg)('platform_ufo_abort_timestamp_by_revision') ? {
347
+ abortTimestamp: getVCCleanStatusResult.abortTimestamp
348
+ } : {}));
347
349
  case 7:
348
350
  _context2.next = 9;
349
351
  return this.calculateWithDebugInfo(filteredEntries, startTime, stopTime, isPostInteraction, isVCClean, interactionId, dirtyReason, orderedEntries);
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.default = exports.NON_VISUAL_ARIA_ATTRIBUTES = exports.KNOWN_ATTRIBUTES_THAT_DOES_NOT_CAUSE_LAYOUT_SHIFTS = void 0;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
8
9
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
9
10
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
10
11
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
@@ -13,16 +14,18 @@ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits
13
14
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
14
15
  var _abstractBaseVcCalculator = _interopRequireDefault(require("../abstract-base-vc-calculator"));
15
16
  var _isViewportEntryData = _interopRequireDefault(require("../utils/is-viewport-entry-data"));
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; }
16
19
  function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
17
20
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
18
21
  var ABORTING_WINDOW_EVENT = ['wheel', 'scroll', 'keydown', 'resize'];
19
22
  var REVISION_NO = 'fy25.03';
20
- var getConsideredEntryTypes = function getConsideredEntryTypes() {
23
+ var getConsideredEntryTypes = function getConsideredEntryTypes(include3p) {
21
24
  var entryTypes = ['mutation:child-element', 'mutation:element', 'mutation:attribute', 'layout-shift', 'window:event'];
22
25
 
23
26
  // If not exclude 3p elements from ttvc,
24
27
  // including the tags into the ConsideredEntryTypes so that it won't be ignored for TTVC calculation
25
- if (!(0, _platformFeatureFlags.fg)('platform_ufo_exclude_3p_elements_from_ttvc')) {
28
+ if (!(0, _platformFeatureFlags.fg)('platform_ufo_exclude_3p_elements_from_ttvc') || include3p) {
26
29
  entryTypes.push('mutation:third-party-element');
27
30
  }
28
31
  if ((0, _platformFeatureFlags.fg)('platform_ufo_enable_media_for_ttvc_v3')) {
@@ -46,8 +49,8 @@ var VCCalculator_FY25_03 = exports.default = /*#__PURE__*/function (_AbstractVCC
46
49
  (0, _inherits2.default)(VCCalculator_FY25_03, _AbstractVCCalculator);
47
50
  return (0, _createClass2.default)(VCCalculator_FY25_03, [{
48
51
  key: "isEntryIncluded",
49
- value: function isEntryIncluded(entry) {
50
- if (!getConsideredEntryTypes().includes(entry.data.type)) {
52
+ value: function isEntryIncluded(entry, include3p) {
53
+ if (!getConsideredEntryTypes(include3p).includes(entry.data.type)) {
51
54
  return false;
52
55
  }
53
56
  if (entry.data.type === 'mutation:attribute') {
@@ -70,21 +73,27 @@ var VCCalculator_FY25_03 = exports.default = /*#__PURE__*/function (_AbstractVCC
70
73
  key: "getVCCleanStatus",
71
74
  value: function getVCCleanStatus(filteredEntries) {
72
75
  var dirtyReason = '';
76
+ var abortTimestamp = -1;
73
77
  var hasAbortEvent = filteredEntries.some(function (entry) {
74
78
  if (entry.data.type === 'window:event') {
75
79
  var data = entry.data;
76
80
  if (ABORTING_WINDOW_EVENT.includes(data.eventType)) {
77
81
  dirtyReason = data.eventType === 'keydown' ? 'keypress' : data.eventType;
82
+ if ((0, _platformFeatureFlags.fg)('platform_ufo_abort_timestamp_by_revision')) {
83
+ abortTimestamp = Math.round(entry.time);
84
+ }
78
85
  return true;
79
86
  }
80
87
  }
81
88
  return false;
82
89
  });
83
90
  if (hasAbortEvent && dirtyReason) {
84
- return {
91
+ return _objectSpread({
85
92
  isVCClean: false,
86
93
  dirtyReason: dirtyReason
87
- };
94
+ }, (0, _platformFeatureFlags.fg)('platform_ufo_abort_timestamp_by_revision') ? {
95
+ abortTimestamp: abortTimestamp
96
+ } : {});
88
97
  }
89
98
  return {
90
99
  isVCClean: true
@@ -0,0 +1,93 @@
1
+ import { getConfig } from '../config';
2
+ import { getMoreAccuratePageVisibilityUpToTTAI } from '../create-payload';
3
+ import { sanitizeUfoName } from '../create-payload/common/utils';
4
+ import getPageVisibilityUpToTTAI from '../create-payload/utils/get-page-visibility-up-to-ttai';
5
+ import getPayloadSize from '../create-payload/utils/get-payload-size';
6
+ import { getReactUFOPayloadVersion } from '../create-payload/utils/get-react-ufo-payload-version';
7
+ import getTTAI from '../create-payload/utils/get-ttai';
8
+ import getVCMetrics from '../create-payload/utils/get-vc-metrics';
9
+ async function createInteractionExtraLogPayload(interactionId, interaction) {
10
+ var _getTTAI, _finalVCMetrics$ufoV, _window$location;
11
+ const config = getConfig();
12
+ if (!config) {
13
+ throw Error('UFO Configuration not provided');
14
+ }
15
+ const {
16
+ end,
17
+ start,
18
+ ufoName,
19
+ rate,
20
+ type,
21
+ abortReason,
22
+ routeName,
23
+ previousInteractionName,
24
+ isPreviousInteractionAborted,
25
+ abortedByInteractionName
26
+ } = interaction;
27
+ const pageVisibilityAtTTAI = getPageVisibilityUpToTTAI(interaction);
28
+ const isPageLoad = type === 'page_load' || type === 'transition';
29
+ if (!isPageLoad) {
30
+ // Only create payload for page load
31
+ return null;
32
+ }
33
+ const calculatePageVisibilityFromTheStartOfPageLoad = config.enableBetterPageVisibilityApi && isPageLoad;
34
+ const moreAccuratePageVisibilityAtTTAI = calculatePageVisibilityFromTheStartOfPageLoad ? getMoreAccuratePageVisibilityUpToTTAI(interaction) : null;
35
+ const extraTTAI = (_getTTAI = getTTAI(interaction)) !== null && _getTTAI !== void 0 ? _getTTAI : undefined;
36
+ const newUFOName = sanitizeUfoName(ufoName);
37
+ const finalVCMetrics = await getVCMetrics(interaction, true);
38
+ const ttvc = (_finalVCMetrics$ufoV = finalVCMetrics['ufo:vc:rev']) === null || _finalVCMetrics$ufoV === void 0 ? void 0 : _finalVCMetrics$ufoV.map(revision => {
39
+ if (revision['metric:vc90'] === null || revision.clean !== true) {
40
+ return null;
41
+ }
42
+ return {
43
+ revision: revision.revision,
44
+ vc90: revision['metric:vc90']
45
+ };
46
+ }).filter(revision => revision != null);
47
+ const payload = {
48
+ actionSubject: 'experience',
49
+ action: 'measured',
50
+ eventType: 'operational',
51
+ source: 'measured',
52
+ tags: ['observability'],
53
+ attributes: {
54
+ properties: {
55
+ // basic
56
+ 'event:hostname': ((_window$location = window.location) === null || _window$location === void 0 ? void 0 : _window$location.hostname) || 'unknown',
57
+ 'event:product': config.product,
58
+ 'event:schema': '1.0.0',
59
+ 'event:sizeInKb': 0,
60
+ 'event:source': {
61
+ name: 'react-ufo/web',
62
+ version: getReactUFOPayloadVersion(interaction.type)
63
+ },
64
+ 'event:region': config.region || 'unknown',
65
+ 'experience:key': 'custom.interaction-extra-metrics',
66
+ 'experience:name': newUFOName,
67
+ interactionMetrics: {
68
+ namePrefix: config.namePrefix || '',
69
+ segmentPrefix: config.segmentPrefix || '',
70
+ interactionId,
71
+ pageVisibilityAtTTAI,
72
+ experimental__pageVisibilityAtTTAI: moreAccuratePageVisibilityAtTTAI,
73
+ // raw interaction metrics
74
+ rate,
75
+ routeName,
76
+ type,
77
+ abortReason,
78
+ previousInteractionName,
79
+ isPreviousInteractionAborted,
80
+ abortedByInteractionName,
81
+ // performance
82
+ end: Math.round(end),
83
+ start: Math.round(start),
84
+ 'metric:ttai:3p': extraTTAI,
85
+ ttvc: ttvc !== null && ttvc !== void 0 ? ttvc : undefined
86
+ }
87
+ }
88
+ }
89
+ };
90
+ payload.attributes.properties['event:sizeInKb'] = getPayloadSize(payload.attributes.properties);
91
+ return payload;
92
+ }
93
+ export default createInteractionExtraLogPayload;