@atlaskit/react-ufo 3.10.4 → 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 +8 -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/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/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/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-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/package.json +4 -1
package/dist/esm/config/index.js
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
2
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
+
import _typeof from "@babel/runtime/helpers/typeof";
|
|
4
|
+
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; }
|
|
5
|
+
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) { _defineProperty(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; }
|
|
6
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
1
7
|
var config;
|
|
2
8
|
var DEFAULT_TTVC_REVISION = 'fy25.02';
|
|
3
9
|
|
|
@@ -5,28 +11,66 @@ var DEFAULT_TTVC_REVISION = 'fy25.02';
|
|
|
5
11
|
// and they could delete empty members
|
|
6
12
|
|
|
7
13
|
export function setUFOConfig(newConfig) {
|
|
8
|
-
|
|
14
|
+
if (fg('platform_ufo_vc_enable_revisions_by_experience')) {
|
|
15
|
+
var _newConfig$vc;
|
|
16
|
+
// Handle edge cases with `enabledVCRevisions`
|
|
17
|
+
var _ref = (_newConfig$vc = newConfig === null || newConfig === void 0 ? void 0 : newConfig.vc) !== null && _newConfig$vc !== void 0 ? _newConfig$vc : {},
|
|
18
|
+
enabledVCRevisions = _ref.enabledVCRevisions;
|
|
19
|
+
if (_typeof(enabledVCRevisions === null || enabledVCRevisions === void 0 ? void 0 : enabledVCRevisions.byExperience) === 'object') {
|
|
20
|
+
config = _objectSpread(_objectSpread({}, newConfig), {}, {
|
|
21
|
+
vc: _objectSpread(_objectSpread({}, newConfig.vc), {}, {
|
|
22
|
+
enabledVCRevisions: {
|
|
23
|
+
// enforce axiom about `enabledVCRevisions.all` config
|
|
24
|
+
all: Array.from(new Set([DEFAULT_TTVC_REVISION].concat(_toConsumableArray(enabledVCRevisions === null || enabledVCRevisions === void 0 ? void 0 : enabledVCRevisions.all), _toConsumableArray(Object.values(enabledVCRevisions === null || enabledVCRevisions === void 0 ? void 0 : enabledVCRevisions.byExperience).flat())))),
|
|
25
|
+
byExperience: _objectSpread({}, enabledVCRevisions === null || enabledVCRevisions === void 0 ? void 0 : enabledVCRevisions.byExperience)
|
|
26
|
+
}
|
|
27
|
+
})
|
|
28
|
+
});
|
|
29
|
+
} else {
|
|
30
|
+
config = newConfig;
|
|
31
|
+
}
|
|
32
|
+
} else {
|
|
33
|
+
config = newConfig;
|
|
34
|
+
}
|
|
9
35
|
}
|
|
10
36
|
export function getConfig() {
|
|
11
37
|
return config;
|
|
12
38
|
}
|
|
39
|
+
var isValidConfigArray = function isValidConfigArray(array) {
|
|
40
|
+
return Array.isArray(array) && array.length > 0;
|
|
41
|
+
};
|
|
13
42
|
export function getEnabledVCRevisions() {
|
|
43
|
+
var experienceKey = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
14
44
|
try {
|
|
15
45
|
var _config$vc;
|
|
16
46
|
if (!config) {
|
|
17
47
|
return [];
|
|
18
48
|
}
|
|
19
49
|
if ((_config$vc = config.vc) !== null && _config$vc !== void 0 && _config$vc.enabled) {
|
|
20
|
-
var _config$vc2,
|
|
21
|
-
|
|
50
|
+
var _config$vc2, _enabledVCRevisions$b;
|
|
51
|
+
var _ref2 = (_config$vc2 = config.vc) !== null && _config$vc2 !== void 0 ? _config$vc2 : {},
|
|
52
|
+
enabledVCRevisions = _ref2.enabledVCRevisions;
|
|
53
|
+
if (isValidConfigArray(enabledVCRevisions === null || enabledVCRevisions === void 0 || (_enabledVCRevisions$b = enabledVCRevisions.byExperience) === null || _enabledVCRevisions$b === void 0 ? void 0 : _enabledVCRevisions$b[experienceKey]) && fg('platform_ufo_vc_enable_revisions_by_experience')) {
|
|
54
|
+
var _enabledVCRevisions$b2;
|
|
55
|
+
return (_enabledVCRevisions$b2 = enabledVCRevisions.byExperience) === null || _enabledVCRevisions$b2 === void 0 ? void 0 : _enabledVCRevisions$b2[experienceKey];
|
|
56
|
+
}
|
|
57
|
+
if (isValidConfigArray(enabledVCRevisions === null || enabledVCRevisions === void 0 ? void 0 : enabledVCRevisions.all)) {
|
|
58
|
+
return enabledVCRevisions.all;
|
|
59
|
+
}
|
|
60
|
+
return [DEFAULT_TTVC_REVISION];
|
|
22
61
|
}
|
|
23
62
|
return [];
|
|
24
63
|
} catch (_unused) {
|
|
25
64
|
return [];
|
|
26
65
|
}
|
|
27
66
|
}
|
|
28
|
-
export function isVCRevisionEnabled(revision) {
|
|
29
|
-
return getEnabledVCRevisions().includes(revision);
|
|
67
|
+
export function isVCRevisionEnabled(revision, experienceKey) {
|
|
68
|
+
return getEnabledVCRevisions(experienceKey).includes(revision);
|
|
69
|
+
}
|
|
70
|
+
export function getMostRecentVCRevision() {
|
|
71
|
+
var experienceKey = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
72
|
+
var enabledVCRevisions = getEnabledVCRevisions(experienceKey);
|
|
73
|
+
return enabledVCRevisions[enabledVCRevisions.length - 1];
|
|
30
74
|
}
|
|
31
75
|
export function getInteractionRate(name, interactionKind) {
|
|
32
76
|
try {
|
|
@@ -100,7 +100,8 @@ function _getExperimentalVCMetrics() {
|
|
|
100
100
|
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,
|
|
101
101
|
isEventAborted: !!interaction.abortReason,
|
|
102
102
|
prefix: prefix,
|
|
103
|
-
vc: interaction.vc
|
|
103
|
+
vc: interaction.vc,
|
|
104
|
+
experienceKey: interaction.ufoName
|
|
104
105
|
});
|
|
105
106
|
case 4:
|
|
106
107
|
result = _context.sent;
|
|
@@ -4,7 +4,7 @@ import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
|
4
4
|
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; }
|
|
5
5
|
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) { _defineProperty(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; }
|
|
6
6
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
7
|
-
import { getConfig, isVCRevisionEnabled } from '../../config';
|
|
7
|
+
import { getConfig, getMostRecentVCRevision, isVCRevisionEnabled } from '../../config';
|
|
8
8
|
import { postInteractionLog } from '../../interaction-metrics';
|
|
9
9
|
import { getVCObserver } from '../../vc';
|
|
10
10
|
import getInteractionStatus from './get-interaction-status';
|
|
@@ -16,7 +16,7 @@ function getVCMetrics(_x) {
|
|
|
16
16
|
function _getVCMetrics() {
|
|
17
17
|
_getVCMetrics = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(interaction) {
|
|
18
18
|
var _config$vc, _config$vc$ssrWhiteli, _interaction$apdex, _config$experimentalI;
|
|
19
|
-
var config, interactionStatus, pageVisibilityUpToTTAI, isSSREnabled, ssr, tti, prefix, result, _result$ufoVcRev, ttvcV2Revision, VC;
|
|
19
|
+
var config, interactionStatus, pageVisibilityUpToTTAI, shouldReportVCMetrics, isSSREnabled, ssr, tti, prefix, result, _result$ufoVcRev, mostRecentVCRevision, mostRecentVCRevisionPayload, _result$ufoVcRev2, ttvcV2Revision, VC;
|
|
20
20
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
21
21
|
while (1) switch (_context.prev = _context.next) {
|
|
22
22
|
case 0:
|
|
@@ -35,13 +35,14 @@ function _getVCMetrics() {
|
|
|
35
35
|
case 5:
|
|
36
36
|
interactionStatus = getInteractionStatus(interaction);
|
|
37
37
|
pageVisibilityUpToTTAI = getPageVisibilityUpToTTAI(interaction);
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
shouldReportVCMetrics = interactionStatus.originalInteractionStatus === 'SUCCEEDED' && pageVisibilityUpToTTAI === 'visible';
|
|
39
|
+
if (!(!shouldReportVCMetrics && fg('platform_ufo_no_vc_on_aborted'))) {
|
|
40
|
+
_context.next = 11;
|
|
40
41
|
break;
|
|
41
42
|
}
|
|
42
|
-
getVCObserver().stop();
|
|
43
|
+
getVCObserver().stop(interaction.ufoName);
|
|
43
44
|
return _context.abrupt("return", {});
|
|
44
|
-
case
|
|
45
|
+
case 11:
|
|
45
46
|
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));
|
|
46
47
|
ssr = interaction.type === 'page_load' && isSSREnabled ? {
|
|
47
48
|
ssr: getSSRDoneTimeValue(config)
|
|
@@ -49,56 +50,76 @@ function _getVCMetrics() {
|
|
|
49
50
|
postInteractionLog.setVCObserverSSRConfig(ssr);
|
|
50
51
|
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;
|
|
51
52
|
prefix = 'ufo';
|
|
52
|
-
_context.next =
|
|
53
|
+
_context.next = 18;
|
|
53
54
|
return getVCObserver().getVCResult(_objectSpread({
|
|
54
55
|
start: interaction.start,
|
|
55
56
|
stop: interaction.end,
|
|
56
57
|
tti: tti,
|
|
57
58
|
prefix: prefix,
|
|
58
59
|
vc: interaction.vc,
|
|
59
|
-
isEventAborted: interactionStatus.originalInteractionStatus !== 'SUCCEEDED'
|
|
60
|
+
isEventAborted: interactionStatus.originalInteractionStatus !== 'SUCCEEDED',
|
|
61
|
+
experienceKey: interaction.ufoName
|
|
60
62
|
}, ssr));
|
|
61
|
-
case
|
|
63
|
+
case 18:
|
|
62
64
|
result = _context.sent;
|
|
63
65
|
if ((_config$experimentalI = config.experimentalInteractionMetrics) !== null && _config$experimentalI !== void 0 && _config$experimentalI.enabled) {
|
|
64
|
-
getVCObserver().stop();
|
|
66
|
+
getVCObserver().stop(interaction.ufoName);
|
|
65
67
|
}
|
|
66
68
|
postInteractionLog.setLastInteractionFinishVCResult(result);
|
|
67
|
-
if (
|
|
68
|
-
_context.next =
|
|
69
|
+
if (!fg('platform_ufo_vc_enable_revisions_by_experience')) {
|
|
70
|
+
_context.next = 29;
|
|
69
71
|
break;
|
|
70
72
|
}
|
|
71
|
-
|
|
73
|
+
mostRecentVCRevision = getMostRecentVCRevision(interaction.ufoName);
|
|
74
|
+
mostRecentVCRevisionPayload = result === null || result === void 0 || (_result$ufoVcRev = result['ufo:vc:rev']) === null || _result$ufoVcRev === void 0 ? void 0 : _result$ufoVcRev.find(function (_ref) {
|
|
72
75
|
var revision = _ref.revision;
|
|
76
|
+
return revision === mostRecentVCRevision;
|
|
77
|
+
});
|
|
78
|
+
if (!(!shouldReportVCMetrics || !(mostRecentVCRevisionPayload !== null && mostRecentVCRevisionPayload !== void 0 && mostRecentVCRevisionPayload.clean))) {
|
|
79
|
+
_context.next = 26;
|
|
80
|
+
break;
|
|
81
|
+
}
|
|
82
|
+
return _context.abrupt("return", result);
|
|
83
|
+
case 26:
|
|
84
|
+
return _context.abrupt("return", _objectSpread(_objectSpread({}, result), {}, {
|
|
85
|
+
'metric:vc90': mostRecentVCRevisionPayload['metric:vc90']
|
|
86
|
+
}));
|
|
87
|
+
case 29:
|
|
88
|
+
if (isVCRevisionEnabled('fy25.01')) {
|
|
89
|
+
_context.next = 36;
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
ttvcV2Revision = result === null || result === void 0 || (_result$ufoVcRev2 = result['ufo:vc:rev']) === null || _result$ufoVcRev2 === void 0 ? void 0 : _result$ufoVcRev2.find(function (_ref2) {
|
|
93
|
+
var revision = _ref2.revision;
|
|
73
94
|
return revision === 'fy25.02';
|
|
74
95
|
});
|
|
75
96
|
if (ttvcV2Revision !== null && ttvcV2Revision !== void 0 && ttvcV2Revision.clean) {
|
|
76
|
-
_context.next =
|
|
97
|
+
_context.next = 33;
|
|
77
98
|
break;
|
|
78
99
|
}
|
|
79
100
|
return _context.abrupt("return", result);
|
|
80
|
-
case
|
|
101
|
+
case 33:
|
|
81
102
|
return _context.abrupt("return", _objectSpread(_objectSpread({}, result), {}, {
|
|
82
103
|
'metric:vc90': ttvcV2Revision['metric:vc90']
|
|
83
104
|
}));
|
|
84
|
-
case
|
|
105
|
+
case 36:
|
|
85
106
|
VC = result === null || result === void 0 ? void 0 : result['metrics:vc'];
|
|
86
107
|
if (!(!VC || !(result !== null && result !== void 0 && result["".concat(prefix, ":vc:clean")]))) {
|
|
87
|
-
_context.next =
|
|
108
|
+
_context.next = 39;
|
|
88
109
|
break;
|
|
89
110
|
}
|
|
90
111
|
return _context.abrupt("return", result);
|
|
91
|
-
case
|
|
112
|
+
case 39:
|
|
92
113
|
if (!(interactionStatus.originalInteractionStatus !== 'SUCCEEDED' || pageVisibilityUpToTTAI !== 'visible')) {
|
|
93
|
-
_context.next =
|
|
114
|
+
_context.next = 41;
|
|
94
115
|
break;
|
|
95
116
|
}
|
|
96
117
|
return _context.abrupt("return", result);
|
|
97
|
-
case
|
|
118
|
+
case 41:
|
|
98
119
|
return _context.abrupt("return", _objectSpread(_objectSpread({}, result), {}, {
|
|
99
120
|
'metric:vc90': VC['90']
|
|
100
121
|
}));
|
|
101
|
-
case
|
|
122
|
+
case 42:
|
|
102
123
|
case "end":
|
|
103
124
|
return _context.stop();
|
|
104
125
|
}
|
|
@@ -798,7 +798,8 @@ export function addNewInteraction(interactionId, ufoName, type, startTime, rate,
|
|
|
798
798
|
if (type === 'transition') {
|
|
799
799
|
var _getConfig14;
|
|
800
800
|
getVCObserver().start({
|
|
801
|
-
startTime: startTime
|
|
801
|
+
startTime: startTime,
|
|
802
|
+
experienceKey: ufoName
|
|
802
803
|
});
|
|
803
804
|
postInteractionLog.startVCObserver({
|
|
804
805
|
startTime: startTime
|
|
@@ -125,14 +125,16 @@ var PostInteractionLog = /*#__PURE__*/function () {
|
|
|
125
125
|
return _context.abrupt("return");
|
|
126
126
|
case 4:
|
|
127
127
|
_context.next = 6;
|
|
128
|
-
return (_this$vcObserver3 = this.vcObserver) === null || _this$vcObserver3 === void 0 ? void 0 : _this$vcObserver3.getVCResult(_objectSpread({
|
|
128
|
+
return (_this$vcObserver3 = this.vcObserver) === null || _this$vcObserver3 === void 0 ? void 0 : _this$vcObserver3.getVCResult(_objectSpread(_objectSpread({
|
|
129
129
|
start: this.lastInteractionFinish.start,
|
|
130
130
|
stop: performance.now(),
|
|
131
131
|
tti: -1,
|
|
132
132
|
// no need for TTI value here
|
|
133
133
|
isEventAborted: !!this.lastInteractionFinish.abortReason,
|
|
134
134
|
prefix: 'ufo'
|
|
135
|
-
}, this.vcObserverSSRConfig)
|
|
135
|
+
}, this.vcObserverSSRConfig), {}, {
|
|
136
|
+
experienceKey: this.lastInteractionFinish.ufoName
|
|
137
|
+
}));
|
|
136
138
|
case 6:
|
|
137
139
|
postInteractionFinishVCResult = _context.sent;
|
|
138
140
|
if ((_getConfig2 = getConfig()) !== null && _getConfig2 !== void 0 && (_getConfig2 = _getConfig2.experimentalInteractionMetrics) !== null && _getConfig2 !== void 0 && _getConfig2.enabled) {
|
package/dist/esm/vc/index.js
CHANGED
|
@@ -7,6 +7,7 @@ var _process;
|
|
|
7
7
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
8
8
|
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; }
|
|
9
9
|
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) { _defineProperty(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; }
|
|
10
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
10
11
|
import { isVCRevisionEnabled } from '../config';
|
|
11
12
|
import { VCObserverNOOP } from './no-op-vc-observer';
|
|
12
13
|
import { VCObserver } from './vc-observer';
|
|
@@ -16,65 +17,152 @@ var VCObserverWrapper = /*#__PURE__*/function () {
|
|
|
16
17
|
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
17
18
|
_classCallCheck(this, VCObserverWrapper);
|
|
18
19
|
this.newVCObserver = null;
|
|
19
|
-
if (
|
|
20
|
-
this.
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
if (fg('platform_ufo_vc_enable_revisions_by_experience')) {
|
|
21
|
+
this.oldVCObserver = null;
|
|
22
|
+
if (isVCRevisionEnabled('fy25.03')) {
|
|
23
|
+
this.newVCObserver = new VCObserverNew({
|
|
24
|
+
selectorConfig: opts.selectorConfig
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
if (isVCRevisionEnabled('fy25.01') || isVCRevisionEnabled('fy25.02')) {
|
|
28
|
+
this.oldVCObserver = new VCObserver(opts);
|
|
29
|
+
}
|
|
30
|
+
} else {
|
|
31
|
+
if (isVCRevisionEnabled('fy25.03')) {
|
|
32
|
+
this.newVCObserver = new VCObserverNew({
|
|
33
|
+
selectorConfig: opts.selectorConfig
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
this.oldVCObserver = new VCObserver(opts);
|
|
23
37
|
}
|
|
24
|
-
this.oldVCObserver = new VCObserver(opts);
|
|
25
38
|
}
|
|
26
39
|
return _createClass(VCObserverWrapper, [{
|
|
27
40
|
key: "start",
|
|
28
|
-
value: function start(
|
|
29
|
-
var
|
|
30
|
-
|
|
31
|
-
(
|
|
32
|
-
|
|
33
|
-
|
|
41
|
+
value: function start(_ref) {
|
|
42
|
+
var startTime = _ref.startTime,
|
|
43
|
+
experienceKey = _ref.experienceKey;
|
|
44
|
+
if (fg('platform_ufo_vc_enable_revisions_by_experience')) {
|
|
45
|
+
if (isVCRevisionEnabled('fy25.01', experienceKey) || isVCRevisionEnabled('fy25.02', experienceKey)) {
|
|
46
|
+
var _this$oldVCObserver;
|
|
47
|
+
(_this$oldVCObserver = this.oldVCObserver) === null || _this$oldVCObserver === void 0 || _this$oldVCObserver.start({
|
|
48
|
+
startTime: startTime
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
if (isVCRevisionEnabled('fy25.03', experienceKey)) {
|
|
52
|
+
var _this$newVCObserver;
|
|
53
|
+
(_this$newVCObserver = this.newVCObserver) === null || _this$newVCObserver === void 0 || _this$newVCObserver.start({
|
|
54
|
+
startTime: startTime
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
} else {
|
|
58
|
+
var _this$oldVCObserver2, _this$newVCObserver2;
|
|
59
|
+
(_this$oldVCObserver2 = this.oldVCObserver) === null || _this$oldVCObserver2 === void 0 || _this$oldVCObserver2.start({
|
|
60
|
+
startTime: startTime
|
|
61
|
+
});
|
|
62
|
+
(_this$newVCObserver2 = this.newVCObserver) === null || _this$newVCObserver2 === void 0 || _this$newVCObserver2.start({
|
|
63
|
+
startTime: startTime
|
|
64
|
+
});
|
|
65
|
+
}
|
|
34
66
|
}
|
|
35
67
|
}, {
|
|
36
68
|
key: "stop",
|
|
37
|
-
value: function stop() {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
69
|
+
value: function stop(experienceKey) {
|
|
70
|
+
if (fg('platform_ufo_vc_enable_revisions_by_experience')) {
|
|
71
|
+
if (isVCRevisionEnabled('fy25.01', experienceKey) || isVCRevisionEnabled('fy25.02', experienceKey)) {
|
|
72
|
+
var _this$oldVCObserver3;
|
|
73
|
+
(_this$oldVCObserver3 = this.oldVCObserver) === null || _this$oldVCObserver3 === void 0 || _this$oldVCObserver3.stop();
|
|
74
|
+
}
|
|
75
|
+
if (isVCRevisionEnabled('fy25.03', experienceKey)) {
|
|
76
|
+
var _this$newVCObserver3;
|
|
77
|
+
(_this$newVCObserver3 = this.newVCObserver) === null || _this$newVCObserver3 === void 0 || _this$newVCObserver3.stop();
|
|
78
|
+
}
|
|
79
|
+
} else {
|
|
80
|
+
var _this$oldVCObserver4, _this$newVCObserver4;
|
|
81
|
+
(_this$oldVCObserver4 = this.oldVCObserver) === null || _this$oldVCObserver4 === void 0 || _this$oldVCObserver4.stop();
|
|
82
|
+
(_this$newVCObserver4 = this.newVCObserver) === null || _this$newVCObserver4 === void 0 || _this$newVCObserver4.stop();
|
|
83
|
+
}
|
|
41
84
|
}
|
|
42
85
|
}, {
|
|
43
86
|
key: "getVCRawData",
|
|
44
87
|
value: function getVCRawData() {
|
|
45
|
-
var _this$oldVCObserver$g, _this$
|
|
46
|
-
return (_this$oldVCObserver$g = (_this$
|
|
88
|
+
var _this$oldVCObserver$g, _this$oldVCObserver5;
|
|
89
|
+
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;
|
|
47
90
|
}
|
|
48
91
|
}, {
|
|
49
92
|
key: "getVCResult",
|
|
50
93
|
value: function () {
|
|
51
94
|
var _getVCResult = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(param) {
|
|
52
|
-
var _this$
|
|
53
|
-
var oldResult, newResult;
|
|
95
|
+
var _this$oldVCObserver6, _this$newVCObserver5, _ref2, experienceKey, v1v2Result, v3Result, _this$oldVCObserver7, _this$newVCObserver6, _ref3, oldResult, newResult;
|
|
54
96
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
55
97
|
while (1) switch (_context.prev = _context.next) {
|
|
56
98
|
case 0:
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
99
|
+
if (!fg('platform_ufo_vc_enable_revisions_by_experience')) {
|
|
100
|
+
_context.next = 23;
|
|
101
|
+
break;
|
|
102
|
+
}
|
|
103
|
+
experienceKey = param.experienceKey;
|
|
104
|
+
if (!(isVCRevisionEnabled('fy25.01', experienceKey) || isVCRevisionEnabled('fy25.02', experienceKey))) {
|
|
105
|
+
_context.next = 8;
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
61
108
|
_context.next = 5;
|
|
62
|
-
return (_this$
|
|
109
|
+
return (_this$oldVCObserver6 = this.oldVCObserver) === null || _this$oldVCObserver6 === void 0 ? void 0 : _this$oldVCObserver6.getVCResult(param);
|
|
110
|
+
case 5:
|
|
111
|
+
_context.t0 = _context.sent;
|
|
112
|
+
_context.next = 9;
|
|
113
|
+
break;
|
|
114
|
+
case 8:
|
|
115
|
+
_context.t0 = {};
|
|
116
|
+
case 9:
|
|
117
|
+
v1v2Result = _context.t0;
|
|
118
|
+
if (!isVCRevisionEnabled('fy25.03', experienceKey)) {
|
|
119
|
+
_context.next = 16;
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
_context.next = 13;
|
|
123
|
+
return (_this$newVCObserver5 = this.newVCObserver) === null || _this$newVCObserver5 === void 0 ? void 0 : _this$newVCObserver5.getVCResult({
|
|
63
124
|
start: param.start,
|
|
64
125
|
stop: param.stop
|
|
65
126
|
});
|
|
66
|
-
case
|
|
127
|
+
case 13:
|
|
128
|
+
_context.t1 = _context.sent;
|
|
129
|
+
_context.next = 17;
|
|
130
|
+
break;
|
|
131
|
+
case 16:
|
|
132
|
+
_context.t1 = [];
|
|
133
|
+
case 17:
|
|
134
|
+
v3Result = _context.t1;
|
|
135
|
+
if (v3Result) {
|
|
136
|
+
_context.next = 20;
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
return _context.abrupt("return", v1v2Result !== null && v1v2Result !== void 0 ? v1v2Result : {});
|
|
140
|
+
case 20:
|
|
141
|
+
return _context.abrupt("return", _objectSpread(_objectSpread({}, v1v2Result), {}, {
|
|
142
|
+
'ufo:vc:rev': [].concat(_toConsumableArray((_ref2 = v1v2Result === null || v1v2Result === void 0 ? void 0 : v1v2Result['ufo:vc:rev']) !== null && _ref2 !== void 0 ? _ref2 : []), _toConsumableArray(v3Result !== null && v3Result !== void 0 ? v3Result : []))
|
|
143
|
+
}));
|
|
144
|
+
case 23:
|
|
145
|
+
_context.next = 25;
|
|
146
|
+
return (_this$oldVCObserver7 = this.oldVCObserver) === null || _this$oldVCObserver7 === void 0 ? void 0 : _this$oldVCObserver7.getVCResult(param);
|
|
147
|
+
case 25:
|
|
148
|
+
oldResult = _context.sent;
|
|
149
|
+
_context.next = 28;
|
|
150
|
+
return (_this$newVCObserver6 = this.newVCObserver) === null || _this$newVCObserver6 === void 0 ? void 0 : _this$newVCObserver6.getVCResult({
|
|
151
|
+
start: param.start,
|
|
152
|
+
stop: param.stop
|
|
153
|
+
});
|
|
154
|
+
case 28:
|
|
67
155
|
newResult = _context.sent;
|
|
68
156
|
if (!(oldResult && !newResult)) {
|
|
69
|
-
_context.next =
|
|
157
|
+
_context.next = 31;
|
|
70
158
|
break;
|
|
71
159
|
}
|
|
72
160
|
return _context.abrupt("return", oldResult);
|
|
73
|
-
case
|
|
161
|
+
case 31:
|
|
74
162
|
return _context.abrupt("return", _objectSpread(_objectSpread({}, oldResult !== null && oldResult !== void 0 ? oldResult : {}), {}, {
|
|
75
|
-
'ufo:vc:rev': [].concat(_toConsumableArray((
|
|
163
|
+
'ufo:vc:rev': [].concat(_toConsumableArray((_ref3 = oldResult === null || oldResult === void 0 ? void 0 : oldResult['ufo:vc:rev']) !== null && _ref3 !== void 0 ? _ref3 : []), _toConsumableArray(newResult !== null && newResult !== void 0 ? newResult : []))
|
|
76
164
|
}));
|
|
77
|
-
case
|
|
165
|
+
case 32:
|
|
78
166
|
case "end":
|
|
79
167
|
return _context.stop();
|
|
80
168
|
}
|
|
@@ -88,20 +176,20 @@ var VCObserverWrapper = /*#__PURE__*/function () {
|
|
|
88
176
|
}, {
|
|
89
177
|
key: "setSSRElement",
|
|
90
178
|
value: function setSSRElement(element) {
|
|
91
|
-
var _this$
|
|
92
|
-
(_this$
|
|
179
|
+
var _this$oldVCObserver8;
|
|
180
|
+
(_this$oldVCObserver8 = this.oldVCObserver) === null || _this$oldVCObserver8 === void 0 || _this$oldVCObserver8.setSSRElement(element);
|
|
93
181
|
}
|
|
94
182
|
}, {
|
|
95
183
|
key: "setReactRootRenderStart",
|
|
96
184
|
value: function setReactRootRenderStart(startTime) {
|
|
97
|
-
var _this$
|
|
98
|
-
(_this$
|
|
185
|
+
var _this$oldVCObserver9;
|
|
186
|
+
(_this$oldVCObserver9 = this.oldVCObserver) === null || _this$oldVCObserver9 === void 0 || _this$oldVCObserver9.setReactRootRenderStart(startTime || performance.now());
|
|
99
187
|
}
|
|
100
188
|
}, {
|
|
101
189
|
key: "setReactRootRenderStop",
|
|
102
190
|
value: function setReactRootRenderStop(stopTime) {
|
|
103
|
-
var _this$
|
|
104
|
-
(_this$
|
|
191
|
+
var _this$oldVCObserver10;
|
|
192
|
+
(_this$oldVCObserver10 = this.oldVCObserver) === null || _this$oldVCObserver10 === void 0 || _this$oldVCObserver10.setReactRootRenderStop(stopTime || performance.now());
|
|
105
193
|
}
|
|
106
194
|
}]);
|
|
107
195
|
}(); // Some products set this variable to indicate it is running in SSR
|
|
@@ -2,6 +2,7 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
|
2
2
|
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
|
|
3
3
|
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
4
4
|
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
5
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
5
6
|
import { isVCRevisionEnabled } from '../../config';
|
|
6
7
|
import { getPageVisibilityState } from '../../hidden-timing';
|
|
7
8
|
import { getRevisions } from './revisions/revisions';
|
|
@@ -24,7 +25,7 @@ function createVCDetails(calculatedVC, shouldHaveVCmetric) {
|
|
|
24
25
|
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
25
26
|
var key = _step.value;
|
|
26
27
|
details[key] = {
|
|
27
|
-
t: VC[key],
|
|
28
|
+
t: VC[key] || -1,
|
|
28
29
|
e: VCBox[key] || READONLY_EMPTY_ARRAY
|
|
29
30
|
};
|
|
30
31
|
}
|
|
@@ -45,8 +46,13 @@ export function getVCRevisionsData(_ref) {
|
|
|
45
46
|
multiHeatmap = _ref.multiHeatmap,
|
|
46
47
|
ssr = _ref.ssr,
|
|
47
48
|
calculatedVC = _ref.calculatedVC,
|
|
48
|
-
calculatedVCNext = _ref.calculatedVCNext
|
|
49
|
-
|
|
49
|
+
calculatedVCNext = _ref.calculatedVCNext,
|
|
50
|
+
experienceKey = _ref.experienceKey;
|
|
51
|
+
var isTTVCv3Enabled = fg('platform_ufo_vc_enable_revisions_by_experience') ? isVCRevisionEnabled('fy25.03', experienceKey) : isVCRevisionEnabled('fy25.03');
|
|
52
|
+
|
|
53
|
+
// As part of `platform_ufo_vc_enable_revisions_by_experience`, we are looking to turn off the `multiHeatmap` branch of code
|
|
54
|
+
// for calculating TTVC, and instead rely on existing values already available, e.g. `calculatedVC` and `calculatedVCNext`
|
|
55
|
+
if (!isTTVCv3Enabled && !fg('platform_ufo_vc_enable_revisions_by_experience')) {
|
|
50
56
|
if (!multiHeatmap) {
|
|
51
57
|
return null;
|
|
52
58
|
}
|
|
@@ -69,29 +75,48 @@ export function getVCRevisionsData(_ref) {
|
|
|
69
75
|
clean: isVCClean
|
|
70
76
|
}));
|
|
71
77
|
}
|
|
72
|
-
|
|
73
|
-
// Calculate these conditions once
|
|
74
78
|
var pageVisibilityUpToTTAI = getPageVisibilityState(interaction.start, interaction.end);
|
|
75
79
|
var isVisiblePageVisibleUpToTTAI = pageVisibilityUpToTTAI === 'visible';
|
|
76
80
|
var shouldHaveVCmetric = isVCClean && !isEventAborted && isVisiblePageVisibleUpToTTAI;
|
|
81
|
+
if (fg('platform_ufo_vc_enable_revisions_by_experience')) {
|
|
82
|
+
var availableVCRevisionPayloads = [];
|
|
83
|
+
if (isVCRevisionEnabled('fy25.01', experienceKey)) {
|
|
84
|
+
availableVCRevisionPayloads.push({
|
|
85
|
+
revision: 'fy25.01',
|
|
86
|
+
clean: isVCClean,
|
|
87
|
+
'metric:vc90': shouldHaveVCmetric ? calculatedVC.VC['90'] : null,
|
|
88
|
+
vcDetails: createVCDetails(calculatedVC, shouldHaveVCmetric)
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
if (isVCRevisionEnabled('fy25.02', experienceKey)) {
|
|
92
|
+
availableVCRevisionPayloads.push({
|
|
93
|
+
revision: 'fy25.02',
|
|
94
|
+
clean: isVCClean,
|
|
95
|
+
'metric:vc90': shouldHaveVCmetric ? calculatedVCNext.VC['90'] : null,
|
|
96
|
+
vcDetails: createVCDetails(calculatedVCNext, shouldHaveVCmetric)
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
return _defineProperty({}, "".concat(fullPrefix, "vc:rev"), availableVCRevisionPayloads);
|
|
100
|
+
} else {
|
|
101
|
+
// Create the V2 revision object which is always needed
|
|
102
|
+
var ttvcV2Revision = {
|
|
103
|
+
revision: 'fy25.02',
|
|
104
|
+
clean: isVCClean,
|
|
105
|
+
'metric:vc90': shouldHaveVCmetric ? calculatedVCNext.VC['90'] : null,
|
|
106
|
+
vcDetails: createVCDetails(calculatedVCNext, shouldHaveVCmetric)
|
|
107
|
+
};
|
|
108
|
+
var isTTVCv1Disabled = !isVCRevisionEnabled('fy25.01');
|
|
109
|
+
if (isTTVCv1Disabled) {
|
|
110
|
+
return _defineProperty({}, "".concat(fullPrefix, "vc:rev"), [ttvcV2Revision]);
|
|
111
|
+
}
|
|
77
112
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
return _defineProperty({}, "".concat(fullPrefix, "vc:rev"), [ttvcV2Revision]);
|
|
113
|
+
// Only create ttvcV1Revision when we're actually going to use it
|
|
114
|
+
var ttvcV1Revision = {
|
|
115
|
+
revision: 'fy25.01',
|
|
116
|
+
clean: isVCClean,
|
|
117
|
+
'metric:vc90': shouldHaveVCmetric ? calculatedVC.VC['90'] : null,
|
|
118
|
+
vcDetails: createVCDetails(calculatedVC, shouldHaveVCmetric)
|
|
119
|
+
};
|
|
120
|
+
return _defineProperty({}, "".concat(fullPrefix, "vc:rev"), [ttvcV1Revision, ttvcV2Revision]);
|
|
87
121
|
}
|
|
88
|
-
|
|
89
|
-
// Only create ttvcV1Revision when we're actually going to use it
|
|
90
|
-
var ttvcV1Revision = {
|
|
91
|
-
revision: 'fy25.01',
|
|
92
|
-
clean: isVCClean,
|
|
93
|
-
'metric:vc90': shouldHaveVCmetric ? calculatedVC.VC['90'] : null,
|
|
94
|
-
vcDetails: createVCDetails(calculatedVC, shouldHaveVCmetric)
|
|
95
|
-
};
|
|
96
|
-
return _defineProperty({}, "".concat(fullPrefix, "vc:rev"), [ttvcV1Revision, ttvcV2Revision]);
|
|
97
122
|
}
|