@atlaskit/react-ufo 4.7.0 → 4.7.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 +7 -0
- package/dist/cjs/create-interaction-extra-metrics-payload/index.js +82 -15
- package/dist/cjs/create-payload/index.js +26 -218
- package/dist/cjs/create-payload/utils/get-more-accurate-page-visibility-up-to-ttai.js +20 -0
- package/dist/cjs/create-payload/utils/get-visibility-state-from-performance.js +35 -0
- package/dist/cjs/create-payload/utils/optimize-apdex.js +25 -0
- package/dist/cjs/create-payload/utils/optimize-custom-timings.js +22 -0
- package/dist/cjs/create-payload/utils/optimize-hold-info.js +41 -0
- package/dist/cjs/create-payload/utils/optimize-marks.js +24 -0
- package/dist/cjs/create-payload/utils/optimize-react-profiler-timings.js +53 -0
- package/dist/cjs/create-payload/utils/optimize-request-info.js +32 -0
- package/dist/cjs/create-payload/utils/optimize-spans.js +30 -0
- package/dist/cjs/interaction-metrics-init/index.js +1 -1
- package/dist/es2019/create-interaction-extra-metrics-payload/index.js +62 -9
- package/dist/es2019/create-payload/index.js +10 -205
- package/dist/es2019/create-payload/utils/get-more-accurate-page-visibility-up-to-ttai.js +13 -0
- package/dist/es2019/create-payload/utils/get-visibility-state-from-performance.js +28 -0
- package/dist/es2019/create-payload/utils/optimize-apdex.js +14 -0
- package/dist/es2019/create-payload/utils/optimize-custom-timings.js +16 -0
- package/dist/es2019/create-payload/utils/optimize-hold-info.js +35 -0
- package/dist/es2019/create-payload/utils/optimize-marks.js +12 -0
- package/dist/es2019/create-payload/utils/optimize-react-profiler-timings.js +46 -0
- package/dist/es2019/create-payload/utils/optimize-request-info.js +26 -0
- package/dist/es2019/create-payload/utils/optimize-spans.js +24 -0
- package/dist/es2019/interaction-metrics-init/index.js +1 -1
- package/dist/esm/create-interaction-extra-metrics-payload/index.js +83 -16
- package/dist/esm/create-payload/index.js +18 -208
- package/dist/esm/create-payload/utils/get-more-accurate-page-visibility-up-to-ttai.js +13 -0
- package/dist/esm/create-payload/utils/get-visibility-state-from-performance.js +29 -0
- package/dist/esm/create-payload/utils/optimize-apdex.js +18 -0
- package/dist/esm/create-payload/utils/optimize-custom-timings.js +16 -0
- package/dist/esm/create-payload/utils/optimize-hold-info.js +34 -0
- package/dist/esm/create-payload/utils/optimize-marks.js +17 -0
- package/dist/esm/create-payload/utils/optimize-react-profiler-timings.js +46 -0
- package/dist/esm/create-payload/utils/optimize-request-info.js +25 -0
- package/dist/esm/create-payload/utils/optimize-spans.js +23 -0
- package/dist/esm/interaction-metrics-init/index.js +1 -1
- package/dist/types/create-interaction-extra-metrics-payload/index.d.ts +56 -0
- package/dist/types/create-payload/index.d.ts +0 -3
- package/dist/types/create-payload/utils/get-more-accurate-page-visibility-up-to-ttai.d.ts +2 -0
- package/dist/types/create-payload/utils/get-visibility-state-from-performance.d.ts +1 -0
- package/dist/types/create-payload/utils/optimize-apdex.d.ts +12 -0
- package/dist/types/create-payload/utils/optimize-custom-timings.d.ts +7 -0
- package/dist/types/create-payload/utils/optimize-hold-info.d.ts +3 -0
- package/dist/types/create-payload/utils/optimize-marks.d.ts +12 -0
- package/dist/types/create-payload/utils/optimize-react-profiler-timings.d.ts +3 -0
- package/dist/types/create-payload/utils/optimize-request-info.d.ts +8 -0
- package/dist/types/create-payload/utils/optimize-spans.d.ts +9 -0
- package/dist/types-ts4.5/create-interaction-extra-metrics-payload/index.d.ts +56 -0
- package/dist/types-ts4.5/create-payload/index.d.ts +0 -3
- package/dist/types-ts4.5/create-payload/utils/get-more-accurate-page-visibility-up-to-ttai.d.ts +2 -0
- package/dist/types-ts4.5/create-payload/utils/get-visibility-state-from-performance.d.ts +1 -0
- package/dist/types-ts4.5/create-payload/utils/optimize-apdex.d.ts +12 -0
- package/dist/types-ts4.5/create-payload/utils/optimize-custom-timings.d.ts +7 -0
- package/dist/types-ts4.5/create-payload/utils/optimize-hold-info.d.ts +3 -0
- package/dist/types-ts4.5/create-payload/utils/optimize-marks.d.ts +12 -0
- package/dist/types-ts4.5/create-payload/utils/optimize-react-profiler-timings.d.ts +3 -0
- package/dist/types-ts4.5/create-payload/utils/optimize-request-info.d.ts +8 -0
- package/dist/types-ts4.5/create-payload/utils/optimize-spans.d.ts +9 -0
- package/package.json +1 -1
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
2
|
+
import { segmentUnmountCache } from '../../interaction-metrics';
|
|
3
|
+
import { optimizeLabelStack, stringifyLabelStackFully } from '../common/utils';
|
|
4
|
+
export function optimizeReactProfilerTimings(reactProfilerTimings, interactionStart, reactUFOVersion) {
|
|
5
|
+
const reactProfilerTimingsMap = reactProfilerTimings.reduce((result, {
|
|
6
|
+
labelStack,
|
|
7
|
+
startTime,
|
|
8
|
+
commitTime,
|
|
9
|
+
actualDuration,
|
|
10
|
+
type
|
|
11
|
+
}) => {
|
|
12
|
+
if (labelStack && startTime >= interactionStart) {
|
|
13
|
+
const label = stringifyLabelStackFully(labelStack);
|
|
14
|
+
const start = Math.round(startTime);
|
|
15
|
+
const end = Math.round(commitTime);
|
|
16
|
+
const timing = result.get(label) || {
|
|
17
|
+
labelStack: optimizeLabelStack(labelStack, reactUFOVersion),
|
|
18
|
+
startTime: start,
|
|
19
|
+
endTime: end,
|
|
20
|
+
mountCount: 0,
|
|
21
|
+
rerenderCount: 0,
|
|
22
|
+
renderDuration: 0
|
|
23
|
+
};
|
|
24
|
+
if (start < timing.startTime) {
|
|
25
|
+
timing.startTime = start;
|
|
26
|
+
}
|
|
27
|
+
if (end > timing.endTime) {
|
|
28
|
+
timing.endTime = end;
|
|
29
|
+
}
|
|
30
|
+
if (type === 'mount') {
|
|
31
|
+
timing.mountCount += 1;
|
|
32
|
+
}
|
|
33
|
+
if (type === 'update') {
|
|
34
|
+
timing.rerenderCount += 1;
|
|
35
|
+
}
|
|
36
|
+
if (segmentUnmountCache.has(label) && fg('platform_ufo_segment_unmount_count')) {
|
|
37
|
+
timing.unmountCount = segmentUnmountCache.get(label) || 0;
|
|
38
|
+
segmentUnmountCache.delete(label);
|
|
39
|
+
}
|
|
40
|
+
timing.renderDuration += Math.round(actualDuration);
|
|
41
|
+
result.set(label, timing);
|
|
42
|
+
}
|
|
43
|
+
return result;
|
|
44
|
+
}, new Map());
|
|
45
|
+
return [...reactProfilerTimingsMap.values()];
|
|
46
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { optimizeLabelStack } from '../common/utils';
|
|
2
|
+
export function optimizeRequestInfo(requestInfo, interactionStart, reactUFOVersion) {
|
|
3
|
+
const updatedRequestInfo = requestInfo.reduce((result, reqInfo) => {
|
|
4
|
+
const {
|
|
5
|
+
labelStack,
|
|
6
|
+
name,
|
|
7
|
+
start,
|
|
8
|
+
end,
|
|
9
|
+
networkStart,
|
|
10
|
+
networkComplete
|
|
11
|
+
} = reqInfo;
|
|
12
|
+
const startTime = networkStart !== null && networkStart !== void 0 ? networkStart : start;
|
|
13
|
+
const endTime = networkComplete !== null && networkComplete !== void 0 ? networkComplete : end;
|
|
14
|
+
if (labelStack && start >= interactionStart && endTime) {
|
|
15
|
+
result.push({
|
|
16
|
+
labelStack: optimizeLabelStack([...labelStack, {
|
|
17
|
+
name
|
|
18
|
+
}], reactUFOVersion),
|
|
19
|
+
startTime: Math.round(startTime),
|
|
20
|
+
endTime: Math.round(endTime)
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
return result;
|
|
24
|
+
}, []);
|
|
25
|
+
return updatedRequestInfo;
|
|
26
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { optimizeLabelStack } from '../common/utils';
|
|
2
|
+
export function optimizeSpans(spans, interactionStart, reactUFOVersion) {
|
|
3
|
+
const updatedSpans = spans.reduce((result, span) => {
|
|
4
|
+
const {
|
|
5
|
+
labelStack,
|
|
6
|
+
type,
|
|
7
|
+
name,
|
|
8
|
+
start,
|
|
9
|
+
end
|
|
10
|
+
} = span;
|
|
11
|
+
if (labelStack && start >= interactionStart) {
|
|
12
|
+
result.push({
|
|
13
|
+
labelStack: optimizeLabelStack([...labelStack, {
|
|
14
|
+
name
|
|
15
|
+
}], reactUFOVersion),
|
|
16
|
+
startTime: Math.round(start),
|
|
17
|
+
endTime: Math.round(end),
|
|
18
|
+
type
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
return result;
|
|
22
|
+
}, []);
|
|
23
|
+
return updatedSpans;
|
|
24
|
+
}
|
|
@@ -111,7 +111,7 @@ export function init(analyticsWebClientAsync, config) {
|
|
|
111
111
|
startTime: 0
|
|
112
112
|
});
|
|
113
113
|
}
|
|
114
|
-
if (config !== null && config !== void 0 && (_config$extraInteract = config.extraInteractionMetrics) !== null && _config$extraInteract !== void 0 && _config$extraInteract.enabled
|
|
114
|
+
if (config !== null && config !== void 0 && (_config$extraInteract = config.extraInteractionMetrics) !== null && _config$extraInteract !== void 0 && _config$extraInteract.enabled) {
|
|
115
115
|
interactionExtraMetrics.initializeVCObserver(vcOptions);
|
|
116
116
|
}
|
|
117
117
|
}
|
|
@@ -1,25 +1,36 @@
|
|
|
1
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
+
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
2
4
|
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
5
|
+
var _excluded = ["labelStack"];
|
|
3
6
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
4
7
|
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
8
|
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
9
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
7
10
|
import coinflip from '../coinflip';
|
|
8
|
-
import { getConfig, getExtraInteractionRate } from '../config';
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
+
import { DEFAULT_TTVC_REVISION, getConfig, getExtraInteractionRate, getMostRecentVCRevision } from '../config';
|
|
12
|
+
import { buildSegmentTree, getOldSegmentsLabelStack, optimizeLabelStack, sanitizeUfoName } from '../create-payload/common/utils';
|
|
13
|
+
import { getMoreAccuratePageVisibilityUpToTTAI } from '../create-payload/utils/get-more-accurate-page-visibility-up-to-ttai';
|
|
11
14
|
import getPageVisibilityUpToTTAI from '../create-payload/utils/get-page-visibility-up-to-ttai';
|
|
12
15
|
import getPayloadSize from '../create-payload/utils/get-payload-size';
|
|
13
16
|
import { getReactUFOPayloadVersion } from '../create-payload/utils/get-react-ufo-payload-version';
|
|
14
17
|
import getTTAI from '../create-payload/utils/get-ttai';
|
|
15
18
|
import getVCMetrics from '../create-payload/utils/get-vc-metrics';
|
|
19
|
+
import { optimizeApdex } from '../create-payload/utils/optimize-apdex';
|
|
20
|
+
import { optimizeCustomTimings } from '../create-payload/utils/optimize-custom-timings';
|
|
21
|
+
import { optimizeHoldInfo } from '../create-payload/utils/optimize-hold-info';
|
|
22
|
+
import { optimizeMarks } from '../create-payload/utils/optimize-marks';
|
|
23
|
+
import { optimizeReactProfilerTimings } from '../create-payload/utils/optimize-react-profiler-timings';
|
|
24
|
+
import { optimizeRequestInfo } from '../create-payload/utils/optimize-request-info';
|
|
25
|
+
import { optimizeSpans } from '../create-payload/utils/optimize-spans';
|
|
26
|
+
import { interactionSpans as atlaskitInteractionSpans } from '../interaction-metrics';
|
|
16
27
|
function createInteractionExtraLogPayload(_x, _x2) {
|
|
17
28
|
return _createInteractionExtraLogPayload.apply(this, arguments);
|
|
18
29
|
}
|
|
19
30
|
function _createInteractionExtraLogPayload() {
|
|
20
31
|
_createInteractionExtraLogPayload = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(interactionId, interaction) {
|
|
21
|
-
var _getTTAI,
|
|
22
|
-
var config, end, start, ufoName, rate, type, abortReason, routeName, previousInteractionName, isPreviousInteractionAborted, abortedByInteractionName, knownSegments, sanitisedUfoName, configRate, pageVisibilityAtTTAI, isPageLoad, calculatePageVisibilityFromTheStartOfPageLoad, moreAccuratePageVisibilityAtTTAI, extraTTAI, newUFOName, finalVCMetrics,
|
|
32
|
+
var _getTTAI, _getMostRecentVCRevis, _window$location;
|
|
33
|
+
var config, end, start, ufoName, rate, type, abortReason, routeName, previousInteractionName, isPreviousInteractionAborted, abortedByInteractionName, knownSegments, sanitisedUfoName, configRate, pageVisibilityAtTTAI, isPageLoad, calculatePageVisibilityFromTheStartOfPageLoad, moreAccuratePageVisibilityAtTTAI, extraTTAI, newUFOName, mostRecentVCRevision, finalVCMetrics, isThirdParty, filteredData, getDetailedInteractionMetrics, segments3p, segmentTree, payload;
|
|
23
34
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
24
35
|
while (1) switch (_context.prev = _context.next) {
|
|
25
36
|
case 0:
|
|
@@ -51,16 +62,68 @@ function _createInteractionExtraLogPayload() {
|
|
|
51
62
|
moreAccuratePageVisibilityAtTTAI = calculatePageVisibilityFromTheStartOfPageLoad ? getMoreAccuratePageVisibilityUpToTTAI(interaction) : null;
|
|
52
63
|
extraTTAI = (_getTTAI = getTTAI(interaction)) !== null && _getTTAI !== void 0 ? _getTTAI : undefined;
|
|
53
64
|
newUFOName = sanitizeUfoName(ufoName);
|
|
54
|
-
|
|
65
|
+
mostRecentVCRevision = (_getMostRecentVCRevis = getMostRecentVCRevision(newUFOName)) !== null && _getMostRecentVCRevis !== void 0 ? _getMostRecentVCRevis : DEFAULT_TTVC_REVISION;
|
|
66
|
+
_context.next = 19;
|
|
55
67
|
return getVCMetrics(interaction, true);
|
|
56
|
-
case
|
|
68
|
+
case 19:
|
|
57
69
|
finalVCMetrics = _context.sent;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
70
|
+
// Helper function to check if labelStack contains third-party type
|
|
71
|
+
isThirdParty = function isThirdParty(labelStack) {
|
|
72
|
+
var _labelStack$some;
|
|
73
|
+
return (_labelStack$some = labelStack === null || labelStack === void 0 ? void 0 : labelStack.some(function (entry) {
|
|
61
74
|
return 'type' in entry && entry.type === 'third-party';
|
|
62
|
-
});
|
|
63
|
-
}
|
|
75
|
+
})) !== null && _labelStack$some !== void 0 ? _labelStack$some : false;
|
|
76
|
+
}; // Pre-filter 3p data
|
|
77
|
+
filteredData = {
|
|
78
|
+
errors: interaction.errors.filter(function (error) {
|
|
79
|
+
return isThirdParty(error.labelStack);
|
|
80
|
+
}),
|
|
81
|
+
spans: [].concat(_toConsumableArray(interaction.spans), _toConsumableArray(atlaskitInteractionSpans)).filter(function (span) {
|
|
82
|
+
return isThirdParty(span.labelStack);
|
|
83
|
+
}),
|
|
84
|
+
requestInfo: interaction.requestInfo.filter(function (req) {
|
|
85
|
+
return isThirdParty(req.labelStack);
|
|
86
|
+
}),
|
|
87
|
+
customTimings: interaction.customTimings.filter(function (timing) {
|
|
88
|
+
return isThirdParty(timing.labelStack);
|
|
89
|
+
}),
|
|
90
|
+
apdex: interaction.apdex.filter(function (apdex) {
|
|
91
|
+
return isThirdParty(apdex.labelStack);
|
|
92
|
+
}),
|
|
93
|
+
reactProfilerTimings: interaction.reactProfilerTimings.filter(function (timing) {
|
|
94
|
+
return isThirdParty(timing.labelStack);
|
|
95
|
+
}),
|
|
96
|
+
customData: interaction.customData.filter(function (data) {
|
|
97
|
+
return isThirdParty(data.labelStack);
|
|
98
|
+
}),
|
|
99
|
+
segments: knownSegments.filter(function (segment) {
|
|
100
|
+
return isThirdParty(segment.labelStack);
|
|
101
|
+
}),
|
|
102
|
+
marks: interaction.marks.filter(function (mark) {
|
|
103
|
+
return isThirdParty(mark.labelStack);
|
|
104
|
+
})
|
|
105
|
+
}; // Clear atlaskit spans after filtering
|
|
106
|
+
atlaskitInteractionSpans.length = 0;
|
|
107
|
+
|
|
108
|
+
// Detailed payload
|
|
109
|
+
getDetailedInteractionMetrics = function getDetailedInteractionMetrics() {
|
|
110
|
+
var _interaction$hold3pIn;
|
|
111
|
+
return {
|
|
112
|
+
errors: filteredData.errors.map(function (_ref) {
|
|
113
|
+
var labelStack = _ref.labelStack,
|
|
114
|
+
others = _objectWithoutProperties(_ref, _excluded);
|
|
115
|
+
return _objectSpread(_objectSpread({}, others), {}, {
|
|
116
|
+
labelStack: labelStack && optimizeLabelStack(labelStack, getReactUFOPayloadVersion(interaction.type))
|
|
117
|
+
});
|
|
118
|
+
}),
|
|
119
|
+
holdActive: interaction.hold3pActive ? _toConsumableArray(interaction.hold3pActive.values()) : [],
|
|
120
|
+
holdInfo: optimizeHoldInfo((_interaction$hold3pIn = interaction.hold3pInfo) !== null && _interaction$hold3pIn !== void 0 ? _interaction$hold3pIn : [], start, getReactUFOPayloadVersion(interaction.type)),
|
|
121
|
+
spans: optimizeSpans(filteredData.spans, start, getReactUFOPayloadVersion(interaction.type)),
|
|
122
|
+
requestInfo: optimizeRequestInfo(filteredData.requestInfo, start, getReactUFOPayloadVersion(interaction.type)),
|
|
123
|
+
customTimings: optimizeCustomTimings(filteredData.customTimings, start)
|
|
124
|
+
};
|
|
125
|
+
};
|
|
126
|
+
segments3p = !fg('platform_ufo_remove_deprecated_config_fields') && config.killswitchNestedSegments ? [] : filteredData.segments;
|
|
64
127
|
segmentTree = getReactUFOPayloadVersion(interaction.type) === '2.0.0' ? buildSegmentTree(segments3p.map(function (segment) {
|
|
65
128
|
return segment.labelStack;
|
|
66
129
|
})) : {};
|
|
@@ -103,15 +166,19 @@ function _createInteractionExtraLogPayload() {
|
|
|
103
166
|
start: Math.round(start),
|
|
104
167
|
'metric:ttai:3p': extraTTAI
|
|
105
168
|
}, finalVCMetrics), {}, {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
169
|
+
segments: getReactUFOPayloadVersion(interaction.type) === '2.0.0' ? segmentTree : getOldSegmentsLabelStack(segments3p, interaction.type),
|
|
170
|
+
marks: optimizeMarks(filteredData.marks, getReactUFOPayloadVersion(interaction.type)),
|
|
171
|
+
apdex: optimizeApdex(filteredData.apdex, getReactUFOPayloadVersion(interaction.type)),
|
|
172
|
+
reactProfilerTimings: optimizeReactProfilerTimings(filteredData.reactProfilerTimings, start, getReactUFOPayloadVersion(interaction.type)),
|
|
173
|
+
customData: filteredData.customData
|
|
174
|
+
}, getDetailedInteractionMetrics()),
|
|
175
|
+
'vc:effective:revision': mostRecentVCRevision
|
|
109
176
|
}
|
|
110
177
|
}
|
|
111
178
|
};
|
|
112
179
|
payload.attributes.properties['event:sizeInKb'] = getPayloadSize(payload.attributes.properties);
|
|
113
180
|
return _context.abrupt("return", payload);
|
|
114
|
-
case
|
|
181
|
+
case 29:
|
|
115
182
|
case "end":
|
|
116
183
|
return _context.stop();
|
|
117
184
|
}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
1
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
2
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
3
3
|
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
4
4
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
5
5
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
6
|
-
var _excluded = ["labelStack"
|
|
7
|
-
_excluded2 = ["stopTime", "labelStack"],
|
|
8
|
-
_excluded3 = ["labelStack"];
|
|
6
|
+
var _excluded = ["labelStack"];
|
|
9
7
|
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
10
8
|
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; }
|
|
11
9
|
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; }
|
|
@@ -24,7 +22,7 @@ import { getBm3Timings } from '../custom-timings';
|
|
|
24
22
|
import { getGlobalErrorCount } from '../global-error-handler';
|
|
25
23
|
import { getPageVisibilityState } from '../hidden-timing';
|
|
26
24
|
import * as initialPageLoadExtraTiming from '../initial-page-load-extra-timing';
|
|
27
|
-
import { interactionSpans as atlaskitInteractionSpans
|
|
25
|
+
import { interactionSpans as atlaskitInteractionSpans } from '../interaction-metrics';
|
|
28
26
|
import { createMemoryStateReport, createPressureStateReport } from '../machine-utilisation';
|
|
29
27
|
import * as resourceTiming from '../resource-timing';
|
|
30
28
|
import { filterResourceTimings } from '../resource-timing/common/utils/resource-timing-buffer';
|
|
@@ -35,6 +33,7 @@ import { createCriticalMetricsPayloads } from './critical-metrics-payload';
|
|
|
35
33
|
import { addPerformanceMeasures } from './utils/add-performance-measures';
|
|
36
34
|
import { getBrowserMetadataToLegacyFormat } from './utils/get-browser-metadata';
|
|
37
35
|
import getInteractionStatus from './utils/get-interaction-status';
|
|
36
|
+
import { getMoreAccuratePageVisibilityUpToTTAI } from './utils/get-more-accurate-page-visibility-up-to-ttai';
|
|
38
37
|
import { getNavigationMetricsToLegacyFormat } from './utils/get-navigation-metrics';
|
|
39
38
|
import getPageVisibilityUpToTTAI from './utils/get-page-visibility-up-to-ttai';
|
|
40
39
|
import { getPaintMetricsToLegacyFormat } from './utils/get-paint-metrics';
|
|
@@ -44,6 +43,14 @@ import getSSRDoneTimeValue from './utils/get-ssr-done-time-value';
|
|
|
44
43
|
import getSSRSuccessUtil from './utils/get-ssr-success';
|
|
45
44
|
import getTTAI from './utils/get-ttai';
|
|
46
45
|
import getVCMetrics from './utils/get-vc-metrics';
|
|
46
|
+
import { getVisibilityStateFromPerformance } from './utils/get-visibility-state-from-performance';
|
|
47
|
+
import { optimizeApdex } from './utils/optimize-apdex';
|
|
48
|
+
import { optimizeCustomTimings } from './utils/optimize-custom-timings';
|
|
49
|
+
import { optimizeHoldInfo } from './utils/optimize-hold-info';
|
|
50
|
+
import { optimizeMarks } from './utils/optimize-marks';
|
|
51
|
+
import { optimizeReactProfilerTimings } from './utils/optimize-react-profiler-timings';
|
|
52
|
+
import { optimizeRequestInfo } from './utils/optimize-request-info';
|
|
53
|
+
import { optimizeSpans } from './utils/optimize-spans';
|
|
47
54
|
function getUfoNameOverride(interaction) {
|
|
48
55
|
var ufoName = interaction.ufoName,
|
|
49
56
|
apdex = interaction.apdex;
|
|
@@ -90,35 +97,6 @@ function getPageVisibilityUpToTTI(interaction) {
|
|
|
90
97
|
var bm3EndTimeOrInteractionEndTime = getBm3EndTimeOrFallbackValue(interaction);
|
|
91
98
|
return getPageVisibilityState(start, bm3EndTimeOrInteractionEndTime);
|
|
92
99
|
}
|
|
93
|
-
function getVisibilityStateFromPerformance(stop) {
|
|
94
|
-
try {
|
|
95
|
-
var results = performance.getEntriesByType('visibility-state');
|
|
96
|
-
if (!results || results.length === 0) {
|
|
97
|
-
return null;
|
|
98
|
-
}
|
|
99
|
-
return results.reduce(function () {
|
|
100
|
-
var acc = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
|
101
|
-
var _ref = arguments.length > 1 ? arguments[1] : undefined,
|
|
102
|
-
name = _ref.name,
|
|
103
|
-
startTime = _ref.startTime;
|
|
104
|
-
if (startTime > stop) {
|
|
105
|
-
return acc;
|
|
106
|
-
}
|
|
107
|
-
if (acc === null && name === null) {
|
|
108
|
-
return null;
|
|
109
|
-
}
|
|
110
|
-
if (acc === null) {
|
|
111
|
-
return name;
|
|
112
|
-
}
|
|
113
|
-
if (acc !== name) {
|
|
114
|
-
return 'mixed';
|
|
115
|
-
}
|
|
116
|
-
return acc;
|
|
117
|
-
}, null);
|
|
118
|
-
} catch (e) {
|
|
119
|
-
return null;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
100
|
function getMoreAccuratePageVisibilityUpToTTI(interaction) {
|
|
123
101
|
var old = getPageVisibilityUpToTTI(interaction);
|
|
124
102
|
var tti = getEarliestLegacyStopTime(interaction, []);
|
|
@@ -134,17 +112,6 @@ function getMoreAccuratePageVisibilityUpToTTI(interaction) {
|
|
|
134
112
|
}
|
|
135
113
|
return old;
|
|
136
114
|
}
|
|
137
|
-
export function getMoreAccuratePageVisibilityUpToTTAI(interaction) {
|
|
138
|
-
var old = getPageVisibilityUpToTTAI(interaction);
|
|
139
|
-
var buffered = getVisibilityStateFromPerformance(interaction.end);
|
|
140
|
-
if (!buffered) {
|
|
141
|
-
return old;
|
|
142
|
-
}
|
|
143
|
-
if (buffered !== old) {
|
|
144
|
-
return 'mixed';
|
|
145
|
-
}
|
|
146
|
-
return old;
|
|
147
|
-
}
|
|
148
115
|
function getResourceTimings(start, end) {
|
|
149
116
|
var _resourceTiming$getRe;
|
|
150
117
|
return (_resourceTiming$getRe = resourceTiming.getResourceTimings(start, end)) !== null && _resourceTiming$getRe !== void 0 ? _resourceTiming$getRe : undefined;
|
|
@@ -247,10 +214,10 @@ function optimizeCustomData(interaction) {
|
|
|
247
214
|
var customData = interaction.customData,
|
|
248
215
|
cohortingCustomData = interaction.cohortingCustomData,
|
|
249
216
|
legacyMetrics = interaction.legacyMetrics;
|
|
250
|
-
var customDataMap = customData.reduce(function (result,
|
|
217
|
+
var customDataMap = customData.reduce(function (result, _ref) {
|
|
251
218
|
var _result$get$data, _result$get;
|
|
252
|
-
var labelStack =
|
|
253
|
-
data =
|
|
219
|
+
var labelStack = _ref.labelStack,
|
|
220
|
+
data = _ref.data;
|
|
254
221
|
var label = stringifyLabelStackFully(labelStack);
|
|
255
222
|
var value = (_result$get$data = (_result$get = result.get(label)) === null || _result$get === void 0 ? void 0 : _result$get.data) !== null && _result$get$data !== void 0 ? _result$get$data : {};
|
|
256
223
|
result.set(label, {
|
|
@@ -292,48 +259,6 @@ function optimizeCustomData(interaction) {
|
|
|
292
259
|
}
|
|
293
260
|
return _toConsumableArray(customDataMap.values());
|
|
294
261
|
}
|
|
295
|
-
function optimizeReactProfilerTimings(reactProfilerTimings, interactionStart, reactUFOVersion) {
|
|
296
|
-
var reactProfilerTimingsMap = reactProfilerTimings.reduce(function (result, _ref3) {
|
|
297
|
-
var labelStack = _ref3.labelStack,
|
|
298
|
-
startTime = _ref3.startTime,
|
|
299
|
-
commitTime = _ref3.commitTime,
|
|
300
|
-
actualDuration = _ref3.actualDuration,
|
|
301
|
-
type = _ref3.type;
|
|
302
|
-
if (labelStack && startTime >= interactionStart) {
|
|
303
|
-
var label = stringifyLabelStackFully(labelStack);
|
|
304
|
-
var start = Math.round(startTime);
|
|
305
|
-
var end = Math.round(commitTime);
|
|
306
|
-
var timing = result.get(label) || {
|
|
307
|
-
labelStack: optimizeLabelStack(labelStack, reactUFOVersion),
|
|
308
|
-
startTime: start,
|
|
309
|
-
endTime: end,
|
|
310
|
-
mountCount: 0,
|
|
311
|
-
rerenderCount: 0,
|
|
312
|
-
renderDuration: 0
|
|
313
|
-
};
|
|
314
|
-
if (start < timing.startTime) {
|
|
315
|
-
timing.startTime = start;
|
|
316
|
-
}
|
|
317
|
-
if (end > timing.endTime) {
|
|
318
|
-
timing.endTime = end;
|
|
319
|
-
}
|
|
320
|
-
if (type === 'mount') {
|
|
321
|
-
timing.mountCount += 1;
|
|
322
|
-
}
|
|
323
|
-
if (type === 'update') {
|
|
324
|
-
timing.rerenderCount += 1;
|
|
325
|
-
}
|
|
326
|
-
if (segmentUnmountCache.has(label) && fg('platform_ufo_segment_unmount_count')) {
|
|
327
|
-
timing.unmountCount = segmentUnmountCache.get(label) || 0;
|
|
328
|
-
segmentUnmountCache.delete(label);
|
|
329
|
-
}
|
|
330
|
-
timing.renderDuration += Math.round(actualDuration);
|
|
331
|
-
result.set(label, timing);
|
|
332
|
-
}
|
|
333
|
-
return result;
|
|
334
|
-
}, new Map());
|
|
335
|
-
return _toConsumableArray(reactProfilerTimingsMap.values());
|
|
336
|
-
}
|
|
337
262
|
function optimizeRedirects(redirects, interactionStart) {
|
|
338
263
|
var lastRedirectTime = interactionStart;
|
|
339
264
|
var updatedRedirects = redirects.sort(function (a, b) {
|
|
@@ -355,121 +280,6 @@ function optimizeRedirects(redirects, interactionStart) {
|
|
|
355
280
|
}, []);
|
|
356
281
|
return updatedRedirects;
|
|
357
282
|
}
|
|
358
|
-
export function optimizeHoldInfo(holdInfo, interactionStart, reactUFOVersion) {
|
|
359
|
-
var holdInfoMap = holdInfo.reduce(function (result, hold) {
|
|
360
|
-
var labelStack = hold.labelStack,
|
|
361
|
-
name = hold.name,
|
|
362
|
-
start = hold.start,
|
|
363
|
-
end = hold.end,
|
|
364
|
-
ignoreOnSubmit = hold.ignoreOnSubmit;
|
|
365
|
-
if (labelStack && !ignoreOnSubmit && start >= interactionStart) {
|
|
366
|
-
var label = stringifyLabelStackFully([].concat(_toConsumableArray(labelStack), [{
|
|
367
|
-
name: name
|
|
368
|
-
}]));
|
|
369
|
-
var startTime = Math.round(start);
|
|
370
|
-
var endTime = Math.round(end);
|
|
371
|
-
var timing = result.get(label) || {
|
|
372
|
-
labelStack: optimizeLabelStack([].concat(_toConsumableArray(labelStack), [{
|
|
373
|
-
name: name
|
|
374
|
-
}]), reactUFOVersion),
|
|
375
|
-
startTime: startTime,
|
|
376
|
-
endTime: endTime
|
|
377
|
-
};
|
|
378
|
-
if (startTime < timing.startTime) {
|
|
379
|
-
timing.startTime = startTime;
|
|
380
|
-
}
|
|
381
|
-
if (endTime > timing.endTime) {
|
|
382
|
-
timing.endTime = endTime;
|
|
383
|
-
}
|
|
384
|
-
result.set(label, timing);
|
|
385
|
-
}
|
|
386
|
-
return result;
|
|
387
|
-
}, new Map());
|
|
388
|
-
return _toConsumableArray(holdInfoMap.values());
|
|
389
|
-
}
|
|
390
|
-
function optimizeSpans(spans, interactionStart, reactUFOVersion) {
|
|
391
|
-
var updatedSpans = spans.reduce(function (result, span) {
|
|
392
|
-
var labelStack = span.labelStack,
|
|
393
|
-
type = span.type,
|
|
394
|
-
name = span.name,
|
|
395
|
-
start = span.start,
|
|
396
|
-
end = span.end;
|
|
397
|
-
if (labelStack && start >= interactionStart) {
|
|
398
|
-
result.push({
|
|
399
|
-
labelStack: optimizeLabelStack([].concat(_toConsumableArray(labelStack), [{
|
|
400
|
-
name: name
|
|
401
|
-
}]), reactUFOVersion),
|
|
402
|
-
startTime: Math.round(start),
|
|
403
|
-
endTime: Math.round(end),
|
|
404
|
-
type: type
|
|
405
|
-
});
|
|
406
|
-
}
|
|
407
|
-
return result;
|
|
408
|
-
}, []);
|
|
409
|
-
return updatedSpans;
|
|
410
|
-
}
|
|
411
|
-
function optimizeRequestInfo(requestInfo, interactionStart, reactUFOVersion) {
|
|
412
|
-
var updatedRequestInfo = requestInfo.reduce(function (result, reqInfo) {
|
|
413
|
-
var labelStack = reqInfo.labelStack,
|
|
414
|
-
name = reqInfo.name,
|
|
415
|
-
start = reqInfo.start,
|
|
416
|
-
end = reqInfo.end,
|
|
417
|
-
networkStart = reqInfo.networkStart,
|
|
418
|
-
networkComplete = reqInfo.networkComplete;
|
|
419
|
-
var startTime = networkStart !== null && networkStart !== void 0 ? networkStart : start;
|
|
420
|
-
var endTime = networkComplete !== null && networkComplete !== void 0 ? networkComplete : end;
|
|
421
|
-
if (labelStack && start >= interactionStart && endTime) {
|
|
422
|
-
result.push({
|
|
423
|
-
labelStack: optimizeLabelStack([].concat(_toConsumableArray(labelStack), [{
|
|
424
|
-
name: name
|
|
425
|
-
}]), reactUFOVersion),
|
|
426
|
-
startTime: Math.round(startTime),
|
|
427
|
-
endTime: Math.round(endTime)
|
|
428
|
-
});
|
|
429
|
-
}
|
|
430
|
-
return result;
|
|
431
|
-
}, []);
|
|
432
|
-
return updatedRequestInfo;
|
|
433
|
-
}
|
|
434
|
-
function optimizeCustomTimings(customTimings, interactionStart) {
|
|
435
|
-
return customTimings.reduce(function (result, item) {
|
|
436
|
-
Object.keys(item.data).forEach(function (key) {
|
|
437
|
-
if (item.data[key].startTime >= interactionStart) {
|
|
438
|
-
result.push({
|
|
439
|
-
labelStack: [{
|
|
440
|
-
n: key
|
|
441
|
-
}],
|
|
442
|
-
startTime: Math.round(item.data[key].startTime),
|
|
443
|
-
endTime: Math.round(item.data[key].endTime)
|
|
444
|
-
});
|
|
445
|
-
}
|
|
446
|
-
});
|
|
447
|
-
return result;
|
|
448
|
-
}, []);
|
|
449
|
-
}
|
|
450
|
-
function optimizeMarks(marks, reactUFOVersion) {
|
|
451
|
-
return marks.map(function (_ref4) {
|
|
452
|
-
var labelStack = _ref4.labelStack,
|
|
453
|
-
time = _ref4.time,
|
|
454
|
-
others = _objectWithoutProperties(_ref4, _excluded);
|
|
455
|
-
return _objectSpread(_objectSpread({}, others), {}, {
|
|
456
|
-
labelStack: labelStack && optimizeLabelStack(labelStack, reactUFOVersion),
|
|
457
|
-
time: Math.round(time)
|
|
458
|
-
});
|
|
459
|
-
});
|
|
460
|
-
}
|
|
461
|
-
function optimizeApdex(apdex, reactUFOVersion) {
|
|
462
|
-
return apdex.map(function (_ref5) {
|
|
463
|
-
var stopTime = _ref5.stopTime,
|
|
464
|
-
labelStack = _ref5.labelStack,
|
|
465
|
-
others = _objectWithoutProperties(_ref5, _excluded2);
|
|
466
|
-
return _objectSpread(_objectSpread({}, others), {}, {
|
|
467
|
-
stopTime: Math.round(stopTime)
|
|
468
|
-
}, labelStack ? {
|
|
469
|
-
labelStack: optimizeLabelStack(labelStack, reactUFOVersion)
|
|
470
|
-
} : {});
|
|
471
|
-
});
|
|
472
|
-
}
|
|
473
283
|
function objectToArray() {
|
|
474
284
|
var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
475
285
|
return Object.keys(obj).reduce(function (result, key) {
|
|
@@ -643,9 +453,9 @@ function _createInteractionMetricsPayload() {
|
|
|
643
453
|
var spans = [].concat(_toConsumableArray(interaction.spans), _toConsumableArray(atlaskitInteractionSpans));
|
|
644
454
|
atlaskitInteractionSpans.length = 0;
|
|
645
455
|
return {
|
|
646
|
-
errors: interaction.errors.map(function (
|
|
647
|
-
var labelStack =
|
|
648
|
-
others = _objectWithoutProperties(
|
|
456
|
+
errors: interaction.errors.map(function (_ref2) {
|
|
457
|
+
var labelStack = _ref2.labelStack,
|
|
458
|
+
others = _objectWithoutProperties(_ref2, _excluded);
|
|
649
459
|
return _objectSpread(_objectSpread({}, others), {}, {
|
|
650
460
|
labelStack: labelStack && optimizeLabelStack(labelStack, getReactUFOPayloadVersion(interaction.type))
|
|
651
461
|
});
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import getPageVisibilityUpToTTAI from './get-page-visibility-up-to-ttai';
|
|
2
|
+
import { getVisibilityStateFromPerformance } from './get-visibility-state-from-performance';
|
|
3
|
+
export function getMoreAccuratePageVisibilityUpToTTAI(interaction) {
|
|
4
|
+
var old = getPageVisibilityUpToTTAI(interaction);
|
|
5
|
+
var buffered = getVisibilityStateFromPerformance(interaction.end);
|
|
6
|
+
if (!buffered) {
|
|
7
|
+
return old;
|
|
8
|
+
}
|
|
9
|
+
if (buffered !== old) {
|
|
10
|
+
return 'mixed';
|
|
11
|
+
}
|
|
12
|
+
return old;
|
|
13
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export function getVisibilityStateFromPerformance(stop) {
|
|
2
|
+
try {
|
|
3
|
+
var results = performance.getEntriesByType('visibility-state');
|
|
4
|
+
if (!results || results.length === 0) {
|
|
5
|
+
return null;
|
|
6
|
+
}
|
|
7
|
+
return results.reduce(function () {
|
|
8
|
+
var acc = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
|
9
|
+
var _ref = arguments.length > 1 ? arguments[1] : undefined,
|
|
10
|
+
name = _ref.name,
|
|
11
|
+
startTime = _ref.startTime;
|
|
12
|
+
if (startTime > stop) {
|
|
13
|
+
return acc;
|
|
14
|
+
}
|
|
15
|
+
if (acc === null && name === null) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
if (acc === null) {
|
|
19
|
+
return name;
|
|
20
|
+
}
|
|
21
|
+
if (acc !== name) {
|
|
22
|
+
return 'mixed';
|
|
23
|
+
}
|
|
24
|
+
return acc;
|
|
25
|
+
}, null);
|
|
26
|
+
} catch (e) {
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
+
var _excluded = ["stopTime", "labelStack"];
|
|
4
|
+
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
|
+
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
|
+
import { optimizeLabelStack } from '../common/utils';
|
|
7
|
+
export function optimizeApdex(apdex, reactUFOVersion) {
|
|
8
|
+
return apdex.map(function (_ref) {
|
|
9
|
+
var stopTime = _ref.stopTime,
|
|
10
|
+
labelStack = _ref.labelStack,
|
|
11
|
+
others = _objectWithoutProperties(_ref, _excluded);
|
|
12
|
+
return _objectSpread(_objectSpread({}, others), {}, {
|
|
13
|
+
stopTime: Math.round(stopTime)
|
|
14
|
+
}, labelStack ? {
|
|
15
|
+
labelStack: optimizeLabelStack(labelStack, reactUFOVersion)
|
|
16
|
+
} : {});
|
|
17
|
+
});
|
|
18
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export function optimizeCustomTimings(customTimings, interactionStart) {
|
|
2
|
+
return customTimings.reduce(function (result, item) {
|
|
3
|
+
Object.keys(item.data).forEach(function (key) {
|
|
4
|
+
if (item.data[key].startTime >= interactionStart) {
|
|
5
|
+
result.push({
|
|
6
|
+
labelStack: [{
|
|
7
|
+
n: key
|
|
8
|
+
}],
|
|
9
|
+
startTime: Math.round(item.data[key].startTime),
|
|
10
|
+
endTime: Math.round(item.data[key].endTime)
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
return result;
|
|
15
|
+
}, []);
|
|
16
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
2
|
+
import { optimizeLabelStack, stringifyLabelStackFully } from '../common/utils';
|
|
3
|
+
export function optimizeHoldInfo(holdInfo, interactionStart, reactUFOVersion) {
|
|
4
|
+
var holdInfoMap = holdInfo.reduce(function (result, hold) {
|
|
5
|
+
var labelStack = hold.labelStack,
|
|
6
|
+
name = hold.name,
|
|
7
|
+
start = hold.start,
|
|
8
|
+
end = hold.end,
|
|
9
|
+
ignoreOnSubmit = hold.ignoreOnSubmit;
|
|
10
|
+
if (labelStack && !ignoreOnSubmit && start >= interactionStart) {
|
|
11
|
+
var label = stringifyLabelStackFully([].concat(_toConsumableArray(labelStack), [{
|
|
12
|
+
name: name
|
|
13
|
+
}]));
|
|
14
|
+
var startTime = Math.round(start);
|
|
15
|
+
var endTime = Math.round(end);
|
|
16
|
+
var timing = result.get(label) || {
|
|
17
|
+
labelStack: optimizeLabelStack([].concat(_toConsumableArray(labelStack), [{
|
|
18
|
+
name: name
|
|
19
|
+
}]), reactUFOVersion),
|
|
20
|
+
startTime: startTime,
|
|
21
|
+
endTime: endTime
|
|
22
|
+
};
|
|
23
|
+
if (startTime < timing.startTime) {
|
|
24
|
+
timing.startTime = startTime;
|
|
25
|
+
}
|
|
26
|
+
if (endTime > timing.endTime) {
|
|
27
|
+
timing.endTime = endTime;
|
|
28
|
+
}
|
|
29
|
+
result.set(label, timing);
|
|
30
|
+
}
|
|
31
|
+
return result;
|
|
32
|
+
}, new Map());
|
|
33
|
+
return _toConsumableArray(holdInfoMap.values());
|
|
34
|
+
}
|