@atlaskit/react-ufo 2.4.6 → 2.4.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/create-experimental-interaction-metrics-payload/package.json +15 -0
- package/dist/cjs/config/index.js +40 -18
- package/dist/cjs/create-experimental-interaction-metrics-payload/index.js +89 -0
- package/dist/cjs/create-payload/common/utils/index.js +85 -1
- package/dist/cjs/create-payload/index.js +37 -77
- package/dist/cjs/create-post-interaction-log-payload/index.js +1 -4
- package/dist/cjs/interaction-metrics/common/constants.js +7 -1
- package/dist/cjs/interaction-metrics/common/index.js +151 -0
- package/dist/cjs/interaction-metrics/index.js +139 -204
- package/dist/cjs/interaction-metrics/post-interaction-log.js +6 -2
- package/dist/cjs/interaction-metrics-init/index.js +27 -9
- package/dist/cjs/load-hold/UFOLoadHold.js +3 -4
- package/dist/cjs/segment/segment.js +7 -9
- package/dist/cjs/trace-pageload/index.js +2 -1
- package/dist/es2019/config/index.js +22 -0
- package/dist/es2019/create-experimental-interaction-metrics-payload/index.js +67 -0
- package/dist/es2019/create-payload/common/utils/index.js +86 -1
- package/dist/es2019/create-payload/index.js +28 -74
- package/dist/es2019/create-post-interaction-log-payload/index.js +1 -4
- package/dist/es2019/interaction-metrics/common/constants.js +6 -0
- package/dist/es2019/interaction-metrics/common/index.js +103 -0
- package/dist/es2019/interaction-metrics/index.js +92 -129
- package/dist/es2019/interaction-metrics/post-interaction-log.js +6 -2
- package/dist/es2019/interaction-metrics-init/index.js +21 -8
- package/dist/es2019/load-hold/UFOLoadHold.js +3 -4
- package/dist/es2019/segment/segment.js +6 -12
- package/dist/es2019/trace-pageload/index.js +1 -1
- package/dist/esm/config/index.js +39 -18
- package/dist/esm/create-experimental-interaction-metrics-payload/index.js +81 -0
- package/dist/esm/create-payload/common/utils/index.js +80 -1
- package/dist/esm/create-payload/index.js +33 -75
- package/dist/esm/create-post-interaction-log-payload/index.js +1 -4
- package/dist/esm/interaction-metrics/common/constants.js +6 -0
- package/dist/esm/interaction-metrics/common/index.js +132 -0
- package/dist/esm/interaction-metrics/index.js +87 -156
- package/dist/esm/interaction-metrics/post-interaction-log.js +6 -2
- package/dist/esm/interaction-metrics-init/index.js +24 -10
- package/dist/esm/load-hold/UFOLoadHold.js +3 -4
- package/dist/esm/segment/segment.js +7 -9
- package/dist/esm/trace-pageload/index.js +1 -1
- package/dist/types/common/common/types.d.ts +9 -5
- package/dist/types/config/index.d.ts +6 -0
- package/dist/types/create-experimental-interaction-metrics-payload/index.d.ts +31 -0
- package/dist/types/create-payload/common/utils/index.d.ts +12 -0
- package/dist/types/create-payload/index.d.ts +13 -5660
- package/dist/types/create-post-interaction-log-payload/index.d.ts +2 -0
- package/dist/types/interaction-metrics/common/constants.d.ts +31 -1
- package/dist/types/interaction-metrics/common/index.d.ts +16 -0
- package/dist/types/interaction-metrics/index.d.ts +4 -15
- package/dist/types/interaction-metrics/post-interaction-log.d.ts +1 -1
- package/dist/types/load-hold/UFOLoadHold.d.ts +1 -2
- package/dist/types/trace-pageload/index.d.ts +1 -0
- package/dist/types-ts4.5/common/common/types.d.ts +9 -5
- package/dist/types-ts4.5/config/index.d.ts +6 -0
- package/dist/types-ts4.5/create-experimental-interaction-metrics-payload/index.d.ts +31 -0
- package/dist/types-ts4.5/create-payload/common/utils/index.d.ts +12 -0
- package/dist/types-ts4.5/create-payload/index.d.ts +13 -5660
- package/dist/types-ts4.5/create-post-interaction-log-payload/index.d.ts +2 -0
- package/dist/types-ts4.5/interaction-metrics/common/constants.d.ts +31 -1
- package/dist/types-ts4.5/interaction-metrics/common/index.d.ts +16 -0
- package/dist/types-ts4.5/interaction-metrics/index.d.ts +4 -15
- package/dist/types-ts4.5/interaction-metrics/post-interaction-log.d.ts +1 -1
- package/dist/types-ts4.5/load-hold/UFOLoadHold.d.ts +1 -2
- package/dist/types-ts4.5/trace-pageload/index.d.ts +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
|
+
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
3
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
|
|
4
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
5
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
6
|
+
import { getConfig } from '../../config';
|
|
7
|
+
import { interactionQueue, segmentCache, segmentObservers } from './constants';
|
|
8
|
+
export function isPerformanceTracingEnabled() {
|
|
9
|
+
var _getConfig;
|
|
10
|
+
return ((_getConfig = getConfig()) === null || _getConfig === void 0 ? void 0 : _getConfig.enableAdditionalPerformanceMarks) || window.__REACT_UFO_ENABLE_PERF_TRACING || process.env.NODE_ENV !== 'production';
|
|
11
|
+
}
|
|
12
|
+
export function labelStackToString(labelStack, name) {
|
|
13
|
+
var _stack$map;
|
|
14
|
+
var stack = _toConsumableArray(labelStack !== null && labelStack !== void 0 ? labelStack : []);
|
|
15
|
+
if (name) {
|
|
16
|
+
stack.push({
|
|
17
|
+
name: name
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return (_stack$map = stack.map(function (l) {
|
|
21
|
+
return l.name;
|
|
22
|
+
})) === null || _stack$map === void 0 ? void 0 : _stack$map.join('/');
|
|
23
|
+
}
|
|
24
|
+
export function labelStackToIdString(labelStack) {
|
|
25
|
+
var _labelStack$map;
|
|
26
|
+
return labelStack === null || labelStack === void 0 || (_labelStack$map = labelStack.map(function (l) {
|
|
27
|
+
return 'segmentId' in l ? "".concat(l.name, ":").concat(l.segmentId) : "".concat(l.name);
|
|
28
|
+
})) === null || _labelStack$map === void 0 ? void 0 : _labelStack$map.join('/');
|
|
29
|
+
}
|
|
30
|
+
export function addSegmentObserver(observer) {
|
|
31
|
+
segmentObservers.push(observer);
|
|
32
|
+
var _iterator = _createForOfIteratorHelper(segmentCache.values()),
|
|
33
|
+
_step;
|
|
34
|
+
try {
|
|
35
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
36
|
+
var segmentInfo = _step.value;
|
|
37
|
+
observer.onAdd(segmentInfo);
|
|
38
|
+
}
|
|
39
|
+
} catch (err) {
|
|
40
|
+
_iterator.e(err);
|
|
41
|
+
} finally {
|
|
42
|
+
_iterator.f();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export function removeSegmentObserver(observer) {
|
|
46
|
+
var index = segmentObservers.findIndex(function (obs) {
|
|
47
|
+
return obs === observer;
|
|
48
|
+
});
|
|
49
|
+
if (index !== -1) {
|
|
50
|
+
segmentObservers.splice(index, 1);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export function addHoldCriterion(id, labelStack, name, startTime) {
|
|
54
|
+
var _window$__CRITERION__;
|
|
55
|
+
if (!((_window$__CRITERION__ = window.__CRITERION__) !== null && _window$__CRITERION__ !== void 0 && _window$__CRITERION__.addUFOHold)) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
window.__CRITERION__.addUFOHold(id, labelStackToString(labelStack), name, startTime);
|
|
59
|
+
}
|
|
60
|
+
export function removeHoldCriterion(id) {
|
|
61
|
+
var _window$__CRITERION__2;
|
|
62
|
+
if (!((_window$__CRITERION__2 = window.__CRITERION__) !== null && _window$__CRITERION__2 !== void 0 && _window$__CRITERION__2.removeUFOHold)) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
window.__CRITERION__.removeUFOHold(id);
|
|
66
|
+
}
|
|
67
|
+
export var pushToQueue = function pushToQueue(id, data) {
|
|
68
|
+
interactionQueue.push({
|
|
69
|
+
id: id,
|
|
70
|
+
data: data
|
|
71
|
+
});
|
|
72
|
+
};
|
|
73
|
+
export function callCleanUpCallbacks(interaction) {
|
|
74
|
+
interaction.cleanupCallbacks.reverse().forEach(function (cleanUpCallback) {
|
|
75
|
+
cleanUpCallback();
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
export function reactProfilerTimingMap(data) {
|
|
79
|
+
var profilerTimingMap = new Map();
|
|
80
|
+
data.reactProfilerTimings.forEach(function (profilerTiming) {
|
|
81
|
+
var labelStackId = labelStackToIdString(profilerTiming.labelStack);
|
|
82
|
+
if (labelStackId) {
|
|
83
|
+
var _profilerTimingMap$ge, _timing$start, _timing$end;
|
|
84
|
+
var timing = (_profilerTimingMap$ge = profilerTimingMap.get(labelStackId)) !== null && _profilerTimingMap$ge !== void 0 ? _profilerTimingMap$ge : {
|
|
85
|
+
labelStack: profilerTiming.labelStack
|
|
86
|
+
};
|
|
87
|
+
timing.start = profilerTiming.startTime < ((_timing$start = timing.start) !== null && _timing$start !== void 0 ? _timing$start : Number.MAX_SAFE_INTEGER) ? profilerTiming.startTime : timing.start;
|
|
88
|
+
timing.end = profilerTiming.commitTime > ((_timing$end = timing.end) !== null && _timing$end !== void 0 ? _timing$end : Number.MIN_SAFE_INTEGER) ? profilerTiming.commitTime : timing.end;
|
|
89
|
+
profilerTimingMap.set(labelStackId, timing);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
try {
|
|
93
|
+
// for Firefox 102 and older
|
|
94
|
+
var _iterator2 = _createForOfIteratorHelper(profilerTimingMap.entries()),
|
|
95
|
+
_step2;
|
|
96
|
+
try {
|
|
97
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
98
|
+
var _step2$value = _slicedToArray(_step2.value, 2),
|
|
99
|
+
_step2$value$ = _step2$value[1],
|
|
100
|
+
labelStack = _step2$value$.labelStack,
|
|
101
|
+
start = _step2$value$.start,
|
|
102
|
+
end = _step2$value$.end;
|
|
103
|
+
performance.measure("\uD83D\uDEF8 ".concat(labelStackToString(labelStack), " [segment_ttai]"), {
|
|
104
|
+
start: start,
|
|
105
|
+
end: end
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
} catch (err) {
|
|
109
|
+
_iterator2.e(err);
|
|
110
|
+
} finally {
|
|
111
|
+
_iterator2.f();
|
|
112
|
+
}
|
|
113
|
+
} catch (e) {
|
|
114
|
+
// do nothing
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
export function callCancelCallbacks(interaction) {
|
|
118
|
+
interaction.cancelCallbacks.reverse().forEach(function (cancelCallback) {
|
|
119
|
+
cancelCallback();
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
export function isSegmentLabel(obj) {
|
|
123
|
+
return obj && typeof obj.name === 'string' && typeof obj.segmentId === 'string';
|
|
124
|
+
}
|
|
125
|
+
export function getSegmentCacheKey(labelStack) {
|
|
126
|
+
return labelStack.map(function (l) {
|
|
127
|
+
if (isSegmentLabel(l)) {
|
|
128
|
+
return "".concat(l.name, "_").concat(l.segmentId);
|
|
129
|
+
}
|
|
130
|
+
return l.name;
|
|
131
|
+
}).join('|');
|
|
132
|
+
}
|
|
@@ -1,30 +1,25 @@
|
|
|
1
1
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
2
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
-
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
4
3
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
5
4
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
6
|
-
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
|
|
7
|
-
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
8
|
-
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
9
5
|
import { v4 as createUUID } from 'uuid';
|
|
10
6
|
import coinflip from '../coinflip';
|
|
11
7
|
import { getAwaitBM3TTIList, getCapabilityRate, getConfig } from '../config';
|
|
8
|
+
import { ExperimentalInteractionMetrics } from '../create-experimental-interaction-metrics-payload';
|
|
9
|
+
import { getExperimentalVCMetrics, getTTAI } from '../create-payload/common/utils';
|
|
12
10
|
import { clearActiveTrace } from '../experience-trace-id-context';
|
|
13
11
|
import { allFeatureFlagsAccessed, currentFeatureFlagsAccessed } from '../feature-flags-accessed';
|
|
14
12
|
import { getInteractionId } from '../interaction-id-context';
|
|
15
13
|
import { getVCObserver } from '../vc';
|
|
16
|
-
import
|
|
14
|
+
import { addHoldCriterion, addSegmentObserver, callCancelCallbacks, callCleanUpCallbacks, getSegmentCacheKey, isPerformanceTracingEnabled, labelStackToString, pushToQueue, reactProfilerTimingMap, removeHoldCriterion, removeSegmentObserver } from './common';
|
|
15
|
+
import interactions, { CLEANUP_TIMEOUT, CLEANUP_TIMEOUT_AFTER_APDEX, interactionQueue, moduleLoadingRequests, segmentCache, segmentObservers } from './common/constants';
|
|
17
16
|
import PostInteractionLog from './post-interaction-log';
|
|
18
17
|
var PreviousInteractionLog = {
|
|
19
18
|
name: undefined,
|
|
20
19
|
isAborted: undefined
|
|
21
20
|
};
|
|
22
21
|
export var postInteractionLog = new PostInteractionLog();
|
|
23
|
-
var
|
|
24
|
-
var segmentCache = new Map();
|
|
25
|
-
var CLEANUP_TIMEOUT = 60 * 1000;
|
|
26
|
-
var CLEANUP_TIMEOUT_AFTER_APDEX = 15 * 1000;
|
|
27
|
-
var segmentObservers = [];
|
|
22
|
+
export var experimentalInteractionLog = new ExperimentalInteractionMetrics();
|
|
28
23
|
export function getActiveInteraction() {
|
|
29
24
|
var interactionId = getInteractionId();
|
|
30
25
|
if (!interactionId.current) {
|
|
@@ -32,51 +27,6 @@ export function getActiveInteraction() {
|
|
|
32
27
|
}
|
|
33
28
|
return interactions.get(interactionId.current);
|
|
34
29
|
}
|
|
35
|
-
function isPerformanceTracingEnabled() {
|
|
36
|
-
var _getConfig;
|
|
37
|
-
return ((_getConfig = getConfig()) === null || _getConfig === void 0 ? void 0 : _getConfig.enableAdditionalPerformanceMarks) || window.__REACT_UFO_ENABLE_PERF_TRACING || process.env.NODE_ENV !== 'production';
|
|
38
|
-
}
|
|
39
|
-
function labelStackToString(labelStack, name) {
|
|
40
|
-
var _stack$map;
|
|
41
|
-
var stack = _toConsumableArray(labelStack !== null && labelStack !== void 0 ? labelStack : []);
|
|
42
|
-
if (name) {
|
|
43
|
-
stack.push({
|
|
44
|
-
name: name
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
return (_stack$map = stack.map(function (l) {
|
|
48
|
-
return l.name;
|
|
49
|
-
})) === null || _stack$map === void 0 ? void 0 : _stack$map.join('/');
|
|
50
|
-
}
|
|
51
|
-
function labelStackToIdString(labelStack) {
|
|
52
|
-
var _labelStack$map;
|
|
53
|
-
return labelStack === null || labelStack === void 0 || (_labelStack$map = labelStack.map(function (l) {
|
|
54
|
-
return 'segmentId' in l ? "".concat(l.name, ":").concat(l.segmentId) : "".concat(l.name);
|
|
55
|
-
})) === null || _labelStack$map === void 0 ? void 0 : _labelStack$map.join('/');
|
|
56
|
-
}
|
|
57
|
-
function addSegmentObserver(observer) {
|
|
58
|
-
segmentObservers.push(observer);
|
|
59
|
-
var _iterator = _createForOfIteratorHelper(segmentCache.values()),
|
|
60
|
-
_step;
|
|
61
|
-
try {
|
|
62
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
63
|
-
var segmentInfo = _step.value;
|
|
64
|
-
observer.onAdd(segmentInfo);
|
|
65
|
-
}
|
|
66
|
-
} catch (err) {
|
|
67
|
-
_iterator.e(err);
|
|
68
|
-
} finally {
|
|
69
|
-
_iterator.f();
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
function removeSegmentObserver(observer) {
|
|
73
|
-
var index = segmentObservers.findIndex(function (obs) {
|
|
74
|
-
return obs === observer;
|
|
75
|
-
});
|
|
76
|
-
if (index !== -1) {
|
|
77
|
-
segmentObservers.splice(index, 1);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
30
|
export function remove(interactionId) {
|
|
81
31
|
interactions.delete(interactionId);
|
|
82
32
|
}
|
|
@@ -225,7 +175,6 @@ export function addPreload(moduleId, timestamp) {
|
|
|
225
175
|
export function addLoad(identifier, start, end) {
|
|
226
176
|
addSpanToAll('bundle_load', identifier, null, start, end - start);
|
|
227
177
|
}
|
|
228
|
-
var moduleLoadingRequests = {};
|
|
229
178
|
export function extractModuleName(input) {
|
|
230
179
|
var result = input !== null && input !== void 0 ? input : '';
|
|
231
180
|
result = result.replace(/^\.\/src\/packages\//, '');
|
|
@@ -233,30 +182,27 @@ export function extractModuleName(input) {
|
|
|
233
182
|
result = result.replace(/(\/src)?\/(index|main)\.(tsx|ts|js|jsx)$/, '');
|
|
234
183
|
return result;
|
|
235
184
|
}
|
|
236
|
-
function
|
|
237
|
-
var _window$__CRITERION__;
|
|
238
|
-
if (!((_window$__CRITERION__ = window.__CRITERION__) !== null && _window$__CRITERION__ !== void 0 && _window$__CRITERION__.addUFOHold)) {
|
|
239
|
-
return;
|
|
240
|
-
}
|
|
241
|
-
window.__CRITERION__.addUFOHold(id, labelStackToString(labelStack), name, startTime);
|
|
242
|
-
}
|
|
243
|
-
function removeHoldCriterion(id) {
|
|
244
|
-
var _window$__CRITERION__2;
|
|
245
|
-
if (!((_window$__CRITERION__2 = window.__CRITERION__) !== null && _window$__CRITERION__2 !== void 0 && _window$__CRITERION__2.removeUFOHold)) {
|
|
246
|
-
return;
|
|
247
|
-
}
|
|
248
|
-
window.__CRITERION__.removeUFOHold(id);
|
|
249
|
-
}
|
|
250
|
-
export function addHold(interactionId, labelStack, name) {
|
|
185
|
+
export function addHold(interactionId, labelStack, name, experimental) {
|
|
251
186
|
var interaction = interactions.get(interactionId);
|
|
252
187
|
var id = createUUID();
|
|
253
188
|
if (interaction != null) {
|
|
254
|
-
var
|
|
255
|
-
|
|
189
|
+
var _getConfig;
|
|
190
|
+
var holdActive = {
|
|
256
191
|
labelStack: labelStack,
|
|
257
192
|
name: name,
|
|
258
|
-
start:
|
|
259
|
-
}
|
|
193
|
+
start: 0
|
|
194
|
+
};
|
|
195
|
+
var start = performance.now();
|
|
196
|
+
if ((_getConfig = getConfig()) !== null && _getConfig !== void 0 && (_getConfig = _getConfig.experimentalInteractionMetrics) !== null && _getConfig !== void 0 && _getConfig.enabled && experimental) {
|
|
197
|
+
interaction.holdExpActive.set(id, _objectSpread(_objectSpread({}, holdActive), {}, {
|
|
198
|
+
start: start
|
|
199
|
+
}));
|
|
200
|
+
}
|
|
201
|
+
if (!experimental) {
|
|
202
|
+
interaction.holdActive.set(id, _objectSpread(_objectSpread({}, holdActive), {}, {
|
|
203
|
+
start: start
|
|
204
|
+
}));
|
|
205
|
+
}
|
|
260
206
|
addHoldCriterion(id, labelStack, name, start);
|
|
261
207
|
return function () {
|
|
262
208
|
var end = performance.now();
|
|
@@ -274,11 +220,20 @@ export function addHold(interactionId, labelStack, name) {
|
|
|
274
220
|
removeHoldCriterion(id);
|
|
275
221
|
var currentInteraction = interactions.get(interactionId);
|
|
276
222
|
var currentHold = interaction.holdActive.get(id);
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
223
|
+
var expHold = interaction.holdExpActive.get(id);
|
|
224
|
+
if (currentInteraction != null) {
|
|
225
|
+
if (currentHold != null) {
|
|
226
|
+
currentInteraction.holdInfo.push(_objectSpread(_objectSpread({}, currentHold), {}, {
|
|
227
|
+
end: end
|
|
228
|
+
}));
|
|
229
|
+
interaction.holdActive.delete(id);
|
|
230
|
+
}
|
|
231
|
+
if (expHold != null) {
|
|
232
|
+
currentInteraction.holdExpInfo.push(_objectSpread(_objectSpread({}, expHold), {}, {
|
|
233
|
+
end: end
|
|
234
|
+
}));
|
|
235
|
+
interaction.holdExpActive.delete(id);
|
|
236
|
+
}
|
|
282
237
|
}
|
|
283
238
|
};
|
|
284
239
|
}
|
|
@@ -406,22 +361,10 @@ export var addProfilerTimings = function addProfilerTimings(interactionId, label
|
|
|
406
361
|
postInteractionLog.addProfilerTimings(labelStack, type, actualDuration, baseDuration, startTime, commitTime);
|
|
407
362
|
}
|
|
408
363
|
};
|
|
409
|
-
var pushToQueue = function pushToQueue(id, data) {
|
|
410
|
-
interactionQueue.push({
|
|
411
|
-
id: id,
|
|
412
|
-
data: data
|
|
413
|
-
});
|
|
414
|
-
};
|
|
415
364
|
var handleInteraction = pushToQueue;
|
|
416
|
-
function callCleanUpCallbacks(interaction) {
|
|
417
|
-
interaction.cleanupCallbacks.reverse().forEach(function (cleanUpCallback) {
|
|
418
|
-
cleanUpCallback();
|
|
419
|
-
});
|
|
420
|
-
}
|
|
421
365
|
var finishInteraction = function finishInteraction(id, data) {
|
|
422
366
|
var _getConfig3;
|
|
423
367
|
var endTime = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : performance.now();
|
|
424
|
-
// eslint-disable-next-line no-param-reassign
|
|
425
368
|
data.end = endTime;
|
|
426
369
|
try {
|
|
427
370
|
// for Firefox 102 and older
|
|
@@ -433,7 +376,6 @@ var finishInteraction = function finishInteraction(id, data) {
|
|
|
433
376
|
// do nothing
|
|
434
377
|
}
|
|
435
378
|
if (data.featureFlags) {
|
|
436
|
-
// eslint-disable-next-line no-param-reassign
|
|
437
379
|
data.featureFlags.during = Object.fromEntries(currentFeatureFlagsAccessed);
|
|
438
380
|
}
|
|
439
381
|
clearActiveTrace();
|
|
@@ -441,50 +383,13 @@ var finishInteraction = function finishInteraction(id, data) {
|
|
|
441
383
|
if ((_getConfig3 = getConfig()) !== null && _getConfig3 !== void 0 && (_getConfig3 = _getConfig3.vc) !== null && _getConfig3 !== void 0 && _getConfig3.stopVCAtInteractionFinish) {
|
|
442
384
|
data.vc = getVCObserver().getVCRawData();
|
|
443
385
|
}
|
|
444
|
-
remove(id);
|
|
445
386
|
PreviousInteractionLog.name = data.ufoName || 'unknown';
|
|
446
387
|
PreviousInteractionLog.isAborted = data.abortReason != null;
|
|
447
388
|
if (data.ufoName) {
|
|
448
389
|
handleInteraction(id, data);
|
|
449
390
|
}
|
|
450
391
|
if (isPerformanceTracingEnabled()) {
|
|
451
|
-
|
|
452
|
-
data.reactProfilerTimings.forEach(function (profilerTiming) {
|
|
453
|
-
var labelStackId = labelStackToIdString(profilerTiming.labelStack);
|
|
454
|
-
if (labelStackId) {
|
|
455
|
-
var _profilerTimingMap$ge, _timing$start, _timing$end;
|
|
456
|
-
var timing = (_profilerTimingMap$ge = profilerTimingMap.get(labelStackId)) !== null && _profilerTimingMap$ge !== void 0 ? _profilerTimingMap$ge : {
|
|
457
|
-
labelStack: profilerTiming.labelStack
|
|
458
|
-
};
|
|
459
|
-
timing.start = profilerTiming.startTime < ((_timing$start = timing.start) !== null && _timing$start !== void 0 ? _timing$start : Number.MAX_SAFE_INTEGER) ? profilerTiming.startTime : timing.start;
|
|
460
|
-
timing.end = profilerTiming.commitTime > ((_timing$end = timing.end) !== null && _timing$end !== void 0 ? _timing$end : Number.MIN_SAFE_INTEGER) ? profilerTiming.commitTime : timing.end;
|
|
461
|
-
profilerTimingMap.set(labelStackId, timing);
|
|
462
|
-
}
|
|
463
|
-
});
|
|
464
|
-
try {
|
|
465
|
-
// for Firefox 102 and older
|
|
466
|
-
var _iterator2 = _createForOfIteratorHelper(profilerTimingMap.entries()),
|
|
467
|
-
_step2;
|
|
468
|
-
try {
|
|
469
|
-
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
470
|
-
var _step2$value = _slicedToArray(_step2.value, 2),
|
|
471
|
-
_step2$value$ = _step2$value[1],
|
|
472
|
-
labelStack = _step2$value$.labelStack,
|
|
473
|
-
start = _step2$value$.start,
|
|
474
|
-
end = _step2$value$.end;
|
|
475
|
-
performance.measure("\uD83D\uDEF8 ".concat(labelStackToString(labelStack), " [segment_ttai]"), {
|
|
476
|
-
start: start,
|
|
477
|
-
end: end
|
|
478
|
-
});
|
|
479
|
-
}
|
|
480
|
-
} catch (err) {
|
|
481
|
-
_iterator2.e(err);
|
|
482
|
-
} finally {
|
|
483
|
-
_iterator2.f();
|
|
484
|
-
}
|
|
485
|
-
} catch (e) {
|
|
486
|
-
// do nothing
|
|
487
|
-
}
|
|
392
|
+
reactProfilerTimingMap(data);
|
|
488
393
|
}
|
|
489
394
|
try {
|
|
490
395
|
// dispatch a global window event to notify the measure is completed
|
|
@@ -504,57 +409,92 @@ export var sinkInteractionHandler = function sinkInteractionHandler(sinkFn) {
|
|
|
504
409
|
interactionQueue.length = 0;
|
|
505
410
|
}
|
|
506
411
|
};
|
|
412
|
+
export var sinkExperimentalHandler = function sinkExperimentalHandler(sinkFn) {
|
|
413
|
+
experimentalInteractionLog.sinkHandler(sinkFn);
|
|
414
|
+
};
|
|
507
415
|
export var sinkPostInteractionLogHandler = function sinkPostInteractionLogHandler(sinkFn) {
|
|
508
416
|
postInteractionLog.sinkHandler(sinkFn);
|
|
509
417
|
};
|
|
418
|
+
|
|
419
|
+
// a flag to prevent mutliple submittions
|
|
420
|
+
var activeSubmitted = false;
|
|
510
421
|
export function tryComplete(interactionId, endTime) {
|
|
511
422
|
var interaction = interactions.get(interactionId);
|
|
512
423
|
if (interaction != null) {
|
|
513
|
-
var
|
|
514
|
-
|
|
424
|
+
var noMoreActiveHolds = interaction.holdActive.size === 0;
|
|
425
|
+
var noMoreExpHolds = interaction.holdExpActive.size === 0;
|
|
426
|
+
var postInteraction = function postInteraction() {
|
|
515
427
|
var _getConfig4;
|
|
516
|
-
finishInteraction(interactionId, interaction, endTime);
|
|
517
428
|
if ((_getConfig4 = getConfig()) !== null && _getConfig4 !== void 0 && (_getConfig4 = _getConfig4.postInteractionLog) !== null && _getConfig4 !== void 0 && _getConfig4.enabled) {
|
|
518
|
-
|
|
429
|
+
var _getExperimentalVCMet;
|
|
430
|
+
var experimentalVC90 = (_getExperimentalVCMet = getExperimentalVCMetrics(interaction)) === null || _getExperimentalVCMet === void 0 ? void 0 : _getExperimentalVCMet['metric:experimental:vc90'];
|
|
431
|
+
var experimentalTTAI = getTTAI(interaction);
|
|
432
|
+
postInteractionLog.onInteractionComplete(_objectSpread(_objectSpread({}, interaction), {}, {
|
|
433
|
+
experimentalTTAI: experimentalTTAI,
|
|
434
|
+
experimentalVC90: experimentalVC90
|
|
435
|
+
}));
|
|
436
|
+
}
|
|
437
|
+
remove(interactionId);
|
|
438
|
+
activeSubmitted = false;
|
|
439
|
+
};
|
|
440
|
+
if (noMoreActiveHolds) {
|
|
441
|
+
if (!activeSubmitted) {
|
|
442
|
+
finishInteraction(interactionId, interaction, endTime);
|
|
443
|
+
activeSubmitted = true;
|
|
444
|
+
}
|
|
445
|
+
if (noMoreExpHolds) {
|
|
446
|
+
var _getConfig5;
|
|
447
|
+
if ((_getConfig5 = getConfig()) !== null && _getConfig5 !== void 0 && (_getConfig5 = _getConfig5.experimentalInteractionMetrics) !== null && _getConfig5 !== void 0 && _getConfig5.enabled) {
|
|
448
|
+
experimentalInteractionLog.onInteractionComplete(interactionId, interaction, endTime);
|
|
449
|
+
}
|
|
450
|
+
postInteraction();
|
|
519
451
|
}
|
|
520
452
|
}
|
|
521
453
|
}
|
|
522
454
|
}
|
|
523
|
-
function callCancelCallbacks(interaction) {
|
|
524
|
-
interaction.cancelCallbacks.reverse().forEach(function (cancelCallback) {
|
|
525
|
-
cancelCallback();
|
|
526
|
-
});
|
|
527
|
-
}
|
|
528
455
|
export function abort(interactionId, abortReason) {
|
|
529
456
|
var interaction = interactions.get(interactionId);
|
|
530
457
|
if (interaction != null) {
|
|
458
|
+
var _getConfig6;
|
|
531
459
|
callCancelCallbacks(interaction);
|
|
532
460
|
interaction.abortReason = abortReason;
|
|
533
461
|
finishInteraction(interactionId, interaction);
|
|
462
|
+
if ((_getConfig6 = getConfig()) !== null && _getConfig6 !== void 0 && (_getConfig6 = _getConfig6.experimentalInteractionMetrics) !== null && _getConfig6 !== void 0 && _getConfig6.enabled) {
|
|
463
|
+
experimentalInteractionLog.onInteractionComplete(interactionId, interaction);
|
|
464
|
+
}
|
|
465
|
+
remove(interactionId);
|
|
534
466
|
}
|
|
535
467
|
}
|
|
536
468
|
export function abortByNewInteraction(interactionId, interactionName) {
|
|
537
469
|
var interaction = interactions.get(interactionId);
|
|
538
470
|
if (interaction != null) {
|
|
471
|
+
var _getConfig7;
|
|
539
472
|
callCancelCallbacks(interaction);
|
|
540
473
|
interaction.abortReason = 'new_interaction';
|
|
541
474
|
interaction.abortedByInteractionName = interactionName;
|
|
542
475
|
finishInteraction(interactionId, interaction);
|
|
476
|
+
if ((_getConfig7 = getConfig()) !== null && _getConfig7 !== void 0 && (_getConfig7 = _getConfig7.experimentalInteractionMetrics) !== null && _getConfig7 !== void 0 && _getConfig7.enabled) {
|
|
477
|
+
experimentalInteractionLog.onInteractionComplete(interactionId, interaction);
|
|
478
|
+
}
|
|
479
|
+
remove(interactionId);
|
|
543
480
|
}
|
|
544
481
|
}
|
|
545
482
|
export function abortAll(abortReason, abortedByInteractionName) {
|
|
546
483
|
interactions.forEach(function (interaction, interactionId) {
|
|
484
|
+
var _getConfig8;
|
|
547
485
|
var noMoreHolds = interaction.holdActive.size === 0;
|
|
548
486
|
if (!noMoreHolds) {
|
|
549
487
|
callCancelCallbacks(interaction);
|
|
550
|
-
// eslint-disable-next-line no-param-reassign
|
|
551
488
|
interaction.abortReason = abortReason;
|
|
552
489
|
if (abortedByInteractionName != null) {
|
|
553
|
-
// eslint-disable-next-line no-param-reassign
|
|
554
490
|
interaction.abortedByInteractionName = abortedByInteractionName;
|
|
555
491
|
}
|
|
556
492
|
}
|
|
557
493
|
finishInteraction(interactionId, interaction);
|
|
494
|
+
if ((_getConfig8 = getConfig()) !== null && _getConfig8 !== void 0 && (_getConfig8 = _getConfig8.experimentalInteractionMetrics) !== null && _getConfig8 !== void 0 && _getConfig8.enabled) {
|
|
495
|
+
experimentalInteractionLog.onInteractionComplete(interactionId, interaction);
|
|
496
|
+
}
|
|
497
|
+
remove(interactionId);
|
|
558
498
|
});
|
|
559
499
|
}
|
|
560
500
|
export function addOnCancelCallback(id, cancelCallback) {
|
|
@@ -562,9 +502,9 @@ export function addOnCancelCallback(id, cancelCallback) {
|
|
|
562
502
|
interaction === null || interaction === void 0 || interaction.cancelCallbacks.push(cancelCallback);
|
|
563
503
|
}
|
|
564
504
|
export function addNewInteraction(interactionId, ufoName, type, startTime, rate, labelStack, routeName) {
|
|
565
|
-
var
|
|
505
|
+
var _getConfig9;
|
|
566
506
|
var trace = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null;
|
|
567
|
-
if ((
|
|
507
|
+
if ((_getConfig9 = getConfig()) !== null && _getConfig9 !== void 0 && (_getConfig9 = _getConfig9.postInteractionLog) !== null && _getConfig9 !== void 0 && _getConfig9.enabled) {
|
|
568
508
|
postInteractionLog.reset();
|
|
569
509
|
}
|
|
570
510
|
var previousTime = startTime;
|
|
@@ -604,9 +544,11 @@ export function addNewInteraction(interactionId, ufoName, type, startTime, rate,
|
|
|
604
544
|
requestInfo: [],
|
|
605
545
|
reactProfilerTimings: [],
|
|
606
546
|
holdInfo: [],
|
|
547
|
+
holdExpInfo: [],
|
|
607
548
|
holdActive: new Map(),
|
|
549
|
+
holdExpActive: new Map(),
|
|
608
550
|
// measure when we execute this code
|
|
609
|
-
// from this we can measure the input delay -
|
|
551
|
+
// from this, we can measure the input delay -
|
|
610
552
|
// how long the browser took to hand execution back to JS)
|
|
611
553
|
measureStart: performance.now(),
|
|
612
554
|
rate: rate,
|
|
@@ -717,17 +659,6 @@ export function addRequestInfo(interactionId, labelStack, requestInfo) {
|
|
|
717
659
|
}, requestInfo));
|
|
718
660
|
}
|
|
719
661
|
}
|
|
720
|
-
function isSegmentLabel(obj) {
|
|
721
|
-
return obj && typeof obj.name === 'string' && typeof obj.segmentId === 'string';
|
|
722
|
-
}
|
|
723
|
-
function getSegmentCacheKey(labelStack) {
|
|
724
|
-
return labelStack.map(function (l) {
|
|
725
|
-
if (isSegmentLabel(l)) {
|
|
726
|
-
return "".concat(l.name, "_").concat(l.segmentId);
|
|
727
|
-
}
|
|
728
|
-
return l.name;
|
|
729
|
-
}).join('|');
|
|
730
|
-
}
|
|
731
662
|
export function addSegment(labelStack) {
|
|
732
663
|
var key = getSegmentCacheKey(labelStack);
|
|
733
664
|
var existingSegment = segmentCache.get(key);
|
|
@@ -144,7 +144,9 @@ var PostInteractionLog = /*#__PURE__*/function () {
|
|
|
144
144
|
abortReason = _ref2.abortReason,
|
|
145
145
|
abortedByInteractionName = _ref2.abortedByInteractionName,
|
|
146
146
|
routeName = _ref2.routeName,
|
|
147
|
-
type = _ref2.type
|
|
147
|
+
type = _ref2.type,
|
|
148
|
+
experimentalTTAI = _ref2.experimentalTTAI,
|
|
149
|
+
experimentalVC90 = _ref2.experimentalVC90;
|
|
148
150
|
this.lastInteractionFinish = {
|
|
149
151
|
ufoName: ufoName,
|
|
150
152
|
start: start,
|
|
@@ -153,7 +155,9 @@ var PostInteractionLog = /*#__PURE__*/function () {
|
|
|
153
155
|
abortReason: abortReason,
|
|
154
156
|
abortedByInteractionName: abortedByInteractionName,
|
|
155
157
|
routeName: routeName,
|
|
156
|
-
type: type
|
|
158
|
+
type: type,
|
|
159
|
+
experimentalTTAI: experimentalTTAI,
|
|
160
|
+
experimentalVC90: experimentalVC90
|
|
157
161
|
};
|
|
158
162
|
var timeout = ((_getConfig = getConfig()) === null || _getConfig === void 0 ? void 0 : _getConfig.timeWindowForLateMutationsInMilliseconds) || POST_INTERACTION_LOG_SEND_DEFAULT_TIMEOUT;
|
|
159
163
|
this.sinkTimeoutId = window.setTimeout(function () {
|
|
@@ -3,7 +3,7 @@ import { unstable_IdlePriority as idlePriority, unstable_scheduleCallback as sch
|
|
|
3
3
|
import { startLighthouseObserver } from '../additional-payload';
|
|
4
4
|
import { setUFOConfig } from '../config';
|
|
5
5
|
import { setupHiddenTimingCapture } from '../hidden-timing';
|
|
6
|
-
import { postInteractionLog, sinkInteractionHandler, sinkPostInteractionLogHandler } from '../interaction-metrics';
|
|
6
|
+
import { experimentalInteractionLog, postInteractionLog, sinkExperimentalHandler, sinkInteractionHandler, sinkPostInteractionLogHandler } from '../interaction-metrics';
|
|
7
7
|
import { getVCObserver } from '../vc';
|
|
8
8
|
var initialized = false;
|
|
9
9
|
function sinkInteraction(instance, payloadPackage) {
|
|
@@ -16,6 +16,14 @@ function sinkInteraction(instance, payloadPackage) {
|
|
|
16
16
|
});
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
|
+
function sinkExperimentalInteractionMetrics(instance, payloadPackage) {
|
|
20
|
+
sinkExperimentalHandler(function (interactionId, interaction) {
|
|
21
|
+
scheduleCallback(idlePriority, function () {
|
|
22
|
+
var payload = payloadPackage.createExperimentalInteractionMetricsPayload(interactionId, interaction);
|
|
23
|
+
instance.sendOperationalEvent(payload);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
}
|
|
19
27
|
function sinkPostInteractionLog(instance, createPostInteractionLogPayload) {
|
|
20
28
|
sinkPostInteractionLogHandler(function (logOutput) {
|
|
21
29
|
scheduleCallback(idlePriority, function () {
|
|
@@ -46,31 +54,37 @@ export var init = function init(analyticsWebClientAsync, config) {
|
|
|
46
54
|
postInteractionLog.startVCObserver({
|
|
47
55
|
startTime: 0
|
|
48
56
|
});
|
|
57
|
+
experimentalInteractionLog.initializeVCObserver(vcOptions).startVCObserver({
|
|
58
|
+
startTime: 0
|
|
59
|
+
});
|
|
49
60
|
}
|
|
50
61
|
setupHiddenTimingCapture();
|
|
51
62
|
startLighthouseObserver();
|
|
52
63
|
initialized = true;
|
|
53
|
-
Promise.all([analyticsWebClientAsync,
|
|
54
|
-
|
|
55
|
-
import( /* webpackChunkName: "create-payloads" */'../create-payload'),
|
|
56
|
-
// eslint-disable-next-line import/dynamic-import-chunkname
|
|
57
|
-
import( /* webpackChunkName: "create-post-intreaction-log-payload" */'../create-post-interaction-log-payload')]).then(function (_ref) {
|
|
58
|
-
var _ref2 = _slicedToArray(_ref, 3),
|
|
64
|
+
Promise.all([analyticsWebClientAsync, import( /* webpackChunkName: "create-payloads" */'../create-payload'), import( /* webpackChunkName: "create-experimental-interaction-metrics-payload" */'../create-experimental-interaction-metrics-payload'), import( /* webpackChunkName: "create-post-interaction-log-payload" */'../create-post-interaction-log-payload')]).then(function (_ref) {
|
|
65
|
+
var _ref2 = _slicedToArray(_ref, 4),
|
|
59
66
|
awc = _ref2[0],
|
|
60
67
|
payloadPackage = _ref2[1],
|
|
61
|
-
|
|
68
|
+
createExperimentalInteractionMetricsPayload = _ref2[2],
|
|
69
|
+
createPostInteractionLogPayloadPackage = _ref2[3];
|
|
62
70
|
if (awc.getAnalyticsWebClientPromise) {
|
|
63
71
|
awc.getAnalyticsWebClientPromise().then(function (client) {
|
|
64
|
-
var _config$postInteracti;
|
|
72
|
+
var _config$experimentalI, _config$postInteracti;
|
|
65
73
|
var instance = client.getInstance();
|
|
66
74
|
sinkInteraction(instance, payloadPackage);
|
|
75
|
+
if (config !== null && config !== void 0 && (_config$experimentalI = config.experimentalInteractionMetrics) !== null && _config$experimentalI !== void 0 && _config$experimentalI.enabled) {
|
|
76
|
+
sinkExperimentalInteractionMetrics(instance, createExperimentalInteractionMetricsPayload);
|
|
77
|
+
}
|
|
67
78
|
if ((_config$postInteracti = config.postInteractionLog) !== null && _config$postInteracti !== void 0 && _config$postInteracti.enabled) {
|
|
68
79
|
sinkPostInteractionLog(instance, createPostInteractionLogPayloadPackage.default);
|
|
69
80
|
}
|
|
70
81
|
});
|
|
71
82
|
} else if (awc.sendOperationalEvent) {
|
|
72
|
-
var _config$postInteracti2;
|
|
83
|
+
var _config$experimentalI2, _config$postInteracti2;
|
|
73
84
|
sinkInteraction(awc, payloadPackage);
|
|
85
|
+
if (config !== null && config !== void 0 && (_config$experimentalI2 = config.experimentalInteractionMetrics) !== null && _config$experimentalI2 !== void 0 && _config$experimentalI2.enabled) {
|
|
86
|
+
sinkExperimentalInteractionMetrics(awc, createExperimentalInteractionMetricsPayload);
|
|
87
|
+
}
|
|
74
88
|
if ((_config$postInteracti2 = config.postInteractionLog) !== null && _config$postInteracti2 !== void 0 && _config$postInteracti2.enabled) {
|
|
75
89
|
sinkPostInteractionLog(awc, createPostInteractionLogPayloadPackage.default);
|
|
76
90
|
}
|
|
@@ -22,8 +22,7 @@ var useLayoutEffectSAFE = typeof window === 'undefined' ? useEffect : useLayoutE
|
|
|
22
22
|
* return (
|
|
23
23
|
* <>
|
|
24
24
|
* <Skeleton />
|
|
25
|
-
* <UFOLoadHold name="card"
|
|
26
|
-
* </UFOLoadHold>
|
|
25
|
+
* <UFOLoadHold name="card" />
|
|
27
26
|
* )
|
|
28
27
|
* }
|
|
29
28
|
* ```
|
|
@@ -58,8 +57,8 @@ export default function UFOLoadHold(_ref) {
|
|
|
58
57
|
// react-18: useId instead
|
|
59
58
|
var context = useContext(UFOInteractionContext);
|
|
60
59
|
useLayoutEffectSAFE(function () {
|
|
61
|
-
if (hold &&
|
|
62
|
-
return context.hold(name);
|
|
60
|
+
if (hold && context != null) {
|
|
61
|
+
return context.hold(name, experimental);
|
|
63
62
|
}
|
|
64
63
|
}, [hold, context, name]);
|
|
65
64
|
|