@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.
Files changed (60) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/cjs/create-interaction-extra-metrics-payload/index.js +82 -15
  3. package/dist/cjs/create-payload/index.js +26 -218
  4. package/dist/cjs/create-payload/utils/get-more-accurate-page-visibility-up-to-ttai.js +20 -0
  5. package/dist/cjs/create-payload/utils/get-visibility-state-from-performance.js +35 -0
  6. package/dist/cjs/create-payload/utils/optimize-apdex.js +25 -0
  7. package/dist/cjs/create-payload/utils/optimize-custom-timings.js +22 -0
  8. package/dist/cjs/create-payload/utils/optimize-hold-info.js +41 -0
  9. package/dist/cjs/create-payload/utils/optimize-marks.js +24 -0
  10. package/dist/cjs/create-payload/utils/optimize-react-profiler-timings.js +53 -0
  11. package/dist/cjs/create-payload/utils/optimize-request-info.js +32 -0
  12. package/dist/cjs/create-payload/utils/optimize-spans.js +30 -0
  13. package/dist/cjs/interaction-metrics-init/index.js +1 -1
  14. package/dist/es2019/create-interaction-extra-metrics-payload/index.js +62 -9
  15. package/dist/es2019/create-payload/index.js +10 -205
  16. package/dist/es2019/create-payload/utils/get-more-accurate-page-visibility-up-to-ttai.js +13 -0
  17. package/dist/es2019/create-payload/utils/get-visibility-state-from-performance.js +28 -0
  18. package/dist/es2019/create-payload/utils/optimize-apdex.js +14 -0
  19. package/dist/es2019/create-payload/utils/optimize-custom-timings.js +16 -0
  20. package/dist/es2019/create-payload/utils/optimize-hold-info.js +35 -0
  21. package/dist/es2019/create-payload/utils/optimize-marks.js +12 -0
  22. package/dist/es2019/create-payload/utils/optimize-react-profiler-timings.js +46 -0
  23. package/dist/es2019/create-payload/utils/optimize-request-info.js +26 -0
  24. package/dist/es2019/create-payload/utils/optimize-spans.js +24 -0
  25. package/dist/es2019/interaction-metrics-init/index.js +1 -1
  26. package/dist/esm/create-interaction-extra-metrics-payload/index.js +83 -16
  27. package/dist/esm/create-payload/index.js +18 -208
  28. package/dist/esm/create-payload/utils/get-more-accurate-page-visibility-up-to-ttai.js +13 -0
  29. package/dist/esm/create-payload/utils/get-visibility-state-from-performance.js +29 -0
  30. package/dist/esm/create-payload/utils/optimize-apdex.js +18 -0
  31. package/dist/esm/create-payload/utils/optimize-custom-timings.js +16 -0
  32. package/dist/esm/create-payload/utils/optimize-hold-info.js +34 -0
  33. package/dist/esm/create-payload/utils/optimize-marks.js +17 -0
  34. package/dist/esm/create-payload/utils/optimize-react-profiler-timings.js +46 -0
  35. package/dist/esm/create-payload/utils/optimize-request-info.js +25 -0
  36. package/dist/esm/create-payload/utils/optimize-spans.js +23 -0
  37. package/dist/esm/interaction-metrics-init/index.js +1 -1
  38. package/dist/types/create-interaction-extra-metrics-payload/index.d.ts +56 -0
  39. package/dist/types/create-payload/index.d.ts +0 -3
  40. package/dist/types/create-payload/utils/get-more-accurate-page-visibility-up-to-ttai.d.ts +2 -0
  41. package/dist/types/create-payload/utils/get-visibility-state-from-performance.d.ts +1 -0
  42. package/dist/types/create-payload/utils/optimize-apdex.d.ts +12 -0
  43. package/dist/types/create-payload/utils/optimize-custom-timings.d.ts +7 -0
  44. package/dist/types/create-payload/utils/optimize-hold-info.d.ts +3 -0
  45. package/dist/types/create-payload/utils/optimize-marks.d.ts +12 -0
  46. package/dist/types/create-payload/utils/optimize-react-profiler-timings.d.ts +3 -0
  47. package/dist/types/create-payload/utils/optimize-request-info.d.ts +8 -0
  48. package/dist/types/create-payload/utils/optimize-spans.d.ts +9 -0
  49. package/dist/types-ts4.5/create-interaction-extra-metrics-payload/index.d.ts +56 -0
  50. package/dist/types-ts4.5/create-payload/index.d.ts +0 -3
  51. package/dist/types-ts4.5/create-payload/utils/get-more-accurate-page-visibility-up-to-ttai.d.ts +2 -0
  52. package/dist/types-ts4.5/create-payload/utils/get-visibility-state-from-performance.d.ts +1 -0
  53. package/dist/types-ts4.5/create-payload/utils/optimize-apdex.d.ts +12 -0
  54. package/dist/types-ts4.5/create-payload/utils/optimize-custom-timings.d.ts +7 -0
  55. package/dist/types-ts4.5/create-payload/utils/optimize-hold-info.d.ts +3 -0
  56. package/dist/types-ts4.5/create-payload/utils/optimize-marks.d.ts +12 -0
  57. package/dist/types-ts4.5/create-payload/utils/optimize-react-profiler-timings.d.ts +3 -0
  58. package/dist/types-ts4.5/create-payload/utils/optimize-request-info.d.ts +8 -0
  59. package/dist/types-ts4.5/create-payload/utils/optimize-spans.d.ts +9 -0
  60. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # @atlaskit/ufo-interaction-ignore
2
2
 
3
+ ## 4.7.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`8f8b18e77c187`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/8f8b18e77c187) -
8
+ Add more timings info into interaction-extra-metrics
9
+
3
10
  ## 4.7.0
4
11
 
5
12
  ### Minor Changes
@@ -7,17 +7,28 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.default = void 0;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
12
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
11
13
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
12
14
  var _coinflip = _interopRequireDefault(require("../coinflip"));
13
15
  var _config = require("../config");
14
- var _createPayload = require("../create-payload");
15
16
  var _utils = require("../create-payload/common/utils");
17
+ var _getMoreAccuratePageVisibilityUpToTtai = require("../create-payload/utils/get-more-accurate-page-visibility-up-to-ttai");
16
18
  var _getPageVisibilityUpToTtai = _interopRequireDefault(require("../create-payload/utils/get-page-visibility-up-to-ttai"));
17
19
  var _getPayloadSize = _interopRequireDefault(require("../create-payload/utils/get-payload-size"));
18
20
  var _getReactUfoPayloadVersion = require("../create-payload/utils/get-react-ufo-payload-version");
19
21
  var _getTtai = _interopRequireDefault(require("../create-payload/utils/get-ttai"));
20
22
  var _getVcMetrics = _interopRequireDefault(require("../create-payload/utils/get-vc-metrics"));
23
+ var _optimizeApdex = require("../create-payload/utils/optimize-apdex");
24
+ var _optimizeCustomTimings = require("../create-payload/utils/optimize-custom-timings");
25
+ var _optimizeHoldInfo = require("../create-payload/utils/optimize-hold-info");
26
+ var _optimizeMarks = require("../create-payload/utils/optimize-marks");
27
+ var _optimizeReactProfilerTimings = require("../create-payload/utils/optimize-react-profiler-timings");
28
+ var _optimizeRequestInfo = require("../create-payload/utils/optimize-request-info");
29
+ var _optimizeSpans = require("../create-payload/utils/optimize-spans");
30
+ var _interactionMetrics = require("../interaction-metrics");
31
+ var _excluded = ["labelStack"];
21
32
  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; }
22
33
  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; }
23
34
  function createInteractionExtraLogPayload(_x, _x2) {
@@ -25,8 +36,8 @@ function createInteractionExtraLogPayload(_x, _x2) {
25
36
  }
26
37
  function _createInteractionExtraLogPayload() {
27
38
  _createInteractionExtraLogPayload = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(interactionId, interaction) {
28
- var _getTTAI, _interaction$hold3pIn, _window$location;
29
- var config, end, start, ufoName, rate, type, abortReason, routeName, previousInteractionName, isPreviousInteractionAborted, abortedByInteractionName, knownSegments, sanitisedUfoName, configRate, pageVisibilityAtTTAI, isPageLoad, calculatePageVisibilityFromTheStartOfPageLoad, moreAccuratePageVisibilityAtTTAI, extraTTAI, newUFOName, finalVCMetrics, holdInfo, segments3p, segmentTree, payload;
39
+ var _getTTAI, _getMostRecentVCRevis, _window$location;
40
+ 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;
30
41
  return _regenerator.default.wrap(function _callee$(_context) {
31
42
  while (1) switch (_context.prev = _context.next) {
32
43
  case 0:
@@ -55,19 +66,71 @@ function _createInteractionExtraLogPayload() {
55
66
  return _context.abrupt("return", null);
56
67
  case 12:
57
68
  calculatePageVisibilityFromTheStartOfPageLoad = config.enableBetterPageVisibilityApi && isPageLoad;
58
- moreAccuratePageVisibilityAtTTAI = calculatePageVisibilityFromTheStartOfPageLoad ? (0, _createPayload.getMoreAccuratePageVisibilityUpToTTAI)(interaction) : null;
69
+ moreAccuratePageVisibilityAtTTAI = calculatePageVisibilityFromTheStartOfPageLoad ? (0, _getMoreAccuratePageVisibilityUpToTtai.getMoreAccuratePageVisibilityUpToTTAI)(interaction) : null;
59
70
  extraTTAI = (_getTTAI = (0, _getTtai.default)(interaction)) !== null && _getTTAI !== void 0 ? _getTTAI : undefined;
60
71
  newUFOName = (0, _utils.sanitizeUfoName)(ufoName);
61
- _context.next = 18;
72
+ mostRecentVCRevision = (_getMostRecentVCRevis = (0, _config.getMostRecentVCRevision)(newUFOName)) !== null && _getMostRecentVCRevis !== void 0 ? _getMostRecentVCRevis : _config.DEFAULT_TTVC_REVISION;
73
+ _context.next = 19;
62
74
  return (0, _getVcMetrics.default)(interaction, true);
63
- case 18:
75
+ case 19:
64
76
  finalVCMetrics = _context.sent;
65
- holdInfo = (0, _createPayload.optimizeHoldInfo)((_interaction$hold3pIn = interaction.hold3pInfo) !== null && _interaction$hold3pIn !== void 0 ? _interaction$hold3pIn : [], start, (0, _getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type));
66
- segments3p = !(0, _platformFeatureFlags.fg)('platform_ufo_remove_deprecated_config_fields') && config.killswitchNestedSegments ? [] : knownSegments.filter(function (knownSegment) {
67
- return knownSegment.labelStack.some(function (entry) {
77
+ // Helper function to check if labelStack contains third-party type
78
+ isThirdParty = function isThirdParty(labelStack) {
79
+ var _labelStack$some;
80
+ return (_labelStack$some = labelStack === null || labelStack === void 0 ? void 0 : labelStack.some(function (entry) {
68
81
  return 'type' in entry && entry.type === 'third-party';
69
- });
70
- });
82
+ })) !== null && _labelStack$some !== void 0 ? _labelStack$some : false;
83
+ }; // Pre-filter 3p data
84
+ filteredData = {
85
+ errors: interaction.errors.filter(function (error) {
86
+ return isThirdParty(error.labelStack);
87
+ }),
88
+ spans: [].concat((0, _toConsumableArray2.default)(interaction.spans), (0, _toConsumableArray2.default)(_interactionMetrics.interactionSpans)).filter(function (span) {
89
+ return isThirdParty(span.labelStack);
90
+ }),
91
+ requestInfo: interaction.requestInfo.filter(function (req) {
92
+ return isThirdParty(req.labelStack);
93
+ }),
94
+ customTimings: interaction.customTimings.filter(function (timing) {
95
+ return isThirdParty(timing.labelStack);
96
+ }),
97
+ apdex: interaction.apdex.filter(function (apdex) {
98
+ return isThirdParty(apdex.labelStack);
99
+ }),
100
+ reactProfilerTimings: interaction.reactProfilerTimings.filter(function (timing) {
101
+ return isThirdParty(timing.labelStack);
102
+ }),
103
+ customData: interaction.customData.filter(function (data) {
104
+ return isThirdParty(data.labelStack);
105
+ }),
106
+ segments: knownSegments.filter(function (segment) {
107
+ return isThirdParty(segment.labelStack);
108
+ }),
109
+ marks: interaction.marks.filter(function (mark) {
110
+ return isThirdParty(mark.labelStack);
111
+ })
112
+ }; // Clear atlaskit spans after filtering
113
+ _interactionMetrics.interactionSpans.length = 0;
114
+
115
+ // Detailed payload
116
+ getDetailedInteractionMetrics = function getDetailedInteractionMetrics() {
117
+ var _interaction$hold3pIn;
118
+ return {
119
+ errors: filteredData.errors.map(function (_ref) {
120
+ var labelStack = _ref.labelStack,
121
+ others = (0, _objectWithoutProperties2.default)(_ref, _excluded);
122
+ return _objectSpread(_objectSpread({}, others), {}, {
123
+ labelStack: labelStack && (0, _utils.optimizeLabelStack)(labelStack, (0, _getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type))
124
+ });
125
+ }),
126
+ holdActive: interaction.hold3pActive ? (0, _toConsumableArray2.default)(interaction.hold3pActive.values()) : [],
127
+ holdInfo: (0, _optimizeHoldInfo.optimizeHoldInfo)((_interaction$hold3pIn = interaction.hold3pInfo) !== null && _interaction$hold3pIn !== void 0 ? _interaction$hold3pIn : [], start, (0, _getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type)),
128
+ spans: (0, _optimizeSpans.optimizeSpans)(filteredData.spans, start, (0, _getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type)),
129
+ requestInfo: (0, _optimizeRequestInfo.optimizeRequestInfo)(filteredData.requestInfo, start, (0, _getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type)),
130
+ customTimings: (0, _optimizeCustomTimings.optimizeCustomTimings)(filteredData.customTimings, start)
131
+ };
132
+ };
133
+ segments3p = !(0, _platformFeatureFlags.fg)('platform_ufo_remove_deprecated_config_fields') && config.killswitchNestedSegments ? [] : filteredData.segments;
71
134
  segmentTree = (0, _getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type) === '2.0.0' ? (0, _utils.buildSegmentTree)(segments3p.map(function (segment) {
72
135
  return segment.labelStack;
73
136
  })) : {};
@@ -110,15 +173,19 @@ function _createInteractionExtraLogPayload() {
110
173
  start: Math.round(start),
111
174
  'metric:ttai:3p': extraTTAI
112
175
  }, finalVCMetrics), {}, {
113
- holdInfo: holdInfo,
114
- segments: (0, _getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type) === '2.0.0' ? segmentTree : (0, _utils.getOldSegmentsLabelStack)(segments3p, interaction.type)
115
- })
176
+ segments: (0, _getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type) === '2.0.0' ? segmentTree : (0, _utils.getOldSegmentsLabelStack)(segments3p, interaction.type),
177
+ marks: (0, _optimizeMarks.optimizeMarks)(filteredData.marks, (0, _getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type)),
178
+ apdex: (0, _optimizeApdex.optimizeApdex)(filteredData.apdex, (0, _getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type)),
179
+ reactProfilerTimings: (0, _optimizeReactProfilerTimings.optimizeReactProfilerTimings)(filteredData.reactProfilerTimings, start, (0, _getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type)),
180
+ customData: filteredData.customData
181
+ }, getDetailedInteractionMetrics()),
182
+ 'vc:effective:revision': mostRecentVCRevision
116
183
  }
117
184
  }
118
185
  };
119
186
  payload.attributes.properties['event:sizeInKb'] = (0, _getPayloadSize.default)(payload.attributes.properties);
120
187
  return _context.abrupt("return", payload);
121
- case 25:
188
+ case 29:
122
189
  case "end":
123
190
  return _context.stop();
124
191
  }
@@ -7,11 +7,9 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.createExperimentalMetricsPayload = createExperimentalMetricsPayload;
9
9
  exports.createPayloads = createPayloads;
10
- exports.getMoreAccuratePageVisibilityUpToTTAI = getMoreAccuratePageVisibilityUpToTTAI;
11
- exports.optimizeHoldInfo = optimizeHoldInfo;
12
10
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
13
- var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
14
11
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
12
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
15
13
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
16
14
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
17
15
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
@@ -38,6 +36,7 @@ var _criticalMetricsPayload = require("./critical-metrics-payload");
38
36
  var _addPerformanceMeasures = require("./utils/add-performance-measures");
39
37
  var _getBrowserMetadata = require("./utils/get-browser-metadata");
40
38
  var _getInteractionStatus = _interopRequireDefault(require("./utils/get-interaction-status"));
39
+ var _getMoreAccuratePageVisibilityUpToTtai = require("./utils/get-more-accurate-page-visibility-up-to-ttai");
41
40
  var _getNavigationMetrics = require("./utils/get-navigation-metrics");
42
41
  var _getPageVisibilityUpToTtai = _interopRequireDefault(require("./utils/get-page-visibility-up-to-ttai"));
43
42
  var _getPaintMetrics = require("./utils/get-paint-metrics");
@@ -47,9 +46,15 @@ var _getSsrDoneTimeValue = _interopRequireDefault(require("./utils/get-ssr-done-
47
46
  var _getSsrSuccess = _interopRequireDefault(require("./utils/get-ssr-success"));
48
47
  var _getTtai = _interopRequireDefault(require("./utils/get-ttai"));
49
48
  var _getVcMetrics = _interopRequireDefault(require("./utils/get-vc-metrics"));
50
- var _excluded = ["labelStack", "time"],
51
- _excluded2 = ["stopTime", "labelStack"],
52
- _excluded3 = ["labelStack"];
49
+ var _getVisibilityStateFromPerformance = require("./utils/get-visibility-state-from-performance");
50
+ var _optimizeApdex = require("./utils/optimize-apdex");
51
+ var _optimizeCustomTimings = require("./utils/optimize-custom-timings");
52
+ var _optimizeHoldInfo = require("./utils/optimize-hold-info");
53
+ var _optimizeMarks = require("./utils/optimize-marks");
54
+ var _optimizeReactProfilerTimings = require("./utils/optimize-react-profiler-timings");
55
+ var _optimizeRequestInfo = require("./utils/optimize-request-info");
56
+ var _optimizeSpans = require("./utils/optimize-spans");
57
+ var _excluded = ["labelStack"];
53
58
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
54
59
  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; }
55
60
  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; } // Import common utilities
@@ -99,53 +104,13 @@ function getPageVisibilityUpToTTI(interaction) {
99
104
  var bm3EndTimeOrInteractionEndTime = getBm3EndTimeOrFallbackValue(interaction);
100
105
  return (0, _hiddenTiming.getPageVisibilityState)(start, bm3EndTimeOrInteractionEndTime);
101
106
  }
102
- function getVisibilityStateFromPerformance(stop) {
103
- try {
104
- var results = performance.getEntriesByType('visibility-state');
105
- if (!results || results.length === 0) {
106
- return null;
107
- }
108
- return results.reduce(function () {
109
- var acc = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
110
- var _ref = arguments.length > 1 ? arguments[1] : undefined,
111
- name = _ref.name,
112
- startTime = _ref.startTime;
113
- if (startTime > stop) {
114
- return acc;
115
- }
116
- if (acc === null && name === null) {
117
- return null;
118
- }
119
- if (acc === null) {
120
- return name;
121
- }
122
- if (acc !== name) {
123
- return 'mixed';
124
- }
125
- return acc;
126
- }, null);
127
- } catch (e) {
128
- return null;
129
- }
130
- }
131
107
  function getMoreAccuratePageVisibilityUpToTTI(interaction) {
132
108
  var old = getPageVisibilityUpToTTI(interaction);
133
109
  var tti = getEarliestLegacyStopTime(interaction, []);
134
110
  if (!tti) {
135
111
  return old;
136
112
  }
137
- var buffered = getVisibilityStateFromPerformance(tti);
138
- if (!buffered) {
139
- return old;
140
- }
141
- if (buffered !== old) {
142
- return 'mixed';
143
- }
144
- return old;
145
- }
146
- function getMoreAccuratePageVisibilityUpToTTAI(interaction) {
147
- var old = (0, _getPageVisibilityUpToTtai.default)(interaction);
148
- var buffered = getVisibilityStateFromPerformance(interaction.end);
113
+ var buffered = (0, _getVisibilityStateFromPerformance.getVisibilityStateFromPerformance)(tti);
149
114
  if (!buffered) {
150
115
  return old;
151
116
  }
@@ -256,10 +221,10 @@ function optimizeCustomData(interaction) {
256
221
  var customData = interaction.customData,
257
222
  cohortingCustomData = interaction.cohortingCustomData,
258
223
  legacyMetrics = interaction.legacyMetrics;
259
- var customDataMap = customData.reduce(function (result, _ref2) {
224
+ var customDataMap = customData.reduce(function (result, _ref) {
260
225
  var _result$get$data, _result$get;
261
- var labelStack = _ref2.labelStack,
262
- data = _ref2.data;
226
+ var labelStack = _ref.labelStack,
227
+ data = _ref.data;
263
228
  var label = (0, _utils.stringifyLabelStackFully)(labelStack);
264
229
  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 : {};
265
230
  result.set(label, {
@@ -301,48 +266,6 @@ function optimizeCustomData(interaction) {
301
266
  }
302
267
  return (0, _toConsumableArray2.default)(customDataMap.values());
303
268
  }
304
- function optimizeReactProfilerTimings(reactProfilerTimings, interactionStart, reactUFOVersion) {
305
- var reactProfilerTimingsMap = reactProfilerTimings.reduce(function (result, _ref3) {
306
- var labelStack = _ref3.labelStack,
307
- startTime = _ref3.startTime,
308
- commitTime = _ref3.commitTime,
309
- actualDuration = _ref3.actualDuration,
310
- type = _ref3.type;
311
- if (labelStack && startTime >= interactionStart) {
312
- var label = (0, _utils.stringifyLabelStackFully)(labelStack);
313
- var start = Math.round(startTime);
314
- var end = Math.round(commitTime);
315
- var timing = result.get(label) || {
316
- labelStack: (0, _utils.optimizeLabelStack)(labelStack, reactUFOVersion),
317
- startTime: start,
318
- endTime: end,
319
- mountCount: 0,
320
- rerenderCount: 0,
321
- renderDuration: 0
322
- };
323
- if (start < timing.startTime) {
324
- timing.startTime = start;
325
- }
326
- if (end > timing.endTime) {
327
- timing.endTime = end;
328
- }
329
- if (type === 'mount') {
330
- timing.mountCount += 1;
331
- }
332
- if (type === 'update') {
333
- timing.rerenderCount += 1;
334
- }
335
- if (_interactionMetrics.segmentUnmountCache.has(label) && (0, _platformFeatureFlags.fg)('platform_ufo_segment_unmount_count')) {
336
- timing.unmountCount = _interactionMetrics.segmentUnmountCache.get(label) || 0;
337
- _interactionMetrics.segmentUnmountCache.delete(label);
338
- }
339
- timing.renderDuration += Math.round(actualDuration);
340
- result.set(label, timing);
341
- }
342
- return result;
343
- }, new Map());
344
- return (0, _toConsumableArray2.default)(reactProfilerTimingsMap.values());
345
- }
346
269
  function optimizeRedirects(redirects, interactionStart) {
347
270
  var lastRedirectTime = interactionStart;
348
271
  var updatedRedirects = redirects.sort(function (a, b) {
@@ -364,121 +287,6 @@ function optimizeRedirects(redirects, interactionStart) {
364
287
  }, []);
365
288
  return updatedRedirects;
366
289
  }
367
- function optimizeHoldInfo(holdInfo, interactionStart, reactUFOVersion) {
368
- var holdInfoMap = holdInfo.reduce(function (result, hold) {
369
- var labelStack = hold.labelStack,
370
- name = hold.name,
371
- start = hold.start,
372
- end = hold.end,
373
- ignoreOnSubmit = hold.ignoreOnSubmit;
374
- if (labelStack && !ignoreOnSubmit && start >= interactionStart) {
375
- var label = (0, _utils.stringifyLabelStackFully)([].concat((0, _toConsumableArray2.default)(labelStack), [{
376
- name: name
377
- }]));
378
- var startTime = Math.round(start);
379
- var endTime = Math.round(end);
380
- var timing = result.get(label) || {
381
- labelStack: (0, _utils.optimizeLabelStack)([].concat((0, _toConsumableArray2.default)(labelStack), [{
382
- name: name
383
- }]), reactUFOVersion),
384
- startTime: startTime,
385
- endTime: endTime
386
- };
387
- if (startTime < timing.startTime) {
388
- timing.startTime = startTime;
389
- }
390
- if (endTime > timing.endTime) {
391
- timing.endTime = endTime;
392
- }
393
- result.set(label, timing);
394
- }
395
- return result;
396
- }, new Map());
397
- return (0, _toConsumableArray2.default)(holdInfoMap.values());
398
- }
399
- function optimizeSpans(spans, interactionStart, reactUFOVersion) {
400
- var updatedSpans = spans.reduce(function (result, span) {
401
- var labelStack = span.labelStack,
402
- type = span.type,
403
- name = span.name,
404
- start = span.start,
405
- end = span.end;
406
- if (labelStack && start >= interactionStart) {
407
- result.push({
408
- labelStack: (0, _utils.optimizeLabelStack)([].concat((0, _toConsumableArray2.default)(labelStack), [{
409
- name: name
410
- }]), reactUFOVersion),
411
- startTime: Math.round(start),
412
- endTime: Math.round(end),
413
- type: type
414
- });
415
- }
416
- return result;
417
- }, []);
418
- return updatedSpans;
419
- }
420
- function optimizeRequestInfo(requestInfo, interactionStart, reactUFOVersion) {
421
- var updatedRequestInfo = requestInfo.reduce(function (result, reqInfo) {
422
- var labelStack = reqInfo.labelStack,
423
- name = reqInfo.name,
424
- start = reqInfo.start,
425
- end = reqInfo.end,
426
- networkStart = reqInfo.networkStart,
427
- networkComplete = reqInfo.networkComplete;
428
- var startTime = networkStart !== null && networkStart !== void 0 ? networkStart : start;
429
- var endTime = networkComplete !== null && networkComplete !== void 0 ? networkComplete : end;
430
- if (labelStack && start >= interactionStart && endTime) {
431
- result.push({
432
- labelStack: (0, _utils.optimizeLabelStack)([].concat((0, _toConsumableArray2.default)(labelStack), [{
433
- name: name
434
- }]), reactUFOVersion),
435
- startTime: Math.round(startTime),
436
- endTime: Math.round(endTime)
437
- });
438
- }
439
- return result;
440
- }, []);
441
- return updatedRequestInfo;
442
- }
443
- function optimizeCustomTimings(customTimings, interactionStart) {
444
- return customTimings.reduce(function (result, item) {
445
- Object.keys(item.data).forEach(function (key) {
446
- if (item.data[key].startTime >= interactionStart) {
447
- result.push({
448
- labelStack: [{
449
- n: key
450
- }],
451
- startTime: Math.round(item.data[key].startTime),
452
- endTime: Math.round(item.data[key].endTime)
453
- });
454
- }
455
- });
456
- return result;
457
- }, []);
458
- }
459
- function optimizeMarks(marks, reactUFOVersion) {
460
- return marks.map(function (_ref4) {
461
- var labelStack = _ref4.labelStack,
462
- time = _ref4.time,
463
- others = (0, _objectWithoutProperties2.default)(_ref4, _excluded);
464
- return _objectSpread(_objectSpread({}, others), {}, {
465
- labelStack: labelStack && (0, _utils.optimizeLabelStack)(labelStack, reactUFOVersion),
466
- time: Math.round(time)
467
- });
468
- });
469
- }
470
- function optimizeApdex(apdex, reactUFOVersion) {
471
- return apdex.map(function (_ref5) {
472
- var stopTime = _ref5.stopTime,
473
- labelStack = _ref5.labelStack,
474
- others = (0, _objectWithoutProperties2.default)(_ref5, _excluded2);
475
- return _objectSpread(_objectSpread({}, others), {}, {
476
- stopTime: Math.round(stopTime)
477
- }, labelStack ? {
478
- labelStack: (0, _utils.optimizeLabelStack)(labelStack, reactUFOVersion)
479
- } : {});
480
- });
481
- }
482
290
  function objectToArray() {
483
291
  var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
484
292
  return Object.keys(obj).reduce(function (result, key) {
@@ -611,7 +419,7 @@ function _createInteractionMetricsPayload() {
611
419
  isPageLoad = type === 'page_load';
612
420
  calculatePageVisibilityFromTheStartOfPageLoad = config.enableBetterPageVisibilityApi && isPageLoad;
613
421
  moreAccuratePageVisibilityAtTTI = calculatePageVisibilityFromTheStartOfPageLoad ? getMoreAccuratePageVisibilityUpToTTI(interaction) : null;
614
- moreAccuratePageVisibilityAtTTAI = calculatePageVisibilityFromTheStartOfPageLoad ? getMoreAccuratePageVisibilityUpToTTAI(interaction) : null;
422
+ moreAccuratePageVisibilityAtTTAI = calculatePageVisibilityFromTheStartOfPageLoad ? (0, _getMoreAccuratePageVisibilityUpToTtai.getMoreAccuratePageVisibilityUpToTTAI)(interaction) : null;
615
423
  labelStack = interaction.labelStack ? {
616
424
  labelStack: (0, _utils.optimizeLabelStack)(interaction.labelStack, (0, _getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type))
617
425
  } : {}; // Page Load
@@ -652,19 +460,19 @@ function _createInteractionMetricsPayload() {
652
460
  var spans = [].concat((0, _toConsumableArray2.default)(interaction.spans), (0, _toConsumableArray2.default)(_interactionMetrics.interactionSpans));
653
461
  _interactionMetrics.interactionSpans.length = 0;
654
462
  return {
655
- errors: interaction.errors.map(function (_ref6) {
656
- var labelStack = _ref6.labelStack,
657
- others = (0, _objectWithoutProperties2.default)(_ref6, _excluded3);
463
+ errors: interaction.errors.map(function (_ref2) {
464
+ var labelStack = _ref2.labelStack,
465
+ others = (0, _objectWithoutProperties2.default)(_ref2, _excluded);
658
466
  return _objectSpread(_objectSpread({}, others), {}, {
659
467
  labelStack: labelStack && (0, _utils.optimizeLabelStack)(labelStack, (0, _getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type))
660
468
  });
661
469
  }),
662
470
  holdActive: (0, _toConsumableArray2.default)(interaction.holdActive.values()),
663
471
  redirects: optimizeRedirects(interaction.redirects, start),
664
- holdInfo: optimizeHoldInfo(experimental ? interaction.holdExpInfo : interaction.holdInfo, start, (0, _getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type)),
665
- spans: optimizeSpans(spans, start, (0, _getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type)),
666
- requestInfo: optimizeRequestInfo(interaction.requestInfo, start, (0, _getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type)),
667
- customTimings: optimizeCustomTimings(interaction.customTimings, start),
472
+ holdInfo: (0, _optimizeHoldInfo.optimizeHoldInfo)(experimental ? interaction.holdExpInfo : interaction.holdInfo, start, (0, _getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type)),
473
+ spans: (0, _optimizeSpans.optimizeSpans)(spans, start, (0, _getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type)),
474
+ requestInfo: (0, _optimizeRequestInfo.optimizeRequestInfo)(interaction.requestInfo, start, (0, _getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type)),
475
+ customTimings: (0, _optimizeCustomTimings.optimizeCustomTimings)(interaction.customTimings, start),
668
476
  bundleEvalTimings: objectToArray(getBundleEvalTimings(start)),
669
477
  resourceTimings: objectToArray(resourceTimings)
670
478
  };
@@ -766,13 +574,13 @@ function _createInteractionMetricsPayload() {
766
574
  isPreviousInteractionAborted: isPreviousInteractionAborted,
767
575
  abortedByInteractionName: abortedByInteractionName,
768
576
  // performance
769
- apdex: optimizeApdex(interaction.apdex, (0, _getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type)),
577
+ apdex: (0, _optimizeApdex.optimizeApdex)(interaction.apdex, (0, _getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type)),
770
578
  end: Math.round(end),
771
579
  start: Math.round(start),
772
580
  segments: (0, _getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type) === '2.0.0' ? segmentTree : (0, _utils.getOldSegmentsLabelStack)(segments, interaction.type),
773
- marks: optimizeMarks(interaction.marks, (0, _getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type)),
581
+ marks: (0, _optimizeMarks.optimizeMarks)(interaction.marks, (0, _getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type)),
774
582
  customData: optimizeCustomData(interaction),
775
- reactProfilerTimings: optimizeReactProfilerTimings(interaction.reactProfilerTimings, start, (0, _getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type))
583
+ reactProfilerTimings: (0, _optimizeReactProfilerTimings.optimizeReactProfilerTimings)(interaction.reactProfilerTimings, start, (0, _getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type))
776
584
  }, responsiveness ? {
777
585
  responsiveness: responsiveness
778
586
  } : {}), labelStack), pageLoadInteractionMetrics), getDetailedInteractionMetrics(resourceTimings)), getPageLoadDetailedInteractionMetrics()), getBm3TrackerTimings(interaction)), {}, {
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.getMoreAccuratePageVisibilityUpToTTAI = getMoreAccuratePageVisibilityUpToTTAI;
8
+ var _getPageVisibilityUpToTtai = _interopRequireDefault(require("./get-page-visibility-up-to-ttai"));
9
+ var _getVisibilityStateFromPerformance = require("./get-visibility-state-from-performance");
10
+ function getMoreAccuratePageVisibilityUpToTTAI(interaction) {
11
+ var old = (0, _getPageVisibilityUpToTtai.default)(interaction);
12
+ var buffered = (0, _getVisibilityStateFromPerformance.getVisibilityStateFromPerformance)(interaction.end);
13
+ if (!buffered) {
14
+ return old;
15
+ }
16
+ if (buffered !== old) {
17
+ return 'mixed';
18
+ }
19
+ return old;
20
+ }
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getVisibilityStateFromPerformance = getVisibilityStateFromPerformance;
7
+ function getVisibilityStateFromPerformance(stop) {
8
+ try {
9
+ var results = performance.getEntriesByType('visibility-state');
10
+ if (!results || results.length === 0) {
11
+ return null;
12
+ }
13
+ return results.reduce(function () {
14
+ var acc = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
15
+ var _ref = arguments.length > 1 ? arguments[1] : undefined,
16
+ name = _ref.name,
17
+ startTime = _ref.startTime;
18
+ if (startTime > stop) {
19
+ return acc;
20
+ }
21
+ if (acc === null && name === null) {
22
+ return null;
23
+ }
24
+ if (acc === null) {
25
+ return name;
26
+ }
27
+ if (acc !== name) {
28
+ return 'mixed';
29
+ }
30
+ return acc;
31
+ }, null);
32
+ } catch (e) {
33
+ return null;
34
+ }
35
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.optimizeApdex = optimizeApdex;
8
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
10
+ var _utils = require("../common/utils");
11
+ var _excluded = ["stopTime", "labelStack"];
12
+ 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; }
13
+ 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; }
14
+ function optimizeApdex(apdex, reactUFOVersion) {
15
+ return apdex.map(function (_ref) {
16
+ var stopTime = _ref.stopTime,
17
+ labelStack = _ref.labelStack,
18
+ others = (0, _objectWithoutProperties2.default)(_ref, _excluded);
19
+ return _objectSpread(_objectSpread({}, others), {}, {
20
+ stopTime: Math.round(stopTime)
21
+ }, labelStack ? {
22
+ labelStack: (0, _utils.optimizeLabelStack)(labelStack, reactUFOVersion)
23
+ } : {});
24
+ });
25
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.optimizeCustomTimings = optimizeCustomTimings;
7
+ function optimizeCustomTimings(customTimings, interactionStart) {
8
+ return customTimings.reduce(function (result, item) {
9
+ Object.keys(item.data).forEach(function (key) {
10
+ if (item.data[key].startTime >= interactionStart) {
11
+ result.push({
12
+ labelStack: [{
13
+ n: key
14
+ }],
15
+ startTime: Math.round(item.data[key].startTime),
16
+ endTime: Math.round(item.data[key].endTime)
17
+ });
18
+ }
19
+ });
20
+ return result;
21
+ }, []);
22
+ }
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.optimizeHoldInfo = optimizeHoldInfo;
8
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
+ var _utils = require("../common/utils");
10
+ function optimizeHoldInfo(holdInfo, interactionStart, reactUFOVersion) {
11
+ var holdInfoMap = holdInfo.reduce(function (result, hold) {
12
+ var labelStack = hold.labelStack,
13
+ name = hold.name,
14
+ start = hold.start,
15
+ end = hold.end,
16
+ ignoreOnSubmit = hold.ignoreOnSubmit;
17
+ if (labelStack && !ignoreOnSubmit && start >= interactionStart) {
18
+ var label = (0, _utils.stringifyLabelStackFully)([].concat((0, _toConsumableArray2.default)(labelStack), [{
19
+ name: name
20
+ }]));
21
+ var startTime = Math.round(start);
22
+ var endTime = Math.round(end);
23
+ var timing = result.get(label) || {
24
+ labelStack: (0, _utils.optimizeLabelStack)([].concat((0, _toConsumableArray2.default)(labelStack), [{
25
+ name: name
26
+ }]), reactUFOVersion),
27
+ startTime: startTime,
28
+ endTime: endTime
29
+ };
30
+ if (startTime < timing.startTime) {
31
+ timing.startTime = startTime;
32
+ }
33
+ if (endTime > timing.endTime) {
34
+ timing.endTime = endTime;
35
+ }
36
+ result.set(label, timing);
37
+ }
38
+ return result;
39
+ }, new Map());
40
+ return (0, _toConsumableArray2.default)(holdInfoMap.values());
41
+ }