@atlaskit/react-ufo 3.10.3 → 3.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/dist/cjs/config/index.js +51 -5
- package/dist/cjs/create-experimental-interaction-metrics-payload/index.js +2 -1
- package/dist/cjs/create-payload/utils/get-vc-metrics.js +41 -20
- package/dist/cjs/interaction-metrics/index.js +2 -1
- package/dist/cjs/interaction-metrics/post-interaction-log.js +4 -2
- package/dist/cjs/vc/index.js +123 -35
- package/dist/cjs/vc/vc-observer/getVCRevisionsData.js +48 -23
- package/dist/cjs/vc/vc-observer/index.js +17 -6
- package/dist/cjs/vc/vc-observer-new/entries-timeline/index.js +1 -3
- package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +25 -7
- package/dist/cjs/vc/vc-observer-new/viewport-observer/index.js +136 -115
- package/dist/es2019/config/index.js +49 -6
- package/dist/es2019/create-experimental-interaction-metrics-payload/index.js +2 -1
- package/dist/es2019/create-payload/utils/get-vc-metrics.js +36 -19
- package/dist/es2019/interaction-metrics/index.js +2 -1
- package/dist/es2019/interaction-metrics/post-interaction-log.js +2 -1
- package/dist/es2019/vc/index.js +98 -35
- package/dist/es2019/vc/vc-observer/getVCRevisionsData.js +52 -25
- package/dist/es2019/vc/vc-observer/index.js +18 -6
- package/dist/es2019/vc/vc-observer-new/entries-timeline/index.js +1 -3
- package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +23 -7
- package/dist/es2019/vc/vc-observer-new/viewport-observer/index.js +122 -103
- package/dist/esm/config/index.js +49 -5
- package/dist/esm/create-experimental-interaction-metrics-payload/index.js +2 -1
- package/dist/esm/create-payload/utils/get-vc-metrics.js +42 -21
- package/dist/esm/interaction-metrics/index.js +2 -1
- package/dist/esm/interaction-metrics/post-interaction-log.js +4 -2
- package/dist/esm/vc/index.js +123 -35
- package/dist/esm/vc/vc-observer/getVCRevisionsData.js +48 -23
- package/dist/esm/vc/vc-observer/index.js +17 -6
- package/dist/esm/vc/vc-observer-new/entries-timeline/index.js +1 -3
- package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +25 -7
- package/dist/esm/vc/vc-observer-new/viewport-observer/index.js +136 -115
- package/dist/types/config/index.d.ts +14 -3
- package/dist/types/create-post-interaction-log-payload/index.d.ts +2 -2
- package/dist/types/vc/types.d.ts +3 -1
- package/dist/types/vc/vc-observer/getVCRevisionsData.d.ts +5 -3
- package/dist/types/vc/vc-observer/index.d.ts +1 -1
- package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.d.ts +8 -3
- package/dist/types/vc/vc-observer-new/viewport-observer/index.d.ts +8 -1
- package/dist/types-ts4.5/config/index.d.ts +14 -3
- package/dist/types-ts4.5/create-post-interaction-log-payload/index.d.ts +2 -2
- package/dist/types-ts4.5/vc/types.d.ts +3 -1
- package/dist/types-ts4.5/vc/vc-observer/getVCRevisionsData.d.ts +5 -3
- package/dist/types-ts4.5/vc/vc-observer/index.d.ts +1 -1
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.d.ts +8 -3
- package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/index.d.ts +8 -1
- package/package.json +7 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @atlaskit/ufo-interaction-ignore
|
|
2
2
|
|
|
3
|
+
## 3.11.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#152178](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/152178)
|
|
8
|
+
[`b61bda55f25b4`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/b61bda55f25b4) -
|
|
9
|
+
Enable TTVC revision logic by experience
|
|
10
|
+
|
|
11
|
+
## 3.10.4
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- [#152686](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/152686)
|
|
16
|
+
[`d4b943e998cff`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/d4b943e998cff) -
|
|
17
|
+
AFO-3823 improve VCObserverNew perf overhead
|
|
18
|
+
|
|
3
19
|
## 3.10.3
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
package/dist/cjs/config/index.js
CHANGED
|
@@ -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
|
-
|
|
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,
|
|
41
|
-
|
|
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
|
-
|
|
46
|
-
|
|
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
|
|
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 =
|
|
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
|
|
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,
|
|
75
|
-
_context.next =
|
|
76
|
+
if (!(0, _platformFeatureFlags.fg)('platform_ufo_vc_enable_revisions_by_experience')) {
|
|
77
|
+
_context.next = 29;
|
|
76
78
|
break;
|
|
77
79
|
}
|
|
78
|
-
|
|
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 =
|
|
104
|
+
_context.next = 33;
|
|
84
105
|
break;
|
|
85
106
|
}
|
|
86
107
|
return _context.abrupt("return", result);
|
|
87
|
-
case
|
|
108
|
+
case 33:
|
|
88
109
|
return _context.abrupt("return", _objectSpread(_objectSpread({}, result), {}, {
|
|
89
110
|
'metric:vc90': ttvcV2Revision['metric:vc90']
|
|
90
111
|
}));
|
|
91
|
-
case
|
|
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 =
|
|
115
|
+
_context.next = 39;
|
|
95
116
|
break;
|
|
96
117
|
}
|
|
97
118
|
return _context.abrupt("return", result);
|
|
98
|
-
case
|
|
119
|
+
case 39:
|
|
99
120
|
if (!(interactionStatus.originalInteractionStatus !== 'SUCCEEDED' || pageVisibilityUpToTTAI !== 'visible')) {
|
|
100
|
-
_context.next =
|
|
121
|
+
_context.next = 41;
|
|
101
122
|
break;
|
|
102
123
|
}
|
|
103
124
|
return _context.abrupt("return", result);
|
|
104
|
-
case
|
|
125
|
+
case 41:
|
|
105
126
|
return _context.abrupt("return", _objectSpread(_objectSpread({}, result), {}, {
|
|
106
127
|
'metric:vc90': VC['90']
|
|
107
128
|
}));
|
|
108
|
-
case
|
|
129
|
+
case 42:
|
|
109
130
|
case "end":
|
|
110
131
|
return _context.stop();
|
|
111
132
|
}
|
|
@@ -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
|
|
@@ -132,14 +132,16 @@ var PostInteractionLog = exports.default = /*#__PURE__*/function () {
|
|
|
132
132
|
return _context.abrupt("return");
|
|
133
133
|
case 4:
|
|
134
134
|
_context.next = 6;
|
|
135
|
-
return (_this$vcObserver3 = this.vcObserver) === null || _this$vcObserver3 === void 0 ? void 0 : _this$vcObserver3.getVCResult(_objectSpread({
|
|
135
|
+
return (_this$vcObserver3 = this.vcObserver) === null || _this$vcObserver3 === void 0 ? void 0 : _this$vcObserver3.getVCResult(_objectSpread(_objectSpread({
|
|
136
136
|
start: this.lastInteractionFinish.start,
|
|
137
137
|
stop: performance.now(),
|
|
138
138
|
tti: -1,
|
|
139
139
|
// no need for TTI value here
|
|
140
140
|
isEventAborted: !!this.lastInteractionFinish.abortReason,
|
|
141
141
|
prefix: 'ufo'
|
|
142
|
-
}, this.vcObserverSSRConfig)
|
|
142
|
+
}, this.vcObserverSSRConfig), {}, {
|
|
143
|
+
experienceKey: this.lastInteractionFinish.ufoName
|
|
144
|
+
}));
|
|
143
145
|
case 6:
|
|
144
146
|
postInteractionFinishVCResult = _context.sent;
|
|
145
147
|
if ((_getConfig2 = (0, _config.getConfig)()) !== null && _getConfig2 !== void 0 && (_getConfig2 = _getConfig2.experimentalInteractionMetrics) !== null && _getConfig2 !== void 0 && _getConfig2.enabled) {
|
package/dist/cjs/vc/index.js
CHANGED
|
@@ -12,6 +12,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
12
12
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
13
13
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
14
14
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
15
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
15
16
|
var _config = require("../config");
|
|
16
17
|
var _noOpVcObserver = require("./no-op-vc-observer");
|
|
17
18
|
var _vcObserver = require("./vc-observer");
|
|
@@ -24,65 +25,152 @@ var VCObserverWrapper = /*#__PURE__*/function () {
|
|
|
24
25
|
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
25
26
|
(0, _classCallCheck2.default)(this, VCObserverWrapper);
|
|
26
27
|
this.newVCObserver = null;
|
|
27
|
-
if ((0,
|
|
28
|
-
this.
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
if ((0, _platformFeatureFlags.fg)('platform_ufo_vc_enable_revisions_by_experience')) {
|
|
29
|
+
this.oldVCObserver = null;
|
|
30
|
+
if ((0, _config.isVCRevisionEnabled)('fy25.03')) {
|
|
31
|
+
this.newVCObserver = new _vcObserverNew.default({
|
|
32
|
+
selectorConfig: opts.selectorConfig
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
if ((0, _config.isVCRevisionEnabled)('fy25.01') || (0, _config.isVCRevisionEnabled)('fy25.02')) {
|
|
36
|
+
this.oldVCObserver = new _vcObserver.VCObserver(opts);
|
|
37
|
+
}
|
|
38
|
+
} else {
|
|
39
|
+
if ((0, _config.isVCRevisionEnabled)('fy25.03')) {
|
|
40
|
+
this.newVCObserver = new _vcObserverNew.default({
|
|
41
|
+
selectorConfig: opts.selectorConfig
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
this.oldVCObserver = new _vcObserver.VCObserver(opts);
|
|
31
45
|
}
|
|
32
|
-
this.oldVCObserver = new _vcObserver.VCObserver(opts);
|
|
33
46
|
}
|
|
34
47
|
return (0, _createClass2.default)(VCObserverWrapper, [{
|
|
35
48
|
key: "start",
|
|
36
|
-
value: function start(
|
|
37
|
-
var
|
|
38
|
-
|
|
39
|
-
(
|
|
40
|
-
|
|
41
|
-
|
|
49
|
+
value: function start(_ref) {
|
|
50
|
+
var startTime = _ref.startTime,
|
|
51
|
+
experienceKey = _ref.experienceKey;
|
|
52
|
+
if ((0, _platformFeatureFlags.fg)('platform_ufo_vc_enable_revisions_by_experience')) {
|
|
53
|
+
if ((0, _config.isVCRevisionEnabled)('fy25.01', experienceKey) || (0, _config.isVCRevisionEnabled)('fy25.02', experienceKey)) {
|
|
54
|
+
var _this$oldVCObserver;
|
|
55
|
+
(_this$oldVCObserver = this.oldVCObserver) === null || _this$oldVCObserver === void 0 || _this$oldVCObserver.start({
|
|
56
|
+
startTime: startTime
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
if ((0, _config.isVCRevisionEnabled)('fy25.03', experienceKey)) {
|
|
60
|
+
var _this$newVCObserver;
|
|
61
|
+
(_this$newVCObserver = this.newVCObserver) === null || _this$newVCObserver === void 0 || _this$newVCObserver.start({
|
|
62
|
+
startTime: startTime
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
} else {
|
|
66
|
+
var _this$oldVCObserver2, _this$newVCObserver2;
|
|
67
|
+
(_this$oldVCObserver2 = this.oldVCObserver) === null || _this$oldVCObserver2 === void 0 || _this$oldVCObserver2.start({
|
|
68
|
+
startTime: startTime
|
|
69
|
+
});
|
|
70
|
+
(_this$newVCObserver2 = this.newVCObserver) === null || _this$newVCObserver2 === void 0 || _this$newVCObserver2.start({
|
|
71
|
+
startTime: startTime
|
|
72
|
+
});
|
|
73
|
+
}
|
|
42
74
|
}
|
|
43
75
|
}, {
|
|
44
76
|
key: "stop",
|
|
45
|
-
value: function stop() {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
77
|
+
value: function stop(experienceKey) {
|
|
78
|
+
if ((0, _platformFeatureFlags.fg)('platform_ufo_vc_enable_revisions_by_experience')) {
|
|
79
|
+
if ((0, _config.isVCRevisionEnabled)('fy25.01', experienceKey) || (0, _config.isVCRevisionEnabled)('fy25.02', experienceKey)) {
|
|
80
|
+
var _this$oldVCObserver3;
|
|
81
|
+
(_this$oldVCObserver3 = this.oldVCObserver) === null || _this$oldVCObserver3 === void 0 || _this$oldVCObserver3.stop();
|
|
82
|
+
}
|
|
83
|
+
if ((0, _config.isVCRevisionEnabled)('fy25.03', experienceKey)) {
|
|
84
|
+
var _this$newVCObserver3;
|
|
85
|
+
(_this$newVCObserver3 = this.newVCObserver) === null || _this$newVCObserver3 === void 0 || _this$newVCObserver3.stop();
|
|
86
|
+
}
|
|
87
|
+
} else {
|
|
88
|
+
var _this$oldVCObserver4, _this$newVCObserver4;
|
|
89
|
+
(_this$oldVCObserver4 = this.oldVCObserver) === null || _this$oldVCObserver4 === void 0 || _this$oldVCObserver4.stop();
|
|
90
|
+
(_this$newVCObserver4 = this.newVCObserver) === null || _this$newVCObserver4 === void 0 || _this$newVCObserver4.stop();
|
|
91
|
+
}
|
|
49
92
|
}
|
|
50
93
|
}, {
|
|
51
94
|
key: "getVCRawData",
|
|
52
95
|
value: function getVCRawData() {
|
|
53
|
-
var _this$oldVCObserver$g, _this$
|
|
54
|
-
return (_this$oldVCObserver$g = (_this$
|
|
96
|
+
var _this$oldVCObserver$g, _this$oldVCObserver5;
|
|
97
|
+
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
98
|
}
|
|
56
99
|
}, {
|
|
57
100
|
key: "getVCResult",
|
|
58
101
|
value: function () {
|
|
59
102
|
var _getVCResult = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(param) {
|
|
60
|
-
var _this$
|
|
61
|
-
var oldResult, newResult;
|
|
103
|
+
var _this$oldVCObserver6, _this$newVCObserver5, _ref2, experienceKey, v1v2Result, v3Result, _this$oldVCObserver7, _this$newVCObserver6, _ref3, oldResult, newResult;
|
|
62
104
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
63
105
|
while (1) switch (_context.prev = _context.next) {
|
|
64
106
|
case 0:
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
107
|
+
if (!(0, _platformFeatureFlags.fg)('platform_ufo_vc_enable_revisions_by_experience')) {
|
|
108
|
+
_context.next = 23;
|
|
109
|
+
break;
|
|
110
|
+
}
|
|
111
|
+
experienceKey = param.experienceKey;
|
|
112
|
+
if (!((0, _config.isVCRevisionEnabled)('fy25.01', experienceKey) || (0, _config.isVCRevisionEnabled)('fy25.02', experienceKey))) {
|
|
113
|
+
_context.next = 8;
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
69
116
|
_context.next = 5;
|
|
70
|
-
return (_this$
|
|
117
|
+
return (_this$oldVCObserver6 = this.oldVCObserver) === null || _this$oldVCObserver6 === void 0 ? void 0 : _this$oldVCObserver6.getVCResult(param);
|
|
118
|
+
case 5:
|
|
119
|
+
_context.t0 = _context.sent;
|
|
120
|
+
_context.next = 9;
|
|
121
|
+
break;
|
|
122
|
+
case 8:
|
|
123
|
+
_context.t0 = {};
|
|
124
|
+
case 9:
|
|
125
|
+
v1v2Result = _context.t0;
|
|
126
|
+
if (!(0, _config.isVCRevisionEnabled)('fy25.03', experienceKey)) {
|
|
127
|
+
_context.next = 16;
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
_context.next = 13;
|
|
131
|
+
return (_this$newVCObserver5 = this.newVCObserver) === null || _this$newVCObserver5 === void 0 ? void 0 : _this$newVCObserver5.getVCResult({
|
|
71
132
|
start: param.start,
|
|
72
133
|
stop: param.stop
|
|
73
134
|
});
|
|
74
|
-
case
|
|
135
|
+
case 13:
|
|
136
|
+
_context.t1 = _context.sent;
|
|
137
|
+
_context.next = 17;
|
|
138
|
+
break;
|
|
139
|
+
case 16:
|
|
140
|
+
_context.t1 = [];
|
|
141
|
+
case 17:
|
|
142
|
+
v3Result = _context.t1;
|
|
143
|
+
if (v3Result) {
|
|
144
|
+
_context.next = 20;
|
|
145
|
+
break;
|
|
146
|
+
}
|
|
147
|
+
return _context.abrupt("return", v1v2Result !== null && v1v2Result !== void 0 ? v1v2Result : {});
|
|
148
|
+
case 20:
|
|
149
|
+
return _context.abrupt("return", _objectSpread(_objectSpread({}, v1v2Result), {}, {
|
|
150
|
+
'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 : []))
|
|
151
|
+
}));
|
|
152
|
+
case 23:
|
|
153
|
+
_context.next = 25;
|
|
154
|
+
return (_this$oldVCObserver7 = this.oldVCObserver) === null || _this$oldVCObserver7 === void 0 ? void 0 : _this$oldVCObserver7.getVCResult(param);
|
|
155
|
+
case 25:
|
|
156
|
+
oldResult = _context.sent;
|
|
157
|
+
_context.next = 28;
|
|
158
|
+
return (_this$newVCObserver6 = this.newVCObserver) === null || _this$newVCObserver6 === void 0 ? void 0 : _this$newVCObserver6.getVCResult({
|
|
159
|
+
start: param.start,
|
|
160
|
+
stop: param.stop
|
|
161
|
+
});
|
|
162
|
+
case 28:
|
|
75
163
|
newResult = _context.sent;
|
|
76
164
|
if (!(oldResult && !newResult)) {
|
|
77
|
-
_context.next =
|
|
165
|
+
_context.next = 31;
|
|
78
166
|
break;
|
|
79
167
|
}
|
|
80
168
|
return _context.abrupt("return", oldResult);
|
|
81
|
-
case
|
|
169
|
+
case 31:
|
|
82
170
|
return _context.abrupt("return", _objectSpread(_objectSpread({}, oldResult !== null && oldResult !== void 0 ? oldResult : {}), {}, {
|
|
83
|
-
'ufo:vc:rev': [].concat((0, _toConsumableArray2.default)((
|
|
171
|
+
'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
172
|
}));
|
|
85
|
-
case
|
|
173
|
+
case 32:
|
|
86
174
|
case "end":
|
|
87
175
|
return _context.stop();
|
|
88
176
|
}
|
|
@@ -96,20 +184,20 @@ var VCObserverWrapper = /*#__PURE__*/function () {
|
|
|
96
184
|
}, {
|
|
97
185
|
key: "setSSRElement",
|
|
98
186
|
value: function setSSRElement(element) {
|
|
99
|
-
var _this$
|
|
100
|
-
(_this$
|
|
187
|
+
var _this$oldVCObserver8;
|
|
188
|
+
(_this$oldVCObserver8 = this.oldVCObserver) === null || _this$oldVCObserver8 === void 0 || _this$oldVCObserver8.setSSRElement(element);
|
|
101
189
|
}
|
|
102
190
|
}, {
|
|
103
191
|
key: "setReactRootRenderStart",
|
|
104
192
|
value: function setReactRootRenderStart(startTime) {
|
|
105
|
-
var _this$
|
|
106
|
-
(_this$
|
|
193
|
+
var _this$oldVCObserver9;
|
|
194
|
+
(_this$oldVCObserver9 = this.oldVCObserver) === null || _this$oldVCObserver9 === void 0 || _this$oldVCObserver9.setReactRootRenderStart(startTime || performance.now());
|
|
107
195
|
}
|
|
108
196
|
}, {
|
|
109
197
|
key: "setReactRootRenderStop",
|
|
110
198
|
value: function setReactRootRenderStop(stopTime) {
|
|
111
|
-
var _this$
|
|
112
|
-
(_this$
|
|
199
|
+
var _this$oldVCObserver10;
|
|
200
|
+
(_this$oldVCObserver10 = this.oldVCObserver) === null || _this$oldVCObserver10 === void 0 || _this$oldVCObserver10.setReactRootRenderStop(stopTime || performance.now());
|
|
113
201
|
}
|
|
114
202
|
}]);
|
|
115
203
|
}(); // Some products set this variable to indicate it is running in SSR
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.getVCRevisionsData = getVCRevisionsData;
|
|
8
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
9
10
|
var _config = require("../../config");
|
|
10
11
|
var _hiddenTiming = require("../../hidden-timing");
|
|
11
12
|
var _revisions = require("./revisions/revisions");
|
|
@@ -31,7 +32,7 @@ function createVCDetails(calculatedVC, shouldHaveVCmetric) {
|
|
|
31
32
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
32
33
|
var key = _step.value;
|
|
33
34
|
details[key] = {
|
|
34
|
-
t: VC[key],
|
|
35
|
+
t: VC[key] || -1,
|
|
35
36
|
e: VCBox[key] || READONLY_EMPTY_ARRAY
|
|
36
37
|
};
|
|
37
38
|
}
|
|
@@ -52,8 +53,13 @@ function getVCRevisionsData(_ref) {
|
|
|
52
53
|
multiHeatmap = _ref.multiHeatmap,
|
|
53
54
|
ssr = _ref.ssr,
|
|
54
55
|
calculatedVC = _ref.calculatedVC,
|
|
55
|
-
calculatedVCNext = _ref.calculatedVCNext
|
|
56
|
-
|
|
56
|
+
calculatedVCNext = _ref.calculatedVCNext,
|
|
57
|
+
experienceKey = _ref.experienceKey;
|
|
58
|
+
var isTTVCv3Enabled = (0, _platformFeatureFlags.fg)('platform_ufo_vc_enable_revisions_by_experience') ? (0, _config.isVCRevisionEnabled)('fy25.03', experienceKey) : (0, _config.isVCRevisionEnabled)('fy25.03');
|
|
59
|
+
|
|
60
|
+
// As part of `platform_ufo_vc_enable_revisions_by_experience`, we are looking to turn off the `multiHeatmap` branch of code
|
|
61
|
+
// for calculating TTVC, and instead rely on existing values already available, e.g. `calculatedVC` and `calculatedVCNext`
|
|
62
|
+
if (!isTTVCv3Enabled && !(0, _platformFeatureFlags.fg)('platform_ufo_vc_enable_revisions_by_experience')) {
|
|
57
63
|
if (!multiHeatmap) {
|
|
58
64
|
return null;
|
|
59
65
|
}
|
|
@@ -76,29 +82,48 @@ function getVCRevisionsData(_ref) {
|
|
|
76
82
|
clean: isVCClean
|
|
77
83
|
}));
|
|
78
84
|
}
|
|
79
|
-
|
|
80
|
-
// Calculate these conditions once
|
|
81
85
|
var pageVisibilityUpToTTAI = (0, _hiddenTiming.getPageVisibilityState)(interaction.start, interaction.end);
|
|
82
86
|
var isVisiblePageVisibleUpToTTAI = pageVisibilityUpToTTAI === 'visible';
|
|
83
87
|
var shouldHaveVCmetric = isVCClean && !isEventAborted && isVisiblePageVisibleUpToTTAI;
|
|
88
|
+
if ((0, _platformFeatureFlags.fg)('platform_ufo_vc_enable_revisions_by_experience')) {
|
|
89
|
+
var availableVCRevisionPayloads = [];
|
|
90
|
+
if ((0, _config.isVCRevisionEnabled)('fy25.01', experienceKey)) {
|
|
91
|
+
availableVCRevisionPayloads.push({
|
|
92
|
+
revision: 'fy25.01',
|
|
93
|
+
clean: isVCClean,
|
|
94
|
+
'metric:vc90': shouldHaveVCmetric ? calculatedVC.VC['90'] : null,
|
|
95
|
+
vcDetails: createVCDetails(calculatedVC, shouldHaveVCmetric)
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
if ((0, _config.isVCRevisionEnabled)('fy25.02', experienceKey)) {
|
|
99
|
+
availableVCRevisionPayloads.push({
|
|
100
|
+
revision: 'fy25.02',
|
|
101
|
+
clean: isVCClean,
|
|
102
|
+
'metric:vc90': shouldHaveVCmetric ? calculatedVCNext.VC['90'] : null,
|
|
103
|
+
vcDetails: createVCDetails(calculatedVCNext, shouldHaveVCmetric)
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
return (0, _defineProperty2.default)({}, "".concat(fullPrefix, "vc:rev"), availableVCRevisionPayloads);
|
|
107
|
+
} else {
|
|
108
|
+
// Create the V2 revision object which is always needed
|
|
109
|
+
var ttvcV2Revision = {
|
|
110
|
+
revision: 'fy25.02',
|
|
111
|
+
clean: isVCClean,
|
|
112
|
+
'metric:vc90': shouldHaveVCmetric ? calculatedVCNext.VC['90'] : null,
|
|
113
|
+
vcDetails: createVCDetails(calculatedVCNext, shouldHaveVCmetric)
|
|
114
|
+
};
|
|
115
|
+
var isTTVCv1Disabled = !(0, _config.isVCRevisionEnabled)('fy25.01');
|
|
116
|
+
if (isTTVCv1Disabled) {
|
|
117
|
+
return (0, _defineProperty2.default)({}, "".concat(fullPrefix, "vc:rev"), [ttvcV2Revision]);
|
|
118
|
+
}
|
|
84
119
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
return (0, _defineProperty2.default)({}, "".concat(fullPrefix, "vc:rev"), [ttvcV2Revision]);
|
|
120
|
+
// Only create ttvcV1Revision when we're actually going to use it
|
|
121
|
+
var ttvcV1Revision = {
|
|
122
|
+
revision: 'fy25.01',
|
|
123
|
+
clean: isVCClean,
|
|
124
|
+
'metric:vc90': shouldHaveVCmetric ? calculatedVC.VC['90'] : null,
|
|
125
|
+
vcDetails: createVCDetails(calculatedVC, shouldHaveVCmetric)
|
|
126
|
+
};
|
|
127
|
+
return (0, _defineProperty2.default)({}, "".concat(fullPrefix, "vc:rev"), [ttvcV1Revision, ttvcV2Revision]);
|
|
94
128
|
}
|
|
95
|
-
|
|
96
|
-
// Only create ttvcV1Revision when we're actually going to use it
|
|
97
|
-
var ttvcV1Revision = {
|
|
98
|
-
revision: 'fy25.01',
|
|
99
|
-
clean: isVCClean,
|
|
100
|
-
'metric:vc90': shouldHaveVCmetric ? calculatedVC.VC['90'] : null,
|
|
101
|
-
vcDetails: createVCDetails(calculatedVC, shouldHaveVCmetric)
|
|
102
|
-
};
|
|
103
|
-
return (0, _defineProperty2.default)({}, "".concat(fullPrefix, "vc:rev"), [ttvcV1Revision, ttvcV2Revision]);
|
|
104
129
|
}
|