react-jitter 0.3.0 → 0.3.1

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-jitter",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "A developer tool for debugging React performance issues caused by hook changes and component re-renders.",
5
5
  "exports": {
6
6
  ".": {
@@ -36,8 +36,417 @@ __export(index_exports, {
36
36
  module.exports = __toCommonJS(index_exports);
37
37
  var import_react = __toESM(require("react"));
38
38
 
39
+ // ../node_modules/fast-equals/dist/esm/index.mjs
40
+ var getOwnPropertyNames = Object.getOwnPropertyNames;
41
+ var getOwnPropertySymbols = Object.getOwnPropertySymbols;
42
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
43
+ function combineComparators(comparatorA, comparatorB) {
44
+ return function isEqual(a, b, state) {
45
+ return comparatorA(a, b, state) && comparatorB(a, b, state);
46
+ };
47
+ }
48
+ function createIsCircular(areItemsEqual) {
49
+ return function isCircular(a, b, state) {
50
+ if (!a || !b || typeof a !== "object" || typeof b !== "object") {
51
+ return areItemsEqual(a, b, state);
52
+ }
53
+ var cache = state.cache;
54
+ var cachedA = cache.get(a);
55
+ var cachedB = cache.get(b);
56
+ if (cachedA && cachedB) {
57
+ return cachedA === b && cachedB === a;
58
+ }
59
+ cache.set(a, b);
60
+ cache.set(b, a);
61
+ var result = areItemsEqual(a, b, state);
62
+ cache.delete(a);
63
+ cache.delete(b);
64
+ return result;
65
+ };
66
+ }
67
+ function getStrictProperties(object) {
68
+ return getOwnPropertyNames(object).concat(getOwnPropertySymbols(object));
69
+ }
70
+ var hasOwn = Object.hasOwn || function(object, property) {
71
+ return hasOwnProperty.call(object, property);
72
+ };
73
+ function sameValueZeroEqual(a, b) {
74
+ return a === b || !a && !b && a !== a && b !== b;
75
+ }
76
+ var PREACT_VNODE = "__v";
77
+ var PREACT_OWNER = "__o";
78
+ var REACT_OWNER = "_owner";
79
+ var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
80
+ var keys = Object.keys;
81
+ function areArraysEqual(a, b, state) {
82
+ var index = a.length;
83
+ if (b.length !== index) {
84
+ return false;
85
+ }
86
+ while (index-- > 0) {
87
+ if (!state.equals(a[index], b[index], index, index, a, b, state)) {
88
+ return false;
89
+ }
90
+ }
91
+ return true;
92
+ }
93
+ function areDatesEqual(a, b) {
94
+ return sameValueZeroEqual(a.getTime(), b.getTime());
95
+ }
96
+ function areErrorsEqual(a, b) {
97
+ return a.name === b.name && a.message === b.message && a.cause === b.cause && a.stack === b.stack;
98
+ }
99
+ function areFunctionsEqual(a, b) {
100
+ return a === b;
101
+ }
102
+ function areMapsEqual(a, b, state) {
103
+ var size = a.size;
104
+ if (size !== b.size) {
105
+ return false;
106
+ }
107
+ if (!size) {
108
+ return true;
109
+ }
110
+ var matchedIndices = new Array(size);
111
+ var aIterable = a.entries();
112
+ var aResult;
113
+ var bResult;
114
+ var index = 0;
115
+ while (aResult = aIterable.next()) {
116
+ if (aResult.done) {
117
+ break;
118
+ }
119
+ var bIterable = b.entries();
120
+ var hasMatch = false;
121
+ var matchIndex = 0;
122
+ while (bResult = bIterable.next()) {
123
+ if (bResult.done) {
124
+ break;
125
+ }
126
+ if (matchedIndices[matchIndex]) {
127
+ matchIndex++;
128
+ continue;
129
+ }
130
+ var aEntry = aResult.value;
131
+ var bEntry = bResult.value;
132
+ if (state.equals(aEntry[0], bEntry[0], index, matchIndex, a, b, state) && state.equals(aEntry[1], bEntry[1], aEntry[0], bEntry[0], a, b, state)) {
133
+ hasMatch = matchedIndices[matchIndex] = true;
134
+ break;
135
+ }
136
+ matchIndex++;
137
+ }
138
+ if (!hasMatch) {
139
+ return false;
140
+ }
141
+ index++;
142
+ }
143
+ return true;
144
+ }
145
+ var areNumbersEqual = sameValueZeroEqual;
146
+ function areObjectsEqual(a, b, state) {
147
+ var properties = keys(a);
148
+ var index = properties.length;
149
+ if (keys(b).length !== index) {
150
+ return false;
151
+ }
152
+ while (index-- > 0) {
153
+ if (!isPropertyEqual(a, b, state, properties[index])) {
154
+ return false;
155
+ }
156
+ }
157
+ return true;
158
+ }
159
+ function areObjectsEqualStrict(a, b, state) {
160
+ var properties = getStrictProperties(a);
161
+ var index = properties.length;
162
+ if (getStrictProperties(b).length !== index) {
163
+ return false;
164
+ }
165
+ var property;
166
+ var descriptorA;
167
+ var descriptorB;
168
+ while (index-- > 0) {
169
+ property = properties[index];
170
+ if (!isPropertyEqual(a, b, state, property)) {
171
+ return false;
172
+ }
173
+ descriptorA = getOwnPropertyDescriptor(a, property);
174
+ descriptorB = getOwnPropertyDescriptor(b, property);
175
+ if ((descriptorA || descriptorB) && (!descriptorA || !descriptorB || descriptorA.configurable !== descriptorB.configurable || descriptorA.enumerable !== descriptorB.enumerable || descriptorA.writable !== descriptorB.writable)) {
176
+ return false;
177
+ }
178
+ }
179
+ return true;
180
+ }
181
+ function arePrimitiveWrappersEqual(a, b) {
182
+ return sameValueZeroEqual(a.valueOf(), b.valueOf());
183
+ }
184
+ function areRegExpsEqual(a, b) {
185
+ return a.source === b.source && a.flags === b.flags;
186
+ }
187
+ function areSetsEqual(a, b, state) {
188
+ var size = a.size;
189
+ if (size !== b.size) {
190
+ return false;
191
+ }
192
+ if (!size) {
193
+ return true;
194
+ }
195
+ var matchedIndices = new Array(size);
196
+ var aIterable = a.values();
197
+ var aResult;
198
+ var bResult;
199
+ while (aResult = aIterable.next()) {
200
+ if (aResult.done) {
201
+ break;
202
+ }
203
+ var bIterable = b.values();
204
+ var hasMatch = false;
205
+ var matchIndex = 0;
206
+ while (bResult = bIterable.next()) {
207
+ if (bResult.done) {
208
+ break;
209
+ }
210
+ if (!matchedIndices[matchIndex] && state.equals(aResult.value, bResult.value, aResult.value, bResult.value, a, b, state)) {
211
+ hasMatch = matchedIndices[matchIndex] = true;
212
+ break;
213
+ }
214
+ matchIndex++;
215
+ }
216
+ if (!hasMatch) {
217
+ return false;
218
+ }
219
+ }
220
+ return true;
221
+ }
222
+ function areTypedArraysEqual(a, b) {
223
+ var index = a.length;
224
+ if (b.length !== index) {
225
+ return false;
226
+ }
227
+ while (index-- > 0) {
228
+ if (a[index] !== b[index]) {
229
+ return false;
230
+ }
231
+ }
232
+ return true;
233
+ }
234
+ function areUrlsEqual(a, b) {
235
+ return a.hostname === b.hostname && a.pathname === b.pathname && a.protocol === b.protocol && a.port === b.port && a.hash === b.hash && a.username === b.username && a.password === b.password;
236
+ }
237
+ function isPropertyEqual(a, b, state, property) {
238
+ if ((property === REACT_OWNER || property === PREACT_OWNER || property === PREACT_VNODE) && (a.$$typeof || b.$$typeof)) {
239
+ return true;
240
+ }
241
+ return hasOwn(b, property) && state.equals(a[property], b[property], property, property, a, b, state);
242
+ }
243
+ var ARGUMENTS_TAG = "[object Arguments]";
244
+ var BOOLEAN_TAG = "[object Boolean]";
245
+ var DATE_TAG = "[object Date]";
246
+ var ERROR_TAG = "[object Error]";
247
+ var MAP_TAG = "[object Map]";
248
+ var NUMBER_TAG = "[object Number]";
249
+ var OBJECT_TAG = "[object Object]";
250
+ var REG_EXP_TAG = "[object RegExp]";
251
+ var SET_TAG = "[object Set]";
252
+ var STRING_TAG = "[object String]";
253
+ var URL_TAG = "[object URL]";
254
+ var isArray = Array.isArray;
255
+ var isTypedArray = typeof ArrayBuffer === "function" && ArrayBuffer.isView ? ArrayBuffer.isView : null;
256
+ var assign = Object.assign;
257
+ var getTag = Object.prototype.toString.call.bind(Object.prototype.toString);
258
+ function createEqualityComparator(_a) {
259
+ var areArraysEqual2 = _a.areArraysEqual, areDatesEqual2 = _a.areDatesEqual, areErrorsEqual2 = _a.areErrorsEqual, areFunctionsEqual2 = _a.areFunctionsEqual, areMapsEqual2 = _a.areMapsEqual, areNumbersEqual2 = _a.areNumbersEqual, areObjectsEqual2 = _a.areObjectsEqual, arePrimitiveWrappersEqual2 = _a.arePrimitiveWrappersEqual, areRegExpsEqual2 = _a.areRegExpsEqual, areSetsEqual2 = _a.areSetsEqual, areTypedArraysEqual2 = _a.areTypedArraysEqual, areUrlsEqual2 = _a.areUrlsEqual;
260
+ return function comparator(a, b, state) {
261
+ if (a === b) {
262
+ return true;
263
+ }
264
+ if (a == null || b == null) {
265
+ return false;
266
+ }
267
+ var type = typeof a;
268
+ if (type !== typeof b) {
269
+ return false;
270
+ }
271
+ if (type !== "object") {
272
+ if (type === "number") {
273
+ return areNumbersEqual2(a, b, state);
274
+ }
275
+ if (type === "function") {
276
+ return areFunctionsEqual2(a, b, state);
277
+ }
278
+ return false;
279
+ }
280
+ var constructor = a.constructor;
281
+ if (constructor !== b.constructor) {
282
+ return false;
283
+ }
284
+ if (constructor === Object) {
285
+ return areObjectsEqual2(a, b, state);
286
+ }
287
+ if (isArray(a)) {
288
+ return areArraysEqual2(a, b, state);
289
+ }
290
+ if (isTypedArray != null && isTypedArray(a)) {
291
+ return areTypedArraysEqual2(a, b, state);
292
+ }
293
+ if (constructor === Date) {
294
+ return areDatesEqual2(a, b, state);
295
+ }
296
+ if (constructor === RegExp) {
297
+ return areRegExpsEqual2(a, b, state);
298
+ }
299
+ if (constructor === Map) {
300
+ return areMapsEqual2(a, b, state);
301
+ }
302
+ if (constructor === Set) {
303
+ return areSetsEqual2(a, b, state);
304
+ }
305
+ var tag = getTag(a);
306
+ if (tag === DATE_TAG) {
307
+ return areDatesEqual2(a, b, state);
308
+ }
309
+ if (tag === REG_EXP_TAG) {
310
+ return areRegExpsEqual2(a, b, state);
311
+ }
312
+ if (tag === MAP_TAG) {
313
+ return areMapsEqual2(a, b, state);
314
+ }
315
+ if (tag === SET_TAG) {
316
+ return areSetsEqual2(a, b, state);
317
+ }
318
+ if (tag === OBJECT_TAG) {
319
+ return typeof a.then !== "function" && typeof b.then !== "function" && areObjectsEqual2(a, b, state);
320
+ }
321
+ if (tag === URL_TAG) {
322
+ return areUrlsEqual2(a, b, state);
323
+ }
324
+ if (tag === ERROR_TAG) {
325
+ return areErrorsEqual2(a, b, state);
326
+ }
327
+ if (tag === ARGUMENTS_TAG) {
328
+ return areObjectsEqual2(a, b, state);
329
+ }
330
+ if (tag === BOOLEAN_TAG || tag === NUMBER_TAG || tag === STRING_TAG) {
331
+ return arePrimitiveWrappersEqual2(a, b, state);
332
+ }
333
+ return false;
334
+ };
335
+ }
336
+ function createEqualityComparatorConfig(_a) {
337
+ var circular = _a.circular, createCustomConfig = _a.createCustomConfig, strict = _a.strict;
338
+ var config = {
339
+ areArraysEqual: strict ? areObjectsEqualStrict : areArraysEqual,
340
+ areDatesEqual,
341
+ areErrorsEqual,
342
+ areFunctionsEqual,
343
+ areMapsEqual: strict ? combineComparators(areMapsEqual, areObjectsEqualStrict) : areMapsEqual,
344
+ areNumbersEqual,
345
+ areObjectsEqual: strict ? areObjectsEqualStrict : areObjectsEqual,
346
+ arePrimitiveWrappersEqual,
347
+ areRegExpsEqual,
348
+ areSetsEqual: strict ? combineComparators(areSetsEqual, areObjectsEqualStrict) : areSetsEqual,
349
+ areTypedArraysEqual: strict ? areObjectsEqualStrict : areTypedArraysEqual,
350
+ areUrlsEqual
351
+ };
352
+ if (createCustomConfig) {
353
+ config = assign({}, config, createCustomConfig(config));
354
+ }
355
+ if (circular) {
356
+ var areArraysEqual$1 = createIsCircular(config.areArraysEqual);
357
+ var areMapsEqual$1 = createIsCircular(config.areMapsEqual);
358
+ var areObjectsEqual$1 = createIsCircular(config.areObjectsEqual);
359
+ var areSetsEqual$1 = createIsCircular(config.areSetsEqual);
360
+ config = assign({}, config, {
361
+ areArraysEqual: areArraysEqual$1,
362
+ areMapsEqual: areMapsEqual$1,
363
+ areObjectsEqual: areObjectsEqual$1,
364
+ areSetsEqual: areSetsEqual$1
365
+ });
366
+ }
367
+ return config;
368
+ }
369
+ function createInternalEqualityComparator(compare) {
370
+ return function(a, b, _indexOrKeyA, _indexOrKeyB, _parentA, _parentB, state) {
371
+ return compare(a, b, state);
372
+ };
373
+ }
374
+ function createIsEqual(_a) {
375
+ var circular = _a.circular, comparator = _a.comparator, createState = _a.createState, equals = _a.equals, strict = _a.strict;
376
+ if (createState) {
377
+ return function isEqual(a, b) {
378
+ var _a2 = createState(), _b = _a2.cache, cache = _b === void 0 ? circular ? /* @__PURE__ */ new WeakMap() : void 0 : _b, meta = _a2.meta;
379
+ return comparator(a, b, {
380
+ cache,
381
+ equals,
382
+ meta,
383
+ strict
384
+ });
385
+ };
386
+ }
387
+ if (circular) {
388
+ return function isEqual(a, b) {
389
+ return comparator(a, b, {
390
+ cache: /* @__PURE__ */ new WeakMap(),
391
+ equals,
392
+ meta: void 0,
393
+ strict
394
+ });
395
+ };
396
+ }
397
+ var state = {
398
+ cache: void 0,
399
+ equals,
400
+ meta: void 0,
401
+ strict
402
+ };
403
+ return function isEqual(a, b) {
404
+ return comparator(a, b, state);
405
+ };
406
+ }
407
+ var deepEqual = createCustomEqual();
408
+ var strictDeepEqual = createCustomEqual({ strict: true });
409
+ var circularDeepEqual = createCustomEqual({ circular: true });
410
+ var strictCircularDeepEqual = createCustomEqual({
411
+ circular: true,
412
+ strict: true
413
+ });
414
+ var shallowEqual = createCustomEqual({
415
+ createInternalComparator: function() {
416
+ return sameValueZeroEqual;
417
+ }
418
+ });
419
+ var strictShallowEqual = createCustomEqual({
420
+ strict: true,
421
+ createInternalComparator: function() {
422
+ return sameValueZeroEqual;
423
+ }
424
+ });
425
+ var circularShallowEqual = createCustomEqual({
426
+ circular: true,
427
+ createInternalComparator: function() {
428
+ return sameValueZeroEqual;
429
+ }
430
+ });
431
+ var strictCircularShallowEqual = createCustomEqual({
432
+ circular: true,
433
+ createInternalComparator: function() {
434
+ return sameValueZeroEqual;
435
+ },
436
+ strict: true
437
+ });
438
+ function createCustomEqual(options) {
439
+ if (options === void 0) {
440
+ options = {};
441
+ }
442
+ var _a = options.circular, circular = _a === void 0 ? false : _a, createCustomInternalComparator = options.createInternalComparator, createState = options.createState, _b = options.strict, strict = _b === void 0 ? false : _b;
443
+ var config = createEqualityComparatorConfig(options);
444
+ var comparator = createEqualityComparator(config);
445
+ var equals = createCustomInternalComparator ? createCustomInternalComparator(comparator) : createInternalEqualityComparator(comparator);
446
+ return createIsEqual({ circular, comparator, createState, equals, strict });
447
+ }
448
+
39
449
  // src/utils/getChanges.ts
40
- var import_fast_equals = require("fast-equals");
41
450
  function getChanges(prev, next) {
42
451
  const changedKeys = [];
43
452
  const unstableKeys = [];
@@ -57,7 +466,7 @@ function getChanges(prev, next) {
57
466
  }
58
467
  const max = Math.max(prev.length, next.length);
59
468
  for (let i = 0; i < max; i++) {
60
- const deepEqItem = (0, import_fast_equals.deepEqual)(prev[i], next[i]);
469
+ const deepEqItem = deepEqual(prev[i], next[i]);
61
470
  const refDiffItem = isObject(prev[i]) && isObject(next[i]) && prev[i] !== next[i];
62
471
  if (!deepEqItem || refDiffItem) {
63
472
  const key = String(i);
@@ -70,7 +479,7 @@ function getChanges(prev, next) {
70
479
  } else if (isObject(prev) && isObject(next)) {
71
480
  const allKeys = /* @__PURE__ */ new Set([...Object.keys(prev), ...Object.keys(next)]);
72
481
  for (const key of allKeys) {
73
- const deepEqProp = (0, import_fast_equals.deepEqual)(prev[key], next[key]);
482
+ const deepEqProp = deepEqual(prev[key], next[key]);
74
483
  const refDiffProp = isObject(prev[key]) && isObject(next[key]) && prev[key] !== next[key];
75
484
  if (!deepEqProp || refDiffProp) {
76
485
  changedKeys.push(key);
@@ -80,7 +489,7 @@ function getChanges(prev, next) {
80
489
  }
81
490
  }
82
491
  } else {
83
- const deepEqRoot = (0, import_fast_equals.deepEqual)(prev, next);
492
+ const deepEqRoot = deepEqual(prev, next);
84
493
  const refDiffRoot = isObject(prev) && isObject(next) && prev !== next;
85
494
  const unstable = refDiffRoot && deepEqRoot;
86
495
  const changed = !deepEqRoot || refDiffRoot;
@@ -91,7 +500,7 @@ function getChanges(prev, next) {
91
500
  };
92
501
  }
93
502
  const isPlainObject = (v) => v !== null && typeof v === "object" && !Array.isArray(v);
94
- const unstableRoot = isPlainObject(prev) && isPlainObject(next) && prev !== next && (0, import_fast_equals.deepEqual)(prev, next);
503
+ const unstableRoot = isPlainObject(prev) && isPlainObject(next) && prev !== next && deepEqual(prev, next);
95
504
  if (unstableRoot && changedKeys.length === 0) {
96
505
  changedKeys.push("");
97
506
  unstableKeys.push("");
@@ -1,8 +1,417 @@
1
1
  // src/index.ts
2
2
  import React from "react";
3
3
 
4
+ // ../node_modules/fast-equals/dist/esm/index.mjs
5
+ var getOwnPropertyNames = Object.getOwnPropertyNames;
6
+ var getOwnPropertySymbols = Object.getOwnPropertySymbols;
7
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
8
+ function combineComparators(comparatorA, comparatorB) {
9
+ return function isEqual(a, b, state) {
10
+ return comparatorA(a, b, state) && comparatorB(a, b, state);
11
+ };
12
+ }
13
+ function createIsCircular(areItemsEqual) {
14
+ return function isCircular(a, b, state) {
15
+ if (!a || !b || typeof a !== "object" || typeof b !== "object") {
16
+ return areItemsEqual(a, b, state);
17
+ }
18
+ var cache = state.cache;
19
+ var cachedA = cache.get(a);
20
+ var cachedB = cache.get(b);
21
+ if (cachedA && cachedB) {
22
+ return cachedA === b && cachedB === a;
23
+ }
24
+ cache.set(a, b);
25
+ cache.set(b, a);
26
+ var result = areItemsEqual(a, b, state);
27
+ cache.delete(a);
28
+ cache.delete(b);
29
+ return result;
30
+ };
31
+ }
32
+ function getStrictProperties(object) {
33
+ return getOwnPropertyNames(object).concat(getOwnPropertySymbols(object));
34
+ }
35
+ var hasOwn = Object.hasOwn || function(object, property) {
36
+ return hasOwnProperty.call(object, property);
37
+ };
38
+ function sameValueZeroEqual(a, b) {
39
+ return a === b || !a && !b && a !== a && b !== b;
40
+ }
41
+ var PREACT_VNODE = "__v";
42
+ var PREACT_OWNER = "__o";
43
+ var REACT_OWNER = "_owner";
44
+ var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
45
+ var keys = Object.keys;
46
+ function areArraysEqual(a, b, state) {
47
+ var index = a.length;
48
+ if (b.length !== index) {
49
+ return false;
50
+ }
51
+ while (index-- > 0) {
52
+ if (!state.equals(a[index], b[index], index, index, a, b, state)) {
53
+ return false;
54
+ }
55
+ }
56
+ return true;
57
+ }
58
+ function areDatesEqual(a, b) {
59
+ return sameValueZeroEqual(a.getTime(), b.getTime());
60
+ }
61
+ function areErrorsEqual(a, b) {
62
+ return a.name === b.name && a.message === b.message && a.cause === b.cause && a.stack === b.stack;
63
+ }
64
+ function areFunctionsEqual(a, b) {
65
+ return a === b;
66
+ }
67
+ function areMapsEqual(a, b, state) {
68
+ var size = a.size;
69
+ if (size !== b.size) {
70
+ return false;
71
+ }
72
+ if (!size) {
73
+ return true;
74
+ }
75
+ var matchedIndices = new Array(size);
76
+ var aIterable = a.entries();
77
+ var aResult;
78
+ var bResult;
79
+ var index = 0;
80
+ while (aResult = aIterable.next()) {
81
+ if (aResult.done) {
82
+ break;
83
+ }
84
+ var bIterable = b.entries();
85
+ var hasMatch = false;
86
+ var matchIndex = 0;
87
+ while (bResult = bIterable.next()) {
88
+ if (bResult.done) {
89
+ break;
90
+ }
91
+ if (matchedIndices[matchIndex]) {
92
+ matchIndex++;
93
+ continue;
94
+ }
95
+ var aEntry = aResult.value;
96
+ var bEntry = bResult.value;
97
+ if (state.equals(aEntry[0], bEntry[0], index, matchIndex, a, b, state) && state.equals(aEntry[1], bEntry[1], aEntry[0], bEntry[0], a, b, state)) {
98
+ hasMatch = matchedIndices[matchIndex] = true;
99
+ break;
100
+ }
101
+ matchIndex++;
102
+ }
103
+ if (!hasMatch) {
104
+ return false;
105
+ }
106
+ index++;
107
+ }
108
+ return true;
109
+ }
110
+ var areNumbersEqual = sameValueZeroEqual;
111
+ function areObjectsEqual(a, b, state) {
112
+ var properties = keys(a);
113
+ var index = properties.length;
114
+ if (keys(b).length !== index) {
115
+ return false;
116
+ }
117
+ while (index-- > 0) {
118
+ if (!isPropertyEqual(a, b, state, properties[index])) {
119
+ return false;
120
+ }
121
+ }
122
+ return true;
123
+ }
124
+ function areObjectsEqualStrict(a, b, state) {
125
+ var properties = getStrictProperties(a);
126
+ var index = properties.length;
127
+ if (getStrictProperties(b).length !== index) {
128
+ return false;
129
+ }
130
+ var property;
131
+ var descriptorA;
132
+ var descriptorB;
133
+ while (index-- > 0) {
134
+ property = properties[index];
135
+ if (!isPropertyEqual(a, b, state, property)) {
136
+ return false;
137
+ }
138
+ descriptorA = getOwnPropertyDescriptor(a, property);
139
+ descriptorB = getOwnPropertyDescriptor(b, property);
140
+ if ((descriptorA || descriptorB) && (!descriptorA || !descriptorB || descriptorA.configurable !== descriptorB.configurable || descriptorA.enumerable !== descriptorB.enumerable || descriptorA.writable !== descriptorB.writable)) {
141
+ return false;
142
+ }
143
+ }
144
+ return true;
145
+ }
146
+ function arePrimitiveWrappersEqual(a, b) {
147
+ return sameValueZeroEqual(a.valueOf(), b.valueOf());
148
+ }
149
+ function areRegExpsEqual(a, b) {
150
+ return a.source === b.source && a.flags === b.flags;
151
+ }
152
+ function areSetsEqual(a, b, state) {
153
+ var size = a.size;
154
+ if (size !== b.size) {
155
+ return false;
156
+ }
157
+ if (!size) {
158
+ return true;
159
+ }
160
+ var matchedIndices = new Array(size);
161
+ var aIterable = a.values();
162
+ var aResult;
163
+ var bResult;
164
+ while (aResult = aIterable.next()) {
165
+ if (aResult.done) {
166
+ break;
167
+ }
168
+ var bIterable = b.values();
169
+ var hasMatch = false;
170
+ var matchIndex = 0;
171
+ while (bResult = bIterable.next()) {
172
+ if (bResult.done) {
173
+ break;
174
+ }
175
+ if (!matchedIndices[matchIndex] && state.equals(aResult.value, bResult.value, aResult.value, bResult.value, a, b, state)) {
176
+ hasMatch = matchedIndices[matchIndex] = true;
177
+ break;
178
+ }
179
+ matchIndex++;
180
+ }
181
+ if (!hasMatch) {
182
+ return false;
183
+ }
184
+ }
185
+ return true;
186
+ }
187
+ function areTypedArraysEqual(a, b) {
188
+ var index = a.length;
189
+ if (b.length !== index) {
190
+ return false;
191
+ }
192
+ while (index-- > 0) {
193
+ if (a[index] !== b[index]) {
194
+ return false;
195
+ }
196
+ }
197
+ return true;
198
+ }
199
+ function areUrlsEqual(a, b) {
200
+ return a.hostname === b.hostname && a.pathname === b.pathname && a.protocol === b.protocol && a.port === b.port && a.hash === b.hash && a.username === b.username && a.password === b.password;
201
+ }
202
+ function isPropertyEqual(a, b, state, property) {
203
+ if ((property === REACT_OWNER || property === PREACT_OWNER || property === PREACT_VNODE) && (a.$$typeof || b.$$typeof)) {
204
+ return true;
205
+ }
206
+ return hasOwn(b, property) && state.equals(a[property], b[property], property, property, a, b, state);
207
+ }
208
+ var ARGUMENTS_TAG = "[object Arguments]";
209
+ var BOOLEAN_TAG = "[object Boolean]";
210
+ var DATE_TAG = "[object Date]";
211
+ var ERROR_TAG = "[object Error]";
212
+ var MAP_TAG = "[object Map]";
213
+ var NUMBER_TAG = "[object Number]";
214
+ var OBJECT_TAG = "[object Object]";
215
+ var REG_EXP_TAG = "[object RegExp]";
216
+ var SET_TAG = "[object Set]";
217
+ var STRING_TAG = "[object String]";
218
+ var URL_TAG = "[object URL]";
219
+ var isArray = Array.isArray;
220
+ var isTypedArray = typeof ArrayBuffer === "function" && ArrayBuffer.isView ? ArrayBuffer.isView : null;
221
+ var assign = Object.assign;
222
+ var getTag = Object.prototype.toString.call.bind(Object.prototype.toString);
223
+ function createEqualityComparator(_a) {
224
+ var areArraysEqual2 = _a.areArraysEqual, areDatesEqual2 = _a.areDatesEqual, areErrorsEqual2 = _a.areErrorsEqual, areFunctionsEqual2 = _a.areFunctionsEqual, areMapsEqual2 = _a.areMapsEqual, areNumbersEqual2 = _a.areNumbersEqual, areObjectsEqual2 = _a.areObjectsEqual, arePrimitiveWrappersEqual2 = _a.arePrimitiveWrappersEqual, areRegExpsEqual2 = _a.areRegExpsEqual, areSetsEqual2 = _a.areSetsEqual, areTypedArraysEqual2 = _a.areTypedArraysEqual, areUrlsEqual2 = _a.areUrlsEqual;
225
+ return function comparator(a, b, state) {
226
+ if (a === b) {
227
+ return true;
228
+ }
229
+ if (a == null || b == null) {
230
+ return false;
231
+ }
232
+ var type = typeof a;
233
+ if (type !== typeof b) {
234
+ return false;
235
+ }
236
+ if (type !== "object") {
237
+ if (type === "number") {
238
+ return areNumbersEqual2(a, b, state);
239
+ }
240
+ if (type === "function") {
241
+ return areFunctionsEqual2(a, b, state);
242
+ }
243
+ return false;
244
+ }
245
+ var constructor = a.constructor;
246
+ if (constructor !== b.constructor) {
247
+ return false;
248
+ }
249
+ if (constructor === Object) {
250
+ return areObjectsEqual2(a, b, state);
251
+ }
252
+ if (isArray(a)) {
253
+ return areArraysEqual2(a, b, state);
254
+ }
255
+ if (isTypedArray != null && isTypedArray(a)) {
256
+ return areTypedArraysEqual2(a, b, state);
257
+ }
258
+ if (constructor === Date) {
259
+ return areDatesEqual2(a, b, state);
260
+ }
261
+ if (constructor === RegExp) {
262
+ return areRegExpsEqual2(a, b, state);
263
+ }
264
+ if (constructor === Map) {
265
+ return areMapsEqual2(a, b, state);
266
+ }
267
+ if (constructor === Set) {
268
+ return areSetsEqual2(a, b, state);
269
+ }
270
+ var tag = getTag(a);
271
+ if (tag === DATE_TAG) {
272
+ return areDatesEqual2(a, b, state);
273
+ }
274
+ if (tag === REG_EXP_TAG) {
275
+ return areRegExpsEqual2(a, b, state);
276
+ }
277
+ if (tag === MAP_TAG) {
278
+ return areMapsEqual2(a, b, state);
279
+ }
280
+ if (tag === SET_TAG) {
281
+ return areSetsEqual2(a, b, state);
282
+ }
283
+ if (tag === OBJECT_TAG) {
284
+ return typeof a.then !== "function" && typeof b.then !== "function" && areObjectsEqual2(a, b, state);
285
+ }
286
+ if (tag === URL_TAG) {
287
+ return areUrlsEqual2(a, b, state);
288
+ }
289
+ if (tag === ERROR_TAG) {
290
+ return areErrorsEqual2(a, b, state);
291
+ }
292
+ if (tag === ARGUMENTS_TAG) {
293
+ return areObjectsEqual2(a, b, state);
294
+ }
295
+ if (tag === BOOLEAN_TAG || tag === NUMBER_TAG || tag === STRING_TAG) {
296
+ return arePrimitiveWrappersEqual2(a, b, state);
297
+ }
298
+ return false;
299
+ };
300
+ }
301
+ function createEqualityComparatorConfig(_a) {
302
+ var circular = _a.circular, createCustomConfig = _a.createCustomConfig, strict = _a.strict;
303
+ var config = {
304
+ areArraysEqual: strict ? areObjectsEqualStrict : areArraysEqual,
305
+ areDatesEqual,
306
+ areErrorsEqual,
307
+ areFunctionsEqual,
308
+ areMapsEqual: strict ? combineComparators(areMapsEqual, areObjectsEqualStrict) : areMapsEqual,
309
+ areNumbersEqual,
310
+ areObjectsEqual: strict ? areObjectsEqualStrict : areObjectsEqual,
311
+ arePrimitiveWrappersEqual,
312
+ areRegExpsEqual,
313
+ areSetsEqual: strict ? combineComparators(areSetsEqual, areObjectsEqualStrict) : areSetsEqual,
314
+ areTypedArraysEqual: strict ? areObjectsEqualStrict : areTypedArraysEqual,
315
+ areUrlsEqual
316
+ };
317
+ if (createCustomConfig) {
318
+ config = assign({}, config, createCustomConfig(config));
319
+ }
320
+ if (circular) {
321
+ var areArraysEqual$1 = createIsCircular(config.areArraysEqual);
322
+ var areMapsEqual$1 = createIsCircular(config.areMapsEqual);
323
+ var areObjectsEqual$1 = createIsCircular(config.areObjectsEqual);
324
+ var areSetsEqual$1 = createIsCircular(config.areSetsEqual);
325
+ config = assign({}, config, {
326
+ areArraysEqual: areArraysEqual$1,
327
+ areMapsEqual: areMapsEqual$1,
328
+ areObjectsEqual: areObjectsEqual$1,
329
+ areSetsEqual: areSetsEqual$1
330
+ });
331
+ }
332
+ return config;
333
+ }
334
+ function createInternalEqualityComparator(compare) {
335
+ return function(a, b, _indexOrKeyA, _indexOrKeyB, _parentA, _parentB, state) {
336
+ return compare(a, b, state);
337
+ };
338
+ }
339
+ function createIsEqual(_a) {
340
+ var circular = _a.circular, comparator = _a.comparator, createState = _a.createState, equals = _a.equals, strict = _a.strict;
341
+ if (createState) {
342
+ return function isEqual(a, b) {
343
+ var _a2 = createState(), _b = _a2.cache, cache = _b === void 0 ? circular ? /* @__PURE__ */ new WeakMap() : void 0 : _b, meta = _a2.meta;
344
+ return comparator(a, b, {
345
+ cache,
346
+ equals,
347
+ meta,
348
+ strict
349
+ });
350
+ };
351
+ }
352
+ if (circular) {
353
+ return function isEqual(a, b) {
354
+ return comparator(a, b, {
355
+ cache: /* @__PURE__ */ new WeakMap(),
356
+ equals,
357
+ meta: void 0,
358
+ strict
359
+ });
360
+ };
361
+ }
362
+ var state = {
363
+ cache: void 0,
364
+ equals,
365
+ meta: void 0,
366
+ strict
367
+ };
368
+ return function isEqual(a, b) {
369
+ return comparator(a, b, state);
370
+ };
371
+ }
372
+ var deepEqual = createCustomEqual();
373
+ var strictDeepEqual = createCustomEqual({ strict: true });
374
+ var circularDeepEqual = createCustomEqual({ circular: true });
375
+ var strictCircularDeepEqual = createCustomEqual({
376
+ circular: true,
377
+ strict: true
378
+ });
379
+ var shallowEqual = createCustomEqual({
380
+ createInternalComparator: function() {
381
+ return sameValueZeroEqual;
382
+ }
383
+ });
384
+ var strictShallowEqual = createCustomEqual({
385
+ strict: true,
386
+ createInternalComparator: function() {
387
+ return sameValueZeroEqual;
388
+ }
389
+ });
390
+ var circularShallowEqual = createCustomEqual({
391
+ circular: true,
392
+ createInternalComparator: function() {
393
+ return sameValueZeroEqual;
394
+ }
395
+ });
396
+ var strictCircularShallowEqual = createCustomEqual({
397
+ circular: true,
398
+ createInternalComparator: function() {
399
+ return sameValueZeroEqual;
400
+ },
401
+ strict: true
402
+ });
403
+ function createCustomEqual(options) {
404
+ if (options === void 0) {
405
+ options = {};
406
+ }
407
+ var _a = options.circular, circular = _a === void 0 ? false : _a, createCustomInternalComparator = options.createInternalComparator, createState = options.createState, _b = options.strict, strict = _b === void 0 ? false : _b;
408
+ var config = createEqualityComparatorConfig(options);
409
+ var comparator = createEqualityComparator(config);
410
+ var equals = createCustomInternalComparator ? createCustomInternalComparator(comparator) : createInternalEqualityComparator(comparator);
411
+ return createIsEqual({ circular, comparator, createState, equals, strict });
412
+ }
413
+
4
414
  // src/utils/getChanges.ts
5
- import { deepEqual } from "fast-equals";
6
415
  function getChanges(prev, next) {
7
416
  const changedKeys = [];
8
417
  const unstableKeys = [];