@atlaskit/react-ufo 4.15.14 → 4.15.15

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 CHANGED
@@ -1,5 +1,12 @@
1
1
  # @atlaskit/ufo-interaction-ignore
2
2
 
3
+ ## 4.15.15
4
+
5
+ ### Patch Changes
6
+
7
+ - [`e50c3c4b27b3d`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/e50c3c4b27b3d) -
8
+ Added even data to raw data handler
9
+
3
10
  ## 4.15.14
4
11
 
5
12
  ### Patch Changes
@@ -20,6 +20,9 @@ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbol
20
20
  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; }
21
21
  var ABORTING_WINDOW_EVENT = ['wheel', 'scroll', 'keydown', 'resize'];
22
22
  var MAX_OBSERVATIONS = 100;
23
+ function isWindowEventEntryData(data) {
24
+ return data.type === 'window:event' && 'eventType' in data;
25
+ }
23
26
  var RawDataHandler = exports.default = /*#__PURE__*/function () {
24
27
  function RawDataHandler() {
25
28
  (0, _classCallCheck2.default)(this, RawDataHandler);
@@ -56,7 +59,7 @@ var RawDataHandler = exports.default = /*#__PURE__*/function () {
56
59
  key: "getRawData",
57
60
  value: function () {
58
61
  var _getRawData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(_ref) {
59
- var entries, startTime, stopTime, isPageVisible, isVCClean, dirtyReason, getVCCleanStatusResult, viewportEntries, targetNameToIdMap, elementMapEntriesMap, nextElementId, typeMap, typeMapEntriesMap, nextTypeId, attributeMap, attributeEntriesMap, nextAttributeId, rawObservations, firstObservation, lastObservations, referencedEids, referencedChgs, referencedAtts, _iterator, _step, observation, _iterator2, _step2, eid, _iterator3, _step3, chg, _iterator4, _step4, att, result;
62
+ var entries, startTime, stopTime, isPageVisible, isVCClean, dirtyReason, getVCCleanStatusResult, viewportEntries, windowEventEntries, targetNameToIdMap, elementMapEntriesMap, nextElementId, typeMap, typeMapEntriesMap, nextTypeId, attributeMap, attributeEntriesMap, nextAttributeId, eventTypeMap, eventTypeMapEntriesMap, nextEventTypeId, rawObservations, rawEventObservations, firstObservation, lastObservations, referencedEids, referencedChgs, referencedAtts, _iterator, _step, observation, _iterator2, _step2, eid, _iterator3, _step3, chg, _iterator4, _step4, att, firstEventObservation, lastEventObservations, referencedEvts, _iterator5, _step5, _observation, _iterator6, _step6, evt, result;
60
63
  return _regenerator.default.wrap(function _callee$(_context) {
61
64
  while (1) switch (_context.prev = _context.next) {
62
65
  case 0:
@@ -83,6 +86,9 @@ var RawDataHandler = exports.default = /*#__PURE__*/function () {
83
86
  viewportEntries = entries.filter(function (entry) {
84
87
  return entry.time >= startTime && entry.time <= stopTime && entry.data && entry.data.visible;
85
88
  });
89
+ windowEventEntries = entries.filter(function (entry) {
90
+ return entry.time >= startTime && entry.time <= stopTime && entry.data && isWindowEventEntryData(entry.data);
91
+ });
86
92
  targetNameToIdMap = new Map();
87
93
  elementMapEntriesMap = {};
88
94
  nextElementId = 1;
@@ -92,6 +98,9 @@ var RawDataHandler = exports.default = /*#__PURE__*/function () {
92
98
  attributeMap = new Map();
93
99
  attributeEntriesMap = {};
94
100
  nextAttributeId = 1;
101
+ eventTypeMap = new Map();
102
+ eventTypeMapEntriesMap = {};
103
+ nextEventTypeId = 1;
95
104
  rawObservations = viewportEntries.map(function (entry) {
96
105
  var viewportEntry = entry.data;
97
106
  var targetName = viewportEntry.elementName || '';
@@ -131,6 +140,22 @@ var RawDataHandler = exports.default = /*#__PURE__*/function () {
131
140
  att: att
132
141
  } : {});
133
142
  return observation;
143
+ });
144
+ rawEventObservations = windowEventEntries.map(function (entry) {
145
+ var windowEventEntry = entry.data;
146
+ var eventType = windowEventEntry.eventType;
147
+ var evtId = eventTypeMap.get(eventType) || 0;
148
+ if (evtId === 0) {
149
+ evtId = nextEventTypeId;
150
+ nextEventTypeId += 1;
151
+ eventTypeMap.set(eventType, evtId);
152
+ eventTypeMapEntriesMap[evtId] = eventType;
153
+ }
154
+ var eventObservation = {
155
+ t: Math.round(entry.time - startTime),
156
+ evt: evtId
157
+ };
158
+ return eventObservation;
134
159
  }); // If the number of observations is greater than the maximum allowed, we need to trim the observations to the maximum allowed.
135
160
  // We do this by keeping the first observation and the last MAX_OBSERVATIONS observations.
136
161
  // We then collect the referenced IDs from the remaining observations and remove the unreferenced entries from the maps
@@ -204,6 +229,46 @@ var RawDataHandler = exports.default = /*#__PURE__*/function () {
204
229
  _iterator4.f();
205
230
  }
206
231
  }
232
+
233
+ // If the number of event observations is greater than the maximum allowed, we need to trim the event observations to the maximum allowed.
234
+ // We do this by keeping the first observation and the last MAX_OBSERVATIONS observations.
235
+ // We then collect the referenced IDs from the remaining observations and remove the unreferenced entries from the maps
236
+ if (rawEventObservations.length > MAX_OBSERVATIONS) {
237
+ firstEventObservation = rawEventObservations[0];
238
+ lastEventObservations = rawEventObservations.slice(-MAX_OBSERVATIONS);
239
+ rawEventObservations = [firstEventObservation].concat((0, _toConsumableArray2.default)(lastEventObservations));
240
+
241
+ // Collect referenced IDs from remaining observations
242
+ referencedEvts = new Set();
243
+ _iterator5 = _createForOfIteratorHelper(rawEventObservations);
244
+ try {
245
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
246
+ _observation = _step5.value;
247
+ if (_observation.evt > 0) {
248
+ referencedEvts.add(_observation.evt);
249
+ }
250
+ }
251
+
252
+ // Remove unreferenced entries from maps
253
+ } catch (err) {
254
+ _iterator5.e(err);
255
+ } finally {
256
+ _iterator5.f();
257
+ }
258
+ _iterator6 = _createForOfIteratorHelper(Object.keys(eventTypeMapEntriesMap).map(Number));
259
+ try {
260
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
261
+ evt = _step6.value;
262
+ if (!referencedEvts.has(evt)) {
263
+ delete eventTypeMapEntriesMap[evt];
264
+ }
265
+ }
266
+ } catch (err) {
267
+ _iterator6.e(err);
268
+ } finally {
269
+ _iterator6.f();
270
+ }
271
+ }
207
272
  result = {
208
273
  revision: this.revisionNo,
209
274
  clean: isVCClean,
@@ -212,7 +277,9 @@ var RawDataHandler = exports.default = /*#__PURE__*/function () {
212
277
  obs: rawObservations !== null && rawObservations !== void 0 ? rawObservations : undefined,
213
278
  eid: elementMapEntriesMap !== null && elementMapEntriesMap !== void 0 ? elementMapEntriesMap : undefined,
214
279
  chg: typeMapEntriesMap !== null && typeMapEntriesMap !== void 0 ? typeMapEntriesMap : undefined,
215
- att: attributeEntriesMap !== null && attributeEntriesMap !== void 0 ? attributeEntriesMap : undefined
280
+ att: attributeEntriesMap !== null && attributeEntriesMap !== void 0 ? attributeEntriesMap : undefined,
281
+ evts: rawEventObservations.length > 0 ? rawEventObservations : undefined,
282
+ evt: Object.keys(eventTypeMapEntriesMap).length > 0 ? eventTypeMapEntriesMap : undefined
216
283
  },
217
284
  abortReason: dirtyReason,
218
285
  abortTimestamp: getVCCleanStatusResult.abortTimestamp,
@@ -222,7 +289,7 @@ var RawDataHandler = exports.default = /*#__PURE__*/function () {
222
289
  }
223
290
  };
224
291
  return _context.abrupt("return", result);
225
- case 20:
292
+ case 26:
226
293
  case "end":
227
294
  return _context.stop();
228
295
  }
@@ -3,6 +3,9 @@ import getViewportHeight from '../metric-calculator/utils/get-viewport-height';
3
3
  import getViewportWidth from '../metric-calculator/utils/get-viewport-width';
4
4
  const ABORTING_WINDOW_EVENT = ['wheel', 'scroll', 'keydown', 'resize'];
5
5
  const MAX_OBSERVATIONS = 100;
6
+ function isWindowEventEntryData(data) {
7
+ return data.type === 'window:event' && 'eventType' in data;
8
+ }
6
9
  export default class RawDataHandler {
7
10
  constructor() {
8
11
  _defineProperty(this, "revisionNo", 'raw-handler');
@@ -60,6 +63,9 @@ export default class RawDataHandler {
60
63
  const viewportEntries = entries.filter(entry => {
61
64
  return entry.time >= startTime && entry.time <= stopTime && entry.data && entry.data.visible;
62
65
  });
66
+ const windowEventEntries = entries.filter(entry => {
67
+ return entry.time >= startTime && entry.time <= stopTime && entry.data && isWindowEventEntryData(entry.data);
68
+ });
63
69
  const targetNameToIdMap = new Map();
64
70
  const elementMapEntriesMap = {};
65
71
  let nextElementId = 1;
@@ -69,6 +75,9 @@ export default class RawDataHandler {
69
75
  const attributeMap = new Map();
70
76
  const attributeEntriesMap = {};
71
77
  let nextAttributeId = 1;
78
+ const eventTypeMap = new Map();
79
+ const eventTypeMapEntriesMap = {};
80
+ let nextEventTypeId = 1;
72
81
  let rawObservations = viewportEntries.map(entry => {
73
82
  const viewportEntry = entry.data;
74
83
  const targetName = viewportEntry.elementName || '';
@@ -110,6 +119,23 @@ export default class RawDataHandler {
110
119
  };
111
120
  return observation;
112
121
  });
122
+ let rawEventObservations = windowEventEntries.map(entry => {
123
+ const windowEventEntry = entry.data;
124
+ const eventType = windowEventEntry.eventType;
125
+ let evtId = eventTypeMap.get(eventType) || 0;
126
+ if (evtId === 0) {
127
+ evtId = nextEventTypeId;
128
+ nextEventTypeId += 1;
129
+ eventTypeMap.set(eventType, evtId);
130
+ eventTypeMapEntriesMap[evtId] = eventType;
131
+ }
132
+ const eventObservation = {
133
+ t: Math.round(entry.time - startTime),
134
+ evt: evtId
135
+ };
136
+ return eventObservation;
137
+ });
138
+
113
139
  // If the number of observations is greater than the maximum allowed, we need to trim the observations to the maximum allowed.
114
140
  // We do this by keeping the first observation and the last MAX_OBSERVATIONS observations.
115
141
  // We then collect the referenced IDs from the remaining observations and remove the unreferenced entries from the maps
@@ -151,6 +177,30 @@ export default class RawDataHandler {
151
177
  }
152
178
  }
153
179
  }
180
+
181
+ // If the number of event observations is greater than the maximum allowed, we need to trim the event observations to the maximum allowed.
182
+ // We do this by keeping the first observation and the last MAX_OBSERVATIONS observations.
183
+ // We then collect the referenced IDs from the remaining observations and remove the unreferenced entries from the maps
184
+ if (rawEventObservations.length > MAX_OBSERVATIONS) {
185
+ const firstEventObservation = rawEventObservations[0];
186
+ const lastEventObservations = rawEventObservations.slice(-MAX_OBSERVATIONS);
187
+ rawEventObservations = [firstEventObservation, ...lastEventObservations];
188
+
189
+ // Collect referenced IDs from remaining observations
190
+ const referencedEvts = new Set();
191
+ for (const observation of rawEventObservations) {
192
+ if (observation.evt > 0) {
193
+ referencedEvts.add(observation.evt);
194
+ }
195
+ }
196
+
197
+ // Remove unreferenced entries from maps
198
+ for (const evt of Object.keys(eventTypeMapEntriesMap).map(Number)) {
199
+ if (!referencedEvts.has(evt)) {
200
+ delete eventTypeMapEntriesMap[evt];
201
+ }
202
+ }
203
+ }
154
204
  const result = {
155
205
  revision: this.revisionNo,
156
206
  clean: isVCClean,
@@ -159,7 +209,9 @@ export default class RawDataHandler {
159
209
  obs: (_rawObservations = rawObservations) !== null && _rawObservations !== void 0 ? _rawObservations : undefined,
160
210
  eid: elementMapEntriesMap !== null && elementMapEntriesMap !== void 0 ? elementMapEntriesMap : undefined,
161
211
  chg: typeMapEntriesMap !== null && typeMapEntriesMap !== void 0 ? typeMapEntriesMap : undefined,
162
- att: attributeEntriesMap !== null && attributeEntriesMap !== void 0 ? attributeEntriesMap : undefined
212
+ att: attributeEntriesMap !== null && attributeEntriesMap !== void 0 ? attributeEntriesMap : undefined,
213
+ evts: rawEventObservations.length > 0 ? rawEventObservations : undefined,
214
+ evt: Object.keys(eventTypeMapEntriesMap).length > 0 ? eventTypeMapEntriesMap : undefined
163
215
  },
164
216
  abortReason: dirtyReason,
165
217
  abortTimestamp: getVCCleanStatusResult.abortTimestamp,
@@ -13,6 +13,9 @@ import getViewportHeight from '../metric-calculator/utils/get-viewport-height';
13
13
  import getViewportWidth from '../metric-calculator/utils/get-viewport-width';
14
14
  var ABORTING_WINDOW_EVENT = ['wheel', 'scroll', 'keydown', 'resize'];
15
15
  var MAX_OBSERVATIONS = 100;
16
+ function isWindowEventEntryData(data) {
17
+ return data.type === 'window:event' && 'eventType' in data;
18
+ }
16
19
  var RawDataHandler = /*#__PURE__*/function () {
17
20
  function RawDataHandler() {
18
21
  _classCallCheck(this, RawDataHandler);
@@ -49,7 +52,7 @@ var RawDataHandler = /*#__PURE__*/function () {
49
52
  key: "getRawData",
50
53
  value: function () {
51
54
  var _getRawData = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(_ref) {
52
- var entries, startTime, stopTime, isPageVisible, isVCClean, dirtyReason, getVCCleanStatusResult, viewportEntries, targetNameToIdMap, elementMapEntriesMap, nextElementId, typeMap, typeMapEntriesMap, nextTypeId, attributeMap, attributeEntriesMap, nextAttributeId, rawObservations, firstObservation, lastObservations, referencedEids, referencedChgs, referencedAtts, _iterator, _step, observation, _iterator2, _step2, eid, _iterator3, _step3, chg, _iterator4, _step4, att, result;
55
+ var entries, startTime, stopTime, isPageVisible, isVCClean, dirtyReason, getVCCleanStatusResult, viewportEntries, windowEventEntries, targetNameToIdMap, elementMapEntriesMap, nextElementId, typeMap, typeMapEntriesMap, nextTypeId, attributeMap, attributeEntriesMap, nextAttributeId, eventTypeMap, eventTypeMapEntriesMap, nextEventTypeId, rawObservations, rawEventObservations, firstObservation, lastObservations, referencedEids, referencedChgs, referencedAtts, _iterator, _step, observation, _iterator2, _step2, eid, _iterator3, _step3, chg, _iterator4, _step4, att, firstEventObservation, lastEventObservations, referencedEvts, _iterator5, _step5, _observation, _iterator6, _step6, evt, result;
53
56
  return _regeneratorRuntime.wrap(function _callee$(_context) {
54
57
  while (1) switch (_context.prev = _context.next) {
55
58
  case 0:
@@ -76,6 +79,9 @@ var RawDataHandler = /*#__PURE__*/function () {
76
79
  viewportEntries = entries.filter(function (entry) {
77
80
  return entry.time >= startTime && entry.time <= stopTime && entry.data && entry.data.visible;
78
81
  });
82
+ windowEventEntries = entries.filter(function (entry) {
83
+ return entry.time >= startTime && entry.time <= stopTime && entry.data && isWindowEventEntryData(entry.data);
84
+ });
79
85
  targetNameToIdMap = new Map();
80
86
  elementMapEntriesMap = {};
81
87
  nextElementId = 1;
@@ -85,6 +91,9 @@ var RawDataHandler = /*#__PURE__*/function () {
85
91
  attributeMap = new Map();
86
92
  attributeEntriesMap = {};
87
93
  nextAttributeId = 1;
94
+ eventTypeMap = new Map();
95
+ eventTypeMapEntriesMap = {};
96
+ nextEventTypeId = 1;
88
97
  rawObservations = viewportEntries.map(function (entry) {
89
98
  var viewportEntry = entry.data;
90
99
  var targetName = viewportEntry.elementName || '';
@@ -124,6 +133,22 @@ var RawDataHandler = /*#__PURE__*/function () {
124
133
  att: att
125
134
  } : {});
126
135
  return observation;
136
+ });
137
+ rawEventObservations = windowEventEntries.map(function (entry) {
138
+ var windowEventEntry = entry.data;
139
+ var eventType = windowEventEntry.eventType;
140
+ var evtId = eventTypeMap.get(eventType) || 0;
141
+ if (evtId === 0) {
142
+ evtId = nextEventTypeId;
143
+ nextEventTypeId += 1;
144
+ eventTypeMap.set(eventType, evtId);
145
+ eventTypeMapEntriesMap[evtId] = eventType;
146
+ }
147
+ var eventObservation = {
148
+ t: Math.round(entry.time - startTime),
149
+ evt: evtId
150
+ };
151
+ return eventObservation;
127
152
  }); // If the number of observations is greater than the maximum allowed, we need to trim the observations to the maximum allowed.
128
153
  // We do this by keeping the first observation and the last MAX_OBSERVATIONS observations.
129
154
  // We then collect the referenced IDs from the remaining observations and remove the unreferenced entries from the maps
@@ -197,6 +222,46 @@ var RawDataHandler = /*#__PURE__*/function () {
197
222
  _iterator4.f();
198
223
  }
199
224
  }
225
+
226
+ // If the number of event observations is greater than the maximum allowed, we need to trim the event observations to the maximum allowed.
227
+ // We do this by keeping the first observation and the last MAX_OBSERVATIONS observations.
228
+ // We then collect the referenced IDs from the remaining observations and remove the unreferenced entries from the maps
229
+ if (rawEventObservations.length > MAX_OBSERVATIONS) {
230
+ firstEventObservation = rawEventObservations[0];
231
+ lastEventObservations = rawEventObservations.slice(-MAX_OBSERVATIONS);
232
+ rawEventObservations = [firstEventObservation].concat(_toConsumableArray(lastEventObservations));
233
+
234
+ // Collect referenced IDs from remaining observations
235
+ referencedEvts = new Set();
236
+ _iterator5 = _createForOfIteratorHelper(rawEventObservations);
237
+ try {
238
+ for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
239
+ _observation = _step5.value;
240
+ if (_observation.evt > 0) {
241
+ referencedEvts.add(_observation.evt);
242
+ }
243
+ }
244
+
245
+ // Remove unreferenced entries from maps
246
+ } catch (err) {
247
+ _iterator5.e(err);
248
+ } finally {
249
+ _iterator5.f();
250
+ }
251
+ _iterator6 = _createForOfIteratorHelper(Object.keys(eventTypeMapEntriesMap).map(Number));
252
+ try {
253
+ for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
254
+ evt = _step6.value;
255
+ if (!referencedEvts.has(evt)) {
256
+ delete eventTypeMapEntriesMap[evt];
257
+ }
258
+ }
259
+ } catch (err) {
260
+ _iterator6.e(err);
261
+ } finally {
262
+ _iterator6.f();
263
+ }
264
+ }
200
265
  result = {
201
266
  revision: this.revisionNo,
202
267
  clean: isVCClean,
@@ -205,7 +270,9 @@ var RawDataHandler = /*#__PURE__*/function () {
205
270
  obs: rawObservations !== null && rawObservations !== void 0 ? rawObservations : undefined,
206
271
  eid: elementMapEntriesMap !== null && elementMapEntriesMap !== void 0 ? elementMapEntriesMap : undefined,
207
272
  chg: typeMapEntriesMap !== null && typeMapEntriesMap !== void 0 ? typeMapEntriesMap : undefined,
208
- att: attributeEntriesMap !== null && attributeEntriesMap !== void 0 ? attributeEntriesMap : undefined
273
+ att: attributeEntriesMap !== null && attributeEntriesMap !== void 0 ? attributeEntriesMap : undefined,
274
+ evts: rawEventObservations.length > 0 ? rawEventObservations : undefined,
275
+ evt: Object.keys(eventTypeMapEntriesMap).length > 0 ? eventTypeMapEntriesMap : undefined
209
276
  },
210
277
  abortReason: dirtyReason,
211
278
  abortTimestamp: getVCCleanStatusResult.abortTimestamp,
@@ -215,7 +282,7 @@ var RawDataHandler = /*#__PURE__*/function () {
215
282
  }
216
283
  };
217
284
  return _context.abrupt("return", result);
218
- case 20:
285
+ case 26:
219
286
  case "end":
220
287
  return _context.stop();
221
288
  }
@@ -125,6 +125,10 @@ export type RawObservation = {
125
125
  eid: number;
126
126
  att?: number;
127
127
  };
128
+ export type RawEventObservation = {
129
+ t: number;
130
+ evt: number;
131
+ };
128
132
  export type RevisionPayloadEntry = {
129
133
  'metric:vc90': number | null;
130
134
  revision: string;
@@ -140,6 +144,8 @@ export type RevisionPayloadEntry = {
140
144
  eid?: Record<number, string>;
141
145
  chg?: Record<number, string>;
142
146
  att?: Record<number, string>;
147
+ evts?: Array<RawEventObservation>;
148
+ evt?: Record<number, string>;
143
149
  };
144
150
  viewport?: {
145
151
  w: number;
@@ -55,6 +55,10 @@ export type ReactHydrationStats = {
55
55
  * The depth in the React component tree of the deepest warning.
56
56
  */
57
57
  maxWarningComponentDepth?: number;
58
+ /**
59
+ * The ratio of DOM nodes preserved during hydration (between 0 and 1).
60
+ */
61
+ preservationRatio?: number;
58
62
  };
59
63
  export type Config = {
60
64
  readonly enabled?: boolean;
@@ -130,6 +130,10 @@ export type RawObservation = {
130
130
  eid: number;
131
131
  att?: number;
132
132
  };
133
+ export type RawEventObservation = {
134
+ t: number;
135
+ evt: number;
136
+ };
133
137
  export type RevisionPayloadEntry = {
134
138
  'metric:vc90': number | null;
135
139
  revision: string;
@@ -145,6 +149,8 @@ export type RevisionPayloadEntry = {
145
149
  eid?: Record<number, string>;
146
150
  chg?: Record<number, string>;
147
151
  att?: Record<number, string>;
152
+ evts?: Array<RawEventObservation>;
153
+ evt?: Record<number, string>;
148
154
  };
149
155
  viewport?: {
150
156
  w: number;
@@ -55,6 +55,10 @@ export type ReactHydrationStats = {
55
55
  * The depth in the React component tree of the deepest warning.
56
56
  */
57
57
  maxWarningComponentDepth?: number;
58
+ /**
59
+ * The ratio of DOM nodes preserved during hydration (between 0 and 1).
60
+ */
61
+ preservationRatio?: number;
58
62
  };
59
63
  export type Config = {
60
64
  readonly enabled?: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/react-ufo",
3
- "version": "4.15.14",
3
+ "version": "4.15.15",
4
4
  "description": "Parts of React UFO that are publicly available",
5
5
  "author": "Atlassian Pty Ltd",
6
6
  "license": "Apache-2.0",