@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.
Files changed (71) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/create-experimental-interaction-metrics-payload/package.json +15 -0
  3. package/dist/cjs/config/index.js +40 -18
  4. package/dist/cjs/create-experimental-interaction-metrics-payload/index.js +89 -0
  5. package/dist/cjs/create-payload/common/utils/index.js +85 -1
  6. package/dist/cjs/create-payload/index.js +49 -85
  7. package/dist/cjs/create-post-interaction-log-payload/index.js +1 -4
  8. package/dist/cjs/interaction-metrics/common/constants.js +7 -1
  9. package/dist/cjs/interaction-metrics/common/index.js +151 -0
  10. package/dist/cjs/interaction-metrics/index.js +139 -204
  11. package/dist/cjs/interaction-metrics/post-interaction-log.js +6 -2
  12. package/dist/cjs/interaction-metrics-init/index.js +27 -9
  13. package/dist/cjs/load-hold/UFOLoadHold.js +3 -4
  14. package/dist/cjs/segment/segment.js +7 -9
  15. package/dist/cjs/trace-pageload/index.js +2 -1
  16. package/dist/cjs/vc/vc-observer/observers/index.js +1 -40
  17. package/dist/es2019/config/index.js +22 -0
  18. package/dist/es2019/create-experimental-interaction-metrics-payload/index.js +67 -0
  19. package/dist/es2019/create-payload/common/utils/index.js +86 -1
  20. package/dist/es2019/create-payload/index.js +40 -81
  21. package/dist/es2019/create-post-interaction-log-payload/index.js +1 -4
  22. package/dist/es2019/interaction-metrics/common/constants.js +6 -0
  23. package/dist/es2019/interaction-metrics/common/index.js +103 -0
  24. package/dist/es2019/interaction-metrics/index.js +92 -129
  25. package/dist/es2019/interaction-metrics/post-interaction-log.js +6 -2
  26. package/dist/es2019/interaction-metrics-init/index.js +21 -8
  27. package/dist/es2019/load-hold/UFOLoadHold.js +3 -4
  28. package/dist/es2019/segment/segment.js +6 -12
  29. package/dist/es2019/trace-pageload/index.js +1 -1
  30. package/dist/es2019/vc/vc-observer/observers/index.js +1 -20
  31. package/dist/esm/config/index.js +39 -18
  32. package/dist/esm/create-experimental-interaction-metrics-payload/index.js +81 -0
  33. package/dist/esm/create-payload/common/utils/index.js +80 -1
  34. package/dist/esm/create-payload/index.js +45 -83
  35. package/dist/esm/create-post-interaction-log-payload/index.js +1 -4
  36. package/dist/esm/interaction-metrics/common/constants.js +6 -0
  37. package/dist/esm/interaction-metrics/common/index.js +132 -0
  38. package/dist/esm/interaction-metrics/index.js +87 -156
  39. package/dist/esm/interaction-metrics/post-interaction-log.js +6 -2
  40. package/dist/esm/interaction-metrics-init/index.js +24 -10
  41. package/dist/esm/load-hold/UFOLoadHold.js +3 -4
  42. package/dist/esm/segment/segment.js +7 -9
  43. package/dist/esm/trace-pageload/index.js +1 -1
  44. package/dist/esm/vc/vc-observer/observers/index.js +1 -40
  45. package/dist/types/common/common/types.d.ts +9 -5
  46. package/dist/types/config/index.d.ts +6 -0
  47. package/dist/types/create-experimental-interaction-metrics-payload/index.d.ts +31 -0
  48. package/dist/types/create-payload/common/utils/index.d.ts +12 -0
  49. package/dist/types/create-payload/index.d.ts +13 -5716
  50. package/dist/types/create-post-interaction-log-payload/index.d.ts +2 -0
  51. package/dist/types/interaction-metrics/common/constants.d.ts +31 -1
  52. package/dist/types/interaction-metrics/common/index.d.ts +16 -0
  53. package/dist/types/interaction-metrics/index.d.ts +4 -15
  54. package/dist/types/interaction-metrics/post-interaction-log.d.ts +1 -1
  55. package/dist/types/load-hold/UFOLoadHold.d.ts +1 -2
  56. package/dist/types/trace-pageload/index.d.ts +1 -0
  57. package/dist/types/vc/vc-observer/observers/index.d.ts +0 -1
  58. package/dist/types-ts4.5/common/common/types.d.ts +9 -5
  59. package/dist/types-ts4.5/config/index.d.ts +6 -0
  60. package/dist/types-ts4.5/create-experimental-interaction-metrics-payload/index.d.ts +31 -0
  61. package/dist/types-ts4.5/create-payload/common/utils/index.d.ts +12 -0
  62. package/dist/types-ts4.5/create-payload/index.d.ts +13 -5716
  63. package/dist/types-ts4.5/create-post-interaction-log-payload/index.d.ts +2 -0
  64. package/dist/types-ts4.5/interaction-metrics/common/constants.d.ts +31 -1
  65. package/dist/types-ts4.5/interaction-metrics/common/index.d.ts +16 -0
  66. package/dist/types-ts4.5/interaction-metrics/index.d.ts +4 -15
  67. package/dist/types-ts4.5/interaction-metrics/post-interaction-log.d.ts +1 -1
  68. package/dist/types-ts4.5/load-hold/UFOLoadHold.d.ts +1 -2
  69. package/dist/types-ts4.5/trace-pageload/index.d.ts +1 -0
  70. package/dist/types-ts4.5/vc/vc-observer/observers/index.d.ts +0 -1
  71. 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$apdex2;
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$apdex2 = interaction.apdex) === null || _interaction$apdex2 === void 0 || (_interaction$apdex2 = _interaction$apdex2[0]) === null || _interaction$apdex2 === void 0 ? void 0 : _interaction$apdex2.stopTime;
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
- _key = _Object$entries$_i[0],
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)({}, _key, value))
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
- function createInteractionMetricsPayload(interaction, interactionId) {
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$ssr3;
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$ssr3 = config.ssr) !== null && _config$ssr3 !== void 0 && _config$ssr3.getSSRDoneTime)
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$ssr4;
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$ssr4 = config.ssr) !== null && _config$ssr4 !== void 0 && _config$ssr4.getSSRTimings ? config.ssr.getSSRTimings() : objectToArray(ssr.getSSRTimings())
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
- errorCount: (0, _globalErrorHandler.getGlobalErrorCount)(),
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
- errorCount: interaction.errors.length
793
- }, labelStack), getPageLoadInteractionMetrics()), getDetailedInteractionMetrics()), getPageLoadDetailedInteractionMetrics()), getBm3TrackerTimings(interaction)),
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
- if (parentTiming.startTime === timing.startTime && parentTiming.actualDuration === timing.actualDuration) {
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
+ }