@atlaskit/react-ufo 5.3.0 → 5.4.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.
@@ -8,7 +8,7 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
8
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; }
9
9
  import { fg } from '@atlaskit/platform-feature-flags';
10
10
  import coinflip from '../coinflip';
11
- import { DEFAULT_TTVC_REVISION, getConfig, getExtraInteractionRate } from '../config';
11
+ import { DEFAULT_TTVC_REVISION, getConfig, getDefaultTTVCRevision, getExtraInteractionRate, getMostRecentVCRevision } from '../config';
12
12
  import { buildSegmentTree, getOldSegmentsLabelStack, optimizeLabelStack, sanitizeUfoName } from '../create-payload/common/utils';
13
13
  import { getMoreAccuratePageVisibilityUpToTTAI } from '../create-payload/utils/get-more-accurate-page-visibility-up-to-ttai';
14
14
  import getPageVisibilityUpToTTAI from '../create-payload/utils/get-page-visibility-up-to-ttai';
@@ -29,8 +29,8 @@ function createInteractionExtraLogPayload(_x, _x2, _x3, _x4) {
29
29
  }
30
30
  function _createInteractionExtraLogPayload() {
31
31
  _createInteractionExtraLogPayload = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(interactionId, interaction, lastInteractionFinish, lastInteractionFinishVCResult) {
32
- var _getTTAI, _lastInteractionFinis, _getTTAI2, _window$location;
33
- var config, end, start, ufoName, rate, type, abortReason, routeName, previousInteractionName, isPreviousInteractionAborted, abortedByInteractionName, knownSegments, minorInteractions, sanitisedUfoName, configRate, pageVisibilityAtTTAI, isPageLoad, calculatePageVisibilityFromTheStartOfPageLoad, moreAccuratePageVisibilityAtTTAI, extraTTAI, newUFOName, finalVCMetrics, vcRevisionPayload, effectiveVCRevisionPayload, normalTTAI, lastInteractionFinishStart, lastInteractionFinishEnd, lastInteractionFinishVC90, lastInteractionFinishVCClean, lastInteractionFinishVCRev, lastInteractionFinishRevision, isThirdParty, filteredData, getDetailedInteractionMetrics, segments3p, segmentTree, payload;
32
+ var _getTTAI, _getMostRecentVCRevis, _lastInteractionFinis, _getTTAI2, _window$location;
33
+ var config, end, start, ufoName, rate, type, abortReason, routeName, previousInteractionName, isPreviousInteractionAborted, abortedByInteractionName, knownSegments, minorInteractions, sanitisedUfoName, configRate, pageVisibilityAtTTAI, isPageLoad, calculatePageVisibilityFromTheStartOfPageLoad, moreAccuratePageVisibilityAtTTAI, extraTTAI, newUFOName, finalVCMetrics, vcRevisionPayload, effectiveRevision, effectiveVCRevisionPayload, normalTTAI, lastInteractionFinishStart, lastInteractionFinishEnd, lastInteractionFinishVC90, lastInteractionFinishVCClean, lastInteractionFinishVCRev, lastInteractionFinishRevision, isThirdParty, filteredData, getDetailedInteractionMetrics, segments3p, segmentTree, payload;
34
34
  return _regeneratorRuntime.wrap(function _callee$(_context) {
35
35
  while (1) switch (_context.prev = _context.next) {
36
36
  case 0:
@@ -68,56 +68,57 @@ function _createInteractionExtraLogPayload() {
68
68
  finalVCMetrics = _context.sent;
69
69
  // Check if VC is clean and has valid metric
70
70
  vcRevisionPayload = finalVCMetrics === null || finalVCMetrics === void 0 ? void 0 : finalVCMetrics['ufo:vc:rev'];
71
+ effectiveRevision = fg('ufo_update_and_enforce_ttvc_v4_default_version') ? (_getMostRecentVCRevis = getMostRecentVCRevision(ufoName)) !== null && _getMostRecentVCRevis !== void 0 ? _getMostRecentVCRevis : DEFAULT_TTVC_REVISION : getDefaultTTVCRevision();
71
72
  effectiveVCRevisionPayload = vcRevisionPayload === null || vcRevisionPayload === void 0 ? void 0 : vcRevisionPayload.find(function (_ref) {
72
73
  var revision = _ref.revision;
73
- return revision === DEFAULT_TTVC_REVISION;
74
+ return revision === effectiveRevision;
74
75
  });
75
76
  if (!(!(effectiveVCRevisionPayload !== null && effectiveVCRevisionPayload !== void 0 && effectiveVCRevisionPayload.clean) || (effectiveVCRevisionPayload === null || effectiveVCRevisionPayload === void 0 ? void 0 : effectiveVCRevisionPayload['metric:vc90']) === undefined || typeof (effectiveVCRevisionPayload === null || effectiveVCRevisionPayload === void 0 ? void 0 : effectiveVCRevisionPayload['metric:vc90']) !== 'number' || extraTTAI === undefined || typeof extraTTAI !== 'number' || interaction.errors.length > 0)) {
76
- _context.next = 23;
77
+ _context.next = 24;
77
78
  break;
78
79
  }
79
80
  return _context.abrupt("return", null);
80
- case 23:
81
+ case 24:
81
82
  if (!(!lastInteractionFinish || lastInteractionFinish !== null && lastInteractionFinish !== void 0 && lastInteractionFinish.abortReason || lastInteractionFinish !== null && lastInteractionFinish !== void 0 && (_lastInteractionFinis = lastInteractionFinish.errors) !== null && _lastInteractionFinis !== void 0 && _lastInteractionFinis.length)) {
82
- _context.next = 25;
83
+ _context.next = 26;
83
84
  break;
84
85
  }
85
86
  return _context.abrupt("return", null);
86
- case 25:
87
+ case 26:
87
88
  normalTTAI = (_getTTAI2 = getTTAI(lastInteractionFinish)) !== null && _getTTAI2 !== void 0 ? _getTTAI2 : undefined;
88
89
  lastInteractionFinishStart = typeof lastInteractionFinish.start === 'number' ? Math.round(lastInteractionFinish.start) : undefined;
89
90
  lastInteractionFinishEnd = typeof lastInteractionFinish.end === 'number' ? Math.round(lastInteractionFinish.end) : undefined;
90
91
  lastInteractionFinishVC90 = null;
91
92
  lastInteractionFinishVCClean = false;
92
93
  if (!lastInteractionFinishVCResult) {
93
- _context.next = 41;
94
+ _context.next = 42;
94
95
  break;
95
96
  }
96
97
  lastInteractionFinishVCRev = lastInteractionFinishVCResult['ufo:vc:rev'];
97
98
  lastInteractionFinishRevision = lastInteractionFinishVCRev === null || lastInteractionFinishVCRev === void 0 ? void 0 : lastInteractionFinishVCRev.find(function (_ref2) {
98
99
  var revision = _ref2.revision;
99
- return revision === DEFAULT_TTVC_REVISION;
100
+ return revision === effectiveRevision;
100
101
  });
101
102
  if (!(lastInteractionFinishRevision !== null && lastInteractionFinishRevision !== void 0 && lastInteractionFinishRevision.clean)) {
102
- _context.next = 38;
103
+ _context.next = 39;
103
104
  break;
104
105
  }
105
106
  lastInteractionFinishVCClean = true;
106
107
  lastInteractionFinishVC90 = lastInteractionFinishRevision['metric:vc90'];
107
- _context.next = 39;
108
+ _context.next = 40;
108
109
  break;
109
- case 38:
110
- return _context.abrupt("return", null);
111
110
  case 39:
112
- _context.next = 42;
111
+ return _context.abrupt("return", null);
112
+ case 40:
113
+ _context.next = 43;
113
114
  break;
114
- case 41:
115
+ case 42:
115
116
  if (normalTTAI !== undefined && typeof normalTTAI === 'number' && normalTTAI === extraTTAI) {
116
117
  // Because TTAI is equal between with and without 3p, we can assume VC90 is also equal
117
118
  lastInteractionFinishVC90 = effectiveVCRevisionPayload === null || effectiveVCRevisionPayload === void 0 ? void 0 : effectiveVCRevisionPayload['metric:vc90'];
118
119
  lastInteractionFinishVCClean = effectiveVCRevisionPayload === null || effectiveVCRevisionPayload === void 0 ? void 0 : effectiveVCRevisionPayload.clean;
119
120
  }
120
- case 42:
121
+ case 43:
121
122
  // Helper function to check if labelStack contains third-party type
122
123
  isThirdParty = function isThirdParty(labelStack) {
123
124
  var _labelStack$some;
@@ -223,7 +224,7 @@ function _createInteractionExtraLogPayload() {
223
224
  reactProfilerTimings: optimizeReactProfilerTimings(filteredData.reactProfilerTimings, start, getReactUFOPayloadVersion(interaction.type)),
224
225
  customData: filteredData.customData
225
226
  }, getDetailedInteractionMetrics()),
226
- 'vc:effective:revision': DEFAULT_TTVC_REVISION,
227
+ 'vc:effective:revision': effectiveRevision,
227
228
  lastInteractionFinish: {
228
229
  start: lastInteractionFinishStart,
229
230
  end: lastInteractionFinishEnd,
@@ -236,7 +237,7 @@ function _createInteractionExtraLogPayload() {
236
237
  };
237
238
  payload.attributes.properties['event:sizeInKb'] = getPayloadSize(payload.attributes.properties);
238
239
  return _context.abrupt("return", payload);
239
- case 51:
240
+ case 52:
240
241
  case "end":
241
242
  return _context.stop();
242
243
  }
@@ -9,9 +9,9 @@ try{return acc+item.cssRules.length;}catch(_unused3){return acc;}},0);var styleE
9
9
  getInitialPageLoadSSRMetrics=function getInitialPageLoadSSRMetrics(){var _config$ssr;if(!isPageLoad){return{};}var config=getConfig();var SSRDoneTimeValue=getSSRDoneTimeValue(config);var SSRDoneTime=SSRDoneTimeValue!==undefined?{SSRDoneTime:Math.round(SSRDoneTimeValue)}:{};var isBM3ConfigSSRDoneAsFmp=interaction.metaData.__legacy__bm3ConfigSSRDoneAsFmp;var isUFOConfigSSRDoneAsFmp=interaction.metaData.__legacy__bm3ConfigSSRDoneAsFmp||!!(config!==null&&config!==void 0&&(_config$ssr=config.ssr)!==null&&_config$ssr!==void 0&&_config$ssr.getSSRDoneTime);if(!experimental&&(isBM3ConfigSSRDoneAsFmp||isUFOConfigSSRDoneAsFmp)&&SSRDoneTimeValue!==undefined){try{performance.mark("FMP",{startTime:SSRDoneTimeValue,detail:{devtools:{dataType:'marker'}}});}catch(_unused6){}}return _objectSpread(_objectSpread({},SSRDoneTime),{},{isBM3ConfigSSRDoneAsFmp:isBM3ConfigSSRDoneAsFmp,isUFOConfigSSRDoneAsFmp:isUFOConfigSSRDoneAsFmp});};pageLoadInteractionMetrics=getInitialPageLoadSSRMetrics();// Detailed payload. Page visibility = visible
10
10
  getDetailedInteractionMetrics=function getDetailedInteractionMetrics(resourceTimings){if(experimental||window.__UFO_COMPACT_PAYLOAD__||!isDetailedPayload){return{};}var spans=[].concat(_toConsumableArray(interaction.spans),_toConsumableArray(atlaskitInteractionSpans));atlaskitInteractionSpans.length=0;var shouldInclude3pHolds=shouldUseRawDataThirdPartyBehavior(ufoName,type);var basePayload={errors:interaction.errors.map(function(_ref2){var labelStack=_ref2.labelStack,others=_objectWithoutProperties(_ref2,_excluded);return _objectSpread(_objectSpread({},others),{},{labelStack:labelStack&&optimizeLabelStack(labelStack,getReactUFOPayloadVersion(interaction.type))});}),holdActive:_toConsumableArray(interaction.holdActive.values()),redirects:optimizeRedirects(interaction.redirects,start),holdInfo:optimizeHoldInfo(experimental?interaction.holdExpInfo:interaction.holdInfo,start,getReactUFOPayloadVersion(interaction.type)),spans:optimizeSpans(spans,start,getReactUFOPayloadVersion(interaction.type)),requestInfo:optimizeRequestInfo(interaction.requestInfo,start,getReactUFOPayloadVersion(interaction.type)),customTimings:optimizeCustomTimings(interaction.customTimings,start),bundleEvalTimings:objectToArray(getBundleEvalTimings(start)),resourceTimings:objectToArray(resourceTimings)};// Include third-party holds when feature flag is active
11
11
  if(shouldInclude3pHolds){var _interaction$hold3pIn;return _objectSpread(_objectSpread({},basePayload),{},{hold3pActive:interaction.hold3pActive?_toConsumableArray(interaction.hold3pActive.values()):[],hold3pInfo:optimizeHoldInfo((_interaction$hold3pIn=interaction.hold3pInfo)!==null&&_interaction$hold3pIn!==void 0?_interaction$hold3pIn:[],start,getReactUFOPayloadVersion(interaction.type))});}return basePayload;};// Page load & detailed payload
12
- getPageLoadDetailedInteractionMetrics=function getPageLoadDetailedInteractionMetrics(){var _config$ssr2,_config$ssr2$getSSRTi;if(!isPageLoad||!isDetailedPayload){return{};}var initialPageLoadExtraTimings=objectToArray(initialPageLoadExtraTiming.getTimings());var config=getConfig();var defaultSSRTimings=objectToArray(ssr.getSSRTimings());var ssrTimingsFromConfig=config===null||config===void 0||(_config$ssr2=config.ssr)===null||_config$ssr2===void 0||(_config$ssr2$getSSRTi=_config$ssr2.getSSRTimings)===null||_config$ssr2$getSSRTi===void 0?void 0:_config$ssr2$getSSRTi.call(_config$ssr2);return{initialPageLoadExtraTimings:initialPageLoadExtraTimings,SSRTimings:ssrTimingsFromConfig?[].concat(_toConsumableArray(ssrTimingsFromConfig),_toConsumableArray(defaultSSRTimings)):defaultSSRTimings};};if(experimental){expTTAI=getTTAI(interaction);}else{regularTTAI=getTTAI(interaction);}newUFOName=sanitizeUfoName(ufoName);resourceTimings=getResourceTimings(start,end);_context.t0=Promise;_context.t1=vcMetrics;if(_context.t1){_context.next=29;break;}_context.next=28;return getVCMetrics(interaction);case 28:_context.t1=_context.sent;case 29:_context.t2=_context.t1;_context.t3=experimental?getExperimentalVCMetrics(interaction):Promise.resolve(undefined);_context.t4=getPaintMetricsToLegacyFormat(type,end);_context.t5=getBatteryInfoToLegacyFormat();_context.t6=[_context.t2,_context.t3,_context.t4,_context.t5];_context.next=36;return _context.t0.all.call(_context.t0,_context.t6);case 36:_yield$Promise$all=_context.sent;_yield$Promise$all2=_slicedToArray(_yield$Promise$all,4);finalVCMetrics=_yield$Promise$all2[0];experimentalMetrics=_yield$Promise$all2[1];paintMetrics=_yield$Promise$all2[2];batteryInfo=_yield$Promise$all2[3];if(!experimental){addPerformanceMeasures(interaction.start,_toConsumableArray((finalVCMetrics===null||finalVCMetrics===void 0?void 0:finalVCMetrics['ufo:vc:rev'])||[]));}getReactHydrationStats=function getReactHydrationStats(){if(!hydration){return{};}return{hydration:hydration};};payload={actionSubject:'experience',action:'measured',eventType:'operational',source:'measured',tags:['observability'],attributes:{properties:_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({// basic
12
+ getPageLoadDetailedInteractionMetrics=function getPageLoadDetailedInteractionMetrics(){var _config$ssr2,_config$ssr2$getSSRTi;if(!isPageLoad||!isDetailedPayload){return{};}var initialPageLoadExtraTimings=objectToArray(initialPageLoadExtraTiming.getTimings());var config=getConfig();var defaultSSRTimings=objectToArray(ssr.getSSRTimings());var ssrTimingsFromConfig=config===null||config===void 0||(_config$ssr2=config.ssr)===null||_config$ssr2===void 0||(_config$ssr2$getSSRTi=_config$ssr2.getSSRTimings)===null||_config$ssr2$getSSRTi===void 0?void 0:_config$ssr2$getSSRTi.call(_config$ssr2);return{initialPageLoadExtraTimings:initialPageLoadExtraTimings,SSRTimings:ssrTimingsFromConfig?[].concat(_toConsumableArray(ssrTimingsFromConfig),_toConsumableArray(defaultSSRTimings)):defaultSSRTimings};};if(experimental){expTTAI=getTTAI(interaction);}else{regularTTAI=getTTAI(interaction);}newUFOName=sanitizeUfoName(ufoName);resourceTimings=getResourceTimings(start,end);_context.t0=Promise;_context.t1=vcMetrics;if(_context.t1){_context.next=29;break;}_context.next=28;return getVCMetrics(interaction);case 28:_context.t1=_context.sent;case 29:_context.t2=_context.t1;_context.t3=experimental?getExperimentalVCMetrics(interaction):Promise.resolve(undefined);_context.t4=getPaintMetricsToLegacyFormat(type,end);_context.t5=getBatteryInfoToLegacyFormat();_context.t6=[_context.t2,_context.t3,_context.t4,_context.t5];_context.next=36;return _context.t0.all.call(_context.t0,_context.t6);case 36:_yield$Promise$all=_context.sent;_yield$Promise$all2=_slicedToArray(_yield$Promise$all,4);finalVCMetrics=_yield$Promise$all2[0];experimentalMetrics=_yield$Promise$all2[1];paintMetrics=_yield$Promise$all2[2];batteryInfo=_yield$Promise$all2[3];if(!experimental){addPerformanceMeasures(interaction.start,_toConsumableArray((finalVCMetrics===null||finalVCMetrics===void 0?void 0:finalVCMetrics['ufo:vc:rev'])||[]));}getReactHydrationStats=function getReactHydrationStats(){if(!hydration){return{};}return{hydration:hydration};};payload={actionSubject:'experience',action:'measured',eventType:'operational',source:'measured',tags:['observability'],attributes:{properties:_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({// basic
13
13
  'event:hostname':((_window$location=window.location)===null||_window$location===void 0?void 0:_window$location.hostname)||'unknown','event:product':config.product,'event:population':config.population,'event:schema':'1.0.0','event:sizeInKb':0,'event:source':{name:'react-ufo/web',version:getReactUFOPayloadVersion(interaction.type)},'event:region':config.region||'unknown','experience:key':experimental?'custom.experimental-interaction-metrics':'custom.interaction-metrics','experience:name':newUFOName,// Include CPU usage monitoring data
14
- 'event:cpu:usage':createPressureStateReport(interaction.start,interaction.end),'event:memory:usage':createMemoryStateReport(interaction.start,interaction.end)},criticalPayloadCount!==undefined?{'ufo:multipayload':true,'ufo:criticalPayloadCount':criticalPayloadCount}:{}),{},{'ufo:pageVisibilityHiddenTimestamp':getEarliestHiddenTiming(interaction.start,interaction.end),'ufo:wasPageHiddenBeforeInit':getHasHiddenTimingBeforeSetup(),'ufo:isOpenedInBackground':isOpenedInBackground(interaction.type),'ufo:isTabThrottled':isTabThrottled(start,end)},fg('platform_ufo_page_visibility_timeline')?{'ufo:pageVisibilityTimeline':getPageVisibilityTimeline(start,end)}:{}),fg('ufo_detect_aborting_interaction_during_ssr')?{'ufo:hasAbortingInteractionDuringSSR':getHasAbortingEventDuringSSR()}:{}),getBrowserMetadataToLegacyFormat()),batteryInfo),getSSRProperties(type)),getAssetsMetrics(interaction,pageLoadInteractionMetrics===null||pageLoadInteractionMetrics===void 0?void 0:pageLoadInteractionMetrics.SSRDoneTime)),getPPSMetrics(interaction)),paintMetrics),getNavigationMetricsToLegacyFormat(type)),finalVCMetrics),experimentalMetrics),(_config$additionalPay=config.additionalPayloadData)===null||_config$additionalPay===void 0?void 0:_config$additionalPay.call(config,interaction)),getTracingContextData(interaction)),getStylesheetMetrics()),getErrorCounts(interaction)),getReactHydrationStats()),{},{interactionMetrics:_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({namePrefix:config.namePrefix||'',segmentPrefix:config.segmentPrefix||'',interactionId:interactionId,pageVisibilityAtTTI:pageVisibilityAtTTI,pageVisibilityAtTTAI:pageVisibilityAtTTAI,experimental__pageVisibilityAtTTI:moreAccuratePageVisibilityAtTTI,experimental__pageVisibilityAtTTAI:moreAccuratePageVisibilityAtTTAI,// raw interaction metrics
14
+ 'event:cpu:usage':createPressureStateReport(interaction.start,interaction.end),'event:memory:usage':createMemoryStateReport(interaction.start,interaction.end)},criticalPayloadCount!==undefined?{'ufo:multipayload':true,'ufo:criticalPayloadCount':criticalPayloadCount}:{}),{},{'ufo:pageVisibilityHiddenTimestamp':getEarliestHiddenTiming(interaction.start,interaction.end),'ufo:wasPageHiddenBeforeInit':getHasHiddenTimingBeforeSetup(),'ufo:isOpenedInBackground':isOpenedInBackground(interaction.type),'ufo:isTabThrottled':isTabThrottled(start,end),'ufo:pageVisibilityTimeline':getPageVisibilityTimeline(start,end)},fg('ufo_detect_aborting_interaction_during_ssr')?{'ufo:hasAbortingInteractionDuringSSR':getHasAbortingEventDuringSSR()}:{}),getBrowserMetadataToLegacyFormat()),batteryInfo),getSSRProperties(type)),getAssetsMetrics(interaction,pageLoadInteractionMetrics===null||pageLoadInteractionMetrics===void 0?void 0:pageLoadInteractionMetrics.SSRDoneTime)),getPPSMetrics(interaction)),paintMetrics),getNavigationMetricsToLegacyFormat(type)),finalVCMetrics),experimentalMetrics),(_config$additionalPay=config.additionalPayloadData)===null||_config$additionalPay===void 0?void 0:_config$additionalPay.call(config,interaction)),getTracingContextData(interaction)),getStylesheetMetrics()),getErrorCounts(interaction)),getReactHydrationStats()),{},{interactionMetrics:_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({namePrefix:config.namePrefix||'',segmentPrefix:config.segmentPrefix||'',interactionId:interactionId,pageVisibilityAtTTI:pageVisibilityAtTTI,pageVisibilityAtTTAI:pageVisibilityAtTTAI,experimental__pageVisibilityAtTTI:moreAccuratePageVisibilityAtTTI,experimental__pageVisibilityAtTTAI:moreAccuratePageVisibilityAtTTAI,// raw interaction metrics
15
15
  rate:rate,routeName:routeName,type:type,abortReason:abortReason,featureFlags:featureFlags,previousInteractionName:previousInteractionName,isPreviousInteractionAborted:isPreviousInteractionAborted,abortedByInteractionName:abortedByInteractionName,// performance
16
16
  apdex:optimizeApdex(interaction.apdex,getReactUFOPayloadVersion(interaction.type)),end:Math.round(end)},interaction.end3p?{end3p:Math.round(interaction.end3p)}:{}),{},{start:Math.round(start),segments:getReactUFOPayloadVersion(interaction.type)==='2.0.0'?segmentTree:getOldSegmentsLabelStack(segments,interaction.type),marks:optimizeMarks(interaction.marks,getReactUFOPayloadVersion(interaction.type)),customData:optimizeCustomData(interaction),reactProfilerTimings:optimizeReactProfilerTimings(interaction.reactProfilerTimings,start,getReactUFOPayloadVersion(interaction.type)),minorInteractions:interaction.minorInteractions},responsiveness?{responsiveness:responsiveness}:{}),labelStack),pageLoadInteractionMetrics),getDetailedInteractionMetrics(resourceTimings)),getPageLoadDetailedInteractionMetrics()),getBm3TrackerTimings(interaction)),{},{'metric:ttai':experimental?regularTTAI||expTTAI:undefined,'metric:experimental:ttai':expTTAI},unknownElementName?{unknownElementName:unknownElementName}:{}),unknownElementHierarchy?{unknownElementHierarchy:unknownElementHierarchy}:{}),'ufo:payloadTime':roundEpsilon(performance.now()-interactionPayloadStart)})}};if(experimental){regularTTAI=undefined;expTTAI=undefined;}if(fg('platform_ufo_enable_vc_raw_data')){size=getPayloadSize(payload.attributes.properties);vcRev=payload.attributes.properties['ufo:vc:rev'];rawData=vcRev.find(function(item){return item.revision==='raw-handler';});if(rawData){rawDataSize=getPayloadSize(rawData);payload.attributes.properties['ufo:vc:raw:size']=rawDataSize;if(size>MAX_PAYLOAD_SIZE&&Array.isArray(vcRev)&&vcRev.length>0){payload.attributes.properties['ufo:vc:rev']=vcRev.filter(function(item){return item.revision!=='raw-handler';});payload.attributes.properties['ufo:vc:raw:removed']=true;}}payload.attributes.properties['event:sizeInKb']=getPayloadSize(payload.attributes.properties);}else{payload.attributes.properties['event:sizeInKb']=getPayloadSize(payload.attributes.properties);}// in order of importance, first one being least important
17
17
  // we can add more fields as necessary
@@ -41,13 +41,6 @@ function sinkExperimentalInteractionMetrics(instance, payloadPackage) {
41
41
  var payloadPromise = payloadPackage.createExperimentalMetricsPayload(interactionId, interaction);
42
42
  payloadPromise.then(function (payload) {
43
43
  if (payload) {
44
- if (fg('enable_ufo_devtools_api_for_extra_events')) {
45
- // NOTE: This API is used by the UFO DevTool Chrome Extension and Criterion
46
- var devToolObserver = globalThis.__ufo_devtool_onUfoPayload;
47
- if (typeof devToolObserver === 'function') {
48
- devToolObserver === null || devToolObserver === void 0 || devToolObserver(payload);
49
- }
50
- }
51
44
  instance.sendOperationalEvent(payload);
52
45
  }
53
46
  });
@@ -61,13 +54,6 @@ function sinkPostInteractionLog(instance, createPostInteractionLogPayload) {
61
54
  scheduleIdleCallback(function () {
62
55
  var payload = createPostInteractionLogPayload(logOutput);
63
56
  if (payload) {
64
- // NOTE: This API is used by the UFO DevTool Chrome Extension and also by Criterion
65
- if (fg('enable_ufo_devtools_api_for_extra_events')) {
66
- var devToolObserver = globalThis.__ufo_devtool_onUfoPayload;
67
- if (typeof devToolObserver === 'function') {
68
- devToolObserver === null || devToolObserver === void 0 || devToolObserver(payload);
69
- }
70
- }
71
57
  instance.sendOperationalEvent(payload);
72
58
  }
73
59
  });
@@ -78,12 +64,6 @@ function sinkTerminalErrors(instance, createTerminalErrorPayload) {
78
64
  scheduleIdleCallback(function () {
79
65
  var payload = createTerminalErrorPayload(errorData, context);
80
66
  if (payload) {
81
- if (fg('enable_ufo_devtools_api_for_extra_events')) {
82
- var devToolObserver = globalThis.__ufo_devtool_onUfoPayload;
83
- if (typeof devToolObserver === 'function') {
84
- devToolObserver === null || devToolObserver === void 0 || devToolObserver(payload);
85
- }
86
- }
87
67
  instance.sendOperationalEvent(payload);
88
68
  }
89
69
  });
@@ -92,7 +72,7 @@ function sinkTerminalErrors(instance, createTerminalErrorPayload) {
92
72
  function sinkInteractionExtraMetrics(instance, createInteractionExtraLogPayload) {
93
73
  interactionExtraMetrics.sinkHandler(function (interactionId, interaction, lastInteractionFinish, lastInteractionFinishVCResult) {
94
74
  scheduleIdleCallback( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
95
- var payload, devToolObserver;
75
+ var payload;
96
76
  return _regeneratorRuntime.wrap(function _callee$(_context) {
97
77
  while (1) switch (_context.prev = _context.next) {
98
78
  case 0:
@@ -101,13 +81,6 @@ function sinkInteractionExtraMetrics(instance, createInteractionExtraLogPayload)
101
81
  case 2:
102
82
  payload = _context.sent;
103
83
  if (payload) {
104
- // NOTE: This API is used by the UFO DevTool Chrome Extension and also by Criterion
105
- if (fg('enable_ufo_devtools_api_for_extra_events')) {
106
- devToolObserver = globalThis.__ufo_devtool_onUfoPayload;
107
- if (typeof devToolObserver === 'function') {
108
- devToolObserver === null || devToolObserver === void 0 || devToolObserver(payload);
109
- }
110
- }
111
84
  instance.sendOperationalEvent(payload);
112
85
  }
113
86
  case 4:
@@ -10,7 +10,7 @@ export function sinkTerminalErrorHandler(fn) {
10
10
  sinkHandlerFn = fn;
11
11
  }
12
12
  export function setTerminalError(error, additionalAttributes, labelStack) {
13
- var _activeInteraction$uf, _activeInteraction$id, _activeInteraction$ty, _PreviousInteractionL, _PreviousInteractionL2, _PreviousInteractionL3, _UFORouteName$current;
13
+ var _error$message, _activeInteraction$uf, _activeInteraction$id, _activeInteraction$ty, _PreviousInteractionL, _PreviousInteractionL2, _PreviousInteractionL3, _UFORouteName$current;
14
14
  if (additionalAttributes !== null && additionalAttributes !== void 0 && additionalAttributes.isClientNetworkError) {
15
15
  // Exclude client network errors from being reported to UFO
16
16
  return;
@@ -19,7 +19,7 @@ export function setTerminalError(error, additionalAttributes, labelStack) {
19
19
  var currentTime = performance.now();
20
20
  var errorData = _objectSpread({
21
21
  errorType: error.name || 'Error',
22
- errorMessage: error.message.slice(0, 100),
22
+ errorMessage: ((_error$message = error.message) === null || _error$message === void 0 ? void 0 : _error$message.slice(0, 100)) || 'Unknown error',
23
23
  timestamp: currentTime
24
24
  }, additionalAttributes);
25
25
 
@@ -121,7 +121,7 @@ export type ReactUFOPayload = {
121
121
  'ufo:wasPageHiddenBeforeInit'?: boolean;
122
122
  'ufo:isOpenedInBackground'?: boolean;
123
123
  'ufo:isTabThrottled'?: boolean;
124
- 'ufo:pageVisibilityTimeline'?: HiddenTimingItem[];
124
+ 'ufo:pageVisibilityTimeline': HiddenTimingItem[];
125
125
  interactionMetrics: {
126
126
  namePrefix: string;
127
127
  segmentPrefix: string;
@@ -36,7 +36,8 @@ type Rates = {
36
36
  readonly [key: string]: number;
37
37
  };
38
38
  export type TTVCRevision = 'fy25.01' | 'fy25.02' | 'fy25.03' | 'fy26.04' | 'next';
39
- export declare const DEFAULT_TTVC_REVISION = "fy25.03";
39
+ export declare const DEFAULT_TTVC_REVISION = "fy26.04";
40
+ export declare function getDefaultTTVCRevision(): TTVCRevision;
40
41
  export declare const UNKNOWN_INTERACTION_RATE = 1000;
41
42
  export type ReactHydrationStats = {
42
43
  /**
@@ -123,7 +123,7 @@ export type ReactUFOPayload = {
123
123
  'ufo:wasPageHiddenBeforeInit'?: boolean;
124
124
  'ufo:isOpenedInBackground'?: boolean;
125
125
  'ufo:isTabThrottled'?: boolean;
126
- 'ufo:pageVisibilityTimeline'?: HiddenTimingItem[];
126
+ 'ufo:pageVisibilityTimeline': HiddenTimingItem[];
127
127
  interactionMetrics: {
128
128
  namePrefix: string;
129
129
  segmentPrefix: string;
@@ -36,7 +36,8 @@ type Rates = {
36
36
  readonly [key: string]: number;
37
37
  };
38
38
  export type TTVCRevision = 'fy25.01' | 'fy25.02' | 'fy25.03' | 'fy26.04' | 'next';
39
- export declare const DEFAULT_TTVC_REVISION = "fy25.03";
39
+ export declare const DEFAULT_TTVC_REVISION = "fy26.04";
40
+ export declare function getDefaultTTVCRevision(): TTVCRevision;
40
41
  export declare const UNKNOWN_INTERACTION_RATE = 1000;
41
42
  export type ReactHydrationStats = {
42
43
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/react-ufo",
3
- "version": "5.3.0",
3
+ "version": "5.4.1",
4
4
  "description": "Parts of React UFO that are publicly available",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",
@@ -95,9 +95,6 @@
95
95
  "platform_ufo_detect_entrypoint_parent": {
96
96
  "type": "boolean"
97
97
  },
98
- "enable_ufo_devtools_api_for_extra_events": {
99
- "type": "boolean"
100
- },
101
98
  "ufo_payload_use_idle_callback": {
102
99
  "type": "boolean"
103
100
  },
@@ -209,7 +206,7 @@
209
206
  "platform_ufo_enable_killswitch_config": {
210
207
  "type": "boolean"
211
208
  },
212
- "platform_ufo_page_visibility_timeline": {
209
+ "ufo_update_and_enforce_ttvc_v4_default_version": {
213
210
  "type": "boolean"
214
211
  }
215
212
  }