ts-data-forge 14.10.2 → 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 (416) 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 +2 -2
  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/stack.mjs +3 -3
  21. package/dist/collections/stack.mjs.map +1 -1
  22. package/dist/iterator/range.d.mts +1 -1
  23. package/dist/iterator/range.d.mts.map +1 -1
  24. package/dist/iterator/range.mjs +5 -2
  25. package/dist/iterator/range.mjs.map +1 -1
  26. package/dist/number/branded-types/finite-number.d.mts +4 -9
  27. package/dist/number/branded-types/finite-number.d.mts.map +1 -1
  28. package/dist/number/branded-types/finite-number.mjs +9 -9
  29. package/dist/number/branded-types/finite-number.mjs.map +1 -1
  30. package/dist/number/branded-types/int.d.mts +3 -9
  31. package/dist/number/branded-types/int.d.mts.map +1 -1
  32. package/dist/number/branded-types/int.mjs +9 -10
  33. package/dist/number/branded-types/int.mjs.map +1 -1
  34. package/dist/number/branded-types/int16.d.mts +3 -18
  35. package/dist/number/branded-types/int16.d.mts.map +1 -1
  36. package/dist/number/branded-types/int16.mjs +9 -10
  37. package/dist/number/branded-types/int16.mjs.map +1 -1
  38. package/dist/number/branded-types/int32.d.mts +3 -14
  39. package/dist/number/branded-types/int32.d.mts.map +1 -1
  40. package/dist/number/branded-types/int32.mjs +9 -10
  41. package/dist/number/branded-types/int32.mjs.map +1 -1
  42. package/dist/number/branded-types/negative-finite-number.d.mts +4 -16
  43. package/dist/number/branded-types/negative-finite-number.d.mts.map +1 -1
  44. package/dist/number/branded-types/negative-finite-number.mjs +9 -10
  45. package/dist/number/branded-types/negative-finite-number.mjs.map +1 -1
  46. package/dist/number/branded-types/negative-int.d.mts +3 -16
  47. package/dist/number/branded-types/negative-int.d.mts.map +1 -1
  48. package/dist/number/branded-types/negative-int.mjs +9 -11
  49. package/dist/number/branded-types/negative-int.mjs.map +1 -1
  50. package/dist/number/branded-types/negative-safe-int.d.mts +3 -17
  51. package/dist/number/branded-types/negative-safe-int.d.mts.map +1 -1
  52. package/dist/number/branded-types/negative-safe-int.mjs +9 -11
  53. package/dist/number/branded-types/negative-safe-int.mjs.map +1 -1
  54. package/dist/number/branded-types/non-negative-finite-number.d.mts +4 -14
  55. package/dist/number/branded-types/non-negative-finite-number.d.mts.map +1 -1
  56. package/dist/number/branded-types/non-negative-finite-number.mjs +9 -9
  57. package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
  58. package/dist/number/branded-types/non-negative-int16.d.mts +3 -19
  59. package/dist/number/branded-types/non-negative-int16.d.mts.map +1 -1
  60. package/dist/number/branded-types/non-negative-int16.mjs +9 -10
  61. package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
  62. package/dist/number/branded-types/non-negative-int32.d.mts +3 -17
  63. package/dist/number/branded-types/non-negative-int32.d.mts.map +1 -1
  64. package/dist/number/branded-types/non-negative-int32.mjs +9 -10
  65. package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
  66. package/dist/number/branded-types/non-positive-finite-number.d.mts +4 -14
  67. package/dist/number/branded-types/non-positive-finite-number.d.mts.map +1 -1
  68. package/dist/number/branded-types/non-positive-finite-number.mjs +9 -9
  69. package/dist/number/branded-types/non-positive-finite-number.mjs.map +1 -1
  70. package/dist/number/branded-types/non-positive-int.d.mts +3 -14
  71. package/dist/number/branded-types/non-positive-int.d.mts.map +1 -1
  72. package/dist/number/branded-types/non-positive-int.mjs +9 -10
  73. package/dist/number/branded-types/non-positive-int.mjs.map +1 -1
  74. package/dist/number/branded-types/non-positive-safe-int.d.mts +3 -15
  75. package/dist/number/branded-types/non-positive-safe-int.d.mts.map +1 -1
  76. package/dist/number/branded-types/non-positive-safe-int.mjs +9 -10
  77. package/dist/number/branded-types/non-positive-safe-int.mjs.map +1 -1
  78. package/dist/number/branded-types/non-zero-finite-number.d.mts +4 -10
  79. package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -1
  80. package/dist/number/branded-types/non-zero-finite-number.mjs +9 -10
  81. package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
  82. package/dist/number/branded-types/non-zero-int.d.mts +3 -10
  83. package/dist/number/branded-types/non-zero-int.d.mts.map +1 -1
  84. package/dist/number/branded-types/non-zero-int.mjs +9 -11
  85. package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
  86. package/dist/number/branded-types/non-zero-int16.d.mts +3 -19
  87. package/dist/number/branded-types/non-zero-int16.d.mts.map +1 -1
  88. package/dist/number/branded-types/non-zero-int16.mjs +12 -11
  89. package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
  90. package/dist/number/branded-types/non-zero-int32.d.mts +3 -15
  91. package/dist/number/branded-types/non-zero-int32.d.mts.map +1 -1
  92. package/dist/number/branded-types/non-zero-int32.mjs +12 -11
  93. package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
  94. package/dist/number/branded-types/non-zero-safe-int.d.mts +6 -14
  95. package/dist/number/branded-types/non-zero-safe-int.d.mts.map +1 -1
  96. package/dist/number/branded-types/non-zero-safe-int.mjs +9 -13
  97. package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
  98. package/dist/number/branded-types/non-zero-uint16.d.mts +3 -20
  99. package/dist/number/branded-types/non-zero-uint16.d.mts.map +1 -1
  100. package/dist/number/branded-types/non-zero-uint16.mjs +9 -11
  101. package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
  102. package/dist/number/branded-types/non-zero-uint32.d.mts +3 -18
  103. package/dist/number/branded-types/non-zero-uint32.d.mts.map +1 -1
  104. package/dist/number/branded-types/non-zero-uint32.mjs +9 -11
  105. package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
  106. package/dist/number/branded-types/positive-finite-number.d.mts +4 -16
  107. package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -1
  108. package/dist/number/branded-types/positive-finite-number.mjs +9 -9
  109. package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
  110. package/dist/number/branded-types/positive-int.d.mts +3 -16
  111. package/dist/number/branded-types/positive-int.d.mts.map +1 -1
  112. package/dist/number/branded-types/positive-int.mjs +9 -10
  113. package/dist/number/branded-types/positive-int.mjs.map +1 -1
  114. package/dist/number/branded-types/positive-int16.d.mts +3 -21
  115. package/dist/number/branded-types/positive-int16.d.mts.map +1 -1
  116. package/dist/number/branded-types/positive-int16.mjs +9 -10
  117. package/dist/number/branded-types/positive-int16.mjs.map +1 -1
  118. package/dist/number/branded-types/positive-int32.d.mts +3 -19
  119. package/dist/number/branded-types/positive-int32.d.mts.map +1 -1
  120. package/dist/number/branded-types/positive-int32.mjs +9 -10
  121. package/dist/number/branded-types/positive-int32.mjs.map +1 -1
  122. package/dist/number/branded-types/positive-safe-int.d.mts +5 -19
  123. package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
  124. package/dist/number/branded-types/positive-safe-int.mjs +9 -11
  125. package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
  126. package/dist/number/branded-types/positive-uint16.d.mts +3 -20
  127. package/dist/number/branded-types/positive-uint16.d.mts.map +1 -1
  128. package/dist/number/branded-types/positive-uint16.mjs +9 -10
  129. package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
  130. package/dist/number/branded-types/positive-uint32.d.mts +3 -18
  131. package/dist/number/branded-types/positive-uint32.d.mts.map +1 -1
  132. package/dist/number/branded-types/positive-uint32.mjs +9 -10
  133. package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
  134. package/dist/number/branded-types/safe-int.d.mts +5 -12
  135. package/dist/number/branded-types/safe-int.d.mts.map +1 -1
  136. package/dist/number/branded-types/safe-int.mjs +9 -12
  137. package/dist/number/branded-types/safe-int.mjs.map +1 -1
  138. package/dist/number/branded-types/safe-uint.d.mts +3 -15
  139. package/dist/number/branded-types/safe-uint.d.mts.map +1 -1
  140. package/dist/number/branded-types/safe-uint.mjs +9 -11
  141. package/dist/number/branded-types/safe-uint.mjs.map +1 -1
  142. package/dist/number/branded-types/uint.d.mts +3 -14
  143. package/dist/number/branded-types/uint.d.mts.map +1 -1
  144. package/dist/number/branded-types/uint.mjs +9 -10
  145. package/dist/number/branded-types/uint.mjs.map +1 -1
  146. package/dist/number/branded-types/uint16.d.mts +3 -18
  147. package/dist/number/branded-types/uint16.d.mts.map +1 -1
  148. package/dist/number/branded-types/uint16.mjs +9 -10
  149. package/dist/number/branded-types/uint16.mjs.map +1 -1
  150. package/dist/number/branded-types/uint32.d.mts +3 -16
  151. package/dist/number/branded-types/uint32.d.mts.map +1 -1
  152. package/dist/number/branded-types/uint32.mjs +9 -10
  153. package/dist/number/branded-types/uint32.mjs.map +1 -1
  154. package/dist/number/enum/int8.d.mts +13 -15
  155. package/dist/number/enum/int8.d.mts.map +1 -1
  156. package/dist/number/enum/int8.mjs +20 -25
  157. package/dist/number/enum/int8.mjs.map +1 -1
  158. package/dist/number/enum/uint8.d.mts +12 -14
  159. package/dist/number/enum/uint8.d.mts.map +1 -1
  160. package/dist/number/enum/uint8.mjs +18 -23
  161. package/dist/number/enum/uint8.mjs.map +1 -1
  162. package/dist/number/index.d.mts +1 -1
  163. package/dist/number/index.d.mts.map +1 -1
  164. package/dist/number/index.mjs +1 -1
  165. package/dist/number/index.mjs.map +1 -1
  166. package/dist/number/num/impl/index.d.mts +2 -0
  167. package/dist/number/num/impl/index.d.mts.map +1 -0
  168. package/dist/number/num/impl/index.mjs +2 -0
  169. package/dist/number/num/impl/index.mjs.map +1 -0
  170. package/dist/number/num/impl/num.d.mts +531 -0
  171. package/dist/number/num/impl/num.d.mts.map +1 -0
  172. package/dist/number/num/impl/num.mjs +542 -0
  173. package/dist/number/num/impl/num.mjs.map +1 -0
  174. package/dist/number/num/index.d.mts +17 -0
  175. package/dist/number/num/index.d.mts.map +1 -0
  176. package/dist/number/num/index.mjs +17 -0
  177. package/dist/number/num/index.mjs.map +1 -0
  178. package/dist/number/operators/finite-number.d.mts +16 -0
  179. package/dist/number/operators/finite-number.d.mts.map +1 -0
  180. package/dist/number/operators/finite-number.mjs +7 -0
  181. package/dist/number/operators/finite-number.mjs.map +1 -0
  182. package/dist/number/operators/int.d.mts +16 -0
  183. package/dist/number/operators/int.d.mts.map +1 -0
  184. package/dist/number/operators/int.mjs +8 -0
  185. package/dist/number/operators/int.mjs.map +1 -0
  186. package/dist/number/operators/int16.d.mts +25 -0
  187. package/dist/number/operators/int16.d.mts.map +1 -0
  188. package/dist/number/operators/int16.mjs +8 -0
  189. package/dist/number/operators/int16.mjs.map +1 -0
  190. package/dist/number/operators/int32.d.mts +21 -0
  191. package/dist/number/operators/int32.d.mts.map +1 -0
  192. package/dist/number/operators/int32.mjs +8 -0
  193. package/dist/number/operators/int32.mjs.map +1 -0
  194. package/dist/number/operators/int8.d.mts +24 -0
  195. package/dist/number/operators/int8.d.mts.map +1 -0
  196. package/dist/number/operators/int8.mjs +8 -0
  197. package/dist/number/operators/int8.mjs.map +1 -0
  198. package/dist/number/operators/negative-finite-number.d.mts +11 -0
  199. package/dist/number/operators/negative-finite-number.d.mts.map +1 -0
  200. package/dist/number/operators/negative-finite-number.mjs +8 -0
  201. package/dist/number/operators/negative-finite-number.mjs.map +1 -0
  202. package/dist/number/operators/negative-int.d.mts +10 -0
  203. package/dist/number/operators/negative-int.d.mts.map +1 -0
  204. package/dist/number/operators/negative-int.mjs +9 -0
  205. package/dist/number/operators/negative-int.mjs.map +1 -0
  206. package/dist/number/operators/negative-safe-int.d.mts +10 -0
  207. package/dist/number/operators/negative-safe-int.d.mts.map +1 -0
  208. package/dist/number/operators/negative-safe-int.mjs +9 -0
  209. package/dist/number/operators/negative-safe-int.mjs.map +1 -0
  210. package/dist/number/operators/non-negative-finite-number.d.mts +22 -0
  211. package/dist/number/operators/non-negative-finite-number.d.mts.map +1 -0
  212. package/dist/number/operators/non-negative-finite-number.mjs +7 -0
  213. package/dist/number/operators/non-negative-finite-number.mjs.map +1 -0
  214. package/dist/number/operators/non-negative-int16.d.mts +27 -0
  215. package/dist/number/operators/non-negative-int16.d.mts.map +1 -0
  216. package/dist/number/operators/non-negative-int16.mjs +8 -0
  217. package/dist/number/operators/non-negative-int16.mjs.map +1 -0
  218. package/dist/number/operators/non-negative-int32.d.mts +25 -0
  219. package/dist/number/operators/non-negative-int32.d.mts.map +1 -0
  220. package/dist/number/operators/non-negative-int32.mjs +8 -0
  221. package/dist/number/operators/non-negative-int32.mjs.map +1 -0
  222. package/dist/number/operators/non-positive-finite-number.d.mts +11 -0
  223. package/dist/number/operators/non-positive-finite-number.d.mts.map +1 -0
  224. package/dist/number/operators/non-positive-finite-number.mjs +7 -0
  225. package/dist/number/operators/non-positive-finite-number.mjs.map +1 -0
  226. package/dist/number/operators/non-positive-int.d.mts +10 -0
  227. package/dist/number/operators/non-positive-int.d.mts.map +1 -0
  228. package/dist/number/operators/non-positive-int.mjs +8 -0
  229. package/dist/number/operators/non-positive-int.mjs.map +1 -0
  230. package/dist/number/operators/non-positive-safe-int.d.mts +10 -0
  231. package/dist/number/operators/non-positive-safe-int.d.mts.map +1 -0
  232. package/dist/number/operators/non-positive-safe-int.mjs +8 -0
  233. package/dist/number/operators/non-positive-safe-int.mjs.map +1 -0
  234. package/dist/number/operators/non-zero-finite-number.d.mts +16 -0
  235. package/dist/number/operators/non-zero-finite-number.d.mts.map +1 -0
  236. package/dist/number/operators/non-zero-finite-number.mjs +8 -0
  237. package/dist/number/operators/non-zero-finite-number.mjs.map +1 -0
  238. package/dist/number/operators/non-zero-int.d.mts +10 -0
  239. package/dist/number/operators/non-zero-int.d.mts.map +1 -0
  240. package/dist/number/operators/non-zero-int.mjs +9 -0
  241. package/dist/number/operators/non-zero-int.mjs.map +1 -0
  242. package/dist/number/operators/non-zero-int16.d.mts +10 -0
  243. package/dist/number/operators/non-zero-int16.d.mts.map +1 -0
  244. package/dist/number/operators/non-zero-int16.mjs +9 -0
  245. package/dist/number/operators/non-zero-int16.mjs.map +1 -0
  246. package/dist/number/operators/non-zero-int32.d.mts +10 -0
  247. package/dist/number/operators/non-zero-int32.d.mts.map +1 -0
  248. package/dist/number/operators/non-zero-int32.mjs +9 -0
  249. package/dist/number/operators/non-zero-int32.mjs.map +1 -0
  250. package/dist/number/operators/non-zero-safe-int.d.mts +10 -0
  251. package/dist/number/operators/non-zero-safe-int.d.mts.map +1 -0
  252. package/dist/number/operators/non-zero-safe-int.mjs +11 -0
  253. package/dist/number/operators/non-zero-safe-int.mjs.map +1 -0
  254. package/dist/number/operators/non-zero-uint16.d.mts +2 -0
  255. package/dist/number/operators/non-zero-uint16.d.mts.map +1 -0
  256. package/dist/number/operators/non-zero-uint16.mjs +9 -0
  257. package/dist/number/operators/non-zero-uint16.mjs.map +1 -0
  258. package/dist/number/operators/non-zero-uint32.d.mts +2 -0
  259. package/dist/number/operators/non-zero-uint32.d.mts.map +1 -0
  260. package/dist/number/operators/non-zero-uint32.mjs +9 -0
  261. package/dist/number/operators/non-zero-uint32.mjs.map +1 -0
  262. package/dist/number/operators/positive-finite-number.d.mts +23 -0
  263. package/dist/number/operators/positive-finite-number.d.mts.map +1 -0
  264. package/dist/number/operators/positive-finite-number.mjs +7 -0
  265. package/dist/number/operators/positive-finite-number.mjs.map +1 -0
  266. package/dist/number/operators/positive-int.d.mts +23 -0
  267. package/dist/number/operators/positive-int.d.mts.map +1 -0
  268. package/dist/number/operators/positive-int.mjs +8 -0
  269. package/dist/number/operators/positive-int.mjs.map +1 -0
  270. package/dist/number/operators/positive-int16.d.mts +28 -0
  271. package/dist/number/operators/positive-int16.d.mts.map +1 -0
  272. package/dist/number/operators/positive-int16.mjs +8 -0
  273. package/dist/number/operators/positive-int16.mjs.map +1 -0
  274. package/dist/number/operators/positive-int32.d.mts +26 -0
  275. package/dist/number/operators/positive-int32.d.mts.map +1 -0
  276. package/dist/number/operators/positive-int32.mjs +8 -0
  277. package/dist/number/operators/positive-int32.mjs.map +1 -0
  278. package/dist/number/operators/positive-safe-int.d.mts +24 -0
  279. package/dist/number/operators/positive-safe-int.d.mts.map +1 -0
  280. package/dist/number/operators/positive-safe-int.mjs +9 -0
  281. package/dist/number/operators/positive-safe-int.mjs.map +1 -0
  282. package/dist/number/operators/positive-uint16.d.mts +27 -0
  283. package/dist/number/operators/positive-uint16.d.mts.map +1 -0
  284. package/dist/number/operators/positive-uint16.mjs +8 -0
  285. package/dist/number/operators/positive-uint16.mjs.map +1 -0
  286. package/dist/number/operators/positive-uint32.d.mts +25 -0
  287. package/dist/number/operators/positive-uint32.d.mts.map +1 -0
  288. package/dist/number/operators/positive-uint32.mjs +8 -0
  289. package/dist/number/operators/positive-uint32.mjs.map +1 -0
  290. package/dist/number/operators/safe-int.d.mts +17 -0
  291. package/dist/number/operators/safe-int.d.mts.map +1 -0
  292. package/dist/number/operators/safe-int.mjs +10 -0
  293. package/dist/number/operators/safe-int.mjs.map +1 -0
  294. package/dist/number/operators/safe-uint.d.mts +22 -0
  295. package/dist/number/operators/safe-uint.d.mts.map +1 -0
  296. package/dist/number/operators/safe-uint.mjs +9 -0
  297. package/dist/number/operators/safe-uint.mjs.map +1 -0
  298. package/dist/number/operators/uint.d.mts +14 -0
  299. package/dist/number/operators/uint.d.mts.map +1 -0
  300. package/dist/number/operators/uint.mjs +8 -0
  301. package/dist/number/operators/uint.mjs.map +1 -0
  302. package/dist/number/operators/uint16.d.mts +25 -0
  303. package/dist/number/operators/uint16.d.mts.map +1 -0
  304. package/dist/number/operators/uint16.mjs +8 -0
  305. package/dist/number/operators/uint16.mjs.map +1 -0
  306. package/dist/number/operators/uint32.d.mts +23 -0
  307. package/dist/number/operators/uint32.d.mts.map +1 -0
  308. package/dist/number/operators/uint32.mjs +8 -0
  309. package/dist/number/operators/uint32.mjs.map +1 -0
  310. package/dist/number/operators/uint8.d.mts +24 -0
  311. package/dist/number/operators/uint8.d.mts.map +1 -0
  312. package/dist/number/operators/uint8.mjs +8 -0
  313. package/dist/number/operators/uint8.mjs.map +1 -0
  314. package/dist/number/refined-number-utils.d.mts +2 -2
  315. package/dist/number/refined-number-utils.d.mts.map +1 -1
  316. package/dist/number/refined-number-utils.mjs +1 -1
  317. package/dist/number/refined-number-utils.mjs.map +1 -1
  318. package/dist/object/object.mjs +1 -1
  319. package/dist/object/object.mjs.map +1 -1
  320. package/dist/others/fast-deep-equal.mjs +1 -1
  321. package/dist/others/fast-deep-equal.mjs.map +1 -1
  322. package/package.json +22 -9
  323. package/src/array/impl/array-utils-reducing-value.mts +4 -3
  324. package/src/array/impl/array-utils-shape-invariants.test.mts +1 -1
  325. package/src/array/impl/array-utils-slice-clamped.mts +1 -1
  326. package/src/array/impl/array-utils-slicing.mts +12 -3
  327. package/src/array/impl/array-utils-transformation.mts +6 -2
  328. package/src/array/impl/array-utils-validation.mts +2 -1
  329. package/src/built-in-tag.mts +59 -0
  330. package/src/built-in-tag.test.mts +215 -0
  331. package/src/collections/stack.mts +3 -3
  332. package/src/iterator/range.mts +10 -2
  333. package/src/iterator/range.test.mts +7 -0
  334. package/src/number/branded-types/finite-number.mts +23 -25
  335. package/src/number/branded-types/int.mts +20 -26
  336. package/src/number/branded-types/int16.mts +21 -26
  337. package/src/number/branded-types/int32.mts +21 -26
  338. package/src/number/branded-types/negative-finite-number.mts +25 -26
  339. package/src/number/branded-types/negative-int.mts +20 -27
  340. package/src/number/branded-types/negative-safe-int.mts +23 -28
  341. package/src/number/branded-types/non-negative-finite-number.mts +24 -25
  342. package/src/number/branded-types/non-negative-int16.mts +23 -26
  343. package/src/number/branded-types/non-negative-int32.mts +23 -26
  344. package/src/number/branded-types/non-positive-finite-number.mts +24 -25
  345. package/src/number/branded-types/non-positive-int.mts +20 -26
  346. package/src/number/branded-types/non-positive-safe-int.mts +21 -26
  347. package/src/number/branded-types/non-zero-finite-number.mts +23 -25
  348. package/src/number/branded-types/non-zero-int.mts +19 -25
  349. package/src/number/branded-types/non-zero-int16.mts +27 -28
  350. package/src/number/branded-types/non-zero-int32.mts +27 -28
  351. package/src/number/branded-types/non-zero-safe-int.mts +25 -35
  352. package/src/number/branded-types/non-zero-uint16.mts +24 -28
  353. package/src/number/branded-types/non-zero-uint32.mts +24 -28
  354. package/src/number/branded-types/positive-finite-number.mts +25 -25
  355. package/src/number/branded-types/positive-int.mts +21 -26
  356. package/src/number/branded-types/positive-int16.mts +23 -26
  357. package/src/number/branded-types/positive-int32.mts +23 -26
  358. package/src/number/branded-types/positive-safe-int.mts +24 -31
  359. package/src/number/branded-types/positive-uint16.mts +23 -26
  360. package/src/number/branded-types/positive-uint32.mts +23 -26
  361. package/src/number/branded-types/safe-int.mts +22 -29
  362. package/src/number/branded-types/safe-uint.mts +21 -27
  363. package/src/number/branded-types/uint.mts +21 -26
  364. package/src/number/branded-types/uint16.mts +21 -26
  365. package/src/number/branded-types/uint32.mts +21 -26
  366. package/src/number/enum/int8.mts +40 -52
  367. package/src/number/enum/uint8.mts +40 -48
  368. package/src/number/index.mts +1 -1
  369. package/src/number/num/impl/index.mts +1 -0
  370. package/src/number/num/impl/num.mts +715 -0
  371. package/src/number/{num.test.mts → num/impl/num.test.mts} +4 -4
  372. package/src/number/num/index.mts +16 -0
  373. package/src/number/num-arithmetic.test.mts +1 -1
  374. package/src/number/operators/finite-number.mts +20 -0
  375. package/src/number/operators/int.mts +20 -0
  376. package/src/number/operators/int16.mts +33 -0
  377. package/src/number/operators/int32.mts +33 -0
  378. package/src/number/operators/int8.mts +18 -0
  379. package/src/number/operators/negative-finite-number.mts +22 -0
  380. package/src/number/operators/negative-int.mts +22 -0
  381. package/src/number/operators/negative-safe-int.mts +32 -0
  382. package/src/number/operators/non-negative-finite-number.mts +32 -0
  383. package/src/number/operators/non-negative-int16.mts +33 -0
  384. package/src/number/operators/non-negative-int32.mts +33 -0
  385. package/src/number/operators/non-positive-finite-number.mts +21 -0
  386. package/src/number/operators/non-positive-int.mts +21 -0
  387. package/src/number/operators/non-positive-safe-int.mts +31 -0
  388. package/src/number/operators/non-zero-finite-number.mts +21 -0
  389. package/src/number/operators/non-zero-int.mts +22 -0
  390. package/src/number/operators/non-zero-int16.mts +32 -0
  391. package/src/number/operators/non-zero-int32.mts +32 -0
  392. package/src/number/operators/non-zero-safe-int.mts +34 -0
  393. package/src/number/operators/non-zero-uint16.mts +32 -0
  394. package/src/number/operators/non-zero-uint32.mts +32 -0
  395. package/src/number/operators/positive-finite-number.mts +32 -0
  396. package/src/number/operators/positive-int.mts +32 -0
  397. package/src/number/operators/positive-int16.mts +33 -0
  398. package/src/number/operators/positive-int32.mts +33 -0
  399. package/src/number/operators/positive-safe-int.mts +34 -0
  400. package/src/number/operators/positive-uint16.mts +33 -0
  401. package/src/number/operators/positive-uint32.mts +33 -0
  402. package/src/number/operators/safe-int.mts +35 -0
  403. package/src/number/operators/safe-uint.mts +33 -0
  404. package/src/number/operators/uint.mts +31 -0
  405. package/src/number/operators/uint16.mts +32 -0
  406. package/src/number/operators/uint32.mts +32 -0
  407. package/src/number/operators/uint8.mts +16 -0
  408. package/src/number/refined-number-utils.mts +4 -4
  409. package/src/object/object.mts +1 -1
  410. package/src/others/fast-deep-equal.mts +1 -1
  411. package/dist/number/num.d.mts +0 -550
  412. package/dist/number/num.d.mts.map +0 -1
  413. package/dist/number/num.mjs +0 -563
  414. package/dist/number/num.mjs.map +0 -1
  415. package/src/guard/is-error.test.mts +0 -145
  416. package/src/number/num.mts +0 -735
@@ -1,36 +1,24 @@
1
1
  import type { PositiveInt as TtfImported_PositiveInt } from 'ts-type-forge';
2
2
  import { expectType } from '../../expect-type.mjs';
3
- import { TsDataForgeInternals } from '../refined-number-utils.mjs';
4
-
5
- export type PositiveInt = TtfImported_PositiveInt;
6
-
7
- type ElementType = PositiveInt;
8
-
9
- const typeNameInMessage = 'a positive integer';
10
-
11
- const {
3
+ import {
12
4
  MIN_VALUE,
13
5
  add,
14
- castType,
15
6
  div,
16
7
  fromNumber,
17
- is,
18
- max: max_,
19
- min: min_,
8
+ max as max_,
9
+ min as min_,
20
10
  mul,
21
11
  pow,
22
12
  random,
23
13
  sub,
24
- } = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<
25
- ElementType,
26
- 1,
27
- number
28
- >({
29
- integerOrSafeInteger: 'Integer',
30
- MIN_VALUE: 1,
31
- MAX_VALUE: Number.MAX_VALUE,
32
- typeNameInMessage,
33
- } as const);
14
+ } from '../operators/positive-int.mjs';
15
+ import type { TsDataForgeInternals } from '../refined-number-utils.mjs';
16
+
17
+ export type PositiveInt = TtfImported_PositiveInt;
18
+
19
+ type ElementType = PositiveInt;
20
+
21
+ const typeNameInMessage = 'a positive integer';
34
22
 
35
23
  /**
36
24
  * Type guard that checks if a value is a positive integer.
@@ -51,7 +39,8 @@ const {
51
39
  * @param value - The value to check
52
40
  * @returns `true` if the value is a positive integer, `false` otherwise
53
41
  */
54
- export const isPositiveInt = is;
42
+ export const isPositiveInt = (value: number): value is PositiveInt =>
43
+ Number.isInteger(value) && value >= 1;
55
44
 
56
45
  /**
57
46
  * Casts a `number` to the `PositiveInt` branded type.
@@ -73,7 +62,13 @@ export const isPositiveInt = is;
73
62
  * @returns The value as a `PositiveInt`
74
63
  * @throws {TypeError} If the value is not a positive integer
75
64
  */
76
- export const asPositiveInt = castType;
65
+ export const asPositiveInt = <N extends number>(value: N): PositiveInt & N => {
66
+ if (!isPositiveInt(value)) {
67
+ throw new TypeError(`Expected ${typeNameInMessage}, got: ${value}`);
68
+ }
69
+
70
+ return value;
71
+ };
77
72
 
78
73
  /**
79
74
  * Namespace providing type-safe operations for the `PositiveInt` branded type.
@@ -103,7 +98,7 @@ export const PositiveInt = {
103
98
  * @returns `true` if the value is a positive integer, `false` otherwise
104
99
  * @see {@link isPositiveInt} for usage examples
105
100
  */
106
- is,
101
+ is: isPositiveInt,
107
102
 
108
103
  /**
109
104
  * The smallest value representable as `PositiveInt` (the lower saturation
@@ -1,37 +1,25 @@
1
1
  import type { PositiveInt16 as TtfImported_PositiveInt16 } from 'ts-type-forge';
2
2
  import { expectType } from '../../expect-type.mjs';
3
- import { TsDataForgeInternals } from '../refined-number-utils.mjs';
4
-
5
- export type PositiveInt16 = TtfImported_PositiveInt16;
6
-
7
- type ElementType = PositiveInt16;
8
-
9
- const typeNameInMessage = 'a positive integer in [1, 2^15)';
10
-
11
- const {
3
+ import {
12
4
  MAX_VALUE,
13
5
  MIN_VALUE,
14
6
  add,
15
- castType,
16
7
  div,
17
8
  fromNumber,
18
- is,
19
- max: max_,
20
- min: min_,
9
+ max as max_,
10
+ min as min_,
21
11
  mul,
22
12
  pow,
23
13
  random,
24
14
  sub,
25
- } = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<
26
- ElementType,
27
- 1,
28
- number
29
- >({
30
- integerOrSafeInteger: 'SafeInteger',
31
- MIN_VALUE: 1,
32
- MAX_VALUE: 2 ** 15 - 1,
33
- typeNameInMessage,
34
- } as const);
15
+ } from '../operators/positive-int16.mjs';
16
+ import type { TsDataForgeInternals } from '../refined-number-utils.mjs';
17
+
18
+ export type PositiveInt16 = TtfImported_PositiveInt16;
19
+
20
+ type ElementType = PositiveInt16;
21
+
22
+ const typeNameInMessage = 'a positive integer in [1, 2^15)';
35
23
 
36
24
  /**
37
25
  * Type guard that checks if a value is a positive integer in [1, 2^15).
@@ -42,7 +30,8 @@ const {
42
30
  * @param value - The value to check
43
31
  * @returns `true` if the value is a positive integer in [1, 2^15), `false` otherwise
44
32
  */
45
- export const isPositiveInt16 = is;
33
+ export const isPositiveInt16 = (value: number): value is PositiveInt16 =>
34
+ Number.isSafeInteger(value) && 1 <= value && value <= 2 ** 15 - 1;
46
35
 
47
36
  /**
48
37
  * Casts a `number` to the `PositiveInt16` branded type.
@@ -54,7 +43,15 @@ export const isPositiveInt16 = is;
54
43
  * @returns The value as a `PositiveInt16`
55
44
  * @throws {TypeError} If the value is not a positive integer in [1, 2^15)
56
45
  */
57
- export const asPositiveInt16 = castType;
46
+ export const asPositiveInt16 = <N extends number>(
47
+ value: N,
48
+ ): PositiveInt16 & N => {
49
+ if (!isPositiveInt16(value)) {
50
+ throw new TypeError(`Expected ${typeNameInMessage}, got: ${value}`);
51
+ }
52
+
53
+ return value;
54
+ };
58
55
 
59
56
  /**
60
57
  * Namespace providing type-safe operations for the `PositiveInt16` branded
@@ -71,7 +68,7 @@ export const PositiveInt16 = {
71
68
  * @returns `true` if the value is a positive integer in [1, 2^15), `false` otherwise
72
69
  * @see {@link isPositiveInt16} for usage examples
73
70
  */
74
- is,
71
+ is: isPositiveInt16,
75
72
 
76
73
  /**
77
74
  * The smallest value representable as `PositiveInt16` (the lower saturation
@@ -1,37 +1,25 @@
1
1
  import type { PositiveInt32 as TtfImported_PositiveInt32 } from 'ts-type-forge';
2
2
  import { expectType } from '../../expect-type.mjs';
3
- import { TsDataForgeInternals } from '../refined-number-utils.mjs';
4
-
5
- export type PositiveInt32 = TtfImported_PositiveInt32;
6
-
7
- type ElementType = PositiveInt32;
8
-
9
- const typeNameInMessage = 'a positive integer in [1, 2^31)';
10
-
11
- const {
3
+ import {
12
4
  MAX_VALUE,
13
5
  MIN_VALUE,
14
6
  add,
15
- castType,
16
7
  div,
17
8
  fromNumber,
18
- is,
19
- max: max_,
20
- min: min_,
9
+ max as max_,
10
+ min as min_,
21
11
  mul,
22
12
  pow,
23
13
  random,
24
14
  sub,
25
- } = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<
26
- ElementType,
27
- 1,
28
- number
29
- >({
30
- integerOrSafeInteger: 'SafeInteger',
31
- MIN_VALUE: 1,
32
- MAX_VALUE: 2 ** 31 - 1,
33
- typeNameInMessage,
34
- } as const);
15
+ } from '../operators/positive-int32.mjs';
16
+ import type { TsDataForgeInternals } from '../refined-number-utils.mjs';
17
+
18
+ export type PositiveInt32 = TtfImported_PositiveInt32;
19
+
20
+ type ElementType = PositiveInt32;
21
+
22
+ const typeNameInMessage = 'a positive integer in [1, 2^31)';
35
23
 
36
24
  /**
37
25
  * Type guard that checks if a value is a positive integer in [1, 2^31).
@@ -42,7 +30,8 @@ const {
42
30
  * @param value - The value to check
43
31
  * @returns `true` if the value is a positive integer in [1, 2^31), `false` otherwise
44
32
  */
45
- export const isPositiveInt32 = is;
33
+ export const isPositiveInt32 = (value: number): value is PositiveInt32 =>
34
+ Number.isSafeInteger(value) && 1 <= value && value <= 2 ** 31 - 1;
46
35
 
47
36
  /**
48
37
  * Casts a `number` to the `PositiveInt32` branded type.
@@ -54,7 +43,15 @@ export const isPositiveInt32 = is;
54
43
  * @returns The value as a `PositiveInt32`
55
44
  * @throws {TypeError} If the value is not a positive integer in [1, 2^31)
56
45
  */
57
- export const asPositiveInt32 = castType;
46
+ export const asPositiveInt32 = <N extends number>(
47
+ value: N,
48
+ ): PositiveInt32 & N => {
49
+ if (!isPositiveInt32(value)) {
50
+ throw new TypeError(`Expected ${typeNameInMessage}, got: ${value}`);
51
+ }
52
+
53
+ return value;
54
+ };
58
55
 
59
56
  /**
60
57
  * Namespace providing type-safe operations for the `PositiveInt32` branded
@@ -71,7 +68,7 @@ export const PositiveInt32 = {
71
68
  * @returns `true` if the value is a positive integer in [1, 2^31), `false` otherwise
72
69
  * @see {@link isPositiveInt32} for usage examples
73
70
  */
74
- is,
71
+ is: isPositiveInt32,
75
72
 
76
73
  /**
77
74
  * The smallest value representable as `PositiveInt32` (the lower saturation
@@ -1,41 +1,25 @@
1
- import type {
2
- SafeUint,
3
- PositiveSafeInt as TtfImported_PositiveSafeInt,
4
- } from 'ts-type-forge';
1
+ import type { PositiveSafeInt as TtfImported_PositiveSafeInt } from 'ts-type-forge';
5
2
  import { expectType } from '../../expect-type.mjs';
6
- import { TsDataForgeInternals } from '../refined-number-utils.mjs';
7
-
8
- export type PositiveSafeInt = TtfImported_PositiveSafeInt;
9
-
10
- type ElementType = PositiveSafeInt;
11
-
12
- const typeNameInMessage = 'a positive safe integer';
13
-
14
- const {
3
+ import {
15
4
  MAX_VALUE,
16
5
  MIN_VALUE,
17
6
  add,
18
- castType,
19
7
  div,
20
8
  fromNumber,
21
- is,
22
- max: max_,
23
- min: min_,
9
+ max as max_,
10
+ min as min_,
24
11
  mul,
25
12
  pow,
26
13
  random,
27
14
  sub,
28
- } = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<
29
- ElementType,
30
- 1,
31
- SafeUint
32
- >({
33
- integerOrSafeInteger: 'SafeInteger',
34
- MIN_VALUE: 1,
35
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion, math/prefer-number-max-safe-integer
36
- MAX_VALUE: Number.MAX_SAFE_INTEGER as SafeUint,
37
- typeNameInMessage,
38
- } as const);
15
+ } from '../operators/positive-safe-int.mjs';
16
+ import type { TsDataForgeInternals } from '../refined-number-utils.mjs';
17
+
18
+ export type PositiveSafeInt = TtfImported_PositiveSafeInt;
19
+
20
+ type ElementType = PositiveSafeInt;
21
+
22
+ const typeNameInMessage = 'a positive safe integer';
39
23
 
40
24
  /**
41
25
  * Type guard that checks if a value is a positive safe integer.
@@ -58,7 +42,8 @@ const {
58
42
  * @param value - The value to check
59
43
  * @returns `true` if the value is a positive safe integer, `false` otherwise
60
44
  */
61
- export const isPositiveSafeInt = is;
45
+ export const isPositiveSafeInt = (value: number): value is PositiveSafeInt =>
46
+ Number.isSafeInteger(value) && value >= 1;
62
47
 
63
48
  /**
64
49
  * Casts a `number` to the `PositiveSafeInt` branded type.
@@ -80,7 +65,15 @@ export const isPositiveSafeInt = is;
80
65
  * @returns The value as a `PositiveSafeInt`
81
66
  * @throws {TypeError} If the value is not a positive safe integer
82
67
  */
83
- export const asPositiveSafeInt = castType;
68
+ export const asPositiveSafeInt = <N extends number>(
69
+ value: N,
70
+ ): PositiveSafeInt & N => {
71
+ if (!isPositiveSafeInt(value)) {
72
+ throw new TypeError(`Expected ${typeNameInMessage}, got: ${value}`);
73
+ }
74
+
75
+ return value;
76
+ };
84
77
 
85
78
  /**
86
79
  * Namespace providing type-safe operations for the `PositiveSafeInt` branded
@@ -109,7 +102,7 @@ export const PositiveSafeInt = {
109
102
  * @returns `true` if the value is a positive safe integer, `false` otherwise
110
103
  * @see {@link isPositiveSafeInt} for usage examples
111
104
  */
112
- is,
105
+ is: isPositiveSafeInt,
113
106
 
114
107
  /**
115
108
  * The smallest value representable as `PositiveSafeInt` (the lower saturation
@@ -1,37 +1,25 @@
1
1
  import type { PositiveUint16 as TtfImported_PositiveUint16 } from 'ts-type-forge';
2
2
  import { expectType } from '../../expect-type.mjs';
3
- import { TsDataForgeInternals } from '../refined-number-utils.mjs';
4
-
5
- export type PositiveUint16 = TtfImported_PositiveUint16;
6
-
7
- type ElementType = PositiveUint16;
8
-
9
- const typeNameInMessage = 'a positive integer in [1, 2^16)';
10
-
11
- const {
3
+ import {
12
4
  MAX_VALUE,
13
5
  MIN_VALUE,
14
6
  add,
15
- castType,
16
7
  div,
17
8
  fromNumber,
18
- is,
19
- max: max_,
20
- min: min_,
9
+ max as max_,
10
+ min as min_,
21
11
  mul,
22
12
  pow,
23
13
  random,
24
14
  sub,
25
- } = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<
26
- ElementType,
27
- 1,
28
- number
29
- >({
30
- integerOrSafeInteger: 'SafeInteger',
31
- MIN_VALUE: 1,
32
- MAX_VALUE: 2 ** 16 - 1,
33
- typeNameInMessage,
34
- } as const);
15
+ } from '../operators/positive-uint16.mjs';
16
+ import type { TsDataForgeInternals } from '../refined-number-utils.mjs';
17
+
18
+ export type PositiveUint16 = TtfImported_PositiveUint16;
19
+
20
+ type ElementType = PositiveUint16;
21
+
22
+ const typeNameInMessage = 'a positive integer in [1, 2^16)';
35
23
 
36
24
  /**
37
25
  * Type guard that checks if a value is a positive integer in [1, 2^16).
@@ -42,7 +30,8 @@ const {
42
30
  * @param value - The value to check
43
31
  * @returns `true` if the value is a positive integer in [1, 2^16), `false` otherwise
44
32
  */
45
- export const isPositiveUint16 = is;
33
+ export const isPositiveUint16 = (value: number): value is PositiveUint16 =>
34
+ Number.isSafeInteger(value) && 1 <= value && value <= 2 ** 16 - 1;
46
35
 
47
36
  /**
48
37
  * Casts a `number` to the `PositiveUint16` branded type.
@@ -54,7 +43,15 @@ export const isPositiveUint16 = is;
54
43
  * @returns The value as a `PositiveUint16`
55
44
  * @throws {TypeError} If the value is not a positive integer in [1, 2^16)
56
45
  */
57
- export const asPositiveUint16 = castType;
46
+ export const asPositiveUint16 = <N extends number>(
47
+ value: N,
48
+ ): PositiveUint16 & N => {
49
+ if (!isPositiveUint16(value)) {
50
+ throw new TypeError(`Expected ${typeNameInMessage}, got: ${value}`);
51
+ }
52
+
53
+ return value;
54
+ };
58
55
 
59
56
  /**
60
57
  * Namespace providing type-safe operations for the `PositiveUint16` branded
@@ -71,7 +68,7 @@ export const PositiveUint16 = {
71
68
  * @returns `true` if the value is a positive integer in [1, 2^16), `false` otherwise
72
69
  * @see {@link isPositiveUint16} for usage examples
73
70
  */
74
- is,
71
+ is: isPositiveUint16,
75
72
 
76
73
  /**
77
74
  * The smallest value representable as `PositiveUint16` (the lower saturation
@@ -1,37 +1,25 @@
1
1
  import type { PositiveUint32 as TtfImported_PositiveUint32 } from 'ts-type-forge';
2
2
  import { expectType } from '../../expect-type.mjs';
3
- import { TsDataForgeInternals } from '../refined-number-utils.mjs';
4
-
5
- export type PositiveUint32 = TtfImported_PositiveUint32;
6
-
7
- type ElementType = PositiveUint32;
8
-
9
- const typeNameInMessage = 'a positive integer in [1, 2^32)';
10
-
11
- const {
3
+ import {
12
4
  MAX_VALUE,
13
5
  MIN_VALUE,
14
6
  add,
15
- castType,
16
7
  div,
17
8
  fromNumber,
18
- is,
19
- max: max_,
20
- min: min_,
9
+ max as max_,
10
+ min as min_,
21
11
  mul,
22
12
  pow,
23
13
  random,
24
14
  sub,
25
- } = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<
26
- ElementType,
27
- 1,
28
- number
29
- >({
30
- integerOrSafeInteger: 'SafeInteger',
31
- MIN_VALUE: 1,
32
- MAX_VALUE: 2 ** 32 - 1,
33
- typeNameInMessage,
34
- } as const);
15
+ } from '../operators/positive-uint32.mjs';
16
+ import type { TsDataForgeInternals } from '../refined-number-utils.mjs';
17
+
18
+ export type PositiveUint32 = TtfImported_PositiveUint32;
19
+
20
+ type ElementType = PositiveUint32;
21
+
22
+ const typeNameInMessage = 'a positive integer in [1, 2^32)';
35
23
 
36
24
  /**
37
25
  * Type guard that checks if a value is a positive integer in [1, 2^32).
@@ -42,7 +30,8 @@ const {
42
30
  * @param value - The value to check
43
31
  * @returns `true` if the value is a positive integer in [1, 2^32), `false` otherwise
44
32
  */
45
- export const isPositiveUint32 = is;
33
+ export const isPositiveUint32 = (value: number): value is PositiveUint32 =>
34
+ Number.isSafeInteger(value) && 1 <= value && value <= 2 ** 32 - 1;
46
35
 
47
36
  /**
48
37
  * Casts a `number` to the `PositiveUint32` branded type.
@@ -54,7 +43,15 @@ export const isPositiveUint32 = is;
54
43
  * @returns The value as a `PositiveUint32`
55
44
  * @throws {TypeError} If the value is not a positive integer in [1, 2^32)
56
45
  */
57
- export const asPositiveUint32 = castType;
46
+ export const asPositiveUint32 = <N extends number>(
47
+ value: N,
48
+ ): PositiveUint32 & N => {
49
+ if (!isPositiveUint32(value)) {
50
+ throw new TypeError(`Expected ${typeNameInMessage}, got: ${value}`);
51
+ }
52
+
53
+ return value;
54
+ };
58
55
 
59
56
  /**
60
57
  * Namespace providing type-safe operations for the `PositiveUint32` branded
@@ -71,7 +68,7 @@ export const PositiveUint32 = {
71
68
  * @returns `true` if the value is a positive integer in [1, 2^32), `false` otherwise
72
69
  * @see {@link isPositiveUint32} for usage examples
73
70
  */
74
- is,
71
+ is: isPositiveUint32,
75
72
 
76
73
  /**
77
74
  * The smallest value representable as `PositiveUint32` (the lower saturation
@@ -1,40 +1,26 @@
1
- import type { SafeUint, SafeInt as TtfImported_SafeInt } from 'ts-type-forge';
1
+ import type { SafeInt as TtfImported_SafeInt } from 'ts-type-forge';
2
2
  import { expectType } from '../../expect-type.mjs';
3
- import { TsDataForgeInternals } from '../refined-number-utils.mjs';
4
-
5
- export type SafeInt = TtfImported_SafeInt;
6
-
7
- type ElementType = SafeInt;
8
-
9
- const typeNameInMessage = 'a safe integer';
10
-
11
- const {
3
+ import {
12
4
  MAX_VALUE,
13
5
  MIN_VALUE,
14
6
  abs,
15
7
  add,
16
- castType,
17
8
  div,
18
9
  fromNumber,
19
- is,
20
- max: max_,
21
- min: min_,
10
+ max as max_,
11
+ min as min_,
22
12
  mul,
23
13
  pow,
24
14
  random,
25
15
  sub,
26
- } = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<
27
- ElementType,
28
- SafeInt,
29
- SafeUint
30
- >({
31
- integerOrSafeInteger: 'SafeInteger',
32
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion, math/prefer-number-min-safe-integer
33
- MIN_VALUE: Number.MIN_SAFE_INTEGER as SafeInt,
34
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion, math/prefer-number-max-safe-integer
35
- MAX_VALUE: Number.MAX_SAFE_INTEGER as SafeUint,
36
- typeNameInMessage,
37
- } as const);
16
+ } from '../operators/safe-int.mjs';
17
+ import type { TsDataForgeInternals } from '../refined-number-utils.mjs';
18
+
19
+ export type SafeInt = TtfImported_SafeInt;
20
+
21
+ type ElementType = SafeInt;
22
+
23
+ const typeNameInMessage = 'a safe integer';
38
24
 
39
25
  /**
40
26
  * Type guard that checks if a value is a safe integer.
@@ -54,7 +40,8 @@ const {
54
40
  * @param value - The value to check
55
41
  * @returns `true` if the value is a safe integer, `false` otherwise
56
42
  */
57
- export const isSafeInt = is;
43
+ export const isSafeInt = (value: number): value is SafeInt =>
44
+ Number.isSafeInteger(value);
58
45
 
59
46
  /**
60
47
  * Casts a `number` to the `SafeInt` branded type.
@@ -76,7 +63,13 @@ export const isSafeInt = is;
76
63
  * @returns The value as a `SafeInt`
77
64
  * @throws {TypeError} If the value is not a safe integer
78
65
  */
79
- export const asSafeInt = castType;
66
+ export const asSafeInt = <N extends number>(value: N): SafeInt & N => {
67
+ if (!isSafeInt(value)) {
68
+ throw new TypeError(`Expected ${typeNameInMessage}, got: ${value}`);
69
+ }
70
+
71
+ return value;
72
+ };
80
73
 
81
74
  /**
82
75
  * Namespace providing type-safe operations for the `SafeInt` branded type.
@@ -102,7 +95,7 @@ export const SafeInt = {
102
95
  * @returns `true` if the value is a safe integer, `false` otherwise
103
96
  * @see {@link isSafeInt} for usage examples
104
97
  */
105
- is,
98
+ is: isSafeInt,
106
99
 
107
100
  /**
108
101
  * The smallest value representable as `SafeInt` (the lower saturation target
@@ -1,38 +1,25 @@
1
1
  import type { SafeUint as TtfImported_SafeUint } from 'ts-type-forge';
2
2
  import { expectType } from '../../expect-type.mjs';
3
- import { TsDataForgeInternals } from '../refined-number-utils.mjs';
4
-
5
- export type SafeUint = TtfImported_SafeUint;
6
-
7
- type ElementType = SafeUint;
8
-
9
- const typeNameInMessage = 'a non-negative safe integer';
10
-
11
- const {
3
+ import {
12
4
  MAX_VALUE,
13
5
  MIN_VALUE,
14
6
  add,
15
- castType,
16
7
  div,
17
8
  fromNumber,
18
- is,
19
- max: max_,
20
- min: min_,
9
+ max as max_,
10
+ min as min_,
21
11
  mul,
22
12
  pow,
23
13
  random,
24
14
  sub,
25
- } = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<
26
- ElementType,
27
- 0,
28
- SafeUint
29
- >({
30
- integerOrSafeInteger: 'SafeInteger',
31
- MIN_VALUE: 0,
32
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion, math/prefer-number-max-safe-integer
33
- MAX_VALUE: Number.MAX_SAFE_INTEGER as SafeUint,
34
- typeNameInMessage,
35
- } as const);
15
+ } from '../operators/safe-uint.mjs';
16
+ import type { TsDataForgeInternals } from '../refined-number-utils.mjs';
17
+
18
+ export type SafeUint = TtfImported_SafeUint;
19
+
20
+ type ElementType = SafeUint;
21
+
22
+ const typeNameInMessage = 'a non-negative safe integer';
36
23
 
37
24
  /**
38
25
  * Type guard that checks if a value is a non-negative safe integer.
@@ -43,7 +30,8 @@ const {
43
30
  * @param value - The value to check
44
31
  * @returns `true` if the value is a non-negative safe integer, `false` otherwise
45
32
  */
46
- export const isSafeUint = is;
33
+ export const isSafeUint = (value: number): value is SafeUint =>
34
+ Number.isSafeInteger(value) && value >= 0;
47
35
 
48
36
  /**
49
37
  * Casts a `number` to the `SafeUint` branded type.
@@ -55,7 +43,13 @@ export const isSafeUint = is;
55
43
  * @returns The value as a `SafeUint`
56
44
  * @throws {TypeError} If the value is not a non-negative safe integer
57
45
  */
58
- export const asSafeUint = castType;
46
+ export const asSafeUint = <N extends number>(value: N): SafeUint & N => {
47
+ if (!isSafeUint(value)) {
48
+ throw new TypeError(`Expected ${typeNameInMessage}, got: ${value}`);
49
+ }
50
+
51
+ return value;
52
+ };
59
53
 
60
54
  /**
61
55
  * Namespace providing type-safe operations for the `SafeUint` branded type.
@@ -71,7 +65,7 @@ export const SafeUint = {
71
65
  * @returns `true` if the value is a non-negative safe integer, `false` otherwise
72
66
  * @see {@link isSafeUint} for usage examples
73
67
  */
74
- is,
68
+ is: isSafeUint,
75
69
 
76
70
  /**
77
71
  * The smallest value representable as `SafeUint` (the lower saturation target