@atlaskit/react-ufo 2.4.5 → 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 +25 -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 +49 -85
- 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/cjs/vc/vc-observer/observers/index.js +1 -40
- 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 +40 -81
- 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/es2019/vc/vc-observer/observers/index.js +1 -20
- 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 +45 -83
- 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/esm/vc/vc-observer/observers/index.js +1 -40
- 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 -5716
- 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/vc/vc-observer/observers/index.d.ts +0 -1
- 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 -5716
- 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/dist/types-ts4.5/vc/vc-observer/observers/index.d.ts +0 -1
- package/package.json +2 -1
|
@@ -5,7 +5,9 @@ var _typeof = require("@babel/runtime/helpers/typeof");
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
+
exports.createInteractionMetricsPayload = createInteractionMetricsPayload;
|
|
8
9
|
exports.createPayloads = createPayloads;
|
|
10
|
+
exports.getUfoNameOverride = getUfoNameOverride;
|
|
9
11
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
10
12
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
13
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
@@ -24,7 +26,6 @@ var _interactionMetrics = require("../interaction-metrics");
|
|
|
24
26
|
var resourceTiming = _interopRequireWildcard(require("../resource-timing"));
|
|
25
27
|
var _roundNumber = require("../round-number");
|
|
26
28
|
var ssr = _interopRequireWildcard(require("../ssr"));
|
|
27
|
-
var _vc = require("../vc");
|
|
28
29
|
var _utils = require("./common/utils");
|
|
29
30
|
var _excluded = ["labelStack", "time"],
|
|
30
31
|
_excluded2 = ["stopTime", "labelStack"],
|
|
@@ -46,7 +47,6 @@ function getUfoNameOverride(interaction) {
|
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
49
|
return ufoName;
|
|
49
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
50
50
|
} catch (e) {
|
|
51
51
|
return ufoName;
|
|
52
52
|
}
|
|
@@ -81,11 +81,6 @@ var getPageVisibilityUpToTTI = function getPageVisibilityUpToTTI(interaction) {
|
|
|
81
81
|
var bm3EndTimeOrInteractionEndTime = getBm3EndTimeOrFallbackValue(interaction);
|
|
82
82
|
return (0, _hiddenTiming.getPageVisibilityState)(start, bm3EndTimeOrInteractionEndTime);
|
|
83
83
|
};
|
|
84
|
-
var getPageVisibilityUpToTTAI = function getPageVisibilityUpToTTAI(interaction) {
|
|
85
|
-
var start = interaction.start,
|
|
86
|
-
end = interaction.end;
|
|
87
|
-
return (0, _hiddenTiming.getPageVisibilityState)(start, end);
|
|
88
|
-
};
|
|
89
84
|
var getVisibilityStateFromPerformance = function getVisibilityStateFromPerformance(stop) {
|
|
90
85
|
try {
|
|
91
86
|
var results = performance.getEntriesByType('visibility-state');
|
|
@@ -131,7 +126,7 @@ var getMoreAccuratePageVisibilityUpToTTI = function getMoreAccuratePageVisibilit
|
|
|
131
126
|
return old;
|
|
132
127
|
};
|
|
133
128
|
var getMoreAccuratePageVisibilityUpToTTAI = function getMoreAccuratePageVisibilityUpToTTAI(interaction) {
|
|
134
|
-
var old = getPageVisibilityUpToTTAI(interaction);
|
|
129
|
+
var old = (0, _utils.getPageVisibilityUpToTTAI)(interaction);
|
|
135
130
|
var buffered = getVisibilityStateFromPerformance(interaction.end);
|
|
136
131
|
if (!buffered) {
|
|
137
132
|
return old;
|
|
@@ -141,15 +136,6 @@ var getMoreAccuratePageVisibilityUpToTTAI = function getMoreAccuratePageVisibili
|
|
|
141
136
|
}
|
|
142
137
|
return old;
|
|
143
138
|
};
|
|
144
|
-
var getInteractionStatus = function getInteractionStatus(interaction) {
|
|
145
|
-
var originalInteractionStatus = interaction.abortReason ? 'ABORTED' : 'SUCCEEDED';
|
|
146
|
-
var hasBm3TTI = interaction.apdex.length > 0;
|
|
147
|
-
var overrideStatus = hasBm3TTI ? 'SUCCEEDED' : originalInteractionStatus;
|
|
148
|
-
return {
|
|
149
|
-
originalInteractionStatus: originalInteractionStatus,
|
|
150
|
-
overrideStatus: overrideStatus
|
|
151
|
-
};
|
|
152
|
-
};
|
|
153
139
|
var getResourceTimings = function getResourceTimings(start, end) {
|
|
154
140
|
var _resourceTiming$getRe;
|
|
155
141
|
return (_resourceTiming$getRe = resourceTiming.getResourceTimings(start, end)) !== null && _resourceTiming$getRe !== void 0 ? _resourceTiming$getRe : undefined;
|
|
@@ -178,42 +164,6 @@ var getPaintMetrics = function getPaintMetrics(type) {
|
|
|
178
164
|
});
|
|
179
165
|
return metrics;
|
|
180
166
|
};
|
|
181
|
-
var getVCMetrics = function getVCMetrics(interaction) {
|
|
182
|
-
var _config$vc, _interaction$apdex;
|
|
183
|
-
var config = (0, _config.getConfig)();
|
|
184
|
-
if (!(config !== null && config !== void 0 && (_config$vc = config.vc) !== null && _config$vc !== void 0 && _config$vc.enabled)) {
|
|
185
|
-
return {};
|
|
186
|
-
}
|
|
187
|
-
if (interaction.type !== 'page_load' && interaction.type !== 'transition') {
|
|
188
|
-
return {};
|
|
189
|
-
}
|
|
190
|
-
var ssr = interaction.type === 'page_load' && config !== null && config !== void 0 && config.ssr ? {
|
|
191
|
-
ssr: getSSRDoneTimeValue(config)
|
|
192
|
-
} : null;
|
|
193
|
-
_interactionMetrics.postInteractionLog.setVCObserverSSRConfig(ssr);
|
|
194
|
-
var 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;
|
|
195
|
-
var prefix = 'ufo';
|
|
196
|
-
var result = (0, _vc.getVCObserver)().getVCResult(_objectSpread({
|
|
197
|
-
start: interaction.start,
|
|
198
|
-
stop: interaction.end,
|
|
199
|
-
tti: tti,
|
|
200
|
-
prefix: prefix,
|
|
201
|
-
vc: interaction.vc
|
|
202
|
-
}, ssr));
|
|
203
|
-
_interactionMetrics.postInteractionLog.setLastInteractionFinishVCResult(result);
|
|
204
|
-
var VC = result === null || result === void 0 ? void 0 : result['metrics:vc'];
|
|
205
|
-
if (!VC || !(result !== null && result !== void 0 && result["".concat(prefix, ":vc:clean")])) {
|
|
206
|
-
return result;
|
|
207
|
-
}
|
|
208
|
-
var interactionStatus = getInteractionStatus(interaction);
|
|
209
|
-
var pageVisibilityUpToTTAI = getPageVisibilityUpToTTAI(interaction);
|
|
210
|
-
if (interactionStatus.originalInteractionStatus !== 'SUCCEEDED' || pageVisibilityUpToTTAI !== 'visible') {
|
|
211
|
-
return result;
|
|
212
|
-
}
|
|
213
|
-
return _objectSpread(_objectSpread({}, result), {}, {
|
|
214
|
-
'metric:vc90': VC['90']
|
|
215
|
-
});
|
|
216
|
-
};
|
|
217
167
|
var getNavigationMetrics = function getNavigationMetrics(type) {
|
|
218
168
|
if (type !== 'page_load') {
|
|
219
169
|
return {};
|
|
@@ -261,13 +211,13 @@ var getNavigationMetrics = function getNavigationMetrics(type) {
|
|
|
261
211
|
};
|
|
262
212
|
};
|
|
263
213
|
var getPPSMetrics = function getPPSMetrics(interaction) {
|
|
264
|
-
var _interaction$
|
|
214
|
+
var _interaction$apdex;
|
|
265
215
|
var start = interaction.start,
|
|
266
216
|
end = interaction.end;
|
|
267
217
|
var config = (0, _config.getConfig)();
|
|
268
|
-
var interactionStatus = getInteractionStatus(interaction);
|
|
269
|
-
var pageVisibilityUpToTTAI = getPageVisibilityUpToTTAI(interaction);
|
|
270
|
-
var tti = (_interaction$
|
|
218
|
+
var interactionStatus = (0, _utils.getInteractionStatus)(interaction);
|
|
219
|
+
var pageVisibilityUpToTTAI = (0, _utils.getPageVisibilityUpToTTAI)(interaction);
|
|
220
|
+
var 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;
|
|
271
221
|
var ttai = interactionStatus.originalInteractionStatus === 'SUCCEEDED' && pageVisibilityUpToTTAI === 'visible' ? Math.round(end - start) : undefined;
|
|
272
222
|
var PPSMetricsAtTTI = tti !== undefined ? (0, _additionalPayload.getLighthouseMetrics)({
|
|
273
223
|
start: start,
|
|
@@ -358,13 +308,13 @@ function optimizeCustomData(interaction) {
|
|
|
358
308
|
for (var _i = 0, _Object$entries = Object.entries(currentValue.custom || {}); _i < _Object$entries.length; _i++) {
|
|
359
309
|
var _result$get$data2, _result$get2;
|
|
360
310
|
var _Object$entries$_i = (0, _slicedToArray2.default)(_Object$entries[_i], 2),
|
|
361
|
-
|
|
311
|
+
key = _Object$entries$_i[0],
|
|
362
312
|
value = _Object$entries$_i[1];
|
|
363
313
|
var label = (0, _utils.stringifyLabelStackFully)([]);
|
|
364
314
|
var labelValue = (_result$get$data2 = (_result$get2 = result.get(label)) === null || _result$get2 === void 0 ? void 0 : _result$get2.data) !== null && _result$get$data2 !== void 0 ? _result$get$data2 : {};
|
|
365
315
|
result.set(label, {
|
|
366
316
|
labelStack: (0, _utils.optimizeLabelStack)([]),
|
|
367
|
-
data: Object.assign(labelValue, (0, _defineProperty2.default)({},
|
|
317
|
+
data: Object.assign(labelValue, (0, _defineProperty2.default)({}, key, value))
|
|
368
318
|
});
|
|
369
319
|
}
|
|
370
320
|
return result;
|
|
@@ -602,10 +552,6 @@ function getBm3TrackerTimings(interaction) {
|
|
|
602
552
|
legacyMetrics: legacyMetrics
|
|
603
553
|
};
|
|
604
554
|
}
|
|
605
|
-
function getSSRDoneTimeValue(config) {
|
|
606
|
-
var _config$ssr, _config$ssr2;
|
|
607
|
-
return config !== null && config !== void 0 && (_config$ssr = config.ssr) !== null && _config$ssr !== void 0 && _config$ssr.getSSRDoneTime ? config === null || config === void 0 || (_config$ssr2 = config.ssr) === null || _config$ssr2 === void 0 ? void 0 : _config$ssr2.getSSRDoneTime() : ssr.getSSRDoneTime();
|
|
608
|
-
}
|
|
609
555
|
function getPayloadSize(payload) {
|
|
610
556
|
return Math.round(new TextEncoder().encode(JSON.stringify(payload)).length / 1024);
|
|
611
557
|
}
|
|
@@ -638,17 +584,25 @@ function getStylesheetMetrics() {
|
|
|
638
584
|
}
|
|
639
585
|
}, 0);
|
|
640
586
|
return {
|
|
641
|
-
stylesheets: stylesheetCount,
|
|
642
|
-
styleElements: styleElements,
|
|
643
|
-
styleProps: styleProps.length,
|
|
644
|
-
styleDeclarations: styleDeclarations,
|
|
645
|
-
cssrules: cssrules
|
|
587
|
+
'ufo:stylesheets': stylesheetCount,
|
|
588
|
+
'ufo:styleElements': styleElements,
|
|
589
|
+
'ufo:styleProps': styleProps.length,
|
|
590
|
+
'ufo:styleDeclarations': styleDeclarations,
|
|
591
|
+
'ufo:cssrules': cssrules
|
|
646
592
|
};
|
|
647
593
|
} catch (e) {
|
|
648
594
|
return {};
|
|
649
595
|
}
|
|
650
596
|
}
|
|
651
|
-
|
|
597
|
+
var regularTTAI;
|
|
598
|
+
var expTTAI;
|
|
599
|
+
function getErrorCounts(interaction) {
|
|
600
|
+
return {
|
|
601
|
+
'ufo:errors:globalCount': (0, _globalErrorHandler.getGlobalErrorCount)(),
|
|
602
|
+
'ufo:errors:count': interaction.errors.length
|
|
603
|
+
};
|
|
604
|
+
}
|
|
605
|
+
function createInteractionMetricsPayload(interaction, interactionId, experimental) {
|
|
652
606
|
var _window$location, _config$additionalPay;
|
|
653
607
|
var interactionPayloadStart = performance.now();
|
|
654
608
|
var config = (0, _config.getConfig)();
|
|
@@ -668,7 +622,7 @@ function createInteractionMetricsPayload(interaction, interactionId) {
|
|
|
668
622
|
isPreviousInteractionAborted = interaction.isPreviousInteractionAborted,
|
|
669
623
|
abortedByInteractionName = interaction.abortedByInteractionName;
|
|
670
624
|
var pageVisibilityAtTTI = getPageVisibilityUpToTTI(interaction);
|
|
671
|
-
var pageVisibilityAtTTAI = getPageVisibilityUpToTTAI(interaction);
|
|
625
|
+
var pageVisibilityAtTTAI = (0, _utils.getPageVisibilityUpToTTAI)(interaction);
|
|
672
626
|
var segments = config.killswitchNestedSegments ? [] : knownSegments;
|
|
673
627
|
var segmentTree = _constants.REACT_UFO_VERSION === '2.0.0' ? (0, _utils.buildSegmentTree)(segments.map(function (segment) {
|
|
674
628
|
return segment.labelStack;
|
|
@@ -683,23 +637,23 @@ function createInteractionMetricsPayload(interaction, interactionId) {
|
|
|
683
637
|
} : {};
|
|
684
638
|
// Page Load
|
|
685
639
|
var getPageLoadInteractionMetrics = function getPageLoadInteractionMetrics() {
|
|
686
|
-
var _config$
|
|
640
|
+
var _config$ssr;
|
|
687
641
|
if (!isPageLoad) {
|
|
688
642
|
return {};
|
|
689
643
|
}
|
|
690
644
|
var config = (0, _config.getConfig)();
|
|
691
|
-
var SSRDoneTimeValue = getSSRDoneTimeValue(config);
|
|
645
|
+
var SSRDoneTimeValue = (0, _utils.getSSRDoneTimeValue)(config);
|
|
692
646
|
var SSRDoneTime = SSRDoneTimeValue !== undefined ? {
|
|
693
647
|
SSRDoneTime: Math.round(SSRDoneTimeValue)
|
|
694
648
|
} : {};
|
|
695
649
|
return _objectSpread(_objectSpread({}, SSRDoneTime), {}, {
|
|
696
650
|
isBM3ConfigSSRDoneAsFmp: interaction.metaData.__legacy__bm3ConfigSSRDoneAsFmp,
|
|
697
|
-
isUFOConfigSSRDoneAsFmp: interaction.metaData.__legacy__bm3ConfigSSRDoneAsFmp || !!(config !== null && config !== void 0 && (_config$
|
|
651
|
+
isUFOConfigSSRDoneAsFmp: interaction.metaData.__legacy__bm3ConfigSSRDoneAsFmp || !!(config !== null && config !== void 0 && (_config$ssr = config.ssr) !== null && _config$ssr !== void 0 && _config$ssr.getSSRDoneTime)
|
|
698
652
|
});
|
|
699
653
|
};
|
|
700
654
|
// Detailed payload. Page visibility = visible
|
|
701
655
|
var getDetailedInteractionMetrics = function getDetailedInteractionMetrics() {
|
|
702
|
-
if (window.__UFO_COMPACT_PAYLOAD__ || !isDetailedPayload) {
|
|
656
|
+
if (experimental || window.__UFO_COMPACT_PAYLOAD__ || !isDetailedPayload) {
|
|
703
657
|
return {};
|
|
704
658
|
}
|
|
705
659
|
var spans = [].concat((0, _toConsumableArray2.default)(interaction.spans), (0, _toConsumableArray2.default)(_interactionMetrics.interactionSpans));
|
|
@@ -714,7 +668,7 @@ function createInteractionMetricsPayload(interaction, interactionId) {
|
|
|
714
668
|
}),
|
|
715
669
|
holdActive: (0, _toConsumableArray2.default)(interaction.holdActive.values()),
|
|
716
670
|
redirects: optimizeRedirects(interaction.redirects, start),
|
|
717
|
-
holdInfo: optimizeHoldInfo(interaction.holdInfo, start),
|
|
671
|
+
holdInfo: optimizeHoldInfo(experimental ? interaction.holdExpInfo : interaction.holdInfo, start),
|
|
718
672
|
spans: optimizeSpans(spans, start),
|
|
719
673
|
requestInfo: optimizeRequestInfo(interaction.requestInfo, start),
|
|
720
674
|
customTimings: optimizeCustomTimings(interaction.customTimings, start),
|
|
@@ -724,16 +678,21 @@ function createInteractionMetricsPayload(interaction, interactionId) {
|
|
|
724
678
|
};
|
|
725
679
|
// Page load & detailed payload
|
|
726
680
|
var getPageLoadDetailedInteractionMetrics = function getPageLoadDetailedInteractionMetrics() {
|
|
727
|
-
var _config$
|
|
681
|
+
var _config$ssr2;
|
|
728
682
|
if (!isPageLoad || !isDetailedPayload) {
|
|
729
683
|
return {};
|
|
730
684
|
}
|
|
731
685
|
var config = (0, _config.getConfig)();
|
|
732
686
|
return {
|
|
733
687
|
initialPageLoadExtraTimings: objectToArray(initialPageLoadExtraTiming.getTimings()),
|
|
734
|
-
SSRTimings: config !== null && config !== void 0 && (_config$
|
|
688
|
+
SSRTimings: config !== null && config !== void 0 && (_config$ssr2 = config.ssr) !== null && _config$ssr2 !== void 0 && _config$ssr2.getSSRTimings ? config.ssr.getSSRTimings() : objectToArray(ssr.getSSRTimings())
|
|
735
689
|
};
|
|
736
690
|
};
|
|
691
|
+
if (experimental) {
|
|
692
|
+
expTTAI = (0, _utils.getTTAI)(interaction);
|
|
693
|
+
} else {
|
|
694
|
+
regularTTAI = (0, _utils.getTTAI)(interaction);
|
|
695
|
+
}
|
|
737
696
|
var newUFOName = (0, _utils.sanitizeUfoName)(ufoName);
|
|
738
697
|
var payload = {
|
|
739
698
|
actionSubject: 'experience',
|
|
@@ -742,7 +701,7 @@ function createInteractionMetricsPayload(interaction, interactionId) {
|
|
|
742
701
|
source: 'measured',
|
|
743
702
|
tags: ['observability'],
|
|
744
703
|
attributes: {
|
|
745
|
-
properties: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
704
|
+
properties: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
746
705
|
// basic
|
|
747
706
|
'event:hostname': ((_window$location = window.location) === null || _window$location === void 0 ? void 0 : _window$location.hostname) || 'unknown',
|
|
748
707
|
'event:product': config.product,
|
|
@@ -754,11 +713,10 @@ function createInteractionMetricsPayload(interaction, interactionId) {
|
|
|
754
713
|
payloadSource: 'platform'
|
|
755
714
|
},
|
|
756
715
|
'event:region': config.region || 'unknown',
|
|
757
|
-
'experience:key': 'custom.interaction-metrics',
|
|
716
|
+
'experience:key': experimental ? 'custom.experimental-interaction-metrics' : 'custom.interaction-metrics',
|
|
758
717
|
'experience:name': newUFOName
|
|
759
|
-
}, getBrowserMetadata()), getSSRProperties(type)), getPPSMetrics(interaction)), getPaintMetrics(type)), getNavigationMetrics(type)), getVCMetrics(interaction)), (_config$additionalPay = config.additionalPayloadData) === null || _config$additionalPay === void 0 ? void 0 : _config$additionalPay.call(config, interaction)), getTracingContextData(interaction)), getStylesheetMetrics()), {}, {
|
|
760
|
-
|
|
761
|
-
interactionMetrics: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
718
|
+
}, getBrowserMetadata()), getSSRProperties(type)), getPPSMetrics(interaction)), getPaintMetrics(type)), getNavigationMetrics(type)), (0, _utils.getVCMetrics)(interaction)), experimental ? (0, _utils.getExperimentalVCMetrics)(interaction) : undefined), (_config$additionalPay = config.additionalPayloadData) === null || _config$additionalPay === void 0 ? void 0 : _config$additionalPay.call(config, interaction)), getTracingContextData(interaction)), getStylesheetMetrics()), getErrorCounts(interaction)), {}, {
|
|
719
|
+
interactionMetrics: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
762
720
|
namePrefix: config.namePrefix || '',
|
|
763
721
|
segmentPrefix: config.segmentPrefix || '',
|
|
764
722
|
interactionId: interactionId,
|
|
@@ -788,13 +746,19 @@ function createInteractionMetricsPayload(interaction, interactionId) {
|
|
|
788
746
|
}),
|
|
789
747
|
marks: optimizeMarks(interaction.marks),
|
|
790
748
|
customData: optimizeCustomData(interaction),
|
|
791
|
-
reactProfilerTimings: optimizeReactProfilerTimings(interaction.reactProfilerTimings, start)
|
|
792
|
-
|
|
793
|
-
|
|
749
|
+
reactProfilerTimings: optimizeReactProfilerTimings(interaction.reactProfilerTimings, start)
|
|
750
|
+
}, labelStack), getPageLoadInteractionMetrics()), getDetailedInteractionMetrics()), getPageLoadDetailedInteractionMetrics()), getBm3TrackerTimings(interaction)), {}, {
|
|
751
|
+
'metric:ttai': experimental ? regularTTAI || expTTAI : undefined,
|
|
752
|
+
'metric:experimental:ttai': experimental ? expTTAI : undefined
|
|
753
|
+
}),
|
|
794
754
|
'ufo:payloadTime': (0, _roundNumber.roundEpsilon)(performance.now() - interactionPayloadStart)
|
|
795
755
|
})
|
|
796
756
|
}
|
|
797
757
|
};
|
|
758
|
+
if (experimental) {
|
|
759
|
+
regularTTAI = undefined;
|
|
760
|
+
expTTAI = undefined;
|
|
761
|
+
}
|
|
798
762
|
payload.attributes.properties['event:sizeInKb'] = getPayloadSize(payload.attributes.properties);
|
|
799
763
|
return payload;
|
|
800
764
|
}
|
|
@@ -58,10 +58,7 @@ function removeCascadingParentTimingReport(reactProfilerTimings) {
|
|
|
58
58
|
if (parentSegmentId) {
|
|
59
59
|
var parentTimings = timingIndex.get(parentSegmentId);
|
|
60
60
|
var filteredParentTimings = parentTimings === null || parentTimings === void 0 ? void 0 : parentTimings.filter(function (parentTiming) {
|
|
61
|
-
|
|
62
|
-
return false;
|
|
63
|
-
}
|
|
64
|
-
return true;
|
|
61
|
+
return !(parentTiming.startTime === timing.startTime && parentTiming.actualDuration === timing.actualDuration);
|
|
65
62
|
});
|
|
66
63
|
if (filteredParentTimings) {
|
|
67
64
|
timingIndex.set(parentSegmentId, filteredParentTimings);
|
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.default = void 0;
|
|
6
|
+
exports.segmentObservers = exports.segmentCache = exports.moduleLoadingRequests = exports.interactionQueue = exports.default = exports.CLEANUP_TIMEOUT_AFTER_APDEX = exports.CLEANUP_TIMEOUT = void 0;
|
|
7
7
|
var interactions = new Map();
|
|
8
|
+
var CLEANUP_TIMEOUT = exports.CLEANUP_TIMEOUT = 60 * 1000;
|
|
9
|
+
var CLEANUP_TIMEOUT_AFTER_APDEX = exports.CLEANUP_TIMEOUT_AFTER_APDEX = 15 * 1000;
|
|
10
|
+
var interactionQueue = exports.interactionQueue = [];
|
|
11
|
+
var segmentCache = exports.segmentCache = new Map();
|
|
12
|
+
var segmentObservers = exports.segmentObservers = [];
|
|
13
|
+
var moduleLoadingRequests = exports.moduleLoadingRequests = {};
|
|
8
14
|
var _default = exports.default = interactions;
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.addHoldCriterion = addHoldCriterion;
|
|
8
|
+
exports.addSegmentObserver = addSegmentObserver;
|
|
9
|
+
exports.callCancelCallbacks = callCancelCallbacks;
|
|
10
|
+
exports.callCleanUpCallbacks = callCleanUpCallbacks;
|
|
11
|
+
exports.getSegmentCacheKey = getSegmentCacheKey;
|
|
12
|
+
exports.isPerformanceTracingEnabled = isPerformanceTracingEnabled;
|
|
13
|
+
exports.isSegmentLabel = isSegmentLabel;
|
|
14
|
+
exports.labelStackToIdString = labelStackToIdString;
|
|
15
|
+
exports.labelStackToString = labelStackToString;
|
|
16
|
+
exports.pushToQueue = void 0;
|
|
17
|
+
exports.reactProfilerTimingMap = reactProfilerTimingMap;
|
|
18
|
+
exports.removeHoldCriterion = removeHoldCriterion;
|
|
19
|
+
exports.removeSegmentObserver = removeSegmentObserver;
|
|
20
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
21
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
22
|
+
var _config = require("../../config");
|
|
23
|
+
var _constants = require("./constants");
|
|
24
|
+
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; } } }; }
|
|
25
|
+
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; } }
|
|
26
|
+
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; }
|
|
27
|
+
function isPerformanceTracingEnabled() {
|
|
28
|
+
var _getConfig;
|
|
29
|
+
return ((_getConfig = (0, _config.getConfig)()) === null || _getConfig === void 0 ? void 0 : _getConfig.enableAdditionalPerformanceMarks) || window.__REACT_UFO_ENABLE_PERF_TRACING || process.env.NODE_ENV !== 'production';
|
|
30
|
+
}
|
|
31
|
+
function labelStackToString(labelStack, name) {
|
|
32
|
+
var _stack$map;
|
|
33
|
+
var stack = (0, _toConsumableArray2.default)(labelStack !== null && labelStack !== void 0 ? labelStack : []);
|
|
34
|
+
if (name) {
|
|
35
|
+
stack.push({
|
|
36
|
+
name: name
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
return (_stack$map = stack.map(function (l) {
|
|
40
|
+
return l.name;
|
|
41
|
+
})) === null || _stack$map === void 0 ? void 0 : _stack$map.join('/');
|
|
42
|
+
}
|
|
43
|
+
function labelStackToIdString(labelStack) {
|
|
44
|
+
var _labelStack$map;
|
|
45
|
+
return labelStack === null || labelStack === void 0 || (_labelStack$map = labelStack.map(function (l) {
|
|
46
|
+
return 'segmentId' in l ? "".concat(l.name, ":").concat(l.segmentId) : "".concat(l.name);
|
|
47
|
+
})) === null || _labelStack$map === void 0 ? void 0 : _labelStack$map.join('/');
|
|
48
|
+
}
|
|
49
|
+
function addSegmentObserver(observer) {
|
|
50
|
+
_constants.segmentObservers.push(observer);
|
|
51
|
+
var _iterator = _createForOfIteratorHelper(_constants.segmentCache.values()),
|
|
52
|
+
_step;
|
|
53
|
+
try {
|
|
54
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
55
|
+
var segmentInfo = _step.value;
|
|
56
|
+
observer.onAdd(segmentInfo);
|
|
57
|
+
}
|
|
58
|
+
} catch (err) {
|
|
59
|
+
_iterator.e(err);
|
|
60
|
+
} finally {
|
|
61
|
+
_iterator.f();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
function removeSegmentObserver(observer) {
|
|
65
|
+
var index = _constants.segmentObservers.findIndex(function (obs) {
|
|
66
|
+
return obs === observer;
|
|
67
|
+
});
|
|
68
|
+
if (index !== -1) {
|
|
69
|
+
_constants.segmentObservers.splice(index, 1);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
function addHoldCriterion(id, labelStack, name, startTime) {
|
|
73
|
+
var _window$__CRITERION__;
|
|
74
|
+
if (!((_window$__CRITERION__ = window.__CRITERION__) !== null && _window$__CRITERION__ !== void 0 && _window$__CRITERION__.addUFOHold)) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
window.__CRITERION__.addUFOHold(id, labelStackToString(labelStack), name, startTime);
|
|
78
|
+
}
|
|
79
|
+
function removeHoldCriterion(id) {
|
|
80
|
+
var _window$__CRITERION__2;
|
|
81
|
+
if (!((_window$__CRITERION__2 = window.__CRITERION__) !== null && _window$__CRITERION__2 !== void 0 && _window$__CRITERION__2.removeUFOHold)) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
window.__CRITERION__.removeUFOHold(id);
|
|
85
|
+
}
|
|
86
|
+
var pushToQueue = exports.pushToQueue = function pushToQueue(id, data) {
|
|
87
|
+
_constants.interactionQueue.push({
|
|
88
|
+
id: id,
|
|
89
|
+
data: data
|
|
90
|
+
});
|
|
91
|
+
};
|
|
92
|
+
function callCleanUpCallbacks(interaction) {
|
|
93
|
+
interaction.cleanupCallbacks.reverse().forEach(function (cleanUpCallback) {
|
|
94
|
+
cleanUpCallback();
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
function reactProfilerTimingMap(data) {
|
|
98
|
+
var profilerTimingMap = new Map();
|
|
99
|
+
data.reactProfilerTimings.forEach(function (profilerTiming) {
|
|
100
|
+
var labelStackId = labelStackToIdString(profilerTiming.labelStack);
|
|
101
|
+
if (labelStackId) {
|
|
102
|
+
var _profilerTimingMap$ge, _timing$start, _timing$end;
|
|
103
|
+
var timing = (_profilerTimingMap$ge = profilerTimingMap.get(labelStackId)) !== null && _profilerTimingMap$ge !== void 0 ? _profilerTimingMap$ge : {
|
|
104
|
+
labelStack: profilerTiming.labelStack
|
|
105
|
+
};
|
|
106
|
+
timing.start = profilerTiming.startTime < ((_timing$start = timing.start) !== null && _timing$start !== void 0 ? _timing$start : Number.MAX_SAFE_INTEGER) ? profilerTiming.startTime : timing.start;
|
|
107
|
+
timing.end = profilerTiming.commitTime > ((_timing$end = timing.end) !== null && _timing$end !== void 0 ? _timing$end : Number.MIN_SAFE_INTEGER) ? profilerTiming.commitTime : timing.end;
|
|
108
|
+
profilerTimingMap.set(labelStackId, timing);
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
try {
|
|
112
|
+
// for Firefox 102 and older
|
|
113
|
+
var _iterator2 = _createForOfIteratorHelper(profilerTimingMap.entries()),
|
|
114
|
+
_step2;
|
|
115
|
+
try {
|
|
116
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
117
|
+
var _step2$value = (0, _slicedToArray2.default)(_step2.value, 2),
|
|
118
|
+
_step2$value$ = _step2$value[1],
|
|
119
|
+
labelStack = _step2$value$.labelStack,
|
|
120
|
+
start = _step2$value$.start,
|
|
121
|
+
end = _step2$value$.end;
|
|
122
|
+
performance.measure("\uD83D\uDEF8 ".concat(labelStackToString(labelStack), " [segment_ttai]"), {
|
|
123
|
+
start: start,
|
|
124
|
+
end: end
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
} catch (err) {
|
|
128
|
+
_iterator2.e(err);
|
|
129
|
+
} finally {
|
|
130
|
+
_iterator2.f();
|
|
131
|
+
}
|
|
132
|
+
} catch (e) {
|
|
133
|
+
// do nothing
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
function callCancelCallbacks(interaction) {
|
|
137
|
+
interaction.cancelCallbacks.reverse().forEach(function (cancelCallback) {
|
|
138
|
+
cancelCallback();
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
function isSegmentLabel(obj) {
|
|
142
|
+
return obj && typeof obj.name === 'string' && typeof obj.segmentId === 'string';
|
|
143
|
+
}
|
|
144
|
+
function getSegmentCacheKey(labelStack) {
|
|
145
|
+
return labelStack.map(function (l) {
|
|
146
|
+
if (isSegmentLabel(l)) {
|
|
147
|
+
return "".concat(l.name, "_").concat(l.segmentId);
|
|
148
|
+
}
|
|
149
|
+
return l.name;
|
|
150
|
+
}).join('|');
|
|
151
|
+
}
|