@atlaskit/react-ufo 2.14.3 → 2.16.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.
Files changed (73) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/cjs/assets/index.js +96 -0
  3. package/dist/cjs/assets/utils.js +32 -0
  4. package/dist/cjs/common/assets/types.js +5 -0
  5. package/dist/cjs/create-payload/index.js +42 -5
  6. package/dist/cjs/experience-trace-id-context/index.js +5 -1
  7. package/dist/cjs/segment/segment.js +7 -1
  8. package/dist/cjs/vc/vc-observer/heatmap/heatmap.js +264 -0
  9. package/dist/cjs/vc/vc-observer/index.js +119 -26
  10. package/dist/cjs/vc/vc-observer/revisions/ViewportUpdateClassifier.js +60 -0
  11. package/dist/cjs/vc/vc-observer/revisions/fy24_01.js +71 -0
  12. package/dist/cjs/vc/vc-observer/revisions/fy25_01.js +39 -0
  13. package/dist/cjs/vc/vc-observer/revisions/revisions.js +23 -0
  14. package/dist/cjs/vc/vc-observer/revisions/types.js +5 -0
  15. package/dist/es2019/assets/index.js +82 -0
  16. package/dist/es2019/assets/utils.js +26 -0
  17. package/dist/es2019/common/assets/types.js +1 -0
  18. package/dist/es2019/create-payload/index.js +43 -3
  19. package/dist/es2019/experience-trace-id-context/index.js +4 -0
  20. package/dist/es2019/segment/segment.js +11 -3
  21. package/dist/es2019/vc/vc-observer/heatmap/heatmap.js +230 -0
  22. package/dist/es2019/vc/vc-observer/index.js +97 -3
  23. package/dist/es2019/vc/vc-observer/revisions/ViewportUpdateClassifier.js +41 -0
  24. package/dist/es2019/vc/vc-observer/revisions/fy24_01.js +50 -0
  25. package/dist/es2019/vc/vc-observer/revisions/fy25_01.js +21 -0
  26. package/dist/es2019/vc/vc-observer/revisions/revisions.js +19 -0
  27. package/dist/es2019/vc/vc-observer/revisions/types.js +1 -0
  28. package/dist/esm/assets/index.js +89 -0
  29. package/dist/esm/assets/utils.js +26 -0
  30. package/dist/esm/common/assets/types.js +1 -0
  31. package/dist/esm/create-payload/index.js +42 -5
  32. package/dist/esm/experience-trace-id-context/index.js +4 -0
  33. package/dist/esm/segment/segment.js +7 -1
  34. package/dist/esm/vc/vc-observer/heatmap/heatmap.js +257 -0
  35. package/dist/esm/vc/vc-observer/index.js +119 -26
  36. package/dist/esm/vc/vc-observer/revisions/ViewportUpdateClassifier.js +53 -0
  37. package/dist/esm/vc/vc-observer/revisions/fy24_01.js +64 -0
  38. package/dist/esm/vc/vc-observer/revisions/fy25_01.js +32 -0
  39. package/dist/esm/vc/vc-observer/revisions/revisions.js +17 -0
  40. package/dist/esm/vc/vc-observer/revisions/types.js +1 -0
  41. package/dist/types/assets/index.d.ts +25 -0
  42. package/dist/types/assets/utils.d.ts +6 -0
  43. package/dist/types/common/assets/types.d.ts +18 -0
  44. package/dist/types/common/index.d.ts +1 -0
  45. package/dist/types/common/vc/types.d.ts +27 -8
  46. package/dist/types/config/index.d.ts +2 -1
  47. package/dist/types/create-payload/index.d.ts +11616 -0
  48. package/dist/types/experience-trace-id-context/index.d.ts +1 -0
  49. package/dist/types/resource-timing/index.d.ts +1 -1
  50. package/dist/types/vc/vc-observer/heatmap/heatmap.d.ts +72 -0
  51. package/dist/types/vc/vc-observer/index.d.ts +5 -1
  52. package/dist/types/vc/vc-observer/revisions/ViewportUpdateClassifier.d.ts +30 -0
  53. package/dist/types/vc/vc-observer/revisions/fy24_01.d.ts +13 -0
  54. package/dist/types/vc/vc-observer/revisions/fy25_01.d.ts +13 -0
  55. package/dist/types/vc/vc-observer/revisions/revisions.d.ts +2 -0
  56. package/dist/types/vc/vc-observer/revisions/types.d.ts +23 -0
  57. package/dist/types-ts4.5/assets/index.d.ts +25 -0
  58. package/dist/types-ts4.5/assets/utils.d.ts +6 -0
  59. package/dist/types-ts4.5/common/assets/types.d.ts +18 -0
  60. package/dist/types-ts4.5/common/index.d.ts +1 -0
  61. package/dist/types-ts4.5/common/vc/types.d.ts +27 -8
  62. package/dist/types-ts4.5/config/index.d.ts +2 -1
  63. package/dist/types-ts4.5/create-payload/index.d.ts +11616 -0
  64. package/dist/types-ts4.5/experience-trace-id-context/index.d.ts +1 -0
  65. package/dist/types-ts4.5/resource-timing/index.d.ts +1 -1
  66. package/dist/types-ts4.5/vc/vc-observer/heatmap/heatmap.d.ts +72 -0
  67. package/dist/types-ts4.5/vc/vc-observer/index.d.ts +15 -1
  68. package/dist/types-ts4.5/vc/vc-observer/revisions/ViewportUpdateClassifier.d.ts +30 -0
  69. package/dist/types-ts4.5/vc/vc-observer/revisions/fy24_01.d.ts +13 -0
  70. package/dist/types-ts4.5/vc/vc-observer/revisions/fy25_01.d.ts +13 -0
  71. package/dist/types-ts4.5/vc/vc-observer/revisions/revisions.d.ts +2 -0
  72. package/dist/types-ts4.5/vc/vc-observer/revisions/types.d.ts +23 -0
  73. package/package.json +11 -2
@@ -13,7 +13,9 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
13
13
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
14
14
  var _attachAbortListeners = require("./attachAbortListeners");
15
15
  var _getViewport = require("./getViewport");
16
+ var _heatmap = require("./heatmap/heatmap");
16
17
  var _observers = require("./observers");
18
+ var _revisions = require("./revisions/revisions");
17
19
  var _excluded = ["__debug__element"];
18
20
  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; }
19
21
  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; }
@@ -54,6 +56,7 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
54
56
  });
55
57
  /* heatmap */
56
58
  (0, _defineProperty2.default)(this, "arraySize", 0);
59
+ (0, _defineProperty2.default)(this, "multiHeatmap", null);
57
60
  (0, _defineProperty2.default)(this, "componentsLog", {});
58
61
  (0, _defineProperty2.default)(this, "vcRatios", {});
59
62
  (0, _defineProperty2.default)(this, "active", false);
@@ -85,6 +88,7 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
85
88
  abortReason: _objectSpread({}, _this.abortReason),
86
89
  heatmap: _this.heatmap,
87
90
  heatmapNext: _this.heatmapNext,
91
+ multiHeatmap: _this.multiHeatmap,
88
92
  outOfBoundaryInfo: _this.outOfBoundaryInfo,
89
93
  totalTime: Math.round(_this.totalTime + _this.observers.getTotalTime()),
90
94
  componentsLog: _objectSpread({}, _this.componentsLog),
@@ -117,7 +121,8 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
117
121
  componentsLog = rawData.componentsLog,
118
122
  viewport = rawData.viewport,
119
123
  devToolsEnabled = rawData.devToolsEnabled,
120
- ratios = rawData.ratios;
124
+ ratios = rawData.ratios,
125
+ multiHeatmap = rawData.multiHeatmap;
121
126
  if (abortReasonInfo !== null && abortReason.blocking) {
122
127
  // exposing data to devtools
123
128
  try {
@@ -153,6 +158,7 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
153
158
  /* empty */
154
159
  }
155
160
  var _componentsLog = {};
161
+ // eslint-disable-next-line @atlaskit/platform/ensure-feature-flag-prefix
156
162
  if ((0, _platformFeatureFlags.fg)('ufo-remove-vc-component-observations-after-ttai')) {
157
163
  Object.entries(_this.componentsLog).forEach(function (_ref5) {
158
164
  var _ref6 = (0, _slicedToArray2.default)(_ref5, 2),
@@ -209,9 +215,30 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
209
215
  tti: tti,
210
216
  ttai: stop - start
211
217
  },
218
+ start: start,
219
+ stop: stop,
212
220
  heatmap: heatmap,
213
221
  ratios: ratios
214
222
  };
223
+ window.__vcNext = {
224
+ entries: vcNext.VCEntries.rel,
225
+ log: componentsLog,
226
+ metrics: {
227
+ '75': vcNext.VC['75'],
228
+ '80': vcNext.VC['80'],
229
+ '85': vcNext.VC['85'],
230
+ '90': vcNext.VC['90'],
231
+ '95': vcNext.VC['95'],
232
+ '98': vcNext.VC['98'],
233
+ '99': vcNext.VC['99'],
234
+ tti: tti,
235
+ ttai: stop - start
236
+ },
237
+ start: start,
238
+ stop: stop,
239
+ heatmap: heatmapNext,
240
+ ratios: ratios
241
+ };
215
242
 
216
243
  // Emitting a custom event to make it available in the Chrome extension
217
244
  window.dispatchEvent(new CustomEvent('vcReady', {
@@ -224,13 +251,40 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
224
251
  } catch (e) {
225
252
  /* do nothing */
226
253
  }
254
+ var isMultiHeatmapEnabled = (0, _platformFeatureFlags.fg)('ufo_vc_multiheatmap');
255
+ var revisionsData = isMultiHeatmapEnabled && multiHeatmap !== null ? (0, _defineProperty2.default)({}, "".concat(fullPrefix, "vc:rev"), multiHeatmap.getPayloadShapedData({
256
+ VCParts: VCObserver.VCParts.map(function (v) {
257
+ return parseInt(v);
258
+ }),
259
+ VCCalculationMethods: (0, _revisions.getRevisions)().map(function (_ref8) {
260
+ var classifier = _ref8.classifier;
261
+ return classifier.VCCalculationMethod;
262
+ }),
263
+ ssr: ssr,
264
+ clean: !abortReasonInfo
265
+ })) : null;
266
+ // eslint-disable-next-line @atlaskit/platform/ensure-feature-flag-prefix
227
267
  var isCalcSpeedIndexEnabled = (0, _platformFeatureFlags.fg)('ufo-calc-speed-index');
228
- return _objectSpread(_objectSpread((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({
268
+ return _objectSpread(_objectSpread(_objectSpread((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({
229
269
  'metrics:vc': VC
230
- }, "".concat(fullPrefix, "vc:state"), true), "".concat(fullPrefix, "vc:clean"), !abortReasonInfo), "".concat(fullPrefix, "vc:dom"), VCBox), "".concat(fullPrefix, "vc:updates"), VCEntries.rel.slice(0, 50)), "".concat(fullPrefix, "vc:size"), viewport), "".concat(fullPrefix, "vc:time"), Math.round(totalTime + (stopTime - startTime))), "".concat(fullPrefix, "vc:total"), totalPainted), "".concat(fullPrefix, "vc:ratios"), ratios), outOfBoundary), {}, (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, "".concat(fullPrefix, "vc:next"), vcNext.VC), "".concat(fullPrefix, "vc:next:updates"), vcNext.VCEntries.rel.slice(0, 50)), "".concat(fullPrefix, "vc:next:dom"), vcNext.VCBox), "".concat(fullPrefix, "vc:ignored"), _this.getIgnoredElements(componentsLog)), "ufo:speedIndex", isCalcSpeedIndexEnabled ? VCEntries.speedIndex : undefined), "ufo:next:speedIndex", isCalcSpeedIndexEnabled ? vcNext.VCEntries.speedIndex : undefined));
270
+ }, "".concat(fullPrefix, "vc:state"), true), "".concat(fullPrefix, "vc:clean"), !abortReasonInfo), "".concat(fullPrefix, "vc:dom"), VCBox), "".concat(fullPrefix, "vc:updates"), VCEntries.rel.slice(0, 50)), "".concat(fullPrefix, "vc:size"), viewport), "".concat(fullPrefix, "vc:time"), Math.round(totalTime + (stopTime - startTime))), "".concat(fullPrefix, "vc:total"), totalPainted), "".concat(fullPrefix, "vc:ratios"), ratios), outOfBoundary), {}, (0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, "".concat(fullPrefix, "vc:next"), vcNext.VC), "".concat(fullPrefix, "vc:next:updates"), vcNext.VCEntries.rel.slice(0, 50)), "".concat(fullPrefix, "vc:next:dom"), vcNext.VCBox), "".concat(fullPrefix, "vc:ignored"), _this.getIgnoredElements(componentsLog)), revisionsData), {}, (0, _defineProperty2.default)((0, _defineProperty2.default)({}, "ufo:speedIndex", isCalcSpeedIndexEnabled ? VCEntries.speedIndex : undefined), "ufo:next:speedIndex", isCalcSpeedIndexEnabled ? vcNext.VCEntries.speedIndex : undefined));
231
271
  });
232
272
  (0, _defineProperty2.default)(this, "handleUpdate", function (rawTime, intersectionRect, targetName, element, type, ignoreReason) {
233
273
  _this.measureStart();
274
+ _this.legacyHandleUpdate(rawTime, intersectionRect, targetName, element, type, ignoreReason);
275
+ if ((0, _platformFeatureFlags.fg)('ufo_vc_multiheatmap')) {
276
+ _this.onViewportChangeDetected({
277
+ timestamp: rawTime,
278
+ intersectionRect: intersectionRect,
279
+ targetName: targetName,
280
+ element: element,
281
+ type: type,
282
+ ignoreReason: ignoreReason
283
+ });
284
+ }
285
+ _this.measureStop();
286
+ });
287
+ (0, _defineProperty2.default)(this, "legacyHandleUpdate", function (rawTime, intersectionRect, targetName, element, type, ignoreReason) {
234
288
  if (_this.abortReason.reason === null || _this.abortReason.blocking === false) {
235
289
  var time = Math.round(rawTime - _this.startTime);
236
290
  var mappedValues = _this.mapPixelsToHeatmap(intersectionRect.left, intersectionRect.top, intersectionRect.width, intersectionRect.height);
@@ -251,8 +305,38 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
251
305
  ignoreReason: ignoreReason
252
306
  });
253
307
  }
254
- // devtools export
255
- _this.measureStop();
308
+ });
309
+ (0, _defineProperty2.default)(this, "onViewportChangeDetected", function (_ref10) {
310
+ var element = _ref10.element,
311
+ type = _ref10.type,
312
+ ignoreReason = _ref10.ignoreReason,
313
+ timestamp = _ref10.timestamp,
314
+ targetName = _ref10.targetName,
315
+ intersectionRect = _ref10.intersectionRect;
316
+ if (_this.multiHeatmap === null) {
317
+ return;
318
+ }
319
+ // @todo add abort reason handling
320
+ var time = Math.round(timestamp - _this.startTime);
321
+ var revisions = (0, _revisions.getRevisions)();
322
+ var revisionsClassification = revisions.map(function (revision) {
323
+ return revision.classifier.classifyUpdate({
324
+ element: element,
325
+ type: type,
326
+ ignoreReason: ignoreReason
327
+ });
328
+ }, []);
329
+ _this.multiHeatmap.handleUpdate({
330
+ time: time,
331
+ targetName: targetName,
332
+ intersectionRect: intersectionRect,
333
+ type: type,
334
+ element: element,
335
+ classification: revisionsClassification,
336
+ onError: function onError(error) {
337
+ _this.setAbortReason(abortReason.error, error.time, error.error);
338
+ }
339
+ });
256
340
  });
257
341
  (0, _defineProperty2.default)(this, "mapPixelsToHeatmap", function (left, top, width, height) {
258
342
  var _this$viewport = _this.viewport,
@@ -310,10 +394,10 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
310
394
  var unbinds = (0, _attachAbortListeners.attachAbortListeners)(window, _this.viewport, _this.abortReasonCallback);
311
395
  if ((_window = window) !== null && _window !== void 0 && _window.__SSR_ABORT_LISTENERS__) {
312
396
  var _window2;
313
- Object.entries(window.__SSR_ABORT_LISTENERS__.aborts).forEach(function (_ref8) {
314
- var _ref9 = (0, _slicedToArray2.default)(_ref8, 2),
315
- key = _ref9[0],
316
- time = _ref9[1];
397
+ Object.entries(window.__SSR_ABORT_LISTENERS__.aborts).forEach(function (_ref11) {
398
+ var _ref12 = (0, _slicedToArray2.default)(_ref11, 2),
399
+ key = _ref12[0],
400
+ time = _ref12[1];
317
401
  if (time) {
318
402
  _this.abortReasonCallback(key, time);
319
403
  }
@@ -337,12 +421,19 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
337
421
  });
338
422
  this.heatmap = this.getCleanHeatmap();
339
423
  this.heatmapNext = this.getCleanHeatmap();
424
+ if ((0, _platformFeatureFlags.fg)('ufo_vc_multiheatmap')) {
425
+ this.multiHeatmap = new _heatmap.MultiRevisionHeatmap({
426
+ viewport: this.viewport,
427
+ revisions: (0, _revisions.getRevisions)(),
428
+ devToolsEnabled: this.devToolsEnabled
429
+ });
430
+ }
340
431
  this.isPostInteraction = options.isPostInteraction || false;
341
432
  }
342
433
  return (0, _createClass2.default)(VCObserver, [{
343
434
  key: "start",
344
- value: function start(_ref10) {
345
- var startTime = _ref10.startTime;
435
+ value: function start(_ref13) {
436
+ var startTime = _ref13.startTime;
346
437
  this.active = true;
347
438
  if (this.observers.isBrowserSupported()) {
348
439
  this.setViewportSize();
@@ -364,12 +455,12 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
364
455
  }, {
365
456
  key: "getIgnoredElements",
366
457
  value: function getIgnoredElements(componentsLog) {
367
- return Object.values(componentsLog).flat().filter(function (_ref11) {
368
- var ignoreReason = _ref11.ignoreReason;
458
+ return Object.values(componentsLog).flat().filter(function (_ref14) {
459
+ var ignoreReason = _ref14.ignoreReason;
369
460
  return Boolean(ignoreReason);
370
- }).map(function (_ref12) {
371
- var targetName = _ref12.targetName,
372
- ignoreReason = _ref12.ignoreReason;
461
+ }).map(function (_ref15) {
462
+ var targetName = _ref15.targetName,
463
+ ignoreReason = _ref15.ignoreReason;
373
464
  return {
374
465
  targetName: targetName,
375
466
  ignoreReason: ignoreReason
@@ -490,12 +581,12 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
490
581
  }
491
582
  }], [{
492
583
  key: "calculateVC",
493
- value: function calculateVC(_ref13) {
494
- var heatmap = _ref13.heatmap,
495
- _ref13$ssr = _ref13.ssr,
496
- ssr = _ref13$ssr === void 0 ? UNUSED_SECTOR : _ref13$ssr,
497
- componentsLog = _ref13.componentsLog,
498
- viewport = _ref13.viewport;
584
+ value: function calculateVC(_ref16) {
585
+ var heatmap = _ref16.heatmap,
586
+ _ref16$ssr = _ref16.ssr,
587
+ ssr = _ref16$ssr === void 0 ? UNUSED_SECTOR : _ref16$ssr,
588
+ componentsLog = _ref16.componentsLog,
589
+ viewport = _ref16.viewport;
499
590
  var lastUpdate = {};
500
591
  var totalPainted = 0;
501
592
  if (ssr !== UNUSED_SECTOR) {
@@ -538,6 +629,8 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
538
629
  });
539
630
  var VC = VCObserver.makeVCReturnObj();
540
631
  var VCBox = VCObserver.makeVCReturnObj();
632
+
633
+ // eslint-disable-next-line @atlaskit/platform/ensure-feature-flag-prefix
541
634
  var isCalcSpeedIndexEnabled = (0, _platformFeatureFlags.fg)('ufo-calc-speed-index');
542
635
  entries.reduce(function () {
543
636
  var acc = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
@@ -562,11 +655,11 @@ var VCObserver = exports.VCObserver = /*#__PURE__*/function () {
562
655
  });
563
656
  return VCRatio;
564
657
  }, 0);
565
- var VCEntries = entries.reduce(function (acc, _ref14, i) {
658
+ var VCEntries = entries.reduce(function (acc, _ref17, i) {
566
659
  var _acc$abs, _componentsLog$timest, _acc$rel$vc, _acc$rel;
567
- var _ref15 = (0, _slicedToArray2.default)(_ref14, 2),
568
- timestamp = _ref15[0],
569
- entryPainted = _ref15[1];
660
+ var _ref18 = (0, _slicedToArray2.default)(_ref17, 2),
661
+ timestamp = _ref18[0],
662
+ entryPainted = _ref18[1];
570
663
  var currentlyPainted = entryPainted + (((_acc$abs = acc.abs[i - 1]) === null || _acc$abs === void 0 ? void 0 : _acc$abs[1]) || 0);
571
664
  var currentlyPaintedRatio = Math.round(currentlyPainted / totalPainted * 1000) / 10;
572
665
  var logEntry = (_componentsLog$timest = componentsLog[timestamp]) === null || _componentsLog$timest === void 0 ? void 0 : _componentsLog$timest.map(function (v) {
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.ViewportUpdateClassifier = void 0;
8
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
11
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
12
+ var ViewportUpdateClassifier = exports.ViewportUpdateClassifier = /*#__PURE__*/function () {
13
+ function ViewportUpdateClassifier() {
14
+ (0, _classCallCheck2.default)(this, ViewportUpdateClassifier);
15
+ (0, _defineProperty2.default)(this, "types", []);
16
+ (0, _defineProperty2.default)(this, "filters", []);
17
+ (0, _defineProperty2.default)(this, "removedFilters", []);
18
+ (0, _defineProperty2.default)(this, "__combinedTypes", []);
19
+ (0, _defineProperty2.default)(this, "__combinedFilters", []);
20
+ }
21
+ return (0, _createClass2.default)(ViewportUpdateClassifier, [{
22
+ key: "VCCalculationMethod",
23
+ value: function VCCalculationMethod(_) {
24
+ return {
25
+ VC: {},
26
+ VCBox: {}
27
+ };
28
+ }
29
+ }, {
30
+ key: "mergeConfig",
31
+ value: function mergeConfig() {
32
+ var _this = this;
33
+ this.__combinedTypes = [].concat((0, _toConsumableArray2.default)(this.types), (0, _toConsumableArray2.default)((this === null || this === void 0 ? void 0 : this.__combinedTypes) || []));
34
+ var previousFilters = this.removedFilters.length === 0 ? this.__combinedFilters : this.__combinedFilters.filter(function (filter) {
35
+ return !_this.removedFilters.includes(filter.name);
36
+ });
37
+ this.__combinedFilters = [].concat((0, _toConsumableArray2.default)(this.filters), (0, _toConsumableArray2.default)(previousFilters));
38
+ }
39
+ }, {
40
+ key: "classifyUpdate",
41
+ value: function classifyUpdate(_ref) {
42
+ var element = _ref.element,
43
+ type = _ref.type,
44
+ tags = _ref.tags,
45
+ ignoreReason = _ref.ignoreReason;
46
+ if (!this.__combinedTypes.includes(type)) {
47
+ return false;
48
+ }
49
+ return this.__combinedFilters.every(function (_ref2) {
50
+ var filter = _ref2.filter,
51
+ name = _ref2.name;
52
+ return filter({
53
+ type: type,
54
+ tags: tags,
55
+ ignoreReason: ignoreReason
56
+ });
57
+ });
58
+ }
59
+ }]);
60
+ }();
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.revFY24_01Classifier = exports.FY24_01Classifier = 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 _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
13
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
+ var _ViewportUpdateClassifier = require("./ViewportUpdateClassifier");
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
+ var legacyIgnoreReasons = ['image', 'ssr-hydration', 'editor-lazy-node-view', 'editor-container-mutation'];
18
+ var FY24_01Classifier = exports.FY24_01Classifier = /*#__PURE__*/function (_ViewportUpdateClassi) {
19
+ function FY24_01Classifier() {
20
+ var _this;
21
+ (0, _classCallCheck2.default)(this, FY24_01Classifier);
22
+ _this = _callSuper(this, FY24_01Classifier);
23
+ (0, _defineProperty2.default)(_this, "revision", 'fy24.01');
24
+ (0, _defineProperty2.default)(_this, "types", ['html', 'text']);
25
+ (0, _defineProperty2.default)(_this, "filters", [{
26
+ name: 'default-ignore-reasons',
27
+ filter: function filter(_ref) {
28
+ var type = _ref.type,
29
+ ignoreReason = _ref.ignoreReason;
30
+ return !ignoreReason || !legacyIgnoreReasons.includes(ignoreReason);
31
+ }
32
+ }]);
33
+ _this.mergeConfig();
34
+ return _this;
35
+ }
36
+ (0, _inherits2.default)(FY24_01Classifier, _ViewportUpdateClassi);
37
+ return (0, _createClass2.default)(FY24_01Classifier, [{
38
+ key: "VCCalculationMethod",
39
+ value: function VCCalculationMethod(_ref2) {
40
+ var VCParts = _ref2.VCParts,
41
+ entries = _ref2.entries,
42
+ totalPainted = _ref2.totalPainted,
43
+ componentsLog = _ref2.componentsLog;
44
+ var VC = {};
45
+ var VCBox = {};
46
+ entries.reduce(function () {
47
+ var acc = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
48
+ var v = arguments.length > 1 ? arguments[1] : undefined;
49
+ var VCRatio = v[1] / totalPainted + acc;
50
+ var time = v[0];
51
+ VCParts.forEach(function (value) {
52
+ if ((VC[value] === null || VC[value] === undefined) && VCRatio >= value / 100) {
53
+ var _componentsLog$time;
54
+ VC[value] = time;
55
+ VCBox[value] = new Set();
56
+ (_componentsLog$time = componentsLog[time]) === null || _componentsLog$time === void 0 || _componentsLog$time.forEach(function (v) {
57
+ var _VCBox$value;
58
+ return (_VCBox$value = VCBox[value]) === null || _VCBox$value === void 0 ? void 0 : _VCBox$value.add(v.targetName);
59
+ });
60
+ }
61
+ });
62
+ return VCRatio;
63
+ }, 0);
64
+ return {
65
+ VC: VC,
66
+ VCBox: VCBox
67
+ };
68
+ }
69
+ }]);
70
+ }(_ViewportUpdateClassifier.ViewportUpdateClassifier);
71
+ var revFY24_01Classifier = exports.revFY24_01Classifier = new FY24_01Classifier();
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.revFY25_01Classifier = exports.FY25_01Classifier = void 0;
8
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
9
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
10
+ var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
11
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
12
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
13
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
+ var _fy24_ = require("./fy24_01");
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
+ var FY25_01Classifier = exports.FY25_01Classifier = /*#__PURE__*/function (_FY24_01Classifier) {
18
+ function FY25_01Classifier() {
19
+ var _this;
20
+ (0, _classCallCheck2.default)(this, FY25_01Classifier);
21
+ _this = _callSuper(this, FY25_01Classifier);
22
+ (0, _defineProperty2.default)(_this, "revision", 'fy25.01');
23
+ (0, _defineProperty2.default)(_this, "types", ['attr']);
24
+ (0, _defineProperty2.default)(_this, "filters", [{
25
+ name: 'not-visible',
26
+ filter: function filter(_ref) {
27
+ var type = _ref.type,
28
+ ignoreReason = _ref.ignoreReason;
29
+ return !(ignoreReason !== null && ignoreReason !== void 0 && ignoreReason.includes('not-visible'));
30
+ }
31
+ }]);
32
+ (0, _defineProperty2.default)(_this, "removedFilters", []);
33
+ _this.mergeConfig();
34
+ return _this;
35
+ }
36
+ (0, _inherits2.default)(FY25_01Classifier, _FY24_01Classifier);
37
+ return (0, _createClass2.default)(FY25_01Classifier);
38
+ }(_fy24_.FY24_01Classifier);
39
+ var revFY25_01Classifier = exports.revFY25_01Classifier = new FY25_01Classifier();
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getRevisions = void 0;
7
+ var _fy24_ = require("./fy24_01");
8
+ var _fy25_ = require("./fy25_01");
9
+ var Revisions = [{
10
+ name: 'fy24.01',
11
+ classifier: _fy24_.revFY24_01Classifier
12
+ }, {
13
+ name: 'fy25.01',
14
+ classifier: _fy25_.revFY25_01Classifier
15
+ }];
16
+ var revisionResultCache = null;
17
+ var getRevisions = exports.getRevisions = function getRevisions() {
18
+ if (revisionResultCache !== null) {
19
+ return revisionResultCache;
20
+ }
21
+ revisionResultCache = [].concat(Revisions);
22
+ return revisionResultCache;
23
+ };
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
@@ -0,0 +1,82 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import { calculateTransferType, DISK_KEY, MEMORY_KEY, NETWORK_KEY, round } from './utils';
3
+ export class CHRSummary {
4
+ constructor() {
5
+ _defineProperty(this, "bundles", {
6
+ [MEMORY_KEY]: 0,
7
+ [DISK_KEY]: 0,
8
+ [NETWORK_KEY]: 0
9
+ });
10
+ _defineProperty(this, "bundlesCount", 0);
11
+ _defineProperty(this, "size", {
12
+ [MEMORY_KEY]: 0,
13
+ [DISK_KEY]: 0,
14
+ [NETWORK_KEY]: 0
15
+ });
16
+ _defineProperty(this, "sizeTotal", 0);
17
+ }
18
+ add(asset) {
19
+ const size = 'size' in asset ? asset.size : undefined;
20
+ const encodedSize = 'encodedSize' in asset ? Number(asset.encodedSize) : 0;
21
+ const type = calculateTransferType(asset.type, asset.duration, size);
22
+ if (type === null) {
23
+ return;
24
+ }
25
+ this.bundles[type] += 1;
26
+ this.bundlesCount += 1;
27
+ this.size[type] += encodedSize;
28
+ this.sizeTotal += encodedSize;
29
+ }
30
+ static makePayload(summary) {
31
+ const {
32
+ size,
33
+ bundlesCount,
34
+ sizeTotal
35
+ } = summary;
36
+ const cachedSize = size[MEMORY_KEY] + size[DISK_KEY];
37
+ const sizeRatio = round(cachedSize / summary.sizeTotal);
38
+ return {
39
+ size: sizeTotal,
40
+ chr: sizeRatio,
41
+ count: bundlesCount
42
+ };
43
+ }
44
+ }
45
+ export class CHRReporter {
46
+ constructor() {
47
+ _defineProperty(this, "all", new CHRSummary());
48
+ _defineProperty(this, "allAtlassian", new CHRSummary());
49
+ _defineProperty(this, "preloaded", new CHRSummary());
50
+ }
51
+ get(resourceTimings, assetsClassification) {
52
+ try {
53
+ Object.entries(resourceTimings).map(([label, entry]) => {
54
+ if (assetsClassification.all) {
55
+ this.all.add(entry);
56
+ }
57
+ if (assetsClassification.allAtlassian({
58
+ label,
59
+ entry
60
+ })) {
61
+ this.allAtlassian.add(entry);
62
+ }
63
+ if (assetsClassification.preloaded({
64
+ label,
65
+ entry
66
+ })) {
67
+ this.preloaded.add(entry);
68
+ }
69
+ });
70
+ if (this.all.bundlesCount === 0) {
71
+ return null;
72
+ }
73
+ return {
74
+ all: CHRSummary.makePayload(this.all),
75
+ allAtlassian: CHRSummary.makePayload(this.allAtlassian),
76
+ preloaded: CHRSummary.makePayload(this.preloaded)
77
+ };
78
+ } catch (error) {
79
+ return null;
80
+ }
81
+ }
82
+ }
@@ -0,0 +1,26 @@
1
+ /* Borrowed from https://bitbucket.org/atlassian/atlassian-frontend/src/master/packages/performance/browser-metrics/src/plugins/timings/resource.ts */
2
+ export const cacheableTypes = ['script', 'link'];
3
+ export const MEMORY_KEY = 'mem';
4
+ export const DISK_KEY = 'disk';
5
+ export const NETWORK_KEY = 'net';
6
+ export const calculateTransferType = (type, duration, size) => {
7
+ if (!cacheableTypes.includes(type)) {
8
+ return null;
9
+ }
10
+ if ((size === undefined || size === 0) && duration === 0) {
11
+ return MEMORY_KEY;
12
+ }
13
+ if (size === 0 && duration > 0) {
14
+ return DISK_KEY;
15
+ }
16
+ if (size === undefined) {
17
+ return null;
18
+ }
19
+ return NETWORK_KEY;
20
+ };
21
+ export const round = n => {
22
+ if (isNaN(n)) {
23
+ return 0;
24
+ }
25
+ return Math.round(n * 10000) / 10000;
26
+ };
@@ -0,0 +1 @@
1
+ export {};