ts-data-forge 14.10.1 → 14.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (437) hide show
  1. package/README.md +34 -1
  2. package/dist/array/impl/array-utils-reducing-value.d.mts.map +1 -1
  3. package/dist/array/impl/array-utils-reducing-value.mjs +4 -3
  4. package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -1
  5. package/dist/array/impl/array-utils-slice-clamped.mjs +1 -1
  6. package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -1
  7. package/dist/array/impl/array-utils-slicing.d.mts.map +1 -1
  8. package/dist/array/impl/array-utils-slicing.mjs +10 -3
  9. package/dist/array/impl/array-utils-slicing.mjs.map +1 -1
  10. package/dist/array/impl/array-utils-transformation.d.mts.map +1 -1
  11. package/dist/array/impl/array-utils-transformation.mjs +3 -3
  12. package/dist/array/impl/array-utils-transformation.mjs.map +1 -1
  13. package/dist/array/impl/array-utils-validation.d.mts.map +1 -1
  14. package/dist/array/impl/array-utils-validation.mjs +2 -1
  15. package/dist/array/impl/array-utils-validation.mjs.map +1 -1
  16. package/dist/built-in-tag.d.mts +22 -0
  17. package/dist/built-in-tag.d.mts.map +1 -0
  18. package/dist/built-in-tag.mjs +34 -0
  19. package/dist/built-in-tag.mjs.map +1 -0
  20. package/dist/collections/imap-mapped.mjs +6 -3
  21. package/dist/collections/imap-mapped.mjs.map +1 -1
  22. package/dist/collections/imap.mjs +6 -3
  23. package/dist/collections/imap.mjs.map +1 -1
  24. package/dist/collections/stack.mjs +3 -3
  25. package/dist/collections/stack.mjs.map +1 -1
  26. package/dist/iterator/range.d.mts +1 -1
  27. package/dist/iterator/range.d.mts.map +1 -1
  28. package/dist/iterator/range.mjs +5 -2
  29. package/dist/iterator/range.mjs.map +1 -1
  30. package/dist/json/json.d.mts.map +1 -1
  31. package/dist/json/json.mjs +13 -47
  32. package/dist/json/json.mjs.map +1 -1
  33. package/dist/number/branded-types/finite-number.d.mts +4 -9
  34. package/dist/number/branded-types/finite-number.d.mts.map +1 -1
  35. package/dist/number/branded-types/finite-number.mjs +9 -9
  36. package/dist/number/branded-types/finite-number.mjs.map +1 -1
  37. package/dist/number/branded-types/int.d.mts +3 -9
  38. package/dist/number/branded-types/int.d.mts.map +1 -1
  39. package/dist/number/branded-types/int.mjs +9 -10
  40. package/dist/number/branded-types/int.mjs.map +1 -1
  41. package/dist/number/branded-types/int16.d.mts +3 -18
  42. package/dist/number/branded-types/int16.d.mts.map +1 -1
  43. package/dist/number/branded-types/int16.mjs +9 -10
  44. package/dist/number/branded-types/int16.mjs.map +1 -1
  45. package/dist/number/branded-types/int32.d.mts +3 -14
  46. package/dist/number/branded-types/int32.d.mts.map +1 -1
  47. package/dist/number/branded-types/int32.mjs +9 -10
  48. package/dist/number/branded-types/int32.mjs.map +1 -1
  49. package/dist/number/branded-types/negative-finite-number.d.mts +4 -16
  50. package/dist/number/branded-types/negative-finite-number.d.mts.map +1 -1
  51. package/dist/number/branded-types/negative-finite-number.mjs +9 -10
  52. package/dist/number/branded-types/negative-finite-number.mjs.map +1 -1
  53. package/dist/number/branded-types/negative-int.d.mts +3 -16
  54. package/dist/number/branded-types/negative-int.d.mts.map +1 -1
  55. package/dist/number/branded-types/negative-int.mjs +9 -11
  56. package/dist/number/branded-types/negative-int.mjs.map +1 -1
  57. package/dist/number/branded-types/negative-safe-int.d.mts +3 -17
  58. package/dist/number/branded-types/negative-safe-int.d.mts.map +1 -1
  59. package/dist/number/branded-types/negative-safe-int.mjs +9 -11
  60. package/dist/number/branded-types/negative-safe-int.mjs.map +1 -1
  61. package/dist/number/branded-types/non-negative-finite-number.d.mts +4 -14
  62. package/dist/number/branded-types/non-negative-finite-number.d.mts.map +1 -1
  63. package/dist/number/branded-types/non-negative-finite-number.mjs +9 -9
  64. package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
  65. package/dist/number/branded-types/non-negative-int16.d.mts +3 -19
  66. package/dist/number/branded-types/non-negative-int16.d.mts.map +1 -1
  67. package/dist/number/branded-types/non-negative-int16.mjs +9 -10
  68. package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
  69. package/dist/number/branded-types/non-negative-int32.d.mts +3 -17
  70. package/dist/number/branded-types/non-negative-int32.d.mts.map +1 -1
  71. package/dist/number/branded-types/non-negative-int32.mjs +9 -10
  72. package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
  73. package/dist/number/branded-types/non-positive-finite-number.d.mts +4 -14
  74. package/dist/number/branded-types/non-positive-finite-number.d.mts.map +1 -1
  75. package/dist/number/branded-types/non-positive-finite-number.mjs +9 -9
  76. package/dist/number/branded-types/non-positive-finite-number.mjs.map +1 -1
  77. package/dist/number/branded-types/non-positive-int.d.mts +3 -14
  78. package/dist/number/branded-types/non-positive-int.d.mts.map +1 -1
  79. package/dist/number/branded-types/non-positive-int.mjs +9 -10
  80. package/dist/number/branded-types/non-positive-int.mjs.map +1 -1
  81. package/dist/number/branded-types/non-positive-safe-int.d.mts +3 -15
  82. package/dist/number/branded-types/non-positive-safe-int.d.mts.map +1 -1
  83. package/dist/number/branded-types/non-positive-safe-int.mjs +9 -10
  84. package/dist/number/branded-types/non-positive-safe-int.mjs.map +1 -1
  85. package/dist/number/branded-types/non-zero-finite-number.d.mts +4 -10
  86. package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -1
  87. package/dist/number/branded-types/non-zero-finite-number.mjs +9 -10
  88. package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
  89. package/dist/number/branded-types/non-zero-int.d.mts +3 -10
  90. package/dist/number/branded-types/non-zero-int.d.mts.map +1 -1
  91. package/dist/number/branded-types/non-zero-int.mjs +9 -11
  92. package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
  93. package/dist/number/branded-types/non-zero-int16.d.mts +3 -19
  94. package/dist/number/branded-types/non-zero-int16.d.mts.map +1 -1
  95. package/dist/number/branded-types/non-zero-int16.mjs +12 -11
  96. package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
  97. package/dist/number/branded-types/non-zero-int32.d.mts +3 -15
  98. package/dist/number/branded-types/non-zero-int32.d.mts.map +1 -1
  99. package/dist/number/branded-types/non-zero-int32.mjs +12 -11
  100. package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
  101. package/dist/number/branded-types/non-zero-safe-int.d.mts +6 -14
  102. package/dist/number/branded-types/non-zero-safe-int.d.mts.map +1 -1
  103. package/dist/number/branded-types/non-zero-safe-int.mjs +9 -13
  104. package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
  105. package/dist/number/branded-types/non-zero-uint16.d.mts +3 -20
  106. package/dist/number/branded-types/non-zero-uint16.d.mts.map +1 -1
  107. package/dist/number/branded-types/non-zero-uint16.mjs +9 -11
  108. package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
  109. package/dist/number/branded-types/non-zero-uint32.d.mts +3 -18
  110. package/dist/number/branded-types/non-zero-uint32.d.mts.map +1 -1
  111. package/dist/number/branded-types/non-zero-uint32.mjs +9 -11
  112. package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
  113. package/dist/number/branded-types/positive-finite-number.d.mts +4 -16
  114. package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -1
  115. package/dist/number/branded-types/positive-finite-number.mjs +9 -9
  116. package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
  117. package/dist/number/branded-types/positive-int.d.mts +3 -16
  118. package/dist/number/branded-types/positive-int.d.mts.map +1 -1
  119. package/dist/number/branded-types/positive-int.mjs +9 -10
  120. package/dist/number/branded-types/positive-int.mjs.map +1 -1
  121. package/dist/number/branded-types/positive-int16.d.mts +3 -21
  122. package/dist/number/branded-types/positive-int16.d.mts.map +1 -1
  123. package/dist/number/branded-types/positive-int16.mjs +9 -10
  124. package/dist/number/branded-types/positive-int16.mjs.map +1 -1
  125. package/dist/number/branded-types/positive-int32.d.mts +3 -19
  126. package/dist/number/branded-types/positive-int32.d.mts.map +1 -1
  127. package/dist/number/branded-types/positive-int32.mjs +9 -10
  128. package/dist/number/branded-types/positive-int32.mjs.map +1 -1
  129. package/dist/number/branded-types/positive-safe-int.d.mts +5 -19
  130. package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
  131. package/dist/number/branded-types/positive-safe-int.mjs +9 -11
  132. package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
  133. package/dist/number/branded-types/positive-uint16.d.mts +3 -20
  134. package/dist/number/branded-types/positive-uint16.d.mts.map +1 -1
  135. package/dist/number/branded-types/positive-uint16.mjs +9 -10
  136. package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
  137. package/dist/number/branded-types/positive-uint32.d.mts +3 -18
  138. package/dist/number/branded-types/positive-uint32.d.mts.map +1 -1
  139. package/dist/number/branded-types/positive-uint32.mjs +9 -10
  140. package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
  141. package/dist/number/branded-types/safe-int.d.mts +5 -12
  142. package/dist/number/branded-types/safe-int.d.mts.map +1 -1
  143. package/dist/number/branded-types/safe-int.mjs +9 -12
  144. package/dist/number/branded-types/safe-int.mjs.map +1 -1
  145. package/dist/number/branded-types/safe-uint.d.mts +3 -15
  146. package/dist/number/branded-types/safe-uint.d.mts.map +1 -1
  147. package/dist/number/branded-types/safe-uint.mjs +9 -11
  148. package/dist/number/branded-types/safe-uint.mjs.map +1 -1
  149. package/dist/number/branded-types/uint.d.mts +3 -14
  150. package/dist/number/branded-types/uint.d.mts.map +1 -1
  151. package/dist/number/branded-types/uint.mjs +9 -10
  152. package/dist/number/branded-types/uint.mjs.map +1 -1
  153. package/dist/number/branded-types/uint16.d.mts +3 -18
  154. package/dist/number/branded-types/uint16.d.mts.map +1 -1
  155. package/dist/number/branded-types/uint16.mjs +9 -10
  156. package/dist/number/branded-types/uint16.mjs.map +1 -1
  157. package/dist/number/branded-types/uint32.d.mts +3 -16
  158. package/dist/number/branded-types/uint32.d.mts.map +1 -1
  159. package/dist/number/branded-types/uint32.mjs +9 -10
  160. package/dist/number/branded-types/uint32.mjs.map +1 -1
  161. package/dist/number/enum/int8.d.mts +13 -15
  162. package/dist/number/enum/int8.d.mts.map +1 -1
  163. package/dist/number/enum/int8.mjs +20 -25
  164. package/dist/number/enum/int8.mjs.map +1 -1
  165. package/dist/number/enum/uint8.d.mts +12 -14
  166. package/dist/number/enum/uint8.d.mts.map +1 -1
  167. package/dist/number/enum/uint8.mjs +18 -23
  168. package/dist/number/enum/uint8.mjs.map +1 -1
  169. package/dist/number/index.d.mts +1 -1
  170. package/dist/number/index.d.mts.map +1 -1
  171. package/dist/number/index.mjs +1 -1
  172. package/dist/number/index.mjs.map +1 -1
  173. package/dist/number/num/impl/index.d.mts +2 -0
  174. package/dist/number/num/impl/index.d.mts.map +1 -0
  175. package/dist/number/num/impl/index.mjs +2 -0
  176. package/dist/number/num/impl/index.mjs.map +1 -0
  177. package/dist/number/num/impl/num.d.mts +531 -0
  178. package/dist/number/num/impl/num.d.mts.map +1 -0
  179. package/dist/number/num/impl/num.mjs +542 -0
  180. package/dist/number/num/impl/num.mjs.map +1 -0
  181. package/dist/number/num/index.d.mts +17 -0
  182. package/dist/number/num/index.d.mts.map +1 -0
  183. package/dist/number/num/index.mjs +17 -0
  184. package/dist/number/num/index.mjs.map +1 -0
  185. package/dist/number/operators/finite-number.d.mts +16 -0
  186. package/dist/number/operators/finite-number.d.mts.map +1 -0
  187. package/dist/number/operators/finite-number.mjs +7 -0
  188. package/dist/number/operators/finite-number.mjs.map +1 -0
  189. package/dist/number/operators/int.d.mts +16 -0
  190. package/dist/number/operators/int.d.mts.map +1 -0
  191. package/dist/number/operators/int.mjs +8 -0
  192. package/dist/number/operators/int.mjs.map +1 -0
  193. package/dist/number/operators/int16.d.mts +25 -0
  194. package/dist/number/operators/int16.d.mts.map +1 -0
  195. package/dist/number/operators/int16.mjs +8 -0
  196. package/dist/number/operators/int16.mjs.map +1 -0
  197. package/dist/number/operators/int32.d.mts +21 -0
  198. package/dist/number/operators/int32.d.mts.map +1 -0
  199. package/dist/number/operators/int32.mjs +8 -0
  200. package/dist/number/operators/int32.mjs.map +1 -0
  201. package/dist/number/operators/int8.d.mts +24 -0
  202. package/dist/number/operators/int8.d.mts.map +1 -0
  203. package/dist/number/operators/int8.mjs +8 -0
  204. package/dist/number/operators/int8.mjs.map +1 -0
  205. package/dist/number/operators/negative-finite-number.d.mts +11 -0
  206. package/dist/number/operators/negative-finite-number.d.mts.map +1 -0
  207. package/dist/number/operators/negative-finite-number.mjs +8 -0
  208. package/dist/number/operators/negative-finite-number.mjs.map +1 -0
  209. package/dist/number/operators/negative-int.d.mts +10 -0
  210. package/dist/number/operators/negative-int.d.mts.map +1 -0
  211. package/dist/number/operators/negative-int.mjs +9 -0
  212. package/dist/number/operators/negative-int.mjs.map +1 -0
  213. package/dist/number/operators/negative-safe-int.d.mts +10 -0
  214. package/dist/number/operators/negative-safe-int.d.mts.map +1 -0
  215. package/dist/number/operators/negative-safe-int.mjs +9 -0
  216. package/dist/number/operators/negative-safe-int.mjs.map +1 -0
  217. package/dist/number/operators/non-negative-finite-number.d.mts +22 -0
  218. package/dist/number/operators/non-negative-finite-number.d.mts.map +1 -0
  219. package/dist/number/operators/non-negative-finite-number.mjs +7 -0
  220. package/dist/number/operators/non-negative-finite-number.mjs.map +1 -0
  221. package/dist/number/operators/non-negative-int16.d.mts +27 -0
  222. package/dist/number/operators/non-negative-int16.d.mts.map +1 -0
  223. package/dist/number/operators/non-negative-int16.mjs +8 -0
  224. package/dist/number/operators/non-negative-int16.mjs.map +1 -0
  225. package/dist/number/operators/non-negative-int32.d.mts +25 -0
  226. package/dist/number/operators/non-negative-int32.d.mts.map +1 -0
  227. package/dist/number/operators/non-negative-int32.mjs +8 -0
  228. package/dist/number/operators/non-negative-int32.mjs.map +1 -0
  229. package/dist/number/operators/non-positive-finite-number.d.mts +11 -0
  230. package/dist/number/operators/non-positive-finite-number.d.mts.map +1 -0
  231. package/dist/number/operators/non-positive-finite-number.mjs +7 -0
  232. package/dist/number/operators/non-positive-finite-number.mjs.map +1 -0
  233. package/dist/number/operators/non-positive-int.d.mts +10 -0
  234. package/dist/number/operators/non-positive-int.d.mts.map +1 -0
  235. package/dist/number/operators/non-positive-int.mjs +8 -0
  236. package/dist/number/operators/non-positive-int.mjs.map +1 -0
  237. package/dist/number/operators/non-positive-safe-int.d.mts +10 -0
  238. package/dist/number/operators/non-positive-safe-int.d.mts.map +1 -0
  239. package/dist/number/operators/non-positive-safe-int.mjs +8 -0
  240. package/dist/number/operators/non-positive-safe-int.mjs.map +1 -0
  241. package/dist/number/operators/non-zero-finite-number.d.mts +16 -0
  242. package/dist/number/operators/non-zero-finite-number.d.mts.map +1 -0
  243. package/dist/number/operators/non-zero-finite-number.mjs +8 -0
  244. package/dist/number/operators/non-zero-finite-number.mjs.map +1 -0
  245. package/dist/number/operators/non-zero-int.d.mts +10 -0
  246. package/dist/number/operators/non-zero-int.d.mts.map +1 -0
  247. package/dist/number/operators/non-zero-int.mjs +9 -0
  248. package/dist/number/operators/non-zero-int.mjs.map +1 -0
  249. package/dist/number/operators/non-zero-int16.d.mts +10 -0
  250. package/dist/number/operators/non-zero-int16.d.mts.map +1 -0
  251. package/dist/number/operators/non-zero-int16.mjs +9 -0
  252. package/dist/number/operators/non-zero-int16.mjs.map +1 -0
  253. package/dist/number/operators/non-zero-int32.d.mts +10 -0
  254. package/dist/number/operators/non-zero-int32.d.mts.map +1 -0
  255. package/dist/number/operators/non-zero-int32.mjs +9 -0
  256. package/dist/number/operators/non-zero-int32.mjs.map +1 -0
  257. package/dist/number/operators/non-zero-safe-int.d.mts +10 -0
  258. package/dist/number/operators/non-zero-safe-int.d.mts.map +1 -0
  259. package/dist/number/operators/non-zero-safe-int.mjs +11 -0
  260. package/dist/number/operators/non-zero-safe-int.mjs.map +1 -0
  261. package/dist/number/operators/non-zero-uint16.d.mts +2 -0
  262. package/dist/number/operators/non-zero-uint16.d.mts.map +1 -0
  263. package/dist/number/operators/non-zero-uint16.mjs +9 -0
  264. package/dist/number/operators/non-zero-uint16.mjs.map +1 -0
  265. package/dist/number/operators/non-zero-uint32.d.mts +2 -0
  266. package/dist/number/operators/non-zero-uint32.d.mts.map +1 -0
  267. package/dist/number/operators/non-zero-uint32.mjs +9 -0
  268. package/dist/number/operators/non-zero-uint32.mjs.map +1 -0
  269. package/dist/number/operators/positive-finite-number.d.mts +23 -0
  270. package/dist/number/operators/positive-finite-number.d.mts.map +1 -0
  271. package/dist/number/operators/positive-finite-number.mjs +7 -0
  272. package/dist/number/operators/positive-finite-number.mjs.map +1 -0
  273. package/dist/number/operators/positive-int.d.mts +23 -0
  274. package/dist/number/operators/positive-int.d.mts.map +1 -0
  275. package/dist/number/operators/positive-int.mjs +8 -0
  276. package/dist/number/operators/positive-int.mjs.map +1 -0
  277. package/dist/number/operators/positive-int16.d.mts +28 -0
  278. package/dist/number/operators/positive-int16.d.mts.map +1 -0
  279. package/dist/number/operators/positive-int16.mjs +8 -0
  280. package/dist/number/operators/positive-int16.mjs.map +1 -0
  281. package/dist/number/operators/positive-int32.d.mts +26 -0
  282. package/dist/number/operators/positive-int32.d.mts.map +1 -0
  283. package/dist/number/operators/positive-int32.mjs +8 -0
  284. package/dist/number/operators/positive-int32.mjs.map +1 -0
  285. package/dist/number/operators/positive-safe-int.d.mts +24 -0
  286. package/dist/number/operators/positive-safe-int.d.mts.map +1 -0
  287. package/dist/number/operators/positive-safe-int.mjs +9 -0
  288. package/dist/number/operators/positive-safe-int.mjs.map +1 -0
  289. package/dist/number/operators/positive-uint16.d.mts +27 -0
  290. package/dist/number/operators/positive-uint16.d.mts.map +1 -0
  291. package/dist/number/operators/positive-uint16.mjs +8 -0
  292. package/dist/number/operators/positive-uint16.mjs.map +1 -0
  293. package/dist/number/operators/positive-uint32.d.mts +25 -0
  294. package/dist/number/operators/positive-uint32.d.mts.map +1 -0
  295. package/dist/number/operators/positive-uint32.mjs +8 -0
  296. package/dist/number/operators/positive-uint32.mjs.map +1 -0
  297. package/dist/number/operators/safe-int.d.mts +17 -0
  298. package/dist/number/operators/safe-int.d.mts.map +1 -0
  299. package/dist/number/operators/safe-int.mjs +10 -0
  300. package/dist/number/operators/safe-int.mjs.map +1 -0
  301. package/dist/number/operators/safe-uint.d.mts +22 -0
  302. package/dist/number/operators/safe-uint.d.mts.map +1 -0
  303. package/dist/number/operators/safe-uint.mjs +9 -0
  304. package/dist/number/operators/safe-uint.mjs.map +1 -0
  305. package/dist/number/operators/uint.d.mts +14 -0
  306. package/dist/number/operators/uint.d.mts.map +1 -0
  307. package/dist/number/operators/uint.mjs +8 -0
  308. package/dist/number/operators/uint.mjs.map +1 -0
  309. package/dist/number/operators/uint16.d.mts +25 -0
  310. package/dist/number/operators/uint16.d.mts.map +1 -0
  311. package/dist/number/operators/uint16.mjs +8 -0
  312. package/dist/number/operators/uint16.mjs.map +1 -0
  313. package/dist/number/operators/uint32.d.mts +23 -0
  314. package/dist/number/operators/uint32.d.mts.map +1 -0
  315. package/dist/number/operators/uint32.mjs +8 -0
  316. package/dist/number/operators/uint32.mjs.map +1 -0
  317. package/dist/number/operators/uint8.d.mts +24 -0
  318. package/dist/number/operators/uint8.d.mts.map +1 -0
  319. package/dist/number/operators/uint8.mjs +8 -0
  320. package/dist/number/operators/uint8.mjs.map +1 -0
  321. package/dist/number/refined-number-utils.d.mts +2 -2
  322. package/dist/number/refined-number-utils.d.mts.map +1 -1
  323. package/dist/number/refined-number-utils.mjs +1 -1
  324. package/dist/number/refined-number-utils.mjs.map +1 -1
  325. package/dist/object/object.d.mts +8 -0
  326. package/dist/object/object.d.mts.map +1 -1
  327. package/dist/object/object.mjs +17 -5
  328. package/dist/object/object.mjs.map +1 -1
  329. package/dist/others/fast-deep-equal.mjs +1 -1
  330. package/dist/others/fast-deep-equal.mjs.map +1 -1
  331. package/dist/others/replace-equal-deep.mjs +10 -3
  332. package/dist/others/replace-equal-deep.mjs.map +1 -1
  333. package/package.json +22 -9
  334. package/src/array/impl/array-utils-reducing-value.mts +4 -3
  335. package/src/array/impl/array-utils-shape-invariants.test.mts +1 -1
  336. package/src/array/impl/array-utils-slice-clamped.mts +1 -1
  337. package/src/array/impl/array-utils-slicing.mts +12 -3
  338. package/src/array/impl/array-utils-transformation.mts +7 -3
  339. package/src/array/impl/array-utils-transformation.test.mts +52 -3
  340. package/src/array/impl/array-utils-validation.mts +2 -1
  341. package/src/built-in-tag.mts +59 -0
  342. package/src/built-in-tag.test.mts +215 -0
  343. package/src/collections/imap-mapped.mts +6 -4
  344. package/src/collections/imap-mapped.test.mts +27 -0
  345. package/src/collections/imap.mts +6 -4
  346. package/src/collections/imap.test.mts +13 -0
  347. package/src/collections/stack.mts +3 -3
  348. package/src/iterator/range.mts +10 -2
  349. package/src/iterator/range.test.mts +7 -0
  350. package/src/json/json.mts +17 -57
  351. package/src/json/json.test.mts +32 -0
  352. package/src/number/branded-types/finite-number.mts +23 -25
  353. package/src/number/branded-types/int.mts +20 -26
  354. package/src/number/branded-types/int16.mts +21 -26
  355. package/src/number/branded-types/int32.mts +21 -26
  356. package/src/number/branded-types/negative-finite-number.mts +25 -26
  357. package/src/number/branded-types/negative-int.mts +20 -27
  358. package/src/number/branded-types/negative-safe-int.mts +23 -28
  359. package/src/number/branded-types/non-negative-finite-number.mts +24 -25
  360. package/src/number/branded-types/non-negative-int16.mts +23 -26
  361. package/src/number/branded-types/non-negative-int32.mts +23 -26
  362. package/src/number/branded-types/non-positive-finite-number.mts +24 -25
  363. package/src/number/branded-types/non-positive-int.mts +20 -26
  364. package/src/number/branded-types/non-positive-safe-int.mts +21 -26
  365. package/src/number/branded-types/non-zero-finite-number.mts +23 -25
  366. package/src/number/branded-types/non-zero-int.mts +19 -25
  367. package/src/number/branded-types/non-zero-int16.mts +27 -28
  368. package/src/number/branded-types/non-zero-int32.mts +27 -28
  369. package/src/number/branded-types/non-zero-safe-int.mts +25 -35
  370. package/src/number/branded-types/non-zero-uint16.mts +24 -28
  371. package/src/number/branded-types/non-zero-uint32.mts +24 -28
  372. package/src/number/branded-types/positive-finite-number.mts +25 -25
  373. package/src/number/branded-types/positive-int.mts +21 -26
  374. package/src/number/branded-types/positive-int16.mts +23 -26
  375. package/src/number/branded-types/positive-int32.mts +23 -26
  376. package/src/number/branded-types/positive-safe-int.mts +24 -31
  377. package/src/number/branded-types/positive-uint16.mts +23 -26
  378. package/src/number/branded-types/positive-uint32.mts +23 -26
  379. package/src/number/branded-types/safe-int.mts +22 -29
  380. package/src/number/branded-types/safe-uint.mts +21 -27
  381. package/src/number/branded-types/uint.mts +21 -26
  382. package/src/number/branded-types/uint16.mts +21 -26
  383. package/src/number/branded-types/uint32.mts +21 -26
  384. package/src/number/enum/int8.mts +40 -52
  385. package/src/number/enum/uint8.mts +40 -48
  386. package/src/number/index.mts +1 -1
  387. package/src/number/num/impl/index.mts +1 -0
  388. package/src/number/num/impl/num.mts +715 -0
  389. package/src/number/{num.test.mts → num/impl/num.test.mts} +17 -5
  390. package/src/number/num/index.mts +16 -0
  391. package/src/number/num-arithmetic.test.mts +1 -1
  392. package/src/number/operators/finite-number.mts +20 -0
  393. package/src/number/operators/int.mts +20 -0
  394. package/src/number/operators/int16.mts +33 -0
  395. package/src/number/operators/int32.mts +33 -0
  396. package/src/number/operators/int8.mts +18 -0
  397. package/src/number/operators/negative-finite-number.mts +22 -0
  398. package/src/number/operators/negative-int.mts +22 -0
  399. package/src/number/operators/negative-safe-int.mts +32 -0
  400. package/src/number/operators/non-negative-finite-number.mts +32 -0
  401. package/src/number/operators/non-negative-int16.mts +33 -0
  402. package/src/number/operators/non-negative-int32.mts +33 -0
  403. package/src/number/operators/non-positive-finite-number.mts +21 -0
  404. package/src/number/operators/non-positive-int.mts +21 -0
  405. package/src/number/operators/non-positive-safe-int.mts +31 -0
  406. package/src/number/operators/non-zero-finite-number.mts +21 -0
  407. package/src/number/operators/non-zero-int.mts +22 -0
  408. package/src/number/operators/non-zero-int16.mts +32 -0
  409. package/src/number/operators/non-zero-int32.mts +32 -0
  410. package/src/number/operators/non-zero-safe-int.mts +34 -0
  411. package/src/number/operators/non-zero-uint16.mts +32 -0
  412. package/src/number/operators/non-zero-uint32.mts +32 -0
  413. package/src/number/operators/positive-finite-number.mts +32 -0
  414. package/src/number/operators/positive-int.mts +32 -0
  415. package/src/number/operators/positive-int16.mts +33 -0
  416. package/src/number/operators/positive-int32.mts +33 -0
  417. package/src/number/operators/positive-safe-int.mts +34 -0
  418. package/src/number/operators/positive-uint16.mts +33 -0
  419. package/src/number/operators/positive-uint32.mts +33 -0
  420. package/src/number/operators/safe-int.mts +35 -0
  421. package/src/number/operators/safe-uint.mts +33 -0
  422. package/src/number/operators/uint.mts +31 -0
  423. package/src/number/operators/uint16.mts +32 -0
  424. package/src/number/operators/uint32.mts +32 -0
  425. package/src/number/operators/uint8.mts +16 -0
  426. package/src/number/refined-number-utils.mts +4 -4
  427. package/src/object/object.mts +33 -5
  428. package/src/object/object.test.mts +55 -0
  429. package/src/others/fast-deep-equal.mts +1 -1
  430. package/src/others/replace-equal-deep.mts +11 -4
  431. package/src/others/replace-equal-deep.test.mts +26 -0
  432. package/dist/number/num.d.mts +0 -546
  433. package/dist/number/num.d.mts.map +0 -1
  434. package/dist/number/num.mjs +0 -559
  435. package/dist/number/num.mjs.map +0 -1
  436. package/src/guard/is-error.test.mts +0 -145
  437. package/src/number/num.mts +0 -731
@@ -4,35 +4,24 @@ import type {
4
4
  FiniteNumber as TtfImported_FiniteNumber,
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 FiniteNumber = TtfImported_FiniteNumber;
10
-
11
- type ElementType = FiniteNumber;
12
-
13
- const typeNameInMessage = 'a finite number';
14
-
15
- const {
7
+ import {
16
8
  abs,
17
9
  add,
18
- castType,
19
10
  div,
20
- is,
21
- max: max_,
22
- min: min_,
11
+ max as max_,
12
+ min as min_,
23
13
  mul,
24
14
  pow,
25
15
  random,
26
16
  sub,
27
- } = TsDataForgeInternals.RefinedNumberUtils.operatorsForFloat<
28
- ElementType,
29
- number,
30
- number
31
- >({
32
- MIN_VALUE: -Number.MAX_VALUE,
33
- MAX_VALUE: Number.MAX_VALUE,
34
- typeNameInMessage,
35
- } as const);
17
+ } from '../operators/finite-number.mjs';
18
+ import type { TsDataForgeInternals } from '../refined-number-utils.mjs';
19
+
20
+ export type FiniteNumber = TtfImported_FiniteNumber;
21
+
22
+ type ElementType = FiniteNumber;
23
+
24
+ const typeNameInMessage = 'a finite number';
36
25
 
37
26
  const floor = (
38
27
  x: ElementType,
@@ -65,7 +54,8 @@ expectType<TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>, Int>(
65
54
  * @param value - The value to check
66
55
  * @returns `true` if the value is a finite number, `false` otherwise
67
56
  */
68
- export const isFiniteNumber = is;
57
+ export const isFiniteNumber = (value: number): value is FiniteNumber =>
58
+ Number.isFinite(value);
69
59
 
70
60
  /**
71
61
  * Casts a `number` to the `FiniteNumber` branded type.
@@ -77,7 +67,15 @@ export const isFiniteNumber = is;
77
67
  * @returns The value as a `FiniteNumber`
78
68
  * @throws {TypeError} If the value is not a finite number
79
69
  */
80
- export const asFiniteNumber = castType;
70
+ export const asFiniteNumber = <N extends number>(
71
+ value: N,
72
+ ): FiniteNumber & N => {
73
+ if (!isFiniteNumber(value)) {
74
+ throw new TypeError(`Expected ${typeNameInMessage}, got: ${value}`);
75
+ }
76
+
77
+ return value;
78
+ };
81
79
 
82
80
  /**
83
81
  * Namespace providing type-safe operations for the `FiniteNumber` branded type.
@@ -92,7 +90,7 @@ export const FiniteNumber = {
92
90
  * @returns `true` if the value is a finite number, `false` otherwise
93
91
  * @see {@link isFiniteNumber} for usage examples
94
92
  */
95
- is,
93
+ is: isFiniteNumber,
96
94
 
97
95
  /**
98
96
  * Returns the absolute value of a finite number.
@@ -1,35 +1,23 @@
1
1
  import type { Int as TtfImported_Int } from 'ts-type-forge';
2
2
  import { expectType } from '../../expect-type.mjs';
3
- import { TsDataForgeInternals } from '../refined-number-utils.mjs';
4
-
5
- export type Int = TtfImported_Int;
6
-
7
- type ElementType = Int;
8
-
9
- const typeNameInMessage = 'an integer';
10
-
11
- const {
3
+ import {
12
4
  abs,
13
5
  add,
14
- castType,
15
6
  div,
16
- is,
17
- max: max_,
18
- min: min_,
7
+ max as max_,
8
+ min as min_,
19
9
  mul,
20
10
  pow,
21
11
  random,
22
12
  sub,
23
- } = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<
24
- ElementType,
25
- number,
26
- number
27
- >({
28
- integerOrSafeInteger: 'Integer',
29
- MIN_VALUE: -Number.MAX_VALUE,
30
- MAX_VALUE: Number.MAX_VALUE,
31
- typeNameInMessage,
32
- } as const);
13
+ } from '../operators/int.mjs';
14
+ import type { TsDataForgeInternals } from '../refined-number-utils.mjs';
15
+
16
+ export type Int = TtfImported_Int;
17
+
18
+ type ElementType = Int;
19
+
20
+ const typeNameInMessage = 'an integer';
33
21
 
34
22
  /**
35
23
  * Type guard that checks if a value is an integer.
@@ -50,7 +38,7 @@ const {
50
38
  * @param value - The value to check
51
39
  * @returns `true` if the value is an integer, `false` otherwise
52
40
  */
53
- export const isInt = is;
41
+ export const isInt = (value: number): value is Int => Number.isInteger(value);
54
42
 
55
43
  /**
56
44
  * Casts a `number` to the `Int` branded type.
@@ -72,7 +60,13 @@ export const isInt = is;
72
60
  * @returns The value as an `Int`
73
61
  * @throws {TypeError} If the value is not an integer
74
62
  */
75
- export const asInt = castType;
63
+ export const asInt = <N extends number>(value: N): Int & N => {
64
+ if (!isInt(value)) {
65
+ throw new TypeError(`Expected ${typeNameInMessage}, got: ${value}`);
66
+ }
67
+
68
+ return value;
69
+ };
76
70
 
77
71
  /**
78
72
  * Namespace providing type-safe operations for the `Int` branded type.
@@ -101,7 +95,7 @@ export const Int = {
101
95
  * @returns `true` if the value is an integer, `false` otherwise
102
96
  * @see {@link isInt} for usage examples
103
97
  */
104
- is,
98
+ is: isInt,
105
99
 
106
100
  /**
107
101
  * Returns the absolute value of an integer.
@@ -1,38 +1,26 @@
1
1
  import type { Int16 as TtfImported_Int16 } from 'ts-type-forge';
2
2
  import { expectType } from '../../expect-type.mjs';
3
- import { TsDataForgeInternals } from '../refined-number-utils.mjs';
4
-
5
- export type Int16 = TtfImported_Int16;
6
-
7
- type ElementType = Int16;
8
-
9
- const typeNameInMessage = 'an integer in [-2^15, 2^15)';
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
- number,
29
- number
30
- >({
31
- integerOrSafeInteger: 'SafeInteger',
32
- MIN_VALUE: -(2 ** 15),
33
- MAX_VALUE: 2 ** 15 - 1,
34
- typeNameInMessage,
35
- } as const);
16
+ } from '../operators/int16.mjs';
17
+ import type { TsDataForgeInternals } from '../refined-number-utils.mjs';
18
+
19
+ export type Int16 = TtfImported_Int16;
20
+
21
+ type ElementType = Int16;
22
+
23
+ const typeNameInMessage = 'an integer in [-2^15, 2^15)';
36
24
 
37
25
  /**
38
26
  * Type guard that checks if a value is an integer in [-2^15, 2^15).
@@ -43,7 +31,8 @@ const {
43
31
  * @param value - The value to check
44
32
  * @returns `true` if the value is an integer in [-2^15, 2^15), `false` otherwise
45
33
  */
46
- export const isInt16 = is;
34
+ export const isInt16 = (value: number): value is Int16 =>
35
+ Number.isSafeInteger(value) && -(2 ** 15) <= value && value <= 2 ** 15 - 1;
47
36
 
48
37
  /**
49
38
  * Casts a `number` to the `Int16` branded type.
@@ -55,7 +44,13 @@ export const isInt16 = is;
55
44
  * @returns The value as an `Int16`
56
45
  * @throws {TypeError} If the value is not an integer in [-2^15, 2^15)
57
46
  */
58
- export const asInt16 = castType;
47
+ export const asInt16 = <N extends number>(value: N): Int16 & N => {
48
+ if (!isInt16(value)) {
49
+ throw new TypeError(`Expected ${typeNameInMessage}, got: ${value}`);
50
+ }
51
+
52
+ return value;
53
+ };
59
54
 
60
55
  /**
61
56
  * Namespace providing type-safe operations for the `Int16` branded type.
@@ -71,7 +66,7 @@ export const Int16 = {
71
66
  * @returns `true` if the value is an integer in [-2^15, 2^15), `false` otherwise
72
67
  * @see {@link isInt16} for usage examples
73
68
  */
74
- is,
69
+ is: isInt16,
75
70
 
76
71
  /**
77
72
  * The smallest value representable as `Int16` (the lower saturation target of
@@ -1,38 +1,26 @@
1
1
  import type { Int32 as TtfImported_Int32 } from 'ts-type-forge';
2
2
  import { expectType } from '../../expect-type.mjs';
3
- import { TsDataForgeInternals } from '../refined-number-utils.mjs';
4
-
5
- export type Int32 = TtfImported_Int32;
6
-
7
- type ElementType = Int32;
8
-
9
- const typeNameInMessage = 'an integer in [-2^31, 2^31)';
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
- number,
29
- number
30
- >({
31
- integerOrSafeInteger: 'SafeInteger',
32
- MIN_VALUE: -(2 ** 31),
33
- MAX_VALUE: 2 ** 31 - 1,
34
- typeNameInMessage,
35
- } as const);
16
+ } from '../operators/int32.mjs';
17
+ import type { TsDataForgeInternals } from '../refined-number-utils.mjs';
18
+
19
+ export type Int32 = TtfImported_Int32;
20
+
21
+ type ElementType = Int32;
22
+
23
+ const typeNameInMessage = 'an integer in [-2^31, 2^31)';
36
24
 
37
25
  /**
38
26
  * Type guard that checks if a value is an integer in [-2^31, 2^31).
@@ -43,7 +31,8 @@ const {
43
31
  * @param value - The value to check
44
32
  * @returns `true` if the value is an integer in [-2^31, 2^31), `false` otherwise
45
33
  */
46
- export const isInt32 = is;
34
+ export const isInt32 = (value: number): value is Int32 =>
35
+ Number.isSafeInteger(value) && -(2 ** 31) <= value && value <= 2 ** 31 - 1;
47
36
 
48
37
  /**
49
38
  * Casts a `number` to the `Int32` branded type.
@@ -55,7 +44,13 @@ export const isInt32 = is;
55
44
  * @returns The value as an `Int32`
56
45
  * @throws {TypeError} If the value is not an integer in [-2^31, 2^31)
57
46
  */
58
- export const asInt32 = castType;
47
+ export const asInt32 = <N extends number>(value: N): Int32 & N => {
48
+ if (!isInt32(value)) {
49
+ throw new TypeError(`Expected ${typeNameInMessage}, got: ${value}`);
50
+ }
51
+
52
+ return value;
53
+ };
59
54
 
60
55
  /**
61
56
  * Namespace providing type-safe operations for the `Int32` branded type.
@@ -71,7 +66,7 @@ export const Int32 = {
71
66
  * @returns `true` if the value is an integer in [-2^31, 2^31), `false` otherwise
72
67
  * @see {@link isInt32} for usage examples
73
68
  */
74
- is,
69
+ is: isInt32,
75
70
 
76
71
  /**
77
72
  * The smallest value representable as `Int32` (the lower saturation target of
@@ -1,5 +1,15 @@
1
1
  import type { NegativeFiniteNumber as TtfImported_NegativeFiniteNumber } from 'ts-type-forge';
2
- import { TsDataForgeInternals } from '../refined-number-utils.mjs';
2
+ import {
3
+ MAX_VALUE,
4
+ add,
5
+ fromNumber,
6
+ max as max_,
7
+ min as min_,
8
+ pow,
9
+ random,
10
+ sub,
11
+ } from '../operators/negative-finite-number.mjs';
12
+ import type { TsDataForgeInternals } from '../refined-number-utils.mjs';
3
13
  import { PositiveFiniteNumber } from './positive-finite-number.mjs';
4
14
 
5
15
  export type NegativeFiniteNumber = TtfImported_NegativeFiniteNumber;
@@ -8,28 +18,6 @@ type ElementType = NegativeFiniteNumber;
8
18
 
9
19
  const typeNameInMessage = 'a negative finite number';
10
20
 
11
- const {
12
- MAX_VALUE,
13
- add,
14
- castType,
15
- fromNumber,
16
- is,
17
- max: max_,
18
- min: min_,
19
- pow,
20
- random,
21
- sub,
22
- } = TsDataForgeInternals.RefinedNumberUtils.operatorsForFloat<
23
- ElementType,
24
- number,
25
- number
26
- >({
27
- nonZero: true,
28
- MIN_VALUE: -Number.MAX_VALUE,
29
- MAX_VALUE: -Number.MIN_VALUE,
30
- typeNameInMessage,
31
- } as const);
32
-
33
21
  const abs = (x: ElementType): PositiveFiniteNumber =>
34
22
  PositiveFiniteNumber.fromNumber(Math.abs(x));
35
23
 
@@ -70,7 +58,10 @@ const round = (
70
58
  * @param value - The value to check
71
59
  * @returns `true` if the value is a negative finite number, `false` otherwise
72
60
  */
73
- export const isNegativeFiniteNumber = is;
61
+ export const isNegativeFiniteNumber = (
62
+ value: number,
63
+ ): value is NegativeFiniteNumber =>
64
+ Number.isFinite(value) && value <= -Number.MIN_VALUE;
74
65
 
75
66
  /**
76
67
  * Casts a `number` to the `NegativeFiniteNumber` branded type.
@@ -82,7 +73,15 @@ export const isNegativeFiniteNumber = is;
82
73
  * @returns The value as a `NegativeFiniteNumber`
83
74
  * @throws {TypeError} If the value is not a negative finite number
84
75
  */
85
- export const asNegativeFiniteNumber = castType;
76
+ export const asNegativeFiniteNumber = <N extends number>(
77
+ value: N,
78
+ ): NegativeFiniteNumber & N => {
79
+ if (!isNegativeFiniteNumber(value)) {
80
+ throw new TypeError(`Expected ${typeNameInMessage}, got: ${value}`);
81
+ }
82
+
83
+ return value;
84
+ };
86
85
 
87
86
  /**
88
87
  * Namespace providing type-safe operations for the `NegativeFiniteNumber`
@@ -98,7 +97,7 @@ export const NegativeFiniteNumber = {
98
97
  * @returns `true` if the value is a negative finite number, `false` otherwise
99
98
  * @see {@link isNegativeFiniteNumber} for usage examples
100
99
  */
101
- is,
100
+ is: isNegativeFiniteNumber,
102
101
 
103
102
  /**
104
103
  * The largest value representable as `NegativeFiniteNumber` (the upper
@@ -2,7 +2,16 @@ import type {
2
2
  NegativeInt as TtfImported_NegativeInt,
3
3
  WithSmallInt,
4
4
  } from 'ts-type-forge';
5
- import { TsDataForgeInternals } from '../refined-number-utils.mjs';
5
+ import {
6
+ MAX_VALUE,
7
+ add,
8
+ fromNumber,
9
+ max as max_,
10
+ min as min_,
11
+ pow,
12
+ random,
13
+ sub,
14
+ } from '../operators/negative-int.mjs';
6
15
  import { PositiveInt } from './positive-int.mjs';
7
16
 
8
17
  export type NegativeInt = TtfImported_NegativeInt;
@@ -11,29 +20,6 @@ type ElementType = NegativeInt;
11
20
 
12
21
  const typeNameInMessage = 'a negative integer';
13
22
 
14
- const {
15
- MAX_VALUE,
16
- add,
17
- castType,
18
- fromNumber,
19
- is,
20
- max: max_,
21
- min: min_,
22
- pow,
23
- random,
24
- sub,
25
- } = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<
26
- ElementType,
27
- number,
28
- -1
29
- >({
30
- integerOrSafeInteger: 'Integer',
31
- nonZero: true,
32
- MIN_VALUE: -Number.MAX_VALUE,
33
- MAX_VALUE: -1,
34
- typeNameInMessage,
35
- } as const);
36
-
37
23
  const abs = (x: WithSmallInt<ElementType>): PositiveInt =>
38
24
  PositiveInt.fromNumber(Math.abs(x));
39
25
 
@@ -46,7 +32,8 @@ const abs = (x: WithSmallInt<ElementType>): PositiveInt =>
46
32
  * @param value - The value to check
47
33
  * @returns `true` if the value is a negative integer, `false` otherwise
48
34
  */
49
- export const isNegativeInt = is;
35
+ export const isNegativeInt = (value: number): value is NegativeInt =>
36
+ Number.isInteger(value) && value <= -1;
50
37
 
51
38
  /**
52
39
  * Casts a `number` to the `NegativeInt` branded type.
@@ -58,7 +45,13 @@ export const isNegativeInt = is;
58
45
  * @returns The value as a `NegativeInt`
59
46
  * @throws {TypeError} If the value is not a negative integer
60
47
  */
61
- export const asNegativeInt = castType;
48
+ export const asNegativeInt = <N extends number>(value: N): NegativeInt & N => {
49
+ if (!isNegativeInt(value)) {
50
+ throw new TypeError(`Expected ${typeNameInMessage}, got: ${value}`);
51
+ }
52
+
53
+ return value;
54
+ };
62
55
 
63
56
  /**
64
57
  * Namespace providing type-safe operations for the `NegativeInt` branded type.
@@ -78,7 +71,7 @@ export const NegativeInt = {
78
71
  * @returns `true` if the value is a negative integer, `false` otherwise
79
72
  * @see {@link isNegativeInt} for usage examples
80
73
  */
81
- is,
74
+ is: isNegativeInt,
82
75
 
83
76
  /**
84
77
  * The largest value representable as `NegativeInt` (the upper saturation
@@ -2,38 +2,24 @@ import type {
2
2
  NegativeSafeInt as TtfImported_NegativeSafeInt,
3
3
  WithSmallInt,
4
4
  } from 'ts-type-forge';
5
- import { TsDataForgeInternals } from '../refined-number-utils.mjs';
6
- import { PositiveSafeInt } from './positive-safe-int.mjs';
7
-
8
- export type NegativeSafeInt = TtfImported_NegativeSafeInt;
9
-
10
- type ElementType = NegativeSafeInt;
11
-
12
- const typeNameInMessage = 'a negative safe integer';
13
-
14
- const {
5
+ import {
15
6
  MAX_VALUE,
16
7
  MIN_VALUE,
17
8
  add,
18
- castType,
19
9
  fromNumber,
20
- is,
21
- max: max_,
22
- min: min_,
10
+ max as max_,
11
+ min as min_,
23
12
  pow,
24
13
  random,
25
14
  sub,
26
- } = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<
27
- ElementType,
28
- number,
29
- -1
30
- >({
31
- integerOrSafeInteger: 'SafeInteger',
32
- nonZero: true,
33
- MIN_VALUE: Number.MIN_SAFE_INTEGER,
34
- MAX_VALUE: -1,
35
- typeNameInMessage,
36
- } as const);
15
+ } from '../operators/negative-safe-int.mjs';
16
+ import { PositiveSafeInt } from './positive-safe-int.mjs';
17
+
18
+ export type NegativeSafeInt = TtfImported_NegativeSafeInt;
19
+
20
+ type ElementType = NegativeSafeInt;
21
+
22
+ const typeNameInMessage = 'a negative safe integer';
37
23
 
38
24
  const abs = (x: WithSmallInt<ElementType>): PositiveSafeInt =>
39
25
  PositiveSafeInt.fromNumber(Math.abs(x));
@@ -47,7 +33,8 @@ const abs = (x: WithSmallInt<ElementType>): PositiveSafeInt =>
47
33
  * @param value - The value to check
48
34
  * @returns `true` if the value is a negative safe integer, `false` otherwise
49
35
  */
50
- export const isNegativeSafeInt = is;
36
+ export const isNegativeSafeInt = (value: number): value is NegativeSafeInt =>
37
+ Number.isSafeInteger(value) && value <= -1;
51
38
 
52
39
  /**
53
40
  * Casts a `number` to the `NegativeSafeInt` branded type.
@@ -59,7 +46,15 @@ export const isNegativeSafeInt = is;
59
46
  * @returns The value as a `NegativeSafeInt`
60
47
  * @throws {TypeError} If the value is not a negative safe integer
61
48
  */
62
- export const asNegativeSafeInt = castType;
49
+ export const asNegativeSafeInt = <N extends number>(
50
+ value: N,
51
+ ): NegativeSafeInt & N => {
52
+ if (!isNegativeSafeInt(value)) {
53
+ throw new TypeError(`Expected ${typeNameInMessage}, got: ${value}`);
54
+ }
55
+
56
+ return value;
57
+ };
63
58
 
64
59
  /**
65
60
  * Namespace providing type-safe operations for the `NegativeSafeInt` branded
@@ -76,7 +71,7 @@ export const NegativeSafeInt = {
76
71
  * @returns `true` if the value is a negative safe integer, `false` otherwise
77
72
  * @see {@link isNegativeSafeInt} for usage examples
78
73
  */
79
- is,
74
+ is: isNegativeSafeInt,
80
75
 
81
76
  /**
82
77
  * The smallest value representable as `NegativeSafeInt` (the lower saturation
@@ -3,36 +3,25 @@ import type {
3
3
  Uint,
4
4
  } from 'ts-type-forge';
5
5
  import { expectType } from '../../expect-type.mjs';
6
- import { TsDataForgeInternals } from '../refined-number-utils.mjs';
7
-
8
- export type NonNegativeFiniteNumber = TtfImported_NonNegativeFiniteNumber;
9
-
10
- type ElementType = NonNegativeFiniteNumber;
11
-
12
- const typeNameInMessage = 'a non-negative finite number';
13
-
14
- const {
6
+ import {
15
7
  MIN_VALUE,
16
8
  add,
17
- castType,
18
9
  div,
19
10
  fromNumber,
20
- is,
21
- max: max_,
22
- min: min_,
11
+ max as max_,
12
+ min as min_,
23
13
  mul,
24
14
  pow,
25
15
  random,
26
16
  sub,
27
- } = TsDataForgeInternals.RefinedNumberUtils.operatorsForFloat<
28
- ElementType,
29
- 0,
30
- number
31
- >({
32
- MIN_VALUE: 0,
33
- MAX_VALUE: Number.MAX_VALUE,
34
- typeNameInMessage,
35
- } as const);
17
+ } from '../operators/non-negative-finite-number.mjs';
18
+ import type { TsDataForgeInternals } from '../refined-number-utils.mjs';
19
+
20
+ export type NonNegativeFiniteNumber = TtfImported_NonNegativeFiniteNumber;
21
+
22
+ type ElementType = NonNegativeFiniteNumber;
23
+
24
+ const typeNameInMessage = 'a non-negative finite number';
36
25
 
37
26
  const floor = (
38
27
  x: ElementType,
@@ -65,7 +54,9 @@ expectType<TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>, Uint>(
65
54
  * @param value - The value to check
66
55
  * @returns `true` if the value is a non-negative finite number, `false` otherwise
67
56
  */
68
- export const isNonNegativeFiniteNumber = is;
57
+ export const isNonNegativeFiniteNumber = (
58
+ value: number,
59
+ ): value is NonNegativeFiniteNumber => Number.isFinite(value) && value >= 0;
69
60
 
70
61
  /**
71
62
  * Casts a `number` to the `NonNegativeFiniteNumber` branded type.
@@ -77,7 +68,15 @@ export const isNonNegativeFiniteNumber = is;
77
68
  * @returns The value as a `NonNegativeFiniteNumber`
78
69
  * @throws {TypeError} If the value is not a non-negative finite number
79
70
  */
80
- export const asNonNegativeFiniteNumber = castType;
71
+ export const asNonNegativeFiniteNumber = <N extends number>(
72
+ value: N,
73
+ ): NonNegativeFiniteNumber & N => {
74
+ if (!isNonNegativeFiniteNumber(value)) {
75
+ throw new TypeError(`Expected ${typeNameInMessage}, got: ${value}`);
76
+ }
77
+
78
+ return value;
79
+ };
81
80
 
82
81
  /**
83
82
  * Namespace providing type-safe operations for the `NonNegativeFiniteNumber`
@@ -93,7 +92,7 @@ export const NonNegativeFiniteNumber = {
93
92
  * @returns `true` if the value is a non-negative finite number, `false` otherwise
94
93
  * @see {@link isNonNegativeFiniteNumber} for usage examples
95
94
  */
96
- is,
95
+ is: isNonNegativeFiniteNumber,
97
96
 
98
97
  /**
99
98
  * The smallest value representable as `NonNegativeFiniteNumber` (the lower