@lowentry/utils 2.0.3 → 2.0.6

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 (172) hide show
  1. package/dist/index.d.ts +1183 -0
  2. package/dist/index.js +3101 -0
  3. package/dist/index.js.map +1 -0
  4. package/package.json +3 -2
  5. package/dist/src/LeTypes.d.ts +0 -73
  6. package/dist/src/LeTypes.d.ts.map +0 -1
  7. package/dist/src/LeTypes.js +0 -235
  8. package/dist/src/LeTypes.js.map +0 -1
  9. package/dist/src/LeUtils.d.ts +0 -745
  10. package/dist/src/LeUtils.d.ts.map +0 -1
  11. package/dist/src/LeUtils.js +0 -3168
  12. package/dist/src/LeUtils.js.map +0 -1
  13. package/dist/src/classes/EventEmitter.d.ts +0 -51
  14. package/dist/src/classes/EventEmitter.d.ts.map +0 -1
  15. package/dist/src/classes/EventEmitter.js +0 -94
  16. package/dist/src/classes/EventEmitter.js.map +0 -1
  17. package/dist/src/classes/LinkedList.d.ts +0 -35
  18. package/dist/src/classes/LinkedList.d.ts.map +0 -1
  19. package/dist/src/classes/LinkedList.js +0 -99
  20. package/dist/src/classes/LinkedList.js.map +0 -1
  21. package/dist/src/classes/SerializableMap.d.ts +0 -14
  22. package/dist/src/classes/SerializableMap.d.ts.map +0 -1
  23. package/dist/src/classes/SerializableMap.js +0 -27
  24. package/dist/src/classes/SerializableMap.js.map +0 -1
  25. package/dist/src/classes/TreeSet.d.ts +0 -123
  26. package/dist/src/classes/TreeSet.d.ts.map +0 -1
  27. package/dist/src/classes/TreeSet.js +0 -210
  28. package/dist/src/classes/TreeSet.js.map +0 -1
  29. package/dist/src/index.d.ts +0 -148
  30. package/dist/src/index.d.ts.map +0 -1
  31. package/dist/src/index.js +0 -13
  32. package/dist/src/index.js.map +0 -1
  33. package/dist/tests/CustomClasses.test.d.ts +0 -2
  34. package/dist/tests/CustomClasses.test.d.ts.map +0 -1
  35. package/dist/tests/CustomClasses.test.js +0 -138
  36. package/dist/tests/CustomClasses.test.js.map +0 -1
  37. package/dist/tests/LeClasses.EventEmitter.test.d.ts +0 -2
  38. package/dist/tests/LeClasses.EventEmitter.test.d.ts.map +0 -1
  39. package/dist/tests/LeClasses.EventEmitter.test.js +0 -39
  40. package/dist/tests/LeClasses.EventEmitter.test.js.map +0 -1
  41. package/dist/tests/LeClasses.LinkedList.test.d.ts +0 -2
  42. package/dist/tests/LeClasses.LinkedList.test.d.ts.map +0 -1
  43. package/dist/tests/LeClasses.LinkedList.test.js +0 -36
  44. package/dist/tests/LeClasses.LinkedList.test.js.map +0 -1
  45. package/dist/tests/LeClasses.SerializableMap.test.d.ts +0 -2
  46. package/dist/tests/LeClasses.SerializableMap.test.d.ts.map +0 -1
  47. package/dist/tests/LeClasses.SerializableMap.test.js +0 -25
  48. package/dist/tests/LeClasses.SerializableMap.test.js.map +0 -1
  49. package/dist/tests/LeClasses.TreeSet.test.d.ts +0 -2
  50. package/dist/tests/LeClasses.TreeSet.test.d.ts.map +0 -1
  51. package/dist/tests/LeClasses.TreeSet.test.js +0 -28
  52. package/dist/tests/LeClasses.TreeSet.test.js.map +0 -1
  53. package/dist/tests/LeTypes.ARRAY.test.d.ts +0 -2
  54. package/dist/tests/LeTypes.ARRAY.test.d.ts.map +0 -1
  55. package/dist/tests/LeTypes.ARRAY.test.js +0 -103
  56. package/dist/tests/LeTypes.ARRAY.test.js.map +0 -1
  57. package/dist/tests/LeTypes.BOOL.test.d.ts +0 -2
  58. package/dist/tests/LeTypes.BOOL.test.d.ts.map +0 -1
  59. package/dist/tests/LeTypes.BOOL.test.js +0 -138
  60. package/dist/tests/LeTypes.BOOL.test.js.map +0 -1
  61. package/dist/tests/LeTypes.FLOAT.test.d.ts +0 -2
  62. package/dist/tests/LeTypes.FLOAT.test.d.ts.map +0 -1
  63. package/dist/tests/LeTypes.FLOAT.test.js +0 -120
  64. package/dist/tests/LeTypes.FLOAT.test.js.map +0 -1
  65. package/dist/tests/LeTypes.FLOAT_ANY.test.d.ts +0 -2
  66. package/dist/tests/LeTypes.FLOAT_ANY.test.d.ts.map +0 -1
  67. package/dist/tests/LeTypes.FLOAT_ANY.test.js +0 -47
  68. package/dist/tests/LeTypes.FLOAT_ANY.test.js.map +0 -1
  69. package/dist/tests/LeTypes.INT.test.d.ts +0 -2
  70. package/dist/tests/LeTypes.INT.test.d.ts.map +0 -1
  71. package/dist/tests/LeTypes.INT.test.js +0 -80
  72. package/dist/tests/LeTypes.INT.test.js.map +0 -1
  73. package/dist/tests/LeTypes.INT_ANY.test.d.ts +0 -2
  74. package/dist/tests/LeTypes.INT_ANY.test.d.ts.map +0 -1
  75. package/dist/tests/LeTypes.INT_ANY.test.js +0 -37
  76. package/dist/tests/LeTypes.INT_ANY.test.js.map +0 -1
  77. package/dist/tests/LeTypes.ISSET.test.d.ts +0 -2
  78. package/dist/tests/LeTypes.ISSET.test.d.ts.map +0 -1
  79. package/dist/tests/LeTypes.ISSET.test.js +0 -113
  80. package/dist/tests/LeTypes.ISSET.test.js.map +0 -1
  81. package/dist/tests/LeTypes.IS_ARRAY.test.d.ts +0 -2
  82. package/dist/tests/LeTypes.IS_ARRAY.test.d.ts.map +0 -1
  83. package/dist/tests/LeTypes.IS_ARRAY.test.js +0 -81
  84. package/dist/tests/LeTypes.IS_ARRAY.test.js.map +0 -1
  85. package/dist/tests/LeTypes.IS_OBJECT.test.d.ts +0 -2
  86. package/dist/tests/LeTypes.IS_OBJECT.test.d.ts.map +0 -1
  87. package/dist/tests/LeTypes.IS_OBJECT.test.js +0 -98
  88. package/dist/tests/LeTypes.IS_OBJECT.test.js.map +0 -1
  89. package/dist/tests/LeTypes.LAX.test.d.ts +0 -2
  90. package/dist/tests/LeTypes.LAX.test.d.ts.map +0 -1
  91. package/dist/tests/LeTypes.LAX.test.js +0 -89
  92. package/dist/tests/LeTypes.LAX.test.js.map +0 -1
  93. package/dist/tests/LeTypes.OBJECT.test.d.ts +0 -2
  94. package/dist/tests/LeTypes.OBJECT.test.d.ts.map +0 -1
  95. package/dist/tests/LeTypes.OBJECT.test.js +0 -81
  96. package/dist/tests/LeTypes.OBJECT.test.js.map +0 -1
  97. package/dist/tests/LeTypes.STRING.test.d.ts +0 -2
  98. package/dist/tests/LeTypes.STRING.test.d.ts.map +0 -1
  99. package/dist/tests/LeTypes.STRING.test.js +0 -204
  100. package/dist/tests/LeTypes.STRING.test.js.map +0 -1
  101. package/dist/tests/LeTypes.STRING_ANY.test.d.ts +0 -2
  102. package/dist/tests/LeTypes.STRING_ANY.test.d.ts.map +0 -1
  103. package/dist/tests/LeTypes.STRING_ANY.test.js +0 -58
  104. package/dist/tests/LeTypes.STRING_ANY.test.js.map +0 -1
  105. package/dist/tests/LeUtils.clone.test.d.ts +0 -2
  106. package/dist/tests/LeUtils.clone.test.d.ts.map +0 -1
  107. package/dist/tests/LeUtils.clone.test.js +0 -180
  108. package/dist/tests/LeUtils.clone.test.js.map +0 -1
  109. package/dist/tests/LeUtils.collections.test.d.ts +0 -2
  110. package/dist/tests/LeUtils.collections.test.d.ts.map +0 -1
  111. package/dist/tests/LeUtils.collections.test.js +0 -149
  112. package/dist/tests/LeUtils.collections.test.js.map +0 -1
  113. package/dist/tests/LeUtils.comparison.test.d.ts +0 -2
  114. package/dist/tests/LeUtils.comparison.test.d.ts.map +0 -1
  115. package/dist/tests/LeUtils.comparison.test.js +0 -125
  116. package/dist/tests/LeUtils.comparison.test.js.map +0 -1
  117. package/dist/tests/LeUtils.contains.test.d.ts +0 -2
  118. package/dist/tests/LeUtils.contains.test.d.ts.map +0 -1
  119. package/dist/tests/LeUtils.contains.test.js +0 -52
  120. package/dist/tests/LeUtils.contains.test.js.map +0 -1
  121. package/dist/tests/LeUtils.each.test.d.ts +0 -2
  122. package/dist/tests/LeUtils.each.test.d.ts.map +0 -1
  123. package/dist/tests/LeUtils.each.test.js +0 -267
  124. package/dist/tests/LeUtils.each.test.js.map +0 -1
  125. package/dist/tests/LeUtils.eachAsync.test.d.ts +0 -2
  126. package/dist/tests/LeUtils.eachAsync.test.d.ts.map +0 -1
  127. package/dist/tests/LeUtils.eachAsync.test.js +0 -80
  128. package/dist/tests/LeUtils.eachAsync.test.js.map +0 -1
  129. package/dist/tests/LeUtils.encoding.test.d.ts +0 -2
  130. package/dist/tests/LeUtils.encoding.test.d.ts.map +0 -1
  131. package/dist/tests/LeUtils.encoding.test.js +0 -45
  132. package/dist/tests/LeUtils.encoding.test.js.map +0 -1
  133. package/dist/tests/LeUtils.equals.test.d.ts +0 -2
  134. package/dist/tests/LeUtils.equals.test.d.ts.map +0 -1
  135. package/dist/tests/LeUtils.equals.test.js +0 -328
  136. package/dist/tests/LeUtils.equals.test.js.map +0 -1
  137. package/dist/tests/LeUtils.flatten.test.d.ts +0 -2
  138. package/dist/tests/LeUtils.flatten.test.d.ts.map +0 -1
  139. package/dist/tests/LeUtils.flatten.test.js +0 -30
  140. package/dist/tests/LeUtils.flatten.test.js.map +0 -1
  141. package/dist/tests/LeUtils.misc.test.d.ts +0 -2
  142. package/dist/tests/LeUtils.misc.test.d.ts.map +0 -1
  143. package/dist/tests/LeUtils.misc.test.js +0 -50
  144. package/dist/tests/LeUtils.misc.test.js.map +0 -1
  145. package/dist/tests/LeUtils.misc2.test.d.ts +0 -2
  146. package/dist/tests/LeUtils.misc2.test.d.ts.map +0 -1
  147. package/dist/tests/LeUtils.misc2.test.js +0 -58
  148. package/dist/tests/LeUtils.misc2.test.js.map +0 -1
  149. package/dist/tests/LeUtils.newlyAdded.test.d.ts +0 -2
  150. package/dist/tests/LeUtils.newlyAdded.test.d.ts.map +0 -1
  151. package/dist/tests/LeUtils.newlyAdded.test.js +0 -121
  152. package/dist/tests/LeUtils.newlyAdded.test.js.map +0 -1
  153. package/dist/tests/LeUtils.strings.test.d.ts +0 -2
  154. package/dist/tests/LeUtils.strings.test.d.ts.map +0 -1
  155. package/dist/tests/LeUtils.strings.test.js +0 -125
  156. package/dist/tests/LeUtils.strings.test.js.map +0 -1
  157. package/dist/tests/LeUtils.timing.test.d.ts +0 -2
  158. package/dist/tests/LeUtils.timing.test.d.ts.map +0 -1
  159. package/dist/tests/LeUtils.timing.test.js +0 -72
  160. package/dist/tests/LeUtils.timing.test.js.map +0 -1
  161. package/dist/tests/LeUtils.transactional.test.d.ts +0 -2
  162. package/dist/tests/LeUtils.transactional.test.d.ts.map +0 -1
  163. package/dist/tests/LeUtils.transactional.test.js +0 -39
  164. package/dist/tests/LeUtils.transactional.test.js.map +0 -1
  165. package/dist/tests/setup.d.ts +0 -2
  166. package/dist/tests/setup.d.ts.map +0 -1
  167. package/dist/tests/setup.js +0 -6
  168. package/dist/tests/setup.js.map +0 -1
  169. package/dist/vitest.config.d.ts +0 -3
  170. package/dist/vitest.config.d.ts.map +0 -1
  171. package/dist/vitest.config.js +0 -21
  172. package/dist/vitest.config.js.map +0 -1
@@ -1,149 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { filter, map, mapToArray, getEmptySimplifiedCollection, sortKeys } from '../src/index';
3
- /**
4
- * Collection transformation functions - Tests from old each.test.js
5
- */
6
- describe('filter()', () => {
7
- it('filters array with default truthy predicate', () => {
8
- const out = filter([0, 1, '', 'x', false, true]);
9
- expect(out).toEqual([1, 'x', true]);
10
- });
11
- it('filters object by custom predicate', () => {
12
- const res = filter({ a: 1, b: 2, c: 3 }, (v) => v > 1);
13
- expect(res).toEqual({ b: 2, c: 3 });
14
- });
15
- it('filters Map and returns Map', () => {
16
- const m = new Map([['a', 1], ['b', 2]]);
17
- const out = filter(m, (v) => v % 2 === 0);
18
- expect(out instanceof Map).toBe(true);
19
- expect(out.get('b')).toBe(2);
20
- });
21
- it('filters Map with truthy default', () => {
22
- const m = new Map([['a', 0], ['b', 2]]);
23
- const res = filter(m);
24
- expect(res instanceof Map).toBe(true);
25
- expect([...res.entries()]).toEqual([['b', 2]]);
26
- });
27
- it('filters Set returns array', () => {
28
- const s = new Set([1, 2, 3]);
29
- const res = filter(s, (v) => v % 2 === 1);
30
- expect(res).toEqual([1, 3]);
31
- });
32
- });
33
- describe('map()', () => {
34
- it('maps array elements', () => {
35
- expect(map([1, 2], (n) => n * 2)).toEqual([2, 4]);
36
- });
37
- it('maps object values', () => {
38
- expect(map({ x: 1 }, (v) => v + 1)).toEqual({ x: 2 });
39
- });
40
- it('maps typed array to regular array', () => {
41
- const ta = new Uint8Array([1, 2]);
42
- expect(map(ta, (n) => n + 3)).toEqual([4, 5]);
43
- });
44
- it('returns Map clone when callback omitted', () => {
45
- const m = new Map([['k', 5]]);
46
- const res = map(m);
47
- expect(res instanceof Map).toBe(true);
48
- expect(res.get('k')).toBe(5);
49
- expect(res).not.toBe(m);
50
- });
51
- });
52
- describe('mapToArray()', () => {
53
- it('maps Map to array', () => {
54
- const m = new Map([['k', 2]]);
55
- expect(mapToArray(m, (v) => v * 3)).toEqual([6]);
56
- });
57
- it('maps object to array', () => {
58
- expect(mapToArray({ a: 1, b: 2 }, (v) => v * 2)).toEqual([2, 4]);
59
- });
60
- it('maps array to array', () => {
61
- expect(mapToArray([1, 2], (v) => v + 10)).toEqual([11, 12]);
62
- });
63
- });
64
- describe('getEmptySimplifiedCollection()', () => {
65
- it('creates empty array for array source', () => {
66
- const [ok, collection, add] = getEmptySimplifiedCollection([5]);
67
- expect(ok).toBe(true);
68
- add(1, 0);
69
- add(2, 1);
70
- expect(collection).toEqual([1, 2]);
71
- });
72
- it('creates empty Map for Map source', () => {
73
- const [ok, collection, add] = getEmptySimplifiedCollection(new Map());
74
- expect(ok).toBe(true);
75
- add('v', 'k');
76
- expect(collection instanceof Map).toBe(true);
77
- expect(collection.get('k')).toBe('v');
78
- });
79
- it('creates empty object for plain object source', () => {
80
- const [ok, collection, add] = getEmptySimplifiedCollection({});
81
- expect(ok).toBe(true);
82
- add('val', 'key');
83
- expect(collection).toEqual({ key: 'val' });
84
- });
85
- it('creates empty object for custom iterable (plain)', () => {
86
- const iterable = {
87
- *[Symbol.iterator]() {
88
- yield 1;
89
- },
90
- };
91
- const [ok, collection, add] = getEmptySimplifiedCollection(iterable);
92
- expect(ok).toBe(true);
93
- expect(Array.isArray(collection)).toBe(false);
94
- add(2, '0');
95
- expect(collection).toEqual({ 0: 2 });
96
- });
97
- it('creates empty array for custom iterable (class)', () => {
98
- class CustomIterable {
99
- *[Symbol.iterator]() {
100
- yield 1;
101
- }
102
- }
103
- const iterable = new CustomIterable();
104
- const [ok, collection, add] = getEmptySimplifiedCollection(iterable);
105
- expect(ok).toBe(true);
106
- expect(Array.isArray(collection)).toBe(true);
107
- add(2, 0);
108
- expect(collection).toEqual([2]);
109
- });
110
- it('creates empty object for function source', () => {
111
- const fn = () => { };
112
- const [ok, collection, add] = getEmptySimplifiedCollection(fn);
113
- expect(ok).toBe(true);
114
- add('v', 'k');
115
- expect(collection).toEqual({ k: 'v' });
116
- });
117
- it('returns false for null', () => {
118
- const [ok] = getEmptySimplifiedCollection(null);
119
- expect(ok).toBe(false);
120
- });
121
- it('returns false for undefined', () => {
122
- const [ok] = getEmptySimplifiedCollection(undefined);
123
- expect(ok).toBe(false);
124
- });
125
- });
126
- describe('Collections - Validation', () => {
127
- it('filter() handles null callback (filters truthy)', () => {
128
- const arr = [1, 2];
129
- // @ts-ignore
130
- expect(filter(arr, null)).toStrictEqual(arr);
131
- expect(filter([0, 1, false, 2], null)).toStrictEqual([1, 2]);
132
- });
133
- it('map() handles invalid callback', () => {
134
- const arr = [1, 2];
135
- // @ts-ignore
136
- expect(() => map(arr, 'not a function')).toThrow(TypeError);
137
- });
138
- it('mapToArray() handles invalid callback', () => {
139
- const arr = [1, 2];
140
- // @ts-ignore
141
- expect(() => mapToArray(arr, 123)).toThrow(TypeError);
142
- });
143
- it('sortKeys() handles invalid comparator', () => {
144
- const obj = { a: 1 };
145
- // @ts-ignore
146
- expect(() => sortKeys(obj, null)).toThrow(TypeError);
147
- });
148
- });
149
- //# sourceMappingURL=LeUtils.collections.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LeUtils.collections.test.js","sourceRoot":"","sources":["../../tests/LeUtils.collections.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAC,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAC,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,4BAA4B,EAAE,QAAQ,EAAC,MAAM,cAAc,CAAC;AAE7F;;GAEG;AAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IAEzB,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QAEtD,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAE7C,MAAM,GAAG,GAAG,MAAM,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,EAAE,CAAC,CAAU,EAAE,EAAE,CAAE,CAAY,GAAG,CAAC,CAAC,CAAC;QAC1E,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QAEtC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,GAAG,GAAQ,MAAM,CAAC,CAAC,EAAE,CAAC,CAAU,EAAE,EAAE,CAAE,CAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACpE,MAAM,CAAC,GAAG,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAE1C,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,GAAG,GAAQ,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,CAAC,GAAG,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QAEpC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,CAAU,EAAE,EAAE,CAAE,CAAY,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/D,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IAEtB,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAE9B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAU,EAAE,EAAE,CAAE,CAAY,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAE7B,MAAM,CAAC,GAAG,CAAC,EAAC,CAAC,EAAE,CAAC,EAAC,EAAE,CAAC,CAAU,EAAE,EAAE,CAAE,CAAY,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAE5C,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAU,EAAE,EAAE,CAAE,CAAY,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QAElD,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,GAAG,GAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,CAAC,GAAG,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAE7B,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAE5B,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAU,EAAE,EAAE,CAAE,CAAY,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAE/B,MAAM,CAAC,UAAU,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,EAAE,CAAC,CAAU,EAAE,EAAE,CAAE,CAAY,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;QAE9B,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAU,EAAE,EAAE,CAAE,CAAY,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAClF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAE/C,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAE/C,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,GAAG,4BAA4B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACV,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACV,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAE3C,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,GAAG,4BAA4B,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;QACtE,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACd,MAAM,CAAC,UAAU,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,CAAE,UAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QAEvD,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,GAAG,4BAA4B,CAAC,EAAE,CAAC,CAAC;QAC/D,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAClB,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAC,GAAG,EAAE,KAAK,EAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAE3D,MAAM,QAAQ,GAAG;YAChB,CAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAElB,MAAM,CAAC,CAAC;YACT,CAAC;SACD,CAAC;QACF,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,GAAG,4BAA4B,CAAC,QAAQ,CAAC,CAAC;QACrE,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9C,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACZ,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAC,CAAC,EAAE,CAAC,EAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAE1D,MAAM,cAAc;YAEnB,CAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAElB,MAAM,CAAC,CAAC;YACT,CAAC;SACD;QACD,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAC;QACtC,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,GAAG,4BAA4B,CAAC,QAAQ,CAAC,CAAC;QACrE,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACV,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAEnD,MAAM,EAAE,GAAG,GAAG,EAAE,GACf,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,GAAG,4BAA4B,CAAC,EAAE,CAAC,CAAC;QAC/D,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACd,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAC,CAAC,EAAE,GAAG,EAAC,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAEjC,MAAM,CAAC,EAAE,CAAC,GAAG,4BAA4B,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QAEtC,MAAM,CAAC,EAAE,CAAC,GAAG,4BAA4B,CAAC,SAAS,CAAC,CAAC;QACrD,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IAEzC,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QAE1D,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnB,aAAa;QACb,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAW,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,IAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QAEzC,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnB,aAAa;QACb,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAEhD,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnB,aAAa;QACb,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAEhD,MAAM,GAAG,GAAG,EAAC,CAAC,EAAE,CAAC,EAAC,CAAC;QACnB,aAAa;QACb,MAAM,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=LeUtils.comparison.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LeUtils.comparison.test.d.ts","sourceRoot":"","sources":["../../tests/LeUtils.comparison.test.ts"],"names":[],"mappings":""}
@@ -1,125 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { compare, compareNumbers, compareNumericStrings, compareNaturalStrings, isEmptyObject, getObjectFieldsCount } from '../src/index';
3
- /**
4
- * Comparison functions - for sorting
5
- */
6
- describe('compare()', () => {
7
- it('returns -1 when a < b', () => {
8
- expect(compare(1, 2)).toBe(-1);
9
- expect(compare('a', 'b')).toBe(-1);
10
- });
11
- it('returns 1 when a > b', () => {
12
- expect(compare(2, 1)).toBe(1);
13
- expect(compare('b', 'a')).toBe(1);
14
- });
15
- it('returns 0 when a === b', () => {
16
- expect(compare(5, 5)).toBe(0);
17
- expect(compare('hello', 'hello')).toBe(0);
18
- });
19
- it('handles null', () => {
20
- expect(compare(null, null)).toBe(0);
21
- expect(compare(null, 1)).toBe(-1);
22
- expect(compare(1, null)).toBe(1);
23
- });
24
- it('handles undefined', () => {
25
- expect(compare(undefined, undefined)).toBe(0);
26
- });
27
- });
28
- describe('compareNumbers()', () => {
29
- it('returns negative when a < b', () => {
30
- expect(compareNumbers(1, 2)).toBeLessThan(0);
31
- });
32
- it('returns positive when a > b', () => {
33
- expect(compareNumbers(2, 1)).toBeGreaterThan(0);
34
- });
35
- it('returns 0 when equal', () => {
36
- expect(compareNumbers(5, 5)).toBe(0);
37
- });
38
- it('handles negatives', () => {
39
- expect(compareNumbers(-5, -3)).toBeLessThan(0);
40
- });
41
- it('handles zero', () => {
42
- expect(compareNumbers(0, 0)).toBe(0);
43
- expect(compareNumbers(-1, 0)).toBeLessThan(0);
44
- });
45
- it('handles Infinity', () => {
46
- expect(compareNumbers(Infinity, 100)).toBeGreaterThan(0);
47
- expect(compareNumbers(-Infinity, 100)).toBeLessThan(0);
48
- });
49
- it('handles NaN returns NaN', () => {
50
- const result = compareNumbers(NaN, 5);
51
- expect(Number.isNaN(result)).toBe(true);
52
- });
53
- });
54
- describe('compareNumericStrings()', () => {
55
- it('compares "1.0.0" vs "1.0.1"', () => {
56
- expect(compareNumericStrings('1.0.0', '1.0.1')).toBeLessThan(0);
57
- });
58
- it('compares "1.10" vs "1.2"', () => {
59
- expect(compareNumericStrings('1.10', '1.2')).toBeGreaterThan(0);
60
- });
61
- it('handles equal strings', () => {
62
- expect(compareNumericStrings('1.2.3', '1.2.3')).toBe(0);
63
- });
64
- it('compares by length first (within each part)', () => {
65
- expect(compareNumericStrings('1.10', '1.9')).toBeGreaterThan(0);
66
- });
67
- it('handles different number of parts', () => {
68
- expect(compareNumericStrings('1.0', '1.0.1')).toBeLessThan(0);
69
- });
70
- it('handles whitespace in parts', () => {
71
- expect(compareNumericStrings('1. 5', '1.5')).toBe(0);
72
- });
73
- });
74
- describe('compareNaturalStrings()', () => {
75
- it('sorts "file5.txt" before "file10.txt"', () => {
76
- expect(compareNaturalStrings('file5.txt', 'file10.txt')).toBeLessThan(0);
77
- });
78
- it('sorts "file/5/test" before "file/10/test"', () => {
79
- expect(compareNaturalStrings('file/5/test.txt', 'file/10/test.txt')).toBeLessThan(0);
80
- });
81
- it('handles no numbers', () => {
82
- expect(compareNaturalStrings('abc', 'def')).toBeLessThan(0);
83
- });
84
- it('handles equal strings', () => {
85
- expect(compareNaturalStrings('test', 'test')).toBe(0);
86
- });
87
- it('handles numbers vs letters', () => {
88
- expect(compareNaturalStrings('5', 'a')).toBeLessThan(0);
89
- });
90
- it('handles empty strings', () => {
91
- expect(compareNaturalStrings('', '')).toBe(0);
92
- expect(compareNaturalStrings('', 'a')).toBeLessThan(0);
93
- });
94
- it('handles special characters', () => {
95
- expect(compareNaturalStrings('a', '_')).toBeGreaterThan(0);
96
- });
97
- });
98
- describe('compareNumericStrings() - Edge Cases', () => {
99
- it('handles various numeric strings', () => {
100
- expect(compareNumericStrings('1.2.3', '1.2.4')).toBeLessThan(0);
101
- expect(compareNumericStrings('1.10', '1.2')).toBeGreaterThan(0);
102
- expect(compareNumericStrings(' 1.1 ', '1.1')).toBe(0);
103
- });
104
- it('handles different number of parts', () => {
105
- expect(compareNumericStrings('1.2', '1.2.0')).toBeLessThan(0);
106
- });
107
- });
108
- describe('isEmptyObject() / getObjectFieldsCount() - Edge Cases', () => {
109
- it('handles objects with inherited properties', () => {
110
- const proto = { a: 1 };
111
- const obj = Object.create(proto);
112
- expect(isEmptyObject(obj)).toBe(true);
113
- expect(getObjectFieldsCount(obj)).toBe(0);
114
- obj.b = 2;
115
- expect(isEmptyObject(obj)).toBe(false);
116
- expect(getObjectFieldsCount(obj)).toBe(1);
117
- });
118
- it('handles null/undefined gracefully', () => {
119
- // Current implementation might crash or return true/0
120
- // Let's see what happens - actually it just returns true/0
121
- expect(isEmptyObject(null)).toBe(true);
122
- expect(getObjectFieldsCount(undefined)).toBe(0);
123
- });
124
- });
125
- //# sourceMappingURL=LeUtils.comparison.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LeUtils.comparison.test.js","sourceRoot":"","sources":["../../tests/LeUtils.comparison.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=LeUtils.contains.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LeUtils.contains.test.d.ts","sourceRoot":"","sources":["../../tests/LeUtils.contains.test.ts"],"names":[],"mappings":""}
@@ -1,52 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { contains, find, findIndex, findIndexValue } from '../src/index';
3
- /**
4
- * Search/contains functions
5
- */
6
- describe('contains()', () => {
7
- it('finds value in array', () => {
8
- expect(contains([1, 2, 3], 2)).toBe(true);
9
- });
10
- it('returns false if not found', () => {
11
- expect(contains([1, 2, 3], 5)).toBe(false);
12
- });
13
- it('finds value in object', () => {
14
- expect(contains({ a: 1, b: 2 }, 2)).toBe(true);
15
- });
16
- it('compares by string casting', () => {
17
- expect(contains([1, 2, 3], '2')).toBe(true); // '2' === '2'
18
- });
19
- it('handles null collection', () => {
20
- expect(contains(null, 1)).toBe(false);
21
- });
22
- });
23
- describe('findIndex()', () => {
24
- it('finds index in array', () => {
25
- expect(findIndex([10, 20, 30], (v) => v === 20)).toBe(1);
26
- });
27
- it('returns null if not found', () => {
28
- expect(findIndex([1, 2, 3], (v) => v === 99)).toBe(null);
29
- });
30
- it('finds key in object', () => {
31
- const result = findIndex({ a: 1, b: 2 }, (v) => v === 2);
32
- expect(result).toBe('b');
33
- });
34
- });
35
- describe('find()', () => {
36
- it('finds value in array', () => {
37
- expect(find([10, 20, 30], (v) => v === 20)).toBe(20);
38
- });
39
- it('returns null if not found', () => {
40
- expect(find([1, 2, 3], (v) => v === 99)).toBe(null);
41
- });
42
- });
43
- describe('findIndexValue()', () => {
44
- it('returns index and value', () => {
45
- const result = findIndexValue([10, 20, 30], (v) => v === 20);
46
- expect(result).toEqual({ index: 1, value: 20 });
47
- });
48
- it('returns null if not found', () => {
49
- expect(findIndexValue([1, 2, 3], (v) => v === 99)).toBe(null);
50
- });
51
- });
52
- //# sourceMappingURL=LeUtils.contains.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LeUtils.contains.test.js","sourceRoot":"","sources":["../../tests/LeUtils.contains.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=LeUtils.each.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"LeUtils.each.test.d.ts","sourceRoot":"","sources":["../../tests/LeUtils.each.test.ts"],"names":[],"mappings":""}
@@ -1,267 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { each, supportsEach, eachIterator } from '../src/index';
3
- /**
4
- * each() family - Baseline Tests from old each.test.js + comprehensive additions
5
- */
6
- describe('each() - Arrays', () => {
7
- it('iterates array in order', () => {
8
- const out = [];
9
- each([1, 2, 3], (v) => {
10
- out.push(v);
11
- });
12
- expect(out).toEqual([1, 2, 3]);
13
- });
14
- it('provides value and index', () => {
15
- const results = [];
16
- each([10, 20], (v, i) => {
17
- results.push([v, i]);
18
- });
19
- expect(results).toEqual([[10, 0], [20, 1]]);
20
- });
21
- it('breaks on return false', () => {
22
- const out = [];
23
- each([1, 2, 3], (v) => {
24
- out.push(v);
25
- if (v === 2) {
26
- return false;
27
- }
28
- });
29
- expect(out).toEqual([1, 2]);
30
- });
31
- it('returns elements unchanged', () => {
32
- const arr = [1, 2, 3];
33
- const result = each(arr, () => { });
34
- expect(result).toBe(arr);
35
- });
36
- });
37
- describe('each() - Objects', () => {
38
- it('iterates object properties', () => {
39
- const out = [];
40
- each({ a: 1, b: 2 }, (v, k) => {
41
- out.push([k, v]);
42
- });
43
- expect(out).toContainEqual(['a', 1]);
44
- expect(out).toContainEqual(['b', 2]);
45
- });
46
- it('skips prototype properties', () => {
47
- const proto = { z: 9 };
48
- const o = Object.create(proto);
49
- o.a = 1;
50
- o.b = 2;
51
- const seen = [];
52
- each(o, (v) => {
53
- seen.push(v);
54
- });
55
- expect(seen).toEqual([1, 2]); // z not included
56
- });
57
- });
58
- describe('each() - Maps', () => {
59
- it('iterates Map entries', () => {
60
- const m = new Map([['a', 1], ['b', 2]]);
61
- const seen = [];
62
- each(m, (v, k) => {
63
- seen.push([k, v]);
64
- });
65
- expect(seen).toEqual([['a', 1], ['b', 2]]);
66
- });
67
- it('handles empty Map', () => {
68
- let called = false;
69
- each(new Map(), () => {
70
- called = true;
71
- });
72
- expect(called).toBe(false);
73
- });
74
- });
75
- describe('each() - Sets', () => {
76
- it('iterates Set values', () => {
77
- const s = new Set([10, 20]);
78
- const seen = [];
79
- each(s, (v, k) => {
80
- seen.push([k, v]);
81
- });
82
- expect(seen).toEqual([[10, 10], [20, 20]]); // key === value for Sets
83
- });
84
- });
85
- describe('each() - TypedArrays', () => {
86
- it('iterates TypedArray', () => {
87
- const ta = new Uint16Array([9, 8]);
88
- const out = [];
89
- each(ta, (v, i) => {
90
- out.push([i, v]);
91
- });
92
- expect(out).toEqual([[0, 9], [1, 8]]);
93
- });
94
- });
95
- describe('each() - Custom Iterables', () => {
96
- it('iterates object with forEach method (plain object)', () => {
97
- const obj = {
98
- forEach: (cb) => {
99
- [1, 2].forEach(cb);
100
- },
101
- };
102
- const seen = [];
103
- each(obj, (_v, k) => {
104
- seen.push(k);
105
- });
106
- // Iterates object keys, not forEach result
107
- expect(seen).toEqual(['forEach']);
108
- });
109
- it('iterates custom class with forEach method', () => {
110
- class ForEachObject {
111
- forEach(cb) {
112
- [1, 2].forEach(cb);
113
- }
114
- }
115
- const obj = new ForEachObject();
116
- const seen = [];
117
- each(obj, (v) => {
118
- seen.push(v);
119
- });
120
- expect(seen).toEqual([1, 2]);
121
- });
122
- it('breaks in custom forEach', () => {
123
- class ForEachObject {
124
- forEach(cb) {
125
- [1, 2].forEach(cb);
126
- }
127
- }
128
- const obj = new ForEachObject();
129
- const seen = [];
130
- each(obj, (v) => {
131
- seen.push(v);
132
- if (v === 1) {
133
- return false;
134
- }
135
- });
136
- expect(seen).toEqual([1]);
137
- });
138
- });
139
- describe('each() - Null/Undefined', () => {
140
- it('handles null silently', () => {
141
- let called = false;
142
- each(null, () => {
143
- called = true;
144
- });
145
- expect(called).toBe(false);
146
- });
147
- it('handles undefined silently', () => {
148
- let called = false;
149
- each(undefined, () => {
150
- called = true;
151
- });
152
- expect(called).toBe(false);
153
- });
154
- });
155
- describe('each() - Callback Edge Cases', () => {
156
- it('logs expected error when callback throws', () => {
157
- const thrower = () => {
158
- throw new Error('callback error');
159
- };
160
- // ⏳ Expected: callback error
161
- expect(() => each([1, 2], thrower)).toThrow('callback error');
162
- });
163
- it('handles callback not returning false explicitly', () => {
164
- const out = [];
165
- each([1, 2, 3], (v) => {
166
- out.push(v);
167
- return undefined; // Doesn't break
168
- });
169
- expect(out).toEqual([1, 2, 3]);
170
- });
171
- });
172
- describe('supportsEach()', () => {
173
- it('returns true for arrays', () => {
174
- expect(supportsEach([1])).toBe(true);
175
- });
176
- it('returns true for Maps', () => {
177
- expect(supportsEach(new Map())).toBe(true);
178
- });
179
- it('returns true for Sets', () => {
180
- expect(supportsEach(new Set())).toBe(true);
181
- });
182
- it('returns true for objects', () => {
183
- expect(supportsEach({})).toBe(true);
184
- });
185
- it('returns false for null', () => {
186
- expect(supportsEach(null)).toBe(false);
187
- });
188
- it('returns false for undefined', () => {
189
- expect(supportsEach(undefined)).toBe(false);
190
- });
191
- it('returns false for strings', () => {
192
- expect(supportsEach('xyz')).toBe(false);
193
- });
194
- it('returns false for numbers', () => {
195
- expect(supportsEach(5)).toBe(false);
196
- expect(supportsEach(5.55)).toBe(false);
197
- });
198
- it('returns false for booleans', () => {
199
- expect(supportsEach(true)).toBe(false);
200
- });
201
- it('returns true for object with forEach', () => {
202
- const obj = {
203
- forEach: () => { },
204
- };
205
- expect(supportsEach(obj)).toBe(true);
206
- });
207
- it('returns true for functions', () => {
208
- const fn = () => { };
209
- expect(supportsEach(fn)).toBe(true);
210
- });
211
- it('returns true for TypedArrays', () => {
212
- expect(supportsEach(new Int8Array(2))).toBe(true);
213
- });
214
- });
215
- describe('eachIterator()', () => {
216
- it('yields [value, key] for Map in order', () => {
217
- const m = new Map([['a', 1], ['b', 2]]);
218
- const out = [...eachIterator(m)];
219
- expect(out).toEqual([[1, 'a'], [2, 'b']]);
220
- });
221
- it('yields [value, index] for arrays', () => {
222
- const out = [...eachIterator([10, 20])];
223
- expect(out).toEqual([[10, 0], [20, 1]]);
224
- });
225
- it('yields nothing for null', () => {
226
- const out = [...eachIterator(null)];
227
- expect(out).toEqual([]);
228
- });
229
- it('yields nothing for undefined', () => {
230
- const out = [...eachIterator(undefined)];
231
- expect(out).toEqual([]);
232
- });
233
- it('handles iterable with custom iterator', () => {
234
- const customIterable = {
235
- *[Symbol.iterator]() {
236
- yield 1;
237
- yield 2;
238
- },
239
- };
240
- const out = [...eachIterator(customIterable)];
241
- expect(out).toEqual([]);
242
- });
243
- it('handles object with forEach', () => {
244
- const objWithForEach = {
245
- forEach: (cb) => {
246
- cb('a', 'x');
247
- cb('b', 'y');
248
- },
249
- };
250
- const out = [...eachIterator(objWithForEach)];
251
- expect(out).toEqual([[objWithForEach.forEach, 'forEach']]);
252
- });
253
- });
254
- describe('each() - Validation', () => {
255
- it('does not crash if callback is not a function', () => {
256
- const arr = [1, 2];
257
- // @ts-ignore
258
- expect(() => each(arr, null)).toThrow(TypeError);
259
- // @ts-ignore
260
- expect(() => each(arr, undefined)).toThrow(TypeError);
261
- // @ts-ignore
262
- expect(() => each(arr, 'not a function')).toThrow(TypeError);
263
- // @ts-ignore
264
- expect(() => each(arr, 123)).toThrow(TypeError);
265
- });
266
- });
267
- //# sourceMappingURL=LeUtils.each.test.js.map