ts-data-forge 6.0.0 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/dist/array/impl/array-utils-reducing-value.d.mts +28 -0
  2. package/dist/array/impl/array-utils-reducing-value.d.mts.map +1 -1
  3. package/dist/array/impl/array-utils-reducing-value.mjs +4 -1
  4. package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -1
  5. package/dist/array/impl/index.mjs +1 -1
  6. package/dist/collections/imap.d.mts +1 -1
  7. package/dist/collections/iset-mapped.d.mts +1 -1
  8. package/dist/collections/iset.d.mts +1 -1
  9. package/package.json +52 -48
  10. package/src/array/impl/array-utils-overload-type-error.test.mts +4 -2
  11. package/src/array/impl/array-utils-reducing-value.mts +48 -0
  12. package/src/collections/imap.mts +1 -1
  13. package/src/collections/iset-mapped.mts +1 -1
  14. package/src/collections/iset.mts +1 -1
  15. package/src/functional/optional.test.mts +7 -5
  16. package/src/functional/result.test.mts +10 -8
  17. package/src/functional/ternary-result.test.mts +4 -4
  18. package/src/guard/has-key.test.mts +89 -186
  19. package/src/json/json.test.mts +5 -5
  20. package/src/number/branded-types/finite-number.test.mts +15 -11
  21. package/src/number/branded-types/int.test.mts +13 -13
  22. package/src/number/branded-types/int16.test.mts +15 -15
  23. package/src/number/branded-types/int32.test.mts +15 -15
  24. package/src/number/branded-types/non-negative-finite-number.test.mts +19 -15
  25. package/src/number/branded-types/non-negative-int16.test.mts +15 -15
  26. package/src/number/branded-types/non-negative-int32.test.mts +15 -15
  27. package/src/number/branded-types/non-zero-finite-number.test.mts +18 -18
  28. package/src/number/branded-types/non-zero-int.test.mts +18 -14
  29. package/src/number/branded-types/non-zero-int16.test.mts +19 -15
  30. package/src/number/branded-types/non-zero-int32.test.mts +19 -15
  31. package/src/number/branded-types/non-zero-safe-int.test.mts +22 -18
  32. package/src/number/branded-types/non-zero-uint16.test.mts +15 -15
  33. package/src/number/branded-types/non-zero-uint32.test.mts +15 -15
  34. package/src/number/branded-types/positive-finite-number.test.mts +18 -18
  35. package/src/number/branded-types/positive-int.test.mts +22 -16
  36. package/src/number/branded-types/positive-int16.test.mts +14 -14
  37. package/src/number/branded-types/positive-int32.test.mts +14 -14
  38. package/src/number/branded-types/positive-safe-int.test.mts +20 -18
  39. package/src/number/branded-types/positive-uint16.test.mts +15 -15
  40. package/src/number/branded-types/positive-uint32.test.mts +15 -15
  41. package/src/number/branded-types/safe-int.test.mts +21 -17
  42. package/src/number/branded-types/safe-uint.test.mts +22 -16
  43. package/src/number/branded-types/uint.test.mts +14 -14
  44. package/src/number/branded-types/uint16.test.mts +14 -14
  45. package/src/number/branded-types/uint32.test.mts +14 -14
  46. package/src/number/enum/int8.test.mts +1 -1
  47. package/src/number/enum/uint8.test.mts +1 -1
  48. package/src/others/memoize-function.test.mts +1 -0
@@ -203,6 +203,34 @@ export declare function sum<N extends number>(array: readonly [N]): N;
203
203
  export declare function sum(array: readonly Uint[]): Uint;
204
204
  export declare function sum(array: readonly Int[]): Int;
205
205
  export declare function sum(array: readonly number[]): number;
206
+ /**
207
+ * Calculates the sum of numbers in an array.
208
+ *
209
+ * @example
210
+ *
211
+ * ```ts
212
+ * const numbers = [
213
+ * { value: 1 },
214
+ * { value: 2 },
215
+ * { value: 3 },
216
+ * { value: 4 },
217
+ * ] as const;
218
+ *
219
+ * const negatives = [{ value: 3 }, { value: -2 }, { value: 5 }] as const;
220
+ *
221
+ * const total = Arr.sumBy(numbers, (item) => item.value);
222
+ *
223
+ * const totalNegatives = Arr.sumBy(negatives, (item) => item.value);
224
+ *
225
+ * assert.isTrue(total === 10);
226
+ *
227
+ * assert.isTrue(totalNegatives === 6);
228
+ * ```
229
+ */
230
+ export declare function sumBy(array: readonly [], mapFn: (item: unknown) => number): 0;
231
+ export declare function sumBy<N extends Uint, E>(array: readonly E[], mapFn: (item: E) => N): Uint;
232
+ export declare function sumBy<N extends Int, E>(array: readonly E[], mapFn: (item: E) => N): Int;
233
+ export declare function sumBy<N extends number, E>(array: readonly E[], mapFn: (item: E) => N): number;
206
234
  /**
207
235
  * Joins array elements into a string.
208
236
  *
@@ -1 +1 @@
1
- {"version":3,"file":"array-utils-reducing-value.d.mts","sourceRoot":"","sources":["../../../src/array/impl/array-utils-reducing-value.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"array-utils-reducing-value.d.mts","sourceRoot":"","sources":["../../../src/array/impl/array-utils-reducing-value.mts"],"names":[],"mappings":"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"}
@@ -120,6 +120,9 @@ function foldr(...args) {
120
120
  function sum(array) {
121
121
  return array.reduce((prev, curr) => prev + curr, 0);
122
122
  }
123
+ function sumBy(array, mapFn) {
124
+ return array.reduce((prev, curr) => prev + mapFn(curr), 0);
125
+ }
123
126
  function join(...args) {
124
127
  switch (args.length) {
125
128
  case 0:
@@ -159,5 +162,5 @@ const reduce = foldl;
159
162
  */
160
163
  const reduceRight = foldr;
161
164
 
162
- export { count, countBy, foldl, foldr, join, max, maxBy, min, minBy, reduce, reduceRight, sum };
165
+ export { count, countBy, foldl, foldr, join, max, maxBy, min, minBy, reduce, reduceRight, sum, sumBy };
163
166
  //# sourceMappingURL=array-utils-reducing-value.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"array-utils-reducing-value.mjs","sources":["../../../src/array/impl/array-utils-reducing-value.mts"],"sourcesContent":[null],"names":["Optional.none","Optional.some","Result.ok","Result.err"],"mappings":"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"}
1
+ {"version":3,"file":"array-utils-reducing-value.mjs","sources":["../../../src/array/impl/array-utils-reducing-value.mts"],"sourcesContent":[null],"names":["Optional.none","Optional.some","Result.ok","Result.err"],"mappings":"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"}
@@ -2,7 +2,7 @@ export { copy, create, generate, generateAsync, newArray, range, seq, zeros } fr
2
2
  export { at, first, head, last } from './array-utils-element-access.mjs';
3
3
  export { entries, indices, keys, values } from './array-utils-iterators.mjs';
4
4
  export { set, toFilled, toInserted, toPushed, toRangeFilled, toRemoved, toUnshifted, toUpdated } from './array-utils-modification.mjs';
5
- export { count, countBy, foldl, foldr, join, max, maxBy, min, minBy, reduce, reduceRight, sum } from './array-utils-reducing-value.mjs';
5
+ export { count, countBy, foldl, foldr, join, max, maxBy, min, minBy, reduce, reduceRight, sum, sumBy } from './array-utils-reducing-value.mjs';
6
6
  export { find, findIndex, findLast, findLastIndex, indexOf, indexOfFrom, lastIndexOf, lastIndexOfFrom } from './array-utils-search.mjs';
7
7
  export { eq, equal, isSubset, isSuperset, setDifference, setIntersection, sortedNumSetDifference } from './array-utils-set-op.mjs';
8
8
  export { length, size } from './array-utils-size.mjs';
@@ -538,7 +538,7 @@ type IMapInterface<K extends MapSetKeyType, V> = Readonly<{
538
538
  *
539
539
  * const raw = map.toRawMap();
540
540
  *
541
- * assert.isTrue(is.map(raw));
541
+ * assert.isTrue(isMap(raw));
542
542
  *
543
543
  * assert.isTrue(raw.get('key') === 1);
544
544
  * ```
@@ -806,7 +806,7 @@ type ISetMappedInterface<K, KM extends MapSetKeyType> = Readonly<{
806
806
  *
807
807
  * const raw = set.toRawSet();
808
808
  *
809
- * assert.isTrue(is.set(raw));
809
+ * assert.isTrue(isSet(raw));
810
810
  *
811
811
  * assert.isTrue(raw.has(toKey({ x: 1, tag: 'a' })));
812
812
  * ```
@@ -458,7 +458,7 @@ type ISetInterface<K extends MapSetKeyType> = Readonly<{
458
458
  *
459
459
  * const raw = set.toRawSet();
460
460
  *
461
- * assert.isTrue(is.set(raw));
461
+ * assert.isTrue(isSet(raw));
462
462
  *
463
463
  * assert.isTrue(raw.has('alpha'));
464
464
  * ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ts-data-forge",
3
- "version": "6.0.0",
3
+ "version": "6.1.0",
4
4
  "private": false,
5
5
  "keywords": [
6
6
  "typescript",
@@ -45,7 +45,7 @@
45
45
  "doc": "tsx ./scripts/cmd/gen-docs.mts",
46
46
  "doc:embed-doc": "tsx ./scripts/cmd/embed-samples.mts",
47
47
  "doc:embed-jsdoc": "tsx ./scripts/cmd/embed-jsdoc-examples.mts",
48
- "doc:preview": "vite preview --config ./configs/vite.doc.config.ts",
48
+ "doc:preview": "vite preview --config ./configs/vite.doc.config.mts",
49
49
  "doc:watch": "typedoc --options ./configs/typedoc.config.mjs --watch",
50
50
  "fmt": "format-uncommitted",
51
51
  "fmt:diff": "format-diff-from origin/main",
@@ -62,68 +62,72 @@
62
62
  "lint": "eslint .",
63
63
  "lint:fix": "eslint . --fix",
64
64
  "md": "markdownlint-cli2",
65
- "test": "pnpm run z:vitest run",
66
- "test:cov": "pnpm run z:vitest run --coverage",
65
+ "test": "pnpm run z:vitest:node run",
66
+ "test:browser": "pnpm run z:vitest --project='Browser' run",
67
+ "test:cov": "pnpm run z:vitest:node run --coverage",
67
68
  "test:cov:ui": "vite preview --outDir ./coverage",
68
- "test:ui": "pnpm run z:vitest --ui",
69
- "testw": "pnpm run z:vitest watch",
69
+ "test:ui": "pnpm run z:vitest:node --ui",
70
+ "testw": "pnpm run z:vitest:node watch",
70
71
  "tsc": "tsc --noEmit",
71
72
  "tscw": "tsc --noEmit --watch -p ./tsconfig.json",
72
73
  "type-check": "tsc --noEmit",
73
74
  "update-packages": "pnpm update --latest",
74
- "z:vitest": "vitest --config ./configs/vitest.config.ts"
75
+ "z:vitest": "vitest --config ./configs/vitest.config.mts",
76
+ "z:vitest:node": "vitest --config ./configs/vitest.config.mts --project='Node.js'"
75
77
  },
76
78
  "dependencies": {
77
79
  "@sindresorhus/is": "^7.1.1",
78
80
  "ts-type-forge": "^2.3.0"
79
81
  },
80
82
  "devDependencies": {
81
- "@emotion/react": "^11.14.0",
82
- "@emotion/styled": "^11.14.1",
83
- "@mui/material": "^7.3.5",
84
- "@rollup/plugin-replace": "^6.0.3",
85
- "@rollup/plugin-strip": "^3.0.4",
86
- "@rollup/plugin-typescript": "^12.3.0",
87
- "@semantic-release/changelog": "^6.0.3",
88
- "@semantic-release/commit-analyzer": "^13.0.1",
89
- "@semantic-release/exec": "^7.1.0",
90
- "@semantic-release/git": "^10.0.1",
91
- "@semantic-release/github": "^12.0.2",
92
- "@semantic-release/npm": "^13.1.2",
93
- "@semantic-release/release-notes-generator": "^14.1.0",
94
- "@types/node": "^24.10.1",
95
- "@types/react": "^19.2.7",
96
- "@vitest/coverage-v8": "^4.0.14",
97
- "@vitest/ui": "^4.0.14",
98
- "conventional-changelog-conventionalcommits": "^9.1.0",
99
- "cspell": "^9.3.2",
83
+ "@emotion/react": "11.14.0",
84
+ "@emotion/styled": "11.14.1",
85
+ "@mui/material": "7.3.6",
86
+ "@rollup/plugin-replace": "6.0.3",
87
+ "@rollup/plugin-strip": "3.0.4",
88
+ "@rollup/plugin-typescript": "12.3.0",
89
+ "@semantic-release/changelog": "6.0.3",
90
+ "@semantic-release/commit-analyzer": "13.0.1",
91
+ "@semantic-release/exec": "7.1.0",
92
+ "@semantic-release/git": "10.0.1",
93
+ "@semantic-release/github": "12.0.2",
94
+ "@semantic-release/npm": "13.1.2",
95
+ "@semantic-release/release-notes-generator": "14.1.0",
96
+ "@types/node": "24.10.2",
97
+ "@types/react": "19.2.7",
98
+ "@vitest/browser-playwright": "4.0.15",
99
+ "@vitest/coverage-v8": "4.0.15",
100
+ "@vitest/ui": "4.0.15",
101
+ "conventional-changelog-conventionalcommits": "9.1.0",
102
+ "cspell": "9.4.0",
100
103
  "eslint": "9.39.1",
101
- "eslint-config-typed": "^4.0.1",
102
- "github-settings-as-code": "^1.0.6",
103
- "immer": "^11.0.0",
104
- "jiti": "^2.6.1",
105
- "markdownlint": "^0.39.0",
106
- "markdownlint-cli2": "^0.19.1",
107
- "npm-run-all2": "^8.0.4",
108
- "prettier": "^3.7.1",
109
- "prettier-plugin-organize-imports": "^4.3.0",
110
- "prettier-plugin-packagejson": "^2.5.19",
111
- "rollup": "^4.53.3",
112
- "semantic-release": "^25.0.2",
113
- "ts-repo-utils": "^7.9.3",
114
- "tslib": "^2.8.1",
115
- "tsx": "^4.20.6",
116
- "typedoc": "^0.28.14",
117
- "typedoc-github-theme": "^0.3.1",
118
- "typescript": "^5.9.3",
119
- "vite": "^7.2.4",
120
- "vitest": "^4.0.14"
104
+ "eslint-config-typed": "4.0.5",
105
+ "github-settings-as-code": "1.0.6",
106
+ "immer": "11.0.1",
107
+ "jiti": "2.6.1",
108
+ "markdownlint": "0.39.0",
109
+ "markdownlint-cli2": "0.19.1",
110
+ "npm-run-all2": "8.0.4",
111
+ "playwright": "1.57.0",
112
+ "prettier": "3.7.4",
113
+ "prettier-plugin-organize-imports": "4.3.0",
114
+ "prettier-plugin-packagejson": "2.5.20",
115
+ "rollup": "4.53.3",
116
+ "semantic-release": "25.0.2",
117
+ "ts-repo-utils": "7.9.5",
118
+ "tslib": "2.8.1",
119
+ "tsx": "4.21.0",
120
+ "typedoc": "0.28.15",
121
+ "typedoc-github-theme": "0.3.1",
122
+ "typescript": "5.9.3",
123
+ "vite": "7.2.6",
124
+ "vitest": "4.0.15"
121
125
  },
122
126
  "peerDependencies": {
123
127
  "typescript": ">=4.8"
124
128
  },
129
+ "packageManager": "pnpm@10.24.0",
125
130
  "volta": {
126
- "node": "25.0.0",
127
- "npm": "11.6.2"
131
+ "node": "25.2.1"
128
132
  }
129
133
  }
@@ -93,7 +93,7 @@ describe('Array overloaded functions - type error validation', () => {
93
93
 
94
94
  test('partition type constraints work correctly', () => {
95
95
  // @ts-expect-error - Partition size should be number, not string
96
- expect(() => partition(testArray, 'invalid')).toThrow(
96
+ expect(() => partition(testArray, 'invalid')).toThrowError(
97
97
  'Expected a non-negative integer less than 2^32, got: NaN',
98
98
  );
99
99
 
@@ -116,7 +116,9 @@ describe('Array overloaded functions - type error validation', () => {
116
116
 
117
117
  test('range type constraints work correctly', () => {
118
118
  // @ts-expect-error - Range bounds should be numbers, not strings
119
- expect(() => range('1', '5')).toThrow('Expected a safe integer, got: 1');
119
+ expect(() => range('1', '5')).toThrowError(
120
+ 'Expected a safe integer, got: 1',
121
+ );
120
122
 
121
123
  // @ts-expect-error - Step should be number, not string
122
124
  range(1, 5, 'invalid');
@@ -496,6 +496,54 @@ export function sum(array: readonly number[]): number {
496
496
  return array.reduce((prev, curr) => prev + curr, 0);
497
497
  }
498
498
 
499
+ /**
500
+ * Calculates the sum of numbers in an array.
501
+ *
502
+ * @example
503
+ *
504
+ * ```ts
505
+ * const numbers = [
506
+ * { value: 1 },
507
+ * { value: 2 },
508
+ * { value: 3 },
509
+ * { value: 4 },
510
+ * ] as const;
511
+ *
512
+ * const negatives = [{ value: 3 }, { value: -2 }, { value: 5 }] as const;
513
+ *
514
+ * const total = Arr.sumBy(numbers, (item) => item.value);
515
+ *
516
+ * const totalNegatives = Arr.sumBy(negatives, (item) => item.value);
517
+ *
518
+ * assert.isTrue(total === 10);
519
+ *
520
+ * assert.isTrue(totalNegatives === 6);
521
+ * ```
522
+ */
523
+ export function sumBy(array: readonly [], mapFn: (item: unknown) => number): 0;
524
+
525
+ export function sumBy<N extends Uint, E>(
526
+ array: readonly E[],
527
+ mapFn: (item: E) => N,
528
+ ): Uint;
529
+
530
+ export function sumBy<N extends Int, E>(
531
+ array: readonly E[],
532
+ mapFn: (item: E) => N,
533
+ ): Int;
534
+
535
+ export function sumBy<N extends number, E>(
536
+ array: readonly E[],
537
+ mapFn: (item: E) => N,
538
+ ): number;
539
+
540
+ export function sumBy<N extends number, E>(
541
+ array: readonly E[],
542
+ mapFn: (item: E) => N,
543
+ ): number {
544
+ return array.reduce((prev, curr) => prev + mapFn(curr), 0);
545
+ }
546
+
499
547
  /**
500
548
  * Joins array elements into a string.
501
549
  *
@@ -575,7 +575,7 @@ type IMapInterface<K extends MapSetKeyType, V> = Readonly<{
575
575
  *
576
576
  * const raw = map.toRawMap();
577
577
  *
578
- * assert.isTrue(is.map(raw));
578
+ * assert.isTrue(isMap(raw));
579
579
  *
580
580
  * assert.isTrue(raw.get('key') === 1);
581
581
  * ```
@@ -846,7 +846,7 @@ type ISetMappedInterface<K, KM extends MapSetKeyType> = Readonly<{
846
846
  *
847
847
  * const raw = set.toRawSet();
848
848
  *
849
- * assert.isTrue(is.set(raw));
849
+ * assert.isTrue(isSet(raw));
850
850
  *
851
851
  * assert.isTrue(raw.has(toKey({ x: 1, tag: 'a' })));
852
852
  * ```
@@ -497,7 +497,7 @@ type ISetInterface<K extends MapSetKeyType> = Readonly<{
497
497
  *
498
498
  * const raw = set.toRawSet();
499
499
  *
500
- * assert.isTrue(is.set(raw));
500
+ * assert.isTrue(isSet(raw));
501
501
  *
502
502
  * assert.isTrue(raw.has('alpha'));
503
503
  * ```
@@ -218,7 +218,7 @@ describe('Optional test', () => {
218
218
  });
219
219
 
220
220
  test('should throw for None', () => {
221
- expect(() => Optional.unwrapThrow(Optional.none)).toThrow(
221
+ expect(() => Optional.unwrapThrow(Optional.none)).toThrowError(
222
222
  '`unwrapThrow()` has failed because it is `None`',
223
223
  );
224
224
  });
@@ -300,7 +300,9 @@ describe('Optional test', () => {
300
300
  test('should throw with custom message for None', () => {
301
301
  const expectNumber = Optional.expectToBe<number>('Expected a number');
302
302
 
303
- expect(() => expectNumber(Optional.none)).toThrow('Expected a number');
303
+ expect(() => expectNumber(Optional.none)).toThrowError(
304
+ 'Expected a number',
305
+ );
304
306
  });
305
307
 
306
308
  test('should be curried', () => {
@@ -312,7 +314,7 @@ describe('Optional test', () => {
312
314
 
313
315
  expect(expectValidId(id1)).toBe('user-123');
314
316
 
315
- expect(() => expectValidId(id2)).toThrow('ID is required');
317
+ expect(() => expectValidId(id2)).toThrowError('ID is required');
316
318
  });
317
319
 
318
320
  test('should support curried form', () => {
@@ -326,7 +328,7 @@ describe('Optional test', () => {
326
328
 
327
329
  const noneValue = Optional.none;
328
330
 
329
- expect(() => getValue(noneValue)).toThrow('Value must exist');
331
+ expect(() => getValue(noneValue)).toThrowError('Value must exist');
330
332
  });
331
333
 
332
334
  test('should work with pipe when curried', () => {
@@ -338,7 +340,7 @@ describe('Optional test', () => {
338
340
 
339
341
  assert.deepStrictEqual(someResult, { name: 'Alice', age: 30 });
340
342
 
341
- expect(() => pipe(Optional.none).map(expectUser).value).toThrow(
343
+ expect(() => pipe(Optional.none).map(expectUser).value).toThrowError(
342
344
  'User not found',
343
345
  );
344
346
  });
@@ -248,7 +248,7 @@ describe('Result test', () => {
248
248
  test('throws on Err result', () => {
249
249
  const result = Result.err('error message');
250
250
 
251
- expect(() => Result.unwrapThrow(result)).toThrow('error message');
251
+ expect(() => Result.unwrapThrow(result)).toThrowError('error message');
252
252
  });
253
253
  });
254
254
 
@@ -589,7 +589,7 @@ describe('Result test', () => {
589
589
  test('should throw for Ok', () => {
590
590
  const result = Result.ok(42);
591
591
 
592
- expect(() => Result.unwrapErrThrow(result)).toThrow(
592
+ expect(() => Result.unwrapErrThrow(result)).toThrowError(
593
593
  'Expected Err but got Ok: 42',
594
594
  );
595
595
  });
@@ -599,7 +599,7 @@ describe('Result test', () => {
599
599
 
600
600
  expect(() =>
601
601
  Result.unwrapErrThrow(result, (obj) => `Object(id=${obj.id})`),
602
- ).toThrow('Expected Err but got Ok: Object(id=1)');
602
+ ).toThrowError('Expected Err but got Ok: Object(id=1)');
603
603
  });
604
604
  });
605
605
 
@@ -665,9 +665,9 @@ describe('Result test', () => {
665
665
  test('should throw custom error for Err result', () => {
666
666
  const result = Result.err('failed');
667
667
 
668
- expect(() => Result.expectToBe(result, 'Operation must succeed')).toThrow(
669
- 'Operation must succeed',
670
- );
668
+ expect(() =>
669
+ Result.expectToBe(result, 'Operation must succeed'),
670
+ ).toThrowError('Operation must succeed');
671
671
  });
672
672
 
673
673
  test('should support curried form', () => {
@@ -681,7 +681,9 @@ describe('Result test', () => {
681
681
 
682
682
  const errResult: Result<string, string> = Result.err('failed');
683
683
 
684
- expect(() => mustBeOk(errResult)).toThrow('Expected successful result');
684
+ expect(() => mustBeOk(errResult)).toThrowError(
685
+ 'Expected successful result',
686
+ );
685
687
  });
686
688
 
687
689
  test('should work with pipe when curried', () => {
@@ -693,7 +695,7 @@ describe('Result test', () => {
693
695
 
694
696
  expect(
695
697
  () => pipe(Result.err('validation error')).map(mustBeOk).value,
696
- ).toThrow('Validation failed');
698
+ ).toThrowError('Validation failed');
697
699
  });
698
700
  });
699
701
 
@@ -171,15 +171,15 @@ describe('TernaryResult test', () => {
171
171
  test('throwing unwrap variants provide descriptive errors', () => {
172
172
  expect(() =>
173
173
  TernaryResult.unwrapThrow(TernaryResult.warn('notice', 'warned')),
174
- ).toThrow(/Warn/u);
174
+ ).toThrowError(/Warn/u);
175
175
 
176
176
  expect(() =>
177
177
  TernaryResult.unwrapWarnThrow(TernaryResult.err('no warn')),
178
- ).toThrow(/Err/u);
178
+ ).toThrowError(/Err/u);
179
179
 
180
180
  expect(() =>
181
181
  TernaryResult.unwrapErrThrow(TernaryResult.ok('no err')),
182
- ).toThrow(/Ok/u);
182
+ ).toThrowError(/Ok/u);
183
183
  });
184
184
 
185
185
  test('expectToBe unwraps Ok values', () => {
@@ -187,7 +187,7 @@ describe('TernaryResult test', () => {
187
187
 
188
188
  expect(() =>
189
189
  TernaryResult.expectToBe(TernaryResult.err('x'), 'missing'),
190
- ).toThrow(/missing/u);
190
+ ).toThrowError(/missing/u);
191
191
  });
192
192
 
193
193
  test('zip prefers Err over Warn or Ok.', () => {