@atlaskit/react-ufo 5.4.0 → 5.4.2
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/AGENTS.md +20 -9
- package/CHANGELOG.md +16 -0
- package/api-reference.md +899 -456
- package/dist/cjs/config/index.js +13 -6
- package/dist/cjs/create-interaction-extra-metrics-payload/index.js +19 -18
- package/dist/cjs/create-payload/index.js +2 -2
- package/dist/cjs/ignore-holds/index.js +5 -3
- package/dist/cjs/segment/segment.js +5 -3
- package/dist/cjs/segment/third-party-segment.js +4 -3
- package/dist/cjs/vc/vc-observer-new/viewport-observer/index.js +23 -18
- package/dist/es2019/config/index.js +12 -8
- package/dist/es2019/create-interaction-extra-metrics-payload/index.js +6 -5
- package/dist/es2019/create-payload/index.js +1 -1
- package/dist/es2019/ignore-holds/index.js +5 -3
- package/dist/es2019/segment/segment.js +5 -3
- package/dist/es2019/segment/third-party-segment.js +3 -2
- package/dist/es2019/vc/vc-observer-new/viewport-observer/index.js +7 -2
- package/dist/esm/config/index.js +12 -6
- package/dist/esm/create-interaction-extra-metrics-payload/index.js +20 -19
- package/dist/esm/create-payload/index.js +2 -2
- package/dist/esm/ignore-holds/index.js +4 -2
- package/dist/esm/segment/segment.js +4 -2
- package/dist/esm/segment/third-party-segment.js +3 -2
- package/dist/esm/vc/vc-observer-new/viewport-observer/index.js +21 -16
- package/dist/types/common/react-ufo-payload-schema.d.ts +1 -1
- package/dist/types/config/index.d.ts +2 -1
- package/dist/types/ignore-holds/index.d.ts +5 -1
- package/dist/types/segment/segment.d.ts +5 -1
- package/dist/types/segment/third-party-segment.d.ts +4 -1
- package/dist/types/vc/vc-observer-new/viewport-observer/index.d.ts +1 -0
- package/dist/types-ts4.5/common/react-ufo-payload-schema.d.ts +1 -1
- package/dist/types-ts4.5/config/index.d.ts +2 -1
- package/dist/types-ts4.5/ignore-holds/index.d.ts +5 -1
- package/dist/types-ts4.5/segment/segment.d.ts +5 -1
- package/dist/types-ts4.5/segment/third-party-segment.d.ts +4 -1
- package/dist/types-ts4.5/vc/vc-observer-new/viewport-observer/index.d.ts +1 -0
- package/package.json +7 -1
package/dist/esm/config/index.js
CHANGED
|
@@ -5,7 +5,10 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
|
|
|
5
5
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
6
6
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
7
7
|
var config;
|
|
8
|
-
export var DEFAULT_TTVC_REVISION = '
|
|
8
|
+
export var DEFAULT_TTVC_REVISION = 'fy26.04';
|
|
9
|
+
export function getDefaultTTVCRevision() {
|
|
10
|
+
return fg('ufo_update_and_enforce_ttvc_v4_default_version') ? DEFAULT_TTVC_REVISION : 'fy25.03';
|
|
11
|
+
}
|
|
9
12
|
export var UNKNOWN_INTERACTION_RATE = 1000;
|
|
10
13
|
|
|
11
14
|
// Defensively typed, since this is directly user-editable
|
|
@@ -16,13 +19,16 @@ export function setUFOConfig(newConfig) {
|
|
|
16
19
|
// Handle edge cases with `enabledVCRevisions`
|
|
17
20
|
var _ref = (_newConfig$vc = newConfig === null || newConfig === void 0 ? void 0 : newConfig.vc) !== null && _newConfig$vc !== void 0 ? _newConfig$vc : {},
|
|
18
21
|
enabledVCRevisions = _ref.enabledVCRevisions;
|
|
19
|
-
if (_typeof(enabledVCRevisions === null || enabledVCRevisions === void 0 ? void 0 : enabledVCRevisions.byExperience) === 'object') {
|
|
22
|
+
if (fg('ufo_update_and_enforce_ttvc_v4_default_version') ? enabledVCRevisions : _typeof(enabledVCRevisions === null || enabledVCRevisions === void 0 ? void 0 : enabledVCRevisions.byExperience) === 'object') {
|
|
23
|
+
var _enabledVCRevisions$a;
|
|
24
|
+
var byExperience = _typeof(enabledVCRevisions === null || enabledVCRevisions === void 0 ? void 0 : enabledVCRevisions.byExperience) === 'object' ? enabledVCRevisions.byExperience : {};
|
|
20
25
|
config = _objectSpread(_objectSpread({}, newConfig), {}, {
|
|
21
26
|
vc: _objectSpread(_objectSpread({}, newConfig.vc), {}, {
|
|
22
27
|
enabledVCRevisions: {
|
|
23
|
-
// enforce axiom about `enabledVCRevisions.all` config
|
|
24
|
-
|
|
25
|
-
|
|
28
|
+
// enforce axiom about `enabledVCRevisions.all` config:
|
|
29
|
+
// DEFAULT_TTVC_REVISION must always be present in `all`
|
|
30
|
+
all: Array.from(new Set([getDefaultTTVCRevision()].concat(_toConsumableArray((_enabledVCRevisions$a = enabledVCRevisions === null || enabledVCRevisions === void 0 ? void 0 : enabledVCRevisions.all) !== null && _enabledVCRevisions$a !== void 0 ? _enabledVCRevisions$a : []), _toConsumableArray(Object.values(byExperience).flat())))),
|
|
31
|
+
byExperience: byExperience
|
|
26
32
|
}
|
|
27
33
|
})
|
|
28
34
|
});
|
|
@@ -73,7 +79,7 @@ export function getEnabledVCRevisions() {
|
|
|
73
79
|
if (isValidConfigArray(enabledVCRevisions === null || enabledVCRevisions === void 0 ? void 0 : enabledVCRevisions.all)) {
|
|
74
80
|
return enabledVCRevisions.all;
|
|
75
81
|
}
|
|
76
|
-
return [
|
|
82
|
+
return [getDefaultTTVCRevision()];
|
|
77
83
|
}
|
|
78
84
|
return [];
|
|
79
85
|
} catch (_unused) {
|
|
@@ -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 ===
|
|
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 =
|
|
77
|
+
_context.next = 24;
|
|
77
78
|
break;
|
|
78
79
|
}
|
|
79
80
|
return _context.abrupt("return", null);
|
|
80
|
-
case
|
|
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 =
|
|
83
|
+
_context.next = 26;
|
|
83
84
|
break;
|
|
84
85
|
}
|
|
85
86
|
return _context.abrupt("return", null);
|
|
86
|
-
case
|
|
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 =
|
|
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 ===
|
|
100
|
+
return revision === effectiveRevision;
|
|
100
101
|
});
|
|
101
102
|
if (!(lastInteractionFinishRevision !== null && lastInteractionFinishRevision !== void 0 && lastInteractionFinishRevision.clean)) {
|
|
102
|
-
_context.next =
|
|
103
|
+
_context.next = 39;
|
|
103
104
|
break;
|
|
104
105
|
}
|
|
105
106
|
lastInteractionFinishVCClean = true;
|
|
106
107
|
lastInteractionFinishVC90 = lastInteractionFinishRevision['metric:vc90'];
|
|
107
|
-
_context.next =
|
|
108
|
+
_context.next = 40;
|
|
108
109
|
break;
|
|
109
|
-
case 38:
|
|
110
|
-
return _context.abrupt("return", null);
|
|
111
110
|
case 39:
|
|
112
|
-
_context.
|
|
111
|
+
return _context.abrupt("return", null);
|
|
112
|
+
case 40:
|
|
113
|
+
_context.next = 43;
|
|
113
114
|
break;
|
|
114
|
-
case
|
|
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
|
|
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':
|
|
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
|
|
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(
|
|
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)
|
|
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
|
|
@@ -22,7 +22,7 @@ import InteractionContext from '@atlaskit/interaction-context';
|
|
|
22
22
|
* Has an `ignore` prop, to allow you to use it conditionally
|
|
23
23
|
* Has a `reason` prop, to specify why the hold is being ignored
|
|
24
24
|
*/
|
|
25
|
-
|
|
25
|
+
var UFOIgnoreHolds = function UFOIgnoreHolds(_ref) {
|
|
26
26
|
var children = _ref.children,
|
|
27
27
|
_ref$ignore = _ref.ignore,
|
|
28
28
|
ignore = _ref$ignore === void 0 ? true : _ref$ignore;
|
|
@@ -48,4 +48,6 @@ export default function UFOIgnoreHolds(_ref) {
|
|
|
48
48
|
return /*#__PURE__*/React.createElement(InteractionContext.Provider, {
|
|
49
49
|
value: ignoredInteractionContext
|
|
50
50
|
}, kids);
|
|
51
|
-
}
|
|
51
|
+
};
|
|
52
|
+
UFOIgnoreHolds.displayName = 'UFOIgnoreHolds';
|
|
53
|
+
export default UFOIgnoreHolds;
|
|
@@ -21,7 +21,7 @@ var tryCompleteHandle;
|
|
|
21
21
|
var hasMarkedFirstSegmentLoad = false;
|
|
22
22
|
|
|
23
23
|
/** A portion of the page we apply measurement to */
|
|
24
|
-
|
|
24
|
+
var UFOSegment = function UFOSegment(_ref) {
|
|
25
25
|
var segmentName = _ref.name,
|
|
26
26
|
children = _ref.children,
|
|
27
27
|
_ref$mode = _ref.mode,
|
|
@@ -293,4 +293,6 @@ export default function UFOSegment(_ref) {
|
|
|
293
293
|
}, ufoSegment);
|
|
294
294
|
}
|
|
295
295
|
return ufoSegment;
|
|
296
|
-
}
|
|
296
|
+
};
|
|
297
|
+
UFOSegment.displayName = 'UFOSegment';
|
|
298
|
+
export default UFOSegment;
|
|
@@ -5,7 +5,7 @@ import React from 'react';
|
|
|
5
5
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
6
6
|
import UFOIgnoreHolds from '../ignore-holds';
|
|
7
7
|
import UFOSegment from './segment';
|
|
8
|
-
export function UFOThirdPartySegment(props) {
|
|
8
|
+
export var UFOThirdPartySegment = function UFOThirdPartySegment(props) {
|
|
9
9
|
var children = props.children,
|
|
10
10
|
otherProps = _objectWithoutProperties(props, _excluded);
|
|
11
11
|
return fg('platform_ufo_enable_ttai_with_3p') ? /*#__PURE__*/React.createElement(UFOSegment, _extends({
|
|
@@ -16,4 +16,5 @@ export function UFOThirdPartySegment(props) {
|
|
|
16
16
|
ignore: fg('platform_ufo_exclude_3p_elements_from_ttai'),
|
|
17
17
|
reason: "third-party-element"
|
|
18
18
|
}, children));
|
|
19
|
-
}
|
|
19
|
+
};
|
|
20
|
+
UFOThirdPartySegment.displayName = 'UFOThirdPartySegment';
|
|
@@ -268,7 +268,7 @@ var ViewportObserver = /*#__PURE__*/function () {
|
|
|
268
268
|
_context2.prev = 4;
|
|
269
269
|
_loop = /*#__PURE__*/_regeneratorRuntime.mark(function _loop() {
|
|
270
270
|
var _this$getSSRState, _this$intersectionObs;
|
|
271
|
-
var addedNodeRef, addedNode, hasSameDeletedNode,
|
|
271
|
+
var addedNodeRef, addedNode, hasSameDeletedNode, _ref7, isWithinThirdPartySegment, isWithinSmartAnswersSegment, isTargetReactRoot;
|
|
272
272
|
return _regeneratorRuntime.wrap(function _loop$(_context) {
|
|
273
273
|
while (1) switch (_context.prev = _context.next) {
|
|
274
274
|
case 0:
|
|
@@ -287,7 +287,9 @@ var ViewportObserver = /*#__PURE__*/function () {
|
|
|
287
287
|
}
|
|
288
288
|
return n.isEqualNode(addedNode);
|
|
289
289
|
});
|
|
290
|
-
|
|
290
|
+
_ref7 = _this.enableThirdPartyTracking ? checkWithinComponent(addedNode, 'UFOThirdPartySegment', _this.mapIs3pResult) : {
|
|
291
|
+
isWithin: false
|
|
292
|
+
}, isWithinThirdPartySegment = _ref7.isWithin;
|
|
291
293
|
isWithinSmartAnswersSegment = Boolean(_this.shouldCheckSmartAnswersMutations() && isContainedWithinSmartAnswers(addedNode));
|
|
292
294
|
isTargetReactRoot = targetNode === ((_this$getSSRState = _this.getSSRState) === null || _this$getSSRState === void 0 || (_this$getSSRState = _this$getSSRState.call(_this)) === null || _this$getSSRState === void 0 ? void 0 : _this$getSSRState.reactRootElement);
|
|
293
295
|
(_this$intersectionObs = _this.intersectionObserver) === null || _this$intersectionObs === void 0 || _this$intersectionObs.watchAndTag(addedNode, (_this.trackLayoutShiftOffenders ? createElementMutationsWatcherNew : createElementMutationsWatcher)(removedNodeRects, isWithinThirdPartySegment, isWithinSmartAnswersSegment, !!hasSameDeletedNode, timestamp, isTargetReactRoot, _this.getSSRState, _this.getSSRPlaceholderHandler));
|
|
@@ -334,16 +336,16 @@ var ViewportObserver = /*#__PURE__*/function () {
|
|
|
334
336
|
return _ref6.apply(this, arguments);
|
|
335
337
|
};
|
|
336
338
|
}());
|
|
337
|
-
_defineProperty(this, "handleAttributeMutation", function (
|
|
339
|
+
_defineProperty(this, "handleAttributeMutation", function (_ref8) {
|
|
338
340
|
var _this$intersectionObs2;
|
|
339
|
-
var target =
|
|
340
|
-
attributeName =
|
|
341
|
-
oldValue =
|
|
342
|
-
newValue =
|
|
343
|
-
timestamp =
|
|
344
|
-
(_this$intersectionObs2 = _this.intersectionObserver) === null || _this$intersectionObs2 === void 0 || _this$intersectionObs2.watchAndTag(target, function (
|
|
345
|
-
var target =
|
|
346
|
-
rect =
|
|
341
|
+
var target = _ref8.target,
|
|
342
|
+
attributeName = _ref8.attributeName,
|
|
343
|
+
oldValue = _ref8.oldValue,
|
|
344
|
+
newValue = _ref8.newValue,
|
|
345
|
+
timestamp = _ref8.timestamp;
|
|
346
|
+
(_this$intersectionObs2 = _this.intersectionObserver) === null || _this$intersectionObs2 === void 0 || _this$intersectionObs2.watchAndTag(target, function (_ref9) {
|
|
347
|
+
var target = _ref9.target,
|
|
348
|
+
rect = _ref9.rect;
|
|
347
349
|
if (isContainedWithinMediaWrapper(target)) {
|
|
348
350
|
return {
|
|
349
351
|
type: 'mutation:media',
|
|
@@ -356,8 +358,10 @@ var ViewportObserver = /*#__PURE__*/function () {
|
|
|
356
358
|
};
|
|
357
359
|
}
|
|
358
360
|
if (fg('platform_ufo_exclude_3p_attribute_changes')) {
|
|
359
|
-
var
|
|
360
|
-
|
|
361
|
+
var _ref0 = _this.enableThirdPartyTracking ? checkWithinComponent(target, 'UFOThirdPartySegment', _this.mapIs3pResult) : {
|
|
362
|
+
isWithin: false
|
|
363
|
+
},
|
|
364
|
+
isWithinThirdPartySegment = _ref0.isWithin;
|
|
361
365
|
if (isWithinThirdPartySegment) {
|
|
362
366
|
return {
|
|
363
367
|
type: 'mutation:third-party-attribute',
|
|
@@ -462,9 +466,9 @@ var ViewportObserver = /*#__PURE__*/function () {
|
|
|
462
466
|
};
|
|
463
467
|
});
|
|
464
468
|
});
|
|
465
|
-
_defineProperty(this, "handleLayoutShift", function (
|
|
466
|
-
var time =
|
|
467
|
-
changedRects =
|
|
469
|
+
_defineProperty(this, "handleLayoutShift", function (_ref1) {
|
|
470
|
+
var time = _ref1.time,
|
|
471
|
+
changedRects = _ref1.changedRects;
|
|
468
472
|
var _iterator2 = _createForOfIteratorHelper(changedRects),
|
|
469
473
|
_step2;
|
|
470
474
|
try {
|
|
@@ -506,6 +510,7 @@ var ViewportObserver = /*#__PURE__*/function () {
|
|
|
506
510
|
this.getSSRState = getSSRState;
|
|
507
511
|
this.getSSRPlaceholderHandler = getSSRPlaceholderHandler;
|
|
508
512
|
this.searchPageConfig = searchPageConfig;
|
|
513
|
+
this.enableThirdPartyTracking = fg('platform_ufo_reenable_3p_tracking');
|
|
509
514
|
}
|
|
510
515
|
return _createClass(ViewportObserver, [{
|
|
511
516
|
key: "initializeObservers",
|
|
@@ -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'
|
|
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 = "
|
|
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
|
/**
|
|
@@ -24,4 +24,8 @@ export type UFOIgnoreHoldsProps = {
|
|
|
24
24
|
* Has an `ignore` prop, to allow you to use it conditionally
|
|
25
25
|
* Has a `reason` prop, to specify why the hold is being ignored
|
|
26
26
|
*/
|
|
27
|
-
|
|
27
|
+
declare const UFOIgnoreHolds: {
|
|
28
|
+
(props: UFOIgnoreHoldsProps): React.JSX.Element;
|
|
29
|
+
displayName: string;
|
|
30
|
+
};
|
|
31
|
+
export default UFOIgnoreHolds;
|
|
@@ -7,4 +7,8 @@ export type Props = {
|
|
|
7
7
|
type?: UFOSegmentType;
|
|
8
8
|
};
|
|
9
9
|
/** A portion of the page we apply measurement to */
|
|
10
|
-
|
|
10
|
+
declare const UFOSegment: {
|
|
11
|
+
(props: Props): React.JSX.Element;
|
|
12
|
+
displayName: string;
|
|
13
|
+
};
|
|
14
|
+
export default UFOSegment;
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { type Props as SegmentProps } from './segment';
|
|
3
|
-
export declare
|
|
3
|
+
export declare const UFOThirdPartySegment: {
|
|
4
|
+
(props: Omit<SegmentProps, 'type'>): React.JSX.Element;
|
|
5
|
+
displayName: string;
|
|
6
|
+
};
|
|
@@ -26,6 +26,7 @@ export default class ViewportObserver {
|
|
|
26
26
|
private isStarted;
|
|
27
27
|
private trackLayoutShiftOffenders;
|
|
28
28
|
private searchPageConfig;
|
|
29
|
+
private enableThirdPartyTracking;
|
|
29
30
|
private getSSRState?;
|
|
30
31
|
private getSSRPlaceholderHandler?;
|
|
31
32
|
constructor({ onChange, getSSRState, getSSRPlaceholderHandler, trackLayoutShiftOffenders, searchPageConfig, }: ViewPortObserverConstructorArgs);
|
|
@@ -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'
|
|
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 = "
|
|
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
|
/**
|
|
@@ -24,4 +24,8 @@ export type UFOIgnoreHoldsProps = {
|
|
|
24
24
|
* Has an `ignore` prop, to allow you to use it conditionally
|
|
25
25
|
* Has a `reason` prop, to specify why the hold is being ignored
|
|
26
26
|
*/
|
|
27
|
-
|
|
27
|
+
declare const UFOIgnoreHolds: {
|
|
28
|
+
(props: UFOIgnoreHoldsProps): React.JSX.Element;
|
|
29
|
+
displayName: string;
|
|
30
|
+
};
|
|
31
|
+
export default UFOIgnoreHolds;
|
|
@@ -7,4 +7,8 @@ export type Props = {
|
|
|
7
7
|
type?: UFOSegmentType;
|
|
8
8
|
};
|
|
9
9
|
/** A portion of the page we apply measurement to */
|
|
10
|
-
|
|
10
|
+
declare const UFOSegment: {
|
|
11
|
+
(props: Props): React.JSX.Element;
|
|
12
|
+
displayName: string;
|
|
13
|
+
};
|
|
14
|
+
export default UFOSegment;
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { type Props as SegmentProps } from './segment';
|
|
3
|
-
export declare
|
|
3
|
+
export declare const UFOThirdPartySegment: {
|
|
4
|
+
(props: Omit<SegmentProps, 'type'>): React.JSX.Element;
|
|
5
|
+
displayName: string;
|
|
6
|
+
};
|
|
@@ -26,6 +26,7 @@ export default class ViewportObserver {
|
|
|
26
26
|
private isStarted;
|
|
27
27
|
private trackLayoutShiftOffenders;
|
|
28
28
|
private searchPageConfig;
|
|
29
|
+
private enableThirdPartyTracking;
|
|
29
30
|
private getSSRState?;
|
|
30
31
|
private getSSRPlaceholderHandler?;
|
|
31
32
|
constructor({ onChange, getSSRState, getSSRPlaceholderHandler, trackLayoutShiftOffenders, searchPageConfig, }: ViewPortObserverConstructorArgs);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/react-ufo",
|
|
3
|
-
"version": "5.4.
|
|
3
|
+
"version": "5.4.2",
|
|
4
4
|
"description": "Parts of React UFO that are publicly available",
|
|
5
5
|
"author": "Atlassian Pty Ltd",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -206,8 +206,14 @@
|
|
|
206
206
|
"platform_ufo_enable_killswitch_config": {
|
|
207
207
|
"type": "boolean"
|
|
208
208
|
},
|
|
209
|
+
"ufo_update_and_enforce_ttvc_v4_default_version": {
|
|
210
|
+
"type": "boolean"
|
|
211
|
+
},
|
|
209
212
|
"platform_ufo_page_visibility_timeline": {
|
|
210
213
|
"type": "boolean"
|
|
214
|
+
},
|
|
215
|
+
"platform_ufo_reenable_3p_tracking": {
|
|
216
|
+
"type": "boolean"
|
|
211
217
|
}
|
|
212
218
|
}
|
|
213
219
|
}
|