@atlaskit/react-ufo 2.4.5 → 2.4.7
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 +25 -0
- package/create-experimental-interaction-metrics-payload/package.json +15 -0
- package/dist/cjs/config/index.js +40 -18
- package/dist/cjs/create-experimental-interaction-metrics-payload/index.js +89 -0
- package/dist/cjs/create-payload/common/utils/index.js +85 -1
- package/dist/cjs/create-payload/index.js +49 -85
- package/dist/cjs/create-post-interaction-log-payload/index.js +1 -4
- package/dist/cjs/interaction-metrics/common/constants.js +7 -1
- package/dist/cjs/interaction-metrics/common/index.js +151 -0
- package/dist/cjs/interaction-metrics/index.js +139 -204
- package/dist/cjs/interaction-metrics/post-interaction-log.js +6 -2
- package/dist/cjs/interaction-metrics-init/index.js +27 -9
- package/dist/cjs/load-hold/UFOLoadHold.js +3 -4
- package/dist/cjs/segment/segment.js +7 -9
- package/dist/cjs/trace-pageload/index.js +2 -1
- package/dist/cjs/vc/vc-observer/observers/index.js +1 -40
- package/dist/es2019/config/index.js +22 -0
- package/dist/es2019/create-experimental-interaction-metrics-payload/index.js +67 -0
- package/dist/es2019/create-payload/common/utils/index.js +86 -1
- package/dist/es2019/create-payload/index.js +40 -81
- package/dist/es2019/create-post-interaction-log-payload/index.js +1 -4
- package/dist/es2019/interaction-metrics/common/constants.js +6 -0
- package/dist/es2019/interaction-metrics/common/index.js +103 -0
- package/dist/es2019/interaction-metrics/index.js +92 -129
- package/dist/es2019/interaction-metrics/post-interaction-log.js +6 -2
- package/dist/es2019/interaction-metrics-init/index.js +21 -8
- package/dist/es2019/load-hold/UFOLoadHold.js +3 -4
- package/dist/es2019/segment/segment.js +6 -12
- package/dist/es2019/trace-pageload/index.js +1 -1
- package/dist/es2019/vc/vc-observer/observers/index.js +1 -20
- package/dist/esm/config/index.js +39 -18
- package/dist/esm/create-experimental-interaction-metrics-payload/index.js +81 -0
- package/dist/esm/create-payload/common/utils/index.js +80 -1
- package/dist/esm/create-payload/index.js +45 -83
- package/dist/esm/create-post-interaction-log-payload/index.js +1 -4
- package/dist/esm/interaction-metrics/common/constants.js +6 -0
- package/dist/esm/interaction-metrics/common/index.js +132 -0
- package/dist/esm/interaction-metrics/index.js +87 -156
- package/dist/esm/interaction-metrics/post-interaction-log.js +6 -2
- package/dist/esm/interaction-metrics-init/index.js +24 -10
- package/dist/esm/load-hold/UFOLoadHold.js +3 -4
- package/dist/esm/segment/segment.js +7 -9
- package/dist/esm/trace-pageload/index.js +1 -1
- package/dist/esm/vc/vc-observer/observers/index.js +1 -40
- package/dist/types/common/common/types.d.ts +9 -5
- package/dist/types/config/index.d.ts +6 -0
- package/dist/types/create-experimental-interaction-metrics-payload/index.d.ts +31 -0
- package/dist/types/create-payload/common/utils/index.d.ts +12 -0
- package/dist/types/create-payload/index.d.ts +13 -5716
- package/dist/types/create-post-interaction-log-payload/index.d.ts +2 -0
- package/dist/types/interaction-metrics/common/constants.d.ts +31 -1
- package/dist/types/interaction-metrics/common/index.d.ts +16 -0
- package/dist/types/interaction-metrics/index.d.ts +4 -15
- package/dist/types/interaction-metrics/post-interaction-log.d.ts +1 -1
- package/dist/types/load-hold/UFOLoadHold.d.ts +1 -2
- package/dist/types/trace-pageload/index.d.ts +1 -0
- package/dist/types/vc/vc-observer/observers/index.d.ts +0 -1
- package/dist/types-ts4.5/common/common/types.d.ts +9 -5
- package/dist/types-ts4.5/config/index.d.ts +6 -0
- package/dist/types-ts4.5/create-experimental-interaction-metrics-payload/index.d.ts +31 -0
- package/dist/types-ts4.5/create-payload/common/utils/index.d.ts +12 -0
- package/dist/types-ts4.5/create-payload/index.d.ts +13 -5716
- package/dist/types-ts4.5/create-post-interaction-log-payload/index.d.ts +2 -0
- package/dist/types-ts4.5/interaction-metrics/common/constants.d.ts +31 -1
- package/dist/types-ts4.5/interaction-metrics/common/index.d.ts +16 -0
- package/dist/types-ts4.5/interaction-metrics/index.d.ts +4 -15
- package/dist/types-ts4.5/interaction-metrics/post-interaction-log.d.ts +1 -1
- package/dist/types-ts4.5/load-hold/UFOLoadHold.d.ts +1 -2
- package/dist/types-ts4.5/trace-pageload/index.d.ts +1 -0
- package/dist/types-ts4.5/vc/vc-observer/observers/index.d.ts +0 -1
- package/package.json +2 -1
package/dist/esm/config/index.js
CHANGED
|
@@ -64,13 +64,34 @@ export function getInteractionRate(name, interactionKind) {
|
|
|
64
64
|
return 0;
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
|
-
export function
|
|
67
|
+
export function getExperimentalInteractionRate(name, interactionType) {
|
|
68
68
|
try {
|
|
69
69
|
if (!config) {
|
|
70
70
|
return 0;
|
|
71
71
|
}
|
|
72
72
|
var _config2 = config,
|
|
73
|
-
|
|
73
|
+
experimentalInteractionMetrics = _config2.experimentalInteractionMetrics;
|
|
74
|
+
if (!(experimentalInteractionMetrics !== null && experimentalInteractionMetrics !== void 0 && experimentalInteractionMetrics.enabled)) {
|
|
75
|
+
return 0;
|
|
76
|
+
}
|
|
77
|
+
if (experimentalInteractionMetrics.rates && typeof experimentalInteractionMetrics.rates[name] === 'number') {
|
|
78
|
+
return experimentalInteractionMetrics.rates[name];
|
|
79
|
+
}
|
|
80
|
+
if (experimentalInteractionMetrics.kind && typeof experimentalInteractionMetrics.kind[interactionType] === 'number') {
|
|
81
|
+
return experimentalInteractionMetrics.kind[interactionType];
|
|
82
|
+
}
|
|
83
|
+
return 0;
|
|
84
|
+
} catch (e) {
|
|
85
|
+
return 0;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
export function getPostInteractionRate(name, interactionType) {
|
|
89
|
+
try {
|
|
90
|
+
if (!config) {
|
|
91
|
+
return 0;
|
|
92
|
+
}
|
|
93
|
+
var _config3 = config,
|
|
94
|
+
postInteractionLog = _config3.postInteractionLog;
|
|
74
95
|
if (!(postInteractionLog !== null && postInteractionLog !== void 0 && postInteractionLog.enabled)) {
|
|
75
96
|
return 0;
|
|
76
97
|
}
|
|
@@ -90,8 +111,8 @@ export function getCapabilityRate(capability) {
|
|
|
90
111
|
if (!config) {
|
|
91
112
|
return 0;
|
|
92
113
|
}
|
|
93
|
-
var
|
|
94
|
-
capabilityRate =
|
|
114
|
+
var _config4 = config,
|
|
115
|
+
capabilityRate = _config4.capability;
|
|
95
116
|
if (capabilityRate != null) {
|
|
96
117
|
var rate = capabilityRate[capability];
|
|
97
118
|
if (rate != null) {
|
|
@@ -110,8 +131,8 @@ export function getTypingPerformanceTracingMethod() {
|
|
|
110
131
|
if (!config) {
|
|
111
132
|
return defaultMethod;
|
|
112
133
|
}
|
|
113
|
-
var
|
|
114
|
-
typingMethod =
|
|
134
|
+
var _config5 = config,
|
|
135
|
+
typingMethod = _config5.typingMethod;
|
|
115
136
|
if (typingMethod != null && validTypingMethods.find(function (m) {
|
|
116
137
|
return m === typingMethod;
|
|
117
138
|
})) {
|
|
@@ -130,8 +151,8 @@ export function getAwaitBM3TTIList() {
|
|
|
130
151
|
if (!config) {
|
|
131
152
|
return [];
|
|
132
153
|
}
|
|
133
|
-
var
|
|
134
|
-
awaitBM3TTI =
|
|
154
|
+
var _config6 = config,
|
|
155
|
+
awaitBM3TTI = _config6.awaitBM3TTI;
|
|
135
156
|
if (awaitBM3TTI != null) {
|
|
136
157
|
return awaitBM3TTI;
|
|
137
158
|
} else {
|
|
@@ -148,8 +169,8 @@ export function getRemovePageSegmentsUFOPrefixes() {
|
|
|
148
169
|
if (!config) {
|
|
149
170
|
return false;
|
|
150
171
|
}
|
|
151
|
-
var
|
|
152
|
-
removePageSegmentsUFOPrefixes =
|
|
172
|
+
var _config7 = config,
|
|
173
|
+
removePageSegmentsUFOPrefixes = _config7.removePageSegmentsUFOPrefixes;
|
|
153
174
|
if (removePageSegmentsUFOPrefixes != null) {
|
|
154
175
|
return removePageSegmentsUFOPrefixes;
|
|
155
176
|
} else {
|
|
@@ -166,8 +187,8 @@ export function getRemoveInteractionsUFOPrefixes() {
|
|
|
166
187
|
if (!config) {
|
|
167
188
|
return false;
|
|
168
189
|
}
|
|
169
|
-
var
|
|
170
|
-
removeInteractionsUFOPrefixes =
|
|
190
|
+
var _config8 = config,
|
|
191
|
+
removeInteractionsUFOPrefixes = _config8.removeInteractionsUFOPrefixes;
|
|
171
192
|
if (removeInteractionsUFOPrefixes != null) {
|
|
172
193
|
return removeInteractionsUFOPrefixes;
|
|
173
194
|
} else {
|
|
@@ -187,8 +208,8 @@ export function getUfoNameOverrides() {
|
|
|
187
208
|
if (!config) {
|
|
188
209
|
return undefined;
|
|
189
210
|
}
|
|
190
|
-
var
|
|
191
|
-
ufoNameOverrides =
|
|
211
|
+
var _config9 = config,
|
|
212
|
+
ufoNameOverrides = _config9.ufoNameOverrides;
|
|
192
213
|
if (ufoNameOverrides != null) {
|
|
193
214
|
return ufoNameOverrides;
|
|
194
215
|
}
|
|
@@ -204,8 +225,8 @@ export function getDoNotAbortActivePressInteraction() {
|
|
|
204
225
|
if (!config) {
|
|
205
226
|
return undefined;
|
|
206
227
|
}
|
|
207
|
-
var
|
|
208
|
-
doNotAbortActivePressInteraction =
|
|
228
|
+
var _config10 = config,
|
|
229
|
+
doNotAbortActivePressInteraction = _config10.doNotAbortActivePressInteraction;
|
|
209
230
|
return doNotAbortActivePressInteraction;
|
|
210
231
|
} catch (e) {
|
|
211
232
|
return undefined;
|
|
@@ -218,8 +239,8 @@ export function getDoNotAbortActivePressInteractionOnTransition() {
|
|
|
218
239
|
if (!config) {
|
|
219
240
|
return undefined;
|
|
220
241
|
}
|
|
221
|
-
var
|
|
222
|
-
doNotAbortActivePressInteractionOnTransition =
|
|
242
|
+
var _config11 = config,
|
|
243
|
+
doNotAbortActivePressInteractionOnTransition = _config11.doNotAbortActivePressInteractionOnTransition;
|
|
223
244
|
return doNotAbortActivePressInteractionOnTransition;
|
|
224
245
|
} catch (e) {
|
|
225
246
|
return undefined;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
|
2
|
+
import _createClass from "@babel/runtime/helpers/createClass";
|
|
3
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
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 coinflip from '../coinflip';
|
|
7
|
+
import { getConfig, getExperimentalInteractionRate } from '../config';
|
|
8
|
+
import { createInteractionMetricsPayload, getUfoNameOverride } from '../create-payload';
|
|
9
|
+
import { getPageVisibilityState } from '../hidden-timing';
|
|
10
|
+
import { VCObserver } from '../vc/vc-observer';
|
|
11
|
+
export var ExperimentalInteractionMetrics = /*#__PURE__*/function () {
|
|
12
|
+
function ExperimentalInteractionMetrics() {
|
|
13
|
+
_classCallCheck(this, ExperimentalInteractionMetrics);
|
|
14
|
+
/**
|
|
15
|
+
* Handler function to process / send the observation data
|
|
16
|
+
*/
|
|
17
|
+
_defineProperty(this, "sinkHandlerFn", function () {});
|
|
18
|
+
/**
|
|
19
|
+
* independent VC observer that observes until `custom.post-interaction-logs` event is sent
|
|
20
|
+
*/
|
|
21
|
+
_defineProperty(this, "vcObserver", null);
|
|
22
|
+
}
|
|
23
|
+
_createClass(ExperimentalInteractionMetrics, [{
|
|
24
|
+
key: "sinkHandler",
|
|
25
|
+
value:
|
|
26
|
+
/**
|
|
27
|
+
* Set the fn that would be invoked to process / send the observation data
|
|
28
|
+
*/
|
|
29
|
+
function sinkHandler(sinkHandlerFn) {
|
|
30
|
+
this.sinkHandlerFn = sinkHandlerFn;
|
|
31
|
+
}
|
|
32
|
+
}, {
|
|
33
|
+
key: "onInteractionComplete",
|
|
34
|
+
value: function onInteractionComplete(interactionId, data) {
|
|
35
|
+
var endTime = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : performance.now();
|
|
36
|
+
if (data.ufoName) {
|
|
37
|
+
data.end = endTime;
|
|
38
|
+
this.sinkHandlerFn(interactionId, data);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}, {
|
|
42
|
+
key: "initializeVCObserver",
|
|
43
|
+
value: function initializeVCObserver(options) {
|
|
44
|
+
if (this.vcObserver === null) {
|
|
45
|
+
this.vcObserver = new VCObserver(_objectSpread(_objectSpread({}, options), {}, {
|
|
46
|
+
isPostInteraction: true
|
|
47
|
+
}));
|
|
48
|
+
}
|
|
49
|
+
return this;
|
|
50
|
+
}
|
|
51
|
+
}, {
|
|
52
|
+
key: "startVCObserver",
|
|
53
|
+
value: function startVCObserver(_ref) {
|
|
54
|
+
var _this$vcObserver;
|
|
55
|
+
var startTime = _ref.startTime;
|
|
56
|
+
(_this$vcObserver = this.vcObserver) === null || _this$vcObserver === void 0 || _this$vcObserver.start({
|
|
57
|
+
startTime: startTime
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}]);
|
|
61
|
+
return ExperimentalInteractionMetrics;
|
|
62
|
+
}();
|
|
63
|
+
export function createExperimentalInteractionMetricsPayload(interactionId, interaction) {
|
|
64
|
+
var config = getConfig();
|
|
65
|
+
if (!config) {
|
|
66
|
+
throw Error('UFO Configuration not provided');
|
|
67
|
+
}
|
|
68
|
+
var ufoName = getUfoNameOverride(interaction);
|
|
69
|
+
var modifiedInteraction = _objectSpread(_objectSpread({}, interaction), {}, {
|
|
70
|
+
ufoName: ufoName
|
|
71
|
+
});
|
|
72
|
+
var rate = getExperimentalInteractionRate(ufoName, interaction.type);
|
|
73
|
+
if (!coinflip(rate)) {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
var pageVisibilityState = getPageVisibilityState(interaction.start, interaction.end);
|
|
77
|
+
if (pageVisibilityState !== 'visible') {
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
return createInteractionMetricsPayload(modifiedInteraction, interactionId, true);
|
|
81
|
+
}
|
|
@@ -2,7 +2,13 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
|
2
2
|
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; }
|
|
3
3
|
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; }
|
|
4
4
|
/* eslint-disable @typescript-eslint/no-non-null-asserted-optional-chain */
|
|
5
|
+
|
|
5
6
|
import { REACT_UFO_VERSION } from '../../../common/constants';
|
|
7
|
+
import { getConfig } from '../../../config';
|
|
8
|
+
import { getPageVisibilityState } from '../../../hidden-timing';
|
|
9
|
+
import { experimentalInteractionLog, postInteractionLog } from '../../../interaction-metrics';
|
|
10
|
+
import * as ssr from '../../../ssr';
|
|
11
|
+
import { getVCObserver } from '../../../vc';
|
|
6
12
|
export var sanitizeUfoName = function sanitizeUfoName(name) {
|
|
7
13
|
return name.replace(/_/g, '-');
|
|
8
14
|
};
|
|
@@ -59,4 +65,77 @@ export function optimizeLabelStack(labelStack) {
|
|
|
59
65
|
s: ls.segmentId
|
|
60
66
|
} : {});
|
|
61
67
|
});
|
|
62
|
-
}
|
|
68
|
+
}
|
|
69
|
+
export var getInteractionStatus = function getInteractionStatus(interaction) {
|
|
70
|
+
var originalInteractionStatus = interaction.abortReason ? 'ABORTED' : 'SUCCEEDED';
|
|
71
|
+
var hasBm3TTI = interaction.apdex.length > 0;
|
|
72
|
+
var overrideStatus = hasBm3TTI ? 'SUCCEEDED' : originalInteractionStatus;
|
|
73
|
+
return {
|
|
74
|
+
originalInteractionStatus: originalInteractionStatus,
|
|
75
|
+
overrideStatus: overrideStatus
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
export var getPageVisibilityUpToTTAI = function getPageVisibilityUpToTTAI(interaction) {
|
|
79
|
+
var start = interaction.start,
|
|
80
|
+
end = interaction.end;
|
|
81
|
+
return getPageVisibilityState(start, end);
|
|
82
|
+
};
|
|
83
|
+
export var calculateVCMetrics = function calculateVCMetrics(interaction, prefix, getVCResultFn) {
|
|
84
|
+
var _interaction$apdex;
|
|
85
|
+
var result = getVCResultFn({
|
|
86
|
+
start: interaction.start,
|
|
87
|
+
stop: interaction.end,
|
|
88
|
+
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,
|
|
89
|
+
prefix: prefix,
|
|
90
|
+
vc: interaction.vc
|
|
91
|
+
});
|
|
92
|
+
var VC = result === null || result === void 0 ? void 0 : result['metrics:vc'];
|
|
93
|
+
if (!VC || !(result !== null && result !== void 0 && result["".concat(prefix, ":vc:clean")])) {
|
|
94
|
+
return result;
|
|
95
|
+
}
|
|
96
|
+
var interactionStatus = getInteractionStatus(interaction);
|
|
97
|
+
var pageVisibilityUpToTTAI = getPageVisibilityUpToTTAI(interaction);
|
|
98
|
+
if (interactionStatus.originalInteractionStatus !== 'SUCCEEDED' || pageVisibilityUpToTTAI !== 'visible') {
|
|
99
|
+
return result;
|
|
100
|
+
}
|
|
101
|
+
return result;
|
|
102
|
+
};
|
|
103
|
+
export function getSSRDoneTimeValue(config) {
|
|
104
|
+
var _config$ssr, _config$ssr2;
|
|
105
|
+
return config !== null && config !== void 0 && (_config$ssr = config.ssr) !== null && _config$ssr !== void 0 && _config$ssr.getSSRDoneTime ? config === null || config === void 0 || (_config$ssr2 = config.ssr) === null || _config$ssr2 === void 0 ? void 0 : _config$ssr2.getSSRDoneTime() : ssr.getSSRDoneTime();
|
|
106
|
+
}
|
|
107
|
+
export var getVCMetrics = function getVCMetrics(interaction) {
|
|
108
|
+
var _config$vc, _result$metricsVc;
|
|
109
|
+
var config = getConfig();
|
|
110
|
+
if (!(config !== null && config !== void 0 && (_config$vc = config.vc) !== null && _config$vc !== void 0 && _config$vc.enabled)) {
|
|
111
|
+
return {};
|
|
112
|
+
}
|
|
113
|
+
if (interaction.type !== 'page_load' && interaction.type !== 'transition') {
|
|
114
|
+
return {};
|
|
115
|
+
}
|
|
116
|
+
var ssr = interaction.type === 'page_load' && config !== null && config !== void 0 && config.ssr ? {
|
|
117
|
+
ssr: getSSRDoneTimeValue(config)
|
|
118
|
+
} : null;
|
|
119
|
+
postInteractionLog.setVCObserverSSRConfig(ssr);
|
|
120
|
+
var result = calculateVCMetrics(interaction, 'ufo', getVCObserver().getVCResult);
|
|
121
|
+
return _objectSpread(_objectSpread({}, result), {}, {
|
|
122
|
+
'metric:vc90': result === null || result === void 0 || (_result$metricsVc = result['metrics:vc']) === null || _result$metricsVc === void 0 ? void 0 : _result$metricsVc['90']
|
|
123
|
+
});
|
|
124
|
+
};
|
|
125
|
+
export var getExperimentalVCMetrics = function getExperimentalVCMetrics(interaction) {
|
|
126
|
+
if (experimentalInteractionLog.vcObserver) {
|
|
127
|
+
var _result$metricsVc2;
|
|
128
|
+
var result = calculateVCMetrics(interaction, 'ufo-experimental', experimentalInteractionLog.vcObserver.getVCResult);
|
|
129
|
+
return _objectSpread(_objectSpread({}, result), {}, {
|
|
130
|
+
'metric:experimental:vc90': result === null || result === void 0 || (_result$metricsVc2 = result['metrics:vc']) === null || _result$metricsVc2 === void 0 ? void 0 : _result$metricsVc2['90']
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
return null;
|
|
134
|
+
};
|
|
135
|
+
export var getTTAI = function getTTAI(interaction) {
|
|
136
|
+
var start = interaction.start,
|
|
137
|
+
end = interaction.end;
|
|
138
|
+
var interactionStatus = getInteractionStatus(interaction);
|
|
139
|
+
var pageVisibilityUpToTTAI = getPageVisibilityUpToTTAI(interaction);
|
|
140
|
+
return interactionStatus.originalInteractionStatus === 'SUCCEEDED' && pageVisibilityUpToTTAI === 'visible' ? Math.round(end - start) : undefined;
|
|
141
|
+
};
|
|
@@ -18,13 +18,12 @@ import { getBm3Timings } from '../custom-timings';
|
|
|
18
18
|
import { getGlobalErrorCount } from '../global-error-handler';
|
|
19
19
|
import { getPageVisibilityState } from '../hidden-timing';
|
|
20
20
|
import * as initialPageLoadExtraTiming from '../initial-page-load-extra-timing';
|
|
21
|
-
import { interactionSpans as atlaskitInteractionSpans
|
|
21
|
+
import { interactionSpans as atlaskitInteractionSpans } from '../interaction-metrics';
|
|
22
22
|
import * as resourceTiming from '../resource-timing';
|
|
23
23
|
import { roundEpsilon } from '../round-number';
|
|
24
24
|
import * as ssr from '../ssr';
|
|
25
|
-
import {
|
|
26
|
-
|
|
27
|
-
function getUfoNameOverride(interaction) {
|
|
25
|
+
import { buildSegmentTree, getExperimentalVCMetrics, getInteractionStatus, getPageVisibilityUpToTTAI, getSSRDoneTimeValue, getTTAI, getVCMetrics, labelStackStartWith, optimizeLabelStack, sanitizeUfoName, stringifyLabelStackFully } from './common/utils';
|
|
26
|
+
export function getUfoNameOverride(interaction) {
|
|
28
27
|
var ufoName = interaction.ufoName,
|
|
29
28
|
apdex = interaction.apdex;
|
|
30
29
|
try {
|
|
@@ -36,7 +35,6 @@ function getUfoNameOverride(interaction) {
|
|
|
36
35
|
}
|
|
37
36
|
}
|
|
38
37
|
return ufoName;
|
|
39
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
40
38
|
} catch (e) {
|
|
41
39
|
return ufoName;
|
|
42
40
|
}
|
|
@@ -71,11 +69,6 @@ var getPageVisibilityUpToTTI = function getPageVisibilityUpToTTI(interaction) {
|
|
|
71
69
|
var bm3EndTimeOrInteractionEndTime = getBm3EndTimeOrFallbackValue(interaction);
|
|
72
70
|
return getPageVisibilityState(start, bm3EndTimeOrInteractionEndTime);
|
|
73
71
|
};
|
|
74
|
-
var getPageVisibilityUpToTTAI = function getPageVisibilityUpToTTAI(interaction) {
|
|
75
|
-
var start = interaction.start,
|
|
76
|
-
end = interaction.end;
|
|
77
|
-
return getPageVisibilityState(start, end);
|
|
78
|
-
};
|
|
79
72
|
var getVisibilityStateFromPerformance = function getVisibilityStateFromPerformance(stop) {
|
|
80
73
|
try {
|
|
81
74
|
var results = performance.getEntriesByType('visibility-state');
|
|
@@ -131,15 +124,6 @@ var getMoreAccuratePageVisibilityUpToTTAI = function getMoreAccuratePageVisibili
|
|
|
131
124
|
}
|
|
132
125
|
return old;
|
|
133
126
|
};
|
|
134
|
-
var getInteractionStatus = function getInteractionStatus(interaction) {
|
|
135
|
-
var originalInteractionStatus = interaction.abortReason ? 'ABORTED' : 'SUCCEEDED';
|
|
136
|
-
var hasBm3TTI = interaction.apdex.length > 0;
|
|
137
|
-
var overrideStatus = hasBm3TTI ? 'SUCCEEDED' : originalInteractionStatus;
|
|
138
|
-
return {
|
|
139
|
-
originalInteractionStatus: originalInteractionStatus,
|
|
140
|
-
overrideStatus: overrideStatus
|
|
141
|
-
};
|
|
142
|
-
};
|
|
143
127
|
var getResourceTimings = function getResourceTimings(start, end) {
|
|
144
128
|
var _resourceTiming$getRe;
|
|
145
129
|
return (_resourceTiming$getRe = resourceTiming.getResourceTimings(start, end)) !== null && _resourceTiming$getRe !== void 0 ? _resourceTiming$getRe : undefined;
|
|
@@ -168,42 +152,6 @@ var getPaintMetrics = function getPaintMetrics(type) {
|
|
|
168
152
|
});
|
|
169
153
|
return metrics;
|
|
170
154
|
};
|
|
171
|
-
var getVCMetrics = function getVCMetrics(interaction) {
|
|
172
|
-
var _config$vc, _interaction$apdex;
|
|
173
|
-
var config = getConfig();
|
|
174
|
-
if (!(config !== null && config !== void 0 && (_config$vc = config.vc) !== null && _config$vc !== void 0 && _config$vc.enabled)) {
|
|
175
|
-
return {};
|
|
176
|
-
}
|
|
177
|
-
if (interaction.type !== 'page_load' && interaction.type !== 'transition') {
|
|
178
|
-
return {};
|
|
179
|
-
}
|
|
180
|
-
var ssr = interaction.type === 'page_load' && config !== null && config !== void 0 && config.ssr ? {
|
|
181
|
-
ssr: getSSRDoneTimeValue(config)
|
|
182
|
-
} : null;
|
|
183
|
-
postInteractionLog.setVCObserverSSRConfig(ssr);
|
|
184
|
-
var 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;
|
|
185
|
-
var prefix = 'ufo';
|
|
186
|
-
var result = getVCObserver().getVCResult(_objectSpread({
|
|
187
|
-
start: interaction.start,
|
|
188
|
-
stop: interaction.end,
|
|
189
|
-
tti: tti,
|
|
190
|
-
prefix: prefix,
|
|
191
|
-
vc: interaction.vc
|
|
192
|
-
}, ssr));
|
|
193
|
-
postInteractionLog.setLastInteractionFinishVCResult(result);
|
|
194
|
-
var VC = result === null || result === void 0 ? void 0 : result['metrics:vc'];
|
|
195
|
-
if (!VC || !(result !== null && result !== void 0 && result["".concat(prefix, ":vc:clean")])) {
|
|
196
|
-
return result;
|
|
197
|
-
}
|
|
198
|
-
var interactionStatus = getInteractionStatus(interaction);
|
|
199
|
-
var pageVisibilityUpToTTAI = getPageVisibilityUpToTTAI(interaction);
|
|
200
|
-
if (interactionStatus.originalInteractionStatus !== 'SUCCEEDED' || pageVisibilityUpToTTAI !== 'visible') {
|
|
201
|
-
return result;
|
|
202
|
-
}
|
|
203
|
-
return _objectSpread(_objectSpread({}, result), {}, {
|
|
204
|
-
'metric:vc90': VC['90']
|
|
205
|
-
});
|
|
206
|
-
};
|
|
207
155
|
var getNavigationMetrics = function getNavigationMetrics(type) {
|
|
208
156
|
if (type !== 'page_load') {
|
|
209
157
|
return {};
|
|
@@ -251,13 +199,13 @@ var getNavigationMetrics = function getNavigationMetrics(type) {
|
|
|
251
199
|
};
|
|
252
200
|
};
|
|
253
201
|
var getPPSMetrics = function getPPSMetrics(interaction) {
|
|
254
|
-
var _interaction$
|
|
202
|
+
var _interaction$apdex;
|
|
255
203
|
var start = interaction.start,
|
|
256
204
|
end = interaction.end;
|
|
257
205
|
var config = getConfig();
|
|
258
206
|
var interactionStatus = getInteractionStatus(interaction);
|
|
259
207
|
var pageVisibilityUpToTTAI = getPageVisibilityUpToTTAI(interaction);
|
|
260
|
-
var tti = (_interaction$
|
|
208
|
+
var 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;
|
|
261
209
|
var ttai = interactionStatus.originalInteractionStatus === 'SUCCEEDED' && pageVisibilityUpToTTAI === 'visible' ? Math.round(end - start) : undefined;
|
|
262
210
|
var PPSMetricsAtTTI = tti !== undefined ? getLighthouseMetrics({
|
|
263
211
|
start: start,
|
|
@@ -348,13 +296,13 @@ function optimizeCustomData(interaction) {
|
|
|
348
296
|
for (var _i = 0, _Object$entries = Object.entries(currentValue.custom || {}); _i < _Object$entries.length; _i++) {
|
|
349
297
|
var _result$get$data2, _result$get2;
|
|
350
298
|
var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
|
|
351
|
-
|
|
299
|
+
key = _Object$entries$_i[0],
|
|
352
300
|
value = _Object$entries$_i[1];
|
|
353
301
|
var label = stringifyLabelStackFully([]);
|
|
354
302
|
var labelValue = (_result$get$data2 = (_result$get2 = result.get(label)) === null || _result$get2 === void 0 ? void 0 : _result$get2.data) !== null && _result$get$data2 !== void 0 ? _result$get$data2 : {};
|
|
355
303
|
result.set(label, {
|
|
356
304
|
labelStack: optimizeLabelStack([]),
|
|
357
|
-
data: Object.assign(labelValue, _defineProperty({},
|
|
305
|
+
data: Object.assign(labelValue, _defineProperty({}, key, value))
|
|
358
306
|
});
|
|
359
307
|
}
|
|
360
308
|
return result;
|
|
@@ -592,10 +540,6 @@ function getBm3TrackerTimings(interaction) {
|
|
|
592
540
|
legacyMetrics: legacyMetrics
|
|
593
541
|
};
|
|
594
542
|
}
|
|
595
|
-
function getSSRDoneTimeValue(config) {
|
|
596
|
-
var _config$ssr, _config$ssr2;
|
|
597
|
-
return config !== null && config !== void 0 && (_config$ssr = config.ssr) !== null && _config$ssr !== void 0 && _config$ssr.getSSRDoneTime ? config === null || config === void 0 || (_config$ssr2 = config.ssr) === null || _config$ssr2 === void 0 ? void 0 : _config$ssr2.getSSRDoneTime() : ssr.getSSRDoneTime();
|
|
598
|
-
}
|
|
599
543
|
function getPayloadSize(payload) {
|
|
600
544
|
return Math.round(new TextEncoder().encode(JSON.stringify(payload)).length / 1024);
|
|
601
545
|
}
|
|
@@ -628,17 +572,25 @@ function getStylesheetMetrics() {
|
|
|
628
572
|
}
|
|
629
573
|
}, 0);
|
|
630
574
|
return {
|
|
631
|
-
stylesheets: stylesheetCount,
|
|
632
|
-
styleElements: styleElements,
|
|
633
|
-
styleProps: styleProps.length,
|
|
634
|
-
styleDeclarations: styleDeclarations,
|
|
635
|
-
cssrules: cssrules
|
|
575
|
+
'ufo:stylesheets': stylesheetCount,
|
|
576
|
+
'ufo:styleElements': styleElements,
|
|
577
|
+
'ufo:styleProps': styleProps.length,
|
|
578
|
+
'ufo:styleDeclarations': styleDeclarations,
|
|
579
|
+
'ufo:cssrules': cssrules
|
|
636
580
|
};
|
|
637
581
|
} catch (e) {
|
|
638
582
|
return {};
|
|
639
583
|
}
|
|
640
584
|
}
|
|
641
|
-
|
|
585
|
+
var regularTTAI;
|
|
586
|
+
var expTTAI;
|
|
587
|
+
function getErrorCounts(interaction) {
|
|
588
|
+
return {
|
|
589
|
+
'ufo:errors:globalCount': getGlobalErrorCount(),
|
|
590
|
+
'ufo:errors:count': interaction.errors.length
|
|
591
|
+
};
|
|
592
|
+
}
|
|
593
|
+
export function createInteractionMetricsPayload(interaction, interactionId, experimental) {
|
|
642
594
|
var _window$location, _config$additionalPay;
|
|
643
595
|
var interactionPayloadStart = performance.now();
|
|
644
596
|
var config = getConfig();
|
|
@@ -673,7 +625,7 @@ function createInteractionMetricsPayload(interaction, interactionId) {
|
|
|
673
625
|
} : {};
|
|
674
626
|
// Page Load
|
|
675
627
|
var getPageLoadInteractionMetrics = function getPageLoadInteractionMetrics() {
|
|
676
|
-
var _config$
|
|
628
|
+
var _config$ssr;
|
|
677
629
|
if (!isPageLoad) {
|
|
678
630
|
return {};
|
|
679
631
|
}
|
|
@@ -684,12 +636,12 @@ function createInteractionMetricsPayload(interaction, interactionId) {
|
|
|
684
636
|
} : {};
|
|
685
637
|
return _objectSpread(_objectSpread({}, SSRDoneTime), {}, {
|
|
686
638
|
isBM3ConfigSSRDoneAsFmp: interaction.metaData.__legacy__bm3ConfigSSRDoneAsFmp,
|
|
687
|
-
isUFOConfigSSRDoneAsFmp: interaction.metaData.__legacy__bm3ConfigSSRDoneAsFmp || !!(config !== null && config !== void 0 && (_config$
|
|
639
|
+
isUFOConfigSSRDoneAsFmp: interaction.metaData.__legacy__bm3ConfigSSRDoneAsFmp || !!(config !== null && config !== void 0 && (_config$ssr = config.ssr) !== null && _config$ssr !== void 0 && _config$ssr.getSSRDoneTime)
|
|
688
640
|
});
|
|
689
641
|
};
|
|
690
642
|
// Detailed payload. Page visibility = visible
|
|
691
643
|
var getDetailedInteractionMetrics = function getDetailedInteractionMetrics() {
|
|
692
|
-
if (window.__UFO_COMPACT_PAYLOAD__ || !isDetailedPayload) {
|
|
644
|
+
if (experimental || window.__UFO_COMPACT_PAYLOAD__ || !isDetailedPayload) {
|
|
693
645
|
return {};
|
|
694
646
|
}
|
|
695
647
|
var spans = [].concat(_toConsumableArray(interaction.spans), _toConsumableArray(atlaskitInteractionSpans));
|
|
@@ -704,7 +656,7 @@ function createInteractionMetricsPayload(interaction, interactionId) {
|
|
|
704
656
|
}),
|
|
705
657
|
holdActive: _toConsumableArray(interaction.holdActive.values()),
|
|
706
658
|
redirects: optimizeRedirects(interaction.redirects, start),
|
|
707
|
-
holdInfo: optimizeHoldInfo(interaction.holdInfo, start),
|
|
659
|
+
holdInfo: optimizeHoldInfo(experimental ? interaction.holdExpInfo : interaction.holdInfo, start),
|
|
708
660
|
spans: optimizeSpans(spans, start),
|
|
709
661
|
requestInfo: optimizeRequestInfo(interaction.requestInfo, start),
|
|
710
662
|
customTimings: optimizeCustomTimings(interaction.customTimings, start),
|
|
@@ -714,16 +666,21 @@ function createInteractionMetricsPayload(interaction, interactionId) {
|
|
|
714
666
|
};
|
|
715
667
|
// Page load & detailed payload
|
|
716
668
|
var getPageLoadDetailedInteractionMetrics = function getPageLoadDetailedInteractionMetrics() {
|
|
717
|
-
var _config$
|
|
669
|
+
var _config$ssr2;
|
|
718
670
|
if (!isPageLoad || !isDetailedPayload) {
|
|
719
671
|
return {};
|
|
720
672
|
}
|
|
721
673
|
var config = getConfig();
|
|
722
674
|
return {
|
|
723
675
|
initialPageLoadExtraTimings: objectToArray(initialPageLoadExtraTiming.getTimings()),
|
|
724
|
-
SSRTimings: config !== null && config !== void 0 && (_config$
|
|
676
|
+
SSRTimings: config !== null && config !== void 0 && (_config$ssr2 = config.ssr) !== null && _config$ssr2 !== void 0 && _config$ssr2.getSSRTimings ? config.ssr.getSSRTimings() : objectToArray(ssr.getSSRTimings())
|
|
725
677
|
};
|
|
726
678
|
};
|
|
679
|
+
if (experimental) {
|
|
680
|
+
expTTAI = getTTAI(interaction);
|
|
681
|
+
} else {
|
|
682
|
+
regularTTAI = getTTAI(interaction);
|
|
683
|
+
}
|
|
727
684
|
var newUFOName = sanitizeUfoName(ufoName);
|
|
728
685
|
var payload = {
|
|
729
686
|
actionSubject: 'experience',
|
|
@@ -732,7 +689,7 @@ function createInteractionMetricsPayload(interaction, interactionId) {
|
|
|
732
689
|
source: 'measured',
|
|
733
690
|
tags: ['observability'],
|
|
734
691
|
attributes: {
|
|
735
|
-
properties: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
692
|
+
properties: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
736
693
|
// basic
|
|
737
694
|
'event:hostname': ((_window$location = window.location) === null || _window$location === void 0 ? void 0 : _window$location.hostname) || 'unknown',
|
|
738
695
|
'event:product': config.product,
|
|
@@ -744,11 +701,10 @@ function createInteractionMetricsPayload(interaction, interactionId) {
|
|
|
744
701
|
payloadSource: 'platform'
|
|
745
702
|
},
|
|
746
703
|
'event:region': config.region || 'unknown',
|
|
747
|
-
'experience:key': 'custom.interaction-metrics',
|
|
704
|
+
'experience:key': experimental ? 'custom.experimental-interaction-metrics' : 'custom.interaction-metrics',
|
|
748
705
|
'experience:name': newUFOName
|
|
749
|
-
}, getBrowserMetadata()), getSSRProperties(type)), getPPSMetrics(interaction)), getPaintMetrics(type)), getNavigationMetrics(type)), getVCMetrics(interaction)), (_config$additionalPay = config.additionalPayloadData) === null || _config$additionalPay === void 0 ? void 0 : _config$additionalPay.call(config, interaction)), getTracingContextData(interaction)), getStylesheetMetrics()), {}, {
|
|
750
|
-
|
|
751
|
-
interactionMetrics: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
706
|
+
}, getBrowserMetadata()), getSSRProperties(type)), getPPSMetrics(interaction)), getPaintMetrics(type)), getNavigationMetrics(type)), getVCMetrics(interaction)), experimental ? getExperimentalVCMetrics(interaction) : undefined), (_config$additionalPay = config.additionalPayloadData) === null || _config$additionalPay === void 0 ? void 0 : _config$additionalPay.call(config, interaction)), getTracingContextData(interaction)), getStylesheetMetrics()), getErrorCounts(interaction)), {}, {
|
|
707
|
+
interactionMetrics: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
752
708
|
namePrefix: config.namePrefix || '',
|
|
753
709
|
segmentPrefix: config.segmentPrefix || '',
|
|
754
710
|
interactionId: interactionId,
|
|
@@ -778,13 +734,19 @@ function createInteractionMetricsPayload(interaction, interactionId) {
|
|
|
778
734
|
}),
|
|
779
735
|
marks: optimizeMarks(interaction.marks),
|
|
780
736
|
customData: optimizeCustomData(interaction),
|
|
781
|
-
reactProfilerTimings: optimizeReactProfilerTimings(interaction.reactProfilerTimings, start)
|
|
782
|
-
|
|
783
|
-
|
|
737
|
+
reactProfilerTimings: optimizeReactProfilerTimings(interaction.reactProfilerTimings, start)
|
|
738
|
+
}, labelStack), getPageLoadInteractionMetrics()), getDetailedInteractionMetrics()), getPageLoadDetailedInteractionMetrics()), getBm3TrackerTimings(interaction)), {}, {
|
|
739
|
+
'metric:ttai': experimental ? regularTTAI || expTTAI : undefined,
|
|
740
|
+
'metric:experimental:ttai': experimental ? expTTAI : undefined
|
|
741
|
+
}),
|
|
784
742
|
'ufo:payloadTime': roundEpsilon(performance.now() - interactionPayloadStart)
|
|
785
743
|
})
|
|
786
744
|
}
|
|
787
745
|
};
|
|
746
|
+
if (experimental) {
|
|
747
|
+
regularTTAI = undefined;
|
|
748
|
+
expTTAI = undefined;
|
|
749
|
+
}
|
|
788
750
|
payload.attributes.properties['event:sizeInKb'] = getPayloadSize(payload.attributes.properties);
|
|
789
751
|
return payload;
|
|
790
752
|
}
|
|
@@ -51,10 +51,7 @@ function removeCascadingParentTimingReport(reactProfilerTimings) {
|
|
|
51
51
|
if (parentSegmentId) {
|
|
52
52
|
var parentTimings = timingIndex.get(parentSegmentId);
|
|
53
53
|
var filteredParentTimings = parentTimings === null || parentTimings === void 0 ? void 0 : parentTimings.filter(function (parentTiming) {
|
|
54
|
-
|
|
55
|
-
return false;
|
|
56
|
-
}
|
|
57
|
-
return true;
|
|
54
|
+
return !(parentTiming.startTime === timing.startTime && parentTiming.actualDuration === timing.actualDuration);
|
|
58
55
|
});
|
|
59
56
|
if (filteredParentTimings) {
|
|
60
57
|
timingIndex.set(parentSegmentId, filteredParentTimings);
|
|
@@ -1,2 +1,8 @@
|
|
|
1
1
|
var interactions = new Map();
|
|
2
|
+
export var CLEANUP_TIMEOUT = 60 * 1000;
|
|
3
|
+
export var CLEANUP_TIMEOUT_AFTER_APDEX = 15 * 1000;
|
|
4
|
+
export var interactionQueue = [];
|
|
5
|
+
export var segmentCache = new Map();
|
|
6
|
+
export var segmentObservers = [];
|
|
7
|
+
export var moduleLoadingRequests = {};
|
|
2
8
|
export default interactions;
|