@atlaskit/react-ufo 3.4.1 → 3.4.3
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 +16 -0
- package/dist/cjs/additional-payload/utils/lighthouse-metrics/utils/observer/index.js +8 -2
- package/dist/cjs/create-payload/index.js +136 -76
- package/dist/cjs/segment/segment.js +29 -4
- package/dist/cjs/vc/index.js +22 -2
- package/dist/cjs/vc/no-op-vc-observer.js +44 -0
- package/dist/cjs/vc/vc-observer/index.js +74 -46
- package/dist/cjs/vc/vc-observer/observers/ssr-placeholders/index.js +18 -11
- package/dist/cjs/vc/vc-observer-new/get-element-name.js +52 -64
- package/dist/cjs/vc/vc-observer-new/get-unique-element-name.js +80 -0
- package/dist/cjs/vc/vc-observer-new/metric-calculator/fy25_03/index.js +7 -2
- package/dist/cjs/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +6 -4
- package/dist/cjs/vc/vc-observer-new/viewport-observer/index.js +17 -9
- package/dist/es2019/additional-payload/utils/lighthouse-metrics/utils/observer/index.js +8 -2
- package/dist/es2019/create-payload/index.js +39 -3
- package/dist/es2019/segment/segment.js +29 -3
- package/dist/es2019/vc/index.js +22 -2
- package/dist/es2019/vc/no-op-vc-observer.js +17 -0
- package/dist/es2019/vc/vc-observer/index.js +42 -12
- package/dist/es2019/vc/vc-observer/observers/ssr-placeholders/index.js +14 -7
- package/dist/es2019/vc/vc-observer-new/get-element-name.js +51 -64
- package/dist/es2019/vc/vc-observer-new/get-unique-element-name.js +74 -0
- package/dist/es2019/vc/vc-observer-new/metric-calculator/fy25_03/index.js +6 -1
- package/dist/es2019/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +6 -4
- package/dist/es2019/vc/vc-observer-new/viewport-observer/index.js +17 -9
- package/dist/esm/additional-payload/utils/lighthouse-metrics/utils/observer/index.js +8 -2
- package/dist/esm/create-payload/index.js +136 -76
- package/dist/esm/segment/segment.js +29 -4
- package/dist/esm/vc/index.js +22 -2
- package/dist/esm/vc/no-op-vc-observer.js +37 -0
- package/dist/esm/vc/vc-observer/index.js +74 -46
- package/dist/esm/vc/vc-observer/observers/ssr-placeholders/index.js +18 -11
- package/dist/esm/vc/vc-observer-new/get-element-name.js +52 -64
- package/dist/esm/vc/vc-observer-new/get-unique-element-name.js +74 -0
- package/dist/esm/vc/vc-observer-new/metric-calculator/fy25_03/index.js +6 -1
- package/dist/esm/vc/vc-observer-new/metric-calculator/percentile-calc/canvas-heatmap/canvas-pixel.js +6 -4
- package/dist/esm/vc/vc-observer-new/viewport-observer/index.js +17 -9
- package/dist/types/interaction-context/index.d.ts +2 -0
- package/dist/types/segment/segment.d.ts +2 -1
- package/dist/types/vc/no-op-vc-observer.d.ts +13 -0
- package/dist/types/vc/vc-observer-new/get-unique-element-name.d.ts +8 -0
- package/dist/types/vc/vc-observer-new/metric-calculator/fy25_03/index.d.ts +1 -0
- package/dist/types-ts4.5/interaction-context/index.d.ts +2 -0
- package/dist/types-ts4.5/segment/segment.d.ts +2 -1
- package/dist/types-ts4.5/vc/no-op-vc-observer.d.ts +13 -0
- package/dist/types-ts4.5/vc/vc-observer-new/get-unique-element-name.d.ts +8 -0
- package/dist/types-ts4.5/vc/vc-observer-new/metric-calculator/fy25_03/index.d.ts +1 -0
- package/package.json +7 -1
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
1
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
2
|
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
4
3
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
5
4
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
5
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
6
6
|
var _excluded = ["labelStack", "time"],
|
|
7
7
|
_excluded2 = ["stopTime", "labelStack"],
|
|
8
8
|
_excluded3 = ["labelStack"],
|
|
9
9
|
_excluded4 = ["labelStack"];
|
|
10
|
-
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
11
10
|
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; }
|
|
12
11
|
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; }
|
|
12
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
13
13
|
import Bowser from 'bowser-ultralight';
|
|
14
14
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
15
15
|
import { getLighthouseMetrics } from '../additional-payload';
|
|
@@ -147,21 +147,80 @@ var getSSRSuccess = function getSSRSuccess(type) {
|
|
|
147
147
|
var getSSRFeatureFlags = function getSSRFeatureFlags(type) {
|
|
148
148
|
return type === 'page_load' ? ssr.getSSRFeatureFlags() : undefined;
|
|
149
149
|
};
|
|
150
|
-
var
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
150
|
+
var getLCP = function getLCP(end) {
|
|
151
|
+
return new Promise(function (resolve) {
|
|
152
|
+
var observer;
|
|
153
|
+
var timeout = setTimeout(function () {
|
|
154
|
+
var _observer;
|
|
155
|
+
(_observer = observer) === null || _observer === void 0 || _observer.disconnect();
|
|
156
|
+
resolve(null);
|
|
157
|
+
}, 200);
|
|
158
|
+
observer = new PerformanceObserver(function (list) {
|
|
159
|
+
var entries = Array.from(list.getEntries());
|
|
160
|
+
var lastEntry = entries.reduce(function (agg, entry) {
|
|
161
|
+
// Use the latest LCP candidate before TTAI
|
|
162
|
+
if (entry.startTime <= end && (agg === null || agg.startTime < entry.startTime)) {
|
|
163
|
+
return entry;
|
|
164
|
+
}
|
|
165
|
+
return agg;
|
|
166
|
+
}, null);
|
|
167
|
+
clearTimeout(timeout);
|
|
168
|
+
if (!lastEntry || lastEntry === null) {
|
|
169
|
+
resolve(null);
|
|
170
|
+
} else {
|
|
171
|
+
resolve(lastEntry.startTime);
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
observer.observe({
|
|
175
|
+
type: 'largest-contentful-paint',
|
|
176
|
+
buffered: true
|
|
177
|
+
});
|
|
162
178
|
});
|
|
163
|
-
return metrics;
|
|
164
179
|
};
|
|
180
|
+
var getPaintMetrics = /*#__PURE__*/function () {
|
|
181
|
+
var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(type, end) {
|
|
182
|
+
var metrics, lcp;
|
|
183
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
184
|
+
while (1) switch (_context.prev = _context.next) {
|
|
185
|
+
case 0:
|
|
186
|
+
if (!(type !== 'page_load')) {
|
|
187
|
+
_context.next = 2;
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
return _context.abrupt("return", {});
|
|
191
|
+
case 2:
|
|
192
|
+
metrics = {};
|
|
193
|
+
performance.getEntriesByType('paint').forEach(function (entry) {
|
|
194
|
+
if (entry.name === 'first-paint') {
|
|
195
|
+
metrics['metric:fp'] = Math.round(entry.startTime);
|
|
196
|
+
}
|
|
197
|
+
if (entry.name === 'first-contentful-paint') {
|
|
198
|
+
metrics['metric:fcp'] = Math.round(entry.startTime);
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
if (!fg('ufo_lcp')) {
|
|
202
|
+
_context.next = 9;
|
|
203
|
+
break;
|
|
204
|
+
}
|
|
205
|
+
_context.next = 7;
|
|
206
|
+
return getLCP(end);
|
|
207
|
+
case 7:
|
|
208
|
+
lcp = _context.sent;
|
|
209
|
+
if (lcp) {
|
|
210
|
+
metrics['metric:lcp'] = Math.round(lcp);
|
|
211
|
+
}
|
|
212
|
+
case 9:
|
|
213
|
+
return _context.abrupt("return", metrics);
|
|
214
|
+
case 10:
|
|
215
|
+
case "end":
|
|
216
|
+
return _context.stop();
|
|
217
|
+
}
|
|
218
|
+
}, _callee);
|
|
219
|
+
}));
|
|
220
|
+
return function getPaintMetrics(_x, _x2) {
|
|
221
|
+
return _ref2.apply(this, arguments);
|
|
222
|
+
};
|
|
223
|
+
}();
|
|
165
224
|
var getTTAI = function getTTAI(interaction) {
|
|
166
225
|
var start = interaction.start,
|
|
167
226
|
end = interaction.end;
|
|
@@ -318,10 +377,10 @@ var getTracingContextData = function getTracingContextData(interaction) {
|
|
|
318
377
|
function optimizeCustomData(interaction) {
|
|
319
378
|
var customData = interaction.customData,
|
|
320
379
|
legacyMetrics = interaction.legacyMetrics;
|
|
321
|
-
var customDataMap = customData.reduce(function (result,
|
|
380
|
+
var customDataMap = customData.reduce(function (result, _ref3) {
|
|
322
381
|
var _result$get$data, _result$get;
|
|
323
|
-
var labelStack =
|
|
324
|
-
data =
|
|
382
|
+
var labelStack = _ref3.labelStack,
|
|
383
|
+
data = _ref3.data;
|
|
325
384
|
var label = stringifyLabelStackFully(labelStack);
|
|
326
385
|
var value = (_result$get$data = (_result$get = result.get(label)) === null || _result$get === void 0 ? void 0 : _result$get.data) !== null && _result$get$data !== void 0 ? _result$get$data : {};
|
|
327
386
|
result.set(label, {
|
|
@@ -353,12 +412,12 @@ function optimizeCustomData(interaction) {
|
|
|
353
412
|
return _toConsumableArray(customDataMap.values());
|
|
354
413
|
}
|
|
355
414
|
function optimizeReactProfilerTimings(reactProfilerTimings, interactionStart, reactUFOVersion) {
|
|
356
|
-
var reactProfilerTimingsMap = reactProfilerTimings.reduce(function (result,
|
|
357
|
-
var labelStack =
|
|
358
|
-
startTime =
|
|
359
|
-
commitTime =
|
|
360
|
-
actualDuration =
|
|
361
|
-
type =
|
|
415
|
+
var reactProfilerTimingsMap = reactProfilerTimings.reduce(function (result, _ref4) {
|
|
416
|
+
var labelStack = _ref4.labelStack,
|
|
417
|
+
startTime = _ref4.startTime,
|
|
418
|
+
commitTime = _ref4.commitTime,
|
|
419
|
+
actualDuration = _ref4.actualDuration,
|
|
420
|
+
type = _ref4.type;
|
|
362
421
|
if (labelStack && startTime >= interactionStart) {
|
|
363
422
|
var label = stringifyLabelStackFully(labelStack);
|
|
364
423
|
var start = Math.round(startTime);
|
|
@@ -504,10 +563,10 @@ function optimizeCustomTimings(customTimings, interactionStart) {
|
|
|
504
563
|
}, []);
|
|
505
564
|
}
|
|
506
565
|
function optimizeMarks(marks, reactUFOVersion) {
|
|
507
|
-
return marks.map(function (
|
|
508
|
-
var labelStack =
|
|
509
|
-
time =
|
|
510
|
-
others = _objectWithoutProperties(
|
|
566
|
+
return marks.map(function (_ref5) {
|
|
567
|
+
var labelStack = _ref5.labelStack,
|
|
568
|
+
time = _ref5.time,
|
|
569
|
+
others = _objectWithoutProperties(_ref5, _excluded);
|
|
511
570
|
return _objectSpread(_objectSpread({}, others), {}, {
|
|
512
571
|
labelStack: labelStack && optimizeLabelStack(labelStack, reactUFOVersion),
|
|
513
572
|
time: Math.round(time)
|
|
@@ -515,10 +574,10 @@ function optimizeMarks(marks, reactUFOVersion) {
|
|
|
515
574
|
});
|
|
516
575
|
}
|
|
517
576
|
function optimizeApdex(apdex, reactUFOVersion) {
|
|
518
|
-
return apdex.map(function (
|
|
519
|
-
var stopTime =
|
|
520
|
-
labelStack =
|
|
521
|
-
others = _objectWithoutProperties(
|
|
577
|
+
return apdex.map(function (_ref6) {
|
|
578
|
+
var stopTime = _ref6.stopTime,
|
|
579
|
+
labelStack = _ref6.labelStack,
|
|
580
|
+
others = _objectWithoutProperties(_ref6, _excluded2);
|
|
522
581
|
return _objectSpread(_objectSpread({}, others), {}, {
|
|
523
582
|
stopTime: Math.round(stopTime)
|
|
524
583
|
}, labelStack ? {
|
|
@@ -632,20 +691,20 @@ function getErrorCounts(interaction) {
|
|
|
632
691
|
'ufo:errors:count': interaction.errors.length
|
|
633
692
|
};
|
|
634
693
|
}
|
|
635
|
-
function createInteractionMetricsPayload(
|
|
694
|
+
function createInteractionMetricsPayload(_x3, _x4, _x5) {
|
|
636
695
|
return _createInteractionMetricsPayload.apply(this, arguments);
|
|
637
696
|
}
|
|
638
697
|
function _createInteractionMetricsPayload() {
|
|
639
|
-
_createInteractionMetricsPayload = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function
|
|
698
|
+
_createInteractionMetricsPayload = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(interaction, interactionId, experimental) {
|
|
640
699
|
var _window$location, _config$additionalPay;
|
|
641
|
-
var interactionPayloadStart, config, end, start, ufoName, knownSegments, rate, type, abortReason, routeName, featureFlags, previousInteractionName, isPreviousInteractionAborted, abortedByInteractionName, pageVisibilityAtTTI, pageVisibilityAtTTAI, segments, segmentTree, isDetailedPayload, isPageLoad, calculatePageVisibilityFromTheStartOfPageLoad, moreAccuratePageVisibilityAtTTI, moreAccuratePageVisibilityAtTTAI, labelStack, getInitialPageLoadSSRMetrics, pageLoadInteractionMetrics, getDetailedInteractionMetrics, getPageLoadDetailedInteractionMetrics, newUFOName, resourceTimings, _yield$Promise$all, _yield$Promise$all2, vcMetrics, experimentalMetrics, payload;
|
|
642
|
-
return _regeneratorRuntime.wrap(function
|
|
643
|
-
while (1) switch (
|
|
700
|
+
var interactionPayloadStart, config, end, start, ufoName, knownSegments, rate, type, abortReason, routeName, featureFlags, previousInteractionName, isPreviousInteractionAborted, abortedByInteractionName, pageVisibilityAtTTI, pageVisibilityAtTTAI, segments, segmentTree, isDetailedPayload, isPageLoad, calculatePageVisibilityFromTheStartOfPageLoad, moreAccuratePageVisibilityAtTTI, moreAccuratePageVisibilityAtTTAI, labelStack, getInitialPageLoadSSRMetrics, pageLoadInteractionMetrics, getDetailedInteractionMetrics, getPageLoadDetailedInteractionMetrics, newUFOName, resourceTimings, _yield$Promise$all, _yield$Promise$all2, vcMetrics, experimentalMetrics, paintMetrics, payload;
|
|
701
|
+
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
702
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
644
703
|
case 0:
|
|
645
704
|
interactionPayloadStart = performance.now();
|
|
646
705
|
config = getConfig();
|
|
647
706
|
if (config) {
|
|
648
|
-
|
|
707
|
+
_context2.next = 4;
|
|
649
708
|
break;
|
|
650
709
|
}
|
|
651
710
|
throw Error('UFO Configuration not provided');
|
|
@@ -688,9 +747,9 @@ function _createInteractionMetricsPayload() {
|
|
|
688
747
|
var spans = [].concat(_toConsumableArray(interaction.spans), _toConsumableArray(atlaskitInteractionSpans));
|
|
689
748
|
atlaskitInteractionSpans.length = 0;
|
|
690
749
|
return {
|
|
691
|
-
errors: interaction.errors.map(function (
|
|
692
|
-
var labelStack =
|
|
693
|
-
others = _objectWithoutProperties(
|
|
750
|
+
errors: interaction.errors.map(function (_ref7) {
|
|
751
|
+
var labelStack = _ref7.labelStack,
|
|
752
|
+
others = _objectWithoutProperties(_ref7, _excluded3);
|
|
694
753
|
return _objectSpread(_objectSpread({}, others), {}, {
|
|
695
754
|
labelStack: labelStack && optimizeLabelStack(labelStack, getReactUFOVersion(interaction.type))
|
|
696
755
|
});
|
|
@@ -723,13 +782,14 @@ function _createInteractionMetricsPayload() {
|
|
|
723
782
|
}
|
|
724
783
|
newUFOName = sanitizeUfoName(ufoName);
|
|
725
784
|
resourceTimings = getResourceTimings(start, end);
|
|
726
|
-
|
|
727
|
-
return Promise.all([getVCMetrics(interaction), experimental ? getExperimentalVCMetrics(interaction) : Promise.resolve(undefined)]);
|
|
785
|
+
_context2.next = 24;
|
|
786
|
+
return Promise.all([getVCMetrics(interaction), experimental ? getExperimentalVCMetrics(interaction) : Promise.resolve(undefined), getPaintMetrics(type, end)]);
|
|
728
787
|
case 24:
|
|
729
|
-
_yield$Promise$all =
|
|
730
|
-
_yield$Promise$all2 = _slicedToArray(_yield$Promise$all,
|
|
788
|
+
_yield$Promise$all = _context2.sent;
|
|
789
|
+
_yield$Promise$all2 = _slicedToArray(_yield$Promise$all, 3);
|
|
731
790
|
vcMetrics = _yield$Promise$all2[0];
|
|
732
791
|
experimentalMetrics = _yield$Promise$all2[1];
|
|
792
|
+
paintMetrics = _yield$Promise$all2[2];
|
|
733
793
|
payload = {
|
|
734
794
|
actionSubject: 'experience',
|
|
735
795
|
action: 'measured',
|
|
@@ -750,7 +810,7 @@ function _createInteractionMetricsPayload() {
|
|
|
750
810
|
'event:region': config.region || 'unknown',
|
|
751
811
|
'experience:key': experimental ? 'custom.experimental-interaction-metrics' : 'custom.interaction-metrics',
|
|
752
812
|
'experience:name': newUFOName
|
|
753
|
-
}, getBrowserMetadata()), getSSRProperties(type)), getAssetsMetrics(interaction, pageLoadInteractionMetrics === null || pageLoadInteractionMetrics === void 0 ? void 0 : pageLoadInteractionMetrics.SSRDoneTime)), getPPSMetrics(interaction)),
|
|
813
|
+
}, getBrowserMetadata()), getSSRProperties(type)), getAssetsMetrics(interaction, pageLoadInteractionMetrics === null || pageLoadInteractionMetrics === void 0 ? void 0 : pageLoadInteractionMetrics.SSRDoneTime)), getPPSMetrics(interaction)), paintMetrics), getNavigationMetrics(type)), vcMetrics), experimentalMetrics), (_config$additionalPay = config.additionalPayloadData) === null || _config$additionalPay === void 0 ? void 0 : _config$additionalPay.call(config, interaction)), getTracingContextData(interaction)), getStylesheetMetrics()), getErrorCounts(interaction)), {}, {
|
|
754
814
|
interactionMetrics: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
755
815
|
namePrefix: config.namePrefix || '',
|
|
756
816
|
segmentPrefix: config.segmentPrefix || '',
|
|
@@ -772,9 +832,9 @@ function _createInteractionMetricsPayload() {
|
|
|
772
832
|
apdex: optimizeApdex(interaction.apdex, getReactUFOVersion(interaction.type)),
|
|
773
833
|
end: Math.round(end),
|
|
774
834
|
start: Math.round(start),
|
|
775
|
-
segments: getReactUFOVersion(interaction.type) === '2.0.0' ? segmentTree : segments.map(function (
|
|
776
|
-
var labelStack =
|
|
777
|
-
others = _objectWithoutProperties(
|
|
835
|
+
segments: getReactUFOVersion(interaction.type) === '2.0.0' ? segmentTree : segments.map(function (_ref8) {
|
|
836
|
+
var labelStack = _ref8.labelStack,
|
|
837
|
+
others = _objectWithoutProperties(_ref8, _excluded4);
|
|
778
838
|
return _objectSpread(_objectSpread({}, others), {}, {
|
|
779
839
|
labelStack: optimizeLabelStack(labelStack, getReactUFOVersion(interaction.type))
|
|
780
840
|
});
|
|
@@ -795,53 +855,53 @@ function _createInteractionMetricsPayload() {
|
|
|
795
855
|
expTTAI = undefined;
|
|
796
856
|
}
|
|
797
857
|
payload.attributes.properties['event:sizeInKb'] = getPayloadSize(payload.attributes.properties);
|
|
798
|
-
return
|
|
799
|
-
case
|
|
858
|
+
return _context2.abrupt("return", payload);
|
|
859
|
+
case 33:
|
|
800
860
|
case "end":
|
|
801
|
-
return
|
|
861
|
+
return _context2.stop();
|
|
802
862
|
}
|
|
803
|
-
},
|
|
863
|
+
}, _callee2);
|
|
804
864
|
}));
|
|
805
865
|
return _createInteractionMetricsPayload.apply(this, arguments);
|
|
806
866
|
}
|
|
807
|
-
export function createPayloads(
|
|
867
|
+
export function createPayloads(_x6, _x7) {
|
|
808
868
|
return _createPayloads.apply(this, arguments);
|
|
809
869
|
}
|
|
810
870
|
function _createPayloads() {
|
|
811
|
-
_createPayloads = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function
|
|
871
|
+
_createPayloads = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(interactionId, interaction) {
|
|
812
872
|
var ufoNameOverride, modifiedInteraction, interactionMetricsPayload;
|
|
813
|
-
return _regeneratorRuntime.wrap(function
|
|
814
|
-
while (1) switch (
|
|
873
|
+
return _regeneratorRuntime.wrap(function _callee3$(_context3) {
|
|
874
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
815
875
|
case 0:
|
|
816
876
|
ufoNameOverride = getUfoNameOverride(interaction);
|
|
817
877
|
modifiedInteraction = _objectSpread(_objectSpread({}, interaction), {}, {
|
|
818
878
|
ufoName: ufoNameOverride
|
|
819
879
|
});
|
|
820
|
-
|
|
880
|
+
_context3.next = 4;
|
|
821
881
|
return createInteractionMetricsPayload(modifiedInteraction, interactionId);
|
|
822
882
|
case 4:
|
|
823
|
-
interactionMetricsPayload =
|
|
824
|
-
return
|
|
883
|
+
interactionMetricsPayload = _context3.sent;
|
|
884
|
+
return _context3.abrupt("return", [interactionMetricsPayload]);
|
|
825
885
|
case 6:
|
|
826
886
|
case "end":
|
|
827
|
-
return
|
|
887
|
+
return _context3.stop();
|
|
828
888
|
}
|
|
829
|
-
},
|
|
889
|
+
}, _callee3);
|
|
830
890
|
}));
|
|
831
891
|
return _createPayloads.apply(this, arguments);
|
|
832
892
|
}
|
|
833
|
-
export function createExperimentalMetricsPayload(
|
|
893
|
+
export function createExperimentalMetricsPayload(_x8, _x9) {
|
|
834
894
|
return _createExperimentalMetricsPayload.apply(this, arguments);
|
|
835
895
|
}
|
|
836
896
|
function _createExperimentalMetricsPayload() {
|
|
837
|
-
_createExperimentalMetricsPayload = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function
|
|
897
|
+
_createExperimentalMetricsPayload = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(interactionId, interaction) {
|
|
838
898
|
var config, ufoName, rate, pageVisibilityState, result;
|
|
839
|
-
return _regeneratorRuntime.wrap(function
|
|
840
|
-
while (1) switch (
|
|
899
|
+
return _regeneratorRuntime.wrap(function _callee4$(_context4) {
|
|
900
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
841
901
|
case 0:
|
|
842
902
|
config = getConfig();
|
|
843
903
|
if (config) {
|
|
844
|
-
|
|
904
|
+
_context4.next = 3;
|
|
845
905
|
break;
|
|
846
906
|
}
|
|
847
907
|
throw Error('UFO Configuration not provided');
|
|
@@ -849,28 +909,28 @@ function _createExperimentalMetricsPayload() {
|
|
|
849
909
|
ufoName = sanitizeUfoName(interaction.ufoName);
|
|
850
910
|
rate = getExperimentalInteractionRate(ufoName, interaction.type);
|
|
851
911
|
if (coinflip(rate)) {
|
|
852
|
-
|
|
912
|
+
_context4.next = 7;
|
|
853
913
|
break;
|
|
854
914
|
}
|
|
855
|
-
return
|
|
915
|
+
return _context4.abrupt("return", null);
|
|
856
916
|
case 7:
|
|
857
917
|
pageVisibilityState = getPageVisibilityState(interaction.start, interaction.end);
|
|
858
918
|
if (!(pageVisibilityState !== 'visible')) {
|
|
859
|
-
|
|
919
|
+
_context4.next = 10;
|
|
860
920
|
break;
|
|
861
921
|
}
|
|
862
|
-
return
|
|
922
|
+
return _context4.abrupt("return", null);
|
|
863
923
|
case 10:
|
|
864
|
-
|
|
924
|
+
_context4.next = 12;
|
|
865
925
|
return createInteractionMetricsPayload(interaction, interactionId, true);
|
|
866
926
|
case 12:
|
|
867
|
-
result =
|
|
868
|
-
return
|
|
927
|
+
result = _context4.sent;
|
|
928
|
+
return _context4.abrupt("return", result);
|
|
869
929
|
case 14:
|
|
870
930
|
case "end":
|
|
871
|
-
return
|
|
931
|
+
return _context4.stop();
|
|
872
932
|
}
|
|
873
|
-
},
|
|
933
|
+
}, _callee4);
|
|
874
934
|
}));
|
|
875
935
|
return _createExperimentalMetricsPayload.apply(this, arguments);
|
|
876
936
|
}
|
|
@@ -23,16 +23,40 @@ var AsyncSegmentHighlight = /*#__PURE__*/lazy(function () {
|
|
|
23
23
|
};
|
|
24
24
|
});
|
|
25
25
|
});
|
|
26
|
+
var noopIdMap = new Map();
|
|
26
27
|
|
|
27
28
|
/** A portion of the page we apply measurement to */
|
|
28
29
|
export default function UFOSegment(_ref) {
|
|
29
30
|
var _getConfig2;
|
|
30
31
|
var segmentName = _ref.name,
|
|
31
|
-
children = _ref.children
|
|
32
|
+
children = _ref.children,
|
|
33
|
+
_ref$mode = _ref.mode,
|
|
34
|
+
mode = _ref$mode === void 0 ? 'single' : _ref$mode;
|
|
32
35
|
var parentContext = useContext(UFOInteractionContext);
|
|
36
|
+
var segmentIdMap = useMemo(function () {
|
|
37
|
+
if (!fg('platform_ufo_segment_list_mode')) {
|
|
38
|
+
// just in case we cause rerender issues, use noop map
|
|
39
|
+
return noopIdMap;
|
|
40
|
+
}
|
|
41
|
+
if (!(parentContext !== null && parentContext !== void 0 && parentContext.segmentIdMap)) {
|
|
42
|
+
return new Map();
|
|
43
|
+
}
|
|
44
|
+
return parentContext.segmentIdMap;
|
|
45
|
+
}, [parentContext]);
|
|
33
46
|
var segmentId = useMemo(function () {
|
|
34
|
-
|
|
35
|
-
|
|
47
|
+
if (!fg('platform_ufo_segment_list_mode')) {
|
|
48
|
+
return generateId();
|
|
49
|
+
}
|
|
50
|
+
if (mode === 'single') {
|
|
51
|
+
return generateId();
|
|
52
|
+
}
|
|
53
|
+
if (segmentIdMap.has(segmentName)) {
|
|
54
|
+
return segmentIdMap.get(segmentName);
|
|
55
|
+
}
|
|
56
|
+
var newSegmentId = generateId();
|
|
57
|
+
segmentIdMap.set(segmentName, newSegmentId);
|
|
58
|
+
return newSegmentId;
|
|
59
|
+
}, [mode, segmentName, segmentIdMap]);
|
|
36
60
|
var labelStack = useMemo(function () {
|
|
37
61
|
return parentContext !== null && parentContext !== void 0 && parentContext.labelStack ? [].concat(_toConsumableArray(parentContext.labelStack), [{
|
|
38
62
|
name: segmentName,
|
|
@@ -120,6 +144,7 @@ export default function UFOSegment(_ref) {
|
|
|
120
144
|
}
|
|
121
145
|
return {
|
|
122
146
|
labelStack: labelStack,
|
|
147
|
+
segmentIdMap: segmentIdMap,
|
|
123
148
|
hold: function hold() {
|
|
124
149
|
var name = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'unknown';
|
|
125
150
|
return this._internalHold(this.labelStack, name);
|
|
@@ -220,7 +245,7 @@ export default function UFOSegment(_ref) {
|
|
|
220
245
|
_internalHoldByID: _internalHoldByID,
|
|
221
246
|
complete: complete
|
|
222
247
|
};
|
|
223
|
-
}, [parentContext, labelStack, interactionId]);
|
|
248
|
+
}, [parentContext, labelStack, segmentIdMap, interactionId]);
|
|
224
249
|
var hasMounted = useRef(false);
|
|
225
250
|
var onRender = useCallback(function (_id, phase, actualDuration, baseDuration, startTime, commitTime) {
|
|
226
251
|
var _getConfig;
|
package/dist/esm/vc/index.js
CHANGED
|
@@ -8,6 +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 { getConfig } from '../config';
|
|
11
|
+
import { VCObserverNOOP } from './no-op-vc-observer';
|
|
11
12
|
import { VCObserver } from './vc-observer';
|
|
12
13
|
import VCObserverNew from './vc-observer-new';
|
|
13
14
|
var VCObserverWrapper = /*#__PURE__*/function () {
|
|
@@ -15,7 +16,6 @@ var VCObserverWrapper = /*#__PURE__*/function () {
|
|
|
15
16
|
var _getConfig;
|
|
16
17
|
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
17
18
|
_classCallCheck(this, VCObserverWrapper);
|
|
18
|
-
this.oldVCObserver = new VCObserver(opts);
|
|
19
19
|
this.newVCObserver = null;
|
|
20
20
|
var isNewVCObserverEnabled = fg('platform_ufo_vc_observer_new') || ((_getConfig = getConfig()) === null || _getConfig === void 0 || (_getConfig = _getConfig.vc) === null || _getConfig === void 0 ? void 0 : _getConfig.enableVCObserverNew);
|
|
21
21
|
if (isNewVCObserverEnabled) {
|
|
@@ -23,6 +23,7 @@ var VCObserverWrapper = /*#__PURE__*/function () {
|
|
|
23
23
|
selectorConfig: opts.selectorConfig
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
|
+
this.oldVCObserver = new VCObserver(opts);
|
|
26
27
|
}
|
|
27
28
|
return _createClass(VCObserverWrapper, [{
|
|
28
29
|
key: "start",
|
|
@@ -106,10 +107,29 @@ var VCObserverWrapper = /*#__PURE__*/function () {
|
|
|
106
107
|
}
|
|
107
108
|
}]);
|
|
108
109
|
}();
|
|
110
|
+
var isReactSSR = Boolean(process.env.REACT_SSR);
|
|
111
|
+
var isServer = Boolean(globalThis === null || globalThis === void 0 ? void 0 : globalThis.__SERVER__);
|
|
112
|
+
function isEnvironmentSupported() {
|
|
113
|
+
// SSR environment aren't supported
|
|
114
|
+
if (isReactSSR || isServer) {
|
|
115
|
+
return false;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
// Legacy browsers that doesn't support WeakRef
|
|
119
|
+
// aren't valid
|
|
120
|
+
if (typeof (globalThis === null || globalThis === void 0 ? void 0 : globalThis.WeakRef) !== 'function') {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
if (typeof (globalThis === null || globalThis === void 0 ? void 0 : globalThis.MutationObserver) !== 'function' || typeof (globalThis === null || globalThis === void 0 ? void 0 : globalThis.IntersectionObserver) !== 'function' || typeof (globalThis === null || globalThis === void 0 ? void 0 : globalThis.PerformanceObserver) !== 'function') {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
109
128
|
export var getVCObserver = function getVCObserver() {
|
|
110
129
|
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
111
130
|
if (!globalThis.__vcObserver) {
|
|
112
|
-
|
|
131
|
+
var shouldMockVCObserver = !isEnvironmentSupported();
|
|
132
|
+
globalThis.__vcObserver = shouldMockVCObserver ? new VCObserverNOOP() : new VCObserverWrapper(opts);
|
|
113
133
|
}
|
|
114
134
|
return globalThis.__vcObserver;
|
|
115
135
|
};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
|
2
|
+
import _createClass from "@babel/runtime/helpers/createClass";
|
|
3
|
+
// This class should be used on scenarios where VC can not be calculate
|
|
4
|
+
// such as: SSR environment and legacy browsers
|
|
5
|
+
export var VCObserverNOOP = /*#__PURE__*/function () {
|
|
6
|
+
function VCObserverNOOP() {
|
|
7
|
+
_classCallCheck(this, VCObserverNOOP);
|
|
8
|
+
}
|
|
9
|
+
return _createClass(VCObserverNOOP, [{
|
|
10
|
+
key: "start",
|
|
11
|
+
value: function start(startArg) {}
|
|
12
|
+
}, {
|
|
13
|
+
key: "stop",
|
|
14
|
+
value: function stop() {}
|
|
15
|
+
}, {
|
|
16
|
+
key: "getVCRawData",
|
|
17
|
+
value: function getVCRawData() {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
}, {
|
|
21
|
+
key: "getVCResult",
|
|
22
|
+
value: function getVCResult(param) {
|
|
23
|
+
return Promise.resolve({
|
|
24
|
+
'ufo:vc:noop': true
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}, {
|
|
28
|
+
key: "setSSRElement",
|
|
29
|
+
value: function setSSRElement(element) {}
|
|
30
|
+
}, {
|
|
31
|
+
key: "setReactRootRenderStart",
|
|
32
|
+
value: function setReactRootRenderStart(startTime) {}
|
|
33
|
+
}, {
|
|
34
|
+
key: "setReactRootRenderStop",
|
|
35
|
+
value: function setReactRootRenderStop(stopTime) {}
|
|
36
|
+
}]);
|
|
37
|
+
}();
|