@atlaskit/react-ufo 4.17.0 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/dist/cjs/create-payload/index.js +2 -2
- package/dist/cjs/interaction-id-context/index.js +2 -2
- package/dist/cjs/typing-performance-tracing/index.js +29 -6
- package/dist/cjs/vc/index.js +1 -3
- package/dist/cjs/vc/vc-observer-new/index.js +55 -67
- package/dist/cjs/vc/vc-observer-new/metric-calculator/fy26_04/index.js +2 -1
- package/dist/cjs/vc/vc-observer-new/metric-calculator/vc-next/index.js +42 -0
- package/dist/es2019/create-payload/index.js +2 -2
- package/dist/es2019/interaction-id-context/index.js +2 -2
- package/dist/es2019/typing-performance-tracing/index.js +27 -6
- package/dist/es2019/vc/index.js +1 -3
- package/dist/es2019/vc/vc-observer-new/index.js +59 -81
- package/dist/es2019/vc/vc-observer-new/metric-calculator/fy26_04/index.js +2 -2
- package/dist/es2019/vc/vc-observer-new/metric-calculator/vc-next/index.js +21 -0
- package/dist/esm/create-payload/index.js +2 -2
- package/dist/esm/interaction-id-context/index.js +2 -2
- package/dist/esm/typing-performance-tracing/index.js +29 -6
- package/dist/esm/vc/index.js +1 -3
- package/dist/esm/vc/vc-observer-new/index.js +53 -65
- package/dist/esm/vc/vc-observer-new/metric-calculator/fy26_04/index.js +2 -1
- package/dist/esm/vc/vc-observer-new/metric-calculator/vc-next/index.js +36 -0
- package/dist/types/interaction-id-context/index.d.ts +2 -2
- package/dist/types/vc/vc-observer-new/metric-calculator/fy26_04/index.d.ts +1 -1
- package/dist/types/vc/vc-observer-new/metric-calculator/vc-next/index.d.ts +6 -0
- package/dist/types-ts4.5/interaction-id-context/index.d.ts +2 -2
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/fy26_04/index.d.ts +1 -1
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/vc-next/index.d.ts +6 -0
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @atlaskit/ufo-interaction-ignore
|
|
2
2
|
|
|
3
|
+
## 5.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- [`f06d1289b0fbd`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/f06d1289b0fbd) -
|
|
8
|
+
Decouple fy26.04 and vcNext TTVC revisions, default revision to be fy26.04
|
|
9
|
+
|
|
10
|
+
## 4.17.1
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- [`0310b1753d4b1`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/0310b1753d4b1) -
|
|
15
|
+
FG cleanup - platform_ufo_enable_trimmed_payload
|
|
16
|
+
|
|
3
17
|
## 4.17.0
|
|
4
18
|
|
|
5
19
|
### Minor Changes
|
|
@@ -13,9 +13,9 @@ getPageLoadDetailedInteractionMetrics=function getPageLoadDetailedInteractionMet
|
|
|
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:(0,_getReactUfoPayloadVersion.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
14
|
'event:cpu:usage':(0,_machineUtilisation.createPressureStateReport)(interaction.start,interaction.end),'event:memory:usage':(0,_machineUtilisation.createMemoryStateReport)(interaction.start,interaction.end)},criticalPayloadCount!==undefined?{'ufo:multipayload':true,'ufo:criticalPayloadCount':criticalPayloadCount}:{}),(0,_getBrowserMetadata.getBrowserMetadataToLegacyFormat)()),batteryInfo),getSSRProperties(type)),getAssetsMetrics(interaction,pageLoadInteractionMetrics===null||pageLoadInteractionMetrics===void 0?void 0:pageLoadInteractionMetrics.SSRDoneTime)),getPPSMetrics(interaction)),paintMetrics),(0,_getNavigationMetrics.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
|
-
apdex:(0,_optimizeApdex.optimizeApdex)(interaction.apdex,(0,_getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type)),end:Math.round(end)},interaction.end3p?{end3p:Math.round(interaction.end3p)}:{}),{},{start:Math.round(start),segments:(0,_getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type)==='2.0.0'?segmentTree:(0,_utils.getOldSegmentsLabelStack)(segments,interaction.type),marks:(0,_optimizeMarks.optimizeMarks)(interaction.marks,(0,_getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type)),customData:optimizeCustomData(interaction),reactProfilerTimings:(0,_optimizeReactProfilerTimings.optimizeReactProfilerTimings)(interaction.reactProfilerTimings,start,(0,_getReactUfoPayloadVersion.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':(0,_roundNumber.roundEpsilon)(performance.now()-interactionPayloadStart)})}};if(experimental){regularTTAI=undefined;expTTAI=undefined;}if((0,_platformFeatureFlags.fg)('platform_ufo_enable_vc_raw_data')){size=(0,_getPayloadSize.default)(payload.attributes.properties);vcRev=payload.attributes.properties['ufo:vc:rev'];rawData=vcRev.find(function(item){return item.revision==='raw-handler';});if(rawData){rawDataSize=(0,_getPayloadSize.default)(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']=(0,_getPayloadSize.default)(payload.attributes.properties);}else{payload.attributes.properties['event:sizeInKb']=(0,_getPayloadSize.default)(payload.attributes.properties);}
|
|
16
|
+
apdex:(0,_optimizeApdex.optimizeApdex)(interaction.apdex,(0,_getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type)),end:Math.round(end)},interaction.end3p?{end3p:Math.round(interaction.end3p)}:{}),{},{start:Math.round(start),segments:(0,_getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type)==='2.0.0'?segmentTree:(0,_utils.getOldSegmentsLabelStack)(segments,interaction.type),marks:(0,_optimizeMarks.optimizeMarks)(interaction.marks,(0,_getReactUfoPayloadVersion.getReactUFOPayloadVersion)(interaction.type)),customData:optimizeCustomData(interaction),reactProfilerTimings:(0,_optimizeReactProfilerTimings.optimizeReactProfilerTimings)(interaction.reactProfilerTimings,start,(0,_getReactUfoPayloadVersion.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':(0,_roundNumber.roundEpsilon)(performance.now()-interactionPayloadStart)})}};if(experimental){regularTTAI=undefined;expTTAI=undefined;}if((0,_platformFeatureFlags.fg)('platform_ufo_enable_vc_raw_data')){size=(0,_getPayloadSize.default)(payload.attributes.properties);vcRev=payload.attributes.properties['ufo:vc:rev'];rawData=vcRev.find(function(item){return item.revision==='raw-handler';});if(rawData){rawDataSize=(0,_getPayloadSize.default)(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']=(0,_getPayloadSize.default)(payload.attributes.properties);}else{payload.attributes.properties['event:sizeInKb']=(0,_getPayloadSize.default)(payload.attributes.properties);}// in order of importance, first one being least important
|
|
17
17
|
// we can add more fields as necessary
|
|
18
|
-
interactionMetricsFieldsToTrim=['requestInfo','featureFlags','resourceTimings'];properties=payload.attributes.properties;interactionMetrics=properties.interactionMetrics;if(!interactionMetrics){_context.next=
|
|
18
|
+
interactionMetricsFieldsToTrim=['requestInfo','featureFlags','resourceTimings'];properties=payload.attributes.properties;interactionMetrics=properties.interactionMetrics;if(!interactionMetrics){_context.next=74;break;}_iterator=_createForOfIteratorHelper(interactionMetricsFieldsToTrim);_context.prev=52;_iterator.s();case 54:if((_step=_iterator.n()).done){_context.next=66;break;}field=_step.value;if(!((0,_getPayloadSize.default)(properties)<=MAX_PAYLOAD_SIZE)){_context.next=58;break;}return _context.abrupt("continue",64);case 58:interactionMetrics[field]=undefined;properties['event:isTrimmed']=true;trimmedFields=properties['event:trimmedFields'];if(!Array.isArray(trimmedFields)){trimmedFields=[];}trimmedFields.push("interactionMetrics.".concat(field));properties['event:trimmedFields']=trimmedFields;case 64:_context.next=54;break;case 66:_context.next=71;break;case 68:_context.prev=68;_context.t7=_context["catch"](52);_iterator.e(_context.t7);case 71:_context.prev=71;_iterator.f();return _context.finish(71);case 74:return _context.abrupt("return",payload);case 75:case"end":return _context.stop();}},_callee,null,[[52,68,71,74]]);}));return _createInteractionMetricsPayload.apply(this,arguments);}function createPayloads(_x6,_x7){return _createPayloads.apply(this,arguments);}function _createPayloads(){_createPayloads=(0,_asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee2(interactionId,interaction){var ufoNameOverride,modifiedInteraction,payloads,isCriticalMetricsEnabled,vcMetrics,criticalMetricsPayloads,criticalPayloadCount,interactionMetricsPayload;return _regenerator.default.wrap(function _callee2$(_context2){while(1)switch(_context2.prev=_context2.next){case 0:ufoNameOverride=getUfoNameOverride(interaction);modifiedInteraction=_objectSpread(_objectSpread({},interaction),{},{ufoName:ufoNameOverride});payloads=[];isCriticalMetricsEnabled=(0,_platformFeatureFlags.fg)('platform_ufo_critical_metrics_payload');// Calculate VC metrics once to avoid duplicate expensive calculations
|
|
19
19
|
_context2.next=6;return(0,_getVcMetrics.default)(interaction);case 6:vcMetrics=_context2.sent;if(!isCriticalMetricsEnabled){_context2.next=13;break;}_context2.next=10;return(0,_criticalMetricsPayload.createCriticalMetricsPayloads)(interactionId,interaction,vcMetrics);case 10:_context2.t0=_context2.sent;_context2.next=14;break;case 13:_context2.t0=[];case 14:criticalMetricsPayloads=_context2.t0;payloads.push.apply(payloads,(0,_toConsumableArray2.default)(criticalMetricsPayloads));criticalPayloadCount=isCriticalMetricsEnabled?criticalMetricsPayloads.length:undefined;_context2.next=19;return createInteractionMetricsPayload(modifiedInteraction,interactionId,undefined,criticalPayloadCount,vcMetrics);case 19:interactionMetricsPayload=_context2.sent;payloads.push(interactionMetricsPayload);return _context2.abrupt("return",payloads.filter(Boolean));case 22:case"end":return _context2.stop();}},_callee2);}));return _createPayloads.apply(this,arguments);}function createExperimentalMetricsPayload(_x8,_x9){return _createExperimentalMetricsPayload.apply(this,arguments);}function _createExperimentalMetricsPayload(){_createExperimentalMetricsPayload=(0,_asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee3(interactionId,interaction){var config,ufoName,rate,pageVisibilityState,result;return _regenerator.default.wrap(function _callee3$(_context3){while(1)switch(_context3.prev=_context3.next){case 0:config=(0,_config.getConfig)();if(config){_context3.next=3;break;}throw Error('UFO Configuration not provided');case 3:ufoName=(0,_utils.sanitizeUfoName)(interaction.ufoName);rate=(0,_config.getExperimentalInteractionRate)(ufoName,interaction.type);if((0,_coinflip.default)(rate)){_context3.next=7;break;}return _context3.abrupt("return",null);case 7:pageVisibilityState=(0,_hiddenTiming.getPageVisibilityState)(interaction.start,interaction.end);if(!(pageVisibilityState!=='visible')){_context3.next=10;break;}return _context3.abrupt("return",null);case 10:_context3.next=12;return createInteractionMetricsPayload(interaction,interactionId,true);case 12:result=_context3.sent;return _context3.abrupt("return",result);case 14:case"end":return _context3.stop();}},_callee3);}));return _createExperimentalMetricsPayload.apply(this,arguments);}function createExtraSearchPageInteractionPayload(_x0,_x1){return _createExtraSearchPageInteractionPayload.apply(this,arguments);}function _createExtraSearchPageInteractionPayload(){_createExtraSearchPageInteractionPayload=(0,_asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee4(interactionId,interaction){var SAIN_HOLD_NAMES,NAME_OVERRIDE,SEARCH_PAGE_SMART_ANSWERS_SEGMENT_LABEL,newInteractionId,newEnd,holdInfo,reactProfilerTimings,lastHold,isLastHoldSAIN,lastFilteredTime,filteredReactProfilerTimings,lastTiming,modifiedInteraction,payloads,vcMetrics,interactionMetricsPayload;return _regenerator.default.wrap(function _callee4$(_context4){while(1)switch(_context4.prev=_context4.next){case 0:SAIN_HOLD_NAMES=['search-ai-dialog-visible-text-loading','search-ai-dialog-all-text-loading'];NAME_OVERRIDE='search-page-ignoring-smart-answers';SEARCH_PAGE_SMART_ANSWERS_SEGMENT_LABEL='search-page-smart-answers';newInteractionId="".concat(interactionId,"-ignoring-smart-answers");// Calculate a new end time which excludes SAIN holds
|
|
20
20
|
holdInfo=interaction.holdInfo,reactProfilerTimings=interaction.reactProfilerTimings;lastHold=holdInfo.at(-1);isLastHoldSAIN=Boolean(lastHold&&SAIN_HOLD_NAMES.includes(lastHold.name));// A new end time is only calculated if the last hold is a SAIN hold
|
|
21
21
|
if(isLastHoldSAIN){lastFilteredTime=null;filteredReactProfilerTimings=reactProfilerTimings.filter(function(timing){if(timing.commitTime===lastFilteredTime){return false;}var isTimingSmartAnswersInSearch=timing.labelStack.some(function(label){return label.name===SEARCH_PAGE_SMART_ANSWERS_SEGMENT_LABEL;});if(isTimingSmartAnswersInSearch){lastFilteredTime=timing.commitTime;return false;}return true;});lastTiming=filteredReactProfilerTimings.at(-1);if(lastTiming){newEnd=lastTiming.commitTime;}}modifiedInteraction=_objectSpread(_objectSpread({},interaction),{},{end:newEnd!==null&&newEnd!==void 0?newEnd:interaction.end,holdInfo:[],knownSegments:[],reactProfilerTimings:[],ufoName:NAME_OVERRIDE});payloads=[];_context4.next=12;return(0,_getVcMetrics.default)(interaction,false,true);case 12:vcMetrics=_context4.sent;_context4.next=15;return createInteractionMetricsPayload(modifiedInteraction,newInteractionId,undefined,undefined,vcMetrics);case 15:interactionMetricsPayload=_context4.sent;payloads.push(interactionMetricsPayload);return _context4.abrupt("return",payloads.filter(Boolean));case 18:case"end":return _context4.stop();}},_callee4);}));return _createExtraSearchPageInteractionPayload.apply(this,arguments);}
|
|
@@ -69,8 +69,8 @@ var subscribeToInteractionIdChanges = exports.subscribeToInteractionIdChanges =
|
|
|
69
69
|
};
|
|
70
70
|
|
|
71
71
|
// We use a context to allow modals to have their own lifecycle
|
|
72
|
-
var
|
|
73
|
-
var _default = exports.default =
|
|
72
|
+
var interactionContext = /*#__PURE__*/(0, _react.createContext)(DefaultInteractionID);
|
|
73
|
+
var _default = exports.default = interactionContext;
|
|
74
74
|
var getInteractionId = exports.getInteractionId = function getInteractionId() {
|
|
75
75
|
return DefaultInteractionID;
|
|
76
76
|
};
|
|
@@ -8,6 +8,7 @@ exports.default = useUFOTypingPerformanceTracing;
|
|
|
8
8
|
var _react = require("react");
|
|
9
9
|
var _scheduler = require("scheduler");
|
|
10
10
|
var _uuid = require("uuid");
|
|
11
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
11
12
|
var _coinflip = _interopRequireDefault(require("../coinflip"));
|
|
12
13
|
var _config = require("../config");
|
|
13
14
|
var _interactionMetrics = require("../interaction-metrics");
|
|
@@ -80,10 +81,15 @@ function typingPerformanceTracingTimeout(element, name, rate) {
|
|
|
80
81
|
tsubmit = setTimeout(end, 2000); // debounce
|
|
81
82
|
}, 0);
|
|
82
83
|
};
|
|
83
|
-
|
|
84
|
+
if (typeof (element === null || element === void 0 ? void 0 : element.addEventListener) !== 'function' && (0, _platformFeatureFlags.fg)('jfp-magma-ufo-event-listener-error')) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
84
87
|
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
85
88
|
element.addEventListener('keypress', onKeyPressHandler);
|
|
86
89
|
return function () {
|
|
90
|
+
if (typeof (element === null || element === void 0 ? void 0 : element.removeEventListener) !== 'function' && (0, _platformFeatureFlags.fg)('jfp-magma-ufo-event-listener-error')) {
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
87
93
|
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
88
94
|
element.removeEventListener('keypress', onKeyPressHandler);
|
|
89
95
|
};
|
|
@@ -152,10 +158,15 @@ function typingPerformanceTracingTimeoutNoAlloc(element, name, rate) {
|
|
|
152
158
|
tsubmit = setTimeout(end, 2000); // debounce
|
|
153
159
|
}, 0);
|
|
154
160
|
};
|
|
155
|
-
|
|
161
|
+
if (typeof (element === null || element === void 0 ? void 0 : element.addEventListener) !== 'function' && (0, _platformFeatureFlags.fg)('jfp-magma-ufo-event-listener-error')) {
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
156
164
|
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
157
165
|
element.addEventListener('keypress', onKeyPressHandler);
|
|
158
166
|
return function () {
|
|
167
|
+
if (typeof (element === null || element === void 0 ? void 0 : element.removeEventListener) !== 'function' && (0, _platformFeatureFlags.fg)('jfp-magma-ufo-event-listener-error')) {
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
159
170
|
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
160
171
|
element.removeEventListener('keypress', onKeyPressHandler);
|
|
161
172
|
};
|
|
@@ -240,13 +251,25 @@ function typingPerformanceTracingMutationObserver(element, name, rate) {
|
|
|
240
251
|
childList: true,
|
|
241
252
|
subtree: true
|
|
242
253
|
});
|
|
243
|
-
|
|
254
|
+
if (typeof (element === null || element === void 0 ? void 0 : element.addEventListener) !== 'function' && (0, _platformFeatureFlags.fg)('jfp-magma-ufo-event-listener-error')) {
|
|
255
|
+
return function () {
|
|
256
|
+
return mo.disconnect();
|
|
257
|
+
};
|
|
258
|
+
}
|
|
244
259
|
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
245
260
|
element.addEventListener('keypress', onKeyPressHandler);
|
|
246
261
|
return function () {
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
262
|
+
if ((0, _platformFeatureFlags.fg)('jfp-magma-ufo-event-listener-error')) {
|
|
263
|
+
if (typeof (element === null || element === void 0 ? void 0 : element.removeEventListener) === 'function') {
|
|
264
|
+
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
265
|
+
element.removeEventListener('keypress', onKeyPressHandler);
|
|
266
|
+
}
|
|
267
|
+
mo.disconnect();
|
|
268
|
+
} else {
|
|
269
|
+
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
270
|
+
element.removeEventListener('keypress', onKeyPressHandler);
|
|
271
|
+
mo.disconnect();
|
|
272
|
+
}
|
|
250
273
|
};
|
|
251
274
|
}
|
|
252
275
|
var typingPerformanceTracingMethods = {
|
package/dist/cjs/vc/index.js
CHANGED
|
@@ -14,7 +14,6 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
|
|
|
14
14
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
15
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
16
16
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
17
|
-
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
18
17
|
var _config = require("../config");
|
|
19
18
|
var _noOpVcObserver = require("./no-op-vc-observer");
|
|
20
19
|
var _vcObserver = require("./vc-observer");
|
|
@@ -36,8 +35,7 @@ var VCObserverWrapper = exports.VCObserverWrapper = /*#__PURE__*/function () {
|
|
|
36
35
|
this.ssrPlaceholderHandler = new _ssrPlaceholders.SSRPlaceholderHandlers({
|
|
37
36
|
enablePageLayoutPlaceholder: (_opts$ssrEnablePageLa = opts.ssrEnablePageLayoutPlaceholder) !== null && _opts$ssrEnablePageLa !== void 0 ? _opts$ssrEnablePageLa : false
|
|
38
37
|
});
|
|
39
|
-
|
|
40
|
-
if ((0, _config.isVCRevisionEnabled)('fy25.03') || (0, _config.isVCRevisionEnabled)(ttvcV4RevisionName)) {
|
|
38
|
+
if ((0, _config.isVCRevisionEnabled)('fy25.03') || (0, _config.isVCRevisionEnabled)('fy26.04')) {
|
|
41
39
|
var _opts$ssrEnablePageLa2;
|
|
42
40
|
this.newVCObserver = new _vcObserverNew.default({
|
|
43
41
|
selectorConfig: opts.selectorConfig,
|
|
@@ -18,13 +18,16 @@ var _interactionMetrics = require("../../interaction-metrics");
|
|
|
18
18
|
var _ssrPlaceholders = require("../vc-observer/observers/ssr-placeholders");
|
|
19
19
|
var _entriesTimeline = _interopRequireDefault(require("./entries-timeline"));
|
|
20
20
|
var _getElementName2 = _interopRequireDefault(require("./get-element-name"));
|
|
21
|
-
var
|
|
21
|
+
var _fy25_ = _interopRequireDefault(require("./metric-calculator/fy25_03"));
|
|
22
22
|
var _fy26_ = _interopRequireDefault(require("./metric-calculator/fy26_04"));
|
|
23
23
|
var _getViewportHeight = _interopRequireDefault(require("./metric-calculator/utils/get-viewport-height"));
|
|
24
24
|
var _getViewportWidth = _interopRequireDefault(require("./metric-calculator/utils/get-viewport-width"));
|
|
25
|
+
var _vcNext2 = _interopRequireDefault(require("./metric-calculator/vc-next"));
|
|
25
26
|
var _rawDataHandler = _interopRequireDefault(require("./raw-data-handler"));
|
|
26
27
|
var _viewportObserver = _interopRequireDefault(require("./viewport-observer"));
|
|
27
28
|
var _windowEventObserver = _interopRequireDefault(require("./window-event-observer"));
|
|
29
|
+
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; }
|
|
30
|
+
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; }
|
|
28
31
|
var SSRState = {
|
|
29
32
|
normal: 1,
|
|
30
33
|
waitingForFirstRender: 2,
|
|
@@ -250,7 +253,7 @@ var VCObserverNew = exports.default = /*#__PURE__*/function () {
|
|
|
250
253
|
key: "getVCResult",
|
|
251
254
|
value: function () {
|
|
252
255
|
var _getVCResult = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(param) {
|
|
253
|
-
var start, stop, interactionId, interactionType, interactionAbortReason, isPageVisible, include3p, includeSSRRatio, excludeSmartAnswersInSearch, includeRawData, rawDataStopTime, results, feVCCalculationStartTime, calculator_fy25_03, orderedEntries, fy25_03, calculator_fy26_04, fy26_04,
|
|
256
|
+
var start, stop, interactionId, interactionType, interactionAbortReason, isPageVisible, include3p, includeSSRRatio, excludeSmartAnswersInSearch, includeRawData, rawDataStopTime, results, feVCCalculationStartTime, calculator_fy25_03, orderedEntries, fy25_03, calculator_fy26_04, fy26_04, calculator_next, vcNext, _vcNext, feVCCalculationEndTime, rawVCCalculationStartTime, rawHandler, rawStopTime, rawOrderedEntries, raw;
|
|
254
257
|
return _regenerator.default.wrap(function _callee$(_context) {
|
|
255
258
|
while (1) switch (_context.prev = _context.next) {
|
|
256
259
|
case 0:
|
|
@@ -258,7 +261,7 @@ var VCObserverNew = exports.default = /*#__PURE__*/function () {
|
|
|
258
261
|
results = [];
|
|
259
262
|
this.addStartEntry(start);
|
|
260
263
|
feVCCalculationStartTime = performance.now();
|
|
261
|
-
calculator_fy25_03 = new
|
|
264
|
+
calculator_fy25_03 = new _fy25_.default();
|
|
262
265
|
if (param.includeSSRInV3 && param.ssr) {
|
|
263
266
|
this.addSSR(param.ssr);
|
|
264
267
|
}
|
|
@@ -266,15 +269,11 @@ var VCObserverNew = exports.default = /*#__PURE__*/function () {
|
|
|
266
269
|
start: start,
|
|
267
270
|
stop: stop
|
|
268
271
|
});
|
|
269
|
-
if (!(0, _platformFeatureFlags.fg)('platform_ufo_vcnext_to_fy26_04_revision_update')) {
|
|
270
|
-
_context.next = 30;
|
|
271
|
-
break;
|
|
272
|
-
}
|
|
273
272
|
if (!(0, _config.isVCRevisionEnabled)('fy25.03')) {
|
|
274
|
-
_context.next =
|
|
273
|
+
_context.next = 13;
|
|
275
274
|
break;
|
|
276
275
|
}
|
|
277
|
-
_context.next =
|
|
276
|
+
_context.next = 10;
|
|
278
277
|
return calculator_fy25_03.calculate({
|
|
279
278
|
orderedEntries: orderedEntries,
|
|
280
279
|
startTime: start,
|
|
@@ -288,13 +287,13 @@ var VCObserverNew = exports.default = /*#__PURE__*/function () {
|
|
|
288
287
|
isPageVisible: isPageVisible,
|
|
289
288
|
interactionAbortReason: interactionAbortReason
|
|
290
289
|
});
|
|
291
|
-
case
|
|
290
|
+
case 10:
|
|
292
291
|
_context.t0 = _context.sent;
|
|
293
|
-
_context.next =
|
|
292
|
+
_context.next = 14;
|
|
294
293
|
break;
|
|
295
|
-
case
|
|
294
|
+
case 13:
|
|
296
295
|
_context.t0 = null;
|
|
297
|
-
case
|
|
296
|
+
case 14:
|
|
298
297
|
fy25_03 = _context.t0;
|
|
299
298
|
if (fy25_03) {
|
|
300
299
|
results.push(fy25_03);
|
|
@@ -306,11 +305,11 @@ var VCObserverNew = exports.default = /*#__PURE__*/function () {
|
|
|
306
305
|
this.addSSR(param.ssr);
|
|
307
306
|
}
|
|
308
307
|
calculator_fy26_04 = new _fy26_.default();
|
|
309
|
-
if (!(
|
|
310
|
-
_context.next =
|
|
308
|
+
if (!(0, _config.isVCRevisionEnabled)('fy26.04')) {
|
|
309
|
+
_context.next = 24;
|
|
311
310
|
break;
|
|
312
311
|
}
|
|
313
|
-
_context.next =
|
|
312
|
+
_context.next = 21;
|
|
314
313
|
return calculator_fy26_04.calculate({
|
|
315
314
|
orderedEntries: orderedEntries,
|
|
316
315
|
startTime: start,
|
|
@@ -324,53 +323,29 @@ var VCObserverNew = exports.default = /*#__PURE__*/function () {
|
|
|
324
323
|
isPageVisible: isPageVisible,
|
|
325
324
|
interactionAbortReason: interactionAbortReason
|
|
326
325
|
});
|
|
327
|
-
case
|
|
326
|
+
case 21:
|
|
328
327
|
_context.t1 = _context.sent;
|
|
329
|
-
_context.next =
|
|
328
|
+
_context.next = 25;
|
|
330
329
|
break;
|
|
331
|
-
case
|
|
330
|
+
case 24:
|
|
332
331
|
_context.t1 = null;
|
|
333
|
-
case
|
|
332
|
+
case 25:
|
|
334
333
|
fy26_04 = _context.t1;
|
|
335
|
-
if (fy26_04) {
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
'metric:vc90': fy26_04['metric:vc90'],
|
|
339
|
-
clean: fy26_04['clean']
|
|
340
|
-
};
|
|
341
|
-
results.push(fy26_04);
|
|
342
|
-
results.push(vcNext);
|
|
334
|
+
if (!fy26_04) {
|
|
335
|
+
_context.next = 43;
|
|
336
|
+
break;
|
|
343
337
|
}
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
return calculator_fy25_03.calculate({
|
|
349
|
-
orderedEntries: orderedEntries,
|
|
350
|
-
startTime: start,
|
|
351
|
-
stopTime: stop,
|
|
352
|
-
interactionId: interactionId,
|
|
353
|
-
interactionType: interactionType,
|
|
354
|
-
isPostInteraction: this.isPostInteraction,
|
|
355
|
-
include3p: include3p,
|
|
356
|
-
excludeSmartAnswersInSearch: excludeSmartAnswersInSearch,
|
|
357
|
-
includeSSRRatio: includeSSRRatio,
|
|
358
|
-
isPageVisible: isPageVisible,
|
|
359
|
-
interactionAbortReason: interactionAbortReason
|
|
360
|
-
});
|
|
361
|
-
case 32:
|
|
362
|
-
_fy25_ = _context.sent;
|
|
363
|
-
if (_fy25_) {
|
|
364
|
-
results.push(_fy25_);
|
|
338
|
+
results.push(fy26_04);
|
|
339
|
+
if (!(0, _platformFeatureFlags.fg)('platform_ufo_vcnext_for_ttvc_v5')) {
|
|
340
|
+
_context.next = 41;
|
|
341
|
+
break;
|
|
365
342
|
}
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
this.addSSR(param.ssr);
|
|
343
|
+
calculator_next = new _vcNext2.default();
|
|
344
|
+
if (!(0, _config.isVCRevisionEnabled)('next')) {
|
|
345
|
+
_context.next = 36;
|
|
346
|
+
break;
|
|
371
347
|
}
|
|
372
|
-
|
|
373
|
-
_context.next = 38;
|
|
348
|
+
_context.next = 33;
|
|
374
349
|
return calculator_next.calculate({
|
|
375
350
|
orderedEntries: orderedEntries,
|
|
376
351
|
startTime: start,
|
|
@@ -379,20 +354,33 @@ var VCObserverNew = exports.default = /*#__PURE__*/function () {
|
|
|
379
354
|
interactionType: interactionType,
|
|
380
355
|
isPostInteraction: this.isPostInteraction,
|
|
381
356
|
include3p: include3p,
|
|
357
|
+
excludeSmartAnswersInSearch: excludeSmartAnswersInSearch,
|
|
382
358
|
includeSSRRatio: includeSSRRatio,
|
|
383
359
|
isPageVisible: isPageVisible,
|
|
384
360
|
interactionAbortReason: interactionAbortReason
|
|
385
361
|
});
|
|
386
|
-
case
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
362
|
+
case 33:
|
|
363
|
+
_context.t2 = _context.sent;
|
|
364
|
+
_context.next = 37;
|
|
365
|
+
break;
|
|
366
|
+
case 36:
|
|
367
|
+
_context.t2 = null;
|
|
368
|
+
case 37:
|
|
369
|
+
vcNext = _context.t2;
|
|
370
|
+
if (vcNext) {
|
|
371
|
+
results.push(vcNext);
|
|
391
372
|
}
|
|
392
|
-
|
|
373
|
+
_context.next = 43;
|
|
374
|
+
break;
|
|
375
|
+
case 41:
|
|
376
|
+
_vcNext = _objectSpread(_objectSpread({}, fy26_04), {}, {
|
|
377
|
+
revision: 'next'
|
|
378
|
+
});
|
|
379
|
+
results.push(_vcNext);
|
|
380
|
+
case 43:
|
|
393
381
|
feVCCalculationEndTime = performance.now();
|
|
394
382
|
if (!(includeRawData && (0, _platformFeatureFlags.fg)('platform_ufo_enable_vc_raw_data'))) {
|
|
395
|
-
_context.next =
|
|
383
|
+
_context.next = 54;
|
|
396
384
|
break;
|
|
397
385
|
}
|
|
398
386
|
rawVCCalculationStartTime = performance.now();
|
|
@@ -402,14 +390,14 @@ var VCObserverNew = exports.default = /*#__PURE__*/function () {
|
|
|
402
390
|
start: start,
|
|
403
391
|
stop: rawStopTime
|
|
404
392
|
}) : orderedEntries;
|
|
405
|
-
_context.next =
|
|
393
|
+
_context.next = 51;
|
|
406
394
|
return rawHandler.getRawData({
|
|
407
395
|
entries: rawOrderedEntries,
|
|
408
396
|
startTime: start,
|
|
409
397
|
stopTime: rawStopTime,
|
|
410
398
|
isPageVisible: isPageVisible
|
|
411
399
|
});
|
|
412
|
-
case
|
|
400
|
+
case 51:
|
|
413
401
|
raw = _context.sent;
|
|
414
402
|
results.forEach(function (result) {
|
|
415
403
|
delete result.vcDetails;
|
|
@@ -420,9 +408,9 @@ var VCObserverNew = exports.default = /*#__PURE__*/function () {
|
|
|
420
408
|
raw.feVCTime = Number((feVCCalculationEndTime - feVCCalculationStartTime).toFixed(2));
|
|
421
409
|
results.push(raw);
|
|
422
410
|
}
|
|
423
|
-
case
|
|
411
|
+
case 54:
|
|
424
412
|
return _context.abrupt("return", results);
|
|
425
|
-
case
|
|
413
|
+
case 55:
|
|
426
414
|
case "end":
|
|
427
415
|
return _context.stop();
|
|
428
416
|
}
|
|
@@ -33,8 +33,9 @@ var fy26_04_excluded_attributes = ['data-is-hovered' // non-visual attribute
|
|
|
33
33
|
];
|
|
34
34
|
var VCCalculator_FY26_04 = exports.default = /*#__PURE__*/function (_VCCalculator_FY25_) {
|
|
35
35
|
function VCCalculator_FY26_04() {
|
|
36
|
+
var revisionNo = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'fy26.04';
|
|
36
37
|
(0, _classCallCheck2.default)(this, VCCalculator_FY26_04);
|
|
37
|
-
return _callSuper(this, VCCalculator_FY26_04, [
|
|
38
|
+
return _callSuper(this, VCCalculator_FY26_04, [revisionNo]);
|
|
38
39
|
}
|
|
39
40
|
(0, _inherits2.default)(VCCalculator_FY26_04, _VCCalculator_FY25_);
|
|
40
41
|
return (0, _createClass2.default)(VCCalculator_FY26_04, [{
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
9
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
10
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
11
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
12
|
+
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
13
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
14
|
+
var _fy26_ = _interopRequireDefault(require("../fy26_04"));
|
|
15
|
+
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
|
|
16
|
+
function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
|
|
17
|
+
function _superPropGet(t, o, e, r) { var p = (0, _get2.default)((0, _getPrototypeOf2.default)(1 & r ? t.prototype : t), o, e); return 2 & r && "function" == typeof p ? function (t) { return p.apply(e, t); } : p; }
|
|
18
|
+
var getConsideredEntryTypes = function getConsideredEntryTypes() {
|
|
19
|
+
var consideredEntryTypes = [];
|
|
20
|
+
return consideredEntryTypes;
|
|
21
|
+
};
|
|
22
|
+
var getExcludedEntryTypes = function getExcludedEntryTypes() {
|
|
23
|
+
var excludedEntryTypes = [];
|
|
24
|
+
return excludedEntryTypes;
|
|
25
|
+
};
|
|
26
|
+
var VCCalculator_Next = exports.default = /*#__PURE__*/function (_VCCalculator_FY26_) {
|
|
27
|
+
function VCCalculator_Next() {
|
|
28
|
+
(0, _classCallCheck2.default)(this, VCCalculator_Next);
|
|
29
|
+
return _callSuper(this, VCCalculator_Next, ['next']);
|
|
30
|
+
}
|
|
31
|
+
(0, _inherits2.default)(VCCalculator_Next, _VCCalculator_FY26_);
|
|
32
|
+
return (0, _createClass2.default)(VCCalculator_Next, [{
|
|
33
|
+
key: "isEntryIncluded",
|
|
34
|
+
value: function isEntryIncluded(entry, include3p, excludeSmartAnswersInSearch) {
|
|
35
|
+
var isEntryIncludedInV4 = _superPropGet(VCCalculator_Next, "isEntryIncluded", this, 3)([entry, include3p, excludeSmartAnswersInSearch]);
|
|
36
|
+
if (isEntryIncludedInV4 && !getExcludedEntryTypes().includes(entry.data.type)) {
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
return getConsideredEntryTypes().includes(entry.data.type);
|
|
40
|
+
}
|
|
41
|
+
}]);
|
|
42
|
+
}(_fy26_.default);
|
|
@@ -14,9 +14,9 @@ const getPageLoadDetailedInteractionMetrics=()=>{var _config$ssr2,_config$ssr2$g
|
|
|
14
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}:{}),// root
|
|
15
15
|
...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:{namePrefix:config.namePrefix||'',segmentPrefix:config.segmentPrefix||'',interactionId,pageVisibilityAtTTI,pageVisibilityAtTTAI,experimental__pageVisibilityAtTTI:moreAccuratePageVisibilityAtTTI,experimental__pageVisibilityAtTTAI:moreAccuratePageVisibilityAtTTAI,// raw interaction metrics
|
|
16
16
|
rate,routeName,type,abortReason,featureFlags,previousInteractionName,isPreviousInteractionAborted,abortedByInteractionName,// performance
|
|
17
|
-
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}:{}),...labelStack,...pageLoadInteractionMetrics,...getDetailedInteractionMetrics(resourceTimings),...getPageLoadDetailedInteractionMetrics(),...getBm3TrackerTimings(interaction),'metric:ttai':experimental?regularTTAI||expTTAI:undefined,'metric:experimental:ttai':expTTAI,...(unknownElementName?{unknownElementName}:{}),...(unknownElementHierarchy?{unknownElementHierarchy}:{})},'ufo:payloadTime':roundEpsilon(performance.now()-interactionPayloadStart)}}};if(experimental){regularTTAI=undefined;expTTAI=undefined;}if(fg('platform_ufo_enable_vc_raw_data')){const size=getPayloadSize(payload.attributes.properties);const vcRev=payload.attributes.properties['ufo:vc:rev'];const rawData=vcRev.find(item=>item.revision==='raw-handler');if(rawData){const 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(item=>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);}
|
|
17
|
+
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}:{}),...labelStack,...pageLoadInteractionMetrics,...getDetailedInteractionMetrics(resourceTimings),...getPageLoadDetailedInteractionMetrics(),...getBm3TrackerTimings(interaction),'metric:ttai':experimental?regularTTAI||expTTAI:undefined,'metric:experimental:ttai':expTTAI,...(unknownElementName?{unknownElementName}:{}),...(unknownElementHierarchy?{unknownElementHierarchy}:{})},'ufo:payloadTime':roundEpsilon(performance.now()-interactionPayloadStart)}}};if(experimental){regularTTAI=undefined;expTTAI=undefined;}if(fg('platform_ufo_enable_vc_raw_data')){const size=getPayloadSize(payload.attributes.properties);const vcRev=payload.attributes.properties['ufo:vc:rev'];const rawData=vcRev.find(item=>item.revision==='raw-handler');if(rawData){const 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(item=>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
|
|
18
18
|
// we can add more fields as necessary
|
|
19
|
-
const interactionMetricsFieldsToTrim=['requestInfo','featureFlags','resourceTimings'];const properties=payload.attributes.properties;const interactionMetrics=properties.interactionMetrics;if(interactionMetrics){for(const field of interactionMetricsFieldsToTrim){if(getPayloadSize(properties)<=MAX_PAYLOAD_SIZE){continue;}interactionMetrics[field]=undefined;properties['event:isTrimmed']=true;let trimmedFields=properties['event:trimmedFields'];if(!Array.isArray(trimmedFields)){trimmedFields=[];}trimmedFields.push(`interactionMetrics.${field}`);properties['event:trimmedFields']=trimmedFields;}}
|
|
19
|
+
const interactionMetricsFieldsToTrim=['requestInfo','featureFlags','resourceTimings'];const properties=payload.attributes.properties;const interactionMetrics=properties.interactionMetrics;if(interactionMetrics){for(const field of interactionMetricsFieldsToTrim){if(getPayloadSize(properties)<=MAX_PAYLOAD_SIZE){continue;}interactionMetrics[field]=undefined;properties['event:isTrimmed']=true;let trimmedFields=properties['event:trimmedFields'];if(!Array.isArray(trimmedFields)){trimmedFields=[];}trimmedFields.push(`interactionMetrics.${field}`);properties['event:trimmedFields']=trimmedFields;}}return payload;}export async function createPayloads(interactionId,interaction){const ufoNameOverride=getUfoNameOverride(interaction);const modifiedInteraction={...interaction,ufoName:ufoNameOverride};const payloads=[];const isCriticalMetricsEnabled=fg('platform_ufo_critical_metrics_payload');// Calculate VC metrics once to avoid duplicate expensive calculations
|
|
20
20
|
const vcMetrics=await getVCMetrics(interaction);// typeof Promise<CriticalMetricsPayload[]>
|
|
21
21
|
const criticalMetricsPayloads=isCriticalMetricsEnabled?await createCriticalMetricsPayloads(interactionId,interaction,vcMetrics):[];payloads.push(...criticalMetricsPayloads);const criticalPayloadCount=isCriticalMetricsEnabled?criticalMetricsPayloads.length:undefined;const interactionMetricsPayload=await createInteractionMetricsPayload(modifiedInteraction,interactionId,undefined,criticalPayloadCount,vcMetrics);payloads.push(interactionMetricsPayload);return payloads.filter(Boolean);}export async function createExperimentalMetricsPayload(interactionId,interaction){const config=getConfig();if(!config){throw Error('UFO Configuration not provided');}const ufoName=sanitizeUfoName(interaction.ufoName);const rate=getExperimentalInteractionRate(ufoName,interaction.type);if(!coinflip(rate)){return null;}const pageVisibilityState=getPageVisibilityState(interaction.start,interaction.end);if(pageVisibilityState!=='visible'){return null;}const result=await createInteractionMetricsPayload(interaction,interactionId,true);return result;}export async function createExtraSearchPageInteractionPayload(interactionId,interaction){var _newEnd;const SAIN_HOLD_NAMES=['search-ai-dialog-visible-text-loading','search-ai-dialog-all-text-loading'];const NAME_OVERRIDE='search-page-ignoring-smart-answers';const SEARCH_PAGE_SMART_ANSWERS_SEGMENT_LABEL='search-page-smart-answers';const newInteractionId=`${interactionId}-ignoring-smart-answers`;// Calculate a new end time which excludes SAIN holds
|
|
22
22
|
let newEnd;const{holdInfo,reactProfilerTimings}=interaction;const lastHold=holdInfo.at(-1);const isLastHoldSAIN=Boolean(lastHold&&SAIN_HOLD_NAMES.includes(lastHold.name));// A new end time is only calculated if the last hold is a SAIN hold
|
|
@@ -58,7 +58,7 @@ export const subscribeToInteractionIdChanges = listener => {
|
|
|
58
58
|
};
|
|
59
59
|
|
|
60
60
|
// We use a context to allow modals to have their own lifecycle
|
|
61
|
-
const
|
|
62
|
-
export default
|
|
61
|
+
const interactionContext = /*#__PURE__*/createContext(DefaultInteractionID);
|
|
62
|
+
export default interactionContext;
|
|
63
63
|
export const getInteractionId = () => DefaultInteractionID;
|
|
64
64
|
export const useInteractionId = () => DefaultInteractionID;
|
|
@@ -2,6 +2,7 @@ import { useEffect, useRef } from 'react';
|
|
|
2
2
|
import { unstable_IdlePriority as idlePriority, unstable_scheduleCallback as scheduleCallback } from 'scheduler';
|
|
3
3
|
// eslint-disable-next-line @atlaskit/platform/prefer-crypto-random-uuid -- Use crypto.randomUUID instead
|
|
4
4
|
import { v4 as createUUID } from 'uuid';
|
|
5
|
+
import { fg } from '@atlaskit/platform-feature-flags';
|
|
5
6
|
import coinflip from '../coinflip';
|
|
6
7
|
import { getInteractionRate, getTypingPerformanceTracingMethod } from '../config';
|
|
7
8
|
import { addMetadata, addNewInteraction, tryComplete } from '../interaction-metrics';
|
|
@@ -72,10 +73,15 @@ function typingPerformanceTracingTimeout(element, name, rate) {
|
|
|
72
73
|
tsubmit = setTimeout(end, 2000); // debounce
|
|
73
74
|
}, 0);
|
|
74
75
|
};
|
|
75
|
-
|
|
76
|
+
if (typeof (element === null || element === void 0 ? void 0 : element.addEventListener) !== 'function' && fg('jfp-magma-ufo-event-listener-error')) {
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
76
79
|
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
77
80
|
element.addEventListener('keypress', onKeyPressHandler);
|
|
78
81
|
return () => {
|
|
82
|
+
if (typeof (element === null || element === void 0 ? void 0 : element.removeEventListener) !== 'function' && fg('jfp-magma-ufo-event-listener-error')) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
79
85
|
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
80
86
|
element.removeEventListener('keypress', onKeyPressHandler);
|
|
81
87
|
};
|
|
@@ -144,10 +150,15 @@ function typingPerformanceTracingTimeoutNoAlloc(element, name, rate) {
|
|
|
144
150
|
tsubmit = setTimeout(end, 2000); // debounce
|
|
145
151
|
}, 0);
|
|
146
152
|
};
|
|
147
|
-
|
|
153
|
+
if (typeof (element === null || element === void 0 ? void 0 : element.addEventListener) !== 'function' && fg('jfp-magma-ufo-event-listener-error')) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
148
156
|
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
149
157
|
element.addEventListener('keypress', onKeyPressHandler);
|
|
150
158
|
return () => {
|
|
159
|
+
if (typeof (element === null || element === void 0 ? void 0 : element.removeEventListener) !== 'function' && fg('jfp-magma-ufo-event-listener-error')) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
151
162
|
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
152
163
|
element.removeEventListener('keypress', onKeyPressHandler);
|
|
153
164
|
};
|
|
@@ -232,13 +243,23 @@ function typingPerformanceTracingMutationObserver(element, name, rate) {
|
|
|
232
243
|
childList: true,
|
|
233
244
|
subtree: true
|
|
234
245
|
});
|
|
235
|
-
|
|
246
|
+
if (typeof (element === null || element === void 0 ? void 0 : element.addEventListener) !== 'function' && fg('jfp-magma-ufo-event-listener-error')) {
|
|
247
|
+
return () => mo.disconnect();
|
|
248
|
+
}
|
|
236
249
|
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
237
250
|
element.addEventListener('keypress', onKeyPressHandler);
|
|
238
251
|
return () => {
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
252
|
+
if (fg('jfp-magma-ufo-event-listener-error')) {
|
|
253
|
+
if (typeof (element === null || element === void 0 ? void 0 : element.removeEventListener) === 'function') {
|
|
254
|
+
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
255
|
+
element.removeEventListener('keypress', onKeyPressHandler);
|
|
256
|
+
}
|
|
257
|
+
mo.disconnect();
|
|
258
|
+
} else {
|
|
259
|
+
// eslint-disable-next-line @repo/internal/dom-events/no-unsafe-event-listeners
|
|
260
|
+
element.removeEventListener('keypress', onKeyPressHandler);
|
|
261
|
+
mo.disconnect();
|
|
262
|
+
}
|
|
242
263
|
};
|
|
243
264
|
}
|
|
244
265
|
const typingPerformanceTracingMethods = {
|
package/dist/es2019/vc/index.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
var _process, _process$env;
|
|
2
|
-
import { fg } from '@atlaskit/platform-feature-flags';
|
|
3
2
|
import { isVCRevisionEnabled } from '../config';
|
|
4
3
|
import { VCObserverNOOP } from './no-op-vc-observer';
|
|
5
4
|
import { VCObserver } from './vc-observer';
|
|
@@ -16,8 +15,7 @@ export class VCObserverWrapper {
|
|
|
16
15
|
this.ssrPlaceholderHandler = new SSRPlaceholderHandlers({
|
|
17
16
|
enablePageLayoutPlaceholder: (_opts$ssrEnablePageLa = opts.ssrEnablePageLayoutPlaceholder) !== null && _opts$ssrEnablePageLa !== void 0 ? _opts$ssrEnablePageLa : false
|
|
18
17
|
});
|
|
19
|
-
|
|
20
|
-
if (isVCRevisionEnabled('fy25.03') || isVCRevisionEnabled(ttvcV4RevisionName)) {
|
|
18
|
+
if (isVCRevisionEnabled('fy25.03') || isVCRevisionEnabled('fy26.04')) {
|
|
21
19
|
var _opts$ssrEnablePageLa2;
|
|
22
20
|
this.newVCObserver = new VCObserverNew({
|
|
23
21
|
selectorConfig: opts.selectorConfig,
|