@atlaskit/react-ufo 3.10.4 → 3.11.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 (47) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/cjs/config/index.js +51 -5
  3. package/dist/cjs/create-experimental-interaction-metrics-payload/index.js +2 -1
  4. package/dist/cjs/create-payload/utils/get-vc-metrics.js +41 -20
  5. package/dist/cjs/create-post-interaction-log-payload/index.js +11 -0
  6. package/dist/cjs/interaction-metrics/index.js +2 -1
  7. package/dist/cjs/interaction-metrics/post-interaction-log.js +15 -5
  8. package/dist/cjs/vc/index.js +125 -36
  9. package/dist/cjs/vc/vc-observer/getVCRevisionsData.js +48 -23
  10. package/dist/cjs/vc/vc-observer/index.js +17 -6
  11. package/dist/es2019/config/index.js +49 -6
  12. package/dist/es2019/create-experimental-interaction-metrics-payload/index.js +2 -1
  13. package/dist/es2019/create-payload/utils/get-vc-metrics.js +36 -19
  14. package/dist/es2019/create-post-interaction-log-payload/index.js +11 -0
  15. package/dist/es2019/interaction-metrics/index.js +2 -1
  16. package/dist/es2019/interaction-metrics/post-interaction-log.js +14 -4
  17. package/dist/es2019/vc/index.js +99 -36
  18. package/dist/es2019/vc/vc-observer/getVCRevisionsData.js +52 -25
  19. package/dist/es2019/vc/vc-observer/index.js +18 -6
  20. package/dist/esm/config/index.js +49 -5
  21. package/dist/esm/create-experimental-interaction-metrics-payload/index.js +2 -1
  22. package/dist/esm/create-payload/utils/get-vc-metrics.js +42 -21
  23. package/dist/esm/create-post-interaction-log-payload/index.js +11 -0
  24. package/dist/esm/interaction-metrics/index.js +2 -1
  25. package/dist/esm/interaction-metrics/post-interaction-log.js +15 -5
  26. package/dist/esm/vc/index.js +127 -37
  27. package/dist/esm/vc/vc-observer/getVCRevisionsData.js +48 -23
  28. package/dist/esm/vc/vc-observer/index.js +17 -6
  29. package/dist/types/common/common/types.d.ts +1 -1
  30. package/dist/types/common/react-ufo-payload-schema.d.ts +49 -3
  31. package/dist/types/config/index.d.ts +14 -3
  32. package/dist/types/create-post-interaction-log-payload/index.d.ts +3 -2
  33. package/dist/types/interaction-metrics/post-interaction-log.d.ts +3 -4
  34. package/dist/types/vc/index.d.ts +17 -1
  35. package/dist/types/vc/types.d.ts +3 -1
  36. package/dist/types/vc/vc-observer/getVCRevisionsData.d.ts +5 -3
  37. package/dist/types/vc/vc-observer/index.d.ts +1 -1
  38. package/dist/types-ts4.5/common/common/types.d.ts +1 -1
  39. package/dist/types-ts4.5/common/react-ufo-payload-schema.d.ts +51 -3
  40. package/dist/types-ts4.5/config/index.d.ts +14 -3
  41. package/dist/types-ts4.5/create-post-interaction-log-payload/index.d.ts +3 -2
  42. package/dist/types-ts4.5/interaction-metrics/post-interaction-log.d.ts +3 -4
  43. package/dist/types-ts4.5/vc/index.d.ts +17 -1
  44. package/dist/types-ts4.5/vc/types.d.ts +3 -1
  45. package/dist/types-ts4.5/vc/vc-observer/getVCRevisionsData.d.ts +5 -3
  46. package/dist/types-ts4.5/vc/vc-observer/index.d.ts +1 -1
  47. package/package.json +7 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # @atlaskit/ufo-interaction-ignore
2
2
 
3
+ ## 3.11.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [#154164](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/154164)
8
+ [`59249901f5291`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/59249901f5291) -
9
+ align logic for UFO events and watchdog event
10
+
11
+ ## 3.11.0
12
+
13
+ ### Minor Changes
14
+
15
+ - [#152178](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/152178)
16
+ [`b61bda55f25b4`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/b61bda55f25b4) -
17
+ Enable TTVC revision logic by experience
18
+
3
19
  ## 3.10.4
4
20
 
5
21
  ### Patch Changes
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
@@ -11,6 +12,7 @@ exports.getDoNotAbortActivePressInteractionOnTransition = getDoNotAbortActivePre
11
12
  exports.getEnabledVCRevisions = getEnabledVCRevisions;
12
13
  exports.getExperimentalInteractionRate = getExperimentalInteractionRate;
13
14
  exports.getInteractionRate = getInteractionRate;
15
+ exports.getMostRecentVCRevision = getMostRecentVCRevision;
14
16
  exports.getPostInteractionRate = getPostInteractionRate;
15
17
  exports.getRemoveInteractionsUFOPrefixes = getRemoveInteractionsUFOPrefixes;
16
18
  exports.getRemovePageSegmentsUFOPrefixes = getRemovePageSegmentsUFOPrefixes;
@@ -18,6 +20,12 @@ exports.getTypingPerformanceTracingMethod = getTypingPerformanceTracingMethod;
18
20
  exports.getUfoNameOverrides = getUfoNameOverrides;
19
21
  exports.isVCRevisionEnabled = isVCRevisionEnabled;
20
22
  exports.setUFOConfig = setUFOConfig;
23
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
24
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
25
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
26
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
27
+ 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; }
28
+ 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; }
21
29
  var config;
22
30
  var DEFAULT_TTVC_REVISION = 'fy25.02';
23
31
 
@@ -25,28 +33,66 @@ var DEFAULT_TTVC_REVISION = 'fy25.02';
25
33
  // and they could delete empty members
26
34
 
27
35
  function setUFOConfig(newConfig) {
28
- config = newConfig;
36
+ if ((0, _platformFeatureFlags.fg)('platform_ufo_vc_enable_revisions_by_experience')) {
37
+ var _newConfig$vc;
38
+ // Handle edge cases with `enabledVCRevisions`
39
+ var _ref = (_newConfig$vc = newConfig === null || newConfig === void 0 ? void 0 : newConfig.vc) !== null && _newConfig$vc !== void 0 ? _newConfig$vc : {},
40
+ enabledVCRevisions = _ref.enabledVCRevisions;
41
+ if ((0, _typeof2.default)(enabledVCRevisions === null || enabledVCRevisions === void 0 ? void 0 : enabledVCRevisions.byExperience) === 'object') {
42
+ config = _objectSpread(_objectSpread({}, newConfig), {}, {
43
+ vc: _objectSpread(_objectSpread({}, newConfig.vc), {}, {
44
+ enabledVCRevisions: {
45
+ // enforce axiom about `enabledVCRevisions.all` config
46
+ all: Array.from(new Set([DEFAULT_TTVC_REVISION].concat((0, _toConsumableArray2.default)(enabledVCRevisions === null || enabledVCRevisions === void 0 ? void 0 : enabledVCRevisions.all), (0, _toConsumableArray2.default)(Object.values(enabledVCRevisions === null || enabledVCRevisions === void 0 ? void 0 : enabledVCRevisions.byExperience).flat())))),
47
+ byExperience: _objectSpread({}, enabledVCRevisions === null || enabledVCRevisions === void 0 ? void 0 : enabledVCRevisions.byExperience)
48
+ }
49
+ })
50
+ });
51
+ } else {
52
+ config = newConfig;
53
+ }
54
+ } else {
55
+ config = newConfig;
56
+ }
29
57
  }
30
58
  function getConfig() {
31
59
  return config;
32
60
  }
61
+ var isValidConfigArray = function isValidConfigArray(array) {
62
+ return Array.isArray(array) && array.length > 0;
63
+ };
33
64
  function getEnabledVCRevisions() {
65
+ var experienceKey = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
34
66
  try {
35
67
  var _config$vc;
36
68
  if (!config) {
37
69
  return [];
38
70
  }
39
71
  if ((_config$vc = config.vc) !== null && _config$vc !== void 0 && _config$vc.enabled) {
40
- var _config$vc2, _config$vc3;
41
- return Array.isArray((_config$vc2 = config.vc) === null || _config$vc2 === void 0 ? void 0 : _config$vc2.enabledVCRevisions) && ((_config$vc3 = config.vc) === null || _config$vc3 === void 0 ? void 0 : _config$vc3.enabledVCRevisions.length) > 0 ? config.vc.enabledVCRevisions : [DEFAULT_TTVC_REVISION];
72
+ var _config$vc2, _enabledVCRevisions$b;
73
+ var _ref2 = (_config$vc2 = config.vc) !== null && _config$vc2 !== void 0 ? _config$vc2 : {},
74
+ enabledVCRevisions = _ref2.enabledVCRevisions;
75
+ if (isValidConfigArray(enabledVCRevisions === null || enabledVCRevisions === void 0 || (_enabledVCRevisions$b = enabledVCRevisions.byExperience) === null || _enabledVCRevisions$b === void 0 ? void 0 : _enabledVCRevisions$b[experienceKey]) && (0, _platformFeatureFlags.fg)('platform_ufo_vc_enable_revisions_by_experience')) {
76
+ var _enabledVCRevisions$b2;
77
+ return (_enabledVCRevisions$b2 = enabledVCRevisions.byExperience) === null || _enabledVCRevisions$b2 === void 0 ? void 0 : _enabledVCRevisions$b2[experienceKey];
78
+ }
79
+ if (isValidConfigArray(enabledVCRevisions === null || enabledVCRevisions === void 0 ? void 0 : enabledVCRevisions.all)) {
80
+ return enabledVCRevisions.all;
81
+ }
82
+ return [DEFAULT_TTVC_REVISION];
42
83
  }
43
84
  return [];
44
85
  } catch (_unused) {
45
86
  return [];
46
87
  }
47
88
  }
48
- function isVCRevisionEnabled(revision) {
49
- return getEnabledVCRevisions().includes(revision);
89
+ function isVCRevisionEnabled(revision, experienceKey) {
90
+ return getEnabledVCRevisions(experienceKey).includes(revision);
91
+ }
92
+ function getMostRecentVCRevision() {
93
+ var experienceKey = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
94
+ var enabledVCRevisions = getEnabledVCRevisions(experienceKey);
95
+ return enabledVCRevisions[enabledVCRevisions.length - 1];
50
96
  }
51
97
  function getInteractionRate(name, interactionKind) {
52
98
  try {
@@ -111,7 +111,8 @@ function _getExperimentalVCMetrics() {
111
111
  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,
112
112
  isEventAborted: !!interaction.abortReason,
113
113
  prefix: prefix,
114
- vc: interaction.vc
114
+ vc: interaction.vc,
115
+ experienceKey: interaction.ufoName
115
116
  });
116
117
  case 4:
117
118
  result = _context.sent;
@@ -23,7 +23,7 @@ function getVCMetrics(_x) {
23
23
  function _getVCMetrics() {
24
24
  _getVCMetrics = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(interaction) {
25
25
  var _config$vc, _config$vc$ssrWhiteli, _interaction$apdex, _config$experimentalI;
26
- var config, interactionStatus, pageVisibilityUpToTTAI, isSSREnabled, ssr, tti, prefix, result, _result$ufoVcRev, ttvcV2Revision, VC;
26
+ var config, interactionStatus, pageVisibilityUpToTTAI, shouldReportVCMetrics, isSSREnabled, ssr, tti, prefix, result, _result$ufoVcRev, mostRecentVCRevision, mostRecentVCRevisionPayload, _result$ufoVcRev2, ttvcV2Revision, VC;
27
27
  return _regenerator.default.wrap(function _callee$(_context) {
28
28
  while (1) switch (_context.prev = _context.next) {
29
29
  case 0:
@@ -42,13 +42,14 @@ function _getVCMetrics() {
42
42
  case 5:
43
43
  interactionStatus = (0, _getInteractionStatus.default)(interaction);
44
44
  pageVisibilityUpToTTAI = (0, _getPageVisibilityUpToTtai.default)(interaction);
45
- if (!((interactionStatus.originalInteractionStatus !== 'SUCCEEDED' || pageVisibilityUpToTTAI !== 'visible') && (0, _platformFeatureFlags.fg)('platform_ufo_no_vc_on_aborted'))) {
46
- _context.next = 10;
45
+ shouldReportVCMetrics = interactionStatus.originalInteractionStatus === 'SUCCEEDED' && pageVisibilityUpToTTAI === 'visible';
46
+ if (!(!shouldReportVCMetrics && (0, _platformFeatureFlags.fg)('platform_ufo_no_vc_on_aborted'))) {
47
+ _context.next = 11;
47
48
  break;
48
49
  }
49
- (0, _vc.getVCObserver)().stop();
50
+ (0, _vc.getVCObserver)().stop(interaction.ufoName);
50
51
  return _context.abrupt("return", {});
51
- case 10:
52
+ case 11:
52
53
  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));
53
54
  ssr = interaction.type === 'page_load' && isSSREnabled ? {
54
55
  ssr: (0, _getSsrDoneTimeValue.default)(config)
@@ -56,56 +57,76 @@ function _getVCMetrics() {
56
57
  _interactionMetrics.postInteractionLog.setVCObserverSSRConfig(ssr);
57
58
  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;
58
59
  prefix = 'ufo';
59
- _context.next = 17;
60
+ _context.next = 18;
60
61
  return (0, _vc.getVCObserver)().getVCResult(_objectSpread({
61
62
  start: interaction.start,
62
63
  stop: interaction.end,
63
64
  tti: tti,
64
65
  prefix: prefix,
65
66
  vc: interaction.vc,
66
- isEventAborted: interactionStatus.originalInteractionStatus !== 'SUCCEEDED'
67
+ isEventAborted: interactionStatus.originalInteractionStatus !== 'SUCCEEDED',
68
+ experienceKey: interaction.ufoName
67
69
  }, ssr));
68
- case 17:
70
+ case 18:
69
71
  result = _context.sent;
70
72
  if ((_config$experimentalI = config.experimentalInteractionMetrics) !== null && _config$experimentalI !== void 0 && _config$experimentalI.enabled) {
71
- (0, _vc.getVCObserver)().stop();
73
+ (0, _vc.getVCObserver)().stop(interaction.ufoName);
72
74
  }
73
75
  _interactionMetrics.postInteractionLog.setLastInteractionFinishVCResult(result);
74
- if ((0, _config.isVCRevisionEnabled)('fy25.01')) {
75
- _context.next = 27;
76
+ if (!(0, _platformFeatureFlags.fg)('platform_ufo_vc_enable_revisions_by_experience')) {
77
+ _context.next = 29;
76
78
  break;
77
79
  }
78
- ttvcV2Revision = result === null || result === void 0 || (_result$ufoVcRev = result['ufo:vc:rev']) === null || _result$ufoVcRev === void 0 ? void 0 : _result$ufoVcRev.find(function (_ref) {
80
+ mostRecentVCRevision = (0, _config.getMostRecentVCRevision)(interaction.ufoName);
81
+ mostRecentVCRevisionPayload = result === null || result === void 0 || (_result$ufoVcRev = result['ufo:vc:rev']) === null || _result$ufoVcRev === void 0 ? void 0 : _result$ufoVcRev.find(function (_ref) {
79
82
  var revision = _ref.revision;
83
+ return revision === mostRecentVCRevision;
84
+ });
85
+ if (!(!shouldReportVCMetrics || !(mostRecentVCRevisionPayload !== null && mostRecentVCRevisionPayload !== void 0 && mostRecentVCRevisionPayload.clean))) {
86
+ _context.next = 26;
87
+ break;
88
+ }
89
+ return _context.abrupt("return", result);
90
+ case 26:
91
+ return _context.abrupt("return", _objectSpread(_objectSpread({}, result), {}, {
92
+ 'metric:vc90': mostRecentVCRevisionPayload['metric:vc90']
93
+ }));
94
+ case 29:
95
+ if ((0, _config.isVCRevisionEnabled)('fy25.01')) {
96
+ _context.next = 36;
97
+ break;
98
+ }
99
+ ttvcV2Revision = result === null || result === void 0 || (_result$ufoVcRev2 = result['ufo:vc:rev']) === null || _result$ufoVcRev2 === void 0 ? void 0 : _result$ufoVcRev2.find(function (_ref2) {
100
+ var revision = _ref2.revision;
80
101
  return revision === 'fy25.02';
81
102
  });
82
103
  if (ttvcV2Revision !== null && ttvcV2Revision !== void 0 && ttvcV2Revision.clean) {
83
- _context.next = 24;
104
+ _context.next = 33;
84
105
  break;
85
106
  }
86
107
  return _context.abrupt("return", result);
87
- case 24:
108
+ case 33:
88
109
  return _context.abrupt("return", _objectSpread(_objectSpread({}, result), {}, {
89
110
  'metric:vc90': ttvcV2Revision['metric:vc90']
90
111
  }));
91
- case 27:
112
+ case 36:
92
113
  VC = result === null || result === void 0 ? void 0 : result['metrics:vc'];
93
114
  if (!(!VC || !(result !== null && result !== void 0 && result["".concat(prefix, ":vc:clean")]))) {
94
- _context.next = 30;
115
+ _context.next = 39;
95
116
  break;
96
117
  }
97
118
  return _context.abrupt("return", result);
98
- case 30:
119
+ case 39:
99
120
  if (!(interactionStatus.originalInteractionStatus !== 'SUCCEEDED' || pageVisibilityUpToTTAI !== 'visible')) {
100
- _context.next = 32;
121
+ _context.next = 41;
101
122
  break;
102
123
  }
103
124
  return _context.abrupt("return", result);
104
- case 32:
125
+ case 41:
105
126
  return _context.abrupt("return", _objectSpread(_objectSpread({}, result), {}, {
106
127
  'metric:vc90': VC['90']
107
128
  }));
108
- case 33:
129
+ case 42:
109
130
  case "end":
110
131
  return _context.stop();
111
132
  }
@@ -133,6 +133,17 @@ function createPostInteractionLogPayload(_ref2) {
133
133
  if (pageVisibilityState !== 'visible') {
134
134
  return null;
135
135
  }
136
+
137
+ // Align post-interaction-logs closer to UFO event behaviour,
138
+ // e.g. also check for aborted or failed events
139
+ if ((0, _platformFeatureFlags.fg)('platform_ufo_vc_align_revisions_on_watchdog_event')) {
140
+ if (lastInteractionFinish.abortReason) {
141
+ return null;
142
+ }
143
+ if (lastInteractionFinish.errors.length > 0) {
144
+ return null;
145
+ }
146
+ }
136
147
  var maxEndTimeFromProfiler = reactProfilerTimings ? Math.max.apply(Math, (0, _toConsumableArray2.default)(reactProfilerTimings.map(function (t) {
137
148
  return t.commitTime;
138
149
  }))) : lastInteractionFinish.end;
@@ -843,7 +843,8 @@ function addNewInteraction(interactionId, ufoName, type, startTime, rate, labelS
843
843
  if (type === 'transition') {
844
844
  var _getConfig14;
845
845
  (0, _vc.getVCObserver)().start({
846
- startTime: startTime
846
+ startTime: startTime,
847
+ experienceKey: ufoName
847
848
  });
848
849
  postInteractionLog.startVCObserver({
849
850
  startTime: startTime
@@ -10,7 +10,9 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
10
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
11
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
13
14
  var _config = require("../config");
15
+ var _vc = require("../vc");
14
16
  var _vcObserver = require("../vc/vc-observer");
15
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; }
16
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; }
@@ -43,7 +45,11 @@ var PostInteractionLog = exports.default = /*#__PURE__*/function () {
43
45
  return (0, _createClass2.default)(PostInteractionLog, [{
44
46
  key: "initializeVCObserver",
45
47
  value: function initializeVCObserver(options) {
46
- if (this.vcObserver === null) {
48
+ if ((0, _platformFeatureFlags.fg)('platform_ufo_vc_align_revisions_on_watchdog_event')) {
49
+ this.vcObserver = new _vc.VCObserverWrapper(_objectSpread(_objectSpread({}, options), {}, {
50
+ isPostInteraction: true
51
+ }));
52
+ } else if (this.vcObserver === null) {
47
53
  this.vcObserver = new _vcObserver.VCObserver(_objectSpread(_objectSpread({}, options), {}, {
48
54
  isPostInteraction: true
49
55
  }));
@@ -132,14 +138,16 @@ var PostInteractionLog = exports.default = /*#__PURE__*/function () {
132
138
  return _context.abrupt("return");
133
139
  case 4:
134
140
  _context.next = 6;
135
- return (_this$vcObserver3 = this.vcObserver) === null || _this$vcObserver3 === void 0 ? void 0 : _this$vcObserver3.getVCResult(_objectSpread({
141
+ return (_this$vcObserver3 = this.vcObserver) === null || _this$vcObserver3 === void 0 ? void 0 : _this$vcObserver3.getVCResult(_objectSpread(_objectSpread({
136
142
  start: this.lastInteractionFinish.start,
137
143
  stop: performance.now(),
138
144
  tti: -1,
139
145
  // no need for TTI value here
140
146
  isEventAborted: !!this.lastInteractionFinish.abortReason,
141
147
  prefix: 'ufo'
142
- }, this.vcObserverSSRConfig));
148
+ }, this.vcObserverSSRConfig), {}, {
149
+ experienceKey: this.lastInteractionFinish.ufoName
150
+ }));
143
151
  case 6:
144
152
  postInteractionFinishVCResult = _context.sent;
145
153
  if ((_getConfig2 = (0, _config.getConfig)()) !== null && _getConfig2 !== void 0 && (_getConfig2 = _getConfig2.experimentalInteractionMetrics) !== null && _getConfig2 !== void 0 && _getConfig2.enabled) {
@@ -184,7 +192,8 @@ var PostInteractionLog = exports.default = /*#__PURE__*/function () {
184
192
  routeName = _ref2.routeName,
185
193
  type = _ref2.type,
186
194
  experimentalTTAI = _ref2.experimentalTTAI,
187
- experimentalVC90 = _ref2.experimentalVC90;
195
+ experimentalVC90 = _ref2.experimentalVC90,
196
+ errors = _ref2.errors;
188
197
  this.lastInteractionFinish = {
189
198
  ufoName: ufoName,
190
199
  start: start,
@@ -195,7 +204,8 @@ var PostInteractionLog = exports.default = /*#__PURE__*/function () {
195
204
  routeName: routeName,
196
205
  type: type,
197
206
  experimentalTTAI: experimentalTTAI,
198
- experimentalVC90: experimentalVC90
207
+ experimentalVC90: experimentalVC90,
208
+ errors: errors
199
209
  };
200
210
  var timeout = ((_getConfig3 = (0, _config.getConfig)()) === null || _getConfig3 === void 0 ? void 0 : _getConfig3.timeWindowForLateMutationsInMilliseconds) || POST_INTERACTION_LOG_SEND_DEFAULT_TIMEOUT;
201
211
  this.sinkTimeoutId = window.setTimeout( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {
@@ -4,6 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
+ exports.VCObserverWrapper = void 0;
7
8
  exports.getVCObserver = getVCObserver;
8
9
  exports.isEnvironmentSupported = isEnvironmentSupported;
9
10
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
@@ -12,6 +13,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
12
13
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
14
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
14
15
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
16
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
15
17
  var _config = require("../config");
16
18
  var _noOpVcObserver = require("./no-op-vc-observer");
17
19
  var _vcObserver = require("./vc-observer");
@@ -19,70 +21,157 @@ var _vcObserverNew = _interopRequireDefault(require("./vc-observer-new"));
19
21
  var _process;
20
22
  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; }
21
23
  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; }
22
- var VCObserverWrapper = /*#__PURE__*/function () {
24
+ var VCObserverWrapper = exports.VCObserverWrapper = /*#__PURE__*/function () {
23
25
  function VCObserverWrapper() {
24
26
  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
25
27
  (0, _classCallCheck2.default)(this, VCObserverWrapper);
26
28
  this.newVCObserver = null;
27
- if ((0, _config.isVCRevisionEnabled)('fy25.03')) {
28
- this.newVCObserver = new _vcObserverNew.default({
29
- selectorConfig: opts.selectorConfig
30
- });
29
+ if ((0, _platformFeatureFlags.fg)('platform_ufo_vc_enable_revisions_by_experience')) {
30
+ this.oldVCObserver = null;
31
+ if ((0, _config.isVCRevisionEnabled)('fy25.03')) {
32
+ this.newVCObserver = new _vcObserverNew.default({
33
+ selectorConfig: opts.selectorConfig
34
+ });
35
+ }
36
+ if ((0, _config.isVCRevisionEnabled)('fy25.01') || (0, _config.isVCRevisionEnabled)('fy25.02')) {
37
+ this.oldVCObserver = new _vcObserver.VCObserver(opts);
38
+ }
39
+ } else {
40
+ if ((0, _config.isVCRevisionEnabled)('fy25.03')) {
41
+ this.newVCObserver = new _vcObserverNew.default({
42
+ selectorConfig: opts.selectorConfig
43
+ });
44
+ }
45
+ this.oldVCObserver = new _vcObserver.VCObserver(opts);
31
46
  }
32
- this.oldVCObserver = new _vcObserver.VCObserver(opts);
33
47
  }
34
48
  return (0, _createClass2.default)(VCObserverWrapper, [{
35
49
  key: "start",
36
- value: function start(startArg) {
37
- var _this$oldVCObserver, _this$newVCObserver;
38
- (_this$oldVCObserver = this.oldVCObserver) === null || _this$oldVCObserver === void 0 || _this$oldVCObserver.start(startArg);
39
- (_this$newVCObserver = this.newVCObserver) === null || _this$newVCObserver === void 0 || _this$newVCObserver.start({
40
- startTime: startArg.startTime
41
- });
50
+ value: function start(_ref) {
51
+ var startTime = _ref.startTime,
52
+ experienceKey = _ref.experienceKey;
53
+ if ((0, _platformFeatureFlags.fg)('platform_ufo_vc_enable_revisions_by_experience')) {
54
+ if ((0, _config.isVCRevisionEnabled)('fy25.01', experienceKey) || (0, _config.isVCRevisionEnabled)('fy25.02', experienceKey)) {
55
+ var _this$oldVCObserver;
56
+ (_this$oldVCObserver = this.oldVCObserver) === null || _this$oldVCObserver === void 0 || _this$oldVCObserver.start({
57
+ startTime: startTime
58
+ });
59
+ }
60
+ if ((0, _config.isVCRevisionEnabled)('fy25.03', experienceKey)) {
61
+ var _this$newVCObserver;
62
+ (_this$newVCObserver = this.newVCObserver) === null || _this$newVCObserver === void 0 || _this$newVCObserver.start({
63
+ startTime: startTime
64
+ });
65
+ }
66
+ } else {
67
+ var _this$oldVCObserver2, _this$newVCObserver2;
68
+ (_this$oldVCObserver2 = this.oldVCObserver) === null || _this$oldVCObserver2 === void 0 || _this$oldVCObserver2.start({
69
+ startTime: startTime
70
+ });
71
+ (_this$newVCObserver2 = this.newVCObserver) === null || _this$newVCObserver2 === void 0 || _this$newVCObserver2.start({
72
+ startTime: startTime
73
+ });
74
+ }
42
75
  }
43
76
  }, {
44
77
  key: "stop",
45
- value: function stop() {
46
- var _this$oldVCObserver2, _this$newVCObserver2;
47
- (_this$oldVCObserver2 = this.oldVCObserver) === null || _this$oldVCObserver2 === void 0 || _this$oldVCObserver2.stop();
48
- (_this$newVCObserver2 = this.newVCObserver) === null || _this$newVCObserver2 === void 0 || _this$newVCObserver2.stop();
78
+ value: function stop(experienceKey) {
79
+ if ((0, _platformFeatureFlags.fg)('platform_ufo_vc_enable_revisions_by_experience')) {
80
+ if ((0, _config.isVCRevisionEnabled)('fy25.01', experienceKey) || (0, _config.isVCRevisionEnabled)('fy25.02', experienceKey)) {
81
+ var _this$oldVCObserver3;
82
+ (_this$oldVCObserver3 = this.oldVCObserver) === null || _this$oldVCObserver3 === void 0 || _this$oldVCObserver3.stop();
83
+ }
84
+ if ((0, _config.isVCRevisionEnabled)('fy25.03', experienceKey)) {
85
+ var _this$newVCObserver3;
86
+ (_this$newVCObserver3 = this.newVCObserver) === null || _this$newVCObserver3 === void 0 || _this$newVCObserver3.stop();
87
+ }
88
+ } else {
89
+ var _this$oldVCObserver4, _this$newVCObserver4;
90
+ (_this$oldVCObserver4 = this.oldVCObserver) === null || _this$oldVCObserver4 === void 0 || _this$oldVCObserver4.stop();
91
+ (_this$newVCObserver4 = this.newVCObserver) === null || _this$newVCObserver4 === void 0 || _this$newVCObserver4.stop();
92
+ }
49
93
  }
50
94
  }, {
51
95
  key: "getVCRawData",
52
96
  value: function getVCRawData() {
53
- var _this$oldVCObserver$g, _this$oldVCObserver3;
54
- return (_this$oldVCObserver$g = (_this$oldVCObserver3 = this.oldVCObserver) === null || _this$oldVCObserver3 === void 0 ? void 0 : _this$oldVCObserver3.getVCRawData()) !== null && _this$oldVCObserver$g !== void 0 ? _this$oldVCObserver$g : null;
97
+ var _this$oldVCObserver$g, _this$oldVCObserver5;
98
+ return (_this$oldVCObserver$g = (_this$oldVCObserver5 = this.oldVCObserver) === null || _this$oldVCObserver5 === void 0 ? void 0 : _this$oldVCObserver5.getVCRawData()) !== null && _this$oldVCObserver$g !== void 0 ? _this$oldVCObserver$g : null;
55
99
  }
56
100
  }, {
57
101
  key: "getVCResult",
58
102
  value: function () {
59
103
  var _getVCResult = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(param) {
60
- var _this$oldVCObserver4, _this$newVCObserver3, _ref;
61
- var oldResult, newResult;
104
+ var _this$oldVCObserver6, _this$newVCObserver5, _ref2, experienceKey, v1v2Result, v3Result, _this$oldVCObserver7, _this$newVCObserver6, _ref3, oldResult, newResult;
62
105
  return _regenerator.default.wrap(function _callee$(_context) {
63
106
  while (1) switch (_context.prev = _context.next) {
64
107
  case 0:
65
- _context.next = 2;
66
- return (_this$oldVCObserver4 = this.oldVCObserver) === null || _this$oldVCObserver4 === void 0 ? void 0 : _this$oldVCObserver4.getVCResult(param);
67
- case 2:
68
- oldResult = _context.sent;
108
+ if (!(0, _platformFeatureFlags.fg)('platform_ufo_vc_enable_revisions_by_experience')) {
109
+ _context.next = 23;
110
+ break;
111
+ }
112
+ experienceKey = param.experienceKey;
113
+ if (!((0, _config.isVCRevisionEnabled)('fy25.01', experienceKey) || (0, _config.isVCRevisionEnabled)('fy25.02', experienceKey))) {
114
+ _context.next = 8;
115
+ break;
116
+ }
69
117
  _context.next = 5;
70
- return (_this$newVCObserver3 = this.newVCObserver) === null || _this$newVCObserver3 === void 0 ? void 0 : _this$newVCObserver3.getVCResult({
118
+ return (_this$oldVCObserver6 = this.oldVCObserver) === null || _this$oldVCObserver6 === void 0 ? void 0 : _this$oldVCObserver6.getVCResult(param);
119
+ case 5:
120
+ _context.t0 = _context.sent;
121
+ _context.next = 9;
122
+ break;
123
+ case 8:
124
+ _context.t0 = {};
125
+ case 9:
126
+ v1v2Result = _context.t0;
127
+ if (!(0, _config.isVCRevisionEnabled)('fy25.03', experienceKey)) {
128
+ _context.next = 16;
129
+ break;
130
+ }
131
+ _context.next = 13;
132
+ return (_this$newVCObserver5 = this.newVCObserver) === null || _this$newVCObserver5 === void 0 ? void 0 : _this$newVCObserver5.getVCResult({
71
133
  start: param.start,
72
134
  stop: param.stop
73
135
  });
74
- case 5:
136
+ case 13:
137
+ _context.t1 = _context.sent;
138
+ _context.next = 17;
139
+ break;
140
+ case 16:
141
+ _context.t1 = [];
142
+ case 17:
143
+ v3Result = _context.t1;
144
+ if (v3Result) {
145
+ _context.next = 20;
146
+ break;
147
+ }
148
+ return _context.abrupt("return", v1v2Result !== null && v1v2Result !== void 0 ? v1v2Result : {});
149
+ case 20:
150
+ return _context.abrupt("return", _objectSpread(_objectSpread({}, v1v2Result), {}, {
151
+ 'ufo:vc:rev': [].concat((0, _toConsumableArray2.default)((_ref2 = v1v2Result === null || v1v2Result === void 0 ? void 0 : v1v2Result['ufo:vc:rev']) !== null && _ref2 !== void 0 ? _ref2 : []), (0, _toConsumableArray2.default)(v3Result !== null && v3Result !== void 0 ? v3Result : []))
152
+ }));
153
+ case 23:
154
+ _context.next = 25;
155
+ return (_this$oldVCObserver7 = this.oldVCObserver) === null || _this$oldVCObserver7 === void 0 ? void 0 : _this$oldVCObserver7.getVCResult(param);
156
+ case 25:
157
+ oldResult = _context.sent;
158
+ _context.next = 28;
159
+ return (_this$newVCObserver6 = this.newVCObserver) === null || _this$newVCObserver6 === void 0 ? void 0 : _this$newVCObserver6.getVCResult({
160
+ start: param.start,
161
+ stop: param.stop
162
+ });
163
+ case 28:
75
164
  newResult = _context.sent;
76
165
  if (!(oldResult && !newResult)) {
77
- _context.next = 8;
166
+ _context.next = 31;
78
167
  break;
79
168
  }
80
169
  return _context.abrupt("return", oldResult);
81
- case 8:
170
+ case 31:
82
171
  return _context.abrupt("return", _objectSpread(_objectSpread({}, oldResult !== null && oldResult !== void 0 ? oldResult : {}), {}, {
83
- 'ufo:vc:rev': [].concat((0, _toConsumableArray2.default)((_ref = oldResult === null || oldResult === void 0 ? void 0 : oldResult['ufo:vc:rev']) !== null && _ref !== void 0 ? _ref : []), (0, _toConsumableArray2.default)(newResult !== null && newResult !== void 0 ? newResult : []))
172
+ 'ufo:vc:rev': [].concat((0, _toConsumableArray2.default)((_ref3 = oldResult === null || oldResult === void 0 ? void 0 : oldResult['ufo:vc:rev']) !== null && _ref3 !== void 0 ? _ref3 : []), (0, _toConsumableArray2.default)(newResult !== null && newResult !== void 0 ? newResult : []))
84
173
  }));
85
- case 9:
174
+ case 32:
86
175
  case "end":
87
176
  return _context.stop();
88
177
  }
@@ -96,20 +185,20 @@ var VCObserverWrapper = /*#__PURE__*/function () {
96
185
  }, {
97
186
  key: "setSSRElement",
98
187
  value: function setSSRElement(element) {
99
- var _this$oldVCObserver5;
100
- (_this$oldVCObserver5 = this.oldVCObserver) === null || _this$oldVCObserver5 === void 0 || _this$oldVCObserver5.setSSRElement(element);
188
+ var _this$oldVCObserver8;
189
+ (_this$oldVCObserver8 = this.oldVCObserver) === null || _this$oldVCObserver8 === void 0 || _this$oldVCObserver8.setSSRElement(element);
101
190
  }
102
191
  }, {
103
192
  key: "setReactRootRenderStart",
104
193
  value: function setReactRootRenderStart(startTime) {
105
- var _this$oldVCObserver6;
106
- (_this$oldVCObserver6 = this.oldVCObserver) === null || _this$oldVCObserver6 === void 0 || _this$oldVCObserver6.setReactRootRenderStart(startTime || performance.now());
194
+ var _this$oldVCObserver9;
195
+ (_this$oldVCObserver9 = this.oldVCObserver) === null || _this$oldVCObserver9 === void 0 || _this$oldVCObserver9.setReactRootRenderStart(startTime || performance.now());
107
196
  }
108
197
  }, {
109
198
  key: "setReactRootRenderStop",
110
199
  value: function setReactRootRenderStop(stopTime) {
111
- var _this$oldVCObserver7;
112
- (_this$oldVCObserver7 = this.oldVCObserver) === null || _this$oldVCObserver7 === void 0 || _this$oldVCObserver7.setReactRootRenderStop(stopTime || performance.now());
200
+ var _this$oldVCObserver10;
201
+ (_this$oldVCObserver10 = this.oldVCObserver) === null || _this$oldVCObserver10 === void 0 || _this$oldVCObserver10.setReactRootRenderStop(stopTime || performance.now());
113
202
  }
114
203
  }]);
115
204
  }(); // Some products set this variable to indicate it is running in SSR