@atlaskit/react-ufo 3.3.1 → 3.3.3
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/create-payload/index.js +106 -163
- package/dist/cjs/create-payload/utils/get-interaction-status.js +37 -0
- package/dist/cjs/create-payload/utils/get-page-visibility-up-to-ttai.js +12 -0
- package/dist/cjs/create-payload/utils/get-ssr-done-time-value.js +14 -0
- package/dist/cjs/create-payload/utils/get-vc-metrics.js +96 -0
- 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/create-payload/index.js +14 -73
- package/dist/es2019/create-payload/utils/get-interaction-status.js +31 -0
- package/dist/es2019/create-payload/utils/get-page-visibility-up-to-ttai.js +8 -0
- package/dist/es2019/create-payload/utils/get-ssr-done-time-value.js +5 -0
- package/dist/es2019/create-payload/utils/get-vc-metrics.js +53 -0
- 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/create-payload/index.js +99 -156
- package/dist/esm/create-payload/utils/get-interaction-status.js +31 -0
- package/dist/esm/create-payload/utils/get-page-visibility-up-to-ttai.js +6 -0
- package/dist/esm/create-payload/utils/get-ssr-done-time-value.js +5 -0
- package/dist/esm/create-payload/utils/get-vc-metrics.js +89 -0
- 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/config/index.d.ts +1 -0
- package/dist/types/create-payload/index.d.ts +1 -1
- package/dist/types/create-payload/utils/get-interaction-status.d.ts +27 -0
- package/dist/types/create-payload/utils/get-page-visibility-up-to-ttai.d.ts +2 -0
- package/dist/types/create-payload/utils/get-ssr-done-time-value.d.ts +2 -0
- package/dist/types/create-payload/utils/get-vc-metrics.d.ts +5 -0
- 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/config/index.d.ts +1 -0
- package/dist/types-ts4.5/create-payload/index.d.ts +1 -1
- package/dist/types-ts4.5/create-payload/utils/get-interaction-status.d.ts +27 -0
- package/dist/types-ts4.5/create-payload/utils/get-page-visibility-up-to-ttai.d.ts +2 -0
- package/dist/types-ts4.5/create-payload/utils/get-ssr-done-time-value.d.ts +2 -0
- package/dist/types-ts4.5/create-payload/utils/get-vc-metrics.d.ts +5 -0
- 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 +5 -2
|
@@ -4,7 +4,15 @@ function getAttributeSelector(element, attributeName) {
|
|
|
4
4
|
if (!attrValue) {
|
|
5
5
|
return '';
|
|
6
6
|
}
|
|
7
|
-
return "[".concat(attributeName, "=\"").concat(
|
|
7
|
+
return "[".concat(attributeName, "=\"").concat(attrValue, "\"]");
|
|
8
|
+
}
|
|
9
|
+
function isValidSelector(selector) {
|
|
10
|
+
try {
|
|
11
|
+
document.querySelector(selector);
|
|
12
|
+
return true;
|
|
13
|
+
} catch (err) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
8
16
|
}
|
|
9
17
|
function isSelectorUnique(selector) {
|
|
10
18
|
return document.querySelectorAll(selector).length === 1;
|
|
@@ -12,11 +20,13 @@ function isSelectorUnique(selector) {
|
|
|
12
20
|
function getUniqueSelector(selectorConfig, element) {
|
|
13
21
|
var currentElement = element;
|
|
14
22
|
var parts = [];
|
|
15
|
-
|
|
23
|
+
var MAX_DEPTH = 3;
|
|
24
|
+
var currentDepth = 0;
|
|
25
|
+
while (currentElement && currentElement.localName !== 'body' && currentDepth <= MAX_DEPTH) {
|
|
16
26
|
var tagName = currentElement.localName;
|
|
17
27
|
var selectorPart = tagName;
|
|
18
|
-
if (selectorConfig.id && currentElement.id) {
|
|
19
|
-
selectorPart += "#".concat(
|
|
28
|
+
if (selectorConfig.id && currentElement.id && isValidSelector("#".concat(currentElement.id))) {
|
|
29
|
+
selectorPart += "#".concat(currentElement.id);
|
|
20
30
|
} else if (selectorConfig.dataVC) {
|
|
21
31
|
selectorPart += getAttributeSelector(currentElement, 'data-vc');
|
|
22
32
|
} else if (selectorConfig.testId) {
|
|
@@ -24,9 +34,11 @@ function getUniqueSelector(selectorConfig, element) {
|
|
|
24
34
|
} else if (selectorConfig.role) {
|
|
25
35
|
selectorPart += getAttributeSelector(currentElement, 'role');
|
|
26
36
|
} else if (selectorConfig.className && currentElement.className) {
|
|
27
|
-
var classNames = Array.from(currentElement.classList).
|
|
37
|
+
var classNames = Array.from(currentElement.classList).join('.');
|
|
28
38
|
if (classNames) {
|
|
29
|
-
|
|
39
|
+
if (isValidSelector(".".concat(classNames))) {
|
|
40
|
+
selectorPart += ".".concat(classNames);
|
|
41
|
+
}
|
|
30
42
|
}
|
|
31
43
|
}
|
|
32
44
|
parts.unshift(selectorPart);
|
|
@@ -35,6 +47,7 @@ function getUniqueSelector(selectorConfig, element) {
|
|
|
35
47
|
return _potentialSelector;
|
|
36
48
|
}
|
|
37
49
|
currentElement = currentElement.parentElement;
|
|
50
|
+
currentDepth++;
|
|
38
51
|
}
|
|
39
52
|
var potentialSelector = parts.join(' > ').trim();
|
|
40
53
|
if (!potentialSelector) {
|
|
@@ -20,7 +20,6 @@ var VCObserverNew = /*#__PURE__*/function () {
|
|
|
20
20
|
var _config$selectorConfi,
|
|
21
21
|
_this = this;
|
|
22
22
|
_classCallCheck(this, VCObserverNew);
|
|
23
|
-
_defineProperty(this, "startTime", 0);
|
|
24
23
|
_defineProperty(this, "viewportObserver", null);
|
|
25
24
|
_defineProperty(this, "windowEventObserver", null);
|
|
26
25
|
this.entriesTimeline = new EntriesTimeline();
|
|
@@ -68,10 +67,12 @@ var VCObserverNew = /*#__PURE__*/function () {
|
|
|
68
67
|
}
|
|
69
68
|
return _createClass(VCObserverNew, [{
|
|
70
69
|
key: "start",
|
|
71
|
-
value: function start() {
|
|
70
|
+
value: function start(_ref2) {
|
|
72
71
|
var _this$viewportObserve, _this$windowEventObse;
|
|
72
|
+
var startTime = _ref2.startTime;
|
|
73
73
|
(_this$viewportObserve = this.viewportObserver) === null || _this$viewportObserve === void 0 || _this$viewportObserve.start();
|
|
74
74
|
(_this$windowEventObse = this.windowEventObserver) === null || _this$windowEventObse === void 0 || _this$windowEventObse.start();
|
|
75
|
+
this.entriesTimeline.clear();
|
|
75
76
|
}
|
|
76
77
|
}, {
|
|
77
78
|
key: "stop",
|
|
@@ -97,7 +98,9 @@ var VCObserverNew = /*#__PURE__*/function () {
|
|
|
97
98
|
});
|
|
98
99
|
_context.next = 6;
|
|
99
100
|
return calculator_fy25_03.calculate({
|
|
100
|
-
orderedEntries: orderedEntries
|
|
101
|
+
orderedEntries: orderedEntries,
|
|
102
|
+
startTime: start,
|
|
103
|
+
stopTime: stop
|
|
101
104
|
});
|
|
102
105
|
case 6:
|
|
103
106
|
fy25_03 = _context.sent;
|
|
@@ -17,11 +17,11 @@ var AbstractVCCalculatorBase = /*#__PURE__*/function () {
|
|
|
17
17
|
var _this = this,
|
|
18
18
|
_vcDetails$90$t,
|
|
19
19
|
_vcDetails$;
|
|
20
|
-
var orderedEntries, filteredEntries, isVCClean, vcDetails;
|
|
20
|
+
var startTime, stopTime, orderedEntries, filteredEntries, isVCClean, vcDetails;
|
|
21
21
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
22
22
|
while (1) switch (_context.prev = _context.next) {
|
|
23
23
|
case 0:
|
|
24
|
-
orderedEntries = _ref.orderedEntries;
|
|
24
|
+
startTime = _ref.startTime, stopTime = _ref.stopTime, orderedEntries = _ref.orderedEntries;
|
|
25
25
|
filteredEntries = orderedEntries.filter(function (entry) {
|
|
26
26
|
return _this.isEntryIncluded(entry);
|
|
27
27
|
});
|
|
@@ -42,6 +42,8 @@ var AbstractVCCalculatorBase = /*#__PURE__*/function () {
|
|
|
42
42
|
width: getViewportWidth(),
|
|
43
43
|
height: getViewportHeight()
|
|
44
44
|
},
|
|
45
|
+
startTime: startTime,
|
|
46
|
+
stopTime: stopTime,
|
|
45
47
|
orderedEntries: filteredEntries,
|
|
46
48
|
percentiles: [25, 50, 75, 80, 85, 90, 95, 98, 99]
|
|
47
49
|
});
|
package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js
CHANGED
|
@@ -222,17 +222,16 @@ export function calculateDrawnPixelsRaw(_x, _x2, _x3) {
|
|
|
222
222
|
}
|
|
223
223
|
function _calculateDrawnPixelsRaw() {
|
|
224
224
|
_calculateDrawnPixelsRaw = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(imageData, scaleFactor, arraySize) {
|
|
225
|
-
var data,
|
|
225
|
+
var data, arr, i, color, colorIndex;
|
|
226
226
|
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
227
227
|
while (1) switch (_context2.prev = _context2.next) {
|
|
228
228
|
case 0:
|
|
229
229
|
data = imageData.data;
|
|
230
|
-
scaleCompensation = Math.round(1 / (scaleFactor * scaleFactor));
|
|
231
230
|
arr = new Uint32Array(arraySize);
|
|
232
231
|
i = 0;
|
|
233
|
-
case
|
|
232
|
+
case 3:
|
|
234
233
|
if (!(i < data.length)) {
|
|
235
|
-
_context2.next =
|
|
234
|
+
_context2.next = 11;
|
|
236
235
|
break;
|
|
237
236
|
}
|
|
238
237
|
// Check alpha
|
|
@@ -244,21 +243,21 @@ function _calculateDrawnPixelsRaw() {
|
|
|
244
243
|
// The | operator combines all bits together
|
|
245
244
|
color = data[i] << 16 | data[i + 1] << 8 | data[i + 2];
|
|
246
245
|
colorIndex = color - 1;
|
|
247
|
-
arr[colorIndex] = (arr[colorIndex] || 0) +
|
|
246
|
+
arr[colorIndex] = (arr[colorIndex] || 0) + 1;
|
|
248
247
|
}
|
|
249
248
|
if (!(i % 10000 === 0)) {
|
|
250
|
-
_context2.next =
|
|
249
|
+
_context2.next = 8;
|
|
251
250
|
break;
|
|
252
251
|
}
|
|
253
|
-
_context2.next =
|
|
252
|
+
_context2.next = 8;
|
|
254
253
|
return taskYield();
|
|
255
|
-
case
|
|
254
|
+
case 8:
|
|
256
255
|
i += 4;
|
|
257
|
-
_context2.next =
|
|
256
|
+
_context2.next = 3;
|
|
258
257
|
break;
|
|
259
|
-
case
|
|
258
|
+
case 11:
|
|
260
259
|
return _context2.abrupt("return", arr);
|
|
261
|
-
case
|
|
260
|
+
case 12:
|
|
262
261
|
case "end":
|
|
263
262
|
return _context2.stop();
|
|
264
263
|
}
|
package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js
CHANGED
|
@@ -11,22 +11,22 @@ export default function calculateTTVCPercentiles(_x) {
|
|
|
11
11
|
}
|
|
12
12
|
function _calculateTTVCPercentiles() {
|
|
13
13
|
_calculateTTVCPercentiles = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref) {
|
|
14
|
-
var viewport, orderedEntries, percentiles, canvas, elementMap,
|
|
14
|
+
var viewport, orderedEntries, percentiles, startTime, canvas, elementMap, _iterator2, _step2, entry, rect, elementName, timePixelCounts, canvasDimenstions, totalPixels;
|
|
15
15
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
16
16
|
while (1) switch (_context.prev = _context.next) {
|
|
17
17
|
case 0:
|
|
18
|
-
viewport = _ref.viewport, orderedEntries = _ref.orderedEntries, percentiles = _ref.percentiles;
|
|
18
|
+
viewport = _ref.viewport, orderedEntries = _ref.orderedEntries, percentiles = _ref.percentiles, startTime = _ref.startTime;
|
|
19
19
|
canvas = new ViewportCanvas(viewport, fg('platform_ufo_canvas_heatmap_full_precision') ? 1 : 0.25);
|
|
20
20
|
elementMap = new Map();
|
|
21
|
-
|
|
21
|
+
_iterator2 = _createForOfIteratorHelper(orderedEntries);
|
|
22
22
|
_context.prev = 4;
|
|
23
|
-
|
|
23
|
+
_iterator2.s();
|
|
24
24
|
case 6:
|
|
25
|
-
if ((
|
|
25
|
+
if ((_step2 = _iterator2.n()).done) {
|
|
26
26
|
_context.next = 17;
|
|
27
27
|
break;
|
|
28
28
|
}
|
|
29
|
-
entry =
|
|
29
|
+
entry = _step2.value;
|
|
30
30
|
if ('rect' in entry.data) {
|
|
31
31
|
_context.next = 10;
|
|
32
32
|
break;
|
|
@@ -49,19 +49,20 @@ function _calculateTTVCPercentiles() {
|
|
|
49
49
|
case 19:
|
|
50
50
|
_context.prev = 19;
|
|
51
51
|
_context.t0 = _context["catch"](4);
|
|
52
|
-
|
|
52
|
+
_iterator2.e(_context.t0);
|
|
53
53
|
case 22:
|
|
54
54
|
_context.prev = 22;
|
|
55
|
-
|
|
55
|
+
_iterator2.f();
|
|
56
56
|
return _context.finish(22);
|
|
57
57
|
case 25:
|
|
58
58
|
_context.next = 27;
|
|
59
59
|
return canvas.getPixelCounts();
|
|
60
60
|
case 27:
|
|
61
61
|
timePixelCounts = _context.sent;
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
62
|
+
canvasDimenstions = canvas.getScaledDimensions();
|
|
63
|
+
totalPixels = canvasDimenstions.width * canvasDimenstions.height;
|
|
64
|
+
return _context.abrupt("return", calculatePercentiles(timePixelCounts, elementMap, percentiles, totalPixels, startTime));
|
|
65
|
+
case 31:
|
|
65
66
|
case "end":
|
|
66
67
|
return _context.stop();
|
|
67
68
|
}
|
|
@@ -69,7 +70,7 @@ function _calculateTTVCPercentiles() {
|
|
|
69
70
|
}));
|
|
70
71
|
return _calculateTTVCPercentiles.apply(this, arguments);
|
|
71
72
|
}
|
|
72
|
-
export function calculatePercentiles(timePixelCounts, elementMap, unorderedPercentiles, totalPixels) {
|
|
73
|
+
export function calculatePercentiles(timePixelCounts, elementMap, unorderedPercentiles, totalPixels, startTime) {
|
|
73
74
|
var results = {};
|
|
74
75
|
var cumulativePixels = 0;
|
|
75
76
|
var percentiles = unorderedPercentiles.sort(function (a, b) {
|
|
@@ -102,7 +103,7 @@ export function calculatePercentiles(timePixelCounts, elementMap, unorderedPerce
|
|
|
102
103
|
var matchesAnyCheckpoints = false;
|
|
103
104
|
while (percentileIndex < percentiles.length && percentCovered >= percentiles[percentileIndex]) {
|
|
104
105
|
results["".concat(percentiles[percentileIndex])] = {
|
|
105
|
-
t: Number(time),
|
|
106
|
+
t: Math.round(Number(time - startTime)),
|
|
106
107
|
e: Array.from(domElementsBuffer)
|
|
107
108
|
};
|
|
108
109
|
percentileIndex++;
|
|
@@ -115,29 +116,21 @@ export function calculatePercentiles(timePixelCounts, elementMap, unorderedPerce
|
|
|
115
116
|
break;
|
|
116
117
|
}
|
|
117
118
|
}
|
|
118
|
-
|
|
119
|
-
// Fill in any missing percentiles
|
|
120
119
|
} catch (err) {
|
|
121
120
|
_iterator.e(err);
|
|
122
121
|
} finally {
|
|
123
122
|
_iterator.f();
|
|
124
123
|
}
|
|
125
|
-
var
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
e: []
|
|
134
|
-
};
|
|
135
|
-
}
|
|
124
|
+
var previousResult = {
|
|
125
|
+
t: 0,
|
|
126
|
+
e: []
|
|
127
|
+
};
|
|
128
|
+
for (var i = 0; i < percentiles.length; i++) {
|
|
129
|
+
var percentile = percentiles[i];
|
|
130
|
+
if (!(percentile in results)) {
|
|
131
|
+
results["".concat(percentile)] = previousResult;
|
|
136
132
|
}
|
|
137
|
-
|
|
138
|
-
_iterator2.e(err);
|
|
139
|
-
} finally {
|
|
140
|
-
_iterator2.f();
|
|
133
|
+
previousResult = results["".concat(percentile)];
|
|
141
134
|
}
|
|
142
135
|
return results;
|
|
143
136
|
}
|
|
@@ -236,7 +236,7 @@ var Heatmap = /*#__PURE__*/function () {
|
|
|
236
236
|
}, {
|
|
237
237
|
key: "getVCPercentMetrics",
|
|
238
238
|
value: function () {
|
|
239
|
-
var _getVCPercentMetrics = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(vcPercentCheckpoint) {
|
|
239
|
+
var _getVCPercentMetrics = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(vcPercentCheckpoint, startTime) {
|
|
240
240
|
var sortedCheckpoints, flattenHeatmap, totalCells, timestampMap, i, _cellHead$time, _timestampMap$get, cell, cellHead, timestamp, elementName, curr, sortedTimings, totalCellPainted, result, domElementsBuffer, _i, _timestamp, timestampInfo, cellCount, domElements, currVCRatio, currVCPercent, matchesAnyCheckpoints, checkpoint, _domElements;
|
|
241
241
|
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
242
242
|
while (1) switch (_context2.prev = _context2.next) {
|
|
@@ -324,7 +324,7 @@ var Heatmap = /*#__PURE__*/function () {
|
|
|
324
324
|
case 41:
|
|
325
325
|
matchesAnyCheckpoints = true;
|
|
326
326
|
result[checkpoint.toString()] = {
|
|
327
|
-
t: _timestamp,
|
|
327
|
+
t: Math.round(_timestamp - startTime),
|
|
328
328
|
e: _domElements
|
|
329
329
|
};
|
|
330
330
|
_context2.next = 36;
|
|
@@ -351,23 +351,23 @@ var Heatmap = /*#__PURE__*/function () {
|
|
|
351
351
|
}
|
|
352
352
|
}, _callee2, this);
|
|
353
353
|
}));
|
|
354
|
-
function getVCPercentMetrics(_x2) {
|
|
354
|
+
function getVCPercentMetrics(_x2, _x3) {
|
|
355
355
|
return _getVCPercentMetrics.apply(this, arguments);
|
|
356
356
|
}
|
|
357
357
|
return getVCPercentMetrics;
|
|
358
358
|
}()
|
|
359
359
|
}]);
|
|
360
360
|
}();
|
|
361
|
-
export default function calculateTTVCPercentiles(
|
|
361
|
+
export default function calculateTTVCPercentiles(_x4) {
|
|
362
362
|
return _calculateTTVCPercentiles.apply(this, arguments);
|
|
363
363
|
}
|
|
364
364
|
function _calculateTTVCPercentiles() {
|
|
365
365
|
_calculateTTVCPercentiles = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(_ref2) {
|
|
366
|
-
var orderedEntries, viewport, percentiles, heatmap, vcDetails;
|
|
366
|
+
var orderedEntries, viewport, percentiles, startTime, heatmap, vcDetails;
|
|
367
367
|
return _regeneratorRuntime.wrap(function _callee3$(_context3) {
|
|
368
368
|
while (1) switch (_context3.prev = _context3.next) {
|
|
369
369
|
case 0:
|
|
370
|
-
orderedEntries = _ref2.orderedEntries, viewport = _ref2.viewport, percentiles = _ref2.percentiles;
|
|
370
|
+
orderedEntries = _ref2.orderedEntries, viewport = _ref2.viewport, percentiles = _ref2.percentiles, startTime = _ref2.startTime;
|
|
371
371
|
heatmap = new Heatmap({
|
|
372
372
|
viewport: viewport,
|
|
373
373
|
heatmapSize: 200
|
|
@@ -376,7 +376,7 @@ function _calculateTTVCPercentiles() {
|
|
|
376
376
|
return heatmap.applyEntriesToHeatmap(orderedEntries);
|
|
377
377
|
case 4:
|
|
378
378
|
_context3.next = 6;
|
|
379
|
-
return heatmap.getVCPercentMetrics(percentiles);
|
|
379
|
+
return heatmap.getVCPercentMetrics(percentiles, startTime);
|
|
380
380
|
case 6:
|
|
381
381
|
vcDetails = _context3.sent;
|
|
382
382
|
return _context3.abrupt("return", vcDetails);
|
package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js
CHANGED
|
@@ -9,11 +9,11 @@ export default function calculateTTVCPercentiles(_x) {
|
|
|
9
9
|
}
|
|
10
10
|
function _calculateTTVCPercentiles() {
|
|
11
11
|
_calculateTTVCPercentiles = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref) {
|
|
12
|
-
var orderedEntries, viewport, percentiles, sortedPercentiles, viewportArea, checkpoints, activeRects, removeActiveRect, domElementsBuffer, i, iEntry, iEntryData, rect, elementName, exclusionArea, currentArea, currVCPercent, matchesAnyCheckpoints, _checkpoint, domElements;
|
|
12
|
+
var orderedEntries, viewport, percentiles, startTime, sortedPercentiles, viewportArea, checkpoints, activeRects, removeActiveRect, domElementsBuffer, i, iEntry, iEntryData, rect, elementName, exclusionArea, currentArea, currVCPercent, matchesAnyCheckpoints, _checkpoint, domElements;
|
|
13
13
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
14
14
|
while (1) switch (_context.prev = _context.next) {
|
|
15
15
|
case 0:
|
|
16
|
-
orderedEntries = _ref.orderedEntries, viewport = _ref.viewport, percentiles = _ref.percentiles;
|
|
16
|
+
orderedEntries = _ref.orderedEntries, viewport = _ref.viewport, percentiles = _ref.percentiles, startTime = _ref.startTime;
|
|
17
17
|
sortedPercentiles = _toConsumableArray(percentiles).sort(function (a, b) {
|
|
18
18
|
return a - b;
|
|
19
19
|
});
|
|
@@ -69,7 +69,7 @@ function _calculateTTVCPercentiles() {
|
|
|
69
69
|
case 25:
|
|
70
70
|
matchesAnyCheckpoints = true;
|
|
71
71
|
checkpoints[_checkpoint.toString()] = {
|
|
72
|
-
t: iEntry.time,
|
|
72
|
+
t: Math.round(iEntry.time - startTime),
|
|
73
73
|
e: domElements
|
|
74
74
|
};
|
|
75
75
|
_context.next = 20;
|
|
@@ -15,6 +15,9 @@ var WindowEventObserver = /*#__PURE__*/function () {
|
|
|
15
15
|
var unbindCallback = bind(window, {
|
|
16
16
|
type: type,
|
|
17
17
|
listener: function listener(event) {
|
|
18
|
+
if (!event.isTrusted) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
18
21
|
_this.onEvent({
|
|
19
22
|
time: event.timeStamp,
|
|
20
23
|
type: type,
|
|
@@ -22,7 +25,8 @@ var WindowEventObserver = /*#__PURE__*/function () {
|
|
|
22
25
|
});
|
|
23
26
|
},
|
|
24
27
|
options: {
|
|
25
|
-
passive: true
|
|
28
|
+
passive: true,
|
|
29
|
+
once: true
|
|
26
30
|
}
|
|
27
31
|
});
|
|
28
32
|
this.unbindFns.push(unbindCallback);
|
|
@@ -23188,4 +23188,4 @@ export declare function createExperimentalMetricsPayload(interactionId: string,
|
|
|
23188
23188
|
'experience:name': string;
|
|
23189
23189
|
};
|
|
23190
23190
|
};
|
|
23191
|
-
}
|
|
23191
|
+
} | null>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { InteractionMetrics } from '../../common';
|
|
2
|
+
/**
|
|
3
|
+
* Determines the interaction status based on abort reason and BM3 TTI presence.
|
|
4
|
+
*
|
|
5
|
+
* @param {InteractionMetrics} interaction - The interaction metrics object containing abort reason and apdex data
|
|
6
|
+
* @returns {{
|
|
7
|
+
* originalInteractionStatus: 'ABORTED' | 'SUCCEEDED',
|
|
8
|
+
* overrideStatus: 'ABORTED' | 'SUCCEEDED'
|
|
9
|
+
* }} An object containing both the original and override status
|
|
10
|
+
*
|
|
11
|
+
* @description
|
|
12
|
+
* This function evaluates the interaction status in two ways:
|
|
13
|
+
* 1. originalInteractionStatus: Based on whether there's an abort reason
|
|
14
|
+
* 2. overrideStatus: Based on the presence of BM3 TTI (apdex data)
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* const interaction = {
|
|
18
|
+
* abortReason: null,
|
|
19
|
+
* apdex: [1, 2, 3]
|
|
20
|
+
* };
|
|
21
|
+
* const result = getInteractionStatus(interaction);
|
|
22
|
+
* // Returns: { originalInteractionStatus: 'SUCCEEDED', overrideStatus: 'SUCCEEDED' }
|
|
23
|
+
*/
|
|
24
|
+
export default function getInteractionStatus(interaction: InteractionMetrics): {
|
|
25
|
+
readonly originalInteractionStatus: "ABORTED" | "SUCCEEDED";
|
|
26
|
+
readonly overrideStatus: "ABORTED" | "SUCCEEDED";
|
|
27
|
+
};
|
|
@@ -5,13 +5,14 @@ export type VCObserverNewConfig = {
|
|
|
5
5
|
selectorConfig?: SelectorConfig;
|
|
6
6
|
};
|
|
7
7
|
export default class VCObserverNew {
|
|
8
|
-
startTime: number;
|
|
9
8
|
private selectorConfig;
|
|
10
9
|
private viewportObserver;
|
|
11
10
|
private windowEventObserver;
|
|
12
11
|
private entriesTimeline;
|
|
13
12
|
constructor(config: VCObserverNewConfig);
|
|
14
|
-
start(
|
|
13
|
+
start({ startTime }: {
|
|
14
|
+
startTime: DOMHighResTimeStamp;
|
|
15
|
+
}): void;
|
|
15
16
|
stop(): void;
|
|
16
17
|
getVCResult(param: VCObserverGetVCResultParam): Promise<RevisionPayloadEntry[]>;
|
|
17
18
|
private getElementName;
|
|
@@ -5,5 +5,5 @@ export default abstract class AbstractVCCalculatorBase implements VCCalculator {
|
|
|
5
5
|
constructor(revisionNo: string);
|
|
6
6
|
protected abstract isEntryIncluded(entry: VCObserverEntry): boolean;
|
|
7
7
|
protected abstract isVCClean(filteredEntries: ReadonlyArray<VCObserverEntry>): boolean;
|
|
8
|
-
calculate({ orderedEntries, }: VCCalculatorParam): Promise<RevisionPayloadEntry | undefined>;
|
|
8
|
+
calculate({ startTime, stopTime, orderedEntries, }: VCCalculatorParam): Promise<RevisionPayloadEntry | undefined>;
|
|
9
9
|
}
|
package/dist/types/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { RevisionPayloadVCDetails } from '../../types';
|
|
2
2
|
import type { CalcTTVCPercentilesArg } from '../types';
|
|
3
|
-
export default function calculateTTVCPercentiles({ viewport, orderedEntries, percentiles, }: CalcTTVCPercentilesArg): Promise<RevisionPayloadVCDetails>;
|
|
4
|
-
export declare function calculatePercentiles(timePixelCounts: Map<DOMHighResTimeStamp, number>, elementMap: ReadonlyMap<DOMHighResTimeStamp, Set<string>>, unorderedPercentiles: number[], totalPixels: number): RevisionPayloadVCDetails;
|
|
3
|
+
export default function calculateTTVCPercentiles({ viewport, orderedEntries, percentiles, startTime, }: CalcTTVCPercentilesArg): Promise<RevisionPayloadVCDetails>;
|
|
4
|
+
export declare function calculatePercentiles(timePixelCounts: Map<DOMHighResTimeStamp, number>, elementMap: ReadonlyMap<DOMHighResTimeStamp, Set<string>>, unorderedPercentiles: number[], totalPixels: number, startTime: DOMHighResTimeStamp): RevisionPayloadVCDetails;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { VCObserverEntry } from '../../../types';
|
|
2
2
|
import type { RevisionPayloadVCDetails } from '../../types';
|
|
3
3
|
import type { Viewport } from './types';
|
|
4
|
-
export default function calculateTTVCPercentiles({ orderedEntries, viewport, percentiles, }: {
|
|
4
|
+
export default function calculateTTVCPercentiles({ orderedEntries, viewport, percentiles, startTime, }: {
|
|
5
5
|
orderedEntries: ReadonlyArray<VCObserverEntry>;
|
|
6
6
|
viewport: Viewport;
|
|
7
7
|
percentiles: number[];
|
|
8
|
+
startTime: DOMHighResTimeStamp;
|
|
8
9
|
}): Promise<RevisionPayloadVCDetails>;
|
|
@@ -16,8 +16,9 @@ export type CheckpointMetrics = {
|
|
|
16
16
|
e: DOMSelector[];
|
|
17
17
|
};
|
|
18
18
|
};
|
|
19
|
-
export default function calculateTTVCPercentiles({ orderedEntries, viewport, percentiles, }: {
|
|
19
|
+
export default function calculateTTVCPercentiles({ orderedEntries, viewport, percentiles, startTime, }: {
|
|
20
20
|
orderedEntries: ReadonlyArray<VCObserverEntry>;
|
|
21
21
|
viewport: Viewport;
|
|
22
22
|
percentiles: number[];
|
|
23
|
+
startTime: DOMHighResTimeStamp;
|
|
23
24
|
}): Promise<CheckpointMetrics>;
|
|
@@ -13,6 +13,8 @@ export type RevisionPayloadEntry = {
|
|
|
13
13
|
};
|
|
14
14
|
export type RevisionPayload = RevisionPayloadEntry[];
|
|
15
15
|
export type VCCalculatorParam = {
|
|
16
|
+
startTime: DOMHighResTimeStamp;
|
|
17
|
+
stopTime: DOMHighResTimeStamp;
|
|
16
18
|
orderedEntries: ReadonlyArray<VCObserverEntry>;
|
|
17
19
|
};
|
|
18
20
|
export interface VCCalculator {
|
|
@@ -23188,4 +23188,4 @@ export declare function createExperimentalMetricsPayload(interactionId: string,
|
|
|
23188
23188
|
'experience:name': string;
|
|
23189
23189
|
};
|
|
23190
23190
|
};
|
|
23191
|
-
}
|
|
23191
|
+
} | null>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { InteractionMetrics } from '../../common';
|
|
2
|
+
/**
|
|
3
|
+
* Determines the interaction status based on abort reason and BM3 TTI presence.
|
|
4
|
+
*
|
|
5
|
+
* @param {InteractionMetrics} interaction - The interaction metrics object containing abort reason and apdex data
|
|
6
|
+
* @returns {{
|
|
7
|
+
* originalInteractionStatus: 'ABORTED' | 'SUCCEEDED',
|
|
8
|
+
* overrideStatus: 'ABORTED' | 'SUCCEEDED'
|
|
9
|
+
* }} An object containing both the original and override status
|
|
10
|
+
*
|
|
11
|
+
* @description
|
|
12
|
+
* This function evaluates the interaction status in two ways:
|
|
13
|
+
* 1. originalInteractionStatus: Based on whether there's an abort reason
|
|
14
|
+
* 2. overrideStatus: Based on the presence of BM3 TTI (apdex data)
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* const interaction = {
|
|
18
|
+
* abortReason: null,
|
|
19
|
+
* apdex: [1, 2, 3]
|
|
20
|
+
* };
|
|
21
|
+
* const result = getInteractionStatus(interaction);
|
|
22
|
+
* // Returns: { originalInteractionStatus: 'SUCCEEDED', overrideStatus: 'SUCCEEDED' }
|
|
23
|
+
*/
|
|
24
|
+
export default function getInteractionStatus(interaction: InteractionMetrics): {
|
|
25
|
+
readonly originalInteractionStatus: "ABORTED" | "SUCCEEDED";
|
|
26
|
+
readonly overrideStatus: "ABORTED" | "SUCCEEDED";
|
|
27
|
+
};
|
|
@@ -5,13 +5,14 @@ export type VCObserverNewConfig = {
|
|
|
5
5
|
selectorConfig?: SelectorConfig;
|
|
6
6
|
};
|
|
7
7
|
export default class VCObserverNew {
|
|
8
|
-
startTime: number;
|
|
9
8
|
private selectorConfig;
|
|
10
9
|
private viewportObserver;
|
|
11
10
|
private windowEventObserver;
|
|
12
11
|
private entriesTimeline;
|
|
13
12
|
constructor(config: VCObserverNewConfig);
|
|
14
|
-
start(
|
|
13
|
+
start({ startTime }: {
|
|
14
|
+
startTime: DOMHighResTimeStamp;
|
|
15
|
+
}): void;
|
|
15
16
|
stop(): void;
|
|
16
17
|
getVCResult(param: VCObserverGetVCResultParam): Promise<RevisionPayloadEntry[]>;
|
|
17
18
|
private getElementName;
|
package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/abstract-base-vc-calculator.d.ts
CHANGED
|
@@ -5,5 +5,5 @@ export default abstract class AbstractVCCalculatorBase implements VCCalculator {
|
|
|
5
5
|
constructor(revisionNo: string);
|
|
6
6
|
protected abstract isEntryIncluded(entry: VCObserverEntry): boolean;
|
|
7
7
|
protected abstract isVCClean(filteredEntries: ReadonlyArray<VCObserverEntry>): boolean;
|
|
8
|
-
calculate({ orderedEntries, }: VCCalculatorParam): Promise<RevisionPayloadEntry | undefined>;
|
|
8
|
+
calculate({ startTime, stopTime, orderedEntries, }: VCCalculatorParam): Promise<RevisionPayloadEntry | undefined>;
|
|
9
9
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { RevisionPayloadVCDetails } from '../../types';
|
|
2
2
|
import type { CalcTTVCPercentilesArg } from '../types';
|
|
3
|
-
export default function calculateTTVCPercentiles({ viewport, orderedEntries, percentiles, }: CalcTTVCPercentilesArg): Promise<RevisionPayloadVCDetails>;
|
|
4
|
-
export declare function calculatePercentiles(timePixelCounts: Map<DOMHighResTimeStamp, number>, elementMap: ReadonlyMap<DOMHighResTimeStamp, Set<string>>, unorderedPercentiles: number[], totalPixels: number): RevisionPayloadVCDetails;
|
|
3
|
+
export default function calculateTTVCPercentiles({ viewport, orderedEntries, percentiles, startTime, }: CalcTTVCPercentilesArg): Promise<RevisionPayloadVCDetails>;
|
|
4
|
+
export declare function calculatePercentiles(timePixelCounts: Map<DOMHighResTimeStamp, number>, elementMap: ReadonlyMap<DOMHighResTimeStamp, Set<string>>, unorderedPercentiles: number[], totalPixels: number, startTime: DOMHighResTimeStamp): RevisionPayloadVCDetails;
|
package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/percentile-calc/heatmap/index.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { VCObserverEntry } from '../../../types';
|
|
2
2
|
import type { RevisionPayloadVCDetails } from '../../types';
|
|
3
3
|
import type { Viewport } from './types';
|
|
4
|
-
export default function calculateTTVCPercentiles({ orderedEntries, viewport, percentiles, }: {
|
|
4
|
+
export default function calculateTTVCPercentiles({ orderedEntries, viewport, percentiles, startTime, }: {
|
|
5
5
|
orderedEntries: ReadonlyArray<VCObserverEntry>;
|
|
6
6
|
viewport: Viewport;
|
|
7
7
|
percentiles: number[];
|
|
8
|
+
startTime: DOMHighResTimeStamp;
|
|
8
9
|
}): Promise<RevisionPayloadVCDetails>;
|
|
@@ -16,8 +16,9 @@ export type CheckpointMetrics = {
|
|
|
16
16
|
e: DOMSelector[];
|
|
17
17
|
};
|
|
18
18
|
};
|
|
19
|
-
export default function calculateTTVCPercentiles({ orderedEntries, viewport, percentiles, }: {
|
|
19
|
+
export default function calculateTTVCPercentiles({ orderedEntries, viewport, percentiles, startTime, }: {
|
|
20
20
|
orderedEntries: ReadonlyArray<VCObserverEntry>;
|
|
21
21
|
viewport: Viewport;
|
|
22
22
|
percentiles: number[];
|
|
23
|
+
startTime: DOMHighResTimeStamp;
|
|
23
24
|
}): Promise<CheckpointMetrics>;
|