@ls-stack/utils 2.0.1 → 2.2.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.
@@ -23,6 +23,8 @@ __export(arrayUtils_exports, {
23
23
  arrayWithPrev: () => arrayWithPrev,
24
24
  arrayWithPrevAndIndex: () => arrayWithPrevAndIndex,
25
25
  filterAndMap: () => filterAndMap,
26
+ findAfterIndex: () => findAfterIndex,
27
+ findBeforeIndex: () => findBeforeIndex,
26
28
  isInArray: () => isInArray,
27
29
  sortBy: () => sortBy
28
30
  });
@@ -81,11 +83,33 @@ function isInArray(value, oneOf) {
81
83
  }
82
84
  return false;
83
85
  }
86
+ function findAfterIndex(array, index, predicate) {
87
+ for (let i = index + 1; i < array.length; i++) {
88
+ if (predicate(array[i])) {
89
+ return array[i];
90
+ }
91
+ }
92
+ return void 0;
93
+ }
94
+ function findBeforeIndex(array, index, predicate) {
95
+ let indexToUse = index;
96
+ if (indexToUse >= array.length) {
97
+ indexToUse = array.length;
98
+ }
99
+ for (let i = indexToUse - 1; i >= 0; i--) {
100
+ if (predicate(array[i])) {
101
+ return array[i];
102
+ }
103
+ }
104
+ return void 0;
105
+ }
84
106
  // Annotate the CommonJS export names for ESM import in node:
85
107
  0 && (module.exports = {
86
108
  arrayWithPrev,
87
109
  arrayWithPrevAndIndex,
88
110
  filterAndMap,
111
+ findAfterIndex,
112
+ findBeforeIndex,
89
113
  isInArray,
90
114
  sortBy
91
115
  });
@@ -47,5 +47,7 @@ declare function arrayWithPrevAndIndex<T>(array: T[]): {
47
47
  index: number;
48
48
  }[];
49
49
  declare function isInArray<T, const U extends T>(value: T, oneOf: readonly U[]): value is U;
50
+ declare function findAfterIndex<T>(array: T[], index: number, predicate: (item: T) => boolean): T | undefined;
51
+ declare function findBeforeIndex<T>(array: T[], index: number, predicate: (item: T) => boolean): T | undefined;
50
52
 
51
- export { type FilterAndMapReturn, arrayWithPrev, arrayWithPrevAndIndex, filterAndMap, isInArray, sortBy };
53
+ export { type FilterAndMapReturn, arrayWithPrev, arrayWithPrevAndIndex, filterAndMap, findAfterIndex, findBeforeIndex, isInArray, sortBy };
@@ -47,5 +47,7 @@ declare function arrayWithPrevAndIndex<T>(array: T[]): {
47
47
  index: number;
48
48
  }[];
49
49
  declare function isInArray<T, const U extends T>(value: T, oneOf: readonly U[]): value is U;
50
+ declare function findAfterIndex<T>(array: T[], index: number, predicate: (item: T) => boolean): T | undefined;
51
+ declare function findBeforeIndex<T>(array: T[], index: number, predicate: (item: T) => boolean): T | undefined;
50
52
 
51
- export { type FilterAndMapReturn, arrayWithPrev, arrayWithPrevAndIndex, filterAndMap, isInArray, sortBy };
53
+ export { type FilterAndMapReturn, arrayWithPrev, arrayWithPrevAndIndex, filterAndMap, findAfterIndex, findBeforeIndex, isInArray, sortBy };
@@ -2,13 +2,17 @@ import {
2
2
  arrayWithPrev,
3
3
  arrayWithPrevAndIndex,
4
4
  filterAndMap,
5
+ findAfterIndex,
6
+ findBeforeIndex,
5
7
  isInArray,
6
8
  sortBy
7
- } from "./chunk-AZBBTE33.js";
9
+ } from "./chunk-QMFZE2VO.js";
8
10
  export {
9
11
  arrayWithPrev,
10
12
  arrayWithPrevAndIndex,
11
13
  filterAndMap,
14
+ findAfterIndex,
15
+ findBeforeIndex,
12
16
  isInArray,
13
17
  sortBy
14
18
  };
@@ -25,7 +25,8 @@ __export(castValues_exports, {
25
25
  });
26
26
  module.exports = __toCommonJS(castValues_exports);
27
27
  function castToString(value) {
28
- return value !== null && value !== void 0 ? String(value) : null;
28
+ const valueType = typeof value;
29
+ return valueType === "string" || valueType === "number" || valueType === "boolean" || valueType === "bigint" ? String(value) : null;
29
30
  }
30
31
  function castToNumber(value) {
31
32
  return isNumeric(value) ? Number(value) : null;
@@ -1,6 +1,7 @@
1
1
  // src/castValues.ts
2
2
  function castToString(value) {
3
- return value !== null && value !== void 0 ? String(value) : null;
3
+ const valueType = typeof value;
4
+ return valueType === "string" || valueType === "number" || valueType === "boolean" || valueType === "bigint" ? String(value) : null;
4
5
  }
5
6
  function castToNumber(value) {
6
7
  return isNumeric(value) ? Number(value) : null;
@@ -14,10 +14,14 @@ function clampRange(num, v1, v2) {
14
14
  function clamp(num, min, max) {
15
15
  return num > max ? max : num < min ? min : num;
16
16
  }
17
+ function fixFloatingPointNumber(value) {
18
+ return Number(value.toPrecision(15));
19
+ }
17
20
 
18
21
  export {
19
22
  clampMax,
20
23
  clampMin,
21
24
  clampRange,
22
- clamp
25
+ clamp,
26
+ fixFloatingPointNumber
23
27
  };
@@ -1,19 +1,21 @@
1
1
  // src/deepEqual.ts
2
2
  var has = Object.prototype.hasOwnProperty;
3
- function find(iter, tar, key) {
4
- for (key of iter.keys()) {
5
- if (deepEqual(key, tar)) return key;
3
+ function find(iter, tar, maxDepth) {
4
+ for (const key of iter.keys()) {
5
+ if (deepEqual(key, tar, maxDepth)) return key;
6
6
  }
7
7
  }
8
- function deepEqual(foo, bar) {
8
+ function deepEqual(foo, bar, maxDepth = 20) {
9
9
  let ctor, len, tmp;
10
10
  if (foo === bar) return true;
11
+ if (maxDepth && maxDepth <= 0) return false;
11
12
  if (foo && bar && (ctor = foo.constructor) === bar.constructor) {
12
- if (ctor === Date) return deepEqual(foo.getTime(), bar.getTime());
13
+ if (ctor === Date)
14
+ return deepEqual(foo.getTime(), bar.getTime(), maxDepth - 1);
13
15
  if (ctor === RegExp) return foo.toString() === bar.toString();
14
16
  if (ctor === Array) {
15
17
  if ((len = foo.length) === bar.length) {
16
- while (len-- && deepEqual(foo[len], bar[len])) ;
18
+ while (len-- && deepEqual(foo[len], bar[len], maxDepth - 1)) ;
17
19
  }
18
20
  return len === -1;
19
21
  }
@@ -24,7 +26,7 @@ function deepEqual(foo, bar) {
24
26
  for (len of foo) {
25
27
  tmp = len;
26
28
  if (tmp && typeof tmp === "object") {
27
- tmp = find(bar, tmp);
29
+ tmp = find(bar, tmp, maxDepth - 1);
28
30
  if (!tmp) return false;
29
31
  }
30
32
  if (!bar.has(tmp)) return false;
@@ -38,10 +40,10 @@ function deepEqual(foo, bar) {
38
40
  for (len of foo) {
39
41
  tmp = len[0];
40
42
  if (tmp && typeof tmp === "object") {
41
- tmp = find(bar, tmp);
43
+ tmp = find(bar, tmp, maxDepth - 1);
42
44
  if (!tmp) return false;
43
45
  }
44
- if (!deepEqual(len[1], bar.get(tmp))) {
46
+ if (!deepEqual(len[1], bar.get(tmp), maxDepth - 1)) {
45
47
  return false;
46
48
  }
47
49
  }
@@ -51,14 +53,19 @@ function deepEqual(foo, bar) {
51
53
  len = 0;
52
54
  for (ctor in foo) {
53
55
  if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;
54
- if (!(ctor in bar) || !deepEqual(foo[ctor], bar[ctor])) return false;
56
+ if (!(ctor in bar) || !deepEqual(foo[ctor], bar[ctor], maxDepth - 1))
57
+ return false;
55
58
  }
56
59
  return Object.keys(bar).length === len;
57
60
  }
58
61
  }
59
62
  return foo !== foo && bar !== bar;
60
63
  }
64
+ function deepEqualWithMaxDepth(maxDepth) {
65
+ return (foo, bar) => deepEqual(foo, bar, maxDepth);
66
+ }
61
67
 
62
68
  export {
63
- deepEqual
69
+ deepEqual,
70
+ deepEqualWithMaxDepth
64
71
  };
@@ -53,11 +53,33 @@ function isInArray(value, oneOf) {
53
53
  }
54
54
  return false;
55
55
  }
56
+ function findAfterIndex(array, index, predicate) {
57
+ for (let i = index + 1; i < array.length; i++) {
58
+ if (predicate(array[i])) {
59
+ return array[i];
60
+ }
61
+ }
62
+ return void 0;
63
+ }
64
+ function findBeforeIndex(array, index, predicate) {
65
+ let indexToUse = index;
66
+ if (indexToUse >= array.length) {
67
+ indexToUse = array.length;
68
+ }
69
+ for (let i = indexToUse - 1; i >= 0; i--) {
70
+ if (predicate(array[i])) {
71
+ return array[i];
72
+ }
73
+ }
74
+ return void 0;
75
+ }
56
76
 
57
77
  export {
58
78
  filterAndMap,
59
79
  sortBy,
60
80
  arrayWithPrev,
61
81
  arrayWithPrevAndIndex,
62
- isInArray
82
+ isInArray,
83
+ findAfterIndex,
84
+ findBeforeIndex
63
85
  };
@@ -20,24 +20,27 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/deepEqual.ts
21
21
  var deepEqual_exports = {};
22
22
  __export(deepEqual_exports, {
23
- deepEqual: () => deepEqual
23
+ deepEqual: () => deepEqual,
24
+ deepEqualWithMaxDepth: () => deepEqualWithMaxDepth
24
25
  });
25
26
  module.exports = __toCommonJS(deepEqual_exports);
26
27
  var has = Object.prototype.hasOwnProperty;
27
- function find(iter, tar, key) {
28
- for (key of iter.keys()) {
29
- if (deepEqual(key, tar)) return key;
28
+ function find(iter, tar, maxDepth) {
29
+ for (const key of iter.keys()) {
30
+ if (deepEqual(key, tar, maxDepth)) return key;
30
31
  }
31
32
  }
32
- function deepEqual(foo, bar) {
33
+ function deepEqual(foo, bar, maxDepth = 20) {
33
34
  let ctor, len, tmp;
34
35
  if (foo === bar) return true;
36
+ if (maxDepth && maxDepth <= 0) return false;
35
37
  if (foo && bar && (ctor = foo.constructor) === bar.constructor) {
36
- if (ctor === Date) return deepEqual(foo.getTime(), bar.getTime());
38
+ if (ctor === Date)
39
+ return deepEqual(foo.getTime(), bar.getTime(), maxDepth - 1);
37
40
  if (ctor === RegExp) return foo.toString() === bar.toString();
38
41
  if (ctor === Array) {
39
42
  if ((len = foo.length) === bar.length) {
40
- while (len-- && deepEqual(foo[len], bar[len])) ;
43
+ while (len-- && deepEqual(foo[len], bar[len], maxDepth - 1)) ;
41
44
  }
42
45
  return len === -1;
43
46
  }
@@ -48,7 +51,7 @@ function deepEqual(foo, bar) {
48
51
  for (len of foo) {
49
52
  tmp = len;
50
53
  if (tmp && typeof tmp === "object") {
51
- tmp = find(bar, tmp);
54
+ tmp = find(bar, tmp, maxDepth - 1);
52
55
  if (!tmp) return false;
53
56
  }
54
57
  if (!bar.has(tmp)) return false;
@@ -62,10 +65,10 @@ function deepEqual(foo, bar) {
62
65
  for (len of foo) {
63
66
  tmp = len[0];
64
67
  if (tmp && typeof tmp === "object") {
65
- tmp = find(bar, tmp);
68
+ tmp = find(bar, tmp, maxDepth - 1);
66
69
  if (!tmp) return false;
67
70
  }
68
- if (!deepEqual(len[1], bar.get(tmp))) {
71
+ if (!deepEqual(len[1], bar.get(tmp), maxDepth - 1)) {
69
72
  return false;
70
73
  }
71
74
  }
@@ -75,14 +78,19 @@ function deepEqual(foo, bar) {
75
78
  len = 0;
76
79
  for (ctor in foo) {
77
80
  if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;
78
- if (!(ctor in bar) || !deepEqual(foo[ctor], bar[ctor])) return false;
81
+ if (!(ctor in bar) || !deepEqual(foo[ctor], bar[ctor], maxDepth - 1))
82
+ return false;
79
83
  }
80
84
  return Object.keys(bar).length === len;
81
85
  }
82
86
  }
83
87
  return foo !== foo && bar !== bar;
84
88
  }
89
+ function deepEqualWithMaxDepth(maxDepth) {
90
+ return (foo, bar) => deepEqual(foo, bar, maxDepth);
91
+ }
85
92
  // Annotate the CommonJS export names for ESM import in node:
86
93
  0 && (module.exports = {
87
- deepEqual
94
+ deepEqual,
95
+ deepEqualWithMaxDepth
88
96
  });
@@ -1,4 +1,20 @@
1
- /** forked from https://github.com/lukeed/dequal to consider invalid dates as equal */
2
- declare function deepEqual(foo: any, bar: any): boolean;
1
+ /**
2
+ * Deep equality comparison between two values
3
+ * @param foo First value to compare
4
+ * @param bar Second value to compare
5
+ * @param maxDepth Maximum comparison depth (default: 20)
6
+ * @returns True if values are deeply equal, false otherwise
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * deepEqual({a: 1}, {a: 1}) // true
11
+ * deepEqual({a: 1}, {a: 2}) // false
12
+ * deepEqual([1, {b: 2}], [1, {b: 2}]) // true
13
+ * deepEqual(new Map([['a', 1]]), new Map([['a', 1]])) // true
14
+ * deepEqual(new Set([1, 2]), new Set([1, 2])) // true
15
+ * ```
16
+ */
17
+ declare function deepEqual(foo: any, bar: any, maxDepth?: number): boolean;
18
+ declare function deepEqualWithMaxDepth(maxDepth: number): (foo: any, bar: any) => boolean;
3
19
 
4
- export { deepEqual };
20
+ export { deepEqual, deepEqualWithMaxDepth };
@@ -1,4 +1,20 @@
1
- /** forked from https://github.com/lukeed/dequal to consider invalid dates as equal */
2
- declare function deepEqual(foo: any, bar: any): boolean;
1
+ /**
2
+ * Deep equality comparison between two values
3
+ * @param foo First value to compare
4
+ * @param bar Second value to compare
5
+ * @param maxDepth Maximum comparison depth (default: 20)
6
+ * @returns True if values are deeply equal, false otherwise
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * deepEqual({a: 1}, {a: 1}) // true
11
+ * deepEqual({a: 1}, {a: 2}) // false
12
+ * deepEqual([1, {b: 2}], [1, {b: 2}]) // true
13
+ * deepEqual(new Map([['a', 1]]), new Map([['a', 1]])) // true
14
+ * deepEqual(new Set([1, 2]), new Set([1, 2])) // true
15
+ * ```
16
+ */
17
+ declare function deepEqual(foo: any, bar: any, maxDepth?: number): boolean;
18
+ declare function deepEqualWithMaxDepth(maxDepth: number): (foo: any, bar: any) => boolean;
3
19
 
4
- export { deepEqual };
20
+ export { deepEqual, deepEqualWithMaxDepth };
package/dist/deepEqual.js CHANGED
@@ -1,6 +1,8 @@
1
1
  import {
2
- deepEqual
3
- } from "./chunk-KCOXGSRA.js";
2
+ deepEqual,
3
+ deepEqualWithMaxDepth
4
+ } from "./chunk-JQFUKJU5.js";
4
5
  export {
5
- deepEqual
6
+ deepEqual,
7
+ deepEqualWithMaxDepth
6
8
  };
@@ -2,7 +2,7 @@ import {
2
2
  clampMax,
3
3
  clampMin,
4
4
  clampRange
5
- } from "./chunk-NWXBMMHO.js";
5
+ } from "./chunk-HTCYUMDR.js";
6
6
  import {
7
7
  invariant
8
8
  } from "./chunk-4UGSP3L3.js";
@@ -23,7 +23,8 @@ __export(mathUtils_exports, {
23
23
  clamp: () => clamp,
24
24
  clampMax: () => clampMax,
25
25
  clampMin: () => clampMin,
26
- clampRange: () => clampRange
26
+ clampRange: () => clampRange,
27
+ fixFloatingPointNumber: () => fixFloatingPointNumber
27
28
  });
28
29
  module.exports = __toCommonJS(mathUtils_exports);
29
30
  function clampMax(value, max) {
@@ -41,10 +42,14 @@ function clampRange(num, v1, v2) {
41
42
  function clamp(num, min, max) {
42
43
  return num > max ? max : num < min ? min : num;
43
44
  }
45
+ function fixFloatingPointNumber(value) {
46
+ return Number(value.toPrecision(15));
47
+ }
44
48
  // Annotate the CommonJS export names for ESM import in node:
45
49
  0 && (module.exports = {
46
50
  clamp,
47
51
  clampMax,
48
52
  clampMin,
49
- clampRange
53
+ clampRange,
54
+ fixFloatingPointNumber
50
55
  });
@@ -2,5 +2,6 @@ declare function clampMax(value: number, max: number): number;
2
2
  declare function clampMin(value: number, min: number): number;
3
3
  declare function clampRange(num: number, v1: number, v2: number): number;
4
4
  declare function clamp(num: number, min: number, max: number): number;
5
+ declare function fixFloatingPointNumber(value: number): number;
5
6
 
6
- export { clamp, clampMax, clampMin, clampRange };
7
+ export { clamp, clampMax, clampMin, clampRange, fixFloatingPointNumber };
@@ -2,5 +2,6 @@ declare function clampMax(value: number, max: number): number;
2
2
  declare function clampMin(value: number, min: number): number;
3
3
  declare function clampRange(num: number, v1: number, v2: number): number;
4
4
  declare function clamp(num: number, min: number, max: number): number;
5
+ declare function fixFloatingPointNumber(value: number): number;
5
6
 
6
- export { clamp, clampMax, clampMin, clampRange };
7
+ export { clamp, clampMax, clampMin, clampRange, fixFloatingPointNumber };
package/dist/mathUtils.js CHANGED
@@ -2,11 +2,13 @@ import {
2
2
  clamp,
3
3
  clampMax,
4
4
  clampMin,
5
- clampRange
6
- } from "./chunk-NWXBMMHO.js";
5
+ clampRange,
6
+ fixFloatingPointNumber
7
+ } from "./chunk-HTCYUMDR.js";
7
8
  export {
8
9
  clamp,
9
10
  clampMax,
10
11
  clampMin,
11
- clampRange
12
+ clampRange,
13
+ fixFloatingPointNumber
12
14
  };
@@ -53,20 +53,22 @@ function isObject(value) {
53
53
 
54
54
  // src/deepEqual.ts
55
55
  var has = Object.prototype.hasOwnProperty;
56
- function find(iter, tar, key) {
57
- for (key of iter.keys()) {
58
- if (deepEqual(key, tar)) return key;
56
+ function find(iter, tar, maxDepth) {
57
+ for (const key of iter.keys()) {
58
+ if (deepEqual(key, tar, maxDepth)) return key;
59
59
  }
60
60
  }
61
- function deepEqual(foo, bar) {
61
+ function deepEqual(foo, bar, maxDepth = 20) {
62
62
  let ctor, len, tmp;
63
63
  if (foo === bar) return true;
64
+ if (maxDepth && maxDepth <= 0) return false;
64
65
  if (foo && bar && (ctor = foo.constructor) === bar.constructor) {
65
- if (ctor === Date) return deepEqual(foo.getTime(), bar.getTime());
66
+ if (ctor === Date)
67
+ return deepEqual(foo.getTime(), bar.getTime(), maxDepth - 1);
66
68
  if (ctor === RegExp) return foo.toString() === bar.toString();
67
69
  if (ctor === Array) {
68
70
  if ((len = foo.length) === bar.length) {
69
- while (len-- && deepEqual(foo[len], bar[len])) ;
71
+ while (len-- && deepEqual(foo[len], bar[len], maxDepth - 1)) ;
70
72
  }
71
73
  return len === -1;
72
74
  }
@@ -77,7 +79,7 @@ function deepEqual(foo, bar) {
77
79
  for (len of foo) {
78
80
  tmp = len;
79
81
  if (tmp && typeof tmp === "object") {
80
- tmp = find(bar, tmp);
82
+ tmp = find(bar, tmp, maxDepth - 1);
81
83
  if (!tmp) return false;
82
84
  }
83
85
  if (!bar.has(tmp)) return false;
@@ -91,10 +93,10 @@ function deepEqual(foo, bar) {
91
93
  for (len of foo) {
92
94
  tmp = len[0];
93
95
  if (tmp && typeof tmp === "object") {
94
- tmp = find(bar, tmp);
96
+ tmp = find(bar, tmp, maxDepth - 1);
95
97
  if (!tmp) return false;
96
98
  }
97
- if (!deepEqual(len[1], bar.get(tmp))) {
99
+ if (!deepEqual(len[1], bar.get(tmp), maxDepth - 1)) {
98
100
  return false;
99
101
  }
100
102
  }
@@ -104,7 +106,8 @@ function deepEqual(foo, bar) {
104
106
  len = 0;
105
107
  for (ctor in foo) {
106
108
  if (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;
107
- if (!(ctor in bar) || !deepEqual(foo[ctor], bar[ctor])) return false;
109
+ if (!(ctor in bar) || !deepEqual(foo[ctor], bar[ctor], maxDepth - 1))
110
+ return false;
108
111
  }
109
112
  return Object.keys(bar).length === len;
110
113
  }
package/dist/testUtils.js CHANGED
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  deepEqual
3
- } from "./chunk-KCOXGSRA.js";
3
+ } from "./chunk-JQFUKJU5.js";
4
4
  import {
5
5
  clampMin
6
- } from "./chunk-NWXBMMHO.js";
6
+ } from "./chunk-HTCYUMDR.js";
7
7
  import {
8
8
  omit,
9
9
  pick
@@ -11,7 +11,7 @@ import {
11
11
  import {
12
12
  arrayWithPrevAndIndex,
13
13
  filterAndMap
14
- } from "./chunk-AZBBTE33.js";
14
+ } from "./chunk-QMFZE2VO.js";
15
15
  import {
16
16
  isObject
17
17
  } from "./chunk-4UGSP3L3.js";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ls-stack/utils",
3
3
  "description": "Typescript utils",
4
- "version": "2.0.1",
4
+ "version": "2.2.0",
5
5
  "license": "MIT",
6
6
  "files": [
7
7
  "dist"
@@ -164,24 +164,26 @@
164
164
  "node": ">=20.0.0"
165
165
  },
166
166
  "devDependencies": {
167
- "@ls-stack/extended-lint": "^0.2.0",
168
- "@types/node": "^22.5.5",
169
- "@typescript-eslint/eslint-plugin": "^8.6.0",
170
- "@typescript-eslint/parser": "^8.6.0",
171
- "@vitest/ui": "^2.1.1",
172
- "eslint": "^9.10.0",
167
+ "@ls-stack/extended-lint": "^0.20.1",
173
168
  "@types/eslint": "^9.6.1",
174
169
  "@types/eslint__js": "^8.42.3",
175
- "eslint-plugin-unicorn": "^55.0.0",
170
+ "@types/node": "^22.10.2",
171
+ "@typescript-eslint/eslint-plugin": "^8.18.1",
172
+ "@typescript-eslint/parser": "^8.18.1",
173
+ "@vitest/ui": "^2.1.8",
174
+ "dequal": "^2.0.3",
175
+ "eslint": "^9.17.0",
176
+ "eslint-plugin-unicorn": "^56.0.1",
176
177
  "eslint-plugin-vitest": "^0.5.4",
177
- "prettier": "3.3.3",
178
- "prettier-plugin-organize-imports": "^4.0.0",
178
+ "mitata": "^1.0.21",
179
+ "prettier": "3.4.2",
180
+ "prettier-plugin-organize-imports": "^4.1.0",
179
181
  "tsm": "^2.3.0",
180
- "tsup": "^8.3.0",
181
- "typescript": "^5.6.2",
182
- "typescript-eslint": "^8.6.0",
183
- "vite": "^5.4.6",
184
- "vitest": "^2.1.1"
182
+ "tsup": "^8.3.5",
183
+ "typescript": "^5.7.2",
184
+ "typescript-eslint": "^8.18.1",
185
+ "vite": "^6.0.5",
186
+ "vitest": "^2.1.8"
185
187
  },
186
188
  "typesVersions": {
187
189
  "*": {
@@ -283,6 +285,7 @@
283
285
  "build:update-exports": "tsm --no-warnings scripts/updatePackageExports.ts",
284
286
  "build-test": "tsup --config tsup.test.config.ts",
285
287
  "pre-publish": "./scripts/check-if-is-sync.sh && pnpm build",
286
- "test:console-fmt": "tsm --no-warnings scripts/testConsoleFmt.ts"
288
+ "test:console-fmt": "tsm --no-warnings scripts/testConsoleFmt.ts",
289
+ "bench:deepEqual": "tsm --no-warnings benchmarks/deepEqual.ts"
287
290
  }
288
291
  }