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
@@ -5,7 +5,16 @@ import type {
5
5
  NonZeroFiniteNumber as TtfImported_NonZeroFiniteNumber,
6
6
  } from 'ts-type-forge';
7
7
  import { expectType } from '../../expect-type.mjs';
8
- import { TsDataForgeInternals } from '../refined-number-utils.mjs';
8
+ import {
9
+ abs,
10
+ div,
11
+ max as max_,
12
+ min as min_,
13
+ mul,
14
+ pow,
15
+ randomNonZero as random,
16
+ } from '../operators/non-zero-finite-number.mjs';
17
+ import type { TsDataForgeInternals } from '../refined-number-utils.mjs';
9
18
 
10
19
  export type NonZeroFiniteNumber = TtfImported_NonZeroFiniteNumber;
11
20
 
@@ -13,27 +22,6 @@ type ElementType = NonZeroFiniteNumber;
13
22
 
14
23
  const typeNameInMessage = 'a non-zero finite number';
15
24
 
16
- const {
17
- abs,
18
- castType,
19
- div,
20
- is,
21
- max: max_,
22
- min: min_,
23
- mul,
24
- pow,
25
- randomNonZero: random,
26
- } = TsDataForgeInternals.RefinedNumberUtils.operatorsForFloat<
27
- ElementType,
28
- number,
29
- number
30
- >({
31
- nonZero: true,
32
- MIN_VALUE: -Number.MAX_VALUE,
33
- MAX_VALUE: Number.MAX_VALUE,
34
- typeNameInMessage,
35
- } as const);
36
-
37
25
  const floor = (
38
26
  x: ElementType,
39
27
  ): TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType> =>
@@ -73,7 +61,9 @@ expectType<
73
61
  * @param value - The value to check
74
62
  * @returns `true` if the value is a non-zero finite number, `false` otherwise
75
63
  */
76
- export const isNonZeroFiniteNumber = is;
64
+ export const isNonZeroFiniteNumber = (
65
+ value: number,
66
+ ): value is NonZeroFiniteNumber => Number.isFinite(value) && value !== 0;
77
67
 
78
68
  /**
79
69
  * Casts a `number` to the `NonZeroFiniteNumber` branded type.
@@ -85,7 +75,15 @@ export const isNonZeroFiniteNumber = is;
85
75
  * @returns The value as a `NonZeroFiniteNumber`
86
76
  * @throws {TypeError} If the value is not a non-zero finite number
87
77
  */
88
- export const asNonZeroFiniteNumber = castType;
78
+ export const asNonZeroFiniteNumber = <N extends number>(
79
+ value: N,
80
+ ): NonZeroFiniteNumber & N => {
81
+ if (!isNonZeroFiniteNumber(value)) {
82
+ throw new TypeError(`Expected ${typeNameInMessage}, got: ${value}`);
83
+ }
84
+
85
+ return value;
86
+ };
89
87
 
90
88
  /**
91
89
  * Namespace providing type-safe operations for the `NonZeroFiniteNumber`
@@ -101,7 +99,7 @@ export const NonZeroFiniteNumber = {
101
99
  * @returns `true` if the value is a non-zero finite number, `false` otherwise
102
100
  * @see {@link isNonZeroFiniteNumber} for usage examples
103
101
  */
104
- is,
102
+ is: isNonZeroFiniteNumber,
105
103
 
106
104
  /**
107
105
  * Returns the absolute value of a non-zero finite number.
@@ -1,6 +1,14 @@
1
1
  import type { NonZeroInt as TtfImported_NonZeroInt } from 'ts-type-forge';
2
2
  import { expectType } from '../../expect-type.mjs';
3
- import { TsDataForgeInternals } from '../refined-number-utils.mjs';
3
+ import {
4
+ abs,
5
+ max as max_,
6
+ min as min_,
7
+ mul,
8
+ pow,
9
+ randomNonZero as random,
10
+ } from '../operators/non-zero-int.mjs';
11
+ import type { TsDataForgeInternals } from '../refined-number-utils.mjs';
4
12
 
5
13
  export type NonZeroInt = TtfImported_NonZeroInt;
6
14
 
@@ -8,27 +16,6 @@ type ElementType = NonZeroInt;
8
16
 
9
17
  const typeNameInMessage = 'a non-zero integer';
10
18
 
11
- const {
12
- abs,
13
- castType,
14
- is,
15
- max: max_,
16
- min: min_,
17
- mul,
18
- pow,
19
- randomNonZero: random,
20
- } = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<
21
- ElementType,
22
- number,
23
- number
24
- >({
25
- integerOrSafeInteger: 'Integer',
26
- nonZero: true,
27
- MIN_VALUE: -Number.MAX_VALUE,
28
- MAX_VALUE: Number.MAX_VALUE,
29
- typeNameInMessage,
30
- } as const);
31
-
32
19
  /**
33
20
  * Type guard that checks if a value is a non-zero integer.
34
21
  *
@@ -38,7 +25,8 @@ const {
38
25
  * @param value - The value to check
39
26
  * @returns `true` if the value is a non-zero integer, `false` otherwise
40
27
  */
41
- export const isNonZeroInt = is;
28
+ export const isNonZeroInt = (value: number): value is NonZeroInt =>
29
+ Number.isInteger(value) && value !== 0;
42
30
 
43
31
  /**
44
32
  * Casts a `number` to the `NonZeroInt` branded type.
@@ -50,7 +38,13 @@ export const isNonZeroInt = is;
50
38
  * @returns The value as a `NonZeroInt`
51
39
  * @throws {TypeError} If the value is not a non-zero integer
52
40
  */
53
- export const asNonZeroInt = castType;
41
+ export const asNonZeroInt = <N extends number>(value: N): NonZeroInt & N => {
42
+ if (!isNonZeroInt(value)) {
43
+ throw new TypeError(`Expected ${typeNameInMessage}, got: ${value}`);
44
+ }
45
+
46
+ return value;
47
+ };
54
48
 
55
49
  /**
56
50
  * Namespace providing type-safe operations for the `NonZeroInt` branded type.
@@ -70,7 +64,7 @@ export const NonZeroInt = {
70
64
  * @returns `true` if the value is a non-zero integer, `false` otherwise
71
65
  * @see {@link isNonZeroInt} for usage examples
72
66
  */
73
- is,
67
+ is: isNonZeroInt,
74
68
 
75
69
  /**
76
70
  * Returns the absolute value of a non-zero integer.
@@ -1,36 +1,23 @@
1
1
  import type { NonZeroInt16 as TtfImported_NonZeroInt16 } from 'ts-type-forge';
2
2
  import { expectType } from '../../expect-type.mjs';
3
- import { TsDataForgeInternals } from '../refined-number-utils.mjs';
4
-
5
- export type NonZeroInt16 = TtfImported_NonZeroInt16;
6
-
7
- type ElementType = NonZeroInt16;
8
-
9
- const typeNameInMessage = 'a non-zero integer in [-2^15, 2^15)';
10
-
11
- const {
3
+ import {
12
4
  MAX_VALUE,
13
5
  MIN_VALUE,
14
6
  abs,
15
- castType,
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
- randomNonZero: random,
23
- } = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<
24
- ElementType,
25
- number,
26
- number
27
- >({
28
- integerOrSafeInteger: 'SafeInteger',
29
- nonZero: true,
30
- MIN_VALUE: -(2 ** 15),
31
- MAX_VALUE: 2 ** 15 - 1,
32
- typeNameInMessage,
33
- } as const);
12
+ randomNonZero as random,
13
+ } from '../operators/non-zero-int16.mjs';
14
+ import type { TsDataForgeInternals } from '../refined-number-utils.mjs';
15
+
16
+ export type NonZeroInt16 = TtfImported_NonZeroInt16;
17
+
18
+ type ElementType = NonZeroInt16;
19
+
20
+ const typeNameInMessage = 'a non-zero integer in [-2^15, 2^15)';
34
21
 
35
22
  /**
36
23
  * Type guard that checks if a value is a non-zero integer in [-2^15, 2^15).
@@ -41,7 +28,11 @@ const {
41
28
  * @param value - The value to check
42
29
  * @returns `true` if the value is a non-zero integer in [-2^15, 2^15), `false` otherwise
43
30
  */
44
- export const isNonZeroInt16 = is;
31
+ export const isNonZeroInt16 = (value: number): value is NonZeroInt16 =>
32
+ Number.isSafeInteger(value) &&
33
+ value !== 0 &&
34
+ -(2 ** 15) <= value &&
35
+ value <= 2 ** 15 - 1;
45
36
 
46
37
  /**
47
38
  * Casts a `number` to the `NonZeroInt16` branded type.
@@ -53,7 +44,15 @@ export const isNonZeroInt16 = is;
53
44
  * @returns The value as a `NonZeroInt16`
54
45
  * @throws {TypeError} If the value is not a non-zero integer in [-2^15, 2^15)
55
46
  */
56
- export const asNonZeroInt16 = castType;
47
+ export const asNonZeroInt16 = <N extends number>(
48
+ value: N,
49
+ ): NonZeroInt16 & N => {
50
+ if (!isNonZeroInt16(value)) {
51
+ throw new TypeError(`Expected ${typeNameInMessage}, got: ${value}`);
52
+ }
53
+
54
+ return value;
55
+ };
57
56
 
58
57
  /**
59
58
  * Namespace providing type-safe operations for the `NonZeroInt16` branded type.
@@ -69,7 +68,7 @@ export const NonZeroInt16 = {
69
68
  * @returns `true` if the value is a non-zero integer in [-2^15, 2^15), `false` otherwise
70
69
  * @see {@link isNonZeroInt16} for usage examples
71
70
  */
72
- is,
71
+ is: isNonZeroInt16,
73
72
 
74
73
  /**
75
74
  * The smallest value representable as `NonZeroInt16` (the lower saturation
@@ -1,36 +1,23 @@
1
1
  import type { NonZeroInt32 as TtfImported_NonZeroInt32 } from 'ts-type-forge';
2
2
  import { expectType } from '../../expect-type.mjs';
3
- import { TsDataForgeInternals } from '../refined-number-utils.mjs';
4
-
5
- export type NonZeroInt32 = TtfImported_NonZeroInt32;
6
-
7
- type ElementType = NonZeroInt32;
8
-
9
- const typeNameInMessage = 'a non-zero integer in [-2^31, 2^31)';
10
-
11
- const {
3
+ import {
12
4
  MAX_VALUE,
13
5
  MIN_VALUE,
14
6
  abs,
15
- castType,
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
- randomNonZero: random,
23
- } = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<
24
- ElementType,
25
- number,
26
- number
27
- >({
28
- integerOrSafeInteger: 'SafeInteger',
29
- nonZero: true,
30
- MIN_VALUE: -(2 ** 31),
31
- MAX_VALUE: 2 ** 31 - 1,
32
- typeNameInMessage,
33
- } as const);
12
+ randomNonZero as random,
13
+ } from '../operators/non-zero-int32.mjs';
14
+ import type { TsDataForgeInternals } from '../refined-number-utils.mjs';
15
+
16
+ export type NonZeroInt32 = TtfImported_NonZeroInt32;
17
+
18
+ type ElementType = NonZeroInt32;
19
+
20
+ const typeNameInMessage = 'a non-zero integer in [-2^31, 2^31)';
34
21
 
35
22
  /**
36
23
  * Type guard that checks if a value is a non-zero integer in [-2^31, 2^31).
@@ -41,7 +28,11 @@ const {
41
28
  * @param value - The value to check
42
29
  * @returns `true` if the value is a non-zero integer in [-2^31, 2^31), `false` otherwise
43
30
  */
44
- export const isNonZeroInt32 = is;
31
+ export const isNonZeroInt32 = (value: number): value is NonZeroInt32 =>
32
+ Number.isSafeInteger(value) &&
33
+ value !== 0 &&
34
+ -(2 ** 31) <= value &&
35
+ value <= 2 ** 31 - 1;
45
36
 
46
37
  /**
47
38
  * Casts a `number` to the `NonZeroInt32` branded type.
@@ -53,7 +44,15 @@ export const isNonZeroInt32 = is;
53
44
  * @returns The value as a `NonZeroInt32`
54
45
  * @throws {TypeError} If the value is not a non-zero integer in [-2^31, 2^31)
55
46
  */
56
- export const asNonZeroInt32 = castType;
47
+ export const asNonZeroInt32 = <N extends number>(
48
+ value: N,
49
+ ): NonZeroInt32 & N => {
50
+ if (!isNonZeroInt32(value)) {
51
+ throw new TypeError(`Expected ${typeNameInMessage}, got: ${value}`);
52
+ }
53
+
54
+ return value;
55
+ };
57
56
 
58
57
  /**
59
58
  * Namespace providing type-safe operations for the `NonZeroInt32` branded type.
@@ -69,7 +68,7 @@ export const NonZeroInt32 = {
69
68
  * @returns `true` if the value is a non-zero integer in [-2^31, 2^31), `false` otherwise
70
69
  * @see {@link isNonZeroInt32} for usage examples
71
70
  */
72
- is,
71
+ is: isNonZeroInt32,
73
72
 
74
73
  /**
75
74
  * The smallest value representable as `NonZeroInt32` (the lower saturation
@@ -1,42 +1,23 @@
1
- import type {
2
- SafeInt,
3
- SafeUint,
4
- NonZeroSafeInt as TtfImported_NonZeroSafeInt,
5
- } from 'ts-type-forge';
1
+ import type { NonZeroSafeInt as TtfImported_NonZeroSafeInt } from 'ts-type-forge';
6
2
  import { expectType } from '../../expect-type.mjs';
7
- import { TsDataForgeInternals } from '../refined-number-utils.mjs';
8
-
9
- export type NonZeroSafeInt = TtfImported_NonZeroSafeInt;
10
-
11
- type ElementType = NonZeroSafeInt;
12
-
13
- const typeNameInMessage = 'a non-zero safe integer';
14
-
15
- const {
3
+ import {
16
4
  MAX_VALUE,
17
5
  MIN_VALUE,
18
6
  abs,
19
- castType,
20
7
  fromNumber,
21
- is,
22
- max: max_,
23
- min: min_,
8
+ max as max_,
9
+ min as min_,
24
10
  mul,
25
11
  pow,
26
- randomNonZero: random,
27
- } = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<
28
- ElementType,
29
- SafeInt,
30
- SafeUint
31
- >({
32
- integerOrSafeInteger: 'SafeInteger',
33
- nonZero: true,
34
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion, math/prefer-number-min-safe-integer
35
- MIN_VALUE: Number.MIN_SAFE_INTEGER as SafeInt,
36
- // eslint-disable-next-line total-functions/no-unsafe-type-assertion, math/prefer-number-max-safe-integer
37
- MAX_VALUE: Number.MAX_SAFE_INTEGER as SafeUint,
38
- typeNameInMessage,
39
- } as const);
12
+ randomNonZero as random,
13
+ } from '../operators/non-zero-safe-int.mjs';
14
+ import type { TsDataForgeInternals } from '../refined-number-utils.mjs';
15
+
16
+ export type NonZeroSafeInt = TtfImported_NonZeroSafeInt;
17
+
18
+ type ElementType = NonZeroSafeInt;
19
+
20
+ const typeNameInMessage = 'a non-zero safe integer';
40
21
 
41
22
  /**
42
23
  * Type guard that checks if a value is a non-zero safe integer.
@@ -47,7 +28,8 @@ const {
47
28
  * @param value - The value to check
48
29
  * @returns `true` if the value is a non-zero safe integer, `false` otherwise
49
30
  */
50
- export const isNonZeroSafeInt = is;
31
+ export const isNonZeroSafeInt = (value: number): value is NonZeroSafeInt =>
32
+ Number.isSafeInteger(value) && value !== 0;
51
33
 
52
34
  /**
53
35
  * Casts a `number` to the `NonZeroSafeInt` branded type.
@@ -59,7 +41,15 @@ export const isNonZeroSafeInt = is;
59
41
  * @returns The value as a `NonZeroSafeInt`
60
42
  * @throws {TypeError} If the value is not a non-zero safe integer
61
43
  */
62
- export const asNonZeroSafeInt = castType;
44
+ export const asNonZeroSafeInt = <N extends number>(
45
+ value: N,
46
+ ): NonZeroSafeInt & N => {
47
+ if (!isNonZeroSafeInt(value)) {
48
+ throw new TypeError(`Expected ${typeNameInMessage}, got: ${value}`);
49
+ }
50
+
51
+ return value;
52
+ };
63
53
 
64
54
  /**
65
55
  * Namespace providing type-safe operations for the `NonZeroSafeInt` branded
@@ -76,7 +66,7 @@ export const NonZeroSafeInt = {
76
66
  * @returns `true` if the value is a non-zero safe integer, `false` otherwise
77
67
  * @see {@link isNonZeroSafeInt} for usage examples
78
68
  */
79
- is,
69
+ is: isNonZeroSafeInt,
80
70
 
81
71
  /**
82
72
  * The smallest value representable as `NonZeroSafeInt` (the lower saturation
@@ -1,36 +1,23 @@
1
1
  import type { NonZeroUint16 as TtfImported_NonZeroUint16 } from 'ts-type-forge';
2
2
  import { expectType } from '../../expect-type.mjs';
3
- import { TsDataForgeInternals } from '../refined-number-utils.mjs';
4
-
5
- export type NonZeroUint16 = TtfImported_NonZeroUint16;
6
-
7
- type ElementType = NonZeroUint16;
8
-
9
- const typeNameInMessage = 'a non-zero 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
  fromNumber,
17
- is,
18
- max: max_,
19
- min: min_,
8
+ max as max_,
9
+ min as min_,
20
10
  mul,
21
11
  pow,
22
- randomNonZero: random,
23
- } = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<
24
- ElementType,
25
- 1,
26
- number
27
- >({
28
- integerOrSafeInteger: 'SafeInteger',
29
- nonZero: true,
30
- MIN_VALUE: 1,
31
- MAX_VALUE: 2 ** 16 - 1,
32
- typeNameInMessage,
33
- } as const);
12
+ randomNonZero as random,
13
+ } from '../operators/non-zero-uint16.mjs';
14
+ import type { TsDataForgeInternals } from '../refined-number-utils.mjs';
15
+
16
+ export type NonZeroUint16 = TtfImported_NonZeroUint16;
17
+
18
+ type ElementType = NonZeroUint16;
19
+
20
+ const typeNameInMessage = 'a non-zero integer in [1, 2^16)';
34
21
 
35
22
  /**
36
23
  * Type guard that checks if a value is a non-zero integer in [1, 2^16).
@@ -41,7 +28,8 @@ const {
41
28
  * @param value - The value to check
42
29
  * @returns `true` if the value is a non-zero integer in [1, 2^16), `false` otherwise
43
30
  */
44
- export const isNonZeroUint16 = is;
31
+ export const isNonZeroUint16 = (value: number): value is NonZeroUint16 =>
32
+ Number.isSafeInteger(value) && 1 <= value && value <= 2 ** 16 - 1;
45
33
 
46
34
  /**
47
35
  * Casts a `number` to the `NonZeroUint16` branded type.
@@ -53,7 +41,15 @@ export const isNonZeroUint16 = is;
53
41
  * @returns The value as a `NonZeroUint16`
54
42
  * @throws {TypeError} If the value is not a non-zero integer in [1, 2^16)
55
43
  */
56
- export const asNonZeroUint16 = castType;
44
+ export const asNonZeroUint16 = <N extends number>(
45
+ value: N,
46
+ ): NonZeroUint16 & N => {
47
+ if (!isNonZeroUint16(value)) {
48
+ throw new TypeError(`Expected ${typeNameInMessage}, got: ${value}`);
49
+ }
50
+
51
+ return value;
52
+ };
57
53
 
58
54
  /**
59
55
  * Namespace providing type-safe operations for the `NonZeroUint16` branded
@@ -70,7 +66,7 @@ export const NonZeroUint16 = {
70
66
  * @returns `true` if the value is a non-zero integer in [1, 2^16), `false` otherwise
71
67
  * @see {@link isNonZeroUint16} for usage examples
72
68
  */
73
- is,
69
+ is: isNonZeroUint16,
74
70
 
75
71
  /**
76
72
  * The smallest value representable as `NonZeroUint16` (the lower saturation
@@ -1,36 +1,23 @@
1
1
  import type { NonZeroUint32 as TtfImported_NonZeroUint32 } from 'ts-type-forge';
2
2
  import { expectType } from '../../expect-type.mjs';
3
- import { TsDataForgeInternals } from '../refined-number-utils.mjs';
4
-
5
- export type NonZeroUint32 = TtfImported_NonZeroUint32;
6
-
7
- type ElementType = NonZeroUint32;
8
-
9
- const typeNameInMessage = 'a non-zero 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
  fromNumber,
17
- is,
18
- max: max_,
19
- min: min_,
8
+ max as max_,
9
+ min as min_,
20
10
  mul,
21
11
  pow,
22
- randomNonZero: random,
23
- } = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<
24
- ElementType,
25
- 1,
26
- number
27
- >({
28
- integerOrSafeInteger: 'SafeInteger',
29
- nonZero: true,
30
- MIN_VALUE: 1,
31
- MAX_VALUE: 2 ** 32 - 1,
32
- typeNameInMessage,
33
- } as const);
12
+ randomNonZero as random,
13
+ } from '../operators/non-zero-uint32.mjs';
14
+ import type { TsDataForgeInternals } from '../refined-number-utils.mjs';
15
+
16
+ export type NonZeroUint32 = TtfImported_NonZeroUint32;
17
+
18
+ type ElementType = NonZeroUint32;
19
+
20
+ const typeNameInMessage = 'a non-zero integer in [1, 2^32)';
34
21
 
35
22
  /**
36
23
  * Type guard that checks if a value is a non-zero integer in [1, 2^32).
@@ -41,7 +28,8 @@ const {
41
28
  * @param value - The value to check
42
29
  * @returns `true` if the value is a non-zero integer in [1, 2^32), `false` otherwise
43
30
  */
44
- export const isNonZeroUint32 = is;
31
+ export const isNonZeroUint32 = (value: number): value is NonZeroUint32 =>
32
+ Number.isSafeInteger(value) && 1 <= value && value <= 2 ** 32 - 1;
45
33
 
46
34
  /**
47
35
  * Casts a `number` to the `NonZeroUint32` branded type.
@@ -53,7 +41,15 @@ export const isNonZeroUint32 = is;
53
41
  * @returns The value as a `NonZeroUint32`
54
42
  * @throws {TypeError} If the value is not a non-zero integer in [1, 2^32)
55
43
  */
56
- export const asNonZeroUint32 = castType;
44
+ export const asNonZeroUint32 = <N extends number>(
45
+ value: N,
46
+ ): NonZeroUint32 & N => {
47
+ if (!isNonZeroUint32(value)) {
48
+ throw new TypeError(`Expected ${typeNameInMessage}, got: ${value}`);
49
+ }
50
+
51
+ return value;
52
+ };
57
53
 
58
54
  /**
59
55
  * Namespace providing type-safe operations for the `NonZeroUint32` branded
@@ -70,7 +66,7 @@ export const NonZeroUint32 = {
70
66
  * @returns `true` if the value is a non-zero integer in [1, 2^32), `false` otherwise
71
67
  * @see {@link isNonZeroUint32} for usage examples
72
68
  */
73
- is,
69
+ is: isNonZeroUint32,
74
70
 
75
71
  /**
76
72
  * The smallest value representable as `NonZeroUint32` (the lower saturation
@@ -4,36 +4,25 @@ import type {
4
4
  Uint,
5
5
  } from 'ts-type-forge';
6
6
  import { expectType } from '../../expect-type.mjs';
7
- import { TsDataForgeInternals } from '../refined-number-utils.mjs';
8
-
9
- export type PositiveFiniteNumber = TtfImported_PositiveFiniteNumber;
10
-
11
- type ElementType = PositiveFiniteNumber;
12
-
13
- const typeNameInMessage = 'a positive finite number';
14
-
15
- const {
7
+ import {
16
8
  MIN_VALUE,
17
9
  add,
18
- castType,
19
10
  div,
20
11
  fromNumber,
21
- is,
22
- max: max_,
23
- min: min_,
12
+ max as max_,
13
+ min as min_,
24
14
  mul,
25
15
  pow,
26
16
  random,
27
17
  sub,
28
- } = TsDataForgeInternals.RefinedNumberUtils.operatorsForFloat<
29
- ElementType,
30
- number,
31
- number
32
- >({
33
- MIN_VALUE: Number.MIN_VALUE,
34
- MAX_VALUE: Number.MAX_VALUE,
35
- typeNameInMessage,
36
- } as const);
18
+ } from '../operators/positive-finite-number.mjs';
19
+ import type { TsDataForgeInternals } from '../refined-number-utils.mjs';
20
+
21
+ export type PositiveFiniteNumber = TtfImported_PositiveFiniteNumber;
22
+
23
+ type ElementType = PositiveFiniteNumber;
24
+
25
+ const typeNameInMessage = 'a positive finite number';
37
26
 
38
27
  const floor = (
39
28
  x: ElementType,
@@ -86,7 +75,10 @@ expectType<
86
75
  * @param value - The value to check
87
76
  * @returns `true` if the value is a positive finite number, `false` otherwise
88
77
  */
89
- export const isPositiveFiniteNumber = is;
78
+ export const isPositiveFiniteNumber = (
79
+ value: number,
80
+ ): value is PositiveFiniteNumber =>
81
+ Number.isFinite(value) && value >= Number.MIN_VALUE;
90
82
 
91
83
  /**
92
84
  * Casts a `number` to the `PositiveFiniteNumber` branded type.
@@ -98,7 +90,15 @@ export const isPositiveFiniteNumber = is;
98
90
  * @returns The value as a `PositiveFiniteNumber`
99
91
  * @throws {TypeError} If the value is not a positive finite number
100
92
  */
101
- export const asPositiveFiniteNumber = castType;
93
+ export const asPositiveFiniteNumber = <N extends number>(
94
+ value: N,
95
+ ): PositiveFiniteNumber & N => {
96
+ if (!isPositiveFiniteNumber(value)) {
97
+ throw new TypeError(`Expected ${typeNameInMessage}, got: ${value}`);
98
+ }
99
+
100
+ return value;
101
+ };
102
102
 
103
103
  /**
104
104
  * Namespace providing type-safe operations for the `PositiveFiniteNumber`
@@ -114,7 +114,7 @@ export const PositiveFiniteNumber = {
114
114
  * @returns `true` if the value is a positive finite number, `false` otherwise
115
115
  * @see {@link isPositiveFiniteNumber} for usage examples
116
116
  */
117
- is,
117
+ is: isPositiveFiniteNumber,
118
118
 
119
119
  /**
120
120
  * The smallest value representable as `PositiveFiniteNumber` (the lower