ts-data-forge 5.0.0 → 5.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 (532) hide show
  1. package/README.md +55 -6
  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 +7 -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 +1 -0
  13. package/dist/array/impl/array-utils-modification.mjs.map +1 -1
  14. package/dist/array/impl/array-utils-reducing-value.d.mts +26 -2
  15. package/dist/array/impl/array-utils-reducing-value.d.mts.map +1 -1
  16. package/dist/array/impl/array-utils-reducing-value.mjs +2 -1
  17. package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -1
  18. package/dist/array/impl/array-utils-search.d.mts +30 -0
  19. package/dist/array/impl/array-utils-search.d.mts.map +1 -1
  20. package/dist/array/impl/array-utils-search.mjs +1 -0
  21. package/dist/array/impl/array-utils-search.mjs.map +1 -1
  22. package/dist/array/impl/array-utils-set-op.d.mts +13 -0
  23. package/dist/array/impl/array-utils-set-op.d.mts.map +1 -1
  24. package/dist/array/impl/array-utils-set-op.mjs +13 -0
  25. package/dist/array/impl/array-utils-set-op.mjs.map +1 -1
  26. package/dist/array/impl/array-utils-size.d.mts +3 -0
  27. package/dist/array/impl/array-utils-size.d.mts.map +1 -1
  28. package/dist/array/impl/array-utils-size.mjs +3 -0
  29. package/dist/array/impl/array-utils-size.mjs.map +1 -1
  30. package/dist/array/impl/array-utils-slice-clamped.d.mts +2 -0
  31. package/dist/array/impl/array-utils-slice-clamped.d.mts.map +1 -1
  32. package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -1
  33. package/dist/array/impl/array-utils-slicing.d.mts +15 -0
  34. package/dist/array/impl/array-utils-slicing.d.mts.map +1 -1
  35. package/dist/array/impl/array-utils-slicing.mjs +7 -0
  36. package/dist/array/impl/array-utils-slicing.mjs.map +1 -1
  37. package/dist/array/impl/array-utils-transformation.d.mts +27 -0
  38. package/dist/array/impl/array-utils-transformation.d.mts.map +1 -1
  39. package/dist/array/impl/array-utils-transformation.mjs +7 -0
  40. package/dist/array/impl/array-utils-transformation.mjs.map +1 -1
  41. package/dist/array/impl/array-utils-validation.d.mts +17 -0
  42. package/dist/array/impl/array-utils-validation.d.mts.map +1 -1
  43. package/dist/array/impl/array-utils-validation.mjs +11 -0
  44. package/dist/array/impl/array-utils-validation.mjs.map +1 -1
  45. package/dist/collections/imap-mapped.mjs +1 -0
  46. package/dist/collections/imap-mapped.mjs.map +1 -1
  47. package/dist/collections/imap.d.mts +20 -0
  48. package/dist/collections/imap.d.mts.map +1 -1
  49. package/dist/collections/imap.mjs +3 -0
  50. package/dist/collections/imap.mjs.map +1 -1
  51. package/dist/collections/iset-mapped.d.mts +27 -0
  52. package/dist/collections/iset-mapped.d.mts.map +1 -1
  53. package/dist/collections/iset-mapped.mjs +7 -0
  54. package/dist/collections/iset-mapped.mjs.map +1 -1
  55. package/dist/collections/iset.d.mts +29 -0
  56. package/dist/collections/iset.d.mts.map +1 -1
  57. package/dist/collections/iset.mjs +7 -0
  58. package/dist/collections/iset.mjs.map +1 -1
  59. package/dist/collections/queue.d.mts +40 -0
  60. package/dist/collections/queue.d.mts.map +1 -1
  61. package/dist/collections/queue.mjs +9 -0
  62. package/dist/collections/queue.mjs.map +1 -1
  63. package/dist/collections/stack.d.mts +35 -0
  64. package/dist/collections/stack.d.mts.map +1 -1
  65. package/dist/collections/stack.mjs +8 -0
  66. package/dist/collections/stack.mjs.map +1 -1
  67. package/dist/entry-point.mjs +1 -1
  68. package/dist/functional/match.d.mts.map +1 -1
  69. package/dist/functional/match.mjs.map +1 -1
  70. package/dist/functional/optional/impl/optional-expect-to-be.d.mts +1 -0
  71. package/dist/functional/optional/impl/optional-expect-to-be.d.mts.map +1 -1
  72. package/dist/functional/optional/impl/optional-expect-to-be.mjs.map +1 -1
  73. package/dist/functional/optional/impl/optional-filter.d.mts +3 -0
  74. package/dist/functional/optional/impl/optional-filter.d.mts.map +1 -1
  75. package/dist/functional/optional/impl/optional-filter.mjs.map +1 -1
  76. package/dist/functional/optional/impl/optional-flat-map.d.mts +2 -0
  77. package/dist/functional/optional/impl/optional-flat-map.d.mts.map +1 -1
  78. package/dist/functional/optional/impl/optional-flat-map.mjs.map +1 -1
  79. package/dist/functional/optional/impl/optional-from-nullable.d.mts +2 -0
  80. package/dist/functional/optional/impl/optional-from-nullable.d.mts.map +1 -1
  81. package/dist/functional/optional/impl/optional-from-nullable.mjs +2 -0
  82. package/dist/functional/optional/impl/optional-from-nullable.mjs.map +1 -1
  83. package/dist/functional/optional/impl/optional-is-optional.d.mts +2 -0
  84. package/dist/functional/optional/impl/optional-is-optional.d.mts.map +1 -1
  85. package/dist/functional/optional/impl/optional-is-optional.mjs +2 -0
  86. package/dist/functional/optional/impl/optional-is-optional.mjs.map +1 -1
  87. package/dist/functional/optional/impl/optional-is-some.d.mts +1 -0
  88. package/dist/functional/optional/impl/optional-is-some.d.mts.map +1 -1
  89. package/dist/functional/optional/impl/optional-is-some.mjs +1 -0
  90. package/dist/functional/optional/impl/optional-is-some.mjs.map +1 -1
  91. package/dist/functional/optional/impl/optional-map.d.mts +2 -0
  92. package/dist/functional/optional/impl/optional-map.d.mts.map +1 -1
  93. package/dist/functional/optional/impl/optional-map.mjs.map +1 -1
  94. package/dist/functional/optional/impl/optional-none.d.mts +2 -0
  95. package/dist/functional/optional/impl/optional-none.d.mts.map +1 -1
  96. package/dist/functional/optional/impl/optional-none.mjs +2 -0
  97. package/dist/functional/optional/impl/optional-none.mjs.map +1 -1
  98. package/dist/functional/optional/impl/optional-or-else.d.mts +4 -0
  99. package/dist/functional/optional/impl/optional-or-else.d.mts.map +1 -1
  100. package/dist/functional/optional/impl/optional-or-else.mjs.map +1 -1
  101. package/dist/functional/optional/impl/optional-some.d.mts +3 -1
  102. package/dist/functional/optional/impl/optional-some.d.mts.map +1 -1
  103. package/dist/functional/optional/impl/optional-some.mjs +2 -0
  104. package/dist/functional/optional/impl/optional-some.mjs.map +1 -1
  105. package/dist/functional/optional/impl/optional-to-nullable.d.mts +2 -0
  106. package/dist/functional/optional/impl/optional-to-nullable.d.mts.map +1 -1
  107. package/dist/functional/optional/impl/optional-to-nullable.mjs +2 -0
  108. package/dist/functional/optional/impl/optional-to-nullable.mjs.map +1 -1
  109. package/dist/functional/optional/impl/optional-unwrap-or.d.mts +3 -0
  110. package/dist/functional/optional/impl/optional-unwrap-or.d.mts.map +1 -1
  111. package/dist/functional/optional/impl/optional-unwrap-or.mjs.map +1 -1
  112. package/dist/functional/optional/impl/optional-unwrap-throw.d.mts +1 -0
  113. package/dist/functional/optional/impl/optional-unwrap-throw.d.mts.map +1 -1
  114. package/dist/functional/optional/impl/optional-unwrap-throw.mjs +1 -0
  115. package/dist/functional/optional/impl/optional-unwrap-throw.mjs.map +1 -1
  116. package/dist/functional/optional/impl/optional-unwrap.d.mts +2 -0
  117. package/dist/functional/optional/impl/optional-unwrap.d.mts.map +1 -1
  118. package/dist/functional/optional/impl/optional-unwrap.mjs.map +1 -1
  119. package/dist/functional/optional/impl/optional-zip.d.mts +2 -0
  120. package/dist/functional/optional/impl/optional-zip.d.mts.map +1 -1
  121. package/dist/functional/optional/impl/optional-zip.mjs +2 -0
  122. package/dist/functional/optional/impl/optional-zip.mjs.map +1 -1
  123. package/dist/functional/result/impl/result-err.d.mts +3 -1
  124. package/dist/functional/result/impl/result-err.d.mts.map +1 -1
  125. package/dist/functional/result/impl/result-err.mjs +2 -0
  126. package/dist/functional/result/impl/result-err.mjs.map +1 -1
  127. package/dist/functional/result/impl/result-expect-to-be.d.mts +1 -0
  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 +3 -0
  137. package/dist/functional/result/impl/result-from-promise.d.mts.map +1 -1
  138. package/dist/functional/result/impl/result-from-promise.mjs +3 -0
  139. package/dist/functional/result/impl/result-from-promise.mjs.map +1 -1
  140. package/dist/functional/result/impl/result-from-throwable.d.mts +2 -0
  141. package/dist/functional/result/impl/result-from-throwable.d.mts.map +1 -1
  142. package/dist/functional/result/impl/result-from-throwable.mjs +4 -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 +2 -0
  145. package/dist/functional/result/impl/result-is-err.d.mts.map +1 -1
  146. package/dist/functional/result/impl/result-is-err.mjs +2 -0
  147. package/dist/functional/result/impl/result-is-err.mjs.map +1 -1
  148. package/dist/functional/result/impl/result-is-ok.d.mts +2 -0
  149. package/dist/functional/result/impl/result-is-ok.d.mts.map +1 -1
  150. package/dist/functional/result/impl/result-is-ok.mjs +2 -0
  151. package/dist/functional/result/impl/result-is-ok.mjs.map +1 -1
  152. package/dist/functional/result/impl/result-is-result.d.mts +4 -0
  153. package/dist/functional/result/impl/result-is-result.d.mts.map +1 -1
  154. package/dist/functional/result/impl/result-is-result.mjs +4 -0
  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 +3 -1
  163. package/dist/functional/result/impl/result-ok.d.mts.map +1 -1
  164. package/dist/functional/result/impl/result-ok.mjs +2 -0
  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 +3 -0
  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 +2 -0
  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 +2 -0
  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 +1 -0
  185. package/dist/functional/result/impl/result-unwrap-err.d.mts.map +1 -1
  186. package/dist/functional/result/impl/result-unwrap-err.mjs +1 -0
  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 +3 -0
  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 +1 -0
  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 +2 -0
  195. package/dist/functional/result/impl/result-unwrap-throw.d.mts.map +1 -1
  196. package/dist/functional/result/impl/result-unwrap-throw.mjs +2 -0
  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 +2 -1
  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 +1 -0
  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 +2 -0
  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 +2 -0
  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 +2 -0
  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 +4 -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 +4 -0
  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 +4 -0
  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 +10 -0
  294. package/dist/guard/index.mjs +1 -1
  295. package/dist/guard/is-record.d.mts +31 -0
  296. package/dist/guard/is-record.d.mts.map +1 -1
  297. package/dist/guard/is-record.mjs +32 -1
  298. package/dist/guard/is-record.mjs.map +1 -1
  299. package/dist/guard/is-type.d.mts +3 -0
  300. package/dist/guard/is-type.d.mts.map +1 -1
  301. package/dist/guard/is-type.mjs +3 -0
  302. package/dist/guard/is-type.mjs.map +1 -1
  303. package/dist/guard/key-is-in.d.mts +1 -0
  304. package/dist/guard/key-is-in.d.mts.map +1 -1
  305. package/dist/guard/key-is-in.mjs +1 -0
  306. package/dist/guard/key-is-in.mjs.map +1 -1
  307. package/dist/index.mjs +1 -1
  308. package/dist/iterator/range.d.mts +4 -0
  309. package/dist/iterator/range.d.mts.map +1 -1
  310. package/dist/iterator/range.mjs +1 -0
  311. package/dist/iterator/range.mjs.map +1 -1
  312. package/dist/json/json.d.mts +21 -0
  313. package/dist/json/json.d.mts.map +1 -1
  314. package/dist/json/json.mjs +22 -0
  315. package/dist/json/json.mjs.map +1 -1
  316. package/dist/number/branded-types/int.d.mts +14 -0
  317. package/dist/number/branded-types/int.d.mts.map +1 -1
  318. package/dist/number/branded-types/int.mjs +14 -0
  319. package/dist/number/branded-types/int.mjs.map +1 -1
  320. package/dist/number/branded-types/non-zero-safe-int.mjs +2 -2
  321. package/dist/number/branded-types/positive-int.d.mts +14 -0
  322. package/dist/number/branded-types/positive-int.d.mts.map +1 -1
  323. package/dist/number/branded-types/positive-int.mjs +14 -0
  324. package/dist/number/branded-types/positive-int.mjs.map +1 -1
  325. package/dist/number/branded-types/positive-safe-int.d.mts +21 -0
  326. package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
  327. package/dist/number/branded-types/positive-safe-int.mjs +22 -1
  328. package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
  329. package/dist/number/branded-types/safe-int.d.mts +21 -0
  330. package/dist/number/branded-types/safe-int.d.mts.map +1 -1
  331. package/dist/number/branded-types/safe-int.mjs +23 -2
  332. package/dist/number/branded-types/safe-int.mjs.map +1 -1
  333. package/dist/number/branded-types/safe-uint.mjs +1 -1
  334. package/dist/number/branded-types/uint.d.mts +12 -0
  335. package/dist/number/branded-types/uint.d.mts.map +1 -1
  336. package/dist/number/branded-types/uint.mjs +12 -0
  337. package/dist/number/branded-types/uint.mjs.map +1 -1
  338. package/dist/number/num.d.mts +9 -0
  339. package/dist/number/num.d.mts.map +1 -1
  340. package/dist/number/num.mjs +8 -1
  341. package/dist/number/num.mjs.map +1 -1
  342. package/dist/number/refined-number-utils.d.mts +22 -0
  343. package/dist/number/refined-number-utils.d.mts.map +1 -1
  344. package/dist/number/refined-number-utils.mjs +23 -0
  345. package/dist/number/refined-number-utils.mjs.map +1 -1
  346. package/dist/object/object.d.mts +9 -0
  347. package/dist/object/object.d.mts.map +1 -1
  348. package/dist/object/object.mjs +7 -0
  349. package/dist/object/object.mjs.map +1 -1
  350. package/dist/others/map-nullable.mjs.map +1 -1
  351. package/dist/others/tuple.d.mts +11 -0
  352. package/dist/others/tuple.d.mts.map +1 -1
  353. package/dist/others/tuple.mjs +11 -0
  354. package/dist/others/tuple.mjs.map +1 -1
  355. package/dist/others/unknown-to-string.d.mts.map +1 -1
  356. package/dist/others/unknown-to-string.mjs +2 -1
  357. package/dist/others/unknown-to-string.mjs.map +1 -1
  358. package/dist/promise/promise.d.mts +4 -0
  359. package/dist/promise/promise.d.mts.map +1 -1
  360. package/dist/promise/promise.mjs +5 -0
  361. package/dist/promise/promise.mjs.map +1 -1
  362. package/package.json +20 -24
  363. package/src/array/impl/array-utils-creation.mts +20 -0
  364. package/src/array/impl/array-utils-creation.test.mts +71 -0
  365. package/src/array/impl/array-utils-element-access.mts +13 -0
  366. package/src/array/impl/array-utils-element-access.test.mts +21 -0
  367. package/src/array/impl/array-utils-iterators.test.mts +17 -0
  368. package/src/array/impl/array-utils-modification.mts +40 -0
  369. package/src/array/impl/array-utils-modification.test.mts +75 -0
  370. package/src/array/impl/array-utils-overload-type-error.test.mts +19 -0
  371. package/src/array/impl/array-utils-reducing-value.mts +55 -9
  372. package/src/array/impl/array-utils-reducing-value.test.mts +90 -0
  373. package/src/array/impl/array-utils-search.mts +53 -0
  374. package/src/array/impl/array-utils-search.test.mts +51 -0
  375. package/src/array/impl/array-utils-set-op.mts +19 -0
  376. package/src/array/impl/array-utils-set-op.test.mts +116 -0
  377. package/src/array/impl/array-utils-size.mts +3 -0
  378. package/src/array/impl/array-utils-size.test.mts +1 -0
  379. package/src/array/impl/array-utils-slice-clamped.mts +7 -0
  380. package/src/array/impl/array-utils-slice-clamped.test.mts +20 -0
  381. package/src/array/impl/array-utils-slicing.mts +27 -0
  382. package/src/array/impl/array-utils-slicing.test.mts +57 -0
  383. package/src/array/impl/array-utils-transformation.mts +58 -0
  384. package/src/array/impl/array-utils-transformation.test.mts +113 -1
  385. package/src/array/impl/array-utils-validation.mts +23 -0
  386. package/src/array/impl/array-utils-validation.test.mts +96 -0
  387. package/src/array/impl/array.test.mts +12 -0
  388. package/src/collections/imap-mapped.mts +11 -0
  389. package/src/collections/imap-mapped.test.mts +70 -0
  390. package/src/collections/imap.mts +32 -0
  391. package/src/collections/imap.test.mts +106 -0
  392. package/src/collections/iset-mapped.mts +35 -0
  393. package/src/collections/iset-mapped.test.mts +111 -0
  394. package/src/collections/iset.mts +34 -0
  395. package/src/collections/iset.test.mts +193 -0
  396. package/src/collections/queue.mts +53 -0
  397. package/src/collections/queue.test.mts +32 -0
  398. package/src/collections/stack.mts +42 -0
  399. package/src/collections/stack.test.mts +44 -0
  400. package/src/functional/match.mts +16 -0
  401. package/src/functional/match.test.mts +2 -0
  402. package/src/functional/optional/impl/optional-expect-to-be.mts +3 -0
  403. package/src/functional/optional/impl/optional-filter.mts +6 -0
  404. package/src/functional/optional/impl/optional-flat-map.mts +4 -0
  405. package/src/functional/optional/impl/optional-from-nullable.mts +2 -0
  406. package/src/functional/optional/impl/optional-is-optional.mts +2 -0
  407. package/src/functional/optional/impl/optional-is-some.mts +1 -0
  408. package/src/functional/optional/impl/optional-map.mts +5 -0
  409. package/src/functional/optional/impl/optional-none.mts +2 -0
  410. package/src/functional/optional/impl/optional-or-else.mts +6 -0
  411. package/src/functional/optional/impl/optional-some.mts +3 -1
  412. package/src/functional/optional/impl/optional-to-nullable.mts +2 -0
  413. package/src/functional/optional/impl/optional-unwrap-or.mts +5 -0
  414. package/src/functional/optional/impl/optional-unwrap-throw.mts +1 -0
  415. package/src/functional/optional/impl/optional-unwrap.mts +2 -0
  416. package/src/functional/optional/impl/optional-zip.mts +2 -0
  417. package/src/functional/optional.test.mts +73 -0
  418. package/src/functional/pipe.test.mts +3 -0
  419. package/src/functional/result/impl/result-err.mts +3 -1
  420. package/src/functional/result/impl/result-expect-to-be.mts +3 -0
  421. package/src/functional/result/impl/result-flat-map.mts +7 -0
  422. package/src/functional/result/impl/result-fold.mts +6 -0
  423. package/src/functional/result/impl/result-from-promise.mts +3 -0
  424. package/src/functional/result/impl/result-from-throwable.mts +6 -1
  425. package/src/functional/result/impl/result-is-err.mts +2 -0
  426. package/src/functional/result/impl/result-is-ok.mts +2 -0
  427. package/src/functional/result/impl/result-is-result.mts +4 -0
  428. package/src/functional/result/impl/result-map-err.mts +5 -0
  429. package/src/functional/result/impl/result-map.mts +6 -0
  430. package/src/functional/result/impl/result-ok.mts +3 -1
  431. package/src/functional/result/impl/result-or-else.mts +6 -0
  432. package/src/functional/result/impl/result-swap.mts +2 -0
  433. package/src/functional/result/impl/result-to-optional.mts +2 -0
  434. package/src/functional/result/impl/result-unwrap-err-or.mts +5 -0
  435. package/src/functional/result/impl/result-unwrap-err-throw.mts +2 -0
  436. package/src/functional/result/impl/result-unwrap-err.mts +1 -0
  437. package/src/functional/result/impl/result-unwrap-ok-or.mts +5 -0
  438. package/src/functional/result/impl/result-unwrap-ok.mts +2 -0
  439. package/src/functional/result/impl/result-unwrap-throw.mts +2 -0
  440. package/src/functional/result/impl/result-zip.mts +3 -1
  441. package/src/functional/result.test.mts +88 -0
  442. package/src/functional/ternary-result/impl/ternary-result-err.mts +2 -1
  443. package/src/functional/ternary-result/impl/ternary-result-expect-to-be.mts +4 -0
  444. package/src/functional/ternary-result/impl/ternary-result-flat-map.mts +7 -0
  445. package/src/functional/ternary-result/impl/ternary-result-fold.mts +5 -0
  446. package/src/functional/ternary-result/impl/ternary-result-from-promise.mts +2 -0
  447. package/src/functional/ternary-result/impl/ternary-result-from-throwable.mts +5 -1
  448. package/src/functional/ternary-result/impl/ternary-result-is-ok.mts +1 -0
  449. package/src/functional/ternary-result/impl/ternary-result-is-ternary-result.mts +4 -0
  450. package/src/functional/ternary-result/impl/ternary-result-is-warn.mts +1 -0
  451. package/src/functional/ternary-result/impl/ternary-result-map-err.mts +6 -0
  452. package/src/functional/ternary-result/impl/ternary-result-map-warn.mts +6 -0
  453. package/src/functional/ternary-result/impl/ternary-result-map.mts +9 -0
  454. package/src/functional/ternary-result/impl/ternary-result-ok.mts +1 -1
  455. package/src/functional/ternary-result/impl/ternary-result-or-else.mts +5 -0
  456. package/src/functional/ternary-result/impl/ternary-result-to-optional.mts +2 -0
  457. package/src/functional/ternary-result/impl/ternary-result-unwrap-err-or.mts +5 -0
  458. package/src/functional/ternary-result/impl/ternary-result-unwrap-err-throw.mts +1 -0
  459. package/src/functional/ternary-result/impl/ternary-result-unwrap-err.mts +2 -0
  460. package/src/functional/ternary-result/impl/ternary-result-unwrap-ok-or.mts +5 -0
  461. package/src/functional/ternary-result/impl/ternary-result-unwrap-ok.mts +3 -0
  462. package/src/functional/ternary-result/impl/ternary-result-unwrap-throw.mts +1 -0
  463. package/src/functional/ternary-result/impl/ternary-result-unwrap-warn-or.mts +5 -0
  464. package/src/functional/ternary-result/impl/ternary-result-unwrap-warn-throw.mts +1 -0
  465. package/src/functional/ternary-result/impl/ternary-result-unwrap-warn.mts +2 -0
  466. package/src/functional/ternary-result/impl/ternary-result-warn.mts +4 -1
  467. package/src/functional/ternary-result/impl/ternary-result-zip.mts +4 -0
  468. package/src/functional/ternary-result.test.mts +91 -0
  469. package/src/globals.d.mts +10 -0
  470. package/src/guard/has-key.test.mts +9 -0
  471. package/src/guard/is-non-empty-string.test.mts +20 -0
  472. package/src/guard/is-non-null-object.test.mts +19 -0
  473. package/src/guard/is-primitive.test.mts +23 -0
  474. package/src/guard/is-record.mts +34 -0
  475. package/src/guard/is-record.test.mts +21 -0
  476. package/src/guard/is-type.mts +3 -0
  477. package/src/guard/is-type.test.mts +134 -0
  478. package/src/guard/key-is-in.mts +1 -0
  479. package/src/iterator/range.mts +9 -0
  480. package/src/json/json.mts +29 -0
  481. package/src/json/json.test.mts +87 -0
  482. package/src/number/branded-types/finite-number.test.mts +38 -0
  483. package/src/number/branded-types/int.mts +14 -0
  484. package/src/number/branded-types/int.test.mts +42 -0
  485. package/src/number/branded-types/int16.test.mts +47 -0
  486. package/src/number/branded-types/int32.test.mts +47 -0
  487. package/src/number/branded-types/non-negative-finite-number.test.mts +40 -0
  488. package/src/number/branded-types/non-negative-int16.test.mts +43 -0
  489. package/src/number/branded-types/non-negative-int32.test.mts +43 -0
  490. package/src/number/branded-types/non-zero-finite-number.test.mts +51 -0
  491. package/src/number/branded-types/non-zero-int.test.mts +53 -0
  492. package/src/number/branded-types/non-zero-int16.test.mts +44 -0
  493. package/src/number/branded-types/non-zero-int32.test.mts +44 -0
  494. package/src/number/branded-types/non-zero-safe-int.mts +2 -2
  495. package/src/number/branded-types/non-zero-safe-int.test.mts +62 -0
  496. package/src/number/branded-types/non-zero-uint16.test.mts +37 -0
  497. package/src/number/branded-types/non-zero-uint32.test.mts +37 -0
  498. package/src/number/branded-types/positive-finite-number.test.mts +45 -0
  499. package/src/number/branded-types/positive-int.mts +14 -0
  500. package/src/number/branded-types/positive-int.test.mts +47 -0
  501. package/src/number/branded-types/positive-int16.test.mts +35 -0
  502. package/src/number/branded-types/positive-int32.test.mts +35 -0
  503. package/src/number/branded-types/positive-safe-int.mts +22 -1
  504. package/src/number/branded-types/positive-safe-int.test.mts +49 -0
  505. package/src/number/branded-types/positive-uint16.test.mts +37 -0
  506. package/src/number/branded-types/positive-uint32.test.mts +37 -0
  507. package/src/number/branded-types/safe-int.mts +23 -2
  508. package/src/number/branded-types/safe-int.test.mts +52 -0
  509. package/src/number/branded-types/safe-uint.mts +1 -1
  510. package/src/number/branded-types/safe-uint.test.mts +48 -0
  511. package/src/number/branded-types/uint.mts +12 -0
  512. package/src/number/branded-types/uint.test.mts +43 -0
  513. package/src/number/branded-types/uint16.test.mts +41 -0
  514. package/src/number/branded-types/uint32.test.mts +41 -0
  515. package/src/number/enum/int8.test.mts +6 -0
  516. package/src/number/enum/uint8.test.mts +6 -0
  517. package/src/number/num.mts +12 -1
  518. package/src/number/num.test.mts +62 -0
  519. package/src/number/refined-number-utils.mts +25 -0
  520. package/src/object/object.mts +15 -0
  521. package/src/object/object.test.mts +10 -0
  522. package/src/others/cast-mutable.test.mts +7 -0
  523. package/src/others/cast-readonly.test.mts +17 -0
  524. package/src/others/if-then.test.mts +16 -0
  525. package/src/others/map-nullable.mts +3 -0
  526. package/src/others/map-nullable.test.mts +27 -0
  527. package/src/others/memoize-function.test.mts +41 -0
  528. package/src/others/tuple.mts +11 -0
  529. package/src/others/unknown-to-string.mts +4 -1
  530. package/src/others/unknown-to-string.test.mts +10 -0
  531. package/src/promise/promise.mts +4 -0
  532. package/src/promise/promise.test.mts +1 -0
@@ -7,32 +7,43 @@ describe('Uint32 test', () => {
7
7
  describe(asUint32, () => {
8
8
  test('accepts valid uint32 values', () => {
9
9
  expect(() => asUint32(0)).not.toThrow();
10
+
10
11
  expect(() => asUint32(1)).not.toThrow();
12
+
11
13
  expect(() => asUint32(4_294_967_295)).not.toThrow(); // 2^32 - 1
14
+
12
15
  expect(() => asUint32(2_147_483_648)).not.toThrow(); // 2^31
13
16
  });
14
17
 
15
18
  test('rejects values outside uint32 range', () => {
16
19
  expect(() => asUint32(4_294_967_296)).toThrow(TypeError); // 2^32
20
+
17
21
  expect(() => asUint32(10_000_000_000)).toThrow(TypeError);
18
22
  });
19
23
 
20
24
  test('rejects negative integers', () => {
21
25
  expect(() => asUint32(-1)).toThrow(TypeError);
26
+
22
27
  expect(() => asUint32(-42)).toThrow(TypeError);
23
28
  });
24
29
 
25
30
  test('rejects non-integers', () => {
26
31
  expect(() => asUint32(Number.NaN)).toThrow(TypeError);
32
+
27
33
  expect(() => asUint32(Number.POSITIVE_INFINITY)).toThrow(TypeError);
34
+
28
35
  expect(() => asUint32(Number.NEGATIVE_INFINITY)).toThrow(TypeError);
36
+
29
37
  expect(() => asUint32(1.2)).toThrow(TypeError);
38
+
30
39
  expect(() => asUint32(-3.4)).toThrow(TypeError);
31
40
  });
32
41
 
33
42
  test('returns the same value for valid inputs', () => {
34
43
  expect(asUint32(5)).toBe(5);
44
+
35
45
  expect(asUint32(0)).toBe(0);
46
+
36
47
  expect(asUint32(4_294_967_295)).toBe(4_294_967_295);
37
48
  });
38
49
 
@@ -55,26 +66,35 @@ describe('Uint32 test', () => {
55
66
  describe(isUint32, () => {
56
67
  test('correctly identifies uint32 values', () => {
57
68
  expect(isUint32(0)).toBe(true);
69
+
58
70
  expect(isUint32(1)).toBe(true);
71
+
59
72
  expect(isUint32(4_294_967_295)).toBe(true);
73
+
60
74
  expect(isUint32(2_147_483_648)).toBe(true);
61
75
  });
62
76
 
63
77
  test('correctly identifies values outside uint32 range', () => {
64
78
  expect(isUint32(4_294_967_296)).toBe(false);
79
+
65
80
  expect(isUint32(10_000_000_000)).toBe(false);
66
81
  });
67
82
 
68
83
  test('correctly identifies negative integers', () => {
69
84
  expect(isUint32(-1)).toBe(false);
85
+
70
86
  expect(isUint32(-42)).toBe(false);
71
87
  });
72
88
 
73
89
  test('correctly identifies non-integers', () => {
74
90
  expect(isUint32(Number.NaN)).toBe(false);
91
+
75
92
  expect(isUint32(Number.POSITIVE_INFINITY)).toBe(false);
93
+
76
94
  expect(isUint32(Number.NEGATIVE_INFINITY)).toBe(false);
95
+
77
96
  expect(isUint32(1.2)).toBe(false);
97
+
78
98
  expect(isUint32(-3.4)).toBe(false);
79
99
  });
80
100
  });
@@ -82,7 +102,9 @@ describe('Uint32 test', () => {
82
102
  describe('Uint32.is', () => {
83
103
  test('same as isUint32 function', () => {
84
104
  expect(Uint32.is(5)).toBe(isUint32(5));
105
+
85
106
  expect(Uint32.is(4_294_967_296)).toBe(isUint32(4_294_967_296));
107
+
86
108
  expect(Uint32.is(-1)).toBe(isUint32(-1));
87
109
  });
88
110
  });
@@ -90,19 +112,25 @@ describe('Uint32 test', () => {
90
112
  describe('constants', () => {
91
113
  test('MIN_VALUE and MAX_VALUE', () => {
92
114
  expect(Uint32.MIN_VALUE).toBe(0);
115
+
93
116
  expect(Uint32.MAX_VALUE).toBe(4_294_967_295);
94
117
  });
95
118
  });
96
119
 
97
120
  describe('mathematical operations', () => {
98
121
  const a = asUint32(1_000_000);
122
+
99
123
  const b = asUint32(500_000);
124
+
100
125
  const c = asUint32(0);
101
126
 
102
127
  test('min and max', () => {
103
128
  expect(Uint32.min(a, b)).toBe(500_000);
129
+
104
130
  expect(Uint32.max(a, b)).toBe(1_000_000);
131
+
105
132
  expect(Uint32.min(a, c)).toBe(0);
133
+
106
134
  expect(Uint32.max(a, c)).toBe(1_000_000);
107
135
  });
108
136
 
@@ -110,12 +138,15 @@ describe('Uint32 test', () => {
110
138
  const result = Uint32.add(asUint32(4_294_967_000), asUint32(1000));
111
139
 
112
140
  expect(result).toBe(4_294_967_295); // clamped to max
141
+
113
142
  expect(Uint32.add(a, b)).toBe(1_500_000);
114
143
  });
115
144
 
116
145
  test('sub (never goes below 0)', () => {
117
146
  expect(Uint32.sub(a, b)).toBe(500_000);
147
+
118
148
  expect(Uint32.sub(b, a)).toBe(0); // clamped to 0
149
+
119
150
  expect(Uint32.sub(c, a)).toBe(0); // clamped to 0
120
151
  });
121
152
 
@@ -123,12 +154,15 @@ describe('Uint32 test', () => {
123
154
  const result = Uint32.mul(asUint32(100_000), asUint32(100_000));
124
155
 
125
156
  expect(result).toBe(4_294_967_295); // clamped to max
157
+
126
158
  expect(Uint32.mul(asUint32(1000), asUint32(5))).toBe(5000);
127
159
  });
128
160
 
129
161
  test('div (floor division, never goes below 0)', () => {
130
162
  expect(Uint32.div(a, asNonZeroUint32(500_000))).toBe(2);
163
+
131
164
  expect(Uint32.div(asUint32(7), asNonZeroUint32(3))).toBe(2);
165
+
132
166
  expect(Uint32.div(asUint32(500_000), asNonZeroUint32(1_000_000))).toBe(0); // floor(500000/1000000) = 0
133
167
  });
134
168
 
@@ -136,6 +170,7 @@ describe('Uint32 test', () => {
136
170
  const result = Uint32.pow(asUint32(10_000), asUint32(3));
137
171
 
138
172
  expect(result).toBe(4_294_967_295); // clamped to max
173
+
139
174
  expect(Uint32.pow(asUint32(2), asUint32(3))).toBe(8);
140
175
  });
141
176
  });
@@ -143,15 +178,20 @@ describe('Uint32 test', () => {
143
178
  describe('random', () => {
144
179
  test('generates uint32 values within specified range', () => {
145
180
  const min = 0;
181
+
146
182
  const max = 20;
147
183
 
148
184
  for (const _ of range(10)) {
149
185
  const result = Uint32.random(min, max);
150
186
 
151
187
  expect(result).toBeGreaterThanOrEqual(min);
188
+
152
189
  expect(result).toBeLessThanOrEqual(max);
190
+
153
191
  expect(Uint32.is(result)).toBe(true);
192
+
154
193
  expect(Number.isInteger(result)).toBe(true);
194
+
155
195
  expect(result).toBeGreaterThanOrEqual(0);
156
196
  }
157
197
  });
@@ -161,6 +201,7 @@ describe('Uint32 test', () => {
161
201
  const result = Uint32.random(0, 30);
162
202
 
163
203
  expect(result).toBeGreaterThanOrEqual(0);
204
+
164
205
  expect(result).toBeLessThanOrEqual(4_294_967_295);
165
206
  }
166
207
  });
@@ -77,6 +77,7 @@ describe('Int8 test', () => {
77
77
  describe('Int8.min', () => {
78
78
  test('should return minimum value', () => {
79
79
  expect(Int8.min(-100, -50, 10)).toBe(-100);
80
+
80
81
  expect(Int8.min(1, 2, 3)).toBe(1);
81
82
  });
82
83
  });
@@ -84,6 +85,7 @@ describe('Int8 test', () => {
84
85
  describe('Int8.max', () => {
85
86
  test('should return maximum value', () => {
86
87
  expect(Int8.max(-100, -50, 10)).toBe(10);
88
+
87
89
  expect(Int8.max(1, 2, 3)).toBe(3);
88
90
  });
89
91
  });
@@ -174,11 +176,15 @@ describe('Int8 test', () => {
174
176
  describe('Int8.random', () => {
175
177
  test('should generate value within range', () => {
176
178
  const min = -10;
179
+
177
180
  const max = 10;
181
+
178
182
  const result = Int8.random(min, max);
179
183
 
180
184
  expect(result).toBeGreaterThanOrEqual(min);
185
+
181
186
  expect(result).toBeLessThanOrEqual(max);
187
+
182
188
  expect(Number.isInteger(result)).toBe(true);
183
189
  });
184
190
  });
@@ -77,6 +77,7 @@ describe('Uint8 test', () => {
77
77
  describe('Uint8.min', () => {
78
78
  test('should return minimum value', () => {
79
79
  expect(Uint8.min(100, 50, 10)).toBe(10);
80
+
80
81
  expect(Uint8.min(1, 2, 3)).toBe(1);
81
82
  });
82
83
  });
@@ -84,6 +85,7 @@ describe('Uint8 test', () => {
84
85
  describe('Uint8.max', () => {
85
86
  test('should return maximum value', () => {
86
87
  expect(Uint8.max(100, 50, 10)).toBe(100);
88
+
87
89
  expect(Uint8.max(1, 2, 3)).toBe(3);
88
90
  });
89
91
  });
@@ -156,11 +158,15 @@ describe('Uint8 test', () => {
156
158
  describe('Uint8.random', () => {
157
159
  test('should generate value within range', () => {
158
160
  const min = 10;
161
+
159
162
  const max = 50;
163
+
160
164
  const result = Uint8.random(min, max);
161
165
 
162
166
  expect(result).toBeGreaterThanOrEqual(min);
167
+
163
168
  expect(result).toBeLessThanOrEqual(max);
169
+
164
170
  expect(Number.isInteger(result)).toBe(true);
165
171
  });
166
172
  });
@@ -50,6 +50,7 @@ export namespace Num {
50
50
  * // Safe to divide now that we know value is non-zero
51
51
  * // eslint-disable-next-line total-functions/no-partial-division
52
52
  * const inverted = 1 / value;
53
+ *
53
54
  * assert(inverted === 0.2);
54
55
  * }
55
56
  *
@@ -81,6 +82,7 @@ export namespace Num {
81
82
  *
82
83
  * if (Num.isNonNegative(candidate)) {
83
84
  * const index: number = candidate;
85
+ *
84
86
  * assert(index === 10);
85
87
  * }
86
88
  *
@@ -134,6 +136,7 @@ export namespace Num {
134
136
  * const isGrade = Num.isInRange(0, 100);
135
137
  *
136
138
  * assert.ok(isGrade(50));
139
+ *
137
140
  * assert.notOk(isGrade(100));
138
141
  * ```
139
142
  *
@@ -157,6 +160,7 @@ export namespace Num {
157
160
  * const isPercentage = Num.isInRangeInclusive(0, 100);
158
161
  *
159
162
  * assert.ok(isPercentage(100));
163
+ *
160
164
  * assert.notOk(isPercentage(-1));
161
165
  * ```
162
166
  *
@@ -216,7 +220,9 @@ export namespace Num {
216
220
  * const indexGuard = Num.isUintInRange(0, 5);
217
221
  *
218
222
  * assert.ok(indexGuard(3));
223
+ *
219
224
  * assert.notOk(indexGuard(5));
225
+ *
220
226
  * assert.notOk(indexGuard(-1));
221
227
  * ```
222
228
  *
@@ -250,6 +256,7 @@ export namespace Num {
250
256
  * const inclusiveGuard = Num.isUintInRangeInclusive(0, 5);
251
257
  *
252
258
  * assert.ok(inclusiveGuard(5));
259
+ *
253
260
  * assert.notOk(inclusiveGuard(6));
254
261
  * ```
255
262
  *
@@ -278,11 +285,13 @@ export namespace Num {
278
285
  *
279
286
  * ```ts
280
287
  * assert(Num.clamp(150, 0, 100) === 100);
288
+ *
281
289
  * assert(Num.clamp(-50, 0, 100) === 0);
282
290
  *
283
291
  * const clampToPercentage = Num.clamp(0, 100);
284
292
  *
285
293
  * assert(clampToPercentage(75) === 75);
294
+ *
286
295
  * assert(clampToPercentage(150) === 100);
287
296
  * ```
288
297
  */
@@ -306,6 +315,7 @@ export namespace Num {
306
315
  switch (args.length) {
307
316
  case 3: {
308
317
  const [target, lowerBound, upperBound] = args;
318
+
309
319
  return !Number.isFinite(target)
310
320
  ? lowerBound
311
321
  : Math.max(lowerBound, Math.min(upperBound, target));
@@ -313,6 +323,7 @@ export namespace Num {
313
323
 
314
324
  case 2: {
315
325
  const [lowerBound, upperBound] = args;
326
+
316
327
  return (target: number): number =>
317
328
  clamp(target, lowerBound, upperBound);
318
329
  }
@@ -385,7 +396,7 @@ export namespace Num {
385
396
  * @returns The rounded integer as an Int branded type
386
397
  */
387
398
  // eslint-disable-next-line total-functions/no-unsafe-type-assertion
388
- export const roundToInt = (num: number): Int => (0 | (num + 0.5)) as Int;
399
+ export const roundToInt = (num: number): Int => Math.trunc(num + 0.5) as Int;
389
400
 
390
401
  /**
391
402
  * Creates a reusable rounding function with a fixed precision.
@@ -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,7 +84,9 @@ 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 {
@@ -84,7 +98,9 @@ describe('Num test', () => {
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 {
@@ -98,14 +114,19 @@ describe('Num test', () => {
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
  });
@@ -115,9 +136,13 @@ describe('Num test', () => {
115
136
  const inRange = Num.isInRange(0, 10);
116
137
 
117
138
  expect(inRange(5)).toBe(true);
139
+
118
140
  expect(inRange(0)).toBe(true); // inclusive lower bound
141
+
119
142
  expect(inRange(10)).toBe(false); // exclusive upper bound
143
+
120
144
  expect(inRange(-1)).toBe(false);
145
+
121
146
  expect(inRange(15)).toBe(false);
122
147
  });
123
148
  });
@@ -127,9 +152,13 @@ describe('Num test', () => {
127
152
  const inRange = Num.isInRangeInclusive(0, 10);
128
153
 
129
154
  expect(inRange(5)).toBe(true);
155
+
130
156
  expect(inRange(0)).toBe(true); // inclusive
157
+
131
158
  expect(inRange(10)).toBe(true); // inclusive
159
+
132
160
  expect(inRange(-1)).toBe(false);
161
+
133
162
  expect(inRange(15)).toBe(false);
134
163
  });
135
164
  });
@@ -139,8 +168,11 @@ describe('Num test', () => {
139
168
  const inRange = Num.isUintInRange(0, 5);
140
169
 
141
170
  expect(inRange(2)).toBe(true);
171
+
142
172
  expect(inRange(0)).toBe(true); // inclusive lower bound
173
+
143
174
  expect(inRange(5)).toBe(false); // exclusive upper bound
175
+
144
176
  expect(inRange(-1)).toBe(false);
145
177
  });
146
178
  });
@@ -148,12 +180,15 @@ describe('Num test', () => {
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
188
  expect(Num.isNonZero(5)).toBe(true);
189
+
156
190
  expect(Num.isNonZero(-3)).toBe(true);
191
+
157
192
  expect(Num.isNonZero(0)).toBe(false);
158
193
  });
159
194
  });
@@ -161,7 +196,9 @@ describe('Num test', () => {
161
196
  describe('isNonNegative', () => {
162
197
  test('type guard for non-negative numbers', () => {
163
198
  expect(Num.isNonNegative(5)).toBe(true);
199
+
164
200
  expect(Num.isNonNegative(0)).toBe(true);
201
+
165
202
  expect(Num.isNonNegative(-1)).toBe(false);
166
203
  });
167
204
  });
@@ -169,8 +206,11 @@ describe('Num test', () => {
169
206
  describe('isPositive', () => {
170
207
  test('type guard for positive numbers', () => {
171
208
  expect(Num.isPositive(5)).toBe(true);
209
+
172
210
  expect(Num.isPositive(0.1)).toBe(true);
211
+
173
212
  expect(Num.isPositive(0)).toBe(false);
213
+
174
214
  expect(Num.isPositive(-1)).toBe(false);
175
215
  });
176
216
  });
@@ -178,7 +218,9 @@ describe('Num test', () => {
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
 
@@ -308,19 +309,31 @@ 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
327
  * assert(sum === 10);
328
+ *
320
329
  * assert(difference === 2);
330
+ *
321
331
  * assert(product === 24);
332
+ *
322
333
  * assert(quotient === 3);
334
+ *
323
335
  * assert(roundedClamp === 2);
336
+ *
324
337
  * assert.ok(Number.isSafeInteger(randomValue));
325
338
  * ```
326
339
  *
@@ -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,20 +536,30 @@ 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
555
  * assert(sum === 50);
556
+ *
536
557
  * assert(ratio === 5);
558
+ *
537
559
  * assert.ok(clamped >= Number.MIN_VALUE);
560
+ *
538
561
  * assert.ok(boundedRandom >= 10 && boundedRandom <= 20);
562
+ *
539
563
  * assert.ok(nonZeroRandom > 0);
540
564
  * ```
541
565
  *
@@ -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
  };