@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
|
@@ -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.default = getVCMetrics;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
10
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
12
|
+
var _config = require("../../config");
|
|
13
|
+
var _interactionMetrics = require("../../interaction-metrics");
|
|
14
|
+
var _vc = require("../../vc");
|
|
15
|
+
var _getInteractionStatus = _interopRequireDefault(require("./get-interaction-status"));
|
|
16
|
+
var _getPageVisibilityUpToTtai = _interopRequireDefault(require("./get-page-visibility-up-to-ttai"));
|
|
17
|
+
var _getSsrDoneTimeValue = _interopRequireDefault(require("./get-ssr-done-time-value"));
|
|
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; }
|
|
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; }
|
|
20
|
+
function getVCMetrics(_x) {
|
|
21
|
+
return _getVCMetrics.apply(this, arguments);
|
|
22
|
+
}
|
|
23
|
+
function _getVCMetrics() {
|
|
24
|
+
_getVCMetrics = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(interaction) {
|
|
25
|
+
var _config$vc, _config$vc$ssrWhiteli, _interaction$apdex, _config$experimentalI;
|
|
26
|
+
var config, interactionStatus, pageVisibilityUpToTTAI, isSSREnabled, ssr, tti, prefix, result, VC;
|
|
27
|
+
return _regenerator.default.wrap(function _callee$(_context) {
|
|
28
|
+
while (1) switch (_context.prev = _context.next) {
|
|
29
|
+
case 0:
|
|
30
|
+
config = (0, _config.getConfig)();
|
|
31
|
+
if (config !== null && config !== void 0 && (_config$vc = config.vc) !== null && _config$vc !== void 0 && _config$vc.enabled) {
|
|
32
|
+
_context.next = 3;
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
return _context.abrupt("return", {});
|
|
36
|
+
case 3:
|
|
37
|
+
if (!(interaction.type !== 'page_load' && interaction.type !== 'transition')) {
|
|
38
|
+
_context.next = 5;
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
return _context.abrupt("return", {});
|
|
42
|
+
case 5:
|
|
43
|
+
interactionStatus = (0, _getInteractionStatus.default)(interaction);
|
|
44
|
+
pageVisibilityUpToTTAI = (0, _getPageVisibilityUpToTtai.default)(interaction);
|
|
45
|
+
if (!((interactionStatus.originalInteractionStatus !== 'SUCCEEDED' || pageVisibilityUpToTTAI !== 'visible') && (0, _platformFeatureFlags.fg)('platform_ufo_no_vc_on_aborted'))) {
|
|
46
|
+
_context.next = 9;
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
return _context.abrupt("return", {});
|
|
50
|
+
case 9:
|
|
51
|
+
isSSREnabled = (config === null || config === void 0 ? void 0 : config.ssr) || (config === null || config === void 0 || (_config$vc$ssrWhiteli = config.vc.ssrWhitelist) === null || _config$vc$ssrWhiteli === void 0 ? void 0 : _config$vc$ssrWhiteli.includes(interaction.ufoName));
|
|
52
|
+
ssr = interaction.type === 'page_load' && isSSREnabled ? {
|
|
53
|
+
ssr: (0, _getSsrDoneTimeValue.default)(config)
|
|
54
|
+
} : null;
|
|
55
|
+
_interactionMetrics.postInteractionLog.setVCObserverSSRConfig(ssr);
|
|
56
|
+
tti = (_interaction$apdex = interaction.apdex) === null || _interaction$apdex === void 0 || (_interaction$apdex = _interaction$apdex[0]) === null || _interaction$apdex === void 0 ? void 0 : _interaction$apdex.stopTime;
|
|
57
|
+
prefix = 'ufo';
|
|
58
|
+
_context.next = 16;
|
|
59
|
+
return (0, _vc.getVCObserver)().getVCResult(_objectSpread({
|
|
60
|
+
start: interaction.start,
|
|
61
|
+
stop: interaction.end,
|
|
62
|
+
tti: tti,
|
|
63
|
+
prefix: prefix,
|
|
64
|
+
vc: interaction.vc,
|
|
65
|
+
isEventAborted: interactionStatus.originalInteractionStatus !== 'SUCCEEDED'
|
|
66
|
+
}, ssr));
|
|
67
|
+
case 16:
|
|
68
|
+
result = _context.sent;
|
|
69
|
+
if ((_config$experimentalI = config.experimentalInteractionMetrics) !== null && _config$experimentalI !== void 0 && _config$experimentalI.enabled) {
|
|
70
|
+
(0, _vc.getVCObserver)().stop();
|
|
71
|
+
}
|
|
72
|
+
_interactionMetrics.postInteractionLog.setLastInteractionFinishVCResult(result);
|
|
73
|
+
VC = result === null || result === void 0 ? void 0 : result['metrics:vc'];
|
|
74
|
+
if (!(!VC || !(result !== null && result !== void 0 && result["".concat(prefix, ":vc:clean")]))) {
|
|
75
|
+
_context.next = 22;
|
|
76
|
+
break;
|
|
77
|
+
}
|
|
78
|
+
return _context.abrupt("return", result);
|
|
79
|
+
case 22:
|
|
80
|
+
if (!(interactionStatus.originalInteractionStatus !== 'SUCCEEDED' || pageVisibilityUpToTTAI !== 'visible')) {
|
|
81
|
+
_context.next = 24;
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
return _context.abrupt("return", result);
|
|
85
|
+
case 24:
|
|
86
|
+
return _context.abrupt("return", _objectSpread(_objectSpread({}, result), {}, {
|
|
87
|
+
'metric:vc90': VC['90']
|
|
88
|
+
}));
|
|
89
|
+
case 25:
|
|
90
|
+
case "end":
|
|
91
|
+
return _context.stop();
|
|
92
|
+
}
|
|
93
|
+
}, _callee);
|
|
94
|
+
}));
|
|
95
|
+
return _getVCMetrics.apply(this, arguments);
|
|
96
|
+
}
|
|
@@ -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
|
}
|
package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/index.js
CHANGED
|
@@ -19,22 +19,22 @@ function calculateTTVCPercentiles(_x) {
|
|
|
19
19
|
}
|
|
20
20
|
function _calculateTTVCPercentiles() {
|
|
21
21
|
_calculateTTVCPercentiles = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref) {
|
|
22
|
-
var viewport, orderedEntries, percentiles, canvas, elementMap,
|
|
22
|
+
var viewport, orderedEntries, percentiles, startTime, canvas, elementMap, _iterator2, _step2, entry, rect, elementName, timePixelCounts, canvasDimenstions, totalPixels;
|
|
23
23
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
24
24
|
while (1) switch (_context.prev = _context.next) {
|
|
25
25
|
case 0:
|
|
26
|
-
viewport = _ref.viewport, orderedEntries = _ref.orderedEntries, percentiles = _ref.percentiles;
|
|
26
|
+
viewport = _ref.viewport, orderedEntries = _ref.orderedEntries, percentiles = _ref.percentiles, startTime = _ref.startTime;
|
|
27
27
|
canvas = new _canvasPixel.ViewportCanvas(viewport, (0, _platformFeatureFlags.fg)('platform_ufo_canvas_heatmap_full_precision') ? 1 : 0.25);
|
|
28
28
|
elementMap = new Map();
|
|
29
|
-
|
|
29
|
+
_iterator2 = _createForOfIteratorHelper(orderedEntries);
|
|
30
30
|
_context.prev = 4;
|
|
31
|
-
|
|
31
|
+
_iterator2.s();
|
|
32
32
|
case 6:
|
|
33
|
-
if ((
|
|
33
|
+
if ((_step2 = _iterator2.n()).done) {
|
|
34
34
|
_context.next = 17;
|
|
35
35
|
break;
|
|
36
36
|
}
|
|
37
|
-
entry =
|
|
37
|
+
entry = _step2.value;
|
|
38
38
|
if ('rect' in entry.data) {
|
|
39
39
|
_context.next = 10;
|
|
40
40
|
break;
|
|
@@ -57,19 +57,20 @@ function _calculateTTVCPercentiles() {
|
|
|
57
57
|
case 19:
|
|
58
58
|
_context.prev = 19;
|
|
59
59
|
_context.t0 = _context["catch"](4);
|
|
60
|
-
|
|
60
|
+
_iterator2.e(_context.t0);
|
|
61
61
|
case 22:
|
|
62
62
|
_context.prev = 22;
|
|
63
|
-
|
|
63
|
+
_iterator2.f();
|
|
64
64
|
return _context.finish(22);
|
|
65
65
|
case 25:
|
|
66
66
|
_context.next = 27;
|
|
67
67
|
return canvas.getPixelCounts();
|
|
68
68
|
case 27:
|
|
69
69
|
timePixelCounts = _context.sent;
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
canvasDimenstions = canvas.getScaledDimensions();
|
|
71
|
+
totalPixels = canvasDimenstions.width * canvasDimenstions.height;
|
|
72
|
+
return _context.abrupt("return", calculatePercentiles(timePixelCounts, elementMap, percentiles, totalPixels, startTime));
|
|
73
|
+
case 31:
|
|
73
74
|
case "end":
|
|
74
75
|
return _context.stop();
|
|
75
76
|
}
|
|
@@ -77,7 +78,7 @@ function _calculateTTVCPercentiles() {
|
|
|
77
78
|
}));
|
|
78
79
|
return _calculateTTVCPercentiles.apply(this, arguments);
|
|
79
80
|
}
|
|
80
|
-
function calculatePercentiles(timePixelCounts, elementMap, unorderedPercentiles, totalPixels) {
|
|
81
|
+
function calculatePercentiles(timePixelCounts, elementMap, unorderedPercentiles, totalPixels, startTime) {
|
|
81
82
|
var results = {};
|
|
82
83
|
var cumulativePixels = 0;
|
|
83
84
|
var percentiles = unorderedPercentiles.sort(function (a, b) {
|
|
@@ -110,7 +111,7 @@ function calculatePercentiles(timePixelCounts, elementMap, unorderedPercentiles,
|
|
|
110
111
|
var matchesAnyCheckpoints = false;
|
|
111
112
|
while (percentileIndex < percentiles.length && percentCovered >= percentiles[percentileIndex]) {
|
|
112
113
|
results["".concat(percentiles[percentileIndex])] = {
|
|
113
|
-
t: Number(time),
|
|
114
|
+
t: Math.round(Number(time - startTime)),
|
|
114
115
|
e: Array.from(domElementsBuffer)
|
|
115
116
|
};
|
|
116
117
|
percentileIndex++;
|
|
@@ -123,29 +124,21 @@ function calculatePercentiles(timePixelCounts, elementMap, unorderedPercentiles,
|
|
|
123
124
|
break;
|
|
124
125
|
}
|
|
125
126
|
}
|
|
126
|
-
|
|
127
|
-
// Fill in any missing percentiles
|
|
128
127
|
} catch (err) {
|
|
129
128
|
_iterator.e(err);
|
|
130
129
|
} finally {
|
|
131
130
|
_iterator.f();
|
|
132
131
|
}
|
|
133
|
-
var
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
e: []
|
|
142
|
-
};
|
|
143
|
-
}
|
|
132
|
+
var previousResult = {
|
|
133
|
+
t: 0,
|
|
134
|
+
e: []
|
|
135
|
+
};
|
|
136
|
+
for (var i = 0; i < percentiles.length; i++) {
|
|
137
|
+
var percentile = percentiles[i];
|
|
138
|
+
if (!(percentile in results)) {
|
|
139
|
+
results["".concat(percentile)] = previousResult;
|
|
144
140
|
}
|
|
145
|
-
|
|
146
|
-
_iterator2.e(err);
|
|
147
|
-
} finally {
|
|
148
|
-
_iterator2.f();
|
|
141
|
+
previousResult = results["".concat(percentile)];
|
|
149
142
|
}
|
|
150
143
|
return results;
|
|
151
144
|
}
|
|
@@ -243,7 +243,7 @@ var Heatmap = /*#__PURE__*/function () {
|
|
|
243
243
|
}, {
|
|
244
244
|
key: "getVCPercentMetrics",
|
|
245
245
|
value: function () {
|
|
246
|
-
var _getVCPercentMetrics = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(vcPercentCheckpoint) {
|
|
246
|
+
var _getVCPercentMetrics = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(vcPercentCheckpoint, startTime) {
|
|
247
247
|
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;
|
|
248
248
|
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
249
249
|
while (1) switch (_context2.prev = _context2.next) {
|
|
@@ -331,7 +331,7 @@ var Heatmap = /*#__PURE__*/function () {
|
|
|
331
331
|
case 41:
|
|
332
332
|
matchesAnyCheckpoints = true;
|
|
333
333
|
result[checkpoint.toString()] = {
|
|
334
|
-
t: _timestamp,
|
|
334
|
+
t: Math.round(_timestamp - startTime),
|
|
335
335
|
e: _domElements
|
|
336
336
|
};
|
|
337
337
|
_context2.next = 36;
|
|
@@ -358,23 +358,23 @@ var Heatmap = /*#__PURE__*/function () {
|
|
|
358
358
|
}
|
|
359
359
|
}, _callee2, this);
|
|
360
360
|
}));
|
|
361
|
-
function getVCPercentMetrics(_x2) {
|
|
361
|
+
function getVCPercentMetrics(_x2, _x3) {
|
|
362
362
|
return _getVCPercentMetrics.apply(this, arguments);
|
|
363
363
|
}
|
|
364
364
|
return getVCPercentMetrics;
|
|
365
365
|
}()
|
|
366
366
|
}]);
|
|
367
367
|
}();
|
|
368
|
-
function calculateTTVCPercentiles(
|
|
368
|
+
function calculateTTVCPercentiles(_x4) {
|
|
369
369
|
return _calculateTTVCPercentiles.apply(this, arguments);
|
|
370
370
|
}
|
|
371
371
|
function _calculateTTVCPercentiles() {
|
|
372
372
|
_calculateTTVCPercentiles = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(_ref2) {
|
|
373
|
-
var orderedEntries, viewport, percentiles, heatmap, vcDetails;
|
|
373
|
+
var orderedEntries, viewport, percentiles, startTime, heatmap, vcDetails;
|
|
374
374
|
return _regenerator.default.wrap(function _callee3$(_context3) {
|
|
375
375
|
while (1) switch (_context3.prev = _context3.next) {
|
|
376
376
|
case 0:
|
|
377
|
-
orderedEntries = _ref2.orderedEntries, viewport = _ref2.viewport, percentiles = _ref2.percentiles;
|
|
377
|
+
orderedEntries = _ref2.orderedEntries, viewport = _ref2.viewport, percentiles = _ref2.percentiles, startTime = _ref2.startTime;
|
|
378
378
|
heatmap = new Heatmap({
|
|
379
379
|
viewport: viewport,
|
|
380
380
|
heatmapSize: 200
|
|
@@ -383,7 +383,7 @@ function _calculateTTVCPercentiles() {
|
|
|
383
383
|
return heatmap.applyEntriesToHeatmap(orderedEntries);
|
|
384
384
|
case 4:
|
|
385
385
|
_context3.next = 6;
|
|
386
|
-
return heatmap.getVCPercentMetrics(percentiles);
|
|
386
|
+
return heatmap.getVCPercentMetrics(percentiles, startTime);
|
|
387
387
|
case 6:
|
|
388
388
|
vcDetails = _context3.sent;
|
|
389
389
|
return _context3.abrupt("return", vcDetails);
|
package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/rect-sweeping-line/index.js
CHANGED
|
@@ -16,11 +16,11 @@ function calculateTTVCPercentiles(_x) {
|
|
|
16
16
|
}
|
|
17
17
|
function _calculateTTVCPercentiles() {
|
|
18
18
|
_calculateTTVCPercentiles = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref) {
|
|
19
|
-
var orderedEntries, viewport, percentiles, sortedPercentiles, viewportArea, checkpoints, activeRects, removeActiveRect, domElementsBuffer, i, iEntry, iEntryData, rect, elementName, exclusionArea, currentArea, currVCPercent, matchesAnyCheckpoints, _checkpoint, domElements;
|
|
19
|
+
var orderedEntries, viewport, percentiles, startTime, sortedPercentiles, viewportArea, checkpoints, activeRects, removeActiveRect, domElementsBuffer, i, iEntry, iEntryData, rect, elementName, exclusionArea, currentArea, currVCPercent, matchesAnyCheckpoints, _checkpoint, domElements;
|
|
20
20
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
21
21
|
while (1) switch (_context.prev = _context.next) {
|
|
22
22
|
case 0:
|
|
23
|
-
orderedEntries = _ref.orderedEntries, viewport = _ref.viewport, percentiles = _ref.percentiles;
|
|
23
|
+
orderedEntries = _ref.orderedEntries, viewport = _ref.viewport, percentiles = _ref.percentiles, startTime = _ref.startTime;
|
|
24
24
|
sortedPercentiles = (0, _toConsumableArray2.default)(percentiles).sort(function (a, b) {
|
|
25
25
|
return a - b;
|
|
26
26
|
});
|
|
@@ -76,7 +76,7 @@ function _calculateTTVCPercentiles() {
|
|
|
76
76
|
case 25:
|
|
77
77
|
matchesAnyCheckpoints = true;
|
|
78
78
|
checkpoints[_checkpoint.toString()] = {
|
|
79
|
-
t: iEntry.time,
|
|
79
|
+
t: Math.round(iEntry.time - startTime),
|
|
80
80
|
e: domElements
|
|
81
81
|
};
|
|
82
82
|
_context.next = 20;
|
|
@@ -22,6 +22,9 @@ var WindowEventObserver = exports.default = /*#__PURE__*/function () {
|
|
|
22
22
|
var unbindCallback = (0, _bindEventListener.bind)(window, {
|
|
23
23
|
type: type,
|
|
24
24
|
listener: function listener(event) {
|
|
25
|
+
if (!event.isTrusted) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
25
28
|
_this.onEvent({
|
|
26
29
|
time: event.timeStamp,
|
|
27
30
|
type: type,
|
|
@@ -29,7 +32,8 @@ var WindowEventObserver = exports.default = /*#__PURE__*/function () {
|
|
|
29
32
|
});
|
|
30
33
|
},
|
|
31
34
|
options: {
|
|
32
|
-
passive: true
|
|
35
|
+
passive: true,
|
|
36
|
+
once: true
|
|
33
37
|
}
|
|
34
38
|
});
|
|
35
39
|
this.unbindFns.push(unbindCallback);
|