@pawells/typescript-common 1.1.0 → 1.1.3

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 (118) hide show
  1. package/README.md +1 -118
  2. package/build/array/array-chunk.d.ts +10 -4
  3. package/build/array/array-chunk.d.ts.map +1 -1
  4. package/build/array/array-chunk.js +10 -4
  5. package/build/array/array-chunk.js.map +1 -1
  6. package/build/array/array-contains.d.ts +11 -3
  7. package/build/array/array-contains.d.ts.map +1 -1
  8. package/build/array/array-contains.js +11 -3
  9. package/build/array/array-contains.js.map +1 -1
  10. package/build/array/array-group-by.d.ts +14 -5
  11. package/build/array/array-group-by.d.ts.map +1 -1
  12. package/build/array/array-group-by.js +14 -5
  13. package/build/array/array-group-by.js.map +1 -1
  14. package/build/array/array-shuffle.d.ts +12 -3
  15. package/build/array/array-shuffle.d.ts.map +1 -1
  16. package/build/array/array-shuffle.js +12 -3
  17. package/build/array/array-shuffle.js.map +1 -1
  18. package/build/array/unique.d.ts +13 -3
  19. package/build/array/unique.d.ts.map +1 -1
  20. package/build/array/unique.js +13 -3
  21. package/build/array/unique.js.map +1 -1
  22. package/build/asserts/errors.d.ts +91 -7
  23. package/build/asserts/errors.d.ts.map +1 -1
  24. package/build/asserts/errors.js +91 -7
  25. package/build/asserts/errors.js.map +1 -1
  26. package/build/asserts/generic.d.ts +8 -4
  27. package/build/asserts/generic.d.ts.map +1 -1
  28. package/build/asserts/generic.js +8 -4
  29. package/build/asserts/generic.js.map +1 -1
  30. package/build/enum/enum-entries.d.ts +8 -3
  31. package/build/enum/enum-entries.d.ts.map +1 -1
  32. package/build/enum/enum-entries.js +8 -3
  33. package/build/enum/enum-entries.js.map +1 -1
  34. package/build/enum/enum-key-by-value.d.ts +10 -5
  35. package/build/enum/enum-key-by-value.d.ts.map +1 -1
  36. package/build/enum/enum-key-by-value.js +10 -5
  37. package/build/enum/enum-key-by-value.js.map +1 -1
  38. package/build/enum/enum-keys.d.ts +12 -3
  39. package/build/enum/enum-keys.d.ts.map +1 -1
  40. package/build/enum/enum-keys.js +12 -3
  41. package/build/enum/enum-keys.js.map +1 -1
  42. package/build/enum/enum-safe-value.d.ts +11 -6
  43. package/build/enum/enum-safe-value.d.ts.map +1 -1
  44. package/build/enum/enum-safe-value.js +11 -6
  45. package/build/enum/enum-safe-value.js.map +1 -1
  46. package/build/enum/validate-enum-value.d.ts +10 -5
  47. package/build/enum/validate-enum-value.d.ts.map +1 -1
  48. package/build/enum/validate-enum-value.js +10 -5
  49. package/build/enum/validate-enum-value.js.map +1 -1
  50. package/build/index.d.ts +1 -0
  51. package/build/index.d.ts.map +1 -1
  52. package/build/number/assert.d.ts +14 -14
  53. package/build/number/assert.d.ts.map +1 -1
  54. package/build/object/clone.d.ts +17 -6
  55. package/build/object/clone.d.ts.map +1 -1
  56. package/build/object/clone.js +17 -6
  57. package/build/object/clone.js.map +1 -1
  58. package/build/object/filter-cached.d.ts +15 -3
  59. package/build/object/filter-cached.d.ts.map +1 -1
  60. package/build/object/filter-cached.js +15 -3
  61. package/build/object/filter-cached.js.map +1 -1
  62. package/build/object/has-circular-reference.d.ts +12 -3
  63. package/build/object/has-circular-reference.d.ts.map +1 -1
  64. package/build/object/has-circular-reference.js +12 -3
  65. package/build/object/has-circular-reference.js.map +1 -1
  66. package/build/object/key-value-pairs.d.ts +11 -3
  67. package/build/object/key-value-pairs.d.ts.map +1 -1
  68. package/build/object/key-value-pairs.js +11 -3
  69. package/build/object/key-value-pairs.js.map +1 -1
  70. package/build/object/map-cached.d.ts +14 -3
  71. package/build/object/map-cached.d.ts.map +1 -1
  72. package/build/object/map-cached.js +14 -3
  73. package/build/object/map-cached.js.map +1 -1
  74. package/build/object/merge.d.ts +18 -7
  75. package/build/object/merge.d.ts.map +1 -1
  76. package/build/object/merge.js +18 -7
  77. package/build/object/merge.js.map +1 -1
  78. package/build/object/omit.d.ts +13 -4
  79. package/build/object/omit.d.ts.map +1 -1
  80. package/build/object/omit.js +13 -4
  81. package/build/object/omit.js.map +1 -1
  82. package/build/string/formatting.d.ts +10 -3
  83. package/build/string/formatting.d.ts.map +1 -1
  84. package/build/string/formatting.js +10 -3
  85. package/build/string/formatting.js.map +1 -1
  86. package/package.json +9 -5
  87. package/build/array/array.test.d.ts +0 -2
  88. package/build/array/array.test.d.ts.map +0 -1
  89. package/build/array/array.test.js +0 -347
  90. package/build/array/array.test.js.map +0 -1
  91. package/build/asserts/object.d.ts +0 -138
  92. package/build/asserts/object.d.ts.map +0 -1
  93. package/build/asserts/object.js +0 -204
  94. package/build/asserts/object.js.map +0 -1
  95. package/build/asserts/string.d.ts +0 -100
  96. package/build/asserts/string.d.ts.map +0 -1
  97. package/build/asserts/string.js +0 -185
  98. package/build/asserts/string.js.map +0 -1
  99. package/build/enum/enum.test.d.ts +0 -2
  100. package/build/enum/enum.test.d.ts.map +0 -1
  101. package/build/enum/enum.test.js +0 -122
  102. package/build/enum/enum.test.js.map +0 -1
  103. package/build/function/function.test.d.ts +0 -2
  104. package/build/function/function.test.d.ts.map +0 -1
  105. package/build/function/function.test.js +0 -158
  106. package/build/function/function.test.js.map +0 -1
  107. package/build/object/object.test.d.ts +0 -2
  108. package/build/object/object.test.d.ts.map +0 -1
  109. package/build/object/object.test.js +0 -432
  110. package/build/object/object.test.js.map +0 -1
  111. package/build/string/string.test.d.ts +0 -2
  112. package/build/string/string.test.d.ts.map +0 -1
  113. package/build/string/string.test.js +0 -321
  114. package/build/string/string.test.js.map +0 -1
  115. package/build/time/time.test.d.ts +0 -2
  116. package/build/time/time.test.d.ts.map +0 -1
  117. package/build/time/time.test.js +0 -211
  118. package/build/time/time.test.js.map +0 -1
@@ -1,158 +0,0 @@
1
- import { describe, it, expect, vi } from 'vitest';
2
- import { Debounce } from './debounce.js';
3
- import { Throttle } from './throttle.js';
4
- import { Memoize } from './memoize.js';
5
- import { Once } from './once.js';
6
- import { Compose, Pipe } from './compose.js';
7
- import { Sleep } from './sleep.js';
8
- describe('Debounce', () => {
9
- it('delays invocation', async () => {
10
- const fn = vi.fn();
11
- const debounced = Debounce(fn, 50);
12
- debounced();
13
- debounced();
14
- debounced();
15
- expect(fn).not.toHaveBeenCalled();
16
- await Sleep(80);
17
- expect(fn).toHaveBeenCalledTimes(1);
18
- });
19
- it('calls with the latest arguments', async () => {
20
- const fn = vi.fn();
21
- const debounced = Debounce(fn, 50);
22
- debounced('a');
23
- debounced('b');
24
- debounced('c');
25
- await Sleep(80);
26
- expect(fn).toHaveBeenCalledWith('c');
27
- });
28
- it('cancel prevents the pending call', async () => {
29
- const fn = vi.fn();
30
- const debounced = Debounce(fn, 50);
31
- debounced();
32
- debounced.cancel();
33
- await Sleep(80);
34
- expect(fn).not.toHaveBeenCalled();
35
- });
36
- it('allows a fresh call after cancel', async () => {
37
- const fn = vi.fn();
38
- const debounced = Debounce(fn, 50);
39
- debounced();
40
- debounced.cancel();
41
- debounced();
42
- await Sleep(80);
43
- expect(fn).toHaveBeenCalledTimes(1);
44
- });
45
- });
46
- describe('Throttle', () => {
47
- it('calls the function immediately on first invocation', () => {
48
- const fn = vi.fn();
49
- const throttled = Throttle(fn, 100);
50
- throttled();
51
- expect(fn).toHaveBeenCalledTimes(1);
52
- });
53
- it('does not call again within the interval', () => {
54
- const fn = vi.fn();
55
- const throttled = Throttle(fn, 100);
56
- throttled();
57
- throttled();
58
- throttled();
59
- expect(fn).toHaveBeenCalledTimes(1);
60
- });
61
- it('calls again after the interval has elapsed', async () => {
62
- const fn = vi.fn();
63
- const throttled = Throttle(fn, 50);
64
- throttled();
65
- await Sleep(80);
66
- throttled();
67
- expect(fn).toHaveBeenCalledTimes(2);
68
- });
69
- });
70
- describe('Memoize', () => {
71
- it('returns cached result on repeated calls', () => {
72
- const fn = vi.fn((n) => n * n);
73
- const memo = Memoize(fn);
74
- expect(memo(4)).toBe(16);
75
- expect(memo(4)).toBe(16);
76
- expect(fn).toHaveBeenCalledTimes(1);
77
- });
78
- it('computes separately for different arguments', () => {
79
- const fn = vi.fn((n) => n * 2);
80
- const memo = Memoize(fn);
81
- expect(memo(3)).toBe(6);
82
- expect(memo(5)).toBe(10);
83
- expect(fn).toHaveBeenCalledTimes(2);
84
- });
85
- it('uses a custom key function', () => {
86
- const fn = vi.fn((obj) => obj.id * 10);
87
- const memo = Memoize(fn, (obj) => String(obj.id));
88
- expect(memo({ id: 1 })).toBe(10);
89
- expect(memo({ id: 1 })).toBe(10);
90
- expect(fn).toHaveBeenCalledTimes(1);
91
- });
92
- });
93
- describe('Once', () => {
94
- it('calls the function only once', () => {
95
- const fn = vi.fn(() => 42);
96
- const once = Once(fn);
97
- expect(once()).toBe(42);
98
- expect(once()).toBe(42);
99
- expect(fn).toHaveBeenCalledTimes(1);
100
- });
101
- it('always returns the result of the first call', () => {
102
- let counter = 0;
103
- const once = Once(() => ++counter);
104
- expect(once()).toBe(1);
105
- expect(once()).toBe(1);
106
- expect(once()).toBe(1);
107
- });
108
- });
109
- describe('Compose', () => {
110
- it('applies functions right-to-left', () => {
111
- const addOne = (n) => n + 1;
112
- const double = (n) => n * 2;
113
- const square = (n) => n * n;
114
- // square first, then double, then addOne
115
- const fn = Compose(addOne, double, square);
116
- expect(fn(3)).toBe(addOne(double(square(3)))); // (3²=9, *2=18, +1=19)
117
- expect(fn(3)).toBe(19);
118
- });
119
- it('handles a single function', () => {
120
- const fn = Compose((n) => n + 10);
121
- expect(fn(5)).toBe(15);
122
- });
123
- it('returns the value unchanged when no functions provided', () => {
124
- const fn = Compose();
125
- expect(fn(42)).toBe(42);
126
- });
127
- });
128
- describe('Pipe', () => {
129
- it('applies functions left-to-right', () => {
130
- const addOne = (n) => n + 1;
131
- const double = (n) => n * 2;
132
- const square = (n) => n * n;
133
- // addOne first, then double, then square
134
- const fn = Pipe(addOne, double, square);
135
- expect(fn(3)).toBe(square(double(addOne(3)))); // (3+1=4, *2=8, 8²=64)
136
- expect(fn(3)).toBe(64);
137
- });
138
- it('handles a single function', () => {
139
- const fn = Pipe((s) => s.toUpperCase());
140
- expect(fn('hello')).toBe('HELLO');
141
- });
142
- it('is the reverse of Compose', () => {
143
- const inc = (n) => n + 1;
144
- const dbl = (n) => n * 2;
145
- expect(Pipe(inc, dbl)(5)).toBe(Compose(dbl, inc)(5));
146
- });
147
- });
148
- describe('Sleep', () => {
149
- it('resolves after the specified delay', async () => {
150
- const start = Date.now();
151
- await Sleep(50);
152
- expect(Date.now() - start).toBeGreaterThanOrEqual(40);
153
- });
154
- it('returns a Promise', () => {
155
- expect(Sleep(0)).toBeInstanceOf(Promise);
156
- });
157
- });
158
- //# sourceMappingURL=function.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"function.test.js","sourceRoot":"","sources":["../../src/function/function.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=object.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"object.test.d.ts","sourceRoot":"","sources":["../../src/object/object.test.ts"],"names":[],"mappings":""}
@@ -1,432 +0,0 @@
1
- import { describe, it, expect, vi } from 'vitest';
2
- import { AssertObject } from './assert-object.js';
3
- import { ObjectClone } from './clone.js';
4
- import { ObjectEquals } from './equals.js';
5
- import { ObjectFilter } from './filter.js';
6
- import { ObjectFilterCached } from './filter-cached.js';
7
- import { ObjectHasCircularReference } from './has-circular-reference.js';
8
- import { ObjectHash } from './hash.js';
9
- import { ObjectFromKeyValuePairs, ObjectToKeyValuePairs } from './key-value-pairs.js';
10
- import { MapObject } from './map.js';
11
- import { MapObjectCached } from './map-cached.js';
12
- import { ObjectMerge } from './merge.js';
13
- import { ObjectOmit } from './omit.js';
14
- import { ObjectPick } from './pick.js';
15
- import { ObjectGetPropertyByPath } from './property-paths.js';
16
- import { ObjectSortKeys } from './sort-keys.js';
17
- import { ObjectInvert } from './object-invert.js';
18
- import { ObjectFlatten } from './object-flatten.js';
19
- import { ObjectDiff } from './object-diff.js';
20
- // ----- AssertObject -----
21
- describe('AssertObject', () => {
22
- it('returns true for a plain object', () => {
23
- expect(AssertObject({ a: 1 })).toBe(true);
24
- });
25
- it('returns false for null', () => {
26
- expect(AssertObject(null)).toBe(false);
27
- });
28
- it('returns false for arrays', () => {
29
- expect(AssertObject([1, 2, 3])).toBe(false);
30
- });
31
- it('returns false for primitives', () => {
32
- expect(AssertObject(42)).toBe(false);
33
- expect(AssertObject('string')).toBe(false);
34
- expect(AssertObject(true)).toBe(false);
35
- });
36
- it('returns true for empty object', () => {
37
- expect(AssertObject({})).toBe(true);
38
- });
39
- });
40
- // ----- ObjectClone -----
41
- describe('ObjectClone', () => {
42
- it('deeply clones a plain object', () => {
43
- const original = { a: 1, b: { c: 2 } };
44
- const clone = ObjectClone(original);
45
- expect(clone).toEqual(original);
46
- expect(clone).not.toBe(original);
47
- expect(clone.b).not.toBe(original.b);
48
- });
49
- it('clones arrays', () => {
50
- const original = [1, 2, [3, 4]];
51
- const clone = ObjectClone(original);
52
- expect(clone).toEqual(original);
53
- expect(clone).not.toBe(original);
54
- });
55
- it('clones Date objects', () => {
56
- const date = new Date('2024-01-01');
57
- const clone = ObjectClone(date);
58
- expect(clone).toEqual(date);
59
- expect(clone).not.toBe(date);
60
- });
61
- it('returns null/undefined as-is', () => {
62
- expect(ObjectClone(null)).toBeNull();
63
- expect(ObjectClone(undefined)).toBeUndefined();
64
- });
65
- it('throws on circular references', () => {
66
- const obj = { a: 1 };
67
- obj.self = obj;
68
- expect(() => ObjectClone(obj)).toThrow();
69
- });
70
- it('clones primitives unchanged', () => {
71
- expect(ObjectClone(42)).toBe(42);
72
- expect(ObjectClone('hello')).toBe('hello');
73
- expect(ObjectClone(true)).toBe(true);
74
- });
75
- });
76
- // ----- ObjectEquals -----
77
- describe('ObjectEquals', () => {
78
- it('returns true for identical primitives', () => {
79
- expect(ObjectEquals(42, 42)).toBe(true);
80
- expect(ObjectEquals('hello', 'hello')).toBe(true);
81
- });
82
- it('returns false for different primitives', () => {
83
- expect(ObjectEquals(1, 2)).toBe(false);
84
- });
85
- it('returns true for deeply equal objects', () => {
86
- expect(ObjectEquals({ a: 1, b: { c: 2 } }, { a: 1, b: { c: 2 } })).toBe(true);
87
- });
88
- it('returns false for objects with different values', () => {
89
- expect(ObjectEquals({ a: 1 }, { a: 2 })).toBe(false);
90
- });
91
- it('returns true for deeply equal arrays', () => {
92
- expect(ObjectEquals([1, 2, [3]], [1, 2, [3]])).toBe(true);
93
- });
94
- it('returns false for arrays with different values', () => {
95
- expect(ObjectEquals([1, 2], [1, 3])).toBe(false);
96
- });
97
- it('treats NaN as equal to NaN', () => {
98
- expect(ObjectEquals(NaN, NaN)).toBe(true);
99
- });
100
- it('returns false for null vs undefined', () => {
101
- expect(ObjectEquals(null, undefined)).toBe(false);
102
- });
103
- it('handles Date comparisons', () => {
104
- expect(ObjectEquals(new Date('2024-01-01'), new Date('2024-01-01'))).toBe(true);
105
- expect(ObjectEquals(new Date('2024-01-01'), new Date('2024-01-02'))).toBe(false);
106
- });
107
- it('returns true for same reference', () => {
108
- const obj = { a: 1 };
109
- expect(ObjectEquals(obj, obj)).toBe(true);
110
- });
111
- });
112
- // ----- ObjectFilter -----
113
- describe('ObjectFilter', () => {
114
- it('returns true when object matches simple filter', () => {
115
- expect(ObjectFilter({ name: 'Alice', age: 25 }, { name: 'Alice' })).toBe(true);
116
- });
117
- it('returns false when object does not match', () => {
118
- expect(ObjectFilter({ name: 'Alice', age: 25 }, { name: 'Bob' })).toBe(false);
119
- });
120
- it('supports nested path filtering', () => {
121
- const obj = { user: { name: 'Alice', active: true } };
122
- expect(ObjectFilter(obj, { 'user.name': 'Alice' })).toBe(true);
123
- expect(ObjectFilter(obj, { 'user.name': 'Bob' })).toBe(false);
124
- });
125
- it('returns true for empty filter', () => {
126
- expect(ObjectFilter({ a: 1 }, {})).toBe(true);
127
- });
128
- it('supports case-insensitive string matching', () => {
129
- expect(ObjectFilter({ name: 'Alice' }, { name: 'alice' }, { caseInsensitiveStrings: true })).toBe(true);
130
- });
131
- });
132
- // ----- ObjectFilterCached -----
133
- describe('ObjectFilterCached', () => {
134
- it('returns correct result on first call', async () => {
135
- const filter = ObjectFilterCached();
136
- const result = await filter({ name: 'Alice', age: 25 }, { name: 'Alice' });
137
- expect(result).toBe(true);
138
- });
139
- it('returns cached result on second call', async () => {
140
- const filter = ObjectFilterCached();
141
- const obj = { name: 'Alice', age: 25 };
142
- const first = await filter(obj, { name: 'Alice' });
143
- const second = await filter(obj, { name: 'Alice' });
144
- expect(first).toBe(true);
145
- expect(second).toBe(true);
146
- });
147
- });
148
- // ----- ObjectHasCircularReference -----
149
- describe('ObjectHasCircularReference', () => {
150
- it('returns false for a plain object', () => {
151
- expect(ObjectHasCircularReference({ a: 1 })).toBe(false);
152
- });
153
- it('returns true for a circular reference', () => {
154
- const obj = { a: 1 };
155
- obj.self = obj;
156
- expect(ObjectHasCircularReference(obj)).toBe(true);
157
- });
158
- it('returns false for null and primitives', () => {
159
- expect(ObjectHasCircularReference(null)).toBe(false);
160
- expect(ObjectHasCircularReference(42)).toBe(false);
161
- });
162
- it('returns false for nested non-circular objects', () => {
163
- expect(ObjectHasCircularReference({ a: { b: { c: 1 } } })).toBe(false);
164
- });
165
- it('detects circular reference in arrays', () => {
166
- const arr = [1, 2];
167
- arr.push(arr);
168
- expect(ObjectHasCircularReference(arr)).toBe(true);
169
- });
170
- });
171
- // ----- ObjectHash -----
172
- describe('ObjectHash', () => {
173
- it('returns a non-empty string', () => {
174
- const hash = ObjectHash({ a: 1 });
175
- expect(typeof hash).toBe('string');
176
- expect(hash.length).toBeGreaterThan(0);
177
- });
178
- it('returns the same hash for identical objects', () => {
179
- expect(ObjectHash({ a: 1, b: 2 })).toBe(ObjectHash({ a: 1, b: 2 }));
180
- });
181
- it('returns different hashes for different objects', () => {
182
- expect(ObjectHash({ a: 1 })).not.toBe(ObjectHash({ a: 2 }));
183
- });
184
- it('throws for objects with circular references', () => {
185
- const obj = { a: 1 };
186
- obj.self = obj;
187
- expect(() => ObjectHash(obj)).toThrow();
188
- });
189
- it('uses a custom hash function when provided', () => {
190
- const mockHashFn = vi.fn(() => 'custom-hash');
191
- expect(ObjectHash({ a: 1 }, mockHashFn)).toBe('custom-hash');
192
- expect(mockHashFn).toHaveBeenCalledOnce();
193
- });
194
- });
195
- // ----- ObjectFromKeyValuePairs -----
196
- describe('ObjectFromKeyValuePairs', () => {
197
- it('builds an object from key-value pairs', () => {
198
- expect(ObjectFromKeyValuePairs([['a', 1], ['b', 2]])).toEqual({ a: 1, b: 2 });
199
- });
200
- it('returns empty object for empty array', () => {
201
- expect(ObjectFromKeyValuePairs([])).toEqual({});
202
- });
203
- it('handles string values', () => {
204
- expect(ObjectFromKeyValuePairs([['greeting', 'hello']])).toEqual({ greeting: 'hello' });
205
- });
206
- });
207
- // ----- MapObject -----
208
- describe('MapObject', () => {
209
- it('maps all property values', () => {
210
- const result = MapObject({ a: 1, b: 2, c: 3 }, (_, v) => v * 2);
211
- expect(result).toEqual({ a: 2, b: 4, c: 6 });
212
- });
213
- it('provides the key to the mapper', () => {
214
- const keys = [];
215
- MapObject({ x: 1, y: 2 }, (k) => {
216
- keys.push(k);
217
- return 0;
218
- });
219
- expect(keys.sort()).toEqual(['x', 'y']);
220
- });
221
- it('returns empty object for null/invalid input', () => {
222
- expect(MapObject(null, (_, v) => v)).toEqual({});
223
- });
224
- });
225
- // ----- MapObjectCached -----
226
- describe('MapObjectCached', () => {
227
- it('maps an object correctly on first call', async () => {
228
- const mapFn = MapObjectCached();
229
- const result = await mapFn({ a: 1, b: 2 }, (_, v) => v * 2);
230
- expect(result).toEqual({ a: 2, b: 4 });
231
- });
232
- it('returns cached result on repeated calls', async () => {
233
- const mapper = vi.fn((_, v) => v * 2);
234
- const mapFn = MapObjectCached();
235
- const obj = { a: 5 };
236
- const first = await mapFn(obj, mapper, 'doubler');
237
- const second = await mapFn(obj, mapper, 'doubler');
238
- // Second call should return the cached result without invoking the mapper again
239
- expect(first).toEqual({ a: 10 });
240
- expect(second).toEqual({ a: 10 });
241
- // Mapper is called once per key on first call, zero times on subsequent cached calls
242
- expect(mapper).toHaveBeenCalledTimes(1);
243
- });
244
- });
245
- // ----- ObjectMerge -----
246
- describe('ObjectMerge', () => {
247
- it('merges top-level properties', () => {
248
- expect(ObjectMerge({ a: 1 }, { b: 2 })).toEqual({ a: 1, b: 2 });
249
- });
250
- it('overwrites existing properties', () => {
251
- expect(ObjectMerge({ a: 1, b: 2 }, { b: 3 })).toEqual({ a: 1, b: 3 });
252
- });
253
- it('deep merges nested objects', () => {
254
- const target = { user: { name: 'Alice', age: 30 } };
255
- const source = { user: { age: 31 } };
256
- const result = ObjectMerge(target, source);
257
- expect(result.user.name).toBe('Alice');
258
- expect(result.user.age).toBe(31);
259
- });
260
- it('concatenates arrays', () => {
261
- const result = ObjectMerge({ tags: ['a', 'b'] }, { tags: ['c'] });
262
- expect(result.tags).toEqual(['a', 'b', 'c']);
263
- });
264
- it('returns target unchanged when source is invalid', () => {
265
- const target = { a: 1 };
266
- expect(ObjectMerge(target, null)).toEqual({ a: 1 });
267
- expect(ObjectMerge(target, undefined)).toEqual({ a: 1 });
268
- });
269
- it('blocks prototype pollution attempts', () => {
270
- const malicious = JSON.parse('{"__proto__":{"polluted":true}}');
271
- ObjectMerge({}, malicious);
272
- expect(({}).polluted).toBeUndefined();
273
- });
274
- });
275
- // ----- ObjectOmit -----
276
- describe('ObjectOmit', () => {
277
- it('omits the specified keys', () => {
278
- const result = ObjectOmit({ a: 1, b: 2, c: 3 }, ['b']);
279
- expect(result).toEqual({ a: 1, c: 3 });
280
- });
281
- it('omits multiple keys', () => {
282
- const result = ObjectOmit({ a: 1, b: 2, c: 3 }, ['a', 'c']);
283
- expect(result).toEqual({ b: 2 });
284
- });
285
- it('returns full object when keys array is empty', () => {
286
- expect(ObjectOmit({ a: 1, b: 2 }, [])).toEqual({ a: 1, b: 2 });
287
- });
288
- it('returns empty object for null input', () => {
289
- expect(ObjectOmit(null, ['a'])).toEqual({});
290
- });
291
- });
292
- // ----- ObjectPick -----
293
- describe('ObjectPick', () => {
294
- it('picks the specified keys', () => {
295
- const result = ObjectPick({ a: 1, b: 2, c: 3 }, ['a', 'c']);
296
- expect(result).toEqual({ a: 1, c: 3 });
297
- });
298
- it('ignores keys not present in the object', () => {
299
- const result = ObjectPick({ a: 1 }, ['a', 'nonExistent']);
300
- expect(result).toEqual({ a: 1 });
301
- });
302
- it('returns empty object for empty keys', () => {
303
- expect(ObjectPick({ a: 1 }, [])).toEqual({});
304
- });
305
- it('returns empty object for null input', () => {
306
- expect(ObjectPick(null, ['a'])).toEqual({});
307
- });
308
- });
309
- // ----- ObjectGetPropertyByPath -----
310
- describe('ObjectGetPropertyByPath', () => {
311
- const user = {
312
- name: 'Alice',
313
- profile: {
314
- address: {
315
- city: 'NYC',
316
- },
317
- active: true,
318
- },
319
- };
320
- it('gets a top-level property', () => {
321
- expect(ObjectGetPropertyByPath(user, 'name')).toBe('Alice');
322
- });
323
- it('gets a nested property', () => {
324
- expect(ObjectGetPropertyByPath(user, 'profile.address.city')).toBe('NYC');
325
- });
326
- it('returns default value for missing path', () => {
327
- expect(ObjectGetPropertyByPath(user, 'profile.missing', 'default')).toBe('default');
328
- });
329
- it('returns undefined for missing path without default', () => {
330
- expect(ObjectGetPropertyByPath(user, 'profile.nonexistent')).toBeUndefined();
331
- });
332
- it('returns default for null object', () => {
333
- expect(ObjectGetPropertyByPath(null, 'a.b', 'fallback')).toBe('fallback');
334
- });
335
- it('returns default for empty path', () => {
336
- expect(ObjectGetPropertyByPath(user, '', 'fallback')).toBe('fallback');
337
- });
338
- it('blocks dangerous property access', () => {
339
- expect(ObjectGetPropertyByPath({}, '__proto__.polluted', 'safe')).toBe('safe');
340
- });
341
- });
342
- // ----- ObjectSortKeys -----
343
- describe('ObjectSortKeys', () => {
344
- it('sorts object keys alphabetically', () => {
345
- const result = ObjectSortKeys({ z: 1, a: 3, m: 2 });
346
- expect(Object.keys(result)).toEqual(['a', 'm', 'z']);
347
- });
348
- it('preserves all values', () => {
349
- const result = ObjectSortKeys({ z: 1, a: 3 });
350
- expect(result.z).toBe(1);
351
- expect(result.a).toBe(3);
352
- });
353
- it('returns the input unchanged for null/array/non-object', () => {
354
- expect(ObjectSortKeys(null)).toBeNull();
355
- expect(ObjectSortKeys([])).toEqual([]);
356
- });
357
- it('handles already-sorted keys', () => {
358
- const result = ObjectSortKeys({ a: 1, b: 2, c: 3 });
359
- expect(Object.keys(result)).toEqual(['a', 'b', 'c']);
360
- });
361
- });
362
- describe('ObjectToKeyValuePairs', () => {
363
- it('converts an object to key-value pairs', () => {
364
- expect(ObjectToKeyValuePairs({ a: 1, b: 2 })).toEqual([['a', 1], ['b', 2]]);
365
- });
366
- it('returns empty array for empty object', () => {
367
- expect(ObjectToKeyValuePairs({})).toEqual([]);
368
- });
369
- it('round-trips with ObjectFromKeyValuePairs', () => {
370
- const obj = { x: 'foo', y: 'bar' };
371
- expect(ObjectFromKeyValuePairs(ObjectToKeyValuePairs(obj))).toEqual(obj);
372
- });
373
- });
374
- describe('ObjectInvert', () => {
375
- it('swaps keys and values', () => {
376
- expect(ObjectInvert({ a: 'x', b: 'y', c: 'z' })).toEqual({ x: 'a', y: 'b', z: 'c' });
377
- });
378
- it('works with numeric values', () => {
379
- const result = ObjectInvert({ read: 1, write: 2 });
380
- expect(result[1]).toBe('read');
381
- expect(result[2]).toBe('write');
382
- });
383
- it('last write wins for duplicate values', () => {
384
- const result = ObjectInvert({ a: 'x', b: 'x' });
385
- expect(result['x']).toBe('b');
386
- });
387
- });
388
- describe('ObjectFlatten', () => {
389
- it('flattens a nested object with default separator', () => {
390
- expect(ObjectFlatten({ a: { b: { c: 1 }, d: 2 } })).toEqual({ 'a.b.c': 1, 'a.d': 2 });
391
- });
392
- it('uses a custom separator', () => {
393
- expect(ObjectFlatten({ a: { b: 1 } }, '/')).toEqual({ 'a/b': 1 });
394
- });
395
- it('treats arrays as leaf values', () => {
396
- expect(ObjectFlatten({ a: [1, 2, 3] })).toEqual({ a: [1, 2, 3] });
397
- });
398
- it('treats Date instances as leaf values', () => {
399
- const d = new Date();
400
- expect(ObjectFlatten({ a: { b: d } })).toEqual({ 'a.b': d });
401
- });
402
- it('handles flat objects unchanged', () => {
403
- expect(ObjectFlatten({ a: 1, b: 2 })).toEqual({ a: 1, b: 2 });
404
- });
405
- });
406
- describe('ObjectDiff', () => {
407
- it('detects added keys', () => {
408
- const result = ObjectDiff({ a: 1 }, { a: 1, b: 2 });
409
- expect(result.added).toEqual({ b: 2 });
410
- expect(result.removed).toEqual({});
411
- expect(result.changed).toEqual({});
412
- });
413
- it('detects removed keys', () => {
414
- const result = ObjectDiff({ a: 1, b: 2 }, { a: 1 });
415
- expect(result.removed).toEqual({ b: 2 });
416
- });
417
- it('detects changed keys', () => {
418
- const result = ObjectDiff({ a: 1, b: 2 }, { a: 1, b: 99 });
419
- expect(result.changed).toEqual({ b: { from: 2, to: 99 } });
420
- });
421
- it('returns all empty groups for identical objects', () => {
422
- const result = ObjectDiff({ a: 1 }, { a: 1 });
423
- expect(result).toEqual({ added: {}, removed: {}, changed: {} });
424
- });
425
- it('handles mixed changes', () => {
426
- const result = ObjectDiff({ a: 1, b: 2, c: 3 }, { b: 99, c: 3, d: 4 });
427
- expect(result.added).toEqual({ d: 4 });
428
- expect(result.removed).toEqual({ a: 1 });
429
- expect(result.changed).toEqual({ b: { from: 2, to: 99 } });
430
- });
431
- });
432
- //# sourceMappingURL=object.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"object.test.js","sourceRoot":"","sources":["../../src/object/object.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=string.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"string.test.d.ts","sourceRoot":"","sources":["../../src/string/string.test.ts"],"names":[],"mappings":""}