ts-data-forge 4.0.0 → 5.0.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 (245) hide show
  1. package/dist/entry-point.mjs +2 -0
  2. package/dist/entry-point.mjs.map +1 -1
  3. package/dist/functional/index.d.mts +1 -0
  4. package/dist/functional/index.d.mts.map +1 -1
  5. package/dist/functional/index.mjs +2 -0
  6. package/dist/functional/index.mjs.map +1 -1
  7. package/dist/functional/ternary-result/impl/index.d.mts +29 -0
  8. package/dist/functional/ternary-result/impl/index.d.mts.map +1 -0
  9. package/dist/functional/ternary-result/impl/index.mjs +28 -0
  10. package/dist/functional/ternary-result/impl/index.mjs.map +1 -0
  11. package/dist/functional/ternary-result/impl/tag.d.mts +7 -0
  12. package/dist/functional/ternary-result/impl/tag.d.mts.map +1 -0
  13. package/dist/functional/ternary-result/impl/tag.mjs +9 -0
  14. package/dist/functional/ternary-result/impl/tag.mjs.map +1 -0
  15. package/dist/functional/ternary-result/impl/ternary-result-err.d.mts +14 -0
  16. package/dist/functional/ternary-result/impl/ternary-result-err.d.mts.map +1 -0
  17. package/dist/functional/ternary-result/impl/ternary-result-err.mjs +21 -0
  18. package/dist/functional/ternary-result/impl/ternary-result-err.mjs.map +1 -0
  19. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.d.mts +18 -0
  20. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.d.mts.map +1 -0
  21. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.mjs +24 -0
  22. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.mjs.map +1 -0
  23. package/dist/functional/ternary-result/impl/ternary-result-flat-map.d.mts +29 -0
  24. package/dist/functional/ternary-result/impl/ternary-result-flat-map.d.mts.map +1 -0
  25. package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs +41 -0
  26. package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs.map +1 -0
  27. package/dist/functional/ternary-result/impl/ternary-result-fold.d.mts +27 -0
  28. package/dist/functional/ternary-result/impl/ternary-result-fold.d.mts.map +1 -0
  29. package/dist/functional/ternary-result/impl/ternary-result-fold.mjs +36 -0
  30. package/dist/functional/ternary-result/impl/ternary-result-fold.mjs.map +1 -0
  31. package/dist/functional/ternary-result/impl/ternary-result-from-promise.d.mts +20 -0
  32. package/dist/functional/ternary-result/impl/ternary-result-from-promise.d.mts.map +1 -0
  33. package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs +24 -0
  34. package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs.map +1 -0
  35. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.d.mts +17 -0
  36. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.d.mts.map +1 -0
  37. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs +33 -0
  38. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs.map +1 -0
  39. package/dist/functional/ternary-result/impl/ternary-result-is-err.d.mts +20 -0
  40. package/dist/functional/ternary-result/impl/ternary-result-is-err.d.mts.map +1 -0
  41. package/dist/functional/ternary-result/impl/ternary-result-is-err.mjs +23 -0
  42. package/dist/functional/ternary-result/impl/ternary-result-is-err.mjs.map +1 -0
  43. package/dist/functional/ternary-result/impl/ternary-result-is-ok.d.mts +21 -0
  44. package/dist/functional/ternary-result/impl/ternary-result-is-ok.d.mts.map +1 -0
  45. package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs +24 -0
  46. package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs.map +1 -0
  47. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.d.mts +17 -0
  48. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.d.mts.map +1 -0
  49. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs +28 -0
  50. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs.map +1 -0
  51. package/dist/functional/ternary-result/impl/ternary-result-is-warn.d.mts +21 -0
  52. package/dist/functional/ternary-result/impl/ternary-result-is-warn.d.mts.map +1 -0
  53. package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs +24 -0
  54. package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs.map +1 -0
  55. package/dist/functional/ternary-result/impl/ternary-result-map-err.d.mts +23 -0
  56. package/dist/functional/ternary-result/impl/ternary-result-map-err.d.mts.map +1 -0
  57. package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs +26 -0
  58. package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs.map +1 -0
  59. package/dist/functional/ternary-result/impl/ternary-result-map-warn.d.mts +21 -0
  60. package/dist/functional/ternary-result/impl/ternary-result-map-warn.d.mts.map +1 -0
  61. package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs +29 -0
  62. package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs.map +1 -0
  63. package/dist/functional/ternary-result/impl/ternary-result-map.d.mts +29 -0
  64. package/dist/functional/ternary-result/impl/ternary-result-map.d.mts.map +1 -0
  65. package/dist/functional/ternary-result/impl/ternary-result-map.mjs +35 -0
  66. package/dist/functional/ternary-result/impl/ternary-result-map.mjs.map +1 -0
  67. package/dist/functional/ternary-result/impl/ternary-result-ok.d.mts +16 -0
  68. package/dist/functional/ternary-result/impl/ternary-result-ok.d.mts.map +1 -0
  69. package/dist/functional/ternary-result/impl/ternary-result-ok.mjs +23 -0
  70. package/dist/functional/ternary-result/impl/ternary-result-ok.mjs.map +1 -0
  71. package/dist/functional/ternary-result/impl/ternary-result-or-else.d.mts +26 -0
  72. package/dist/functional/ternary-result/impl/ternary-result-or-else.d.mts.map +1 -0
  73. package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs +19 -0
  74. package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs.map +1 -0
  75. package/dist/functional/ternary-result/impl/ternary-result-to-optional.d.mts +16 -0
  76. package/dist/functional/ternary-result/impl/ternary-result-to-optional.d.mts.map +1 -0
  77. package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs +25 -0
  78. package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs.map +1 -0
  79. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.d.mts +22 -0
  80. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.d.mts.map +1 -0
  81. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.mjs +17 -0
  82. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.mjs.map +1 -0
  83. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.d.mts +18 -0
  84. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.d.mts.map +1 -0
  85. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs +36 -0
  86. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs.map +1 -0
  87. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.d.mts +17 -0
  88. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.d.mts.map +1 -0
  89. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs +22 -0
  90. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs.map +1 -0
  91. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.d.mts +22 -0
  92. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.d.mts.map +1 -0
  93. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mjs +17 -0
  94. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mjs.map +1 -0
  95. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.d.mts +17 -0
  96. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.d.mts.map +1 -0
  97. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs +13 -0
  98. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs.map +1 -0
  99. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.d.mts +18 -0
  100. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.d.mts.map +1 -0
  101. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs +36 -0
  102. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs.map +1 -0
  103. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.d.mts +19 -0
  104. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.d.mts.map +1 -0
  105. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mjs +17 -0
  106. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mjs.map +1 -0
  107. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.d.mts +18 -0
  108. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.d.mts.map +1 -0
  109. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs +32 -0
  110. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs.map +1 -0
  111. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.d.mts +17 -0
  112. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.d.mts.map +1 -0
  113. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs +22 -0
  114. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs.map +1 -0
  115. package/dist/functional/ternary-result/impl/ternary-result-warn.d.mts +18 -0
  116. package/dist/functional/ternary-result/impl/ternary-result-warn.d.mts.map +1 -0
  117. package/dist/functional/ternary-result/impl/ternary-result-warn.mjs +26 -0
  118. package/dist/functional/ternary-result/impl/ternary-result-warn.mjs.map +1 -0
  119. package/dist/functional/ternary-result/impl/ternary-result-zip.d.mts +26 -0
  120. package/dist/functional/ternary-result/impl/ternary-result-zip.d.mts.map +1 -0
  121. package/dist/functional/ternary-result/impl/ternary-result-zip.mjs +48 -0
  122. package/dist/functional/ternary-result/impl/ternary-result-zip.mjs.map +1 -0
  123. package/dist/functional/ternary-result/impl/types.d.mts +25 -0
  124. package/dist/functional/ternary-result/impl/types.d.mts.map +1 -0
  125. package/dist/functional/ternary-result/impl/types.mjs +2 -0
  126. package/dist/functional/ternary-result/impl/types.mjs.map +1 -0
  127. package/dist/functional/ternary-result/impl/variant-name.d.mts +3 -0
  128. package/dist/functional/ternary-result/impl/variant-name.d.mts.map +1 -0
  129. package/dist/functional/ternary-result/impl/variant-name.mjs +16 -0
  130. package/dist/functional/ternary-result/impl/variant-name.mjs.map +1 -0
  131. package/dist/functional/ternary-result/index.d.mts +2 -0
  132. package/dist/functional/ternary-result/index.d.mts.map +1 -0
  133. package/dist/functional/ternary-result/index.mjs +3 -0
  134. package/dist/functional/ternary-result/index.mjs.map +1 -0
  135. package/dist/globals.d.mts +55 -2
  136. package/dist/json/json.d.mts +9 -3
  137. package/dist/json/json.d.mts.map +1 -1
  138. package/dist/json/json.mjs +6 -0
  139. package/dist/json/json.mjs.map +1 -1
  140. package/package.json +13 -13
  141. package/src/array/impl/array-utils-creation.test.mts +187 -74
  142. package/src/array/impl/array-utils-element-access.test.mts +19 -3
  143. package/src/array/impl/array-utils-iterators.test.mts +44 -24
  144. package/src/array/impl/array-utils-modification.test.mts +36 -33
  145. package/src/array/impl/array-utils-reducing-value.test.mts +47 -16
  146. package/src/array/impl/array-utils-search.test.mts +42 -9
  147. package/src/array/impl/array-utils-set-op.test.mts +54 -26
  148. package/src/array/impl/array-utils-size.test.mts +1 -0
  149. package/src/array/impl/array-utils-slice-clamped.test.mts +20 -11
  150. package/src/array/impl/array-utils-slicing.test.mts +27 -21
  151. package/src/array/impl/array-utils-transformation.test.mts +140 -92
  152. package/src/array/impl/array-utils-validation.test.mts +58 -10
  153. package/src/array/impl/array.test.mts +5 -5
  154. package/src/collections/imap-mapped.test.mts +63 -18
  155. package/src/collections/imap.test.mts +74 -26
  156. package/src/collections/iset-mapped.test.mts +81 -30
  157. package/src/collections/iset.test.mts +168 -68
  158. package/src/collections/queue.test.mts +32 -1
  159. package/src/collections/stack.test.mts +22 -8
  160. package/src/functional/index.mts +1 -0
  161. package/src/functional/match.test.mts +1 -1
  162. package/src/functional/optional.test.mts +61 -4
  163. package/src/functional/pipe.test.mts +10 -1
  164. package/src/functional/result.test.mts +127 -4
  165. package/src/functional/ternary-result/impl/index.mts +28 -0
  166. package/src/functional/ternary-result/impl/tag.mts +11 -0
  167. package/src/functional/ternary-result/impl/ternary-result-err.mts +18 -0
  168. package/src/functional/ternary-result/impl/ternary-result-expect-to-be.mts +53 -0
  169. package/src/functional/ternary-result/impl/ternary-result-flat-map.mts +95 -0
  170. package/src/functional/ternary-result/impl/ternary-result-fold.mts +93 -0
  171. package/src/functional/ternary-result/impl/ternary-result-from-promise.mts +27 -0
  172. package/src/functional/ternary-result/impl/ternary-result-from-throwable.mts +31 -0
  173. package/src/functional/ternary-result/impl/ternary-result-is-err.mts +23 -0
  174. package/src/functional/ternary-result/impl/ternary-result-is-ok.mts +24 -0
  175. package/src/functional/ternary-result/impl/ternary-result-is-ternary-result.mts +27 -0
  176. package/src/functional/ternary-result/impl/ternary-result-is-warn.mts +24 -0
  177. package/src/functional/ternary-result/impl/ternary-result-map-err.mts +64 -0
  178. package/src/functional/ternary-result/impl/ternary-result-map-warn.mts +66 -0
  179. package/src/functional/ternary-result/impl/ternary-result-map.mts +81 -0
  180. package/src/functional/ternary-result/impl/ternary-result-ok.mts +20 -0
  181. package/src/functional/ternary-result/impl/ternary-result-or-else.mts +66 -0
  182. package/src/functional/ternary-result/impl/ternary-result-to-optional.mts +25 -0
  183. package/src/functional/ternary-result/impl/ternary-result-unwrap-err-or.mts +45 -0
  184. package/src/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mts +40 -0
  185. package/src/functional/ternary-result/impl/ternary-result-unwrap-err.mts +22 -0
  186. package/src/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mts +45 -0
  187. package/src/functional/ternary-result/impl/ternary-result-unwrap-ok.mts +32 -0
  188. package/src/functional/ternary-result/impl/ternary-result-unwrap-throw.mts +45 -0
  189. package/src/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mts +42 -0
  190. package/src/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mts +38 -0
  191. package/src/functional/ternary-result/impl/ternary-result-unwrap-warn.mts +22 -0
  192. package/src/functional/ternary-result/impl/ternary-result-warn.mts +23 -0
  193. package/src/functional/ternary-result/impl/ternary-result-zip.mts +53 -0
  194. package/src/functional/ternary-result/impl/types.mts +39 -0
  195. package/src/functional/ternary-result/impl/variant-name.mts +17 -0
  196. package/src/functional/ternary-result/index.mts +1 -0
  197. package/src/functional/ternary-result.test.mts +214 -0
  198. package/src/globals.d.mts +55 -2
  199. package/src/guard/is-non-empty-string.test.mts +5 -2
  200. package/src/guard/is-non-null-object.test.mts +3 -5
  201. package/src/guard/is-primitive.test.mts +5 -3
  202. package/src/guard/is-record.test.mts +1 -1
  203. package/src/guard/is-type.test.mts +35 -20
  204. package/src/guard/key-is-in.test.mts +1 -1
  205. package/src/iterator/range.test.mts +22 -16
  206. package/src/json/json.mts +9 -3
  207. package/src/json/json.test.mts +140 -64
  208. package/src/number/branded-types/finite-number.test.mts +3 -2
  209. package/src/number/branded-types/int.test.mts +4 -3
  210. package/src/number/branded-types/int16.test.mts +9 -3
  211. package/src/number/branded-types/int32.test.mts +9 -3
  212. package/src/number/branded-types/non-negative-finite-number.test.mts +6 -4
  213. package/src/number/branded-types/non-negative-int16.test.mts +8 -3
  214. package/src/number/branded-types/non-negative-int32.test.mts +8 -3
  215. package/src/number/branded-types/non-zero-finite-number.test.mts +6 -3
  216. package/src/number/branded-types/non-zero-int.test.mts +6 -3
  217. package/src/number/branded-types/non-zero-int16.test.mts +9 -3
  218. package/src/number/branded-types/non-zero-int32.test.mts +9 -3
  219. package/src/number/branded-types/non-zero-safe-int.test.mts +10 -3
  220. package/src/number/branded-types/non-zero-uint16.test.mts +8 -3
  221. package/src/number/branded-types/non-zero-uint32.test.mts +8 -3
  222. package/src/number/branded-types/positive-finite-number.test.mts +7 -3
  223. package/src/number/branded-types/positive-int.test.mts +5 -3
  224. package/src/number/branded-types/positive-int16.test.mts +8 -3
  225. package/src/number/branded-types/positive-int32.test.mts +8 -3
  226. package/src/number/branded-types/positive-safe-int.test.mts +8 -3
  227. package/src/number/branded-types/positive-uint16.test.mts +8 -3
  228. package/src/number/branded-types/positive-uint32.test.mts +8 -3
  229. package/src/number/branded-types/safe-int.test.mts +8 -2
  230. package/src/number/branded-types/safe-uint.test.mts +8 -3
  231. package/src/number/branded-types/uint.test.mts +5 -3
  232. package/src/number/branded-types/uint16.test.mts +8 -3
  233. package/src/number/branded-types/uint32.test.mts +8 -3
  234. package/src/number/enum/int8.test.mts +8 -3
  235. package/src/number/enum/uint8.test.mts +6 -3
  236. package/src/number/num.test.mts +16 -2
  237. package/src/object/object.test.mts +26 -13
  238. package/src/others/cast-mutable.test.mts +10 -8
  239. package/src/others/cast-readonly.test.mts +9 -5
  240. package/src/others/if-then.test.mts +4 -1
  241. package/src/others/map-nullable.test.mts +28 -1
  242. package/src/others/memoize-function.test.mts +20 -17
  243. package/src/others/tuple.test.mts +3 -2
  244. package/src/others/unknown-to-string.test.mts +15 -2
  245. package/src/promise/promise.test.mts +6 -1
@@ -1,17 +1,17 @@
1
1
  import { memoizeFunction } from './memoize-function.mjs';
2
2
 
3
- describe('memoizeFunction', () => {
3
+ describe(memoizeFunction, () => {
4
4
  test('should cache results for the same arguments', () => {
5
5
  const mockFn = vi.fn((x: number) => x * 2);
6
6
  const memoized = memoizeFunction(mockFn, (x) => x);
7
7
 
8
8
  // First call
9
9
  expect(memoized(5)).toBe(10);
10
- expect(mockFn).toHaveBeenCalledTimes(1);
10
+ expect(mockFn).toHaveBeenCalledOnce();
11
11
 
12
12
  // Second call with same argument - should use cache
13
13
  expect(memoized(5)).toBe(10);
14
- expect(mockFn).toHaveBeenCalledTimes(1);
14
+ expect(mockFn).toHaveBeenCalledOnce();
15
15
 
16
16
  // Call with different argument
17
17
  expect(memoized(3)).toBe(6);
@@ -23,10 +23,10 @@ describe('memoizeFunction', () => {
23
23
  const memoized = memoizeFunction(mockFn, (a, b) => `${a},${b}`);
24
24
 
25
25
  expect(memoized(2, 3)).toBe(5);
26
- expect(mockFn).toHaveBeenCalledTimes(1);
26
+ expect(mockFn).toHaveBeenCalledOnce();
27
27
 
28
28
  expect(memoized(2, 3)).toBe(5);
29
- expect(mockFn).toHaveBeenCalledTimes(1);
29
+ expect(mockFn).toHaveBeenCalledOnce();
30
30
 
31
31
  expect(memoized(3, 2)).toBe(5);
32
32
  expect(mockFn).toHaveBeenCalledTimes(2);
@@ -38,12 +38,12 @@ describe('memoizeFunction', () => {
38
38
 
39
39
  // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression
40
40
  expect(memoized(5)).toBeUndefined();
41
- expect(mockFn).toHaveBeenCalledTimes(1);
41
+ expect(mockFn).toHaveBeenCalledOnce();
42
42
 
43
43
  // Should use cache even for undefined
44
44
  // eslint-disable-next-line @typescript-eslint/no-confusing-void-expression
45
45
  expect(memoized(5)).toBeUndefined();
46
- expect(mockFn).toHaveBeenCalledTimes(1);
46
+ expect(mockFn).toHaveBeenCalledOnce();
47
47
  });
48
48
 
49
49
  test('should work with object arguments using primitive cache keys', () => {
@@ -56,11 +56,11 @@ describe('memoizeFunction', () => {
56
56
  const user3 = { id: 2, name: 'Charlie' };
57
57
 
58
58
  expect(memoized(user1)).toBe('Hello Alice');
59
- expect(mockFn).toHaveBeenCalledTimes(1);
59
+ expect(mockFn).toHaveBeenCalledOnce();
60
60
 
61
61
  // Same id, should use cache (even though name is different)
62
62
  expect(memoized(user2)).toBe('Hello Alice');
63
- expect(mockFn).toHaveBeenCalledTimes(1);
63
+ expect(mockFn).toHaveBeenCalledOnce();
64
64
 
65
65
  // Different id, should call function
66
66
  expect(memoized(user3)).toBe('Hello Charlie');
@@ -73,6 +73,7 @@ describe('memoizeFunction', () => {
73
73
  (x: string) => x.length,
74
74
  (x) => x.length,
75
75
  );
76
+
76
77
  expect(withNumber('hello')).toBe(5);
77
78
  expect(withNumber('world')).toBe(5); // Same length, uses cache
78
79
 
@@ -81,6 +82,7 @@ describe('memoizeFunction', () => {
81
82
  (x: number) => x * 2,
82
83
  (x) => x > 0,
83
84
  );
85
+
84
86
  expect(withBoolean(5)).toBe(10);
85
87
  expect(withBoolean(3)).toBe(10); // Both positive, uses cache
86
88
  expect(withBoolean(-2)).toBe(-4); // Negative, new cache entry
@@ -93,6 +95,7 @@ describe('memoizeFunction', () => {
93
95
  (s) => s,
94
96
  );
95
97
  const result1 = withSymbol(sym1);
98
+
96
99
  expect(withSymbol(sym1)).toBe(result1); // Same symbol, uses cache
97
100
  expect(withSymbol(sym2)).not.toBe(result1); // Different symbol
98
101
  });
@@ -102,10 +105,10 @@ describe('memoizeFunction', () => {
102
105
  const memoized = memoizeFunction(mockFn, (x) => x);
103
106
 
104
107
  expect(memoized(null)).toBe('default');
105
- expect(mockFn).toHaveBeenCalledTimes(1);
108
+ expect(mockFn).toHaveBeenCalledOnce();
106
109
 
107
110
  expect(memoized(null)).toBe('default');
108
- expect(mockFn).toHaveBeenCalledTimes(1);
111
+ expect(mockFn).toHaveBeenCalledOnce();
109
112
 
110
113
  expect(memoized(undefined)).toBe('default');
111
114
  expect(mockFn).toHaveBeenCalledTimes(2);
@@ -124,15 +127,15 @@ describe('memoizeFunction', () => {
124
127
  expect(memoized1(5)).toBe(10);
125
128
  expect(memoized2(5)).toBe(15);
126
129
 
127
- expect(fn1).toHaveBeenCalledTimes(1);
128
- expect(fn2).toHaveBeenCalledTimes(1);
130
+ expect(fn1).toHaveBeenCalledOnce();
131
+ expect(fn2).toHaveBeenCalledOnce();
129
132
 
130
133
  // Each has its own cache
131
134
  expect(memoized1(5)).toBe(10);
132
135
  expect(memoized2(5)).toBe(15);
133
136
 
134
- expect(fn1).toHaveBeenCalledTimes(1);
135
- expect(fn2).toHaveBeenCalledTimes(1);
137
+ expect(fn1).toHaveBeenCalledOnce();
138
+ expect(fn2).toHaveBeenCalledOnce();
136
139
  });
137
140
 
138
141
  test('should work with complex cache key generation', () => {
@@ -156,11 +159,11 @@ describe('memoizeFunction', () => {
156
159
  const args3 = { category: 'books', subcategory: 'fiction', id: 124 };
157
160
 
158
161
  expect(memoized(args1)).toBe('books/fiction/123');
159
- expect(mockFn).toHaveBeenCalledTimes(1);
162
+ expect(mockFn).toHaveBeenCalledOnce();
160
163
 
161
164
  // Same cache key, should use cache
162
165
  expect(memoized(args2)).toBe('books/fiction/123');
163
- expect(mockFn).toHaveBeenCalledTimes(1);
166
+ expect(mockFn).toHaveBeenCalledOnce();
164
167
 
165
168
  // Different id, different cache key
166
169
  expect(memoized(args3)).toBe('books/fiction/124');
@@ -1,10 +1,11 @@
1
1
  import { expectType } from '../expect-type.mjs';
2
2
  import { tp } from './tuple.mjs';
3
3
 
4
- describe('tp', () => {
4
+ describe(tp, () => {
5
5
  test('test type', () => {
6
6
  const tuple = tp(1, 2, 3);
7
- expect(tuple).toStrictEqual([1, 2, 3]);
7
+
8
+ assert.deepStrictEqual(tuple, [1, 2, 3]);
8
9
 
9
10
  expectType<typeof tuple, readonly [1, 2, 3]>('=');
10
11
  });
@@ -1,50 +1,58 @@
1
1
  import { unknownToString } from './unknown-to-string.mjs';
2
2
 
3
- describe('unknownToString', () => {
3
+ describe(unknownToString, () => {
4
4
  test('string', () => {
5
5
  const result = unknownToString('aaaaa');
6
+
6
7
  expect(result).toBe('aaaaa');
7
8
  expect(JSON.stringify('aaaaa')).toBe('"aaaaa"');
8
9
  });
9
10
 
10
11
  test('number', () => {
11
12
  const result = unknownToString(1);
13
+
12
14
  expect(result).toBe('1');
13
15
  expect(JSON.stringify(1)).toBe('1');
14
16
  });
15
17
 
16
18
  test('boolean', () => {
17
19
  const result = unknownToString(true);
20
+
18
21
  expect(result).toBe('true');
19
22
  expect(JSON.stringify(true)).toBe('true');
20
23
  });
21
24
 
22
25
  test('symbol', () => {
23
26
  const result = unknownToString(Symbol('sym'));
27
+
24
28
  expect(result).toBe('Symbol(sym)');
25
29
  expect(JSON.stringify(Symbol('sym'))).toBeUndefined();
26
30
  });
27
31
 
28
32
  test('function', () => {
29
33
  const result = unknownToString(() => 0);
34
+
30
35
  expect(result).toBe('() => 0');
31
36
  expect(JSON.stringify(() => 0)).toBeUndefined();
32
37
  });
33
38
 
34
39
  test('undefined', () => {
35
40
  const result = unknownToString(undefined);
41
+
36
42
  expect(result).toBe('undefined');
37
43
  expect(JSON.stringify(undefined)).toBeUndefined();
38
44
  });
39
45
 
40
46
  test('null', () => {
41
47
  const result = unknownToString(null);
48
+
42
49
  expect(result).toBe('null');
43
50
  expect(JSON.stringify(null)).toBe('null');
44
51
  });
45
52
 
46
53
  test('object', () => {
47
54
  const result = unknownToString({ a: { b: 1 } });
55
+
48
56
  expect(result).toBe('{"a":{"b":1}}');
49
57
  expect(JSON.stringify({ a: { b: 1 } })).toBe('{"a":{"b":1}}');
50
58
  });
@@ -54,6 +62,7 @@ describe('unknownToString', () => {
54
62
  { a: { b: 1 } },
55
63
  { prettyPrintObject: true },
56
64
  );
65
+
57
66
  expect(result).toBe(
58
67
  [
59
68
  //
@@ -70,13 +79,16 @@ describe('unknownToString', () => {
70
79
  const mut_circular: { a: number; self?: unknown } = { a: 1 };
71
80
  mut_circular.self = mut_circular;
72
81
  const result = unknownToString(mut_circular);
82
+
73
83
  // Should return an error message string instead of throwing
74
- expect(typeof result).toBe('string');
84
+ expectTypeOf(result).toBeString();
85
+
75
86
  expect(result).toMatch(/circular|serialize/iu);
76
87
  });
77
88
 
78
89
  test('BigInt value', () => {
79
90
  const result = unknownToString(123n);
91
+
80
92
  expect(result).toBe('123n');
81
93
  });
82
94
 
@@ -89,6 +101,7 @@ describe('unknownToString', () => {
89
101
  };
90
102
 
91
103
  const result = unknownToString(value);
104
+
92
105
  expect(result).toBe('[Circular or Non-serializable]');
93
106
  });
94
107
  });
@@ -2,7 +2,7 @@ import { expectType } from '../expect-type.mjs';
2
2
  import { Result } from '../functional/index.mjs';
3
3
  import { createPromise } from './promise.mjs';
4
4
 
5
- describe('createPromise', () => {
5
+ describe(createPromise, () => {
6
6
  test('resolves to Result.ok when executor resolves', async () => {
7
7
  const resultPromise = createPromise<number, Error>((resolve) => {
8
8
  resolve(42);
@@ -11,7 +11,9 @@ describe('createPromise', () => {
11
11
  expectType<typeof resultPromise, Promise<Result<number, Error>>>('=');
12
12
 
13
13
  const result = await resultPromise;
14
+
14
15
  expect(Result.isOk(result)).toBe(true);
16
+
15
17
  if (Result.isOk(result)) {
16
18
  expect(result.value).toBe(42);
17
19
  }
@@ -24,6 +26,7 @@ describe('createPromise', () => {
24
26
  });
25
27
 
26
28
  expect(Result.isErr(result)).toBe(true);
29
+
27
30
  if (Result.isErr(result)) {
28
31
  expect(result.value).toBe(rejection);
29
32
  }
@@ -35,8 +38,10 @@ describe('createPromise', () => {
35
38
  });
36
39
 
37
40
  expect(Result.isErr(result)).toBe(true);
41
+
38
42
  if (Result.isErr(result)) {
39
43
  expectType<typeof result.value, string>('=');
44
+
40
45
  expect(result.value).toBe('failure');
41
46
  }
42
47
  });