@atlaskit/react-ufo 2.11.0 → 2.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/create-experimental-interaction-metrics-payload/package.json +15 -0
- package/dist/cjs/config/index.js +42 -20
- package/dist/cjs/create-experimental-interaction-metrics-payload/index.js +114 -0
- package/dist/cjs/create-payload/index.js +51 -10
- package/dist/cjs/interaction-metrics/common/constants.js +2 -3
- package/dist/cjs/interaction-metrics/index.js +130 -55
- package/dist/cjs/interaction-metrics/post-interaction-log.js +20 -10
- package/dist/cjs/interaction-metrics-init/index.js +28 -7
- package/dist/cjs/load-hold/UFOLoadHold.js +5 -3
- package/dist/cjs/segment/segment.js +9 -8
- package/dist/cjs/vc/vc-observer/index.js +1 -1
- package/dist/es2019/config/index.js +22 -0
- package/dist/es2019/create-experimental-interaction-metrics-payload/index.js +85 -0
- package/dist/es2019/create-payload/index.js +50 -8
- package/dist/es2019/interaction-metrics/common/constants.js +1 -2
- package/dist/es2019/interaction-metrics/index.js +109 -28
- package/dist/es2019/interaction-metrics/post-interaction-log.js +21 -11
- package/dist/es2019/interaction-metrics-init/index.js +26 -7
- package/dist/es2019/load-hold/UFOLoadHold.js +5 -3
- package/dist/es2019/segment/segment.js +8 -11
- package/dist/es2019/vc/vc-observer/index.js +1 -0
- package/dist/esm/config/index.js +41 -20
- package/dist/esm/create-experimental-interaction-metrics-payload/index.js +104 -0
- package/dist/esm/create-payload/index.js +51 -11
- package/dist/esm/interaction-metrics/common/constants.js +1 -2
- package/dist/esm/interaction-metrics/index.js +102 -27
- package/dist/esm/interaction-metrics/post-interaction-log.js +20 -10
- package/dist/esm/interaction-metrics-init/index.js +26 -7
- package/dist/esm/load-hold/UFOLoadHold.js +5 -3
- package/dist/esm/segment/segment.js +9 -8
- package/dist/esm/vc/vc-observer/index.js +1 -1
- package/dist/types/common/common/types.d.ts +6 -4
- package/dist/types/config/index.d.ts +6 -0
- package/dist/types/create-experimental-interaction-metrics-payload/index.d.ts +16 -0
- package/dist/types/create-payload/index.d.ts +5922 -0
- package/dist/types/interaction-context/index.d.ts +1 -0
- package/dist/types/interaction-metrics/common/constants.d.ts +1 -2
- package/dist/types/interaction-metrics/index.d.ts +1 -1
- package/dist/types/load-hold/UFOLoadHold.d.ts +1 -2
- package/dist/types-ts4.5/common/common/types.d.ts +6 -4
- package/dist/types-ts4.5/config/index.d.ts +6 -0
- package/dist/types-ts4.5/create-experimental-interaction-metrics-payload/index.d.ts +16 -0
- package/dist/types-ts4.5/create-payload/index.d.ts +5922 -0
- package/dist/types-ts4.5/interaction-context/index.d.ts +1 -0
- package/dist/types-ts4.5/interaction-metrics/common/constants.d.ts +1 -2
- package/dist/types-ts4.5/interaction-metrics/index.d.ts +1 -1
- package/dist/types-ts4.5/load-hold/UFOLoadHold.d.ts +1 -2
- package/package.json +3 -2
|
@@ -47,11 +47,12 @@ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers
|
|
|
47
47
|
var _uuid = require("uuid");
|
|
48
48
|
var _coinflip = _interopRequireDefault(require("../coinflip"));
|
|
49
49
|
var _config = require("../config");
|
|
50
|
+
var _createExperimentalInteractionMetricsPayload = require("../create-experimental-interaction-metrics-payload");
|
|
50
51
|
var _experienceTraceIdContext = require("../experience-trace-id-context");
|
|
51
52
|
var _featureFlagsAccessed = require("../feature-flags-accessed");
|
|
52
53
|
var _interactionIdContext = require("../interaction-id-context");
|
|
53
54
|
var _vc = require("../vc");
|
|
54
|
-
var _constants =
|
|
55
|
+
var _constants = require("./common/constants");
|
|
55
56
|
var _postInteractionLog = _interopRequireDefault(require("./post-interaction-log"));
|
|
56
57
|
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; }
|
|
57
58
|
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; }
|
|
@@ -73,7 +74,7 @@ function getActiveInteraction() {
|
|
|
73
74
|
if (!interactionId.current) {
|
|
74
75
|
return;
|
|
75
76
|
}
|
|
76
|
-
return _constants.
|
|
77
|
+
return _constants.interactions.get(interactionId.current);
|
|
77
78
|
}
|
|
78
79
|
function isPerformanceTracingEnabled() {
|
|
79
80
|
var _getConfig;
|
|
@@ -121,7 +122,7 @@ function removeSegmentObserver(observer) {
|
|
|
121
122
|
}
|
|
122
123
|
}
|
|
123
124
|
function remove(interactionId) {
|
|
124
|
-
_constants.
|
|
125
|
+
_constants.interactions.delete(interactionId);
|
|
125
126
|
}
|
|
126
127
|
function updatePageLoadInteractionName(ufoName) {
|
|
127
128
|
var routeName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ufoName;
|
|
@@ -133,7 +134,7 @@ function updatePageLoadInteractionName(ufoName) {
|
|
|
133
134
|
interaction.routeName = routeName;
|
|
134
135
|
}
|
|
135
136
|
function addMetadata(interactionId, data) {
|
|
136
|
-
var interaction = _constants.
|
|
137
|
+
var interaction = _constants.interactions.get(interactionId);
|
|
137
138
|
if (interaction != null) {
|
|
138
139
|
Object.keys(data).forEach(function (key) {
|
|
139
140
|
interaction.metaData[key] = data[key];
|
|
@@ -141,7 +142,7 @@ function addMetadata(interactionId, data) {
|
|
|
141
142
|
}
|
|
142
143
|
}
|
|
143
144
|
function addCustomData(interactionId, labelStack, data) {
|
|
144
|
-
var interaction = _constants.
|
|
145
|
+
var interaction = _constants.interactions.get(interactionId);
|
|
145
146
|
if (interaction != null) {
|
|
146
147
|
Object.keys(data).forEach(function (i) {
|
|
147
148
|
interaction.customData.push({
|
|
@@ -152,7 +153,7 @@ function addCustomData(interactionId, labelStack, data) {
|
|
|
152
153
|
}
|
|
153
154
|
}
|
|
154
155
|
function addCustomTiming(interactionId, labelStack, data) {
|
|
155
|
-
var interaction = _constants.
|
|
156
|
+
var interaction = _constants.interactions.get(interactionId);
|
|
156
157
|
if (interaction != null) {
|
|
157
158
|
interaction.customTimings.push({
|
|
158
159
|
labelStack: labelStack,
|
|
@@ -180,7 +181,7 @@ function addCustomTiming(interactionId, labelStack, data) {
|
|
|
180
181
|
}
|
|
181
182
|
function addMark(interactionId, type, name, labelStack) {
|
|
182
183
|
var time = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : performance.now();
|
|
183
|
-
var interaction = _constants.
|
|
184
|
+
var interaction = _constants.interactions.get(interactionId);
|
|
184
185
|
if (interaction != null) {
|
|
185
186
|
interaction.marks.push({
|
|
186
187
|
type: type,
|
|
@@ -197,7 +198,7 @@ function addMark(interactionId, type, name, labelStack) {
|
|
|
197
198
|
}
|
|
198
199
|
function addMarkToAll(type, name, labelStack) {
|
|
199
200
|
var time = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : performance.now();
|
|
200
|
-
_constants.
|
|
201
|
+
_constants.interactions.forEach(function (interaction) {
|
|
201
202
|
interaction.marks.push({
|
|
202
203
|
type: type,
|
|
203
204
|
name: name,
|
|
@@ -214,7 +215,7 @@ function addMarkToAll(type, name, labelStack) {
|
|
|
214
215
|
function addSpan(interactionId, type, name, labelStack, start) {
|
|
215
216
|
var end = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : performance.now();
|
|
216
217
|
var size = arguments.length > 6 ? arguments[6] : undefined;
|
|
217
|
-
var interaction = _constants.
|
|
218
|
+
var interaction = _constants.interactions.get(interactionId);
|
|
218
219
|
if (interaction != null) {
|
|
219
220
|
interaction.spans.push({
|
|
220
221
|
type: type,
|
|
@@ -240,7 +241,7 @@ function addSpan(interactionId, type, name, labelStack, start) {
|
|
|
240
241
|
function addSpanToAll(type, name, labelStack, start) {
|
|
241
242
|
var end = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : performance.now();
|
|
242
243
|
var size = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;
|
|
243
|
-
_constants.
|
|
244
|
+
_constants.interactions.forEach(function (interaction) {
|
|
244
245
|
interaction.spans.push({
|
|
245
246
|
type: type,
|
|
246
247
|
name: name,
|
|
@@ -290,16 +291,27 @@ function removeHoldCriterion(id) {
|
|
|
290
291
|
}
|
|
291
292
|
window.__CRITERION__.removeUFOHold(id);
|
|
292
293
|
}
|
|
293
|
-
function addHold(interactionId, labelStack, name) {
|
|
294
|
-
var interaction = _constants.
|
|
294
|
+
function addHold(interactionId, labelStack, name, experimental) {
|
|
295
|
+
var interaction = _constants.interactions.get(interactionId);
|
|
295
296
|
var id = (0, _uuid.v4)();
|
|
296
297
|
if (interaction != null) {
|
|
298
|
+
var _getConfig2;
|
|
297
299
|
var start = performance.now();
|
|
298
|
-
|
|
300
|
+
var holdActive = {
|
|
299
301
|
labelStack: labelStack,
|
|
300
302
|
name: name,
|
|
301
303
|
start: start
|
|
302
|
-
}
|
|
304
|
+
};
|
|
305
|
+
if ((_getConfig2 = (0, _config.getConfig)()) !== null && _getConfig2 !== void 0 && (_getConfig2 = _getConfig2.experimentalInteractionMetrics) !== null && _getConfig2 !== void 0 && _getConfig2.enabled && experimental) {
|
|
306
|
+
interaction.holdExpActive.set(id, _objectSpread(_objectSpread({}, holdActive), {}, {
|
|
307
|
+
start: start
|
|
308
|
+
}));
|
|
309
|
+
}
|
|
310
|
+
if (!experimental) {
|
|
311
|
+
interaction.holdActive.set(id, _objectSpread(_objectSpread({}, holdActive), {}, {
|
|
312
|
+
start: start
|
|
313
|
+
}));
|
|
314
|
+
}
|
|
303
315
|
addHoldCriterion(id, labelStack, name, start);
|
|
304
316
|
return function () {
|
|
305
317
|
var end = performance.now();
|
|
@@ -315,20 +327,29 @@ function addHold(interactionId, labelStack, name) {
|
|
|
315
327
|
}
|
|
316
328
|
}
|
|
317
329
|
removeHoldCriterion(id);
|
|
318
|
-
var currentInteraction = _constants.
|
|
330
|
+
var currentInteraction = _constants.interactions.get(interactionId);
|
|
319
331
|
var currentHold = interaction.holdActive.get(id);
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
332
|
+
var expHold = interaction.holdExpActive.get(id);
|
|
333
|
+
if (currentInteraction != null) {
|
|
334
|
+
if (currentHold != null) {
|
|
335
|
+
currentInteraction.holdInfo.push(_objectSpread(_objectSpread({}, currentHold), {}, {
|
|
336
|
+
end: end
|
|
337
|
+
}));
|
|
338
|
+
interaction.holdActive.delete(id);
|
|
339
|
+
}
|
|
340
|
+
if (expHold != null) {
|
|
341
|
+
currentInteraction.holdExpInfo.push(_objectSpread(_objectSpread({}, expHold), {}, {
|
|
342
|
+
end: end
|
|
343
|
+
}));
|
|
344
|
+
interaction.holdExpActive.delete(id);
|
|
345
|
+
}
|
|
325
346
|
}
|
|
326
347
|
};
|
|
327
348
|
}
|
|
328
349
|
return function () {};
|
|
329
350
|
}
|
|
330
351
|
function addHoldByID(interactionId, labelStack, name, id, ignoreOnSubmit) {
|
|
331
|
-
var interaction = _constants.
|
|
352
|
+
var interaction = _constants.interactions.get(interactionId);
|
|
332
353
|
if (interaction != null) {
|
|
333
354
|
var start = performance.now();
|
|
334
355
|
interaction.holdActive.set(id, {
|
|
@@ -342,10 +363,10 @@ function addHoldByID(interactionId, labelStack, name, id, ignoreOnSubmit) {
|
|
|
342
363
|
return function () {};
|
|
343
364
|
}
|
|
344
365
|
function removeHoldByID(interactionId, id) {
|
|
345
|
-
var interaction = _constants.
|
|
366
|
+
var interaction = _constants.interactions.get(interactionId);
|
|
346
367
|
if (interaction != null) {
|
|
347
368
|
var end = performance.now();
|
|
348
|
-
var currentInteraction = _constants.
|
|
369
|
+
var currentInteraction = _constants.interactions.get(interactionId);
|
|
349
370
|
var currentHold = interaction.holdActive.get(id);
|
|
350
371
|
if (currentInteraction != null && currentHold != null) {
|
|
351
372
|
currentInteraction.holdInfo.push(_objectSpread(_objectSpread({}, currentHold), {}, {
|
|
@@ -357,7 +378,7 @@ function removeHoldByID(interactionId, id) {
|
|
|
357
378
|
}
|
|
358
379
|
}
|
|
359
380
|
function getCurrentInteractionType(interactionId) {
|
|
360
|
-
var interaction = _constants.
|
|
381
|
+
var interaction = _constants.interactions.get(interactionId);
|
|
361
382
|
if (interaction) {
|
|
362
383
|
return interaction.type;
|
|
363
384
|
}
|
|
@@ -399,7 +420,7 @@ var ModuleLoadingProfiler = exports.ModuleLoadingProfiler = {
|
|
|
399
420
|
}
|
|
400
421
|
};
|
|
401
422
|
function addError(interactionId, name, labelStack, errorType, errorMessage, errorStack, forcedError) {
|
|
402
|
-
var interaction = _constants.
|
|
423
|
+
var interaction = _constants.interactions.get(interactionId);
|
|
403
424
|
if (interaction != null) {
|
|
404
425
|
interaction.errors.push({
|
|
405
426
|
name: name,
|
|
@@ -412,7 +433,7 @@ function addError(interactionId, name, labelStack, errorType, errorMessage, erro
|
|
|
412
433
|
}
|
|
413
434
|
}
|
|
414
435
|
function addErrorToAll(name, labelStack, errorType, errorMessage, errorStack) {
|
|
415
|
-
_constants.
|
|
436
|
+
_constants.interactions.forEach(function (interaction) {
|
|
416
437
|
interaction.errors.push({
|
|
417
438
|
name: name,
|
|
418
439
|
labelStack: labelStack,
|
|
@@ -423,7 +444,7 @@ function addErrorToAll(name, labelStack, errorType, errorMessage, errorStack) {
|
|
|
423
444
|
});
|
|
424
445
|
}
|
|
425
446
|
var addProfilerTimings = exports.addProfilerTimings = function addProfilerTimings(interactionId, labelStack, type, actualDuration, baseDuration, startTime, commitTime) {
|
|
426
|
-
var
|
|
447
|
+
var _getConfig3;
|
|
427
448
|
if (isPerformanceTracingEnabled()) {
|
|
428
449
|
try {
|
|
429
450
|
// for Firefox 102 and older
|
|
@@ -435,7 +456,7 @@ var addProfilerTimings = exports.addProfilerTimings = function addProfilerTiming
|
|
|
435
456
|
// do nothing
|
|
436
457
|
}
|
|
437
458
|
}
|
|
438
|
-
var interaction = _constants.
|
|
459
|
+
var interaction = _constants.interactions.get(interactionId);
|
|
439
460
|
if (interaction != null) {
|
|
440
461
|
interaction.reactProfilerTimings.push({
|
|
441
462
|
labelStack: labelStack,
|
|
@@ -445,7 +466,7 @@ var addProfilerTimings = exports.addProfilerTimings = function addProfilerTiming
|
|
|
445
466
|
startTime: startTime,
|
|
446
467
|
commitTime: commitTime
|
|
447
468
|
});
|
|
448
|
-
} else if ((
|
|
469
|
+
} else if ((_getConfig3 = (0, _config.getConfig)()) !== null && _getConfig3 !== void 0 && (_getConfig3 = _getConfig3.postInteractionLog) !== null && _getConfig3 !== void 0 && _getConfig3.enabled) {
|
|
449
470
|
postInteractionLog.addProfilerTimings(labelStack, type, actualDuration, baseDuration, startTime, commitTime);
|
|
450
471
|
}
|
|
451
472
|
};
|
|
@@ -462,9 +483,8 @@ function callCleanUpCallbacks(interaction) {
|
|
|
462
483
|
});
|
|
463
484
|
}
|
|
464
485
|
var finishInteraction = function finishInteraction(id, data) {
|
|
465
|
-
var
|
|
486
|
+
var _getConfig4, _getConfig5;
|
|
466
487
|
var endTime = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : performance.now();
|
|
467
|
-
// eslint-disable-next-line no-param-reassign
|
|
468
488
|
data.end = endTime;
|
|
469
489
|
try {
|
|
470
490
|
// for Firefox 102 and older
|
|
@@ -476,15 +496,16 @@ var finishInteraction = function finishInteraction(id, data) {
|
|
|
476
496
|
// do nothing
|
|
477
497
|
}
|
|
478
498
|
if (data.featureFlags) {
|
|
479
|
-
// eslint-disable-next-line no-param-reassign
|
|
480
499
|
data.featureFlags.during = Object.fromEntries(_featureFlagsAccessed.currentFeatureFlagsAccessed);
|
|
481
500
|
}
|
|
482
501
|
(0, _experienceTraceIdContext.clearActiveTrace)();
|
|
483
502
|
callCleanUpCallbacks(data);
|
|
484
|
-
if ((
|
|
503
|
+
if ((_getConfig4 = (0, _config.getConfig)()) !== null && _getConfig4 !== void 0 && (_getConfig4 = _getConfig4.vc) !== null && _getConfig4 !== void 0 && _getConfig4.stopVCAtInteractionFinish) {
|
|
485
504
|
data.vc = (0, _vc.getVCObserver)().getVCRawData();
|
|
486
505
|
}
|
|
487
|
-
|
|
506
|
+
if (!((_getConfig5 = (0, _config.getConfig)()) !== null && _getConfig5 !== void 0 && (_getConfig5 = _getConfig5.experimentalInteractionMetrics) !== null && _getConfig5 !== void 0 && _getConfig5.enabled)) {
|
|
507
|
+
remove(id);
|
|
508
|
+
}
|
|
488
509
|
PreviousInteractionLog.name = data.ufoName || 'unknown';
|
|
489
510
|
PreviousInteractionLog.isAborted = data.abortReason != null;
|
|
490
511
|
if (data.ufoName) {
|
|
@@ -550,15 +571,48 @@ var sinkInteractionHandler = exports.sinkInteractionHandler = function sinkInter
|
|
|
550
571
|
var sinkPostInteractionLogHandler = exports.sinkPostInteractionLogHandler = function sinkPostInteractionLogHandler(sinkFn) {
|
|
551
572
|
postInteractionLog.sinkHandler(sinkFn);
|
|
552
573
|
};
|
|
574
|
+
|
|
575
|
+
// a flag to prevent multiple submitting
|
|
576
|
+
var activeSubmitted = false;
|
|
553
577
|
function tryComplete(interactionId, endTime) {
|
|
554
|
-
var interaction = _constants.
|
|
578
|
+
var interaction = _constants.interactions.get(interactionId);
|
|
555
579
|
if (interaction != null) {
|
|
556
|
-
var
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
if ((
|
|
561
|
-
|
|
580
|
+
var noMoreActiveHolds = interaction.holdActive.size === 0;
|
|
581
|
+
var noMoreExpHolds = interaction.holdExpActive.size === 0;
|
|
582
|
+
var postInteraction = function postInteraction() {
|
|
583
|
+
var _getConfig6, _getConfig8;
|
|
584
|
+
if ((_getConfig6 = (0, _config.getConfig)()) !== null && _getConfig6 !== void 0 && (_getConfig6 = _getConfig6.postInteractionLog) !== null && _getConfig6 !== void 0 && _getConfig6.enabled) {
|
|
585
|
+
var _getConfig7;
|
|
586
|
+
var experimentalVC90;
|
|
587
|
+
var experimentalTTAI;
|
|
588
|
+
if ((_getConfig7 = (0, _config.getConfig)()) !== null && _getConfig7 !== void 0 && (_getConfig7 = _getConfig7.experimentalInteractionMetrics) !== null && _getConfig7 !== void 0 && _getConfig7.enabled) {
|
|
589
|
+
var _getExperimentalVCMet;
|
|
590
|
+
experimentalVC90 = (_getExperimentalVCMet = (0, _createExperimentalInteractionMetricsPayload.getExperimentalVCMetrics)(interaction)) === null || _getExperimentalVCMet === void 0 ? void 0 : _getExperimentalVCMet['metric:experimental:vc90'];
|
|
591
|
+
var start = interaction.start,
|
|
592
|
+
end = interaction.end;
|
|
593
|
+
experimentalTTAI = !interaction.abortReason ? Math.round(end - start) : undefined;
|
|
594
|
+
}
|
|
595
|
+
postInteractionLog.onInteractionComplete(_objectSpread(_objectSpread({}, interaction), {}, {
|
|
596
|
+
experimentalTTAI: experimentalTTAI,
|
|
597
|
+
experimentalVC90: experimentalVC90
|
|
598
|
+
}));
|
|
599
|
+
}
|
|
600
|
+
if ((_getConfig8 = (0, _config.getConfig)()) !== null && _getConfig8 !== void 0 && (_getConfig8 = _getConfig8.experimentalInteractionMetrics) !== null && _getConfig8 !== void 0 && _getConfig8.enabled) {
|
|
601
|
+
remove(interactionId);
|
|
602
|
+
}
|
|
603
|
+
activeSubmitted = false;
|
|
604
|
+
};
|
|
605
|
+
if (noMoreActiveHolds) {
|
|
606
|
+
if (!activeSubmitted) {
|
|
607
|
+
finishInteraction(interactionId, interaction, endTime);
|
|
608
|
+
activeSubmitted = true;
|
|
609
|
+
}
|
|
610
|
+
if (noMoreExpHolds) {
|
|
611
|
+
var _getConfig9;
|
|
612
|
+
if ((_getConfig9 = (0, _config.getConfig)()) !== null && _getConfig9 !== void 0 && (_getConfig9 = _getConfig9.experimentalInteractionMetrics) !== null && _getConfig9 !== void 0 && _getConfig9.enabled) {
|
|
613
|
+
(0, _createExperimentalInteractionMetricsPayload.onExperimentalInteractionComplete)(interactionId, interaction, endTime);
|
|
614
|
+
}
|
|
615
|
+
postInteraction();
|
|
562
616
|
}
|
|
563
617
|
}
|
|
564
618
|
}
|
|
@@ -569,45 +623,58 @@ function callCancelCallbacks(interaction) {
|
|
|
569
623
|
});
|
|
570
624
|
}
|
|
571
625
|
function abort(interactionId, abortReason) {
|
|
572
|
-
var interaction = _constants.
|
|
626
|
+
var interaction = _constants.interactions.get(interactionId);
|
|
573
627
|
if (interaction != null) {
|
|
628
|
+
var _getConfig10;
|
|
574
629
|
callCancelCallbacks(interaction);
|
|
575
630
|
interaction.abortReason = abortReason;
|
|
576
631
|
finishInteraction(interactionId, interaction);
|
|
632
|
+
if ((_getConfig10 = (0, _config.getConfig)()) !== null && _getConfig10 !== void 0 && (_getConfig10 = _getConfig10.experimentalInteractionMetrics) !== null && _getConfig10 !== void 0 && _getConfig10.enabled) {
|
|
633
|
+
(0, _createExperimentalInteractionMetricsPayload.onExperimentalInteractionComplete)(interactionId, interaction);
|
|
634
|
+
remove(interactionId);
|
|
635
|
+
}
|
|
577
636
|
}
|
|
578
637
|
}
|
|
579
638
|
function abortByNewInteraction(interactionId, interactionName) {
|
|
580
|
-
var interaction = _constants.
|
|
639
|
+
var interaction = _constants.interactions.get(interactionId);
|
|
581
640
|
if (interaction != null) {
|
|
641
|
+
var _getConfig11;
|
|
582
642
|
callCancelCallbacks(interaction);
|
|
583
643
|
interaction.abortReason = 'new_interaction';
|
|
584
644
|
interaction.abortedByInteractionName = interactionName;
|
|
585
645
|
finishInteraction(interactionId, interaction);
|
|
646
|
+
if ((_getConfig11 = (0, _config.getConfig)()) !== null && _getConfig11 !== void 0 && (_getConfig11 = _getConfig11.experimentalInteractionMetrics) !== null && _getConfig11 !== void 0 && _getConfig11.enabled) {
|
|
647
|
+
(0, _createExperimentalInteractionMetricsPayload.onExperimentalInteractionComplete)(interactionId, interaction);
|
|
648
|
+
remove(interactionId);
|
|
649
|
+
}
|
|
586
650
|
}
|
|
587
651
|
}
|
|
588
652
|
function abortAll(abortReason, abortedByInteractionName) {
|
|
589
|
-
_constants.
|
|
653
|
+
_constants.interactions.forEach(function (interaction, interactionId) {
|
|
654
|
+
var _getConfig12;
|
|
590
655
|
var noMoreHolds = interaction.holdActive.size === 0;
|
|
591
656
|
if (!noMoreHolds) {
|
|
592
657
|
callCancelCallbacks(interaction);
|
|
593
|
-
// eslint-disable-next-line no-param-reassign
|
|
594
658
|
interaction.abortReason = abortReason;
|
|
595
659
|
if (abortedByInteractionName != null) {
|
|
596
|
-
// eslint-disable-next-line no-param-reassign
|
|
597
660
|
interaction.abortedByInteractionName = abortedByInteractionName;
|
|
598
661
|
}
|
|
599
662
|
}
|
|
600
663
|
finishInteraction(interactionId, interaction);
|
|
664
|
+
if ((_getConfig12 = (0, _config.getConfig)()) !== null && _getConfig12 !== void 0 && (_getConfig12 = _getConfig12.experimentalInteractionMetrics) !== null && _getConfig12 !== void 0 && _getConfig12.enabled) {
|
|
665
|
+
(0, _createExperimentalInteractionMetricsPayload.onExperimentalInteractionComplete)(interactionId, interaction);
|
|
666
|
+
remove(interactionId);
|
|
667
|
+
}
|
|
601
668
|
});
|
|
602
669
|
}
|
|
603
670
|
function addOnCancelCallback(id, cancelCallback) {
|
|
604
|
-
var interaction = _constants.
|
|
671
|
+
var interaction = _constants.interactions.get(id);
|
|
605
672
|
interaction === null || interaction === void 0 || interaction.cancelCallbacks.push(cancelCallback);
|
|
606
673
|
}
|
|
607
674
|
function addNewInteraction(interactionId, ufoName, type, startTime, rate, labelStack, routeName) {
|
|
608
|
-
var
|
|
675
|
+
var _getConfig13;
|
|
609
676
|
var trace = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : null;
|
|
610
|
-
if ((
|
|
677
|
+
if ((_getConfig13 = (0, _config.getConfig)()) !== null && _getConfig13 !== void 0 && (_getConfig13 = _getConfig13.postInteractionLog) !== null && _getConfig13 !== void 0 && _getConfig13.enabled) {
|
|
611
678
|
postInteractionLog.reset();
|
|
612
679
|
}
|
|
613
680
|
var previousTime = startTime;
|
|
@@ -647,9 +714,11 @@ function addNewInteraction(interactionId, ufoName, type, startTime, rate, labelS
|
|
|
647
714
|
requestInfo: [],
|
|
648
715
|
reactProfilerTimings: [],
|
|
649
716
|
holdInfo: [],
|
|
717
|
+
holdExpInfo: [],
|
|
650
718
|
holdActive: new Map(),
|
|
719
|
+
holdExpActive: new Map(),
|
|
651
720
|
// measure when we execute this code
|
|
652
|
-
// from this we can measure the input delay -
|
|
721
|
+
// from this, we can measure the input delay -
|
|
653
722
|
// how long the browser took to hand execution back to JS)
|
|
654
723
|
measureStart: performance.now(),
|
|
655
724
|
rate: rate,
|
|
@@ -674,7 +743,7 @@ function addNewInteraction(interactionId, ufoName, type, startTime, rate, labelS
|
|
|
674
743
|
if (addFeatureFlagsToInteraction) {
|
|
675
744
|
_featureFlagsAccessed.currentFeatureFlagsAccessed.clear();
|
|
676
745
|
}
|
|
677
|
-
_constants.
|
|
746
|
+
_constants.interactions.set(interactionId, metrics);
|
|
678
747
|
var segmentObserver = {
|
|
679
748
|
onAdd: function onAdd(segment) {
|
|
680
749
|
metrics.knownSegments.push(segment);
|
|
@@ -693,12 +762,18 @@ function addNewInteraction(interactionId, ufoName, type, startTime, rate, labelS
|
|
|
693
762
|
addHoldByID(interactionId, [], ufoName, ufoName, true);
|
|
694
763
|
}
|
|
695
764
|
if (type === 'transition') {
|
|
765
|
+
var _getConfig14;
|
|
696
766
|
(0, _vc.getVCObserver)().start({
|
|
697
767
|
startTime: startTime
|
|
698
768
|
});
|
|
699
769
|
postInteractionLog.startVCObserver({
|
|
700
770
|
startTime: startTime
|
|
701
771
|
});
|
|
772
|
+
if ((_getConfig14 = (0, _config.getConfig)()) !== null && _getConfig14 !== void 0 && (_getConfig14 = _getConfig14.experimentalInteractionMetrics) !== null && _getConfig14 !== void 0 && _getConfig14.enabled) {
|
|
773
|
+
_createExperimentalInteractionMetricsPayload.experimentalVC.start({
|
|
774
|
+
startTime: startTime
|
|
775
|
+
});
|
|
776
|
+
}
|
|
702
777
|
}
|
|
703
778
|
}
|
|
704
779
|
function addBrowserMetricEvent(event) {
|
|
@@ -714,7 +789,7 @@ function addBrowserMetricEvent(event) {
|
|
|
714
789
|
}
|
|
715
790
|
}
|
|
716
791
|
function addApdexToAll(apdex) {
|
|
717
|
-
_constants.
|
|
792
|
+
_constants.interactions.forEach(function (interaction, key) {
|
|
718
793
|
interaction.apdex.push(apdex);
|
|
719
794
|
try {
|
|
720
795
|
var _apdex$startTime;
|
|
@@ -733,7 +808,7 @@ function addApdexToAll(apdex) {
|
|
|
733
808
|
});
|
|
734
809
|
}
|
|
735
810
|
function addApdex(interactionId, apdexInfo) {
|
|
736
|
-
var interaction = _constants.
|
|
811
|
+
var interaction = _constants.interactions.get(interactionId);
|
|
737
812
|
if (interaction != null) {
|
|
738
813
|
interaction.apdex.push(apdexInfo);
|
|
739
814
|
try {
|
|
@@ -753,7 +828,7 @@ function addApdex(interactionId, apdexInfo) {
|
|
|
753
828
|
}
|
|
754
829
|
}
|
|
755
830
|
function addRequestInfo(interactionId, labelStack, requestInfo) {
|
|
756
|
-
var interaction = _constants.
|
|
831
|
+
var interaction = _constants.interactions.get(interactionId);
|
|
757
832
|
if (interaction != null) {
|
|
758
833
|
interaction.requestInfo.push(_objectSpread({
|
|
759
834
|
labelStack: labelStack
|
|
@@ -795,7 +870,7 @@ function removeSegment(labelStack) {
|
|
|
795
870
|
}
|
|
796
871
|
}
|
|
797
872
|
function addRedirect(interactionId, fromUfoName, nextUfoName, nextRouteName, time) {
|
|
798
|
-
var interaction = _constants.
|
|
873
|
+
var interaction = _constants.interactions.get(interactionId);
|
|
799
874
|
if (interaction != null) {
|
|
800
875
|
interaction.ufoName = nextUfoName;
|
|
801
876
|
interaction.routeName = nextRouteName;
|
|
@@ -113,22 +113,32 @@ var PostInteractionLog = exports.default = /*#__PURE__*/function () {
|
|
|
113
113
|
}, {
|
|
114
114
|
key: "sendPostInteractionLog",
|
|
115
115
|
value: function sendPostInteractionLog() {
|
|
116
|
-
var _this$
|
|
116
|
+
var _this$vcObserver3, _getConfig2;
|
|
117
117
|
if (!this.hasData() || !this.lastInteractionFinish || !this.sinkHandlerFn) {
|
|
118
|
+
var _getConfig;
|
|
118
119
|
this.reset();
|
|
120
|
+
if ((_getConfig = (0, _config.getConfig)()) !== null && _getConfig !== void 0 && (_getConfig = _getConfig.experimentalInteractionMetrics) !== null && _getConfig !== void 0 && _getConfig.enabled) {
|
|
121
|
+
var _this$vcObserver2;
|
|
122
|
+
(_this$vcObserver2 = this.vcObserver) === null || _this$vcObserver2 === void 0 || _this$vcObserver2.stop();
|
|
123
|
+
}
|
|
119
124
|
return;
|
|
120
125
|
}
|
|
126
|
+
var postInteractionFinishVCResult = (_this$vcObserver3 = this.vcObserver) === null || _this$vcObserver3 === void 0 ? void 0 : _this$vcObserver3.getVCResult(_objectSpread({
|
|
127
|
+
start: this.lastInteractionFinish.start,
|
|
128
|
+
stop: performance.now(),
|
|
129
|
+
tti: -1,
|
|
130
|
+
// no need for TTI value here
|
|
131
|
+
prefix: 'ufo'
|
|
132
|
+
}, this.vcObserverSSRConfig));
|
|
133
|
+
if ((_getConfig2 = (0, _config.getConfig)()) !== null && _getConfig2 !== void 0 && (_getConfig2 = _getConfig2.experimentalInteractionMetrics) !== null && _getConfig2 !== void 0 && _getConfig2.enabled) {
|
|
134
|
+
var _this$vcObserver4;
|
|
135
|
+
(_this$vcObserver4 = this.vcObserver) === null || _this$vcObserver4 === void 0 || _this$vcObserver4.stop();
|
|
136
|
+
}
|
|
121
137
|
this.sinkHandlerFn({
|
|
122
138
|
lastInteractionFinish: this.lastInteractionFinish,
|
|
123
139
|
reactProfilerTimings: this.reactProfilerTimings,
|
|
124
140
|
// NOTE: invoking `getVCResult` at latest possible point in time here (not earlier) to get the most accurate result (from performance.now())
|
|
125
|
-
postInteractionFinishVCResult:
|
|
126
|
-
start: this.lastInteractionFinish.start,
|
|
127
|
-
stop: performance.now(),
|
|
128
|
-
tti: -1,
|
|
129
|
-
// no need for TTI value here
|
|
130
|
-
prefix: 'ufo'
|
|
131
|
-
}, this.vcObserverSSRConfig)),
|
|
141
|
+
postInteractionFinishVCResult: postInteractionFinishVCResult,
|
|
132
142
|
lastInteractionFinishVCResult: this.lastInteractionFinishVCResult
|
|
133
143
|
});
|
|
134
144
|
this.reset();
|
|
@@ -142,7 +152,7 @@ var PostInteractionLog = exports.default = /*#__PURE__*/function () {
|
|
|
142
152
|
}, {
|
|
143
153
|
key: "onInteractionComplete",
|
|
144
154
|
value: function onInteractionComplete(_ref2) {
|
|
145
|
-
var
|
|
155
|
+
var _getConfig3,
|
|
146
156
|
_this = this;
|
|
147
157
|
var ufoName = _ref2.ufoName,
|
|
148
158
|
start = _ref2.start,
|
|
@@ -166,7 +176,7 @@ var PostInteractionLog = exports.default = /*#__PURE__*/function () {
|
|
|
166
176
|
experimentalTTAI: experimentalTTAI,
|
|
167
177
|
experimentalVC90: experimentalVC90
|
|
168
178
|
};
|
|
169
|
-
var timeout = ((
|
|
179
|
+
var timeout = ((_getConfig3 = (0, _config.getConfig)()) === null || _getConfig3 === void 0 ? void 0 : _getConfig3.timeWindowForLateMutationsInMilliseconds) || POST_INTERACTION_LOG_SEND_DEFAULT_TIMEOUT;
|
|
170
180
|
this.sinkTimeoutId = window.setTimeout(function () {
|
|
171
181
|
_this.sendPostInteractionLog();
|
|
172
182
|
}, timeout);
|
|
@@ -10,6 +10,7 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
|
|
|
10
10
|
var _scheduler = require("scheduler");
|
|
11
11
|
var _additionalPayload = require("../additional-payload");
|
|
12
12
|
var _config = require("../config");
|
|
13
|
+
var _createExperimentalInteractionMetricsPayload = require("../create-experimental-interaction-metrics-payload");
|
|
13
14
|
var _hiddenTiming = require("../hidden-timing");
|
|
14
15
|
var _interactionMetrics = require("../interaction-metrics");
|
|
15
16
|
var _vc = require("../vc");
|
|
@@ -26,6 +27,16 @@ function sinkInteraction(instance, payloadPackage) {
|
|
|
26
27
|
});
|
|
27
28
|
});
|
|
28
29
|
}
|
|
30
|
+
function sinkExperimentalInteractionMetrics(instance, payloadPackage) {
|
|
31
|
+
(0, _createExperimentalInteractionMetricsPayload.sinkExperimentalHandler)(function (interactionId, interaction) {
|
|
32
|
+
(0, _scheduler.unstable_scheduleCallback)(_scheduler.unstable_IdlePriority, function () {
|
|
33
|
+
var payload = payloadPackage.createExperimentalMetricsPayload(interactionId, interaction);
|
|
34
|
+
if (payload) {
|
|
35
|
+
instance.sendOperationalEvent(payload);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
}
|
|
29
40
|
function sinkPostInteractionLog(instance, createPostInteractionLogPayload) {
|
|
30
41
|
(0, _interactionMetrics.sinkPostInteractionLogHandler)(function (logOutput) {
|
|
31
42
|
(0, _scheduler.unstable_scheduleCallback)(_scheduler.unstable_IdlePriority, function () {
|
|
@@ -43,6 +54,7 @@ var init = exports.init = function init(analyticsWebClientAsync, config) {
|
|
|
43
54
|
}
|
|
44
55
|
(0, _config.setUFOConfig)(config);
|
|
45
56
|
if ((_config$vc = config.vc) !== null && _config$vc !== void 0 && _config$vc.enabled) {
|
|
57
|
+
var _config$experimentalI;
|
|
46
58
|
var vcOptions = {
|
|
47
59
|
heatmapSize: config.vc.heatmapSize,
|
|
48
60
|
oldDomUpdates: config.vc.oldDomUpdates,
|
|
@@ -56,16 +68,19 @@ var init = exports.init = function init(analyticsWebClientAsync, config) {
|
|
|
56
68
|
_interactionMetrics.postInteractionLog.startVCObserver({
|
|
57
69
|
startTime: 0
|
|
58
70
|
});
|
|
71
|
+
if (config !== null && config !== void 0 && (_config$experimentalI = config.experimentalInteractionMetrics) !== null && _config$experimentalI !== void 0 && _config$experimentalI.enabled) {
|
|
72
|
+
_createExperimentalInteractionMetricsPayload.experimentalVC.initialize(vcOptions).start({
|
|
73
|
+
startTime: 0
|
|
74
|
+
});
|
|
75
|
+
}
|
|
59
76
|
}
|
|
60
77
|
(0, _hiddenTiming.setupHiddenTimingCapture)();
|
|
61
78
|
(0, _additionalPayload.startLighthouseObserver)();
|
|
62
79
|
initialized = true;
|
|
63
|
-
Promise.all([analyticsWebClientAsync,
|
|
64
|
-
Promise.resolve().then(function () {
|
|
80
|
+
Promise.all([analyticsWebClientAsync, Promise.resolve().then(function () {
|
|
65
81
|
return _interopRequireWildcard(require( /* webpackChunkName: "create-payloads" */'../create-payload'));
|
|
66
|
-
}),
|
|
67
|
-
|
|
68
|
-
return _interopRequireWildcard(require( /* webpackChunkName: "create-post-intreaction-log-payload" */'../create-post-interaction-log-payload'));
|
|
82
|
+
}), Promise.resolve().then(function () {
|
|
83
|
+
return _interopRequireWildcard(require( /* webpackChunkName: "create-post-interaction-log-payload" */'../create-post-interaction-log-payload'));
|
|
69
84
|
})]).then(function (_ref) {
|
|
70
85
|
var _ref2 = (0, _slicedToArray2.default)(_ref, 3),
|
|
71
86
|
awc = _ref2[0],
|
|
@@ -73,16 +88,22 @@ var init = exports.init = function init(analyticsWebClientAsync, config) {
|
|
|
73
88
|
createPostInteractionLogPayloadPackage = _ref2[2];
|
|
74
89
|
if (awc.getAnalyticsWebClientPromise) {
|
|
75
90
|
awc.getAnalyticsWebClientPromise().then(function (client) {
|
|
76
|
-
var _config$postInteracti;
|
|
91
|
+
var _config$experimentalI2, _config$postInteracti;
|
|
77
92
|
var instance = client.getInstance();
|
|
78
93
|
sinkInteraction(instance, payloadPackage);
|
|
94
|
+
if (config !== null && config !== void 0 && (_config$experimentalI2 = config.experimentalInteractionMetrics) !== null && _config$experimentalI2 !== void 0 && _config$experimentalI2.enabled) {
|
|
95
|
+
sinkExperimentalInteractionMetrics(instance, payloadPackage);
|
|
96
|
+
}
|
|
79
97
|
if ((_config$postInteracti = config.postInteractionLog) !== null && _config$postInteracti !== void 0 && _config$postInteracti.enabled) {
|
|
80
98
|
sinkPostInteractionLog(instance, createPostInteractionLogPayloadPackage.default);
|
|
81
99
|
}
|
|
82
100
|
});
|
|
83
101
|
} else if (awc.sendOperationalEvent) {
|
|
84
|
-
var _config$postInteracti2;
|
|
102
|
+
var _config$experimentalI3, _config$postInteracti2;
|
|
85
103
|
sinkInteraction(awc, payloadPackage);
|
|
104
|
+
if (config !== null && config !== void 0 && (_config$experimentalI3 = config.experimentalInteractionMetrics) !== null && _config$experimentalI3 !== void 0 && _config$experimentalI3.enabled) {
|
|
105
|
+
sinkExperimentalInteractionMetrics(awc, payloadPackage);
|
|
106
|
+
}
|
|
86
107
|
if ((_config$postInteracti2 = config.postInteractionLog) !== null && _config$postInteracti2 !== void 0 && _config$postInteracti2.enabled) {
|
|
87
108
|
sinkPostInteractionLog(awc, createPostInteractionLogPayloadPackage.default);
|
|
88
109
|
}
|
|
@@ -32,8 +32,7 @@ var useLayoutEffectSAFE = typeof window === 'undefined' ? _react.useEffect : _re
|
|
|
32
32
|
* return (
|
|
33
33
|
* <>
|
|
34
34
|
* <Skeleton />
|
|
35
|
-
* <UFOLoadHold name="card"
|
|
36
|
-
* </UFOLoadHold>
|
|
35
|
+
* <UFOLoadHold name="card" />
|
|
37
36
|
* )
|
|
38
37
|
* }
|
|
39
38
|
* ```
|
|
@@ -68,7 +67,10 @@ function UFOLoadHold(_ref) {
|
|
|
68
67
|
// react-18: useId instead
|
|
69
68
|
var context = (0, _react.useContext)(_interactionContext.default);
|
|
70
69
|
useLayoutEffectSAFE(function () {
|
|
71
|
-
if (hold &&
|
|
70
|
+
if (hold && context != null) {
|
|
71
|
+
if (experimental && context.holdExperimental) {
|
|
72
|
+
return context.holdExperimental(name);
|
|
73
|
+
}
|
|
72
74
|
return context.hold(name);
|
|
73
75
|
}
|
|
74
76
|
}, [hold, context, name]);
|
|
@@ -91,15 +91,14 @@ function UFOSegment(_ref) {
|
|
|
91
91
|
}
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
|
-
function _internalHold(labelStack, name
|
|
95
|
-
|
|
96
|
-
) {
|
|
94
|
+
function _internalHold(labelStack, name) {
|
|
95
|
+
var experimental = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
97
96
|
if (interactionId.current != null) {
|
|
98
97
|
if (parentContext) {
|
|
99
|
-
return parentContext._internalHold(labelStack, name);
|
|
98
|
+
return parentContext._internalHold(labelStack, name, experimental);
|
|
100
99
|
} else {
|
|
101
100
|
var capturedInteractionId = interactionId.current;
|
|
102
|
-
var disposeHold = (0, _interactionMetrics.addHold)(interactionId.current, labelStack, name);
|
|
101
|
+
var disposeHold = (0, _interactionMetrics.addHold)(interactionId.current, labelStack, name, experimental);
|
|
103
102
|
return function () {
|
|
104
103
|
if (capturedInteractionId === interactionId.current) {
|
|
105
104
|
disposeHold();
|
|
@@ -108,9 +107,7 @@ function UFOSegment(_ref) {
|
|
|
108
107
|
}
|
|
109
108
|
}
|
|
110
109
|
}
|
|
111
|
-
function _internalHoldByID(labelStack, id, name, remove
|
|
112
|
-
// eslint-disable-next-line @typescript-eslint/no-invalid-void-type
|
|
113
|
-
) {
|
|
110
|
+
function _internalHoldByID(labelStack, id, name, remove) {
|
|
114
111
|
if (interactionId.current != null) {
|
|
115
112
|
if (parentContext) {
|
|
116
113
|
parentContext._internalHoldByID(labelStack, name, id, remove);
|
|
@@ -135,6 +132,10 @@ function UFOSegment(_ref) {
|
|
|
135
132
|
var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'unknown';
|
|
136
133
|
return this._internalHold(this.labelStack, name);
|
|
137
134
|
},
|
|
135
|
+
holdExperimental: function holdExperimental() {
|
|
136
|
+
var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'unknown';
|
|
137
|
+
return this._internalHold(this.labelStack, name, true);
|
|
138
|
+
},
|
|
138
139
|
addHoldByID: function addHoldByID(labelStack, id) {
|
|
139
140
|
var name = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'unknown';
|
|
140
141
|
this._internalHoldByID(labelStack, id, name, false);
|