ts-data-forge 14.10.1 → 14.11.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 (437) hide show
  1. package/README.md +34 -1
  2. package/dist/array/impl/array-utils-reducing-value.d.mts.map +1 -1
  3. package/dist/array/impl/array-utils-reducing-value.mjs +4 -3
  4. package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -1
  5. package/dist/array/impl/array-utils-slice-clamped.mjs +1 -1
  6. package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -1
  7. package/dist/array/impl/array-utils-slicing.d.mts.map +1 -1
  8. package/dist/array/impl/array-utils-slicing.mjs +10 -3
  9. package/dist/array/impl/array-utils-slicing.mjs.map +1 -1
  10. package/dist/array/impl/array-utils-transformation.d.mts.map +1 -1
  11. package/dist/array/impl/array-utils-transformation.mjs +3 -3
  12. package/dist/array/impl/array-utils-transformation.mjs.map +1 -1
  13. package/dist/array/impl/array-utils-validation.d.mts.map +1 -1
  14. package/dist/array/impl/array-utils-validation.mjs +2 -1
  15. package/dist/array/impl/array-utils-validation.mjs.map +1 -1
  16. package/dist/built-in-tag.d.mts +22 -0
  17. package/dist/built-in-tag.d.mts.map +1 -0
  18. package/dist/built-in-tag.mjs +34 -0
  19. package/dist/built-in-tag.mjs.map +1 -0
  20. package/dist/collections/imap-mapped.mjs +6 -3
  21. package/dist/collections/imap-mapped.mjs.map +1 -1
  22. package/dist/collections/imap.mjs +6 -3
  23. package/dist/collections/imap.mjs.map +1 -1
  24. package/dist/collections/stack.mjs +3 -3
  25. package/dist/collections/stack.mjs.map +1 -1
  26. package/dist/iterator/range.d.mts +1 -1
  27. package/dist/iterator/range.d.mts.map +1 -1
  28. package/dist/iterator/range.mjs +5 -2
  29. package/dist/iterator/range.mjs.map +1 -1
  30. package/dist/json/json.d.mts.map +1 -1
  31. package/dist/json/json.mjs +13 -47
  32. package/dist/json/json.mjs.map +1 -1
  33. package/dist/number/branded-types/finite-number.d.mts +4 -9
  34. package/dist/number/branded-types/finite-number.d.mts.map +1 -1
  35. package/dist/number/branded-types/finite-number.mjs +9 -9
  36. package/dist/number/branded-types/finite-number.mjs.map +1 -1
  37. package/dist/number/branded-types/int.d.mts +3 -9
  38. package/dist/number/branded-types/int.d.mts.map +1 -1
  39. package/dist/number/branded-types/int.mjs +9 -10
  40. package/dist/number/branded-types/int.mjs.map +1 -1
  41. package/dist/number/branded-types/int16.d.mts +3 -18
  42. package/dist/number/branded-types/int16.d.mts.map +1 -1
  43. package/dist/number/branded-types/int16.mjs +9 -10
  44. package/dist/number/branded-types/int16.mjs.map +1 -1
  45. package/dist/number/branded-types/int32.d.mts +3 -14
  46. package/dist/number/branded-types/int32.d.mts.map +1 -1
  47. package/dist/number/branded-types/int32.mjs +9 -10
  48. package/dist/number/branded-types/int32.mjs.map +1 -1
  49. package/dist/number/branded-types/negative-finite-number.d.mts +4 -16
  50. package/dist/number/branded-types/negative-finite-number.d.mts.map +1 -1
  51. package/dist/number/branded-types/negative-finite-number.mjs +9 -10
  52. package/dist/number/branded-types/negative-finite-number.mjs.map +1 -1
  53. package/dist/number/branded-types/negative-int.d.mts +3 -16
  54. package/dist/number/branded-types/negative-int.d.mts.map +1 -1
  55. package/dist/number/branded-types/negative-int.mjs +9 -11
  56. package/dist/number/branded-types/negative-int.mjs.map +1 -1
  57. package/dist/number/branded-types/negative-safe-int.d.mts +3 -17
  58. package/dist/number/branded-types/negative-safe-int.d.mts.map +1 -1
  59. package/dist/number/branded-types/negative-safe-int.mjs +9 -11
  60. package/dist/number/branded-types/negative-safe-int.mjs.map +1 -1
  61. package/dist/number/branded-types/non-negative-finite-number.d.mts +4 -14
  62. package/dist/number/branded-types/non-negative-finite-number.d.mts.map +1 -1
  63. package/dist/number/branded-types/non-negative-finite-number.mjs +9 -9
  64. package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
  65. package/dist/number/branded-types/non-negative-int16.d.mts +3 -19
  66. package/dist/number/branded-types/non-negative-int16.d.mts.map +1 -1
  67. package/dist/number/branded-types/non-negative-int16.mjs +9 -10
  68. package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
  69. package/dist/number/branded-types/non-negative-int32.d.mts +3 -17
  70. package/dist/number/branded-types/non-negative-int32.d.mts.map +1 -1
  71. package/dist/number/branded-types/non-negative-int32.mjs +9 -10
  72. package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
  73. package/dist/number/branded-types/non-positive-finite-number.d.mts +4 -14
  74. package/dist/number/branded-types/non-positive-finite-number.d.mts.map +1 -1
  75. package/dist/number/branded-types/non-positive-finite-number.mjs +9 -9
  76. package/dist/number/branded-types/non-positive-finite-number.mjs.map +1 -1
  77. package/dist/number/branded-types/non-positive-int.d.mts +3 -14
  78. package/dist/number/branded-types/non-positive-int.d.mts.map +1 -1
  79. package/dist/number/branded-types/non-positive-int.mjs +9 -10
  80. package/dist/number/branded-types/non-positive-int.mjs.map +1 -1
  81. package/dist/number/branded-types/non-positive-safe-int.d.mts +3 -15
  82. package/dist/number/branded-types/non-positive-safe-int.d.mts.map +1 -1
  83. package/dist/number/branded-types/non-positive-safe-int.mjs +9 -10
  84. package/dist/number/branded-types/non-positive-safe-int.mjs.map +1 -1
  85. package/dist/number/branded-types/non-zero-finite-number.d.mts +4 -10
  86. package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -1
  87. package/dist/number/branded-types/non-zero-finite-number.mjs +9 -10
  88. package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
  89. package/dist/number/branded-types/non-zero-int.d.mts +3 -10
  90. package/dist/number/branded-types/non-zero-int.d.mts.map +1 -1
  91. package/dist/number/branded-types/non-zero-int.mjs +9 -11
  92. package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
  93. package/dist/number/branded-types/non-zero-int16.d.mts +3 -19
  94. package/dist/number/branded-types/non-zero-int16.d.mts.map +1 -1
  95. package/dist/number/branded-types/non-zero-int16.mjs +12 -11
  96. package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
  97. package/dist/number/branded-types/non-zero-int32.d.mts +3 -15
  98. package/dist/number/branded-types/non-zero-int32.d.mts.map +1 -1
  99. package/dist/number/branded-types/non-zero-int32.mjs +12 -11
  100. package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
  101. package/dist/number/branded-types/non-zero-safe-int.d.mts +6 -14
  102. package/dist/number/branded-types/non-zero-safe-int.d.mts.map +1 -1
  103. package/dist/number/branded-types/non-zero-safe-int.mjs +9 -13
  104. package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
  105. package/dist/number/branded-types/non-zero-uint16.d.mts +3 -20
  106. package/dist/number/branded-types/non-zero-uint16.d.mts.map +1 -1
  107. package/dist/number/branded-types/non-zero-uint16.mjs +9 -11
  108. package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
  109. package/dist/number/branded-types/non-zero-uint32.d.mts +3 -18
  110. package/dist/number/branded-types/non-zero-uint32.d.mts.map +1 -1
  111. package/dist/number/branded-types/non-zero-uint32.mjs +9 -11
  112. package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
  113. package/dist/number/branded-types/positive-finite-number.d.mts +4 -16
  114. package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -1
  115. package/dist/number/branded-types/positive-finite-number.mjs +9 -9
  116. package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
  117. package/dist/number/branded-types/positive-int.d.mts +3 -16
  118. package/dist/number/branded-types/positive-int.d.mts.map +1 -1
  119. package/dist/number/branded-types/positive-int.mjs +9 -10
  120. package/dist/number/branded-types/positive-int.mjs.map +1 -1
  121. package/dist/number/branded-types/positive-int16.d.mts +3 -21
  122. package/dist/number/branded-types/positive-int16.d.mts.map +1 -1
  123. package/dist/number/branded-types/positive-int16.mjs +9 -10
  124. package/dist/number/branded-types/positive-int16.mjs.map +1 -1
  125. package/dist/number/branded-types/positive-int32.d.mts +3 -19
  126. package/dist/number/branded-types/positive-int32.d.mts.map +1 -1
  127. package/dist/number/branded-types/positive-int32.mjs +9 -10
  128. package/dist/number/branded-types/positive-int32.mjs.map +1 -1
  129. package/dist/number/branded-types/positive-safe-int.d.mts +5 -19
  130. package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
  131. package/dist/number/branded-types/positive-safe-int.mjs +9 -11
  132. package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
  133. package/dist/number/branded-types/positive-uint16.d.mts +3 -20
  134. package/dist/number/branded-types/positive-uint16.d.mts.map +1 -1
  135. package/dist/number/branded-types/positive-uint16.mjs +9 -10
  136. package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
  137. package/dist/number/branded-types/positive-uint32.d.mts +3 -18
  138. package/dist/number/branded-types/positive-uint32.d.mts.map +1 -1
  139. package/dist/number/branded-types/positive-uint32.mjs +9 -10
  140. package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
  141. package/dist/number/branded-types/safe-int.d.mts +5 -12
  142. package/dist/number/branded-types/safe-int.d.mts.map +1 -1
  143. package/dist/number/branded-types/safe-int.mjs +9 -12
  144. package/dist/number/branded-types/safe-int.mjs.map +1 -1
  145. package/dist/number/branded-types/safe-uint.d.mts +3 -15
  146. package/dist/number/branded-types/safe-uint.d.mts.map +1 -1
  147. package/dist/number/branded-types/safe-uint.mjs +9 -11
  148. package/dist/number/branded-types/safe-uint.mjs.map +1 -1
  149. package/dist/number/branded-types/uint.d.mts +3 -14
  150. package/dist/number/branded-types/uint.d.mts.map +1 -1
  151. package/dist/number/branded-types/uint.mjs +9 -10
  152. package/dist/number/branded-types/uint.mjs.map +1 -1
  153. package/dist/number/branded-types/uint16.d.mts +3 -18
  154. package/dist/number/branded-types/uint16.d.mts.map +1 -1
  155. package/dist/number/branded-types/uint16.mjs +9 -10
  156. package/dist/number/branded-types/uint16.mjs.map +1 -1
  157. package/dist/number/branded-types/uint32.d.mts +3 -16
  158. package/dist/number/branded-types/uint32.d.mts.map +1 -1
  159. package/dist/number/branded-types/uint32.mjs +9 -10
  160. package/dist/number/branded-types/uint32.mjs.map +1 -1
  161. package/dist/number/enum/int8.d.mts +13 -15
  162. package/dist/number/enum/int8.d.mts.map +1 -1
  163. package/dist/number/enum/int8.mjs +20 -25
  164. package/dist/number/enum/int8.mjs.map +1 -1
  165. package/dist/number/enum/uint8.d.mts +12 -14
  166. package/dist/number/enum/uint8.d.mts.map +1 -1
  167. package/dist/number/enum/uint8.mjs +18 -23
  168. package/dist/number/enum/uint8.mjs.map +1 -1
  169. package/dist/number/index.d.mts +1 -1
  170. package/dist/number/index.d.mts.map +1 -1
  171. package/dist/number/index.mjs +1 -1
  172. package/dist/number/index.mjs.map +1 -1
  173. package/dist/number/num/impl/index.d.mts +2 -0
  174. package/dist/number/num/impl/index.d.mts.map +1 -0
  175. package/dist/number/num/impl/index.mjs +2 -0
  176. package/dist/number/num/impl/index.mjs.map +1 -0
  177. package/dist/number/num/impl/num.d.mts +531 -0
  178. package/dist/number/num/impl/num.d.mts.map +1 -0
  179. package/dist/number/num/impl/num.mjs +542 -0
  180. package/dist/number/num/impl/num.mjs.map +1 -0
  181. package/dist/number/num/index.d.mts +17 -0
  182. package/dist/number/num/index.d.mts.map +1 -0
  183. package/dist/number/num/index.mjs +17 -0
  184. package/dist/number/num/index.mjs.map +1 -0
  185. package/dist/number/operators/finite-number.d.mts +16 -0
  186. package/dist/number/operators/finite-number.d.mts.map +1 -0
  187. package/dist/number/operators/finite-number.mjs +7 -0
  188. package/dist/number/operators/finite-number.mjs.map +1 -0
  189. package/dist/number/operators/int.d.mts +16 -0
  190. package/dist/number/operators/int.d.mts.map +1 -0
  191. package/dist/number/operators/int.mjs +8 -0
  192. package/dist/number/operators/int.mjs.map +1 -0
  193. package/dist/number/operators/int16.d.mts +25 -0
  194. package/dist/number/operators/int16.d.mts.map +1 -0
  195. package/dist/number/operators/int16.mjs +8 -0
  196. package/dist/number/operators/int16.mjs.map +1 -0
  197. package/dist/number/operators/int32.d.mts +21 -0
  198. package/dist/number/operators/int32.d.mts.map +1 -0
  199. package/dist/number/operators/int32.mjs +8 -0
  200. package/dist/number/operators/int32.mjs.map +1 -0
  201. package/dist/number/operators/int8.d.mts +24 -0
  202. package/dist/number/operators/int8.d.mts.map +1 -0
  203. package/dist/number/operators/int8.mjs +8 -0
  204. package/dist/number/operators/int8.mjs.map +1 -0
  205. package/dist/number/operators/negative-finite-number.d.mts +11 -0
  206. package/dist/number/operators/negative-finite-number.d.mts.map +1 -0
  207. package/dist/number/operators/negative-finite-number.mjs +8 -0
  208. package/dist/number/operators/negative-finite-number.mjs.map +1 -0
  209. package/dist/number/operators/negative-int.d.mts +10 -0
  210. package/dist/number/operators/negative-int.d.mts.map +1 -0
  211. package/dist/number/operators/negative-int.mjs +9 -0
  212. package/dist/number/operators/negative-int.mjs.map +1 -0
  213. package/dist/number/operators/negative-safe-int.d.mts +10 -0
  214. package/dist/number/operators/negative-safe-int.d.mts.map +1 -0
  215. package/dist/number/operators/negative-safe-int.mjs +9 -0
  216. package/dist/number/operators/negative-safe-int.mjs.map +1 -0
  217. package/dist/number/operators/non-negative-finite-number.d.mts +22 -0
  218. package/dist/number/operators/non-negative-finite-number.d.mts.map +1 -0
  219. package/dist/number/operators/non-negative-finite-number.mjs +7 -0
  220. package/dist/number/operators/non-negative-finite-number.mjs.map +1 -0
  221. package/dist/number/operators/non-negative-int16.d.mts +27 -0
  222. package/dist/number/operators/non-negative-int16.d.mts.map +1 -0
  223. package/dist/number/operators/non-negative-int16.mjs +8 -0
  224. package/dist/number/operators/non-negative-int16.mjs.map +1 -0
  225. package/dist/number/operators/non-negative-int32.d.mts +25 -0
  226. package/dist/number/operators/non-negative-int32.d.mts.map +1 -0
  227. package/dist/number/operators/non-negative-int32.mjs +8 -0
  228. package/dist/number/operators/non-negative-int32.mjs.map +1 -0
  229. package/dist/number/operators/non-positive-finite-number.d.mts +11 -0
  230. package/dist/number/operators/non-positive-finite-number.d.mts.map +1 -0
  231. package/dist/number/operators/non-positive-finite-number.mjs +7 -0
  232. package/dist/number/operators/non-positive-finite-number.mjs.map +1 -0
  233. package/dist/number/operators/non-positive-int.d.mts +10 -0
  234. package/dist/number/operators/non-positive-int.d.mts.map +1 -0
  235. package/dist/number/operators/non-positive-int.mjs +8 -0
  236. package/dist/number/operators/non-positive-int.mjs.map +1 -0
  237. package/dist/number/operators/non-positive-safe-int.d.mts +10 -0
  238. package/dist/number/operators/non-positive-safe-int.d.mts.map +1 -0
  239. package/dist/number/operators/non-positive-safe-int.mjs +8 -0
  240. package/dist/number/operators/non-positive-safe-int.mjs.map +1 -0
  241. package/dist/number/operators/non-zero-finite-number.d.mts +16 -0
  242. package/dist/number/operators/non-zero-finite-number.d.mts.map +1 -0
  243. package/dist/number/operators/non-zero-finite-number.mjs +8 -0
  244. package/dist/number/operators/non-zero-finite-number.mjs.map +1 -0
  245. package/dist/number/operators/non-zero-int.d.mts +10 -0
  246. package/dist/number/operators/non-zero-int.d.mts.map +1 -0
  247. package/dist/number/operators/non-zero-int.mjs +9 -0
  248. package/dist/number/operators/non-zero-int.mjs.map +1 -0
  249. package/dist/number/operators/non-zero-int16.d.mts +10 -0
  250. package/dist/number/operators/non-zero-int16.d.mts.map +1 -0
  251. package/dist/number/operators/non-zero-int16.mjs +9 -0
  252. package/dist/number/operators/non-zero-int16.mjs.map +1 -0
  253. package/dist/number/operators/non-zero-int32.d.mts +10 -0
  254. package/dist/number/operators/non-zero-int32.d.mts.map +1 -0
  255. package/dist/number/operators/non-zero-int32.mjs +9 -0
  256. package/dist/number/operators/non-zero-int32.mjs.map +1 -0
  257. package/dist/number/operators/non-zero-safe-int.d.mts +10 -0
  258. package/dist/number/operators/non-zero-safe-int.d.mts.map +1 -0
  259. package/dist/number/operators/non-zero-safe-int.mjs +11 -0
  260. package/dist/number/operators/non-zero-safe-int.mjs.map +1 -0
  261. package/dist/number/operators/non-zero-uint16.d.mts +2 -0
  262. package/dist/number/operators/non-zero-uint16.d.mts.map +1 -0
  263. package/dist/number/operators/non-zero-uint16.mjs +9 -0
  264. package/dist/number/operators/non-zero-uint16.mjs.map +1 -0
  265. package/dist/number/operators/non-zero-uint32.d.mts +2 -0
  266. package/dist/number/operators/non-zero-uint32.d.mts.map +1 -0
  267. package/dist/number/operators/non-zero-uint32.mjs +9 -0
  268. package/dist/number/operators/non-zero-uint32.mjs.map +1 -0
  269. package/dist/number/operators/positive-finite-number.d.mts +23 -0
  270. package/dist/number/operators/positive-finite-number.d.mts.map +1 -0
  271. package/dist/number/operators/positive-finite-number.mjs +7 -0
  272. package/dist/number/operators/positive-finite-number.mjs.map +1 -0
  273. package/dist/number/operators/positive-int.d.mts +23 -0
  274. package/dist/number/operators/positive-int.d.mts.map +1 -0
  275. package/dist/number/operators/positive-int.mjs +8 -0
  276. package/dist/number/operators/positive-int.mjs.map +1 -0
  277. package/dist/number/operators/positive-int16.d.mts +28 -0
  278. package/dist/number/operators/positive-int16.d.mts.map +1 -0
  279. package/dist/number/operators/positive-int16.mjs +8 -0
  280. package/dist/number/operators/positive-int16.mjs.map +1 -0
  281. package/dist/number/operators/positive-int32.d.mts +26 -0
  282. package/dist/number/operators/positive-int32.d.mts.map +1 -0
  283. package/dist/number/operators/positive-int32.mjs +8 -0
  284. package/dist/number/operators/positive-int32.mjs.map +1 -0
  285. package/dist/number/operators/positive-safe-int.d.mts +24 -0
  286. package/dist/number/operators/positive-safe-int.d.mts.map +1 -0
  287. package/dist/number/operators/positive-safe-int.mjs +9 -0
  288. package/dist/number/operators/positive-safe-int.mjs.map +1 -0
  289. package/dist/number/operators/positive-uint16.d.mts +27 -0
  290. package/dist/number/operators/positive-uint16.d.mts.map +1 -0
  291. package/dist/number/operators/positive-uint16.mjs +8 -0
  292. package/dist/number/operators/positive-uint16.mjs.map +1 -0
  293. package/dist/number/operators/positive-uint32.d.mts +25 -0
  294. package/dist/number/operators/positive-uint32.d.mts.map +1 -0
  295. package/dist/number/operators/positive-uint32.mjs +8 -0
  296. package/dist/number/operators/positive-uint32.mjs.map +1 -0
  297. package/dist/number/operators/safe-int.d.mts +17 -0
  298. package/dist/number/operators/safe-int.d.mts.map +1 -0
  299. package/dist/number/operators/safe-int.mjs +10 -0
  300. package/dist/number/operators/safe-int.mjs.map +1 -0
  301. package/dist/number/operators/safe-uint.d.mts +22 -0
  302. package/dist/number/operators/safe-uint.d.mts.map +1 -0
  303. package/dist/number/operators/safe-uint.mjs +9 -0
  304. package/dist/number/operators/safe-uint.mjs.map +1 -0
  305. package/dist/number/operators/uint.d.mts +14 -0
  306. package/dist/number/operators/uint.d.mts.map +1 -0
  307. package/dist/number/operators/uint.mjs +8 -0
  308. package/dist/number/operators/uint.mjs.map +1 -0
  309. package/dist/number/operators/uint16.d.mts +25 -0
  310. package/dist/number/operators/uint16.d.mts.map +1 -0
  311. package/dist/number/operators/uint16.mjs +8 -0
  312. package/dist/number/operators/uint16.mjs.map +1 -0
  313. package/dist/number/operators/uint32.d.mts +23 -0
  314. package/dist/number/operators/uint32.d.mts.map +1 -0
  315. package/dist/number/operators/uint32.mjs +8 -0
  316. package/dist/number/operators/uint32.mjs.map +1 -0
  317. package/dist/number/operators/uint8.d.mts +24 -0
  318. package/dist/number/operators/uint8.d.mts.map +1 -0
  319. package/dist/number/operators/uint8.mjs +8 -0
  320. package/dist/number/operators/uint8.mjs.map +1 -0
  321. package/dist/number/refined-number-utils.d.mts +2 -2
  322. package/dist/number/refined-number-utils.d.mts.map +1 -1
  323. package/dist/number/refined-number-utils.mjs +1 -1
  324. package/dist/number/refined-number-utils.mjs.map +1 -1
  325. package/dist/object/object.d.mts +8 -0
  326. package/dist/object/object.d.mts.map +1 -1
  327. package/dist/object/object.mjs +17 -5
  328. package/dist/object/object.mjs.map +1 -1
  329. package/dist/others/fast-deep-equal.mjs +1 -1
  330. package/dist/others/fast-deep-equal.mjs.map +1 -1
  331. package/dist/others/replace-equal-deep.mjs +10 -3
  332. package/dist/others/replace-equal-deep.mjs.map +1 -1
  333. package/package.json +22 -9
  334. package/src/array/impl/array-utils-reducing-value.mts +4 -3
  335. package/src/array/impl/array-utils-shape-invariants.test.mts +1 -1
  336. package/src/array/impl/array-utils-slice-clamped.mts +1 -1
  337. package/src/array/impl/array-utils-slicing.mts +12 -3
  338. package/src/array/impl/array-utils-transformation.mts +7 -3
  339. package/src/array/impl/array-utils-transformation.test.mts +52 -3
  340. package/src/array/impl/array-utils-validation.mts +2 -1
  341. package/src/built-in-tag.mts +59 -0
  342. package/src/built-in-tag.test.mts +215 -0
  343. package/src/collections/imap-mapped.mts +6 -4
  344. package/src/collections/imap-mapped.test.mts +27 -0
  345. package/src/collections/imap.mts +6 -4
  346. package/src/collections/imap.test.mts +13 -0
  347. package/src/collections/stack.mts +3 -3
  348. package/src/iterator/range.mts +10 -2
  349. package/src/iterator/range.test.mts +7 -0
  350. package/src/json/json.mts +17 -57
  351. package/src/json/json.test.mts +32 -0
  352. package/src/number/branded-types/finite-number.mts +23 -25
  353. package/src/number/branded-types/int.mts +20 -26
  354. package/src/number/branded-types/int16.mts +21 -26
  355. package/src/number/branded-types/int32.mts +21 -26
  356. package/src/number/branded-types/negative-finite-number.mts +25 -26
  357. package/src/number/branded-types/negative-int.mts +20 -27
  358. package/src/number/branded-types/negative-safe-int.mts +23 -28
  359. package/src/number/branded-types/non-negative-finite-number.mts +24 -25
  360. package/src/number/branded-types/non-negative-int16.mts +23 -26
  361. package/src/number/branded-types/non-negative-int32.mts +23 -26
  362. package/src/number/branded-types/non-positive-finite-number.mts +24 -25
  363. package/src/number/branded-types/non-positive-int.mts +20 -26
  364. package/src/number/branded-types/non-positive-safe-int.mts +21 -26
  365. package/src/number/branded-types/non-zero-finite-number.mts +23 -25
  366. package/src/number/branded-types/non-zero-int.mts +19 -25
  367. package/src/number/branded-types/non-zero-int16.mts +27 -28
  368. package/src/number/branded-types/non-zero-int32.mts +27 -28
  369. package/src/number/branded-types/non-zero-safe-int.mts +25 -35
  370. package/src/number/branded-types/non-zero-uint16.mts +24 -28
  371. package/src/number/branded-types/non-zero-uint32.mts +24 -28
  372. package/src/number/branded-types/positive-finite-number.mts +25 -25
  373. package/src/number/branded-types/positive-int.mts +21 -26
  374. package/src/number/branded-types/positive-int16.mts +23 -26
  375. package/src/number/branded-types/positive-int32.mts +23 -26
  376. package/src/number/branded-types/positive-safe-int.mts +24 -31
  377. package/src/number/branded-types/positive-uint16.mts +23 -26
  378. package/src/number/branded-types/positive-uint32.mts +23 -26
  379. package/src/number/branded-types/safe-int.mts +22 -29
  380. package/src/number/branded-types/safe-uint.mts +21 -27
  381. package/src/number/branded-types/uint.mts +21 -26
  382. package/src/number/branded-types/uint16.mts +21 -26
  383. package/src/number/branded-types/uint32.mts +21 -26
  384. package/src/number/enum/int8.mts +40 -52
  385. package/src/number/enum/uint8.mts +40 -48
  386. package/src/number/index.mts +1 -1
  387. package/src/number/num/impl/index.mts +1 -0
  388. package/src/number/num/impl/num.mts +715 -0
  389. package/src/number/{num.test.mts → num/impl/num.test.mts} +17 -5
  390. package/src/number/num/index.mts +16 -0
  391. package/src/number/num-arithmetic.test.mts +1 -1
  392. package/src/number/operators/finite-number.mts +20 -0
  393. package/src/number/operators/int.mts +20 -0
  394. package/src/number/operators/int16.mts +33 -0
  395. package/src/number/operators/int32.mts +33 -0
  396. package/src/number/operators/int8.mts +18 -0
  397. package/src/number/operators/negative-finite-number.mts +22 -0
  398. package/src/number/operators/negative-int.mts +22 -0
  399. package/src/number/operators/negative-safe-int.mts +32 -0
  400. package/src/number/operators/non-negative-finite-number.mts +32 -0
  401. package/src/number/operators/non-negative-int16.mts +33 -0
  402. package/src/number/operators/non-negative-int32.mts +33 -0
  403. package/src/number/operators/non-positive-finite-number.mts +21 -0
  404. package/src/number/operators/non-positive-int.mts +21 -0
  405. package/src/number/operators/non-positive-safe-int.mts +31 -0
  406. package/src/number/operators/non-zero-finite-number.mts +21 -0
  407. package/src/number/operators/non-zero-int.mts +22 -0
  408. package/src/number/operators/non-zero-int16.mts +32 -0
  409. package/src/number/operators/non-zero-int32.mts +32 -0
  410. package/src/number/operators/non-zero-safe-int.mts +34 -0
  411. package/src/number/operators/non-zero-uint16.mts +32 -0
  412. package/src/number/operators/non-zero-uint32.mts +32 -0
  413. package/src/number/operators/positive-finite-number.mts +32 -0
  414. package/src/number/operators/positive-int.mts +32 -0
  415. package/src/number/operators/positive-int16.mts +33 -0
  416. package/src/number/operators/positive-int32.mts +33 -0
  417. package/src/number/operators/positive-safe-int.mts +34 -0
  418. package/src/number/operators/positive-uint16.mts +33 -0
  419. package/src/number/operators/positive-uint32.mts +33 -0
  420. package/src/number/operators/safe-int.mts +35 -0
  421. package/src/number/operators/safe-uint.mts +33 -0
  422. package/src/number/operators/uint.mts +31 -0
  423. package/src/number/operators/uint16.mts +32 -0
  424. package/src/number/operators/uint32.mts +32 -0
  425. package/src/number/operators/uint8.mts +16 -0
  426. package/src/number/refined-number-utils.mts +4 -4
  427. package/src/object/object.mts +33 -5
  428. package/src/object/object.test.mts +55 -0
  429. package/src/others/fast-deep-equal.mts +1 -1
  430. package/src/others/replace-equal-deep.mts +11 -4
  431. package/src/others/replace-equal-deep.test.mts +26 -0
  432. package/dist/number/num.d.mts +0 -546
  433. package/dist/number/num.d.mts.map +0 -1
  434. package/dist/number/num.mjs +0 -559
  435. package/dist/number/num.mjs.map +0 -1
  436. package/src/guard/is-error.test.mts +0 -145
  437. package/src/number/num.mts +0 -731
@@ -1 +1 @@
1
- {"version":3,"file":"uint8.mjs","sourceRoot":"","sources":["../../../src/number/enum/uint8.mts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAInE,MAAM,iBAAiB,GAAG,uCAAuC,CAAC;AAElE,MAAM,EACJ,SAAS,EACT,SAAS,EACT,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,cAAc,EAC1B,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,UAAU,GACnB,GAAG,oBAAoB,CAAC,kBAAkB,CAAC,mBAAmB,CAC7D;IACE,oBAAoB,EAAE,aAAa;IACnC,SAAS,EAAE,CAAC;IACZ,SAAS,EAAE,GAAG;IACd,iBAAiB;CACT,CACX,CAAC;AAEF,MAAM,EAAE,GAAG,CAAC,CAAS,EAAc,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAEhD,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAS,EAAE;AACpC,oEAAoE;AACpE,YAAY,CAAC,CAAC,CAAU,CAAC;AAE3B,MAAM,UAAU,GAAG,CAAC,CAAS,EAAS,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAErE,MAAM,IAAI,GAAG,CAAC,GAAG,MAAwB,EAAS,EAAE,CAClD,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AAEhC,MAAM,IAAI,GAAG,CAAC,GAAG,MAAwB,EAAS,EAAE,CAClD,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AAEhC,MAAM,GAAG,GAAG,CAAC,CAAQ,EAAE,CAAQ,EAAS,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAE9D,MAAM,GAAG,GAAG,CAAC,CAAQ,EAAE,CAAQ,EAAS,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAE7D,MAAM,GAAG,GAAG,CAAC,CAAQ,EAAE,CAAQ,EAAS,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAE7D,MAAM,GAAG,GAAG,CAAC,CAAQ,EAAE,CAAQ,EAAS,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAE7D,MAAM,GAAG,GAAG,CAAC,CAAQ,EAAE,CAA0B,EAAS,EAAE,CAC1D,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEhC,MAAM,MAAM,GAAG,CAAC,GAAU,EAAE,GAAU,EAAS,EAAE,CAC/C,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAE7D;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,EAAE,CAAC;AAE1B;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB;;;;;;OAMG;IACH,EAAE;IAEF;;;OAGG;IACH,SAAS;IAET;;;OAGG;IACH,SAAS;IAET;;;;;OAKG;IACH,GAAG,EAAE,IAAI;IAET;;;;;OAKG;IACH,GAAG,EAAE,IAAI;IAET;;;;;;;;;OASG;IACH,UAAU;IAEV;;;;;;;;OAQG;IACH,MAAM;IAEN;;;;;;;OAOG;IACH,GAAG;IAEH;;;;;;OAMG;IACH,GAAG;IAEH;;;;;;OAMG;IACH,GAAG;IAEH;;;;;;OAMG;IACH,GAAG;IAEH;;;;;;;OAOG;IACH,GAAG;CACK,CAAC;AAEX,UAAU,CAMR,GAAG,CAAC,CAAC"}
1
+ {"version":3,"file":"uint8.mjs","sourceRoot":"","sources":["../../../src/number/enum/uint8.mts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EACL,SAAS,EACT,SAAS,EACT,QAAQ,IAAI,YAAY,EACxB,UAAU,IAAI,cAAc,EAC5B,MAAM,IAAI,UAAU,GACrB,MAAM,wBAAwB,CAAC;AAKhC,MAAM,iBAAiB,GAAG,uCAAuC,CAAC;AAElE;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAa,EAAkB,EAAE,CACvD,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,KAAK,IAAI,GAAG,CAAC;AAE5D;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,KAAa,EAAS,EAAE;IAC9C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,SAAS,CAAC,YAAY,iBAAiB,UAAU,KAAK,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,CAAS,EAAS,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;AAEpE,MAAM,IAAI,GAAG,CAAC,GAAG,MAAwB,EAAS,EAAE,CAClD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AAE/B,MAAM,IAAI,GAAG,CAAC,GAAG,MAAwB,EAAS,EAAE,CAClD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AAE/B,MAAM,GAAG,GAAG,CAAC,CAAQ,EAAE,CAAQ,EAAS,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAE9D,MAAM,GAAG,GAAG,CAAC,CAAQ,EAAE,CAAQ,EAAS,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAE7D,MAAM,GAAG,GAAG,CAAC,CAAQ,EAAE,CAAQ,EAAS,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAE7D,MAAM,GAAG,GAAG,CAAC,CAAQ,EAAE,CAAQ,EAAS,EAAE,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAE7D,MAAM,GAAG,GAAG,CAAC,CAAQ,EAAE,CAA0B,EAAS,EAAE,CAC1D,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEhC,MAAM,MAAM,GAAG,CAAC,GAAU,EAAE,GAAU,EAAS,EAAE,CAC/C,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAE5D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB;;;;;;OAMG;IACH,EAAE,EAAE,OAAO;IAEX;;;OAGG;IACH,SAAS;IAET;;;OAGG;IACH,SAAS;IAET;;;;;OAKG;IACH,GAAG,EAAE,IAAI;IAET;;;;;OAKG;IACH,GAAG,EAAE,IAAI;IAET;;;;;;;;;OASG;IACH,UAAU;IAEV;;;;;;;;OAQG;IACH,MAAM;IAEN;;;;;;;OAOG;IACH,GAAG;IAEH;;;;;;OAMG;IACH,GAAG;IAEH;;;;;;OAMG;IACH,GAAG;IAEH;;;;;;OAMG;IACH,GAAG;IAEH;;;;;;;OAOG;IACH,GAAG;CACK,CAAC;AAEX,UAAU,CAMR,GAAG,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  export * from './branded-types/index.mjs';
2
2
  export * from './enum/index.mjs';
3
3
  export * from './num-arithmetic-types.mjs';
4
- export * from './num.mjs';
4
+ export * from './num/index.mjs';
5
5
  export * from './refined-number-utils.mjs';
6
6
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/number/index.mts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,WAAW,CAAC;AAC1B,cAAc,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/number/index.mts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC"}
@@ -1,6 +1,6 @@
1
1
  export * from './branded-types/index.mjs';
2
2
  export * from './enum/index.mjs';
3
3
  export * from './num-arithmetic-types.mjs';
4
- export * from './num.mjs';
4
+ export * from './num/index.mjs';
5
5
  export * from './refined-number-utils.mjs';
6
6
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/number/index.mts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,WAAW,CAAC;AAC1B,cAAc,4BAA4B,CAAC"}
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/number/index.mts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iBAAiB,CAAC;AAChC,cAAc,4BAA4B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './num.mjs';
2
+ //# sourceMappingURL=index.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../../../src/number/num/impl/index.mts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './num.mjs';
2
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../../../src/number/num/impl/index.mts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
@@ -0,0 +1,531 @@
1
+ import type { Decrement, FiniteNumber, Increment, Index, Int, Min, NaNType, NegativeIndex, NonNegativeNumber, NonZeroNumber, PositiveNumber, PositiveSafeIntWithSmallInt, RelaxedExclude, SmallInt, SmallUint } from 'ts-type-forge';
2
+ import { Result } from '../../../functional/index.mjs';
3
+ import type { SmallPositiveInt } from '../../../types.mjs';
4
+ import type { AddResult, DivIntResult, DivResult, MulResult, SubResult } from '../../num-arithmetic-types.mjs';
5
+ /**
6
+ * Converts an unknown value to a number. Alias for the `Number` constructor.
7
+ *
8
+ * @example
9
+ *
10
+ * ```ts
11
+ * const input = '123.45';
12
+ *
13
+ * const result = Num.from(input);
14
+ *
15
+ * assert.isTrue(result === 123.45);
16
+ * ```
17
+ *
18
+ * @param n The value to convert.
19
+ * @returns The numeric representation of `n`.
20
+ */
21
+ export declare const from: (n: unknown) => number;
22
+ /**
23
+ * Safely parses a base-10 integer from a string, returning a {@link Result}
24
+ * that is `Ok<Int>` for valid input and `Err<Error>` otherwise.
25
+ *
26
+ * This is a stricter alternative to both `parseInt` and `Number`:
27
+ *
28
+ * - Unlike `parseInt('12abc', 10)` (which returns `12`), trailing
29
+ * non-numeric characters make the whole input invalid and yield `Err`.
30
+ * - Unlike `Number('')` / `Number(' ')` (which return `0`), empty or
31
+ * whitespace-only input yields `Err`.
32
+ *
33
+ * The empty-string case is rejected by delegating to `parseInt` (which returns
34
+ * `NaN` there) rather than hard-coding a check, while the trailing-garbage case
35
+ * is rejected via `Number`. Valid input is truncated toward zero, so `'12.9'`
36
+ * becomes `12` and `'-3.5'` becomes `-3`.
37
+ *
38
+ * Only base 10 is supported. Use `Result.unwrapOk` (optionally with a
39
+ * `?? Number.NaN` fallback) or `Result.unwrapOkOr` to get a plain number back.
40
+ *
41
+ * @example
42
+ *
43
+ * ```ts
44
+ * assert.strictEqual(
45
+ * Result.unwrapOkOr(Num.safeParseInt('123'), Number.NaN),
46
+ * 123,
47
+ * );
48
+ *
49
+ * assert.strictEqual(
50
+ * Result.unwrapOkOr(Num.safeParseInt('12.9'), Number.NaN),
51
+ * 12,
52
+ * );
53
+ *
54
+ * assert.strictEqual(
55
+ * Result.unwrapOkOr(Num.safeParseInt('-12.9'), Number.NaN),
56
+ * -12,
57
+ * );
58
+ *
59
+ * assert.strictEqual(Number.parseInt('-12.9', 10), -12);
60
+ *
61
+ * // Native `parseInt` ignores trailing non-numeric characters
62
+ *
63
+ * assert.strictEqual(Number.parseInt('123abc', 10), 123);
64
+ *
65
+ * assert.isTrue(Number.isNaN(Number('123abc')));
66
+ *
67
+ * assert.isTrue(Result.isErr(Num.safeParseInt('123abc')));
68
+ *
69
+ * // Whitespace is not a valid integer, so we return an error instead of coercing to 0.
70
+ *
71
+ * assert.isTrue(Number.isNaN(Number.parseInt(' ', 10)));
72
+ *
73
+ * assert.strictEqual(Number(' '), 0); // Native `Number` coerces whitespace to 0
74
+ *
75
+ * assert.isTrue(Result.isErr(Num.safeParseInt('')));
76
+ *
77
+ * assert.strictEqual(Result.unwrapOk(Num.safeParseInt(' ')), undefined);
78
+ *
79
+ * // A value that overflows to Infinity is not an integer either, even though
80
+ * // native `parseInt` reads a 1 out of it.
81
+ *
82
+ * assert.strictEqual(Number.parseInt('1e400', 10), 1);
83
+ *
84
+ * assert.isTrue(Result.isErr(Num.safeParseInt('1e400')));
85
+ * ```
86
+ *
87
+ * @param s The string to parse.
88
+ * @returns `Result.ok(parsedInt)` for valid input, otherwise `Result.err`
89
+ * wrapping an `Error` describing the invalid input. A value that
90
+ * overflows to `Infinity` is rejected, so the `Int` brand never lies.
91
+ */
92
+ export declare const safeParseInt: (s: string) => Result<Int, Error>;
93
+ /**
94
+ * Safely parses a finite floating-point number from a string, returning a
95
+ * {@link Result} that is `Ok<FiniteNumber>` for valid input and `Err<Error>`
96
+ * otherwise.
97
+ *
98
+ * This is a stricter alternative to both `parseFloat` and `Number`:
99
+ *
100
+ * - Unlike `parseFloat('12abc')` (which returns `12`), trailing non-numeric
101
+ * characters make the whole input invalid and yield `Err`.
102
+ * - Unlike `Number('')` / `Number(' ')` (which return `0`), empty or
103
+ * whitespace-only input yields `Err`.
104
+ * - Unlike `Number('Infinity')` (which returns `Infinity`), non-finite values
105
+ * yield `Err`.
106
+ *
107
+ * The empty-string case is rejected by delegating to `parseFloat` (which
108
+ * returns `NaN` there) rather than hard-coding a check, while the
109
+ * trailing-garbage case is rejected via `Number`. Decimal values are preserved as-is, so
110
+ * `'12.9'` stays `12.9`.
111
+ *
112
+ * Use `Result.unwrapOk` (optionally with a `?? Number.NaN` fallback) or
113
+ * `Result.unwrapOkOr` to get a plain number back.
114
+ *
115
+ * @example
116
+ *
117
+ * ```ts
118
+ * assert.strictEqual(
119
+ * Result.unwrapOkOr(Num.safeParseFloat('12.9'), Number.NaN),
120
+ * 12.9,
121
+ * );
122
+ *
123
+ * assert.strictEqual(
124
+ * Result.unwrapOkOr(Num.safeParseFloat('-3.5'), Number.NaN),
125
+ * -3.5,
126
+ * );
127
+ *
128
+ * assert.strictEqual(
129
+ * Result.unwrapOkOr(Num.safeParseFloat('1e3'), Number.NaN),
130
+ * 1000,
131
+ * );
132
+ *
133
+ * // Native `parseFloat` ignores trailing non-numeric characters
134
+ *
135
+ * assert.strictEqual(Number.parseFloat('12px'), 12);
136
+ *
137
+ * assert.isTrue(Result.isErr(Num.safeParseFloat('12px')));
138
+ *
139
+ * // Whitespace is not a valid number, so we return an error instead of coercing to 0.
140
+ *
141
+ * assert.isTrue(Result.isErr(Num.safeParseFloat('')));
142
+ *
143
+ * assert.isTrue(Result.isErr(Num.safeParseFloat(' ')));
144
+ *
145
+ * // Infinity and NaN are not finite, so they are rejected.
146
+ *
147
+ * assert.isTrue(Result.isErr(Num.safeParseFloat('Infinity')));
148
+ *
149
+ * assert.isTrue(Result.isErr(Num.safeParseFloat('NaN')));
150
+ * ```
151
+ *
152
+ * @param s The string to parse.
153
+ * @returns `Result.ok(parsedFloat)` for valid finite input, otherwise
154
+ * `Result.err` wrapping an `Error` describing the invalid input.
155
+ */
156
+ export declare const safeParseFloat: (s: string) => Result<FiniteNumber, Error>;
157
+ /**
158
+ * Type guard that checks if a number is non-zero.
159
+ *
160
+ * When this function returns `true`, TypeScript narrows the type to exclude
161
+ * zero, providing compile-time safety for division operations and other
162
+ * calculations that require non-zero values.
163
+ *
164
+ * @example
165
+ *
166
+ * ```ts
167
+ * const value: number = 5;
168
+ *
169
+ * if (Num.isNonZero(value)) {
170
+ * // Safe to divide now that we know value is non-zero
171
+ * // eslint-disable-next-line total-functions/no-partial-division
172
+ * const inverted = 1 / value;
173
+ *
174
+ * assert.isTrue(inverted === 0.2);
175
+ * }
176
+ *
177
+ * assert.isFalse(Num.isNonZero(0));
178
+ * ```
179
+ *
180
+ * @template N - The numeric literal type or number type to check
181
+ * @param num - The number to check
182
+ * @returns `true` if the number is not zero, `false` otherwise
183
+ */
184
+ export declare const isNonZero: <N extends number>(num: N) => num is NonZeroNumber & RelaxedExclude<N, 0>;
185
+ /**
186
+ * Type guard that checks if a number is non-negative (greater than or equal to
187
+ * zero).
188
+ *
189
+ * When this function returns `true`, TypeScript narrows the type to exclude
190
+ * negative values, which is useful for operations that require non-negative
191
+ * inputs like array indices or measurements.
192
+ *
193
+ * @example
194
+ *
195
+ * ```ts
196
+ * const candidate = 10;
197
+ *
198
+ * if (Num.isNonNegative(candidate)) {
199
+ * const index: number = candidate;
200
+ *
201
+ * assert.isTrue(index === 10);
202
+ * }
203
+ *
204
+ * assert.isFalse(Num.isNonNegative(-1));
205
+ * ```
206
+ *
207
+ * @template N - The numeric literal type or number type to check
208
+ * @param num - The number to check
209
+ * @returns `true` if the number is >= 0, `false` otherwise
210
+ */
211
+ export declare const isNonNegative: <N extends number>(num: N) => num is NonNegativeNumber & RelaxedExclude<N, NegativeIndex<1024>>;
212
+ /**
213
+ * Type guard that checks if a number is positive (greater than zero).
214
+ *
215
+ * When this function returns `true`, TypeScript narrows the type to exclude
216
+ * zero and negative values. This is particularly useful for validating inputs
217
+ * that must be strictly positive, such as dimensions, counts, or rates.
218
+ *
219
+ * @example
220
+ *
221
+ * ```ts
222
+ * const amount = 42;
223
+ *
224
+ * if (Num.isPositive(amount)) {
225
+ * assert.isTrue(amount > 0);
226
+ * }
227
+ *
228
+ * assert.isFalse(Num.isPositive(0));
229
+ * ```
230
+ *
231
+ * @template N - The numeric literal type or number type to check
232
+ * @param num - The number to check
233
+ * @returns `true` if the number is > 0, `false` otherwise
234
+ */
235
+ export declare const isPositive: <N extends number>(num: N) => num is PositiveNumber & RelaxedExclude<N, NegativeIndex<1024> | 0>;
236
+ /**
237
+ * Creates a function that checks if a number `x` is within the range
238
+ * `lowerBound <= x < upperBound`.
239
+ *
240
+ * @example
241
+ *
242
+ * ```ts
243
+ * const isGrade = Num.isInRange(0, 100);
244
+ *
245
+ * assert.isTrue(isGrade(50));
246
+ *
247
+ * assert.isFalse(isGrade(100));
248
+ * ```
249
+ *
250
+ * @param lowerBound The lower bound (inclusive).
251
+ * @param upperBound The upper bound (exclusive).
252
+ * @returns A function that takes a number `x` and returns `true` if `x` is in
253
+ * the range, `false` otherwise.
254
+ */
255
+ export declare const isInRange: (lowerBound: number, upperBound: number) => (x: number) => boolean;
256
+ /**
257
+ * Creates a function that checks if a number `x` is within the range
258
+ * `lowerBound <= x <= upperBound`.
259
+ *
260
+ * @example
261
+ *
262
+ * ```ts
263
+ * const isPercentage = Num.isInRangeInclusive(0, 100);
264
+ *
265
+ * assert.isTrue(isPercentage(100));
266
+ *
267
+ * assert.isFalse(isPercentage(-1));
268
+ * ```
269
+ *
270
+ * @param lowerBound The lower bound (inclusive).
271
+ * @param upperBound The upper bound (inclusive).
272
+ * @returns A function that takes a number `x` and returns `true` if `x` is in
273
+ * the range, `false` otherwise.
274
+ */
275
+ export declare const isInRangeInclusive: (lowerBound: number, upperBound: number) => (x: number) => boolean;
276
+ /**
277
+ * @template N - A SmallUint representing the exclusive upper bound
278
+ * @internal
279
+ * Helper type mapping each SmallUint N to the union of integers from 0 to N-1.
280
+ * Used internally for type-safe range operations.
281
+ *
282
+ * For example:
283
+ * - LT[3] = 0 | 1 | 2
284
+ * - LT[5] = 0 | 1 | 2 | 3 | 4
285
+ */
286
+ type LT = Readonly<{
287
+ [N in SmallUint]: Index<N>;
288
+ }>;
289
+ /**
290
+ * @template N - A SmallUint representing the inclusive upper bound
291
+ * @internal
292
+ * Helper type mapping each SmallUint N to the union of integers from 0 to N (inclusive).
293
+ * Used internally for type-safe range operations with inclusive upper bounds.
294
+ *
295
+ * For example:
296
+ * - LEQ[3] = 0 | 1 | 2 | 3
297
+ * - LEQ[5] = 0 | 1 | 2 | 3 | 4 | 5
298
+ */
299
+ type LEQ = Readonly<{
300
+ [N in SmallUint]: Index<N> | N;
301
+ }>;
302
+ /**
303
+ * Creates a type guard that checks if a number is an unsigned integer within a
304
+ * specified range.
305
+ *
306
+ * This function returns a predicate that validates whether a number is:
307
+ *
308
+ * - A safe integer (no floating point)
309
+ * - Within the range [lowerBound, upperBound)
310
+ *
311
+ * The returned type guard provides precise type narrowing when the bounds are
312
+ * SmallUint literals, making it ideal for array index validation.
313
+ *
314
+ * @example
315
+ *
316
+ * ```ts
317
+ * const indexGuard = Num.isUintInRange(0, 5);
318
+ *
319
+ * assert.isTrue(indexGuard(3));
320
+ *
321
+ * assert.isFalse(indexGuard(5));
322
+ *
323
+ * assert.isFalse(indexGuard(-1));
324
+ * ```
325
+ *
326
+ * @template L - The lower bound as a SmallUint literal type
327
+ * @template U - The upper bound as a SmallUint literal type
328
+ * @param lowerBound - The minimum value (inclusive)
329
+ * @param upperBound - The maximum value (exclusive)
330
+ * @returns A type guard function that validates and narrows number types
331
+ */
332
+ export declare const isUintInRange: <L extends SmallUint, U extends SmallUint>(lowerBound: L, upperBound: U) => (x: number) => x is RelaxedExclude<LT[U], LT[Min<L>]>;
333
+ /**
334
+ * Creates a type guard that checks if a number is an unsigned integer within a
335
+ * specified inclusive range.
336
+ *
337
+ * This function returns a predicate that validates whether a number is:
338
+ *
339
+ * - A safe integer (no floating point)
340
+ * - Within the range [lowerBound, upperBound] (both bounds inclusive)
341
+ *
342
+ * The returned type guard provides precise type narrowing when the bounds are
343
+ * SmallUint literals, useful for validating scores, percentages, or other
344
+ * bounded values.
345
+ *
346
+ * @example
347
+ *
348
+ * ```ts
349
+ * const inclusiveGuard = Num.isUintInRangeInclusive(0, 5);
350
+ *
351
+ * assert.isTrue(inclusiveGuard(5));
352
+ *
353
+ * assert.isFalse(inclusiveGuard(6));
354
+ * ```
355
+ *
356
+ * @template L - The lower bound as a SmallUint literal type
357
+ * @template U - The upper bound as a SmallUint literal type
358
+ * @param lowerBound - The minimum value (inclusive)
359
+ * @param upperBound - The maximum value (inclusive)
360
+ * @returns A type guard function that validates and narrows number types
361
+ */
362
+ export declare const isUintInRangeInclusive: <L extends SmallUint, U extends SmallUint>(lowerBound: L, upperBound: U) => (x: number) => x is RelaxedExclude<LEQ[U], LT[Min<L>]>;
363
+ /**
364
+ * Clamps a value within the given range. If the target value is invalid (not
365
+ * finite), returns the lower bound.
366
+ *
367
+ * Provides two usage patterns for maximum flexibility:
368
+ *
369
+ * - **Direct usage**: Pass all three arguments to get the clamped value
370
+ * immediately
371
+ * - **Curried usage**: Pass bounds to get a reusable clamping function
372
+ *
373
+ * @example
374
+ *
375
+ * ```ts
376
+ * assert.isTrue(Num.clamp(150, 0, 100) === 100);
377
+ *
378
+ * assert.isTrue(Num.clamp(-50, 0, 100) === 0);
379
+ *
380
+ * const clampToPercentage = Num.clamp(0, 100);
381
+ *
382
+ * assert.isTrue(clampToPercentage(75) === 75);
383
+ *
384
+ * assert.isTrue(clampToPercentage(150) === 100);
385
+ * ```
386
+ */
387
+ export declare function clamp(target: number, lowerBound: number, upperBound: number): number;
388
+ export declare function clamp(lowerBound: number, upperBound: number): (target: number) => number;
389
+ /**
390
+ * Adds two numbers, returning the tightest sound branded result type.
391
+ *
392
+ * The sign of the result is computed exactly (e.g. a non-negative plus a
393
+ * non-negative is non-negative); the integer/finite level is preserved, with
394
+ * `SafeInt` operands widening to `Int` because the sum may exceed the safe
395
+ * range. No clamping is performed — for a result that stays inside a bounded
396
+ * type, use that type's branded `add` instead.
397
+ *
398
+ * @param a - The first addend.
399
+ * @param b - The second addend.
400
+ * @returns `a + b`, typed as the tightest branded type guaranteed to contain
401
+ * it.
402
+ */
403
+ export declare const add: <A extends number, B extends number>(a: A, b: B) => AddResult<A, B>;
404
+ /**
405
+ * Subtracts `b` from `a`, returning the tightest sound branded result type.
406
+ *
407
+ * The sign is computed exactly; the level is preserved (with `SafeInt` widening
408
+ * to `Int`). No clamping — for saturating subtraction that stays in a bounded
409
+ * type (e.g. `Uint.sub` clamping at `0`), use that type's branded `sub`.
410
+ *
411
+ * @param a - The minuend.
412
+ * @param b - The subtrahend.
413
+ * @returns `a - b`, typed as the tightest branded type guaranteed to contain
414
+ * it.
415
+ */
416
+ export declare const sub: <A extends number, B extends number>(a: A, b: B) => SubResult<A, B>;
417
+ /**
418
+ * Multiplies two numbers, returning the tightest sound branded result type.
419
+ *
420
+ * The sign follows the usual product rule (e.g. negative times negative is
421
+ * positive); the level is preserved (with `SafeInt` widening to `Int`). No
422
+ * clamping.
423
+ *
424
+ * @param a - The first factor.
425
+ * @param b - The second factor.
426
+ * @returns `a * b`, typed as the tightest branded type guaranteed to contain
427
+ * it.
428
+ */
429
+ export declare const mul: <A extends number, B extends number>(a: A, b: B) => MulResult<A, B>;
430
+ /**
431
+ * Performs type-safe exact division with a compile-time zero-check.
432
+ *
433
+ * The divisor must be typed as `NonZeroNumber` or a non-zero numeric literal.
434
+ * The result sign follows the quotient rule; because exact division can be
435
+ * fractional, the level is `finite` (or `number`).
436
+ *
437
+ * @param a - The dividend.
438
+ * @param b - The divisor (must be non-zero, enforced by types).
439
+ * @returns `a / b`, typed as the tightest branded type guaranteed to contain
440
+ * it.
441
+ */
442
+ export declare const div: <A extends number, B extends NonZeroNumber | SmallInt<'!=0'>>(a: A, b: B) => DivResult<A, B>;
443
+ /**
444
+ * Performs integer division using floor division.
445
+ *
446
+ * Computes `⌊⌊a⌋ / b⌋`: the dividend is floored, the divisor is used as is, and
447
+ * the quotient is floored. For a positive integer divisor this is `⌊a / b⌋`.
448
+ * The divisor is not floored, since a divisor in `(-1, 1)` would floor to `0`
449
+ * or `-1`.
450
+ *
451
+ * Like `div`, the divisor must be typed as `NonZeroNumber` or a non-zero
452
+ * numeric literal. A divisor of magnitude below `1` makes the quotient larger
453
+ * than the dividend, so it overflows to `±Infinity` once `|a / b|` exceeds
454
+ * `Number.MAX_VALUE` (e.g. `1e300 / 1e-10`), as `mul` can.
455
+ *
456
+ * @param a - The dividend
457
+ * @param b - The divisor (must be non-zero, enforced by types)
458
+ * @returns The integer quotient `⌊⌊a⌋ / b⌋`
459
+ */
460
+ export declare const divInt: <A extends number, B extends NonZeroNumber | SmallInt<'!=0'>>(a: A, b: B) => DivIntResult<A, B>;
461
+ /**
462
+ * Rounds a number to a specified number of decimal places.
463
+ *
464
+ * Uses the standard rounding algorithm (round half up) to round the number to
465
+ * the given precision. The precision must be a positive safe integer.
466
+ *
467
+ * @param num - The number to round
468
+ * @param precision - The number of decimal places (must be positive)
469
+ * @returns The rounded number
470
+ */
471
+ export declare const roundAt: (num: number, precision: PositiveSafeIntWithSmallInt) => number;
472
+ /**
473
+ * Rounds a number to the nearest integer using bitwise operations.
474
+ *
475
+ * This function uses a bitwise OR trick for potentially faster rounding.
476
+ * Note: This implementation rounds half up for positive numbers but may behave
477
+ * differently for negative numbers compared to Math.round.
478
+ *
479
+ * @param num - The number to round
480
+ * @returns The rounded integer as an Int branded type
481
+ */
482
+ export declare const roundToInt: (num: number) => Int;
483
+ /**
484
+ * Creates a reusable rounding function with a fixed precision.
485
+ *
486
+ * This is a curried version of roundAt that returns a function configured to
487
+ * always round to the specified number of decimal places. Useful for creating
488
+ * consistent rounding behavior across multiple values.
489
+ *
490
+ * @param digit - The number of decimal places for rounding
491
+ * @returns A function that rounds numbers to the specified precision
492
+ */
493
+ export declare const round: (digit: PositiveSafeIntWithSmallInt) => ((num: number) => number);
494
+ /**
495
+ * Converts NaN values to undefined while preserving all other numbers.
496
+ *
497
+ * This function is useful for handling potentially invalid numeric operations
498
+ * in a type-safe way, converting NaN results to undefined for easier handling
499
+ * with optional chaining or nullish coalescing.
500
+ *
501
+ * @template N - The numeric type (literal or number)
502
+ * @param num - The number to check
503
+ * @returns The original number if not NaN, otherwise undefined
504
+ */
505
+ export declare const mapNaN2Undefined: <N extends number>(num: N) => RelaxedExclude<N, NaNType> | undefined;
506
+ /**
507
+ * Type-safe increment operation for SmallUint values.
508
+ *
509
+ * Increments a SmallUint (0-40) by 1 with the result type computed at compile
510
+ * time. This provides type-level arithmetic for small unsigned integers, useful
511
+ * for type-safe counter operations.
512
+ *
513
+ * @template N - A SmallUint literal type (0-40)
514
+ * @param n - The SmallUint value to increment
515
+ * @returns The incremented value with type Increment<N>
516
+ */
517
+ export declare const increment: <N extends SmallUint>(n: N) => Increment<N>;
518
+ /**
519
+ * Type-safe decrement operation for positive SmallInt values.
520
+ *
521
+ * Decrements a positive SmallInt (1-40) by 1 with the result type computed at
522
+ * compile time. This provides type-level arithmetic for small positive
523
+ * integers, useful for type-safe countdown operations.
524
+ *
525
+ * @template N - A positive SmallInt literal type (1-40)
526
+ * @param n - The positive SmallInt value to decrement
527
+ * @returns The decremented value with type Decrement<N>
528
+ */
529
+ export declare const decrement: <N extends SmallPositiveInt>(n: N) => Decrement<N>;
530
+ export {};
531
+ //# sourceMappingURL=num.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"num.d.mts","sourceRoot":"","sources":["../../../../src/number/num/impl/num.mts"],"names":[],"mappings":"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"}