@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
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@pawells/typescript-common",
3
3
  "displayName": "TypeScript Common Utilities",
4
- "version": "1.1.0",
4
+ "version": "1.1.3",
5
5
  "description": "Shared TypeScript utility library — array, object, string, time, and enum helpers. ESM-only, no runtime dependencies.",
6
6
  "type": "module",
7
7
  "main": "./build/index.js",
8
8
  "scripts": {
9
- "build": "tsc",
9
+ "build": "tsc --project tsconfig.build.json",
10
10
  "start": "node build/index.js",
11
11
  "dev": "tsc && node build/index.js",
12
12
  "watch": "tsc --watch",
@@ -19,7 +19,6 @@
19
19
  "prepublishOnly": "npm run build",
20
20
  "prepare": "husky"
21
21
  },
22
- "dependencies": {},
23
22
  "devDependencies": {
24
23
  "@eslint/js": "^10.0.1",
25
24
  "@stylistic/eslint-plugin": "^5.9.0",
@@ -63,8 +62,13 @@
63
62
  "engines": {
64
63
  "node": ">=24.0.0"
65
64
  },
65
+ "packageManager": "yarn@4.12.0",
66
66
  "files": [
67
- "build/",
67
+ "build/**/*.js",
68
+ "build/**/*.d.ts",
69
+ "build/**/*.js.map",
70
+ "build/**/*.d.ts.map",
71
+ "!build/**/*.test.*",
68
72
  "README.md",
69
73
  "LICENSE",
70
74
  ".env.example"
@@ -72,4 +76,4 @@
72
76
  "publishConfig": {
73
77
  "access": "public"
74
78
  }
75
- }
79
+ }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=array.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"array.test.d.ts","sourceRoot":"","sources":["../../src/array/array.test.ts"],"names":[],"mappings":""}
@@ -1,347 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { ArrayChunk } from './array-chunk.js';
3
- import { ArrayContains } from './array-contains.js';
4
- import { ArrayFilter } from './array-filter.js';
5
- import { ArrayGroupBy } from './array-group-by.js';
6
- import { ArrayIntersection } from './array-intersection.js';
7
- import { ArrayShuffle } from './array-shuffle.js';
8
- import { Unique } from './unique.js';
9
- import { ArrayDifference } from './array-difference.js';
10
- import { ArrayFlatten } from './array-flatten.js';
11
- import { ArrayCompact } from './array-compact.js';
12
- import { ArrayPartition } from './array-partition.js';
13
- import { ArrayZip } from './array-zip.js';
14
- import { ArrayRange } from './array-range.js';
15
- import { ArraySortBy } from './array-sort-by.js';
16
- import { ArrayCountBy } from './array-count-by.js';
17
- import { ArraySample } from './array-sample.js';
18
- describe('ArrayChunk', () => {
19
- it('splits an array into equal-size chunks', () => {
20
- expect(ArrayChunk([1, 2, 3, 4], 2)).toEqual([[1, 2], [3, 4]]);
21
- });
22
- it('handles a remainder chunk', () => {
23
- expect(ArrayChunk([1, 2, 3, 4, 5], 2)).toEqual([[1, 2], [3, 4], [5]]);
24
- });
25
- it('returns the whole array in one chunk when size >= length', () => {
26
- expect(ArrayChunk([1, 2, 3], 10)).toEqual([[1, 2, 3]]);
27
- });
28
- it('returns empty array for empty input', () => {
29
- expect(ArrayChunk([], 2)).toEqual([]);
30
- });
31
- it('returns empty array for size <= 0', () => {
32
- expect(ArrayChunk([1, 2, 3], 0)).toEqual([]);
33
- expect(ArrayChunk([1, 2, 3], -1)).toEqual([]);
34
- });
35
- it('returns empty array for null/undefined input', () => {
36
- expect(ArrayChunk(null, 2)).toEqual([]);
37
- });
38
- it('handles chunk size of 1', () => {
39
- expect(ArrayChunk([1, 2, 3], 1)).toEqual([[1], [2], [3]]);
40
- });
41
- });
42
- describe('ArrayContains', () => {
43
- it('returns true when an element passes the predicate', () => {
44
- expect(ArrayContains([1, 2, 3], (x) => x > 2)).toBe(true);
45
- });
46
- it('returns false when no element passes the predicate', () => {
47
- expect(ArrayContains([1, 2, 3], (x) => x > 10)).toBe(false);
48
- });
49
- it('returns false for an empty array', () => {
50
- expect(ArrayContains([], () => true)).toBe(false);
51
- });
52
- it('returns false for null/undefined input', () => {
53
- expect(ArrayContains(null, () => true)).toBe(false);
54
- });
55
- it('works with object arrays', () => {
56
- const users = [{ name: 'Alice' }, { name: 'Bob' }];
57
- expect(ArrayContains(users, (u) => u.name === 'Bob')).toBe(true);
58
- expect(ArrayContains(users, (u) => u.name === 'Charlie')).toBe(false);
59
- });
60
- });
61
- describe('ArrayFilter', () => {
62
- it('filters using a predicate function', () => {
63
- expect(ArrayFilter([1, 2, 3, 4], (n) => n > 2)).toEqual([3, 4]);
64
- });
65
- it('filters using object criteria', () => {
66
- const users = [
67
- { name: 'Alice', age: 25 },
68
- { name: 'Bob', age: 30 },
69
- ];
70
- expect(ArrayFilter(users, { age: 30 })).toEqual([{ name: 'Bob', age: 30 }]);
71
- });
72
- it('filters using nested property criteria', () => {
73
- const data = [
74
- { user: { name: 'Alice', active: true } },
75
- { user: { name: 'Bob', active: false } },
76
- ];
77
- expect(ArrayFilter(data, { 'user.name': 'Alice' })).toEqual([data[0]]);
78
- });
79
- it('filters using array property criteria', () => {
80
- const posts = [
81
- { tags: ['js', 'web'] },
82
- { tags: ['ts', 'node'] },
83
- ];
84
- expect(ArrayFilter(posts, { tags: 'js' })).toEqual([posts[0]]);
85
- });
86
- it('returns empty array when nothing matches', () => {
87
- expect(ArrayFilter([1, 2, 3], (n) => n > 100)).toEqual([]);
88
- });
89
- it('returns all elements when everything matches', () => {
90
- expect(ArrayFilter([1, 2, 3], (n) => n > 0)).toEqual([1, 2, 3]);
91
- });
92
- it('handles multiple criteria keys', () => {
93
- const users = [
94
- { name: 'Alice', role: 'admin' },
95
- { name: 'Bob', role: 'user' },
96
- { name: 'Alice', role: 'user' },
97
- ];
98
- expect(ArrayFilter(users, { name: 'Alice', role: 'admin' })).toEqual([users[0]]);
99
- });
100
- });
101
- describe('ArrayGroupBy', () => {
102
- it('groups by a string key', () => {
103
- const items = [
104
- { category: 'fruit', name: 'apple' },
105
- { category: 'veggie', name: 'carrot' },
106
- { category: 'fruit', name: 'banana' },
107
- ];
108
- const grouped = ArrayGroupBy(items, (item) => item.category);
109
- expect(grouped['fruit']).toHaveLength(2);
110
- expect(grouped['veggie']).toHaveLength(1);
111
- });
112
- it('returns an empty object for an empty array', () => {
113
- expect(ArrayGroupBy([], (x) => x)).toEqual({});
114
- });
115
- it('returns empty object for null input', () => {
116
- expect(ArrayGroupBy(null, (x) => x)).toEqual({});
117
- });
118
- it('groups numbers', () => {
119
- const result = ArrayGroupBy([1, 2, 3, 4, 5, 6], (n) => (n % 2 === 0 ? 'even' : 'odd'));
120
- expect(result['even']).toEqual([2, 4, 6]);
121
- expect(result['odd']).toEqual([1, 3, 5]);
122
- });
123
- });
124
- describe('ArrayIntersection', () => {
125
- it('returns elements in both arrays', () => {
126
- expect(ArrayIntersection([1, 2, 3], [2, 3, 4])).toEqual([2, 3]);
127
- });
128
- it('returns empty when there is no overlap', () => {
129
- expect(ArrayIntersection([1, 2], [3, 4])).toEqual([]);
130
- });
131
- it('handles empty arrays', () => {
132
- expect(ArrayIntersection([], [1, 2])).toEqual([]);
133
- expect(ArrayIntersection([1, 2], [])).toEqual([]);
134
- });
135
- it('handles null inputs', () => {
136
- expect(ArrayIntersection(null, [1, 2])).toEqual([]);
137
- expect(ArrayIntersection([1, 2], null)).toEqual([]);
138
- });
139
- it('uses a custom comparator', () => {
140
- const a = [{ id: 1 }, { id: 2 }];
141
- const b = [{ id: 2 }, { id: 3 }];
142
- const result = ArrayIntersection(a, b, (x, y) => x.id === y.id);
143
- expect(result).toEqual([{ id: 2 }]);
144
- });
145
- it('handles duplicates using set deduplication', () => {
146
- expect(ArrayIntersection([1, 1, 2], [1, 2, 2])).toEqual([1, 1, 2]);
147
- });
148
- });
149
- describe('ArrayShuffle', () => {
150
- it('returns a new array with the same elements', () => {
151
- const original = [1, 2, 3, 4, 5];
152
- const shuffled = ArrayShuffle(original);
153
- expect(shuffled).toHaveLength(original.length);
154
- expect(shuffled.sort()).toEqual([...original].sort());
155
- });
156
- it('does not mutate the original array', () => {
157
- const original = [1, 2, 3];
158
- const copy = [...original];
159
- ArrayShuffle(original);
160
- expect(original).toEqual(copy);
161
- });
162
- it('returns empty array for null input', () => {
163
- expect(ArrayShuffle(null)).toEqual([]);
164
- });
165
- it('handles single-element arrays', () => {
166
- expect(ArrayShuffle([42])).toEqual([42]);
167
- });
168
- it('handles empty arrays', () => {
169
- expect(ArrayShuffle([])).toEqual([]);
170
- });
171
- });
172
- describe('Unique', () => {
173
- it('removes duplicate primitives', () => {
174
- expect(Unique([1, 2, 2, 3, 3, 3])).toEqual([1, 2, 3]);
175
- });
176
- it('removes duplicate strings', () => {
177
- expect(Unique(['a', 'b', 'a', 'c'])).toEqual(['a', 'b', 'c']);
178
- });
179
- it('returns the same array when no duplicates', () => {
180
- expect(Unique([1, 2, 3])).toEqual([1, 2, 3]);
181
- });
182
- it('returns empty array for empty input', () => {
183
- expect(Unique([])).toEqual([]);
184
- });
185
- it('returns empty array for null input', () => {
186
- expect(Unique(null)).toEqual([]);
187
- });
188
- it('uses reference equality for objects', () => {
189
- const obj = { a: 1 };
190
- expect(Unique([obj, obj])).toEqual([obj]);
191
- expect(Unique([{ a: 1 }, { a: 1 }])).toHaveLength(2);
192
- });
193
- });
194
- describe('ArrayDifference', () => {
195
- it('returns elements in first array not in second', () => {
196
- expect(ArrayDifference([1, 2, 3, 4], [2, 4])).toEqual([1, 3]);
197
- });
198
- it('returns a copy of array1 when array2 is empty', () => {
199
- expect(ArrayDifference([1, 2, 3], [])).toEqual([1, 2, 3]);
200
- });
201
- it('returns empty when all elements are excluded', () => {
202
- expect(ArrayDifference([1, 2], [1, 2, 3])).toEqual([]);
203
- });
204
- it('uses a custom comparator', () => {
205
- const a = [{ id: 1 }, { id: 2 }];
206
- const b = [{ id: 2 }];
207
- expect(ArrayDifference(a, b, (x, y) => x.id === y.id)).toEqual([{ id: 1 }]);
208
- });
209
- it('returns empty for null input', () => {
210
- expect(ArrayDifference(null, [1])).toEqual([]);
211
- });
212
- });
213
- describe('ArrayFlatten', () => {
214
- it('flattens one level by default', () => {
215
- expect(ArrayFlatten([1, [2, [3]]])).toEqual([1, 2, 3]);
216
- });
217
- it('flattens to a specified depth', () => {
218
- expect(ArrayFlatten([1, [2, [3, [4]]]], 1)).toEqual([1, 2, [3, [4]]]);
219
- });
220
- it('handles already-flat arrays', () => {
221
- expect(ArrayFlatten([1, 2, 3])).toEqual([1, 2, 3]);
222
- });
223
- it('returns empty for null input', () => {
224
- expect(ArrayFlatten(null)).toEqual([]);
225
- });
226
- });
227
- describe('ArrayCompact', () => {
228
- it('removes null and undefined', () => {
229
- expect(ArrayCompact([1, null, 2, undefined, 3])).toEqual([1, 2, 3]);
230
- });
231
- it('keeps falsy-but-defined values like 0 and empty string', () => {
232
- expect(ArrayCompact([0, '', false, null, undefined])).toEqual([0, '', false]);
233
- });
234
- it('returns empty for null input', () => {
235
- expect(ArrayCompact(null)).toEqual([]);
236
- });
237
- });
238
- describe('ArrayPartition', () => {
239
- it('splits into matches and non-matches', () => {
240
- const [evens, odds] = ArrayPartition([1, 2, 3, 4, 5], (n) => n % 2 === 0);
241
- expect(evens).toEqual([2, 4]);
242
- expect(odds).toEqual([1, 3, 5]);
243
- });
244
- it('handles all matching', () => {
245
- const [t, f] = ArrayPartition([2, 4], (n) => n % 2 === 0);
246
- expect(t).toEqual([2, 4]);
247
- expect(f).toEqual([]);
248
- });
249
- it('handles no matches', () => {
250
- const [t, f] = ArrayPartition([1, 3], (n) => n % 2 === 0);
251
- expect(t).toEqual([]);
252
- expect(f).toEqual([1, 3]);
253
- });
254
- it('returns [[], []] for null input', () => {
255
- expect(ArrayPartition(null, () => true)).toEqual([[], []]);
256
- });
257
- });
258
- describe('ArrayZip', () => {
259
- it('zips two arrays', () => {
260
- expect(ArrayZip([1, 2, 3], ['a', 'b', 'c'])).toEqual([[1, 'a'], [2, 'b'], [3, 'c']]);
261
- });
262
- it('stops at the shortest array', () => {
263
- expect(ArrayZip([1, 2, 3], ['a', 'b'])).toEqual([[1, 'a'], [2, 'b']]);
264
- });
265
- it('zips three arrays', () => {
266
- expect(ArrayZip([1, 2], ['a', 'b'], [true, false])).toEqual([[1, 'a', true], [2, 'b', false]]);
267
- });
268
- it('returns empty for no arguments', () => {
269
- expect(ArrayZip()).toEqual([]);
270
- });
271
- });
272
- describe('ArrayRange', () => {
273
- it('generates ascending range', () => {
274
- expect(ArrayRange(0, 5)).toEqual([0, 1, 2, 3, 4]);
275
- });
276
- it('generates range with step', () => {
277
- expect(ArrayRange(0, 10, 2)).toEqual([0, 2, 4, 6, 8]);
278
- });
279
- it('generates descending range', () => {
280
- expect(ArrayRange(5, 0, -1)).toEqual([5, 4, 3, 2, 1]);
281
- });
282
- it('returns empty for step of 0', () => {
283
- expect(ArrayRange(0, 5, 0)).toEqual([]);
284
- });
285
- it('returns empty when start >= end for positive step', () => {
286
- expect(ArrayRange(5, 5)).toEqual([]);
287
- expect(ArrayRange(6, 5)).toEqual([]);
288
- });
289
- });
290
- describe('ArraySortBy', () => {
291
- it('sorts objects by a string key ascending', () => {
292
- const result = ArraySortBy([{ name: 'Charlie' }, { name: 'Alice' }, { name: 'Bob' }], (u) => u.name);
293
- expect(result.map((u) => u.name)).toEqual(['Alice', 'Bob', 'Charlie']);
294
- });
295
- it('sorts numbers descending', () => {
296
- expect(ArraySortBy([3, 1, 4, 1, 5], (n) => n, 'desc')).toEqual([5, 4, 3, 1, 1]);
297
- });
298
- it('does not mutate the original', () => {
299
- const original = [3, 1, 2];
300
- const sorted = ArraySortBy(original, (n) => n);
301
- expect(original).toEqual([3, 1, 2]);
302
- expect(sorted).toEqual([1, 2, 3]);
303
- });
304
- it('returns empty for null input', () => {
305
- expect(ArraySortBy(null, (_n) => 0)).toEqual([]);
306
- });
307
- });
308
- describe('ArrayCountBy', () => {
309
- it('counts by string key', () => {
310
- const result = ArrayCountBy(['a', 'b', 'a', 'c', 'b', 'b'], (s) => s);
311
- expect(result).toEqual({ a: 2, b: 3, c: 1 });
312
- });
313
- it('counts by computed key', () => {
314
- const result = ArrayCountBy([1, 2, 3, 4, 5, 6], (n) => (n % 2 === 0 ? 'even' : 'odd'));
315
- expect(result).toEqual({ even: 3, odd: 3 });
316
- });
317
- it('returns empty object for null input', () => {
318
- expect(ArrayCountBy(null, (_n) => '')).toEqual({});
319
- });
320
- });
321
- describe('ArraySample', () => {
322
- it('returns a single element within the array', () => {
323
- const arr = [1, 2, 3, 4, 5];
324
- const result = ArraySample(arr);
325
- expect(arr).toContain(result);
326
- });
327
- it('returns undefined for empty array', () => {
328
- expect(ArraySample([])).toBeUndefined();
329
- });
330
- it('returns n elements', () => {
331
- const arr = [1, 2, 3, 4, 5];
332
- const result = ArraySample(arr, 3);
333
- expect(result).toHaveLength(3);
334
- result.forEach((v) => expect(arr).toContain(v));
335
- });
336
- it('returns no more than array length', () => {
337
- expect(ArraySample([1, 2], 10)).toHaveLength(2);
338
- });
339
- it('returns no duplicates when sampling n', () => {
340
- const result = ArraySample([1, 2, 3, 4, 5], 5);
341
- expect(new Set(result).size).toBe(5);
342
- });
343
- it('returns empty array when n=0', () => {
344
- expect(ArraySample([1, 2, 3], 0)).toEqual([]);
345
- });
346
- });
347
- //# sourceMappingURL=array.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"array.test.js","sourceRoot":"","sources":["../../src/array/array.test.ts"],"names":[],"mappings":"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"}
@@ -1,138 +0,0 @@
1
- import { IAssertException } from './types.js';
2
- /**
3
- * Error thrown when a value is not a valid object or fails an object assertion.
4
- *
5
- * @example
6
- * throw new ObjectError('Value is not a valid object');
7
- */
8
- export declare class ObjectError extends Error {
9
- constructor(message?: string);
10
- }
11
- /**
12
- * Error thrown when an object is missing a required property or a property fails an assertion.
13
- *
14
- * @example
15
- * throw new PropertyError('Object is missing required property');
16
- */
17
- export declare class ObjectPropertyError extends Error {
18
- constructor(message?: string);
19
- }
20
- /**
21
- * Asserts that a value is a plain object (not null, not an array, not a function).
22
- *
23
- * This method validates that the provided value is an object type, excluding null,
24
- * arrays, and functions which are technically objects in JavaScript but not plain
25
- * objects. After this assertion, the value is typed as Record<string, unknown>
26
- * for safe property access.
27
- *
28
- * @template TError - Custom error type to throw on failure
29
- * @param value - The value to validate as an object
30
- * @param exception - Optional exception configuration for custom error handling
31
- * @throws {ObjectError} When value is not a plain object
32
- *
33
- * @example
34
- * ```typescript
35
- * AssertObject({ name: "John" }); // ✓ Valid (plain object)
36
- * AssertObject({}); // ✓ Valid (empty object)
37
- * AssertObject(new Date()); // ✓ Valid (object instance)
38
- * AssertObject([1, 2, 3]); // ✗ Throws ObjectError (array)
39
- * AssertObject(null); // ✗ Throws ObjectError (null)
40
- * AssertObject("string"); // ✗ Throws ObjectError (primitive)
41
- * AssertObject(() => {}); // ✗ Throws ObjectError (function)
42
- * ```
43
- */
44
- export declare function AssertObject(value: unknown, exception?: IAssertException): asserts value is Record<string, unknown>;
45
- /**
46
- * Asserts that an object has a specific property (inherited or own).
47
- *
48
- * This method validates that the specified property exists in the object,
49
- * including properties from the prototype chain. Uses the 'in' operator
50
- * for property detection. This is useful for checking if an object conforms
51
- * to an expected interface or has required properties.
52
- *
53
- * @template T - The object type
54
- * @template K - The property key type
55
- * @template TError - Custom error type to throw on failure
56
- * @param value - The object to check for the property
57
- * @param property - The property key to check for
58
- * @param exception - Optional exception configuration for custom error handling
59
- * @throws {PropertyError} When object does not have the specified property
60
- *
61
- * @example
62
- * ```typescript
63
- * const obj = { name: "John", age: 30 };
64
- * AssertHasProperty(obj, "name"); // ✓ Valid (own property)
65
- * AssertHasProperty(obj, "toString"); // ✓ Valid (inherited property)
66
- * AssertHasProperty(obj, "invalid"); // ✗ Throws PropertyError
67
- *
68
- * // Type narrowing with property presence
69
- * function processUser(obj: unknown) {
70
- * AssertObject(obj);
71
- * AssertHasProperty(obj, "name");
72
- * // obj["name"] is now accessible safely
73
- * }
74
- * ```
75
- */
76
- export declare function AssertObjectHasProperty<T extends object, K extends PropertyKey>(value: T, property: K, exception?: IAssertException): void;
77
- /**
78
- * Asserts that an object has a specific own property (not inherited).
79
- *
80
- * This method validates that the specified property exists as an own property
81
- * of the object, excluding properties from the prototype chain. Uses
82
- * Object.prototype.hasOwnProperty.call() for reliable detection. This is useful
83
- * when you need to ensure a property is directly defined on the object.
84
- *
85
- * @template T - The object type
86
- * @template K - The property key type
87
- * @template TError - Custom error type to throw on failure
88
- * @param value - The object to check for the own property
89
- * @param property - The property key to check for
90
- * @param exception - Optional exception configuration for custom error handling
91
- * @throws {PropertyError} When object does not have the specified own property
92
- *
93
- * @example
94
- * ```typescript
95
- * const obj = { name: "John" };
96
- * AssertHasOwnProperty(obj, "name"); // ✓ Valid (own property)
97
- * AssertHasOwnProperty(obj, "toString"); // ✗ Throws (inherited property)
98
- * AssertHasOwnProperty(obj, "invalid"); // ✗ Throws (doesn't exist)
99
- *
100
- * // Checking for data vs inherited methods
101
- * function validateUserData(obj: object) {
102
- * AssertHasOwnProperty(obj, "id"); // Must be own property
103
- * AssertHasOwnProperty(obj, "name"); // Must be own property
104
- * }
105
- * ```
106
- */
107
- export declare function AssertObjectHasOwnProperty<T extends object, K extends PropertyKey>(value: T, property: K, exception?: IAssertException): void;
108
- /**
109
- * Asserts that a specific property of an object is not null or undefined.
110
- *
111
- * This method validates that the specified property exists and has a non-nullish value.
112
- * It combines property existence checking with null/undefined validation. Useful for
113
- * validating that required object properties have been properly initialized.
114
- *
115
- * @template T - The object type
116
- * @template K - The property key type (must be a key of T)
117
- * @template TError - Custom error type to throw on failure
118
- * @param value - The object to check
119
- * @param property - The property key to validate for non-null value
120
- * @param exception - Optional exception configuration for custom error handling
121
- * @throws {PropertyError} When property is null, undefined, or doesn't exist
122
- *
123
- * @example
124
- * ```typescript
125
- * const user = { id: 123, name: "John", email: null };
126
- * AssertPropertyNotNull(user, "id"); // ✓ Valid (123 is not null/undefined)
127
- * AssertPropertyNotNull(user, "name"); // ✓ Valid ("John" is not null/undefined)
128
- * AssertPropertyNotNull(user, "email"); // ✗ Throws PropertyError (null)
129
- *
130
- * // Type narrowing for property values
131
- * function processUser(user: { name?: string | null }) {
132
- * AssertPropertyNotNull(user, "name");
133
- * // user.name is now typed as string (null/undefined excluded)
134
- * }
135
- * ```
136
- */
137
- export declare function AssertObjectPropertyNotNull<T extends object, K extends keyof T>(value: T, property: K, exception?: IAssertException): void;
138
- //# sourceMappingURL=object.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/asserts/object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAM9C;;;;;GAKG;AACH,qBAAa,WAAY,SAAQ,KAAK;gBACzB,OAAO,CAAC,EAAE,MAAM;CAK5B;AAED;;;;;GAKG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;gBACjC,OAAO,CAAC,EAAE,MAAM;CAK5B;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,GAAE,gBAAqB,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAyBvH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,GAAE,gBAAqB,GAAG,IAAI,CAU9I;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,0BAA0B,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,GAAE,gBAAqB,GAAG,IAAI,CAUjJ;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,2BAA2B,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,SAAS,GAAE,gBAAqB,GAAG,IAAI,CAW9I"}