@atlaskit/react-ufo 2.14.3 → 2.16.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 +20 -0
- package/dist/cjs/assets/index.js +96 -0
- package/dist/cjs/assets/utils.js +32 -0
- package/dist/cjs/common/assets/types.js +5 -0
- package/dist/cjs/create-payload/index.js +42 -5
- package/dist/cjs/experience-trace-id-context/index.js +5 -1
- package/dist/cjs/segment/segment.js +7 -1
- package/dist/cjs/vc/vc-observer/heatmap/heatmap.js +264 -0
- package/dist/cjs/vc/vc-observer/index.js +119 -26
- package/dist/cjs/vc/vc-observer/revisions/ViewportUpdateClassifier.js +60 -0
- package/dist/cjs/vc/vc-observer/revisions/fy24_01.js +71 -0
- package/dist/cjs/vc/vc-observer/revisions/fy25_01.js +39 -0
- package/dist/cjs/vc/vc-observer/revisions/revisions.js +23 -0
- package/dist/cjs/vc/vc-observer/revisions/types.js +5 -0
- package/dist/es2019/assets/index.js +82 -0
- package/dist/es2019/assets/utils.js +26 -0
- package/dist/es2019/common/assets/types.js +1 -0
- package/dist/es2019/create-payload/index.js +43 -3
- package/dist/es2019/experience-trace-id-context/index.js +4 -0
- package/dist/es2019/segment/segment.js +11 -3
- package/dist/es2019/vc/vc-observer/heatmap/heatmap.js +230 -0
- package/dist/es2019/vc/vc-observer/index.js +97 -3
- package/dist/es2019/vc/vc-observer/revisions/ViewportUpdateClassifier.js +41 -0
- package/dist/es2019/vc/vc-observer/revisions/fy24_01.js +50 -0
- package/dist/es2019/vc/vc-observer/revisions/fy25_01.js +21 -0
- package/dist/es2019/vc/vc-observer/revisions/revisions.js +19 -0
- package/dist/es2019/vc/vc-observer/revisions/types.js +1 -0
- package/dist/esm/assets/index.js +89 -0
- package/dist/esm/assets/utils.js +26 -0
- package/dist/esm/common/assets/types.js +1 -0
- package/dist/esm/create-payload/index.js +42 -5
- package/dist/esm/experience-trace-id-context/index.js +4 -0
- package/dist/esm/segment/segment.js +7 -1
- package/dist/esm/vc/vc-observer/heatmap/heatmap.js +257 -0
- package/dist/esm/vc/vc-observer/index.js +119 -26
- package/dist/esm/vc/vc-observer/revisions/ViewportUpdateClassifier.js +53 -0
- package/dist/esm/vc/vc-observer/revisions/fy24_01.js +64 -0
- package/dist/esm/vc/vc-observer/revisions/fy25_01.js +32 -0
- package/dist/esm/vc/vc-observer/revisions/revisions.js +17 -0
- package/dist/esm/vc/vc-observer/revisions/types.js +1 -0
- package/dist/types/assets/index.d.ts +25 -0
- package/dist/types/assets/utils.d.ts +6 -0
- package/dist/types/common/assets/types.d.ts +18 -0
- package/dist/types/common/index.d.ts +1 -0
- package/dist/types/common/vc/types.d.ts +27 -8
- package/dist/types/config/index.d.ts +2 -1
- package/dist/types/create-payload/index.d.ts +11616 -0
- package/dist/types/experience-trace-id-context/index.d.ts +1 -0
- package/dist/types/resource-timing/index.d.ts +1 -1
- package/dist/types/vc/vc-observer/heatmap/heatmap.d.ts +72 -0
- package/dist/types/vc/vc-observer/index.d.ts +5 -1
- package/dist/types/vc/vc-observer/revisions/ViewportUpdateClassifier.d.ts +30 -0
- package/dist/types/vc/vc-observer/revisions/fy24_01.d.ts +13 -0
- package/dist/types/vc/vc-observer/revisions/fy25_01.d.ts +13 -0
- package/dist/types/vc/vc-observer/revisions/revisions.d.ts +2 -0
- package/dist/types/vc/vc-observer/revisions/types.d.ts +23 -0
- package/dist/types-ts4.5/assets/index.d.ts +25 -0
- package/dist/types-ts4.5/assets/utils.d.ts +6 -0
- package/dist/types-ts4.5/common/assets/types.d.ts +18 -0
- package/dist/types-ts4.5/common/index.d.ts +1 -0
- package/dist/types-ts4.5/common/vc/types.d.ts +27 -8
- package/dist/types-ts4.5/config/index.d.ts +2 -1
- package/dist/types-ts4.5/create-payload/index.d.ts +11616 -0
- package/dist/types-ts4.5/experience-trace-id-context/index.d.ts +1 -0
- package/dist/types-ts4.5/resource-timing/index.d.ts +1 -1
- package/dist/types-ts4.5/vc/vc-observer/heatmap/heatmap.d.ts +72 -0
- package/dist/types-ts4.5/vc/vc-observer/index.d.ts +15 -1
- package/dist/types-ts4.5/vc/vc-observer/revisions/ViewportUpdateClassifier.d.ts +30 -0
- package/dist/types-ts4.5/vc/vc-observer/revisions/fy24_01.d.ts +13 -0
- package/dist/types-ts4.5/vc/vc-observer/revisions/fy25_01.d.ts +13 -0
- package/dist/types-ts4.5/vc/vc-observer/revisions/revisions.d.ts +2 -0
- package/dist/types-ts4.5/vc/vc-observer/revisions/types.d.ts +23 -0
- package/package.json +11 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @atlaskit/ufo-interaction-ignore
|
|
2
2
|
|
|
3
|
+
## 2.16.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#109616](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/109616)
|
|
8
|
+
[`5feb3a695a6d9`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/5feb3a695a6d9) -
|
|
9
|
+
Add Assets API to rUFO
|
|
10
|
+
|
|
11
|
+
## 2.15.0
|
|
12
|
+
|
|
13
|
+
### Minor Changes
|
|
14
|
+
|
|
15
|
+
- [#115462](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/115462)
|
|
16
|
+
[`17a3ace9d5f67`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/17a3ace9d5f67) -
|
|
17
|
+
Moved addSegment to useEffect to prevent it added multiple times when running on concurrent mode
|
|
18
|
+
|
|
19
|
+
### Patch Changes
|
|
20
|
+
|
|
21
|
+
- Updated dependencies
|
|
22
|
+
|
|
3
23
|
## 2.14.3
|
|
4
24
|
|
|
5
25
|
### Patch Changes
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.CHRSummary = exports.CHRReporter = void 0;
|
|
8
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
10
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
11
|
+
var _defineProperty4 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
12
|
+
var _utils = require("./utils");
|
|
13
|
+
var CHRSummary = exports.CHRSummary = /*#__PURE__*/function () {
|
|
14
|
+
function CHRSummary() {
|
|
15
|
+
(0, _classCallCheck2.default)(this, CHRSummary);
|
|
16
|
+
(0, _defineProperty4.default)(this, "bundles", (0, _defineProperty4.default)((0, _defineProperty4.default)((0, _defineProperty4.default)({}, _utils.MEMORY_KEY, 0), _utils.DISK_KEY, 0), _utils.NETWORK_KEY, 0));
|
|
17
|
+
(0, _defineProperty4.default)(this, "bundlesCount", 0);
|
|
18
|
+
(0, _defineProperty4.default)(this, "size", (0, _defineProperty4.default)((0, _defineProperty4.default)((0, _defineProperty4.default)({}, _utils.MEMORY_KEY, 0), _utils.DISK_KEY, 0), _utils.NETWORK_KEY, 0));
|
|
19
|
+
(0, _defineProperty4.default)(this, "sizeTotal", 0);
|
|
20
|
+
}
|
|
21
|
+
return (0, _createClass2.default)(CHRSummary, [{
|
|
22
|
+
key: "add",
|
|
23
|
+
value: function add(asset) {
|
|
24
|
+
var size = 'size' in asset ? asset.size : undefined;
|
|
25
|
+
var encodedSize = 'encodedSize' in asset ? Number(asset.encodedSize) : 0;
|
|
26
|
+
var type = (0, _utils.calculateTransferType)(asset.type, asset.duration, size);
|
|
27
|
+
if (type === null) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
this.bundles[type] += 1;
|
|
31
|
+
this.bundlesCount += 1;
|
|
32
|
+
this.size[type] += encodedSize;
|
|
33
|
+
this.sizeTotal += encodedSize;
|
|
34
|
+
}
|
|
35
|
+
}], [{
|
|
36
|
+
key: "makePayload",
|
|
37
|
+
value: function makePayload(summary) {
|
|
38
|
+
var size = summary.size,
|
|
39
|
+
bundlesCount = summary.bundlesCount,
|
|
40
|
+
sizeTotal = summary.sizeTotal;
|
|
41
|
+
var cachedSize = size[_utils.MEMORY_KEY] + size[_utils.DISK_KEY];
|
|
42
|
+
var sizeRatio = (0, _utils.round)(cachedSize / summary.sizeTotal);
|
|
43
|
+
return {
|
|
44
|
+
size: sizeTotal,
|
|
45
|
+
chr: sizeRatio,
|
|
46
|
+
count: bundlesCount
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
}]);
|
|
50
|
+
}();
|
|
51
|
+
var CHRReporter = exports.CHRReporter = /*#__PURE__*/function () {
|
|
52
|
+
function CHRReporter() {
|
|
53
|
+
(0, _classCallCheck2.default)(this, CHRReporter);
|
|
54
|
+
(0, _defineProperty4.default)(this, "all", new CHRSummary());
|
|
55
|
+
(0, _defineProperty4.default)(this, "allAtlassian", new CHRSummary());
|
|
56
|
+
(0, _defineProperty4.default)(this, "preloaded", new CHRSummary());
|
|
57
|
+
}
|
|
58
|
+
return (0, _createClass2.default)(CHRReporter, [{
|
|
59
|
+
key: "get",
|
|
60
|
+
value: function get(resourceTimings, assetsClassification) {
|
|
61
|
+
var _this = this;
|
|
62
|
+
try {
|
|
63
|
+
Object.entries(resourceTimings).map(function (_ref) {
|
|
64
|
+
var _ref2 = (0, _slicedToArray2.default)(_ref, 2),
|
|
65
|
+
label = _ref2[0],
|
|
66
|
+
entry = _ref2[1];
|
|
67
|
+
if (assetsClassification.all) {
|
|
68
|
+
_this.all.add(entry);
|
|
69
|
+
}
|
|
70
|
+
if (assetsClassification.allAtlassian({
|
|
71
|
+
label: label,
|
|
72
|
+
entry: entry
|
|
73
|
+
})) {
|
|
74
|
+
_this.allAtlassian.add(entry);
|
|
75
|
+
}
|
|
76
|
+
if (assetsClassification.preloaded({
|
|
77
|
+
label: label,
|
|
78
|
+
entry: entry
|
|
79
|
+
})) {
|
|
80
|
+
_this.preloaded.add(entry);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
if (this.all.bundlesCount === 0) {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
all: CHRSummary.makePayload(this.all),
|
|
88
|
+
allAtlassian: CHRSummary.makePayload(this.allAtlassian),
|
|
89
|
+
preloaded: CHRSummary.makePayload(this.preloaded)
|
|
90
|
+
};
|
|
91
|
+
} catch (error) {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}]);
|
|
96
|
+
}();
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.round = exports.calculateTransferType = exports.cacheableTypes = exports.NETWORK_KEY = exports.MEMORY_KEY = exports.DISK_KEY = void 0;
|
|
7
|
+
/* Borrowed from https://bitbucket.org/atlassian/atlassian-frontend/src/master/packages/performance/browser-metrics/src/plugins/timings/resource.ts */
|
|
8
|
+
var cacheableTypes = exports.cacheableTypes = ['script', 'link'];
|
|
9
|
+
var MEMORY_KEY = exports.MEMORY_KEY = 'mem';
|
|
10
|
+
var DISK_KEY = exports.DISK_KEY = 'disk';
|
|
11
|
+
var NETWORK_KEY = exports.NETWORK_KEY = 'net';
|
|
12
|
+
var calculateTransferType = exports.calculateTransferType = function calculateTransferType(type, duration, size) {
|
|
13
|
+
if (!cacheableTypes.includes(type)) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
if ((size === undefined || size === 0) && duration === 0) {
|
|
17
|
+
return MEMORY_KEY;
|
|
18
|
+
}
|
|
19
|
+
if (size === 0 && duration > 0) {
|
|
20
|
+
return DISK_KEY;
|
|
21
|
+
}
|
|
22
|
+
if (size === undefined) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
return NETWORK_KEY;
|
|
26
|
+
};
|
|
27
|
+
var round = exports.round = function round(n) {
|
|
28
|
+
if (isNaN(n)) {
|
|
29
|
+
return 0;
|
|
30
|
+
}
|
|
31
|
+
return Math.round(n * 10000) / 10000;
|
|
32
|
+
};
|
|
@@ -14,6 +14,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
|
|
|
14
14
|
var _bowserUltralight = _interopRequireDefault(require("bowser-ultralight"));
|
|
15
15
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
16
16
|
var _additionalPayload = require("../additional-payload");
|
|
17
|
+
var _assets = require("../assets");
|
|
17
18
|
var bundleEvalTiming = _interopRequireWildcard(require("../bundle-eval-timing"));
|
|
18
19
|
var _coinflip = _interopRequireDefault(require("../coinflip"));
|
|
19
20
|
var _constants = require("../common/constants");
|
|
@@ -222,6 +223,16 @@ var getVCMetrics = function getVCMetrics(interaction) {
|
|
|
222
223
|
if (interactionStatus.originalInteractionStatus !== 'SUCCEEDED' || pageVisibilityUpToTTAI !== 'visible') {
|
|
223
224
|
return result;
|
|
224
225
|
}
|
|
226
|
+
if ((0, _platformFeatureFlags.fg)('ufo_vc_multiheatmap')) {
|
|
227
|
+
var _result;
|
|
228
|
+
(_result = result["".concat(prefix, ":vc:rev")]) === null || _result === void 0 || _result.forEach(function (element) {
|
|
229
|
+
var _element$vcDetails;
|
|
230
|
+
if ((_element$vcDetails = element.vcDetails) !== null && _element$vcDetails !== void 0 && (_element$vcDetails = _element$vcDetails['90']) !== null && _element$vcDetails !== void 0 && _element$vcDetails.t) {
|
|
231
|
+
var _element$vcDetails$;
|
|
232
|
+
element['metric:vc90'] = (_element$vcDetails$ = element.vcDetails['90']) === null || _element$vcDetails$ === void 0 ? void 0 : _element$vcDetails$.t;
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
}
|
|
225
236
|
return _objectSpread(_objectSpread({}, result), {}, {
|
|
226
237
|
'metric:vc90': VC['90']
|
|
227
238
|
});
|
|
@@ -305,6 +316,31 @@ function getSSRProperties(type) {
|
|
|
305
316
|
'ssr:featureFlags': getSSRFeatureFlags(type)
|
|
306
317
|
};
|
|
307
318
|
}
|
|
319
|
+
var getAssetsMetrics = function getAssetsMetrics(interaction, resourceTimings) {
|
|
320
|
+
try {
|
|
321
|
+
var config = (0, _config.getConfig)();
|
|
322
|
+
var type = interaction.type;
|
|
323
|
+
var isCHREnabled = (0, _platformFeatureFlags.fg)('ufo_chr_config');
|
|
324
|
+
var allowedTypes = ['page_load', 'transition'];
|
|
325
|
+
var assetsClassification = config === null || config === void 0 ? void 0 : config.assetsClassification;
|
|
326
|
+
if (!isCHREnabled || !allowedTypes.includes(type) || !assetsClassification) {
|
|
327
|
+
// Skip if: FG disabled, not allowed type or assetsClassification isn't configured
|
|
328
|
+
return {};
|
|
329
|
+
}
|
|
330
|
+
var reporter = new _assets.CHRReporter();
|
|
331
|
+
var assets = reporter.get(resourceTimings, assetsClassification);
|
|
332
|
+
if (assets) {
|
|
333
|
+
// Only add assets in case it exists
|
|
334
|
+
return {
|
|
335
|
+
'event:assets': assets
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
return {};
|
|
339
|
+
} catch (error) {
|
|
340
|
+
// Skip CHR in case of error
|
|
341
|
+
return {};
|
|
342
|
+
}
|
|
343
|
+
};
|
|
308
344
|
var getBrowserMetadata = function getBrowserMetadata() {
|
|
309
345
|
var data = {};
|
|
310
346
|
var now = new Date();
|
|
@@ -719,7 +755,7 @@ function createInteractionMetricsPayload(interaction, interactionId, experimenta
|
|
|
719
755
|
});
|
|
720
756
|
};
|
|
721
757
|
// Detailed payload. Page visibility = visible
|
|
722
|
-
var getDetailedInteractionMetrics = function getDetailedInteractionMetrics() {
|
|
758
|
+
var getDetailedInteractionMetrics = function getDetailedInteractionMetrics(resourceTimings) {
|
|
723
759
|
if (experimental || window.__UFO_COMPACT_PAYLOAD__ || !isDetailedPayload) {
|
|
724
760
|
return {};
|
|
725
761
|
}
|
|
@@ -740,7 +776,7 @@ function createInteractionMetricsPayload(interaction, interactionId, experimenta
|
|
|
740
776
|
requestInfo: optimizeRequestInfo(interaction.requestInfo, start),
|
|
741
777
|
customTimings: optimizeCustomTimings(interaction.customTimings, start),
|
|
742
778
|
bundleEvalTimings: objectToArray(getBundleEvalTimings(start)),
|
|
743
|
-
resourceTimings: objectToArray(
|
|
779
|
+
resourceTimings: objectToArray(resourceTimings)
|
|
744
780
|
};
|
|
745
781
|
};
|
|
746
782
|
// Page load & detailed payload
|
|
@@ -761,6 +797,7 @@ function createInteractionMetricsPayload(interaction, interactionId, experimenta
|
|
|
761
797
|
regularTTAI = getTTAI(interaction);
|
|
762
798
|
}
|
|
763
799
|
var newUFOName = (0, _utils.sanitizeUfoName)(ufoName);
|
|
800
|
+
var resourceTimings = getResourceTimings(start, end);
|
|
764
801
|
var payload = {
|
|
765
802
|
actionSubject: 'experience',
|
|
766
803
|
action: 'measured',
|
|
@@ -768,7 +805,7 @@ function createInteractionMetricsPayload(interaction, interactionId, experimenta
|
|
|
768
805
|
source: 'measured',
|
|
769
806
|
tags: ['observability'],
|
|
770
807
|
attributes: {
|
|
771
|
-
properties: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
808
|
+
properties: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
772
809
|
// basic
|
|
773
810
|
'event:hostname': ((_window$location = window.location) === null || _window$location === void 0 ? void 0 : _window$location.hostname) || 'unknown',
|
|
774
811
|
'event:product': config.product,
|
|
@@ -782,7 +819,7 @@ function createInteractionMetricsPayload(interaction, interactionId, experimenta
|
|
|
782
819
|
'event:region': config.region || 'unknown',
|
|
783
820
|
'experience:key': experimental ? 'custom.experimental-interaction-metrics' : 'custom.interaction-metrics',
|
|
784
821
|
'experience:name': newUFOName
|
|
785
|
-
}, getBrowserMetadata()), getSSRProperties(type)), getPPSMetrics(interaction)), getPaintMetrics(type)), getNavigationMetrics(type)), getVCMetrics(interaction)), experimental ? (0, _createExperimentalInteractionMetricsPayload.getExperimentalVCMetrics)(interaction) : undefined), (_config$additionalPay = config.additionalPayloadData) === null || _config$additionalPay === void 0 ? void 0 : _config$additionalPay.call(config, interaction)), getTracingContextData(interaction)), getStylesheetMetrics()), getErrorCounts(interaction)), {}, {
|
|
822
|
+
}, getBrowserMetadata()), getSSRProperties(type)), getAssetsMetrics(interaction, resourceTimings)), getPPSMetrics(interaction)), getPaintMetrics(type)), getNavigationMetrics(type)), getVCMetrics(interaction)), experimental ? (0, _createExperimentalInteractionMetricsPayload.getExperimentalVCMetrics)(interaction) : undefined), (_config$additionalPay = config.additionalPayloadData) === null || _config$additionalPay === void 0 ? void 0 : _config$additionalPay.call(config, interaction)), getTracingContextData(interaction)), getStylesheetMetrics()), getErrorCounts(interaction)), {}, {
|
|
786
823
|
interactionMetrics: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
787
824
|
namePrefix: config.namePrefix || '',
|
|
788
825
|
segmentPrefix: config.segmentPrefix || '',
|
|
@@ -814,7 +851,7 @@ function createInteractionMetricsPayload(interaction, interactionId, experimenta
|
|
|
814
851
|
marks: optimizeMarks(interaction.marks),
|
|
815
852
|
customData: optimizeCustomData(interaction),
|
|
816
853
|
reactProfilerTimings: optimizeReactProfilerTimings(interaction.reactProfilerTimings, start)
|
|
817
|
-
}, labelStack), getPageLoadInteractionMetrics()), getDetailedInteractionMetrics()), getPageLoadDetailedInteractionMetrics()), getBm3TrackerTimings(interaction)), {}, {
|
|
854
|
+
}, labelStack), getPageLoadInteractionMetrics()), getDetailedInteractionMetrics(resourceTimings)), getPageLoadDetailedInteractionMetrics()), getBm3TrackerTimings(interaction)), {}, {
|
|
818
855
|
'metric:ttai': experimental ? regularTTAI || expTTAI : undefined,
|
|
819
856
|
'metric:experimental:ttai': expTTAI
|
|
820
857
|
}),
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.setInteractionActiveTrace = exports.setActiveTrace = exports.getActiveTraceHttpRequestHeaders = exports.getActiveTrace = exports.generateSpanId = exports.clearActiveTrace = void 0;
|
|
6
|
+
exports.setInteractionActiveTrace = exports.setActiveTrace = exports.getActiveTraceHttpRequestHeaders = exports.getActiveTraceAsQueryParams = exports.getActiveTrace = exports.generateSpanId = exports.clearActiveTrace = void 0;
|
|
7
7
|
var _makeTraceHttpRequestHeaders = require("./utils/make-trace-http-request-headers");
|
|
8
8
|
var state = {
|
|
9
9
|
context: null
|
|
@@ -37,4 +37,8 @@ var getActiveTraceHttpRequestHeaders = exports.getActiveTraceHttpRequestHeaders
|
|
|
37
37
|
traceId = _state$context.traceId,
|
|
38
38
|
spanId = _state$context.spanId;
|
|
39
39
|
return (0, _makeTraceHttpRequestHeaders.makeTraceHttpRequestHeaders)(traceId, spanId);
|
|
40
|
+
};
|
|
41
|
+
var getActiveTraceAsQueryParams = exports.getActiveTraceAsQueryParams = function getActiveTraceAsQueryParams(_url) {
|
|
42
|
+
var traceHeaders = getActiveTraceHttpRequestHeaders(_url);
|
|
43
|
+
return traceHeaders ? new URLSearchParams(traceHeaders).toString().toLowerCase() : null;
|
|
40
44
|
};
|
|
@@ -11,6 +11,7 @@ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers
|
|
|
11
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
12
|
var _scheduler = require("scheduler");
|
|
13
13
|
var _uuid = require("uuid");
|
|
14
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
14
15
|
var _coinflip = _interopRequireDefault(require("../coinflip"));
|
|
15
16
|
var _config = require("../config");
|
|
16
17
|
var _experienceTraceIdContext = require("../experience-trace-id-context");
|
|
@@ -54,7 +55,9 @@ function UFOSegment(_ref) {
|
|
|
54
55
|
}, [parentContext, segmentName, segmentId]);
|
|
55
56
|
var interactionId = (0, _react.useContext)(_interactionIdContext.default);
|
|
56
57
|
var interactionContext = (0, _react.useMemo)(function () {
|
|
57
|
-
(0,
|
|
58
|
+
if (!(0, _platformFeatureFlags.fg)('platform-ufo-add-segment-use-effect')) {
|
|
59
|
+
(0, _interactionMetrics.addSegment)(labelStack);
|
|
60
|
+
}
|
|
58
61
|
var lastCompleteEndTime = 0;
|
|
59
62
|
function complete() {
|
|
60
63
|
var endTime = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : performance.now();
|
|
@@ -233,6 +236,9 @@ function UFOSegment(_ref) {
|
|
|
233
236
|
}
|
|
234
237
|
}, [interactionContext]);
|
|
235
238
|
(0, _react.useEffect)(function () {
|
|
239
|
+
if ((0, _platformFeatureFlags.fg)('platform-ufo-add-segment-use-effect')) {
|
|
240
|
+
(0, _interactionMetrics.addSegment)(labelStack);
|
|
241
|
+
}
|
|
236
242
|
return function () {
|
|
237
243
|
(0, _interactionMetrics.removeSegment)(labelStack);
|
|
238
244
|
};
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.MultiRevisionHeatmap = void 0;
|
|
8
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
|
+
var _objectDestructuringEmpty2 = _interopRequireDefault(require("@babel/runtime/helpers/objectDestructuringEmpty"));
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
12
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
13
|
+
var UNUSED_SECTOR = 0;
|
|
14
|
+
var MultiRevisionHeatmap = exports.MultiRevisionHeatmap = /*#__PURE__*/function () {
|
|
15
|
+
function MultiRevisionHeatmap(_ref) {
|
|
16
|
+
var _this = this;
|
|
17
|
+
var viewport = _ref.viewport,
|
|
18
|
+
revisions = _ref.revisions,
|
|
19
|
+
arraySize = _ref.arraySize,
|
|
20
|
+
devToolsEnabled = _ref.devToolsEnabled;
|
|
21
|
+
(0, _classCallCheck2.default)(this, MultiRevisionHeatmap);
|
|
22
|
+
(0, _defineProperty2.default)(this, "arraySize", {
|
|
23
|
+
w: 200,
|
|
24
|
+
h: 200
|
|
25
|
+
});
|
|
26
|
+
(0, _defineProperty2.default)(this, "mapPixelsToHeatmap", function (left, top, width, height) {
|
|
27
|
+
var _this$viewport = _this.viewport,
|
|
28
|
+
w = _this$viewport.w,
|
|
29
|
+
h = _this$viewport.h;
|
|
30
|
+
var l = Math.floor(left / w * _this.arraySize.w);
|
|
31
|
+
var t = Math.floor(top / h * _this.arraySize.h);
|
|
32
|
+
var r = Math.ceil((left + width) / w * _this.arraySize.w);
|
|
33
|
+
var b = Math.ceil((top + height) / h * _this.arraySize.h);
|
|
34
|
+
|
|
35
|
+
// correct values to min - 0, max - arraySize
|
|
36
|
+
var result = {
|
|
37
|
+
l: Math.max(0, l),
|
|
38
|
+
t: Math.max(0, t),
|
|
39
|
+
r: Math.min(_this.arraySize.w, r),
|
|
40
|
+
b: Math.min(_this.arraySize.h, b)
|
|
41
|
+
};
|
|
42
|
+
return result;
|
|
43
|
+
});
|
|
44
|
+
(0, _defineProperty2.default)(this, "getElementRatio", function (mappedValues) {
|
|
45
|
+
var r = mappedValues.r,
|
|
46
|
+
l = mappedValues.l,
|
|
47
|
+
b = mappedValues.b,
|
|
48
|
+
t = mappedValues.t;
|
|
49
|
+
return (r - l) * (b - t) / (_this.arraySize.w * _this.arraySize.h);
|
|
50
|
+
});
|
|
51
|
+
this.viewport = viewport;
|
|
52
|
+
this.revisions = revisions;
|
|
53
|
+
if (arraySize) {
|
|
54
|
+
this.arraySize = arraySize;
|
|
55
|
+
}
|
|
56
|
+
this.heatmaps = new Array(revisions.length);
|
|
57
|
+
this.componentsLogs = new Array(revisions.length);
|
|
58
|
+
this.vcRatios = new Array(revisions.length);
|
|
59
|
+
this.devToolsEnabled = devToolsEnabled || false;
|
|
60
|
+
revisions.forEach(function (_ref2, i) {
|
|
61
|
+
(0, _objectDestructuringEmpty2.default)(_ref2);
|
|
62
|
+
_this.heatmaps[i] = _this.getCleanHeatmap();
|
|
63
|
+
_this.componentsLogs[i] = {};
|
|
64
|
+
_this.vcRatios[i] = {};
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
return (0, _createClass2.default)(MultiRevisionHeatmap, [{
|
|
68
|
+
key: "handleUpdate",
|
|
69
|
+
value: function handleUpdate(_ref3) {
|
|
70
|
+
var _this2 = this;
|
|
71
|
+
var time = _ref3.time,
|
|
72
|
+
type = _ref3.type,
|
|
73
|
+
classification = _ref3.classification,
|
|
74
|
+
intersectionRect = _ref3.intersectionRect,
|
|
75
|
+
element = _ref3.element,
|
|
76
|
+
targetName = _ref3.targetName,
|
|
77
|
+
ignoreReason = _ref3.ignoreReason,
|
|
78
|
+
onError = _ref3.onError;
|
|
79
|
+
var mappedValues = this.mapPixelsToHeatmap(intersectionRect.left, intersectionRect.top, intersectionRect.width, intersectionRect.height);
|
|
80
|
+
var result = this.applyChangesToHeatMap(mappedValues, time, classification);
|
|
81
|
+
if (result !== true) {
|
|
82
|
+
onError(result);
|
|
83
|
+
}
|
|
84
|
+
var componentRatio = this.getElementRatio(mappedValues);
|
|
85
|
+
this.revisions.forEach(function (_, i) {
|
|
86
|
+
if (classification[i]) {
|
|
87
|
+
_this2.vcRatios[i][targetName] = componentRatio;
|
|
88
|
+
}
|
|
89
|
+
if (!_this2.componentsLogs[i][time]) {
|
|
90
|
+
_this2.componentsLogs[i][time] = [];
|
|
91
|
+
}
|
|
92
|
+
_this2.componentsLogs[i][time].push({
|
|
93
|
+
__debug__element: _this2.devToolsEnabled ? new WeakRef(element) : null,
|
|
94
|
+
intersectionRect: intersectionRect,
|
|
95
|
+
targetName: targetName,
|
|
96
|
+
ignoreReason: ignoreReason
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
}, {
|
|
101
|
+
key: "getData",
|
|
102
|
+
value: function getData() {
|
|
103
|
+
return {
|
|
104
|
+
heatmaps: this.heatmaps
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
}, {
|
|
108
|
+
key: "getPayloadShapedData",
|
|
109
|
+
value: function getPayloadShapedData(args) {
|
|
110
|
+
var result = this.processData(args);
|
|
111
|
+
var payload = this.revisions.map(function (rev, i) {
|
|
112
|
+
var vcDetails = {};
|
|
113
|
+
args.VCParts.forEach(function (VCPart) {
|
|
114
|
+
vcDetails[VCPart] = {
|
|
115
|
+
t: result[i].VC[VCPart] || 0,
|
|
116
|
+
e: Array.from(result[i].VCBox[VCPart] || [])
|
|
117
|
+
};
|
|
118
|
+
});
|
|
119
|
+
return {
|
|
120
|
+
revision: rev.name,
|
|
121
|
+
vcDetails: vcDetails,
|
|
122
|
+
clean: args.clean,
|
|
123
|
+
'metric:vc90': null // will be set or not in the payload generator
|
|
124
|
+
};
|
|
125
|
+
});
|
|
126
|
+
return payload;
|
|
127
|
+
}
|
|
128
|
+
}, {
|
|
129
|
+
key: "processData",
|
|
130
|
+
value: function processData(_ref4) {
|
|
131
|
+
var _this3 = this;
|
|
132
|
+
var VCParts = _ref4.VCParts,
|
|
133
|
+
VCCalculationMethods = _ref4.VCCalculationMethods,
|
|
134
|
+
_ref4$ssr = _ref4.ssr,
|
|
135
|
+
ssr = _ref4$ssr === void 0 ? UNUSED_SECTOR : _ref4$ssr;
|
|
136
|
+
return this.heatmaps.map(function (heatmap, i) {
|
|
137
|
+
var lastUpdate = {};
|
|
138
|
+
var totalPainted = 0;
|
|
139
|
+
var componentsLog = _this3.componentsLogs[i];
|
|
140
|
+
if (ssr !== UNUSED_SECTOR) {
|
|
141
|
+
var _window$document;
|
|
142
|
+
var element = {
|
|
143
|
+
__debug__element: new WeakRef((_window$document = window.document) === null || _window$document === void 0 ? void 0 : _window$document.body),
|
|
144
|
+
intersectionRect: {
|
|
145
|
+
top: 0,
|
|
146
|
+
left: 0,
|
|
147
|
+
right: 0,
|
|
148
|
+
bottom: 0,
|
|
149
|
+
x: 0,
|
|
150
|
+
y: 0,
|
|
151
|
+
width: _this3.viewport.w,
|
|
152
|
+
height: _this3.viewport.h,
|
|
153
|
+
toJSON: function toJSON() {
|
|
154
|
+
return {};
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
targetName: 'SSR'
|
|
158
|
+
};
|
|
159
|
+
if (!componentsLog[ssr]) {
|
|
160
|
+
componentsLog[ssr] = [];
|
|
161
|
+
}
|
|
162
|
+
componentsLog[ssr].push(element);
|
|
163
|
+
}
|
|
164
|
+
for (var _i = 0; _i < heatmap.length; _i++) {
|
|
165
|
+
var rounded = Math.floor(heatmap[_i] === UNUSED_SECTOR && ssr !== UNUSED_SECTOR ? ssr : heatmap[_i]);
|
|
166
|
+
totalPainted += rounded !== UNUSED_SECTOR ? 1 : 0;
|
|
167
|
+
if (rounded !== UNUSED_SECTOR) {
|
|
168
|
+
lastUpdate[rounded] = lastUpdate[rounded] ? lastUpdate[rounded] + 1 : 1;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
var entries = Object.entries(lastUpdate).map(function (a) {
|
|
172
|
+
return [parseInt(a[0], 10), a[1]];
|
|
173
|
+
}).sort(function (a, b) {
|
|
174
|
+
return a[0] > b[0] ? 1 : -1;
|
|
175
|
+
});
|
|
176
|
+
var _VCCalculationMethods = VCCalculationMethods[i]({
|
|
177
|
+
VCParts: VCParts,
|
|
178
|
+
componentsLog: componentsLog,
|
|
179
|
+
entries: entries,
|
|
180
|
+
totalPainted: totalPainted
|
|
181
|
+
}),
|
|
182
|
+
VC = _VCCalculationMethods.VC,
|
|
183
|
+
VCBox = _VCCalculationMethods.VCBox;
|
|
184
|
+
var VCEntries = entries.reduce(function (acc, _ref5, i) {
|
|
185
|
+
var _acc$abs, _componentsLog$timest;
|
|
186
|
+
var _ref6 = (0, _slicedToArray2.default)(_ref5, 2),
|
|
187
|
+
timestamp = _ref6[0],
|
|
188
|
+
entryPainted = _ref6[1];
|
|
189
|
+
var currentlyPainted = entryPainted + (((_acc$abs = acc.abs[i - 1]) === null || _acc$abs === void 0 ? void 0 : _acc$abs[1]) || 0);
|
|
190
|
+
var currentlyPaintedRatio = Math.round(currentlyPainted / totalPainted * 1000) / 10;
|
|
191
|
+
var logEntry = (_componentsLog$timest = componentsLog[timestamp]) === null || _componentsLog$timest === void 0 ? void 0 : _componentsLog$timest.map(function (v) {
|
|
192
|
+
return v.targetName;
|
|
193
|
+
});
|
|
194
|
+
acc.abs.push([timestamp, currentlyPainted]);
|
|
195
|
+
acc.rel.push({
|
|
196
|
+
time: timestamp,
|
|
197
|
+
vc: currentlyPaintedRatio,
|
|
198
|
+
elements: logEntry
|
|
199
|
+
});
|
|
200
|
+
return acc;
|
|
201
|
+
}, {
|
|
202
|
+
abs: [],
|
|
203
|
+
rel: []
|
|
204
|
+
});
|
|
205
|
+
return {
|
|
206
|
+
VC: VC,
|
|
207
|
+
VCBox: VCBox,
|
|
208
|
+
VCEntries: VCEntries,
|
|
209
|
+
totalPainted: totalPainted
|
|
210
|
+
};
|
|
211
|
+
});
|
|
212
|
+
}
|
|
213
|
+
}, {
|
|
214
|
+
key: "applyChangesToHeatMap",
|
|
215
|
+
value: function applyChangesToHeatMap(a, time, classification) {
|
|
216
|
+
var l = a.l,
|
|
217
|
+
t = a.t,
|
|
218
|
+
r = a.r,
|
|
219
|
+
b = a.b;
|
|
220
|
+
var size = classification.length;
|
|
221
|
+
for (var row = t; row < b; row++) {
|
|
222
|
+
if (this.heatmaps[0][row] === undefined) {
|
|
223
|
+
try {
|
|
224
|
+
return {
|
|
225
|
+
error: "index - ".concat(row),
|
|
226
|
+
time: time
|
|
227
|
+
};
|
|
228
|
+
} catch (e) {
|
|
229
|
+
return {
|
|
230
|
+
error: 'row error',
|
|
231
|
+
time: time
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
} else {
|
|
235
|
+
for (var heatmapIndex = 0; heatmapIndex < size; heatmapIndex++) {
|
|
236
|
+
if (classification[heatmapIndex]) {
|
|
237
|
+
this.heatmaps[heatmapIndex].fill(time, this.getIndex(l, row), this.getIndex(r, row));
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
return true;
|
|
243
|
+
}
|
|
244
|
+
}, {
|
|
245
|
+
key: "getIndex",
|
|
246
|
+
value: function getIndex(x, y) {
|
|
247
|
+
return x + this.arraySize.w * y;
|
|
248
|
+
}
|
|
249
|
+
}, {
|
|
250
|
+
key: "getCleanHeatmap",
|
|
251
|
+
value: function getCleanHeatmap() {
|
|
252
|
+
return new Uint32Array(this.arraySize.w * this.arraySize.h);
|
|
253
|
+
}
|
|
254
|
+
}], [{
|
|
255
|
+
key: "makeVCReturnObj",
|
|
256
|
+
value: function makeVCReturnObj(VCParts) {
|
|
257
|
+
var vc = {};
|
|
258
|
+
VCParts.forEach(function (v) {
|
|
259
|
+
vc[v] = null;
|
|
260
|
+
});
|
|
261
|
+
return vc;
|
|
262
|
+
}
|
|
263
|
+
}]);
|
|
264
|
+
}();
|