@atlaskit/react-ufo 3.3.2 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/dist/cjs/assets/index.js +26 -16
- package/dist/cjs/assets/utils.js +47 -4
- package/dist/cjs/create-payload/index.js +58 -27
- package/dist/cjs/interaction-metrics-init/index.js +11 -9
- package/dist/cjs/vc/index.js +6 -2
- package/dist/cjs/vc/vc-observer-new/get-element-name.js +19 -6
- package/dist/cjs/vc/vc-observer-new/index.js +6 -3
- package/dist/cjs/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +4 -2
- package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +10 -11
- package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +23 -30
- package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +7 -7
- package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +3 -3
- package/dist/cjs/vc/vc-observer-new/window-event-observer/index.js +5 -1
- package/dist/es2019/assets/index.js +27 -13
- package/dist/es2019/assets/utils.js +47 -3
- package/dist/es2019/create-payload/index.js +14 -9
- package/dist/es2019/interaction-metrics-init/index.js +11 -9
- package/dist/es2019/vc/index.js +6 -2
- package/dist/es2019/vc/vc-observer-new/get-element-name.js +19 -6
- package/dist/es2019/vc/vc-observer-new/index.js +7 -3
- package/dist/es2019/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +4 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +1 -2
- package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +15 -12
- package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +5 -4
- package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +3 -2
- package/dist/es2019/vc/vc-observer-new/window-event-observer/index.js +5 -1
- package/dist/esm/assets/index.js +27 -17
- package/dist/esm/assets/utils.js +46 -3
- package/dist/esm/create-payload/index.js +58 -27
- package/dist/esm/interaction-metrics-init/index.js +11 -9
- package/dist/esm/vc/index.js +6 -2
- package/dist/esm/vc/vc-observer-new/get-element-name.js +19 -6
- package/dist/esm/vc/vc-observer-new/index.js +6 -3
- package/dist/esm/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.js +4 -2
- package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +10 -11
- package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js +23 -30
- package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.js +7 -7
- package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js +3 -3
- package/dist/esm/vc/vc-observer-new/window-event-observer/index.js +5 -1
- package/dist/types/assets/index.d.ts +5 -5
- package/dist/types/assets/utils.d.ts +4 -1
- package/dist/types/common/assets/types.d.ts +14 -8
- package/dist/types/common/index.d.ts +11 -1
- package/dist/types/config/index.d.ts +6 -0
- package/dist/types/create-payload/index.d.ts +769 -1
- package/dist/types/resource-timing/common/types.d.ts +1 -1
- package/dist/types/vc/vc-observer-new/index.d.ts +3 -2
- package/dist/types/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.d.ts +1 -1
- package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.d.ts +2 -2
- package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.d.ts +2 -1
- package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.d.ts +2 -1
- package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/types.d.ts +2 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/types.d.ts +2 -0
- package/dist/types-ts4.5/assets/index.d.ts +5 -5
- package/dist/types-ts4.5/assets/utils.d.ts +4 -1
- package/dist/types-ts4.5/common/assets/types.d.ts +14 -8
- package/dist/types-ts4.5/common/index.d.ts +11 -1
- package/dist/types-ts4.5/config/index.d.ts +6 -0
- package/dist/types-ts4.5/create-payload/index.d.ts +769 -1
- package/dist/types-ts4.5/resource-timing/common/types.d.ts +1 -1
- package/dist/types-ts4.5/vc/vc-observer-new/index.d.ts +3 -2
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.d.ts +1 -1
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.d.ts +2 -2
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.d.ts +2 -1
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.d.ts +2 -1
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/types.d.ts +2 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/types.d.ts +2 -0
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# @atlaskit/ufo-interaction-ignore
|
|
2
2
|
|
|
3
|
+
## 3.4.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#124334](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/124334)
|
|
8
|
+
[`419c4451a0c0f`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/419c4451a0c0f) -
|
|
9
|
+
Updated assets config to include different types of requests
|
|
10
|
+
|
|
11
|
+
## 3.3.3
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- [#123538](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/123538)
|
|
16
|
+
[`2dd75c16ca0c4`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/2dd75c16ca0c4) -
|
|
17
|
+
fix handling of potentially invalid selectors in TTVC v3
|
|
18
|
+
|
|
3
19
|
## 3.3.2
|
|
4
20
|
|
|
5
21
|
### Patch Changes
|
package/dist/cjs/assets/index.js
CHANGED
|
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.CHRSummary = exports.CHRReporter = void 0;
|
|
8
|
-
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
8
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
10
9
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
11
10
|
var _defineProperty4 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
@@ -21,9 +20,8 @@ var CHRSummary = exports.CHRSummary = /*#__PURE__*/function () {
|
|
|
21
20
|
return (0, _createClass2.default)(CHRSummary, [{
|
|
22
21
|
key: "add",
|
|
23
22
|
value: function add(asset) {
|
|
24
|
-
var
|
|
25
|
-
var
|
|
26
|
-
var type = (0, _utils.calculateTransferType)(asset.type, asset.duration, size);
|
|
23
|
+
var encodedSize = asset.encodedSize || 0;
|
|
24
|
+
var type = (0, _utils.calculateTransferType)(asset.name, asset.initiatorType, asset.duration, asset.transferSize);
|
|
27
25
|
if (type === null) {
|
|
28
26
|
return;
|
|
29
27
|
}
|
|
@@ -54,28 +52,39 @@ var CHRReporter = exports.CHRReporter = /*#__PURE__*/function () {
|
|
|
54
52
|
(0, _defineProperty4.default)(this, "all", new CHRSummary());
|
|
55
53
|
(0, _defineProperty4.default)(this, "allAtlassian", new CHRSummary());
|
|
56
54
|
(0, _defineProperty4.default)(this, "preloaded", new CHRSummary());
|
|
55
|
+
(0, _defineProperty4.default)(this, "defaultAllowedTypes", ['js']);
|
|
57
56
|
}
|
|
58
57
|
return (0, _createClass2.default)(CHRReporter, [{
|
|
59
58
|
key: "get",
|
|
60
|
-
value: function get(resourceTimings,
|
|
59
|
+
value: function get(resourceTimings, assetsConfig, SSRDoneTime) {
|
|
61
60
|
var _this = this;
|
|
62
61
|
try {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
if (
|
|
62
|
+
if (resourceTimings === null) {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
resourceTimings.forEach(function (entry) {
|
|
66
|
+
if (!(0, _utils.checkIfTimingsAvailable)(entry)) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
if (entry.encodedSize === entry.decodedSize) {
|
|
70
|
+
// incorrectly reported size
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
var type = (0, _utils.getTypeOfRequest)(entry);
|
|
74
|
+
if (!(assetsConfig.allowedTypes || _this.defaultAllowedTypes).includes(type)) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
if (assetsConfig.classification.all) {
|
|
68
78
|
_this.all.add(entry);
|
|
69
79
|
}
|
|
70
|
-
if (
|
|
71
|
-
label: label,
|
|
80
|
+
if (assetsConfig.classification.allAtlassian({
|
|
72
81
|
entry: entry
|
|
73
82
|
})) {
|
|
74
83
|
_this.allAtlassian.add(entry);
|
|
75
84
|
}
|
|
76
|
-
if (
|
|
77
|
-
|
|
78
|
-
|
|
85
|
+
if (assetsConfig.classification.preloaded({
|
|
86
|
+
entry: entry,
|
|
87
|
+
SSRDoneTime: SSRDoneTime
|
|
79
88
|
})) {
|
|
80
89
|
_this.preloaded.add(entry);
|
|
81
90
|
}
|
|
@@ -83,11 +92,12 @@ var CHRReporter = exports.CHRReporter = /*#__PURE__*/function () {
|
|
|
83
92
|
if (this.all.bundlesCount === 0) {
|
|
84
93
|
return null;
|
|
85
94
|
}
|
|
86
|
-
|
|
95
|
+
var CHRData = {
|
|
87
96
|
all: CHRSummary.makePayload(this.all),
|
|
88
97
|
allAtlassian: CHRSummary.makePayload(this.allAtlassian),
|
|
89
98
|
preloaded: CHRSummary.makePayload(this.preloaded)
|
|
90
99
|
};
|
|
100
|
+
return CHRData;
|
|
91
101
|
} catch (error) {
|
|
92
102
|
return null;
|
|
93
103
|
}
|
package/dist/cjs/assets/utils.js
CHANGED
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.round = exports.calculateTransferType = exports.cacheableTypes = exports.NETWORK_KEY = exports.MEMORY_KEY = exports.DISK_KEY = void 0;
|
|
6
|
+
exports.round = exports.getTypeOfRequest = exports.checkIfTimingsAvailable = exports.calculateTransferType = exports.cacheableTypes = exports.NETWORK_KEY = exports.MEMORY_KEY = exports.DISK_KEY = void 0;
|
|
7
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'];
|
|
8
|
+
var cacheableTypes = exports.cacheableTypes = ['script', 'link', 'other'];
|
|
9
9
|
var MEMORY_KEY = exports.MEMORY_KEY = 'mem';
|
|
10
10
|
var DISK_KEY = exports.DISK_KEY = 'disk';
|
|
11
11
|
var NETWORK_KEY = exports.NETWORK_KEY = 'net';
|
|
12
|
-
var calculateTransferType = exports.calculateTransferType = function calculateTransferType(type, duration, size) {
|
|
13
|
-
if (!cacheableTypes.includes(type)) {
|
|
12
|
+
var calculateTransferType = exports.calculateTransferType = function calculateTransferType(name, type, duration, size) {
|
|
13
|
+
if (!cacheableTypes.includes(type) && !(type === 'other' && name.includes('.js'))) {
|
|
14
14
|
return null;
|
|
15
15
|
}
|
|
16
16
|
if ((size === undefined || size === 0) && duration === 0) {
|
|
@@ -24,6 +24,49 @@ var calculateTransferType = exports.calculateTransferType = function calculateTr
|
|
|
24
24
|
}
|
|
25
25
|
return NETWORK_KEY;
|
|
26
26
|
};
|
|
27
|
+
var getTypeOfRequest = exports.getTypeOfRequest = function getTypeOfRequest(_ref) {
|
|
28
|
+
var name = _ref.name,
|
|
29
|
+
type = _ref.initiatorType;
|
|
30
|
+
var category = 'other';
|
|
31
|
+
var urlWithoutQuery = name.split('?')[0];
|
|
32
|
+
switch (type) {
|
|
33
|
+
case 'script':
|
|
34
|
+
category = 'js';
|
|
35
|
+
break;
|
|
36
|
+
case 'link':
|
|
37
|
+
if (urlWithoutQuery.endsWith('.css')) {
|
|
38
|
+
category = 'css';
|
|
39
|
+
}
|
|
40
|
+
if (urlWithoutQuery.endsWith('.js')) {
|
|
41
|
+
category = 'js';
|
|
42
|
+
}
|
|
43
|
+
break;
|
|
44
|
+
case 'img':
|
|
45
|
+
category = 'image';
|
|
46
|
+
break;
|
|
47
|
+
case 'font':
|
|
48
|
+
category = 'font';
|
|
49
|
+
break;
|
|
50
|
+
default:
|
|
51
|
+
if (urlWithoutQuery.endsWith('.js')) {
|
|
52
|
+
category = 'js';
|
|
53
|
+
} else if (urlWithoutQuery.endsWith('.css')) {
|
|
54
|
+
category = 'css';
|
|
55
|
+
} else if (urlWithoutQuery.match(/\.(woff|woff2|ttf|otf)$/)) {
|
|
56
|
+
category = 'font';
|
|
57
|
+
} else if (urlWithoutQuery.match(/\.(png|jpg|jpeg|gif|svg)$/)) {
|
|
58
|
+
category = 'image';
|
|
59
|
+
}
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
return category;
|
|
63
|
+
};
|
|
64
|
+
var checkIfTimingsAvailable = exports.checkIfTimingsAvailable = function checkIfTimingsAvailable(entry) {
|
|
65
|
+
if (entry.decodedSize === 0 && entry.encodedSize === 0 && entry.requestStart === 0 && entry.responseStart === 0) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
return true;
|
|
69
|
+
};
|
|
27
70
|
var round = exports.round = function round(n) {
|
|
28
71
|
if (isNaN(n)) {
|
|
29
72
|
return 0;
|
|
@@ -28,6 +28,7 @@ var _hiddenTiming = require("../hidden-timing");
|
|
|
28
28
|
var initialPageLoadExtraTiming = _interopRequireWildcard(require("../initial-page-load-extra-timing"));
|
|
29
29
|
var _interactionMetrics = require("../interaction-metrics");
|
|
30
30
|
var resourceTiming = _interopRequireWildcard(require("../resource-timing"));
|
|
31
|
+
var _resourceTimingBuffer = require("../resource-timing/common/utils/resource-timing-buffer");
|
|
31
32
|
var _roundNumber = require("../round-number");
|
|
32
33
|
var ssr = _interopRequireWildcard(require("../ssr"));
|
|
33
34
|
var _utils = require("./common/utils");
|
|
@@ -257,18 +258,19 @@ function getSSRProperties(type) {
|
|
|
257
258
|
'ssr:featureFlags': getSSRFeatureFlags(type)
|
|
258
259
|
};
|
|
259
260
|
}
|
|
260
|
-
var getAssetsMetrics = function getAssetsMetrics(interaction,
|
|
261
|
+
var getAssetsMetrics = function getAssetsMetrics(interaction, SSRDoneTime) {
|
|
261
262
|
try {
|
|
262
263
|
var config = (0, _config.getConfig)();
|
|
263
264
|
var type = interaction.type;
|
|
264
265
|
var allowedTypes = ['page_load', 'transition'];
|
|
265
|
-
var
|
|
266
|
-
if (!allowedTypes.includes(type) || !
|
|
266
|
+
var assetsConfig = config === null || config === void 0 ? void 0 : config.assetsConfig;
|
|
267
|
+
if (!allowedTypes.includes(type) || !assetsConfig) {
|
|
267
268
|
// Skip if: type not allowed or assetsClassification isn't configured
|
|
268
269
|
return {};
|
|
269
270
|
}
|
|
270
271
|
var reporter = new _assets.CHRReporter();
|
|
271
|
-
var
|
|
272
|
+
var resourceTimings = (0, _resourceTimingBuffer.filterResourceTimings)(interaction.start, interaction.end);
|
|
273
|
+
var assets = reporter.get(resourceTimings, assetsConfig, SSRDoneTime);
|
|
272
274
|
if (assets) {
|
|
273
275
|
// Only add assets in case it exists
|
|
274
276
|
return {
|
|
@@ -647,7 +649,7 @@ function createInteractionMetricsPayload(_x, _x2, _x3) {
|
|
|
647
649
|
function _createInteractionMetricsPayload() {
|
|
648
650
|
_createInteractionMetricsPayload = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(interaction, interactionId, experimental) {
|
|
649
651
|
var _window$location, _config$additionalPay;
|
|
650
|
-
var interactionPayloadStart, config, end, start, ufoName, knownSegments, rate, type, abortReason, routeName, featureFlags, previousInteractionName, isPreviousInteractionAborted, abortedByInteractionName, pageVisibilityAtTTI, pageVisibilityAtTTAI, segments, segmentTree, isDetailedPayload, isPageLoad, calculatePageVisibilityFromTheStartOfPageLoad, moreAccuratePageVisibilityAtTTI, moreAccuratePageVisibilityAtTTAI, labelStack,
|
|
652
|
+
var interactionPayloadStart, config, end, start, ufoName, knownSegments, rate, type, abortReason, routeName, featureFlags, previousInteractionName, isPreviousInteractionAborted, abortedByInteractionName, pageVisibilityAtTTI, pageVisibilityAtTTAI, segments, segmentTree, isDetailedPayload, isPageLoad, calculatePageVisibilityFromTheStartOfPageLoad, moreAccuratePageVisibilityAtTTI, moreAccuratePageVisibilityAtTTAI, labelStack, getInitialPageLoadSSRMetrics, pageLoadInteractionMetrics, getDetailedInteractionMetrics, getPageLoadDetailedInteractionMetrics, newUFOName, resourceTimings, _yield$Promise$all, _yield$Promise$all2, vcMetrics, experimentalMetrics, payload;
|
|
651
653
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
652
654
|
while (1) switch (_context.prev = _context.next) {
|
|
653
655
|
case 0:
|
|
@@ -674,7 +676,7 @@ function _createInteractionMetricsPayload() {
|
|
|
674
676
|
labelStack = interaction.labelStack ? {
|
|
675
677
|
labelStack: (0, _utils.optimizeLabelStack)(interaction.labelStack, (0, _constants.getReactUFOVersion)(interaction.type))
|
|
676
678
|
} : {}; // Page Load
|
|
677
|
-
|
|
679
|
+
getInitialPageLoadSSRMetrics = function getInitialPageLoadSSRMetrics() {
|
|
678
680
|
var _config$ssr;
|
|
679
681
|
if (!isPageLoad) {
|
|
680
682
|
return {};
|
|
@@ -688,7 +690,8 @@ function _createInteractionMetricsPayload() {
|
|
|
688
690
|
isBM3ConfigSSRDoneAsFmp: interaction.metaData.__legacy__bm3ConfigSSRDoneAsFmp,
|
|
689
691
|
isUFOConfigSSRDoneAsFmp: interaction.metaData.__legacy__bm3ConfigSSRDoneAsFmp || !!(config !== null && config !== void 0 && (_config$ssr = config.ssr) !== null && _config$ssr !== void 0 && _config$ssr.getSSRDoneTime)
|
|
690
692
|
});
|
|
691
|
-
};
|
|
693
|
+
};
|
|
694
|
+
pageLoadInteractionMetrics = getInitialPageLoadSSRMetrics(); // Detailed payload. Page visibility = visible
|
|
692
695
|
getDetailedInteractionMetrics = function getDetailedInteractionMetrics(resourceTimings) {
|
|
693
696
|
if (experimental || window.__UFO_COMPACT_PAYLOAD__ || !isDetailedPayload) {
|
|
694
697
|
return {};
|
|
@@ -731,9 +734,9 @@ function _createInteractionMetricsPayload() {
|
|
|
731
734
|
}
|
|
732
735
|
newUFOName = (0, _utils.sanitizeUfoName)(ufoName);
|
|
733
736
|
resourceTimings = getResourceTimings(start, end);
|
|
734
|
-
_context.next =
|
|
737
|
+
_context.next = 24;
|
|
735
738
|
return Promise.all([(0, _getVcMetrics.default)(interaction), experimental ? (0, _createExperimentalInteractionMetricsPayload.getExperimentalVCMetrics)(interaction) : Promise.resolve(undefined)]);
|
|
736
|
-
case
|
|
739
|
+
case 24:
|
|
737
740
|
_yield$Promise$all = _context.sent;
|
|
738
741
|
_yield$Promise$all2 = (0, _slicedToArray2.default)(_yield$Promise$all, 2);
|
|
739
742
|
vcMetrics = _yield$Promise$all2[0];
|
|
@@ -758,7 +761,7 @@ function _createInteractionMetricsPayload() {
|
|
|
758
761
|
'event:region': config.region || 'unknown',
|
|
759
762
|
'experience:key': experimental ? 'custom.experimental-interaction-metrics' : 'custom.interaction-metrics',
|
|
760
763
|
'experience:name': newUFOName
|
|
761
|
-
}, getBrowserMetadata()), getSSRProperties(type)), getAssetsMetrics(interaction,
|
|
764
|
+
}, getBrowserMetadata()), getSSRProperties(type)), getAssetsMetrics(interaction, pageLoadInteractionMetrics === null || pageLoadInteractionMetrics === void 0 ? void 0 : pageLoadInteractionMetrics.SSRDoneTime)), getPPSMetrics(interaction)), getPaintMetrics(type)), getNavigationMetrics(type)), vcMetrics), experimentalMetrics), (_config$additionalPay = config.additionalPayloadData) === null || _config$additionalPay === void 0 ? void 0 : _config$additionalPay.call(config, interaction)), getTracingContextData(interaction)), getStylesheetMetrics()), getErrorCounts(interaction)), {}, {
|
|
762
765
|
interactionMetrics: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
763
766
|
namePrefix: config.namePrefix || '',
|
|
764
767
|
segmentPrefix: config.segmentPrefix || '',
|
|
@@ -790,7 +793,7 @@ function _createInteractionMetricsPayload() {
|
|
|
790
793
|
marks: optimizeMarks(interaction.marks, (0, _constants.getReactUFOVersion)(interaction.type)),
|
|
791
794
|
customData: optimizeCustomData(interaction),
|
|
792
795
|
reactProfilerTimings: optimizeReactProfilerTimings(interaction.reactProfilerTimings, start, (0, _constants.getReactUFOVersion)(interaction.type))
|
|
793
|
-
}, labelStack),
|
|
796
|
+
}, labelStack), pageLoadInteractionMetrics), getDetailedInteractionMetrics(resourceTimings)), getPageLoadDetailedInteractionMetrics()), getBm3TrackerTimings(interaction)), {}, {
|
|
794
797
|
'metric:ttai': experimental ? regularTTAI || expTTAI : undefined,
|
|
795
798
|
'metric:experimental:ttai': expTTAI
|
|
796
799
|
}),
|
|
@@ -804,7 +807,7 @@ function _createInteractionMetricsPayload() {
|
|
|
804
807
|
}
|
|
805
808
|
payload.attributes.properties['event:sizeInKb'] = getPayloadSize(payload.attributes.properties);
|
|
806
809
|
return _context.abrupt("return", payload);
|
|
807
|
-
case
|
|
810
|
+
case 32:
|
|
808
811
|
case "end":
|
|
809
812
|
return _context.stop();
|
|
810
813
|
}
|
|
@@ -838,19 +841,47 @@ function _createPayloads() {
|
|
|
838
841
|
}));
|
|
839
842
|
return _createPayloads.apply(this, arguments);
|
|
840
843
|
}
|
|
841
|
-
function createExperimentalMetricsPayload(
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
844
|
+
function createExperimentalMetricsPayload(_x6, _x7) {
|
|
845
|
+
return _createExperimentalMetricsPayload.apply(this, arguments);
|
|
846
|
+
}
|
|
847
|
+
function _createExperimentalMetricsPayload() {
|
|
848
|
+
_createExperimentalMetricsPayload = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(interactionId, interaction) {
|
|
849
|
+
var config, ufoName, rate, pageVisibilityState, result;
|
|
850
|
+
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
851
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
852
|
+
case 0:
|
|
853
|
+
config = (0, _config.getConfig)();
|
|
854
|
+
if (config) {
|
|
855
|
+
_context3.next = 3;
|
|
856
|
+
break;
|
|
857
|
+
}
|
|
858
|
+
throw Error('UFO Configuration not provided');
|
|
859
|
+
case 3:
|
|
860
|
+
ufoName = (0, _utils.sanitizeUfoName)(interaction.ufoName);
|
|
861
|
+
rate = (0, _config.getExperimentalInteractionRate)(ufoName, interaction.type);
|
|
862
|
+
if ((0, _coinflip.default)(rate)) {
|
|
863
|
+
_context3.next = 7;
|
|
864
|
+
break;
|
|
865
|
+
}
|
|
866
|
+
return _context3.abrupt("return", null);
|
|
867
|
+
case 7:
|
|
868
|
+
pageVisibilityState = (0, _hiddenTiming.getPageVisibilityState)(interaction.start, interaction.end);
|
|
869
|
+
if (!(pageVisibilityState !== 'visible')) {
|
|
870
|
+
_context3.next = 10;
|
|
871
|
+
break;
|
|
872
|
+
}
|
|
873
|
+
return _context3.abrupt("return", null);
|
|
874
|
+
case 10:
|
|
875
|
+
_context3.next = 12;
|
|
876
|
+
return createInteractionMetricsPayload(interaction, interactionId, true);
|
|
877
|
+
case 12:
|
|
878
|
+
result = _context3.sent;
|
|
879
|
+
return _context3.abrupt("return", result);
|
|
880
|
+
case 14:
|
|
881
|
+
case "end":
|
|
882
|
+
return _context3.stop();
|
|
883
|
+
}
|
|
884
|
+
}, _callee3);
|
|
885
|
+
}));
|
|
886
|
+
return _createExperimentalMetricsPayload.apply(this, arguments);
|
|
856
887
|
}
|
|
@@ -39,17 +39,19 @@ function sinkInteraction(instance, payloadPackage) {
|
|
|
39
39
|
function sinkExperimentalInteractionMetrics(instance, payloadPackage) {
|
|
40
40
|
(0, _createExperimentalInteractionMetricsPayload.sinkExperimentalHandler)(function (interactionId, interaction) {
|
|
41
41
|
(0, _scheduler.unstable_scheduleCallback)(_scheduler.unstable_IdlePriority, function () {
|
|
42
|
-
var
|
|
43
|
-
|
|
44
|
-
if (
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
42
|
+
var payloadPromise = payloadPackage.createExperimentalMetricsPayload(interactionId, interaction);
|
|
43
|
+
payloadPromise.then(function (payload) {
|
|
44
|
+
if (payload) {
|
|
45
|
+
if ((0, _platformFeatureFlags.fg)('enable_ufo_devtools_api_for_extra_events')) {
|
|
46
|
+
// NOTE: This API is used by the UFO DevTool Chrome Extension and Criterion
|
|
47
|
+
var devToolObserver = globalThis.__ufo_devtool_onUfoPayload;
|
|
48
|
+
if (typeof devToolObserver === 'function') {
|
|
49
|
+
devToolObserver === null || devToolObserver === void 0 || devToolObserver(payload);
|
|
50
|
+
}
|
|
49
51
|
}
|
|
52
|
+
instance.sendOperationalEvent(payload);
|
|
50
53
|
}
|
|
51
|
-
|
|
52
|
-
}
|
|
54
|
+
});
|
|
53
55
|
});
|
|
54
56
|
});
|
|
55
57
|
}
|
package/dist/cjs/vc/index.js
CHANGED
|
@@ -12,17 +12,19 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
|
|
|
12
12
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
13
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
14
14
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
15
|
+
var _config = require("../config");
|
|
15
16
|
var _vcObserver = require("./vc-observer");
|
|
16
17
|
var _vcObserverNew = _interopRequireDefault(require("./vc-observer-new"));
|
|
17
18
|
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; }
|
|
18
19
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
19
20
|
var VCObserverWrapper = /*#__PURE__*/function () {
|
|
20
21
|
function VCObserverWrapper() {
|
|
22
|
+
var _getConfig;
|
|
21
23
|
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
22
24
|
(0, _classCallCheck2.default)(this, VCObserverWrapper);
|
|
23
25
|
this.oldVCObserver = new _vcObserver.VCObserver(opts);
|
|
24
26
|
this.newVCObserver = null;
|
|
25
|
-
var isNewVCObserverEnabled = (0, _platformFeatureFlags.fg)('platform_ufo_vc_observer_new');
|
|
27
|
+
var isNewVCObserverEnabled = (0, _platformFeatureFlags.fg)('platform_ufo_vc_observer_new') || ((_getConfig = (0, _config.getConfig)()) === null || _getConfig === void 0 || (_getConfig = _getConfig.vc) === null || _getConfig === void 0 ? void 0 : _getConfig.enableVCObserverNew);
|
|
26
28
|
if (isNewVCObserverEnabled) {
|
|
27
29
|
this.newVCObserver = new _vcObserverNew.default({
|
|
28
30
|
selectorConfig: opts.selectorConfig
|
|
@@ -34,7 +36,9 @@ var VCObserverWrapper = /*#__PURE__*/function () {
|
|
|
34
36
|
value: function start(startArg) {
|
|
35
37
|
var _this$oldVCObserver, _this$newVCObserver;
|
|
36
38
|
(_this$oldVCObserver = this.oldVCObserver) === null || _this$oldVCObserver === void 0 || _this$oldVCObserver.start(startArg);
|
|
37
|
-
(_this$newVCObserver = this.newVCObserver) === null || _this$newVCObserver === void 0 || _this$newVCObserver.start(
|
|
39
|
+
(_this$newVCObserver = this.newVCObserver) === null || _this$newVCObserver === void 0 || _this$newVCObserver.start({
|
|
40
|
+
startTime: startArg.startTime
|
|
41
|
+
});
|
|
38
42
|
}
|
|
39
43
|
}, {
|
|
40
44
|
key: "stop",
|
|
@@ -10,7 +10,15 @@ function getAttributeSelector(element, attributeName) {
|
|
|
10
10
|
if (!attrValue) {
|
|
11
11
|
return '';
|
|
12
12
|
}
|
|
13
|
-
return "[".concat(attributeName, "=\"").concat(
|
|
13
|
+
return "[".concat(attributeName, "=\"").concat(attrValue, "\"]");
|
|
14
|
+
}
|
|
15
|
+
function isValidSelector(selector) {
|
|
16
|
+
try {
|
|
17
|
+
document.querySelector(selector);
|
|
18
|
+
return true;
|
|
19
|
+
} catch (err) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
14
22
|
}
|
|
15
23
|
function isSelectorUnique(selector) {
|
|
16
24
|
return document.querySelectorAll(selector).length === 1;
|
|
@@ -18,11 +26,13 @@ function isSelectorUnique(selector) {
|
|
|
18
26
|
function getUniqueSelector(selectorConfig, element) {
|
|
19
27
|
var currentElement = element;
|
|
20
28
|
var parts = [];
|
|
21
|
-
|
|
29
|
+
var MAX_DEPTH = 3;
|
|
30
|
+
var currentDepth = 0;
|
|
31
|
+
while (currentElement && currentElement.localName !== 'body' && currentDepth <= MAX_DEPTH) {
|
|
22
32
|
var tagName = currentElement.localName;
|
|
23
33
|
var selectorPart = tagName;
|
|
24
|
-
if (selectorConfig.id && currentElement.id) {
|
|
25
|
-
selectorPart += "#".concat(
|
|
34
|
+
if (selectorConfig.id && currentElement.id && isValidSelector("#".concat(currentElement.id))) {
|
|
35
|
+
selectorPart += "#".concat(currentElement.id);
|
|
26
36
|
} else if (selectorConfig.dataVC) {
|
|
27
37
|
selectorPart += getAttributeSelector(currentElement, 'data-vc');
|
|
28
38
|
} else if (selectorConfig.testId) {
|
|
@@ -30,9 +40,11 @@ function getUniqueSelector(selectorConfig, element) {
|
|
|
30
40
|
} else if (selectorConfig.role) {
|
|
31
41
|
selectorPart += getAttributeSelector(currentElement, 'role');
|
|
32
42
|
} else if (selectorConfig.className && currentElement.className) {
|
|
33
|
-
var classNames = Array.from(currentElement.classList).
|
|
43
|
+
var classNames = Array.from(currentElement.classList).join('.');
|
|
34
44
|
if (classNames) {
|
|
35
|
-
|
|
45
|
+
if (isValidSelector(".".concat(classNames))) {
|
|
46
|
+
selectorPart += ".".concat(classNames);
|
|
47
|
+
}
|
|
36
48
|
}
|
|
37
49
|
}
|
|
38
50
|
parts.unshift(selectorPart);
|
|
@@ -41,6 +53,7 @@ function getUniqueSelector(selectorConfig, element) {
|
|
|
41
53
|
return _potentialSelector;
|
|
42
54
|
}
|
|
43
55
|
currentElement = currentElement.parentElement;
|
|
56
|
+
currentDepth++;
|
|
44
57
|
}
|
|
45
58
|
var potentialSelector = parts.join(' > ').trim();
|
|
46
59
|
if (!potentialSelector) {
|
|
@@ -27,7 +27,6 @@ var VCObserverNew = exports.default = /*#__PURE__*/function () {
|
|
|
27
27
|
var _config$selectorConfi,
|
|
28
28
|
_this = this;
|
|
29
29
|
(0, _classCallCheck2.default)(this, VCObserverNew);
|
|
30
|
-
(0, _defineProperty2.default)(this, "startTime", 0);
|
|
31
30
|
(0, _defineProperty2.default)(this, "viewportObserver", null);
|
|
32
31
|
(0, _defineProperty2.default)(this, "windowEventObserver", null);
|
|
33
32
|
this.entriesTimeline = new _entriesTimeline.default();
|
|
@@ -75,10 +74,12 @@ var VCObserverNew = exports.default = /*#__PURE__*/function () {
|
|
|
75
74
|
}
|
|
76
75
|
return (0, _createClass2.default)(VCObserverNew, [{
|
|
77
76
|
key: "start",
|
|
78
|
-
value: function start() {
|
|
77
|
+
value: function start(_ref2) {
|
|
79
78
|
var _this$viewportObserve, _this$windowEventObse;
|
|
79
|
+
var startTime = _ref2.startTime;
|
|
80
80
|
(_this$viewportObserve = this.viewportObserver) === null || _this$viewportObserve === void 0 || _this$viewportObserve.start();
|
|
81
81
|
(_this$windowEventObse = this.windowEventObserver) === null || _this$windowEventObse === void 0 || _this$windowEventObse.start();
|
|
82
|
+
this.entriesTimeline.clear();
|
|
82
83
|
}
|
|
83
84
|
}, {
|
|
84
85
|
key: "stop",
|
|
@@ -104,7 +105,9 @@ var VCObserverNew = exports.default = /*#__PURE__*/function () {
|
|
|
104
105
|
});
|
|
105
106
|
_context.next = 6;
|
|
106
107
|
return calculator_fy25_03.calculate({
|
|
107
|
-
orderedEntries: orderedEntries
|
|
108
|
+
orderedEntries: orderedEntries,
|
|
109
|
+
startTime: start,
|
|
110
|
+
stopTime: stop
|
|
108
111
|
});
|
|
109
112
|
case 6:
|
|
110
113
|
fy25_03 = _context.sent;
|
|
@@ -24,11 +24,11 @@ var AbstractVCCalculatorBase = exports.default = /*#__PURE__*/function () {
|
|
|
24
24
|
var _this = this,
|
|
25
25
|
_vcDetails$90$t,
|
|
26
26
|
_vcDetails$;
|
|
27
|
-
var orderedEntries, filteredEntries, isVCClean, vcDetails;
|
|
27
|
+
var startTime, stopTime, orderedEntries, filteredEntries, isVCClean, vcDetails;
|
|
28
28
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
29
29
|
while (1) switch (_context.prev = _context.next) {
|
|
30
30
|
case 0:
|
|
31
|
-
orderedEntries = _ref.orderedEntries;
|
|
31
|
+
startTime = _ref.startTime, stopTime = _ref.stopTime, orderedEntries = _ref.orderedEntries;
|
|
32
32
|
filteredEntries = orderedEntries.filter(function (entry) {
|
|
33
33
|
return _this.isEntryIncluded(entry);
|
|
34
34
|
});
|
|
@@ -49,6 +49,8 @@ var AbstractVCCalculatorBase = exports.default = /*#__PURE__*/function () {
|
|
|
49
49
|
width: (0, _getViewportWidth.default)(),
|
|
50
50
|
height: (0, _getViewportHeight.default)()
|
|
51
51
|
},
|
|
52
|
+
startTime: startTime,
|
|
53
|
+
stopTime: stopTime,
|
|
52
54
|
orderedEntries: filteredEntries,
|
|
53
55
|
percentiles: [25, 50, 75, 80, 85, 90, 95, 98, 99]
|
|
54
56
|
});
|
package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js
CHANGED
|
@@ -228,17 +228,16 @@ function calculateDrawnPixelsRaw(_x, _x2, _x3) {
|
|
|
228
228
|
}
|
|
229
229
|
function _calculateDrawnPixelsRaw() {
|
|
230
230
|
_calculateDrawnPixelsRaw = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(imageData, scaleFactor, arraySize) {
|
|
231
|
-
var data,
|
|
231
|
+
var data, arr, i, color, colorIndex;
|
|
232
232
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
233
233
|
while (1) switch (_context2.prev = _context2.next) {
|
|
234
234
|
case 0:
|
|
235
235
|
data = imageData.data;
|
|
236
|
-
scaleCompensation = Math.round(1 / (scaleFactor * scaleFactor));
|
|
237
236
|
arr = new Uint32Array(arraySize);
|
|
238
237
|
i = 0;
|
|
239
|
-
case
|
|
238
|
+
case 3:
|
|
240
239
|
if (!(i < data.length)) {
|
|
241
|
-
_context2.next =
|
|
240
|
+
_context2.next = 11;
|
|
242
241
|
break;
|
|
243
242
|
}
|
|
244
243
|
// Check alpha
|
|
@@ -250,21 +249,21 @@ function _calculateDrawnPixelsRaw() {
|
|
|
250
249
|
// The | operator combines all bits together
|
|
251
250
|
color = data[i] << 16 | data[i + 1] << 8 | data[i + 2];
|
|
252
251
|
colorIndex = color - 1;
|
|
253
|
-
arr[colorIndex] = (arr[colorIndex] || 0) +
|
|
252
|
+
arr[colorIndex] = (arr[colorIndex] || 0) + 1;
|
|
254
253
|
}
|
|
255
254
|
if (!(i % 10000 === 0)) {
|
|
256
|
-
_context2.next =
|
|
255
|
+
_context2.next = 8;
|
|
257
256
|
break;
|
|
258
257
|
}
|
|
259
|
-
_context2.next =
|
|
258
|
+
_context2.next = 8;
|
|
260
259
|
return (0, _taskYield.default)();
|
|
261
|
-
case
|
|
260
|
+
case 8:
|
|
262
261
|
i += 4;
|
|
263
|
-
_context2.next =
|
|
262
|
+
_context2.next = 3;
|
|
264
263
|
break;
|
|
265
|
-
case
|
|
264
|
+
case 11:
|
|
266
265
|
return _context2.abrupt("return", arr);
|
|
267
|
-
case
|
|
266
|
+
case 12:
|
|
268
267
|
case "end":
|
|
269
268
|
return _context2.stop();
|
|
270
269
|
}
|