ts-data-forge 5.0.1 → 5.1.1

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 (539) hide show
  1. package/README.md +101 -50
  2. package/dist/array/impl/array-utils-creation.d.mts +14 -0
  3. package/dist/array/impl/array-utils-creation.d.mts.map +1 -1
  4. package/dist/array/impl/array-utils-creation.mjs +12 -0
  5. package/dist/array/impl/array-utils-creation.mjs.map +1 -1
  6. package/dist/array/impl/array-utils-element-access.d.mts +10 -0
  7. package/dist/array/impl/array-utils-element-access.d.mts.map +1 -1
  8. package/dist/array/impl/array-utils-element-access.mjs +6 -0
  9. package/dist/array/impl/array-utils-element-access.mjs.map +1 -1
  10. package/dist/array/impl/array-utils-modification.d.mts +14 -0
  11. package/dist/array/impl/array-utils-modification.d.mts.map +1 -1
  12. package/dist/array/impl/array-utils-modification.mjs.map +1 -1
  13. package/dist/array/impl/array-utils-reducing-value.d.mts +34 -10
  14. package/dist/array/impl/array-utils-reducing-value.d.mts.map +1 -1
  15. package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -1
  16. package/dist/array/impl/array-utils-search.d.mts +34 -4
  17. package/dist/array/impl/array-utils-search.d.mts.map +1 -1
  18. package/dist/array/impl/array-utils-search.mjs.map +1 -1
  19. package/dist/array/impl/array-utils-set-op.d.mts +20 -7
  20. package/dist/array/impl/array-utils-set-op.d.mts.map +1 -1
  21. package/dist/array/impl/array-utils-set-op.mjs +20 -7
  22. package/dist/array/impl/array-utils-set-op.mjs.map +1 -1
  23. package/dist/array/impl/array-utils-size.d.mts +5 -2
  24. package/dist/array/impl/array-utils-size.d.mts.map +1 -1
  25. package/dist/array/impl/array-utils-size.mjs +5 -2
  26. package/dist/array/impl/array-utils-size.mjs.map +1 -1
  27. package/dist/array/impl/array-utils-slice-clamped.d.mts +2 -0
  28. package/dist/array/impl/array-utils-slice-clamped.d.mts.map +1 -1
  29. package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -1
  30. package/dist/array/impl/array-utils-slicing.d.mts +17 -2
  31. package/dist/array/impl/array-utils-slicing.d.mts.map +1 -1
  32. package/dist/array/impl/array-utils-slicing.mjs +9 -2
  33. package/dist/array/impl/array-utils-slicing.mjs.map +1 -1
  34. package/dist/array/impl/array-utils-transformation.d.mts +27 -0
  35. package/dist/array/impl/array-utils-transformation.d.mts.map +1 -1
  36. package/dist/array/impl/array-utils-transformation.mjs +6 -0
  37. package/dist/array/impl/array-utils-transformation.mjs.map +1 -1
  38. package/dist/array/impl/array-utils-validation.d.mts +35 -18
  39. package/dist/array/impl/array-utils-validation.d.mts.map +1 -1
  40. package/dist/array/impl/array-utils-validation.mjs +25 -14
  41. package/dist/array/impl/array-utils-validation.mjs.map +1 -1
  42. package/dist/collections/imap-mapped.mjs.map +1 -1
  43. package/dist/collections/imap.d.mts +35 -15
  44. package/dist/collections/imap.d.mts.map +1 -1
  45. package/dist/collections/imap.mjs +5 -3
  46. package/dist/collections/imap.mjs.map +1 -1
  47. package/dist/collections/iset-mapped.d.mts +46 -19
  48. package/dist/collections/iset-mapped.d.mts.map +1 -1
  49. package/dist/collections/iset-mapped.mjs +9 -2
  50. package/dist/collections/iset-mapped.mjs.map +1 -1
  51. package/dist/collections/iset.d.mts +48 -19
  52. package/dist/collections/iset.d.mts.map +1 -1
  53. package/dist/collections/iset.mjs +9 -2
  54. package/dist/collections/iset.mjs.map +1 -1
  55. package/dist/collections/queue.d.mts +65 -25
  56. package/dist/collections/queue.d.mts.map +1 -1
  57. package/dist/collections/queue.mjs +13 -5
  58. package/dist/collections/queue.mjs.map +1 -1
  59. package/dist/collections/stack.d.mts +60 -25
  60. package/dist/collections/stack.d.mts.map +1 -1
  61. package/dist/collections/stack.mjs +12 -5
  62. package/dist/collections/stack.mjs.map +1 -1
  63. package/dist/entry-point.mjs +1 -1
  64. package/dist/functional/match.d.mts +1 -1
  65. package/dist/functional/match.d.mts.map +1 -1
  66. package/dist/functional/match.mjs.map +1 -1
  67. package/dist/functional/optional/impl/optional-expect-to-be.d.mts +3 -2
  68. package/dist/functional/optional/impl/optional-expect-to-be.d.mts.map +1 -1
  69. package/dist/functional/optional/impl/optional-expect-to-be.mjs.map +1 -1
  70. package/dist/functional/optional/impl/optional-filter.d.mts +3 -0
  71. package/dist/functional/optional/impl/optional-filter.d.mts.map +1 -1
  72. package/dist/functional/optional/impl/optional-filter.mjs.map +1 -1
  73. package/dist/functional/optional/impl/optional-flat-map.d.mts +2 -0
  74. package/dist/functional/optional/impl/optional-flat-map.d.mts.map +1 -1
  75. package/dist/functional/optional/impl/optional-flat-map.mjs.map +1 -1
  76. package/dist/functional/optional/impl/optional-from-nullable.d.mts +2 -0
  77. package/dist/functional/optional/impl/optional-from-nullable.d.mts.map +1 -1
  78. package/dist/functional/optional/impl/optional-from-nullable.mjs +2 -0
  79. package/dist/functional/optional/impl/optional-from-nullable.mjs.map +1 -1
  80. package/dist/functional/optional/impl/optional-is-none.d.mts +1 -1
  81. package/dist/functional/optional/impl/optional-is-none.mjs +1 -1
  82. package/dist/functional/optional/impl/optional-is-optional.d.mts +4 -2
  83. package/dist/functional/optional/impl/optional-is-optional.d.mts.map +1 -1
  84. package/dist/functional/optional/impl/optional-is-optional.mjs +4 -2
  85. package/dist/functional/optional/impl/optional-is-optional.mjs.map +1 -1
  86. package/dist/functional/optional/impl/optional-is-some.d.mts +2 -1
  87. package/dist/functional/optional/impl/optional-is-some.d.mts.map +1 -1
  88. package/dist/functional/optional/impl/optional-is-some.mjs +2 -1
  89. package/dist/functional/optional/impl/optional-is-some.mjs.map +1 -1
  90. package/dist/functional/optional/impl/optional-map.d.mts +2 -0
  91. package/dist/functional/optional/impl/optional-map.d.mts.map +1 -1
  92. package/dist/functional/optional/impl/optional-map.mjs.map +1 -1
  93. package/dist/functional/optional/impl/optional-none.d.mts +4 -2
  94. package/dist/functional/optional/impl/optional-none.d.mts.map +1 -1
  95. package/dist/functional/optional/impl/optional-none.mjs +4 -2
  96. package/dist/functional/optional/impl/optional-none.mjs.map +1 -1
  97. package/dist/functional/optional/impl/optional-or-else.d.mts +4 -0
  98. package/dist/functional/optional/impl/optional-or-else.d.mts.map +1 -1
  99. package/dist/functional/optional/impl/optional-or-else.mjs.map +1 -1
  100. package/dist/functional/optional/impl/optional-some.d.mts +5 -3
  101. package/dist/functional/optional/impl/optional-some.d.mts.map +1 -1
  102. package/dist/functional/optional/impl/optional-some.mjs +4 -2
  103. package/dist/functional/optional/impl/optional-some.mjs.map +1 -1
  104. package/dist/functional/optional/impl/optional-to-nullable.d.mts +4 -2
  105. package/dist/functional/optional/impl/optional-to-nullable.d.mts.map +1 -1
  106. package/dist/functional/optional/impl/optional-to-nullable.mjs +4 -2
  107. package/dist/functional/optional/impl/optional-to-nullable.mjs.map +1 -1
  108. package/dist/functional/optional/impl/optional-unwrap-or.d.mts +7 -4
  109. package/dist/functional/optional/impl/optional-unwrap-or.d.mts.map +1 -1
  110. package/dist/functional/optional/impl/optional-unwrap-or.mjs.map +1 -1
  111. package/dist/functional/optional/impl/optional-unwrap-throw.d.mts +2 -1
  112. package/dist/functional/optional/impl/optional-unwrap-throw.d.mts.map +1 -1
  113. package/dist/functional/optional/impl/optional-unwrap-throw.mjs +2 -1
  114. package/dist/functional/optional/impl/optional-unwrap-throw.mjs.map +1 -1
  115. package/dist/functional/optional/impl/optional-unwrap.d.mts +4 -2
  116. package/dist/functional/optional/impl/optional-unwrap.d.mts.map +1 -1
  117. package/dist/functional/optional/impl/optional-unwrap.mjs.map +1 -1
  118. package/dist/functional/optional/impl/optional-zip.d.mts +3 -1
  119. package/dist/functional/optional/impl/optional-zip.d.mts.map +1 -1
  120. package/dist/functional/optional/impl/optional-zip.mjs +3 -1
  121. package/dist/functional/optional/impl/optional-zip.mjs.map +1 -1
  122. package/dist/functional/pipe.d.mts +2 -2
  123. package/dist/functional/result/impl/result-err.d.mts +4 -2
  124. package/dist/functional/result/impl/result-err.d.mts.map +1 -1
  125. package/dist/functional/result/impl/result-err.mjs +3 -1
  126. package/dist/functional/result/impl/result-err.mjs.map +1 -1
  127. package/dist/functional/result/impl/result-expect-to-be.d.mts +3 -2
  128. package/dist/functional/result/impl/result-expect-to-be.d.mts.map +1 -1
  129. package/dist/functional/result/impl/result-expect-to-be.mjs.map +1 -1
  130. package/dist/functional/result/impl/result-flat-map.d.mts +5 -0
  131. package/dist/functional/result/impl/result-flat-map.d.mts.map +1 -1
  132. package/dist/functional/result/impl/result-flat-map.mjs.map +1 -1
  133. package/dist/functional/result/impl/result-fold.d.mts +4 -0
  134. package/dist/functional/result/impl/result-fold.d.mts.map +1 -1
  135. package/dist/functional/result/impl/result-fold.mjs.map +1 -1
  136. package/dist/functional/result/impl/result-from-promise.d.mts +4 -1
  137. package/dist/functional/result/impl/result-from-promise.d.mts.map +1 -1
  138. package/dist/functional/result/impl/result-from-promise.mjs +4 -1
  139. package/dist/functional/result/impl/result-from-promise.mjs.map +1 -1
  140. package/dist/functional/result/impl/result-from-throwable.d.mts +3 -1
  141. package/dist/functional/result/impl/result-from-throwable.d.mts.map +1 -1
  142. package/dist/functional/result/impl/result-from-throwable.mjs +3 -1
  143. package/dist/functional/result/impl/result-from-throwable.mjs.map +1 -1
  144. package/dist/functional/result/impl/result-is-err.d.mts +4 -2
  145. package/dist/functional/result/impl/result-is-err.d.mts.map +1 -1
  146. package/dist/functional/result/impl/result-is-err.mjs +4 -2
  147. package/dist/functional/result/impl/result-is-err.mjs.map +1 -1
  148. package/dist/functional/result/impl/result-is-ok.d.mts +4 -2
  149. package/dist/functional/result/impl/result-is-ok.d.mts.map +1 -1
  150. package/dist/functional/result/impl/result-is-ok.mjs +4 -2
  151. package/dist/functional/result/impl/result-is-ok.mjs.map +1 -1
  152. package/dist/functional/result/impl/result-is-result.d.mts +7 -3
  153. package/dist/functional/result/impl/result-is-result.d.mts.map +1 -1
  154. package/dist/functional/result/impl/result-is-result.mjs +7 -3
  155. package/dist/functional/result/impl/result-is-result.mjs.map +1 -1
  156. package/dist/functional/result/impl/result-map-err.d.mts +3 -0
  157. package/dist/functional/result/impl/result-map-err.d.mts.map +1 -1
  158. package/dist/functional/result/impl/result-map-err.mjs.map +1 -1
  159. package/dist/functional/result/impl/result-map.d.mts +4 -0
  160. package/dist/functional/result/impl/result-map.d.mts.map +1 -1
  161. package/dist/functional/result/impl/result-map.mjs.map +1 -1
  162. package/dist/functional/result/impl/result-ok.d.mts +4 -2
  163. package/dist/functional/result/impl/result-ok.d.mts.map +1 -1
  164. package/dist/functional/result/impl/result-ok.mjs +3 -1
  165. package/dist/functional/result/impl/result-ok.mjs.map +1 -1
  166. package/dist/functional/result/impl/result-or-else.d.mts +4 -0
  167. package/dist/functional/result/impl/result-or-else.d.mts.map +1 -1
  168. package/dist/functional/result/impl/result-or-else.mjs.map +1 -1
  169. package/dist/functional/result/impl/result-swap.d.mts +2 -0
  170. package/dist/functional/result/impl/result-swap.d.mts.map +1 -1
  171. package/dist/functional/result/impl/result-swap.mjs +2 -0
  172. package/dist/functional/result/impl/result-swap.mjs.map +1 -1
  173. package/dist/functional/result/impl/result-to-optional.d.mts +2 -0
  174. package/dist/functional/result/impl/result-to-optional.d.mts.map +1 -1
  175. package/dist/functional/result/impl/result-to-optional.mjs +2 -0
  176. package/dist/functional/result/impl/result-to-optional.mjs.map +1 -1
  177. package/dist/functional/result/impl/result-unwrap-err-or.d.mts +7 -4
  178. package/dist/functional/result/impl/result-unwrap-err-or.d.mts.map +1 -1
  179. package/dist/functional/result/impl/result-unwrap-err-or.mjs.map +1 -1
  180. package/dist/functional/result/impl/result-unwrap-err-throw.d.mts +3 -1
  181. package/dist/functional/result/impl/result-unwrap-err-throw.d.mts.map +1 -1
  182. package/dist/functional/result/impl/result-unwrap-err-throw.mjs +3 -1
  183. package/dist/functional/result/impl/result-unwrap-err-throw.mjs.map +1 -1
  184. package/dist/functional/result/impl/result-unwrap-err.d.mts +3 -2
  185. package/dist/functional/result/impl/result-unwrap-err.d.mts.map +1 -1
  186. package/dist/functional/result/impl/result-unwrap-err.mjs +3 -2
  187. package/dist/functional/result/impl/result-unwrap-err.mjs.map +1 -1
  188. package/dist/functional/result/impl/result-unwrap-ok-or.d.mts +7 -4
  189. package/dist/functional/result/impl/result-unwrap-ok-or.d.mts.map +1 -1
  190. package/dist/functional/result/impl/result-unwrap-ok-or.mjs.map +1 -1
  191. package/dist/functional/result/impl/result-unwrap-ok.d.mts +3 -2
  192. package/dist/functional/result/impl/result-unwrap-ok.d.mts.map +1 -1
  193. package/dist/functional/result/impl/result-unwrap-ok.mjs.map +1 -1
  194. package/dist/functional/result/impl/result-unwrap-throw.d.mts +3 -1
  195. package/dist/functional/result/impl/result-unwrap-throw.d.mts.map +1 -1
  196. package/dist/functional/result/impl/result-unwrap-throw.mjs +3 -1
  197. package/dist/functional/result/impl/result-unwrap-throw.mjs.map +1 -1
  198. package/dist/functional/result/impl/result-zip.d.mts +3 -1
  199. package/dist/functional/result/impl/result-zip.d.mts.map +1 -1
  200. package/dist/functional/result/impl/result-zip.mjs +3 -1
  201. package/dist/functional/result/impl/result-zip.mjs.map +1 -1
  202. package/dist/functional/ternary-result/impl/ternary-result-err.d.mts +3 -2
  203. package/dist/functional/ternary-result/impl/ternary-result-err.d.mts.map +1 -1
  204. package/dist/functional/ternary-result/impl/ternary-result-err.mjs +2 -1
  205. package/dist/functional/ternary-result/impl/ternary-result-err.mjs.map +1 -1
  206. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.d.mts +1 -0
  207. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.d.mts.map +1 -1
  208. package/dist/functional/ternary-result/impl/ternary-result-expect-to-be.mjs.map +1 -1
  209. package/dist/functional/ternary-result/impl/ternary-result-flat-map.d.mts +4 -0
  210. package/dist/functional/ternary-result/impl/ternary-result-flat-map.d.mts.map +1 -1
  211. package/dist/functional/ternary-result/impl/ternary-result-flat-map.mjs.map +1 -1
  212. package/dist/functional/ternary-result/impl/ternary-result-fold.d.mts +2 -0
  213. package/dist/functional/ternary-result/impl/ternary-result-fold.d.mts.map +1 -1
  214. package/dist/functional/ternary-result/impl/ternary-result-fold.mjs.map +1 -1
  215. package/dist/functional/ternary-result/impl/ternary-result-from-promise.d.mts +3 -1
  216. package/dist/functional/ternary-result/impl/ternary-result-from-promise.d.mts.map +1 -1
  217. package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs +3 -1
  218. package/dist/functional/ternary-result/impl/ternary-result-from-promise.mjs.map +1 -1
  219. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.d.mts +3 -1
  220. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.d.mts.map +1 -1
  221. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs +3 -1
  222. package/dist/functional/ternary-result/impl/ternary-result-from-throwable.mjs.map +1 -1
  223. package/dist/functional/ternary-result/impl/ternary-result-is-ok.d.mts +1 -0
  224. package/dist/functional/ternary-result/impl/ternary-result-is-ok.d.mts.map +1 -1
  225. package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs +1 -0
  226. package/dist/functional/ternary-result/impl/ternary-result-is-ok.mjs.map +1 -1
  227. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.d.mts +7 -3
  228. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.d.mts.map +1 -1
  229. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs +7 -3
  230. package/dist/functional/ternary-result/impl/ternary-result-is-ternary-result.mjs.map +1 -1
  231. package/dist/functional/ternary-result/impl/ternary-result-is-warn.d.mts +1 -0
  232. package/dist/functional/ternary-result/impl/ternary-result-is-warn.d.mts.map +1 -1
  233. package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs +1 -0
  234. package/dist/functional/ternary-result/impl/ternary-result-is-warn.mjs.map +1 -1
  235. package/dist/functional/ternary-result/impl/ternary-result-map-err.d.mts +3 -0
  236. package/dist/functional/ternary-result/impl/ternary-result-map-err.d.mts.map +1 -1
  237. package/dist/functional/ternary-result/impl/ternary-result-map-err.mjs.map +1 -1
  238. package/dist/functional/ternary-result/impl/ternary-result-map-warn.d.mts +3 -0
  239. package/dist/functional/ternary-result/impl/ternary-result-map-warn.d.mts.map +1 -1
  240. package/dist/functional/ternary-result/impl/ternary-result-map-warn.mjs.map +1 -1
  241. package/dist/functional/ternary-result/impl/ternary-result-map.d.mts +6 -0
  242. package/dist/functional/ternary-result/impl/ternary-result-map.d.mts.map +1 -1
  243. package/dist/functional/ternary-result/impl/ternary-result-map.mjs.map +1 -1
  244. package/dist/functional/ternary-result/impl/ternary-result-ok.d.mts +1 -1
  245. package/dist/functional/ternary-result/impl/ternary-result-ok.d.mts.map +1 -1
  246. package/dist/functional/ternary-result/impl/ternary-result-ok.mjs.map +1 -1
  247. package/dist/functional/ternary-result/impl/ternary-result-or-else.d.mts +2 -0
  248. package/dist/functional/ternary-result/impl/ternary-result-or-else.d.mts.map +1 -1
  249. package/dist/functional/ternary-result/impl/ternary-result-or-else.mjs.map +1 -1
  250. package/dist/functional/ternary-result/impl/ternary-result-to-optional.d.mts +2 -0
  251. package/dist/functional/ternary-result/impl/ternary-result-to-optional.d.mts.map +1 -1
  252. package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs +2 -0
  253. package/dist/functional/ternary-result/impl/ternary-result-to-optional.mjs.map +1 -1
  254. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.d.mts +2 -0
  255. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.d.mts.map +1 -1
  256. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-or.mjs.map +1 -1
  257. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.d.mts +1 -0
  258. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.d.mts.map +1 -1
  259. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs +1 -0
  260. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mjs.map +1 -1
  261. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.d.mts +2 -0
  262. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.d.mts.map +1 -1
  263. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs +2 -0
  264. package/dist/functional/ternary-result/impl/ternary-result-unwrap-err.mjs.map +1 -1
  265. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.d.mts +2 -0
  266. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.d.mts.map +1 -1
  267. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mjs.map +1 -1
  268. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.d.mts +2 -0
  269. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.d.mts.map +1 -1
  270. package/dist/functional/ternary-result/impl/ternary-result-unwrap-ok.mjs.map +1 -1
  271. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.d.mts +1 -0
  272. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.d.mts.map +1 -1
  273. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs +1 -0
  274. package/dist/functional/ternary-result/impl/ternary-result-unwrap-throw.mjs.map +1 -1
  275. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.d.mts +2 -0
  276. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.d.mts.map +1 -1
  277. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mjs.map +1 -1
  278. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.d.mts +1 -0
  279. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.d.mts.map +1 -1
  280. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs +1 -0
  281. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mjs.map +1 -1
  282. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.d.mts +2 -0
  283. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.d.mts.map +1 -1
  284. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs +2 -0
  285. package/dist/functional/ternary-result/impl/ternary-result-unwrap-warn.mjs.map +1 -1
  286. package/dist/functional/ternary-result/impl/ternary-result-warn.d.mts +1 -1
  287. package/dist/functional/ternary-result/impl/ternary-result-warn.d.mts.map +1 -1
  288. package/dist/functional/ternary-result/impl/ternary-result-warn.mjs.map +1 -1
  289. package/dist/functional/ternary-result/impl/ternary-result-zip.d.mts +4 -0
  290. package/dist/functional/ternary-result/impl/ternary-result-zip.d.mts.map +1 -1
  291. package/dist/functional/ternary-result/impl/ternary-result-zip.mjs +4 -0
  292. package/dist/functional/ternary-result/impl/ternary-result-zip.mjs.map +1 -1
  293. package/dist/globals.d.mts +12 -1
  294. package/dist/guard/has-key.d.mts +6 -3
  295. package/dist/guard/has-key.d.mts.map +1 -1
  296. package/dist/guard/has-key.mjs +2 -2
  297. package/dist/guard/index.mjs +1 -1
  298. package/dist/guard/is-record.d.mts +31 -0
  299. package/dist/guard/is-record.d.mts.map +1 -1
  300. package/dist/guard/is-record.mjs +32 -1
  301. package/dist/guard/is-record.mjs.map +1 -1
  302. package/dist/guard/is-type.d.mts +3 -0
  303. package/dist/guard/is-type.d.mts.map +1 -1
  304. package/dist/guard/is-type.mjs +3 -0
  305. package/dist/guard/is-type.mjs.map +1 -1
  306. package/dist/guard/key-is-in.d.mts +3 -2
  307. package/dist/guard/key-is-in.d.mts.map +1 -1
  308. package/dist/guard/key-is-in.mjs +3 -2
  309. package/dist/guard/key-is-in.mjs.map +1 -1
  310. package/dist/index.mjs +1 -1
  311. package/dist/iterator/range.d.mts +4 -0
  312. package/dist/iterator/range.d.mts.map +1 -1
  313. package/dist/iterator/range.mjs +1 -0
  314. package/dist/iterator/range.mjs.map +1 -1
  315. package/dist/json/json.d.mts +42 -21
  316. package/dist/json/json.d.mts.map +1 -1
  317. package/dist/json/json.mjs +42 -21
  318. package/dist/json/json.mjs.map +1 -1
  319. package/dist/number/branded-types/int.d.mts +33 -19
  320. package/dist/number/branded-types/int.d.mts.map +1 -1
  321. package/dist/number/branded-types/int.mjs +33 -19
  322. package/dist/number/branded-types/int.mjs.map +1 -1
  323. package/dist/number/branded-types/non-zero-safe-int.mjs +2 -2
  324. package/dist/number/branded-types/positive-int.d.mts +34 -20
  325. package/dist/number/branded-types/positive-int.d.mts.map +1 -1
  326. package/dist/number/branded-types/positive-int.mjs +34 -20
  327. package/dist/number/branded-types/positive-int.mjs.map +1 -1
  328. package/dist/number/branded-types/positive-safe-int.d.mts +47 -26
  329. package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
  330. package/dist/number/branded-types/positive-safe-int.mjs +48 -27
  331. package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
  332. package/dist/number/branded-types/safe-int.d.mts +48 -27
  333. package/dist/number/branded-types/safe-int.d.mts.map +1 -1
  334. package/dist/number/branded-types/safe-int.mjs +50 -29
  335. package/dist/number/branded-types/safe-int.mjs.map +1 -1
  336. package/dist/number/branded-types/safe-uint.mjs +1 -1
  337. package/dist/number/branded-types/uint.d.mts +31 -19
  338. package/dist/number/branded-types/uint.d.mts.map +1 -1
  339. package/dist/number/branded-types/uint.mjs +31 -19
  340. package/dist/number/branded-types/uint.mjs.map +1 -1
  341. package/dist/number/num.d.mts +29 -20
  342. package/dist/number/num.d.mts.map +1 -1
  343. package/dist/number/num.mjs +24 -17
  344. package/dist/number/num.mjs.map +1 -1
  345. package/dist/number/refined-number-utils.d.mts +33 -11
  346. package/dist/number/refined-number-utils.d.mts.map +1 -1
  347. package/dist/number/refined-number-utils.mjs +33 -11
  348. package/dist/number/refined-number-utils.mjs.map +1 -1
  349. package/dist/object/object.d.mts +12 -3
  350. package/dist/object/object.d.mts.map +1 -1
  351. package/dist/object/object.mjs +10 -3
  352. package/dist/object/object.mjs.map +1 -1
  353. package/dist/others/map-nullable.mjs.map +1 -1
  354. package/dist/others/tuple.d.mts +14 -3
  355. package/dist/others/tuple.d.mts.map +1 -1
  356. package/dist/others/tuple.mjs +14 -3
  357. package/dist/others/tuple.mjs.map +1 -1
  358. package/dist/others/unknown-to-string.d.mts.map +1 -1
  359. package/dist/others/unknown-to-string.mjs.map +1 -1
  360. package/dist/promise/promise.d.mts +8 -4
  361. package/dist/promise/promise.d.mts.map +1 -1
  362. package/dist/promise/promise.mjs +8 -4
  363. package/dist/promise/promise.mjs.map +1 -1
  364. package/package.json +26 -28
  365. package/src/array/impl/array-utils-creation.mts +20 -0
  366. package/src/array/impl/array-utils-creation.test.mts +72 -1
  367. package/src/array/impl/array-utils-element-access.mts +13 -0
  368. package/src/array/impl/array-utils-element-access.test.mts +36 -15
  369. package/src/array/impl/array-utils-iterators.test.mts +17 -0
  370. package/src/array/impl/array-utils-modification.mts +78 -19
  371. package/src/array/impl/array-utils-modification.test.mts +75 -0
  372. package/src/array/impl/array-utils-overload-type-error.test.mts +19 -0
  373. package/src/array/impl/array-utils-reducing-value.mts +61 -16
  374. package/src/array/impl/array-utils-reducing-value.test.mts +107 -25
  375. package/src/array/impl/array-utils-search.mts +57 -4
  376. package/src/array/impl/array-utils-search.test.mts +61 -10
  377. package/src/array/impl/array-utils-set-op.mts +26 -7
  378. package/src/array/impl/array-utils-set-op.test.mts +129 -13
  379. package/src/array/impl/array-utils-size.mts +5 -2
  380. package/src/array/impl/array-utils-size.test.mts +1 -0
  381. package/src/array/impl/array-utils-slice-clamped.mts +7 -0
  382. package/src/array/impl/array-utils-slice-clamped.test.mts +20 -0
  383. package/src/array/impl/array-utils-slicing.mts +29 -2
  384. package/src/array/impl/array-utils-slicing.test.mts +57 -0
  385. package/src/array/impl/array-utils-transformation.mts +58 -0
  386. package/src/array/impl/array-utils-transformation.test.mts +115 -3
  387. package/src/array/impl/array-utils-validation.mts +41 -18
  388. package/src/array/impl/array-utils-validation.test.mts +176 -78
  389. package/src/array/impl/array.test.mts +18 -6
  390. package/src/collections/imap-mapped.mts +11 -0
  391. package/src/collections/imap-mapped.test.mts +86 -18
  392. package/src/collections/imap.mts +47 -15
  393. package/src/collections/imap.test.mts +137 -31
  394. package/src/collections/iset-mapped.mts +54 -19
  395. package/src/collections/iset-mapped.test.mts +163 -52
  396. package/src/collections/iset.mts +53 -19
  397. package/src/collections/iset.test.mts +323 -130
  398. package/src/collections/queue.mts +78 -25
  399. package/src/collections/queue.test.mts +65 -35
  400. package/src/collections/stack.mts +67 -25
  401. package/src/collections/stack.test.mts +59 -15
  402. package/src/functional/match.mts +17 -1
  403. package/src/functional/match.test.mts +2 -0
  404. package/src/functional/optional/impl/optional-expect-to-be.mts +5 -2
  405. package/src/functional/optional/impl/optional-filter.mts +6 -0
  406. package/src/functional/optional/impl/optional-flat-map.mts +4 -0
  407. package/src/functional/optional/impl/optional-from-nullable.mts +2 -0
  408. package/src/functional/optional/impl/optional-is-none.mts +1 -1
  409. package/src/functional/optional/impl/optional-is-optional.mts +4 -2
  410. package/src/functional/optional/impl/optional-is-some.mts +2 -1
  411. package/src/functional/optional/impl/optional-map.mts +5 -0
  412. package/src/functional/optional/impl/optional-none.mts +4 -2
  413. package/src/functional/optional/impl/optional-or-else.mts +6 -0
  414. package/src/functional/optional/impl/optional-some.mts +5 -3
  415. package/src/functional/optional/impl/optional-to-nullable.mts +4 -2
  416. package/src/functional/optional/impl/optional-unwrap-or.mts +9 -4
  417. package/src/functional/optional/impl/optional-unwrap-throw.mts +2 -1
  418. package/src/functional/optional/impl/optional-unwrap.mts +4 -2
  419. package/src/functional/optional/impl/optional-zip.mts +3 -1
  420. package/src/functional/optional.test.mts +126 -54
  421. package/src/functional/pipe.mts +2 -2
  422. package/src/functional/pipe.test.mts +7 -4
  423. package/src/functional/result/impl/result-err.mts +4 -2
  424. package/src/functional/result/impl/result-expect-to-be.mts +5 -2
  425. package/src/functional/result/impl/result-flat-map.mts +7 -0
  426. package/src/functional/result/impl/result-fold.mts +6 -0
  427. package/src/functional/result/impl/result-from-promise.mts +4 -1
  428. package/src/functional/result/impl/result-from-throwable.mts +5 -1
  429. package/src/functional/result/impl/result-is-err.mts +4 -2
  430. package/src/functional/result/impl/result-is-ok.mts +4 -2
  431. package/src/functional/result/impl/result-is-result.mts +7 -3
  432. package/src/functional/result/impl/result-map-err.mts +5 -0
  433. package/src/functional/result/impl/result-map.mts +6 -0
  434. package/src/functional/result/impl/result-ok.mts +4 -2
  435. package/src/functional/result/impl/result-or-else.mts +6 -0
  436. package/src/functional/result/impl/result-swap.mts +2 -0
  437. package/src/functional/result/impl/result-to-optional.mts +2 -0
  438. package/src/functional/result/impl/result-unwrap-err-or.mts +9 -4
  439. package/src/functional/result/impl/result-unwrap-err-throw.mts +3 -1
  440. package/src/functional/result/impl/result-unwrap-err.mts +3 -2
  441. package/src/functional/result/impl/result-unwrap-ok-or.mts +9 -4
  442. package/src/functional/result/impl/result-unwrap-ok.mts +4 -2
  443. package/src/functional/result/impl/result-unwrap-throw.mts +3 -1
  444. package/src/functional/result/impl/result-zip.mts +3 -1
  445. package/src/functional/result.test.mts +182 -152
  446. package/src/functional/ternary-result/impl/ternary-result-err.mts +3 -2
  447. package/src/functional/ternary-result/impl/ternary-result-expect-to-be.mts +4 -0
  448. package/src/functional/ternary-result/impl/ternary-result-flat-map.mts +7 -0
  449. package/src/functional/ternary-result/impl/ternary-result-fold.mts +5 -0
  450. package/src/functional/ternary-result/impl/ternary-result-from-promise.mts +3 -1
  451. package/src/functional/ternary-result/impl/ternary-result-from-throwable.mts +4 -1
  452. package/src/functional/ternary-result/impl/ternary-result-is-ok.mts +1 -0
  453. package/src/functional/ternary-result/impl/ternary-result-is-ternary-result.mts +7 -3
  454. package/src/functional/ternary-result/impl/ternary-result-is-warn.mts +1 -0
  455. package/src/functional/ternary-result/impl/ternary-result-map-err.mts +6 -0
  456. package/src/functional/ternary-result/impl/ternary-result-map-warn.mts +6 -0
  457. package/src/functional/ternary-result/impl/ternary-result-map.mts +9 -0
  458. package/src/functional/ternary-result/impl/ternary-result-ok.mts +1 -1
  459. package/src/functional/ternary-result/impl/ternary-result-or-else.mts +5 -0
  460. package/src/functional/ternary-result/impl/ternary-result-to-optional.mts +2 -0
  461. package/src/functional/ternary-result/impl/ternary-result-unwrap-err-or.mts +5 -0
  462. package/src/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mts +1 -0
  463. package/src/functional/ternary-result/impl/ternary-result-unwrap-err.mts +2 -0
  464. package/src/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mts +5 -0
  465. package/src/functional/ternary-result/impl/ternary-result-unwrap-ok.mts +3 -0
  466. package/src/functional/ternary-result/impl/ternary-result-unwrap-throw.mts +1 -0
  467. package/src/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mts +5 -0
  468. package/src/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mts +1 -0
  469. package/src/functional/ternary-result/impl/ternary-result-unwrap-warn.mts +2 -0
  470. package/src/functional/ternary-result/impl/ternary-result-warn.mts +4 -1
  471. package/src/functional/ternary-result/impl/ternary-result-zip.mts +4 -0
  472. package/src/functional/ternary-result.test.mts +99 -8
  473. package/src/globals.d.mts +12 -1
  474. package/src/guard/has-key.mts +8 -5
  475. package/src/guard/has-key.test.mts +9 -5
  476. package/src/guard/is-error.test.mts +143 -0
  477. package/src/guard/is-non-empty-string.test.mts +44 -24
  478. package/src/guard/is-non-null-object.test.mts +45 -26
  479. package/src/guard/is-primitive.test.mts +51 -28
  480. package/src/guard/is-record.mts +34 -0
  481. package/src/guard/is-record.test.mts +28 -7
  482. package/src/guard/is-type.mts +3 -0
  483. package/src/guard/is-type.test.mts +285 -155
  484. package/src/guard/key-is-in.mts +3 -2
  485. package/src/guard/key-is-in.test.mts +2 -2
  486. package/src/iterator/range.mts +9 -0
  487. package/src/json/json.mts +50 -21
  488. package/src/json/json.test.mts +224 -176
  489. package/src/number/branded-types/finite-number.test.mts +51 -11
  490. package/src/number/branded-types/int.mts +33 -19
  491. package/src/number/branded-types/int.test.mts +56 -14
  492. package/src/number/branded-types/int16.test.mts +63 -16
  493. package/src/number/branded-types/int32.test.mts +63 -16
  494. package/src/number/branded-types/non-negative-finite-number.test.mts +52 -12
  495. package/src/number/branded-types/non-negative-int16.test.mts +59 -16
  496. package/src/number/branded-types/non-negative-int32.test.mts +59 -16
  497. package/src/number/branded-types/non-zero-finite-number.test.mts +65 -14
  498. package/src/number/branded-types/non-zero-int.test.mts +72 -19
  499. package/src/number/branded-types/non-zero-int16.test.mts +60 -16
  500. package/src/number/branded-types/non-zero-int32.test.mts +60 -16
  501. package/src/number/branded-types/non-zero-safe-int.mts +2 -2
  502. package/src/number/branded-types/non-zero-safe-int.test.mts +85 -23
  503. package/src/number/branded-types/non-zero-uint16.test.mts +53 -16
  504. package/src/number/branded-types/non-zero-uint32.test.mts +53 -16
  505. package/src/number/branded-types/positive-finite-number.test.mts +59 -14
  506. package/src/number/branded-types/positive-int.mts +34 -20
  507. package/src/number/branded-types/positive-int.test.mts +64 -17
  508. package/src/number/branded-types/positive-int16.test.mts +50 -15
  509. package/src/number/branded-types/positive-int32.test.mts +50 -15
  510. package/src/number/branded-types/positive-safe-int.mts +48 -27
  511. package/src/number/branded-types/positive-safe-int.test.mts +68 -19
  512. package/src/number/branded-types/positive-uint16.test.mts +53 -16
  513. package/src/number/branded-types/positive-uint32.test.mts +53 -16
  514. package/src/number/branded-types/safe-int.mts +50 -29
  515. package/src/number/branded-types/safe-int.test.mts +70 -18
  516. package/src/number/branded-types/safe-uint.mts +1 -1
  517. package/src/number/branded-types/safe-uint.test.mts +65 -17
  518. package/src/number/branded-types/uint.mts +31 -19
  519. package/src/number/branded-types/uint.test.mts +58 -15
  520. package/src/number/branded-types/uint16.test.mts +56 -15
  521. package/src/number/branded-types/uint32.test.mts +56 -15
  522. package/src/number/enum/int8.test.mts +7 -1
  523. package/src/number/enum/uint8.test.mts +7 -1
  524. package/src/number/num.mts +32 -21
  525. package/src/number/num.test.mts +88 -26
  526. package/src/number/refined-number-utils.mts +38 -13
  527. package/src/object/object.mts +19 -3
  528. package/src/object/object.test.mts +16 -6
  529. package/src/others/cast-mutable.test.mts +8 -1
  530. package/src/others/cast-readonly.test.mts +21 -4
  531. package/src/others/if-then.test.mts +40 -24
  532. package/src/others/map-nullable.mts +3 -0
  533. package/src/others/map-nullable.test.mts +27 -0
  534. package/src/others/memoize-function.test.mts +41 -0
  535. package/src/others/tuple.mts +14 -3
  536. package/src/others/unknown-to-string.mts +2 -0
  537. package/src/others/unknown-to-string.test.mts +10 -0
  538. package/src/promise/promise.mts +8 -4
  539. package/src/promise/promise.test.mts +8 -13
@@ -16,16 +16,22 @@ const testClamp = (
16
16
  describe('Num test', () => {
17
17
  describe('clamp', () => {
18
18
  testClamp([0, 2], 2.3, 2);
19
+
19
20
  testClamp([0, 2], -0.5, 0);
21
+
20
22
  testClamp([0, 2], 1.5, 1.5);
23
+
21
24
  testClamp([0, 2], Number.NaN, 0);
22
25
 
23
26
  test('should support regular usage with three parameters', () => {
24
27
  expectTypeOf(Num.clamp(15, 0, 10)).toEqualTypeOf<number>();
25
28
 
26
29
  expect(Num.clamp(15, 0, 10)).toBe(10);
30
+
27
31
  expect(Num.clamp(-5, 0, 10)).toBe(0);
32
+
28
33
  expect(Num.clamp(5, 0, 10)).toBe(5);
34
+
29
35
  expect(Num.clamp(Number.NaN, 0, 10)).toBe(0);
30
36
  });
31
37
 
@@ -52,19 +58,25 @@ describe('Num test', () => {
52
58
 
53
59
  // Invalid (non-finite) values return the lower bound
54
60
  expect(clampTo5_15(Number.POSITIVE_INFINITY)).toBe(5);
61
+
55
62
  expect(clampTo5_15(Number.NEGATIVE_INFINITY)).toBe(5);
63
+
56
64
  expect(clampTo5_15(Number.NaN)).toBe(5);
57
65
  });
58
66
 
59
67
  test('should work with negative ranges', () => {
60
68
  expect(Num.clamp(-15, -10, -5)).toBe(-10);
69
+
61
70
  expect(Num.clamp(-7, -10, -5)).toBe(-7);
71
+
62
72
  expect(Num.clamp(0, -10, -5)).toBe(-5);
63
73
 
64
74
  const clampNegative = Num.clamp(-10, -5);
65
75
 
66
76
  expect(clampNegative(-15)).toBe(-10);
77
+
67
78
  expect(clampNegative(-7)).toBe(-7);
79
+
68
80
  expect(clampNegative(0)).toBe(-5);
69
81
  });
70
82
  });
@@ -72,40 +84,49 @@ describe('Num test', () => {
72
84
  describe('isUintInRangeInclusive', () => {
73
85
  test('truthy case', () => {
74
86
  const f = Num.isUintInRangeInclusive(0, 4);
87
+
75
88
  const x: number = 2;
89
+
76
90
  if (f(x)) {
77
91
  expectType<typeof x, 0 | 1 | 2 | 3 | 4>('=');
78
92
  } else {
79
93
  expectType<typeof x, number>('=');
80
94
  }
81
95
 
82
- expect(f(x)).toBe(true);
96
+ assert.isTrue(f(x));
83
97
  });
84
98
 
85
99
  test('falsy case', () => {
86
100
  const f = Num.isUintInRangeInclusive(0, 4);
101
+
87
102
  const x: number = 100;
103
+
88
104
  if (f(x)) {
89
105
  expectType<typeof x, 0 | 1 | 2 | 3 | 4>('=');
90
106
  } else {
91
107
  expectType<typeof x, number>('=');
92
108
  }
93
109
 
94
- expect(f(x)).toBe(false);
110
+ assert.isFalse(f(x));
95
111
  });
96
112
  });
97
113
 
98
114
  describe('from', () => {
99
115
  test('converts string to number', () => {
100
116
  expect(Num.from('123')).toBe(123);
117
+
101
118
  expect(Num.from('123.45')).toBe(123.45);
119
+
102
120
  expect(Num.from('-42')).toBe(-42);
103
121
  });
104
122
 
105
123
  test('handles edge cases', () => {
106
124
  expect(Num.from('')).toBe(0);
125
+
107
126
  expect(Num.from('abc')).toBeNaN();
127
+
108
128
  expect(Num.from(true)).toBe(1);
129
+
109
130
  expect(Num.from(false)).toBe(0);
110
131
  });
111
132
  });
@@ -114,11 +135,15 @@ describe('Num test', () => {
114
135
  test('checks range (lower inclusive, upper exclusive)', () => {
115
136
  const inRange = Num.isInRange(0, 10);
116
137
 
117
- expect(inRange(5)).toBe(true);
118
- expect(inRange(0)).toBe(true); // inclusive lower bound
119
- expect(inRange(10)).toBe(false); // exclusive upper bound
120
- expect(inRange(-1)).toBe(false);
121
- expect(inRange(15)).toBe(false);
138
+ assert.isTrue(inRange(5));
139
+
140
+ assert.isTrue(inRange(0)); // inclusive lower bound
141
+
142
+ assert.isFalse(inRange(10)); // exclusive upper bound
143
+
144
+ assert.isFalse(inRange(-1));
145
+
146
+ assert.isFalse(inRange(15));
122
147
  });
123
148
  });
124
149
 
@@ -126,11 +151,15 @@ describe('Num test', () => {
126
151
  test('checks range (inclusive)', () => {
127
152
  const inRange = Num.isInRangeInclusive(0, 10);
128
153
 
129
- expect(inRange(5)).toBe(true);
130
- expect(inRange(0)).toBe(true); // inclusive
131
- expect(inRange(10)).toBe(true); // inclusive
132
- expect(inRange(-1)).toBe(false);
133
- expect(inRange(15)).toBe(false);
154
+ assert.isTrue(inRange(5));
155
+
156
+ assert.isTrue(inRange(0)); // inclusive
157
+
158
+ assert.isTrue(inRange(10)); // inclusive
159
+
160
+ assert.isFalse(inRange(-1));
161
+
162
+ assert.isFalse(inRange(15));
134
163
  });
135
164
  });
136
165
 
@@ -138,47 +167,60 @@ describe('Num test', () => {
138
167
  test('checks uint range (lower inclusive, upper exclusive)', () => {
139
168
  const inRange = Num.isUintInRange(0, 5);
140
169
 
141
- expect(inRange(2)).toBe(true);
142
- expect(inRange(0)).toBe(true); // inclusive lower bound
143
- expect(inRange(5)).toBe(false); // exclusive upper bound
144
- expect(inRange(-1)).toBe(false);
170
+ assert.isTrue(inRange(2));
171
+
172
+ assert.isTrue(inRange(0)); // inclusive lower bound
173
+
174
+ assert.isFalse(inRange(5)); // exclusive upper bound
175
+
176
+ assert.isFalse(inRange(-1));
145
177
  });
146
178
  });
147
179
 
148
180
  describe('isNonZero', () => {
149
181
  test('type guard for non-zero numbers', () => {
150
182
  const x: number = 5;
183
+
151
184
  if (Num.isNonZero(x)) {
152
185
  expectType<typeof x, NonZeroNumber>('=');
153
186
  }
154
187
 
155
- expect(Num.isNonZero(5)).toBe(true);
156
- expect(Num.isNonZero(-3)).toBe(true);
157
- expect(Num.isNonZero(0)).toBe(false);
188
+ assert.isTrue(Num.isNonZero(5));
189
+
190
+ assert.isTrue(Num.isNonZero(-3));
191
+
192
+ assert.isFalse(Num.isNonZero(0));
158
193
  });
159
194
  });
160
195
 
161
196
  describe('isNonNegative', () => {
162
197
  test('type guard for non-negative numbers', () => {
163
- expect(Num.isNonNegative(5)).toBe(true);
164
- expect(Num.isNonNegative(0)).toBe(true);
165
- expect(Num.isNonNegative(-1)).toBe(false);
198
+ assert.isTrue(Num.isNonNegative(5));
199
+
200
+ assert.isTrue(Num.isNonNegative(0));
201
+
202
+ assert.isFalse(Num.isNonNegative(-1));
166
203
  });
167
204
  });
168
205
 
169
206
  describe('isPositive', () => {
170
207
  test('type guard for positive numbers', () => {
171
- expect(Num.isPositive(5)).toBe(true);
172
- expect(Num.isPositive(0.1)).toBe(true);
173
- expect(Num.isPositive(0)).toBe(false);
174
- expect(Num.isPositive(-1)).toBe(false);
208
+ assert.isTrue(Num.isPositive(5));
209
+
210
+ assert.isTrue(Num.isPositive(0.1));
211
+
212
+ assert.isFalse(Num.isPositive(0));
213
+
214
+ assert.isFalse(Num.isPositive(-1));
175
215
  });
176
216
  });
177
217
 
178
218
  describe('div', () => {
179
219
  test('basic division', () => {
180
220
  expect(Num.div(10, 2)).toBe(5);
221
+
181
222
  expect(Num.div(7, 3)).toBe(7 / 3);
223
+
182
224
  expect(Num.div(-10, 2)).toBe(-5);
183
225
  });
184
226
  });
@@ -186,8 +228,11 @@ describe('Num test', () => {
186
228
  describe('divInt', () => {
187
229
  test('integer division (floor)', () => {
188
230
  expect(Num.divInt(10, 3)).toBe(3);
231
+
189
232
  expect(Num.divInt(7, 2)).toBe(3);
233
+
190
234
  expect(Num.divInt(-7, 2)).toBe(-4); // floor division
235
+
191
236
  expect(Num.divInt(10.7, asNonZeroFiniteNumber(3.2))).toBe(3); // floors both operands
192
237
  });
193
238
  });
@@ -195,8 +240,11 @@ describe('Num test', () => {
195
240
  describe('roundAt', () => {
196
241
  test('rounds to specified decimal places', () => {
197
242
  expect(Num.roundAt(3.141_59, 2)).toBe(3.14);
243
+
198
244
  expect(Num.roundAt(3.141_59, 3)).toBe(3.142);
245
+
199
246
  expect(Num.roundAt(2.555, 2)).toBe(2.56);
247
+
200
248
  expect(Num.roundAt(123.456, 1)).toBe(123.5);
201
249
  });
202
250
  });
@@ -204,9 +252,13 @@ describe('Num test', () => {
204
252
  describe('roundToInt', () => {
205
253
  test('rounds to nearest integer', () => {
206
254
  expect(Num.roundToInt(3.4)).toBe(3);
255
+
207
256
  expect(Num.roundToInt(3.6)).toBe(4);
257
+
208
258
  expect(Num.roundToInt(2.5)).toBe(3);
259
+
209
260
  expect(Num.roundToInt(-2.3)).toBe(-1); // bitwise behavior: -2.3 + 0.5 = -1.8, then floor with bitwise OR
261
+
210
262
  expect(Num.roundToInt(-2.7)).toBe(-2); // bitwise behavior: -2.7 + 0.5 = -2.2, then floor with bitwise OR
211
263
  });
212
264
  });
@@ -216,16 +268,19 @@ describe('Num test', () => {
216
268
  const round2 = Num.round(2);
217
269
 
218
270
  expect(round2(3.141_59)).toBe(3.14);
271
+
219
272
  expect(round2(2.556)).toBe(2.56);
220
273
 
221
274
  const round1 = Num.round(1);
222
275
 
223
276
  expect(round1(3.141_59)).toBe(3.1);
277
+
224
278
  expect(round1(2.56)).toBe(2.6);
225
279
 
226
280
  const round3 = Num.round(3);
227
281
 
228
282
  expect(round3(3.1416)).toBe(3.142);
283
+
229
284
  expect(round3(2.7182)).toBe(2.718);
230
285
  });
231
286
  });
@@ -233,8 +288,11 @@ describe('Num test', () => {
233
288
  describe('mapNaN2Undefined', () => {
234
289
  test('maps NaN to undefined', () => {
235
290
  expect(Num.mapNaN2Undefined(5)).toBe(5);
291
+
236
292
  expect(Num.mapNaN2Undefined(0)).toBe(0);
293
+
237
294
  expect(Num.mapNaN2Undefined(-3.14)).toBe(-3.14);
295
+
238
296
  expect(Num.mapNaN2Undefined(Number.NaN)).toBeUndefined();
239
297
  });
240
298
  });
@@ -242,7 +300,9 @@ describe('Num test', () => {
242
300
  describe('increment', () => {
243
301
  test('increments SmallUint values', () => {
244
302
  expect(Num.increment(0)).toBe(1);
303
+
245
304
  expect(Num.increment(5)).toBe(6);
305
+
246
306
  expect(Num.increment(38)).toBe(39);
247
307
  });
248
308
  });
@@ -250,7 +310,9 @@ describe('Num test', () => {
250
310
  describe('decrement', () => {
251
311
  test('decrements PositiveSmallInt values', () => {
252
312
  expect(Num.decrement(1)).toBe(0);
313
+
253
314
  expect(Num.decrement(5)).toBe(4);
315
+
254
316
  expect(Num.decrement(39)).toBe(38);
255
317
  });
256
318
  });
@@ -36,6 +36,7 @@ export namespace TsDataForgeInternals {
36
36
  if (!is(a)) {
37
37
  throw new TypeError(`Expected ${typeNameInErrorMessage}, got: ${a}`);
38
38
  }
39
+
39
40
  return a;
40
41
  };
41
42
 
@@ -223,8 +224,8 @@ export namespace TsDataForgeInternals {
223
224
  ElementType extends Int,
224
225
  MIN_VALUE extends number,
225
226
  MAX_VALUE extends number,
226
- ElementTypeWithSmallInt extends
227
- WithSmallInt<ElementType> = WithSmallInt<ElementType>,
227
+ ElementTypeWithSmallInt extends WithSmallInt<ElementType> =
228
+ WithSmallInt<ElementType>,
228
229
  > = Readonly<{
229
230
  MIN_VALUE: MIN_VALUE;
230
231
  MAX_VALUE: MAX_VALUE;
@@ -308,20 +309,32 @@ export namespace TsDataForgeInternals {
308
309
  * } as const);
309
310
  *
310
311
  * const six = intOps.castType(6);
312
+ *
311
313
  * const four = intOps.castType(4);
314
+ *
312
315
  * const sum = intOps.add(six, four);
316
+ *
313
317
  * const difference = intOps.sub(six, four);
318
+ *
314
319
  * const product = intOps.mul(six, four);
320
+ *
315
321
  * const quotient = intOps.div(six, intOps.castType(2));
322
+ *
316
323
  * const roundedClamp = intOps.clamp(1.5);
324
+ *
317
325
  * const randomValue = intOps.random();
318
326
  *
319
- * assert(sum === 10);
320
- * assert(difference === 2);
321
- * assert(product === 24);
322
- * assert(quotient === 3);
323
- * assert(roundedClamp === 2);
324
- * assert.ok(Number.isSafeInteger(randomValue));
327
+ * assert.isTrue(sum === 10);
328
+ *
329
+ * assert.isTrue(difference === 2);
330
+ *
331
+ * assert.isTrue(product === 24);
332
+ *
333
+ * assert.isTrue(quotient === 3);
334
+ *
335
+ * assert.isTrue(roundedClamp === 2);
336
+ *
337
+ * assert.isTrue(Number.isSafeInteger(randomValue));
325
338
  * ```
326
339
  *
327
340
  * @template ElementType - The integer branded type
@@ -437,6 +450,7 @@ export namespace TsDataForgeInternals {
437
450
  ): ElementType => {
438
451
  while (true) {
439
452
  const r = randomImpl(min, max);
453
+
440
454
  if (Num.isNonZero(r)) return clampOrCastFn(r);
441
455
  }
442
456
  };
@@ -522,21 +536,31 @@ export namespace TsDataForgeInternals {
522
536
  * } as const);
523
537
  *
524
538
  * const fortyTwo = floatOps.castType(42.5);
539
+ *
525
540
  * const seven = floatOps.castType(7.5);
541
+ *
526
542
  * const sum = floatOps.add(fortyTwo, seven);
543
+ *
527
544
  * const ratio = floatOps.div(sum, floatOps.castType(10));
545
+ *
528
546
  * const clamped = floatOps.clamp(0);
547
+ *
529
548
  * const boundedRandom = floatOps.random(
530
549
  * floatOps.castType(10),
531
550
  * floatOps.castType(20),
532
551
  * );
552
+ *
533
553
  * const nonZeroRandom = floatOps.randomNonZero();
534
554
  *
535
- * assert(sum === 50);
536
- * assert(ratio === 5);
537
- * assert.ok(clamped >= Number.MIN_VALUE);
538
- * assert.ok(boundedRandom >= 10 && boundedRandom <= 20);
539
- * assert.ok(nonZeroRandom > 0);
555
+ * assert.isTrue(sum === 50);
556
+ *
557
+ * assert.isTrue(ratio === 5);
558
+ *
559
+ * assert.isTrue(clamped >= Number.MIN_VALUE);
560
+ *
561
+ * assert.isTrue(boundedRandom >= 10 && boundedRandom <= 20);
562
+ *
563
+ * assert.isTrue(nonZeroRandom > 0);
540
564
  * ```
541
565
  *
542
566
  * @template ElementType - The floating-point branded type
@@ -624,6 +648,7 @@ export namespace TsDataForgeInternals {
624
648
  ): ElementType => {
625
649
  while (true) {
626
650
  const r = random(min, max);
651
+
627
652
  if (isNonZero(r)) return r;
628
653
  }
629
654
  };
@@ -17,24 +17,29 @@ export namespace Obj {
17
17
  *
18
18
  * ```ts
19
19
  * const obj1 = { name: 'Alice', age: 30 };
20
+ *
20
21
  * const obj2 = { name: 'Alice', age: 30 };
22
+ *
21
23
  * const obj3 = { name: 'Alice', age: 31 };
22
24
  *
23
- * assert.ok(Obj.shallowEq(obj1, obj2));
24
- * assert.notOk(Obj.shallowEq(obj1, obj3));
25
+ * assert.isTrue(Obj.shallowEq(obj1, obj2));
26
+ *
27
+ * assert.isFalse(Obj.shallowEq(obj1, obj3));
25
28
  *
26
29
  * // Custom equality function
27
30
  * const obj4 = { value: 1 };
31
+ *
28
32
  * const obj5 = { value: 1.00001 };
29
33
  *
30
34
  * const closeEnough = (a: unknown, b: unknown): boolean => {
31
35
  * if (typeof a === 'number' && typeof b === 'number') {
32
36
  * return Math.abs(a - b) < 0.001;
33
37
  * }
38
+ *
34
39
  * return Object.is(a, b);
35
40
  * };
36
41
  *
37
- * assert.ok(Obj.shallowEq(obj4, obj5, closeEnough));
42
+ * assert.isTrue(Obj.shallowEq(obj4, obj5, closeEnough));
38
43
  * ```
39
44
  *
40
45
  * @param a - The first record to compare
@@ -50,6 +55,7 @@ export namespace Obj {
50
55
  eq: (x: unknown, y: unknown) => boolean = Object.is,
51
56
  ): boolean => {
52
57
  const aEntries = Object.entries(a);
58
+
53
59
  const bEntries = Object.entries(b);
54
60
 
55
61
  if (aEntries.length !== bEntries.length) return false;
@@ -78,6 +84,7 @@ export namespace Obj {
78
84
  *
79
85
  * // Direct usage
80
86
  * const publicInfo = Obj.pick(user, ['id', 'name', 'role']);
87
+ *
81
88
  * assert.deepStrictEqual(publicInfo, {
82
89
  * id: 1,
83
90
  * name: 'Bob',
@@ -122,6 +129,7 @@ export namespace Obj {
122
129
  switch (args.length) {
123
130
  case 2: {
124
131
  const [record, keys] = args;
132
+
125
133
  const keysSet = new Set<keyof R>(keys);
126
134
 
127
135
  return (
@@ -134,6 +142,7 @@ export namespace Obj {
134
142
 
135
143
  case 1: {
136
144
  const [keys] = args;
145
+
137
146
  return (record: R) => pick(record, keys);
138
147
  }
139
148
  }
@@ -161,6 +170,7 @@ export namespace Obj {
161
170
  *
162
171
  * // Direct usage - remove sensitive fields
163
172
  * const safeUser = Obj.omit(user, ['password', 'internalNote']);
173
+ *
164
174
  * assert.deepStrictEqual(safeUser, {
165
175
  * id: 1,
166
176
  * name: 'Charlie',
@@ -206,6 +216,7 @@ export namespace Obj {
206
216
  switch (args.length) {
207
217
  case 2: {
208
218
  const [record, keys] = args;
219
+
209
220
  const keysSet = new Set<keyof R>(keys);
210
221
 
211
222
  return (
@@ -218,12 +229,14 @@ export namespace Obj {
218
229
 
219
230
  case 1: {
220
231
  const [keys] = args;
232
+
221
233
  return <R2 extends UnknownRecord>(record: R2) => {
222
234
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
223
235
  const result = omit(record, keys as readonly (keyof R2)[]) as Omit<
224
236
  R2,
225
237
  ArrayElement<Keys>
226
238
  >;
239
+
227
240
  return result;
228
241
  };
229
242
  }
@@ -253,6 +266,7 @@ export namespace Obj {
253
266
  * ] as const;
254
267
  *
255
268
  * const obj1 = Obj.fromEntries(entries1);
269
+ *
256
270
  * assert.deepStrictEqual(obj1, {
257
271
  * name: 'David',
258
272
  * age: 25,
@@ -266,6 +280,7 @@ export namespace Obj {
266
280
  * ];
267
281
  *
268
282
  * const obj2 = Obj.fromEntries(dynamicEntries);
283
+ *
269
284
  * assert.deepStrictEqual(obj2, { x: 10, y: 20 });
270
285
  * ```
271
286
  *
@@ -355,6 +370,7 @@ export namespace Obj {
355
370
  : TypeEq<Entries['length'], 0> extends true
356
371
  ? K
357
372
  : ValuesOfEntriesImpl<
373
+ // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents
358
374
  K | Entries[0][1],
359
375
  List.Tail<Entries>,
360
376
  Decrement<RemainingNumRecursions>
@@ -4,27 +4,27 @@ import { Obj } from './object.mjs';
4
4
 
5
5
  describe('shallowEq', () => {
6
6
  test('truthy case 1', () => {
7
- expect(Obj.shallowEq({ x: 0 }, { x: 0 })).toBe(true);
7
+ assert.isTrue(Obj.shallowEq({ x: 0 }, { x: 0 }));
8
8
  });
9
9
 
10
10
  test('truthy case 2', () => {
11
- expect(Obj.shallowEq({}, {})).toBe(true);
11
+ assert.isTrue(Obj.shallowEq({}, {}));
12
12
  });
13
13
 
14
14
  test('falsy case 1', () => {
15
- expect(Obj.shallowEq({ x: 0 }, { x: 0, y: 0 })).toBe(false);
15
+ assert.isFalse(Obj.shallowEq({ x: 0 }, { x: 0, y: 0 }));
16
16
  });
17
17
 
18
18
  test('falsy case 2', () => {
19
- expect(Obj.shallowEq({ x: 0, y: 0 }, { x: 0 })).toBe(false);
19
+ assert.isFalse(Obj.shallowEq({ x: 0, y: 0 }, { x: 0 }));
20
20
  });
21
21
 
22
22
  test('falsy case 3', () => {
23
- expect(Obj.shallowEq({ x: 0 }, { y: 0 })).toBe(false);
23
+ assert.isFalse(Obj.shallowEq({ x: 0 }, { y: 0 }));
24
24
  });
25
25
 
26
26
  test('falsy case 4', () => {
27
- expect(Obj.shallowEq({ x: [] }, { y: 0 })).toBe(false);
27
+ assert.isFalse(Obj.shallowEq({ x: [] }, { y: 0 }));
28
28
  });
29
29
  });
30
30
 
@@ -38,6 +38,7 @@ describe('pick', () => {
38
38
 
39
39
  test('pick should support curried form', () => {
40
40
  const pickAB = Obj.pick(['a', 'b']);
41
+
41
42
  const result = pickAB({ a: 1, b: 2, c: 3, d: 4 });
42
43
 
43
44
  assert.deepStrictEqual(result, { a: 1, b: 2 });
@@ -45,6 +46,7 @@ describe('pick', () => {
45
46
 
46
47
  test('pick should work with pipe when curried', () => {
47
48
  const pickIdAndName = Obj.pick(['id', 'name']);
49
+
48
50
  const user = { id: 1, name: 'Alice', email: 'alice@example.com', age: 30 };
49
51
 
50
52
  const result = pipe(user).map(pickIdAndName).value;
@@ -54,6 +56,7 @@ describe('pick', () => {
54
56
 
55
57
  test('pick should handle empty keys in curried form', () => {
56
58
  const pickNone = Obj.pick([]);
59
+
57
60
  const result = pickNone({ a: 1, b: 2 });
58
61
 
59
62
  assert.deepStrictEqual(result, {});
@@ -61,6 +64,7 @@ describe('pick', () => {
61
64
 
62
65
  test('pick should work for records that only partially contain the key in curried form', () => {
63
66
  const pickVisible = Obj.pick(['name', 'age']);
67
+
64
68
  const user = {
65
69
  id: 1,
66
70
  name: 'Alice',
@@ -85,6 +89,7 @@ describe('omit', () => {
85
89
 
86
90
  test('omit should support curried form', () => {
87
91
  const omitC = Obj.omit(['c']);
92
+
88
93
  const result = omitC({ a: 1, b: 2, c: 3, d: 4 });
89
94
 
90
95
  assert.deepStrictEqual(result, { a: 1, b: 2, d: 4 });
@@ -92,6 +97,7 @@ describe('omit', () => {
92
97
 
93
98
  test('omit should work with pipe when curried', () => {
94
99
  const omitSensitive = Obj.omit(['password', 'email']);
100
+
95
101
  const user = {
96
102
  id: 1,
97
103
  name: 'Alice',
@@ -106,7 +112,9 @@ describe('omit', () => {
106
112
 
107
113
  test('omit should handle empty keys in curried form', () => {
108
114
  const omitNone = Obj.omit([]);
115
+
109
116
  const original = { a: 1, b: 2, c: 3 };
117
+
110
118
  const result = omitNone(original);
111
119
 
112
120
  assert.deepStrictEqual(result, original);
@@ -114,6 +122,7 @@ describe('omit', () => {
114
122
 
115
123
  test('should omit multiple keys in curried form', () => {
116
124
  const omitBAndD = Obj.omit(['b', 'd']);
125
+
117
126
  const result = omitBAndD({ a: 1, b: 2, c: 3, d: 4, e: 5 });
118
127
 
119
128
  assert.deepStrictEqual(result, { a: 1, c: 3, e: 5 });
@@ -121,6 +130,7 @@ describe('omit', () => {
121
130
 
122
131
  test('omit should work for records that only partially contain the key in curried form', () => {
123
132
  const omitSensitive = Obj.omit(['password', 'email']);
133
+
124
134
  const user = {
125
135
  id: 1,
126
136
  name: 'Alice',
@@ -4,6 +4,7 @@ import { castDeepMutable, castMutable } from './cast-mutable.mjs';
4
4
  describe(castMutable, () => {
5
5
  test('should allow mutating arrays that were readonly', () => {
6
6
  const readonlyArray: readonly number[] = [1, 2, 3];
7
+
7
8
  const mut_array = castMutable(readonlyArray);
8
9
 
9
10
  expectType<typeof mut_array, number[]>('=');
@@ -11,6 +12,7 @@ describe(castMutable, () => {
11
12
  mut_array.push(4);
12
13
 
13
14
  assert.deepStrictEqual(mut_array, [1, 2, 3, 4]);
15
+
14
16
  assert.deepStrictEqual(readonlyArray, [1, 2, 3, 4]);
15
17
  });
16
18
 
@@ -21,12 +23,15 @@ describe(castMutable, () => {
21
23
  };
22
24
 
23
25
  const mut_user = castMutable(readonlyUser);
26
+
24
27
  expectType<typeof mut_user, { name: string; age: number }>('=');
25
28
 
26
29
  mut_user.age = 31;
30
+
27
31
  mut_user.name = 'Bob';
28
32
 
29
33
  assert.deepStrictEqual(mut_user, { name: 'Bob', age: 31 });
34
+
30
35
  assert.deepStrictEqual(readonlyUser, { name: 'Bob', age: 31 });
31
36
  });
32
37
  });
@@ -62,15 +67,17 @@ describe(castDeepMutable, () => {
62
67
  };
63
68
  };
64
69
 
65
- expectType<typeof mut_state, MutableState>('~=');
70
+ expectType<typeof mut_state, MutableState>('=');
66
71
 
67
72
  mut_state.user.profile.tags.push('editor');
73
+
68
74
  mut_state.user.profile.name = 'Bob';
69
75
 
70
76
  assert.deepStrictEqual(mut_state.user.profile, {
71
77
  name: 'Bob',
72
78
  tags: ['admin', 'owner', 'editor'],
73
79
  });
80
+
74
81
  assert.deepStrictEqual(readonlyState.user.profile.tags, [
75
82
  'admin',
76
83
  'owner',