ts-data-forge 3.3.0 → 3.3.1

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 (424) hide show
  1. package/README.md +37 -13
  2. package/dist/array/impl/array-utils-creation.d.mts +116 -0
  3. package/dist/array/impl/array-utils-creation.d.mts.map +1 -0
  4. package/dist/array/impl/array-utils-creation.mjs +110 -0
  5. package/dist/array/impl/array-utils-creation.mjs.map +1 -0
  6. package/dist/array/impl/array-utils-element-access.d.mts +61 -0
  7. package/dist/array/impl/array-utils-element-access.d.mts.map +1 -0
  8. package/dist/array/impl/array-utils-element-access.mjs +66 -0
  9. package/dist/array/impl/array-utils-element-access.mjs.map +1 -0
  10. package/dist/array/impl/array-utils-iterators.d.mts +59 -0
  11. package/dist/array/impl/array-utils-iterators.d.mts.map +1 -0
  12. package/dist/array/impl/array-utils-iterators.mjs +104 -0
  13. package/dist/array/impl/array-utils-iterators.mjs.map +1 -0
  14. package/dist/array/impl/array-utils-modification.d.mts +154 -0
  15. package/dist/array/impl/array-utils-modification.d.mts.map +1 -0
  16. package/dist/array/impl/array-utils-modification.mjs +139 -0
  17. package/dist/array/impl/array-utils-modification.mjs.map +1 -0
  18. package/dist/array/impl/array-utils-reducing-value.d.mts +214 -0
  19. package/dist/array/impl/array-utils-reducing-value.d.mts.map +1 -0
  20. package/dist/array/impl/array-utils-reducing-value.mjs +160 -0
  21. package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -0
  22. package/dist/array/impl/array-utils-search.d.mts +179 -0
  23. package/dist/array/impl/array-utils-search.d.mts.map +1 -0
  24. package/dist/array/impl/array-utils-search.mjs +153 -0
  25. package/dist/array/impl/array-utils-search.mjs.map +1 -0
  26. package/dist/array/impl/array-utils-set-op.d.mts +100 -0
  27. package/dist/array/impl/array-utils-set-op.d.mts.map +1 -0
  28. package/dist/array/impl/array-utils-set-op.mjs +137 -0
  29. package/dist/array/impl/array-utils-set-op.mjs.map +1 -0
  30. package/dist/array/impl/array-utils-size.d.mts +24 -0
  31. package/dist/array/impl/array-utils-size.d.mts.map +1 -0
  32. package/dist/array/impl/array-utils-size.mjs +28 -0
  33. package/dist/array/impl/array-utils-size.mjs.map +1 -0
  34. package/dist/array/impl/array-utils-slice-clamped.d.mts +18 -0
  35. package/dist/array/impl/array-utils-slice-clamped.d.mts.map +1 -0
  36. package/dist/array/impl/array-utils-slice-clamped.mjs +49 -0
  37. package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -0
  38. package/dist/array/impl/array-utils-slicing.d.mts +120 -0
  39. package/dist/array/impl/array-utils-slicing.d.mts.map +1 -0
  40. package/dist/array/impl/array-utils-slicing.mjs +140 -0
  41. package/dist/array/impl/array-utils-slicing.mjs.map +1 -0
  42. package/dist/array/impl/array-utils-transformation.d.mts +348 -0
  43. package/dist/array/impl/array-utils-transformation.d.mts.map +1 -0
  44. package/dist/array/impl/array-utils-transformation.mjs +331 -0
  45. package/dist/array/impl/array-utils-transformation.mjs.map +1 -0
  46. package/dist/array/impl/array-utils-validation.d.mts +149 -0
  47. package/dist/array/impl/array-utils-validation.d.mts.map +1 -0
  48. package/dist/array/impl/array-utils-validation.mjs +166 -0
  49. package/dist/array/impl/array-utils-validation.mjs.map +1 -0
  50. package/dist/array/impl/index.d.mts +13 -0
  51. package/dist/array/impl/index.d.mts.map +1 -0
  52. package/dist/array/impl/index.mjs +13 -0
  53. package/dist/array/impl/index.mjs.map +1 -0
  54. package/dist/array/index.d.mts +1 -1
  55. package/dist/array/index.d.mts.map +1 -1
  56. package/dist/array/index.mjs +2 -1
  57. package/dist/array/index.mjs.map +1 -1
  58. package/dist/collections/imap-mapped.d.mts +83 -253
  59. package/dist/collections/imap-mapped.d.mts.map +1 -1
  60. package/dist/collections/imap-mapped.mjs +33 -164
  61. package/dist/collections/imap-mapped.mjs.map +1 -1
  62. package/dist/collections/imap.d.mts +436 -163
  63. package/dist/collections/imap.d.mts.map +1 -1
  64. package/dist/collections/imap.mjs +74 -94
  65. package/dist/collections/imap.mjs.map +1 -1
  66. package/dist/collections/iset-mapped.d.mts +828 -345
  67. package/dist/collections/iset-mapped.d.mts.map +1 -1
  68. package/dist/collections/iset-mapped.mjs +200 -242
  69. package/dist/collections/iset-mapped.mjs.map +1 -1
  70. package/dist/collections/iset.d.mts +397 -205
  71. package/dist/collections/iset.d.mts.map +1 -1
  72. package/dist/collections/iset.mjs +102 -184
  73. package/dist/collections/iset.mjs.map +1 -1
  74. package/dist/collections/queue.d.mts +155 -135
  75. package/dist/collections/queue.d.mts.map +1 -1
  76. package/dist/collections/queue.mjs +55 -156
  77. package/dist/collections/queue.mjs.map +1 -1
  78. package/dist/collections/stack.d.mts +154 -154
  79. package/dist/collections/stack.d.mts.map +1 -1
  80. package/dist/collections/stack.mjs +54 -203
  81. package/dist/collections/stack.mjs.map +1 -1
  82. package/dist/entry-point.d.mts +1 -0
  83. package/dist/entry-point.d.mts.map +1 -1
  84. package/dist/entry-point.mjs +2 -1
  85. package/dist/entry-point.mjs.map +1 -1
  86. package/dist/expect-type.d.mts +43 -172
  87. package/dist/expect-type.d.mts.map +1 -1
  88. package/dist/expect-type.mjs +43 -172
  89. package/dist/expect-type.mjs.map +1 -1
  90. package/dist/functional/match.d.mts +35 -140
  91. package/dist/functional/match.d.mts.map +1 -1
  92. package/dist/functional/match.mjs.map +1 -1
  93. package/dist/functional/optional.d.mts +282 -160
  94. package/dist/functional/optional.d.mts.map +1 -1
  95. package/dist/functional/optional.mjs +131 -71
  96. package/dist/functional/optional.mjs.map +1 -1
  97. package/dist/functional/pipe.d.mts +59 -113
  98. package/dist/functional/pipe.d.mts.map +1 -1
  99. package/dist/functional/pipe.mjs.map +1 -1
  100. package/dist/functional/result.d.mts +433 -332
  101. package/dist/functional/result.d.mts.map +1 -1
  102. package/dist/functional/result.mjs +233 -239
  103. package/dist/functional/result.mjs.map +1 -1
  104. package/dist/globals.d.mts +12 -5
  105. package/dist/guard/has-key.d.mts +23 -74
  106. package/dist/guard/has-key.d.mts.map +1 -1
  107. package/dist/guard/has-key.mjs +23 -74
  108. package/dist/guard/has-key.mjs.map +1 -1
  109. package/dist/guard/is-non-empty-string.d.mts +20 -87
  110. package/dist/guard/is-non-empty-string.d.mts.map +1 -1
  111. package/dist/guard/is-non-empty-string.mjs +20 -87
  112. package/dist/guard/is-non-empty-string.mjs.map +1 -1
  113. package/dist/guard/is-non-null-object.d.mts +14 -84
  114. package/dist/guard/is-non-null-object.d.mts.map +1 -1
  115. package/dist/guard/is-non-null-object.mjs +14 -84
  116. package/dist/guard/is-non-null-object.mjs.map +1 -1
  117. package/dist/guard/is-primitive.d.mts +13 -126
  118. package/dist/guard/is-primitive.d.mts.map +1 -1
  119. package/dist/guard/is-primitive.mjs +13 -126
  120. package/dist/guard/is-primitive.mjs.map +1 -1
  121. package/dist/guard/is-record.d.mts +21 -132
  122. package/dist/guard/is-record.d.mts.map +1 -1
  123. package/dist/guard/is-record.mjs +21 -132
  124. package/dist/guard/is-record.mjs.map +1 -1
  125. package/dist/guard/is-type.d.mts +201 -238
  126. package/dist/guard/is-type.d.mts.map +1 -1
  127. package/dist/guard/is-type.mjs +201 -238
  128. package/dist/guard/is-type.mjs.map +1 -1
  129. package/dist/guard/key-is-in.d.mts +22 -139
  130. package/dist/guard/key-is-in.d.mts.map +1 -1
  131. package/dist/guard/key-is-in.mjs +22 -139
  132. package/dist/guard/key-is-in.mjs.map +1 -1
  133. package/dist/index.d.mts +0 -1
  134. package/dist/index.d.mts.map +1 -1
  135. package/dist/index.mjs +0 -1
  136. package/dist/index.mjs.map +1 -1
  137. package/dist/iterator/range.d.mts +29 -62
  138. package/dist/iterator/range.d.mts.map +1 -1
  139. package/dist/iterator/range.mjs.map +1 -1
  140. package/dist/json/json.d.mts +191 -121
  141. package/dist/json/json.d.mts.map +1 -1
  142. package/dist/json/json.mjs +238 -136
  143. package/dist/json/json.mjs.map +1 -1
  144. package/dist/number/branded-types/finite-number.d.mts +24 -156
  145. package/dist/number/branded-types/finite-number.d.mts.map +1 -1
  146. package/dist/number/branded-types/finite-number.mjs +27 -159
  147. package/dist/number/branded-types/finite-number.mjs.map +1 -1
  148. package/dist/number/branded-types/int.d.mts +122 -120
  149. package/dist/number/branded-types/int.d.mts.map +1 -1
  150. package/dist/number/branded-types/int.mjs +122 -120
  151. package/dist/number/branded-types/int.mjs.map +1 -1
  152. package/dist/number/branded-types/int16.d.mts +22 -30
  153. package/dist/number/branded-types/int16.d.mts.map +1 -1
  154. package/dist/number/branded-types/int16.mjs +22 -30
  155. package/dist/number/branded-types/int16.mjs.map +1 -1
  156. package/dist/number/branded-types/int32.d.mts +22 -31
  157. package/dist/number/branded-types/int32.d.mts.map +1 -1
  158. package/dist/number/branded-types/int32.mjs +22 -31
  159. package/dist/number/branded-types/int32.mjs.map +1 -1
  160. package/dist/number/branded-types/non-negative-finite-number.d.mts +28 -36
  161. package/dist/number/branded-types/non-negative-finite-number.d.mts.map +1 -1
  162. package/dist/number/branded-types/non-negative-finite-number.mjs +31 -39
  163. package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
  164. package/dist/number/branded-types/non-negative-int16.d.mts +24 -34
  165. package/dist/number/branded-types/non-negative-int16.d.mts.map +1 -1
  166. package/dist/number/branded-types/non-negative-int16.mjs +24 -34
  167. package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
  168. package/dist/number/branded-types/non-negative-int32.d.mts +26 -35
  169. package/dist/number/branded-types/non-negative-int32.d.mts.map +1 -1
  170. package/dist/number/branded-types/non-negative-int32.mjs +26 -35
  171. package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
  172. package/dist/number/branded-types/non-zero-finite-number.d.mts +22 -37
  173. package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -1
  174. package/dist/number/branded-types/non-zero-finite-number.mjs +25 -40
  175. package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
  176. package/dist/number/branded-types/non-zero-int.d.mts +15 -30
  177. package/dist/number/branded-types/non-zero-int.d.mts.map +1 -1
  178. package/dist/number/branded-types/non-zero-int.mjs +15 -30
  179. package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
  180. package/dist/number/branded-types/non-zero-int16.d.mts +27 -35
  181. package/dist/number/branded-types/non-zero-int16.d.mts.map +1 -1
  182. package/dist/number/branded-types/non-zero-int16.mjs +27 -35
  183. package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
  184. package/dist/number/branded-types/non-zero-int32.d.mts +29 -36
  185. package/dist/number/branded-types/non-zero-int32.d.mts.map +1 -1
  186. package/dist/number/branded-types/non-zero-int32.mjs +29 -36
  187. package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
  188. package/dist/number/branded-types/non-zero-safe-int.d.mts +37 -38
  189. package/dist/number/branded-types/non-zero-safe-int.d.mts.map +1 -1
  190. package/dist/number/branded-types/non-zero-safe-int.mjs +39 -40
  191. package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
  192. package/dist/number/branded-types/non-zero-uint16.d.mts +24 -35
  193. package/dist/number/branded-types/non-zero-uint16.d.mts.map +1 -1
  194. package/dist/number/branded-types/non-zero-uint16.mjs +24 -35
  195. package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
  196. package/dist/number/branded-types/non-zero-uint32.d.mts +24 -35
  197. package/dist/number/branded-types/non-zero-uint32.d.mts.map +1 -1
  198. package/dist/number/branded-types/non-zero-uint32.mjs +24 -35
  199. package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
  200. package/dist/number/branded-types/positive-finite-number.d.mts +26 -40
  201. package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -1
  202. package/dist/number/branded-types/positive-finite-number.mjs +29 -43
  203. package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
  204. package/dist/number/branded-types/positive-int.d.mts +133 -123
  205. package/dist/number/branded-types/positive-int.d.mts.map +1 -1
  206. package/dist/number/branded-types/positive-int.mjs +133 -123
  207. package/dist/number/branded-types/positive-int.mjs.map +1 -1
  208. package/dist/number/branded-types/positive-int16.d.mts +24 -35
  209. package/dist/number/branded-types/positive-int16.d.mts.map +1 -1
  210. package/dist/number/branded-types/positive-int16.mjs +24 -35
  211. package/dist/number/branded-types/positive-int16.mjs.map +1 -1
  212. package/dist/number/branded-types/positive-int32.d.mts +24 -35
  213. package/dist/number/branded-types/positive-int32.d.mts.map +1 -1
  214. package/dist/number/branded-types/positive-int32.mjs +24 -35
  215. package/dist/number/branded-types/positive-int32.mjs.map +1 -1
  216. package/dist/number/branded-types/positive-safe-int.d.mts +159 -33
  217. package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
  218. package/dist/number/branded-types/positive-safe-int.mjs +160 -34
  219. package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
  220. package/dist/number/branded-types/positive-uint16.d.mts +24 -35
  221. package/dist/number/branded-types/positive-uint16.d.mts.map +1 -1
  222. package/dist/number/branded-types/positive-uint16.mjs +24 -35
  223. package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
  224. package/dist/number/branded-types/positive-uint32.d.mts +26 -36
  225. package/dist/number/branded-types/positive-uint32.d.mts.map +1 -1
  226. package/dist/number/branded-types/positive-uint32.mjs +26 -36
  227. package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
  228. package/dist/number/branded-types/safe-int.d.mts +140 -99
  229. package/dist/number/branded-types/safe-int.d.mts.map +1 -1
  230. package/dist/number/branded-types/safe-int.mjs +142 -101
  231. package/dist/number/branded-types/safe-int.mjs.map +1 -1
  232. package/dist/number/branded-types/safe-uint.d.mts +24 -33
  233. package/dist/number/branded-types/safe-uint.d.mts.map +1 -1
  234. package/dist/number/branded-types/safe-uint.mjs +25 -34
  235. package/dist/number/branded-types/safe-uint.mjs.map +1 -1
  236. package/dist/number/branded-types/uint.d.mts +121 -30
  237. package/dist/number/branded-types/uint.d.mts.map +1 -1
  238. package/dist/number/branded-types/uint.mjs +121 -30
  239. package/dist/number/branded-types/uint.mjs.map +1 -1
  240. package/dist/number/branded-types/uint16.d.mts +26 -34
  241. package/dist/number/branded-types/uint16.d.mts.map +1 -1
  242. package/dist/number/branded-types/uint16.mjs +26 -34
  243. package/dist/number/branded-types/uint16.mjs.map +1 -1
  244. package/dist/number/branded-types/uint32.d.mts +26 -68
  245. package/dist/number/branded-types/uint32.d.mts.map +1 -1
  246. package/dist/number/branded-types/uint32.mjs +26 -68
  247. package/dist/number/branded-types/uint32.mjs.map +1 -1
  248. package/dist/number/enum/int8.d.mts +37 -101
  249. package/dist/number/enum/int8.d.mts.map +1 -1
  250. package/dist/number/enum/int8.mjs +39 -170
  251. package/dist/number/enum/int8.mjs.map +1 -1
  252. package/dist/number/enum/uint8.d.mts +45 -55
  253. package/dist/number/enum/uint8.d.mts.map +1 -1
  254. package/dist/number/enum/uint8.mjs +46 -155
  255. package/dist/number/enum/uint8.mjs.map +1 -1
  256. package/dist/number/num.d.mts +145 -206
  257. package/dist/number/num.d.mts.map +1 -1
  258. package/dist/number/num.mjs +143 -199
  259. package/dist/number/num.mjs.map +1 -1
  260. package/dist/number/refined-number-utils.d.mts +97 -21
  261. package/dist/number/refined-number-utils.d.mts.map +1 -1
  262. package/dist/number/refined-number-utils.mjs +91 -20
  263. package/dist/number/refined-number-utils.mjs.map +1 -1
  264. package/dist/object/object.d.mts +126 -208
  265. package/dist/object/object.d.mts.map +1 -1
  266. package/dist/object/object.mjs +68 -102
  267. package/dist/object/object.mjs.map +1 -1
  268. package/dist/others/cast-mutable.d.mts +12 -88
  269. package/dist/others/cast-mutable.d.mts.map +1 -1
  270. package/dist/others/cast-mutable.mjs +13 -89
  271. package/dist/others/cast-mutable.mjs.map +1 -1
  272. package/dist/others/cast-readonly.d.mts +12 -168
  273. package/dist/others/cast-readonly.d.mts.map +1 -1
  274. package/dist/others/cast-readonly.mjs +13 -169
  275. package/dist/others/cast-readonly.mjs.map +1 -1
  276. package/dist/others/if-then.d.mts +6 -83
  277. package/dist/others/if-then.d.mts.map +1 -1
  278. package/dist/others/if-then.mjs +6 -83
  279. package/dist/others/if-then.mjs.map +1 -1
  280. package/dist/others/map-nullable.d.mts +12 -136
  281. package/dist/others/map-nullable.d.mts.map +1 -1
  282. package/dist/others/map-nullable.mjs.map +1 -1
  283. package/dist/others/memoize-function.d.mts +14 -157
  284. package/dist/others/memoize-function.d.mts.map +1 -1
  285. package/dist/others/memoize-function.mjs +14 -157
  286. package/dist/others/memoize-function.mjs.map +1 -1
  287. package/dist/others/tuple.d.mts +33 -151
  288. package/dist/others/tuple.d.mts.map +1 -1
  289. package/dist/others/tuple.mjs +33 -151
  290. package/dist/others/tuple.mjs.map +1 -1
  291. package/dist/others/unknown-to-string.d.mts +11 -125
  292. package/dist/others/unknown-to-string.d.mts.map +1 -1
  293. package/dist/others/unknown-to-string.mjs +12 -126
  294. package/dist/others/unknown-to-string.mjs.map +1 -1
  295. package/dist/promise/promise.d.mts +33 -20
  296. package/dist/promise/promise.d.mts.map +1 -1
  297. package/dist/promise/promise.mjs +34 -21
  298. package/dist/promise/promise.mjs.map +1 -1
  299. package/package.json +47 -39
  300. package/src/array/impl/array-utils-creation.mts +192 -0
  301. package/src/array/{array-utils-creation.test.mts → impl/array-utils-creation.test.mts} +121 -72
  302. package/src/array/impl/array-utils-element-access.mts +115 -0
  303. package/src/array/impl/array-utils-element-access.test.mts +151 -0
  304. package/src/array/impl/array-utils-iterators.mts +79 -0
  305. package/src/array/impl/array-utils-iterators.test.mts +98 -0
  306. package/src/array/impl/array-utils-modification.mts +434 -0
  307. package/src/array/{array-utils-modification.test.mts → impl/array-utils-modification.test.mts} +41 -28
  308. package/src/array/{array-utils-overload-type-error.test.mts → impl/array-utils-overload-type-error.test.mts} +33 -33
  309. package/src/array/impl/array-utils-reducing-value.mts +551 -0
  310. package/src/array/{array-utils-reducing-value.test.mts → impl/array-utils-reducing-value.test.mts} +45 -50
  311. package/src/array/impl/array-utils-search.mts +509 -0
  312. package/src/array/impl/array-utils-search.test.mts +346 -0
  313. package/src/array/impl/array-utils-set-op.mts +166 -0
  314. package/src/array/{array-utils-set-op.test.mts → impl/array-utils-set-op.test.mts} +42 -35
  315. package/src/array/impl/array-utils-size.mts +30 -0
  316. package/src/array/impl/array-utils-size.test.mts +9 -0
  317. package/src/array/impl/array-utils-slice-clamped.mts +51 -0
  318. package/src/array/{array-utils-slice-clamped.test.mts → impl/array-utils-slice-clamped.test.mts} +12 -12
  319. package/src/array/impl/array-utils-slicing.mts +275 -0
  320. package/src/array/impl/array-utils-slicing.test.mts +158 -0
  321. package/src/array/impl/array-utils-transformation.mts +746 -0
  322. package/src/array/{array-utils-transformation.test.mts → impl/array-utils-transformation.test.mts} +662 -889
  323. package/src/array/impl/array-utils-validation.mts +241 -0
  324. package/src/array/{array-utils-validation.test.mts → impl/array-utils-validation.test.mts} +194 -107
  325. package/src/array/{array.test.mts → impl/array.test.mts} +2 -2
  326. package/src/array/impl/index.mts +12 -0
  327. package/src/array/index.mts +1 -1
  328. package/src/collections/imap-mapped.mts +99 -265
  329. package/src/collections/imap.mts +477 -174
  330. package/src/collections/imap.test.mts +12 -19
  331. package/src/collections/iset-mapped.mts +892 -358
  332. package/src/collections/iset.mts +429 -213
  333. package/src/collections/queue.mts +174 -200
  334. package/src/collections/stack.mts +172 -245
  335. package/src/collections/stack.test.mts +9 -1
  336. package/src/entry-point.mts +1 -0
  337. package/src/expect-type.mts +43 -172
  338. package/src/functional/match.mts +35 -145
  339. package/src/functional/optional.mts +285 -163
  340. package/src/functional/optional.test.mts +4 -1
  341. package/src/functional/pipe.mts +60 -113
  342. package/src/functional/result.mts +452 -351
  343. package/src/functional/result.test.mts +9 -2
  344. package/src/globals.d.mts +12 -5
  345. package/src/guard/has-key.mts +23 -74
  346. package/src/guard/is-non-empty-string.mts +20 -87
  347. package/src/guard/is-non-null-object.mts +14 -84
  348. package/src/guard/is-non-null-object.test.mts +1 -1
  349. package/src/guard/is-primitive.mts +13 -126
  350. package/src/guard/is-primitive.test.mts +1 -1
  351. package/src/guard/is-record.mts +21 -132
  352. package/src/guard/is-type.mts +201 -238
  353. package/src/guard/is-type.test.mts +7 -7
  354. package/src/guard/key-is-in.mts +22 -139
  355. package/src/index.mts +0 -1
  356. package/src/iterator/range.mts +29 -62
  357. package/src/json/json.mts +202 -134
  358. package/src/json/json.test.mts +1 -3
  359. package/src/number/branded-types/finite-number.mts +27 -159
  360. package/src/number/branded-types/int.mts +122 -120
  361. package/src/number/branded-types/int16.mts +22 -30
  362. package/src/number/branded-types/int16.test.mts +24 -24
  363. package/src/number/branded-types/int32.mts +22 -31
  364. package/src/number/branded-types/int32.test.mts +39 -39
  365. package/src/number/branded-types/non-negative-finite-number.mts +31 -39
  366. package/src/number/branded-types/non-negative-int16.mts +24 -34
  367. package/src/number/branded-types/non-negative-int16.test.mts +16 -16
  368. package/src/number/branded-types/non-negative-int32.mts +26 -35
  369. package/src/number/branded-types/non-negative-int32.test.mts +30 -30
  370. package/src/number/branded-types/non-zero-finite-number.mts +25 -40
  371. package/src/number/branded-types/non-zero-int.mts +15 -30
  372. package/src/number/branded-types/non-zero-int16.mts +27 -35
  373. package/src/number/branded-types/non-zero-int16.test.mts +26 -26
  374. package/src/number/branded-types/non-zero-int32.mts +29 -36
  375. package/src/number/branded-types/non-zero-int32.test.mts +45 -42
  376. package/src/number/branded-types/non-zero-safe-int.mts +39 -40
  377. package/src/number/branded-types/non-zero-uint16.mts +24 -35
  378. package/src/number/branded-types/non-zero-uint16.test.mts +16 -16
  379. package/src/number/branded-types/non-zero-uint32.mts +24 -35
  380. package/src/number/branded-types/non-zero-uint32.test.mts +28 -28
  381. package/src/number/branded-types/positive-finite-number.mts +29 -43
  382. package/src/number/branded-types/positive-int.mts +134 -124
  383. package/src/number/branded-types/positive-int16.mts +24 -35
  384. package/src/number/branded-types/positive-int16.test.mts +14 -14
  385. package/src/number/branded-types/positive-int32.mts +24 -35
  386. package/src/number/branded-types/positive-int32.test.mts +26 -26
  387. package/src/number/branded-types/positive-safe-int.mts +160 -34
  388. package/src/number/branded-types/positive-uint16.mts +24 -35
  389. package/src/number/branded-types/positive-uint16.test.mts +16 -16
  390. package/src/number/branded-types/positive-uint32.mts +26 -36
  391. package/src/number/branded-types/positive-uint32.test.mts +31 -28
  392. package/src/number/branded-types/safe-int.mts +142 -101
  393. package/src/number/branded-types/safe-uint.mts +25 -34
  394. package/src/number/branded-types/uint.mts +121 -30
  395. package/src/number/branded-types/uint16.mts +26 -34
  396. package/src/number/branded-types/uint16.test.mts +16 -16
  397. package/src/number/branded-types/uint32.mts +26 -68
  398. package/src/number/branded-types/uint32.test.mts +28 -28
  399. package/src/number/enum/int8.mts +39 -170
  400. package/src/number/enum/uint8.mts +46 -155
  401. package/src/number/num.mts +157 -212
  402. package/src/number/num.test.mts +4 -4
  403. package/src/number/refined-number-utils.mts +109 -26
  404. package/src/object/object.mts +130 -212
  405. package/src/object/object.test.mts +29 -0
  406. package/src/others/cast-mutable.mts +13 -89
  407. package/src/others/cast-mutable.test.mts +80 -0
  408. package/src/others/cast-readonly.mts +13 -169
  409. package/src/others/if-then.mts +6 -83
  410. package/src/others/map-nullable.mts +12 -136
  411. package/src/others/map-nullable.test.mts +6 -6
  412. package/src/others/memoize-function.mts +14 -157
  413. package/src/others/tuple.mts +33 -151
  414. package/src/others/unknown-to-string.mts +12 -126
  415. package/src/others/unknown-to-string.test.mts +13 -1
  416. package/src/promise/promise.mts +34 -21
  417. package/src/promise/promise.test.mts +43 -0
  418. package/dist/array/array-utils.d.mts +0 -2956
  419. package/dist/array/array-utils.d.mts.map +0 -1
  420. package/dist/array/array-utils.mjs +0 -1838
  421. package/dist/array/array-utils.mjs.map +0 -1
  422. package/src/array/array-utils-search.test.mts +0 -169
  423. package/src/array/array-utils-slicing.test.mts +0 -274
  424. package/src/array/array-utils.mts +0 -4834
@@ -26,13 +26,24 @@ const {
26
26
  >({
27
27
  integerOrSafeInteger: 'SafeInteger',
28
28
  MIN_VALUE: 1,
29
- // eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
29
+ // eslint-disable-next-line total-functions/no-unsafe-type-assertion
30
30
  MAX_VALUE: Number.MAX_SAFE_INTEGER as SafeUint,
31
31
  typeNameInMessage,
32
32
  } as const);
33
33
 
34
34
  /**
35
- * Checks if a number is a PositiveSafeInt (a positive safe integer in the range [1, MAX_SAFE_INTEGER]).
35
+ * Checks if a number is a PositiveSafeInt (a positive safe integer in the range
36
+ * [1, MAX_SAFE_INTEGER]).
37
+ *
38
+ * @example
39
+ *
40
+ * ```ts
41
+ * assert.ok(isPositiveSafeInt(1));
42
+ * assert.ok(isPositiveSafeInt(Number.MAX_SAFE_INTEGER));
43
+ * assert.notOk(isPositiveSafeInt(0));
44
+ * assert.ok(PositiveSafeInt.is(42));
45
+ * ```
46
+ *
36
47
  * @param value The value to check.
37
48
  * @returns `true` if the value is a PositiveSafeInt, `false` otherwise.
38
49
  */
@@ -40,68 +51,78 @@ export const isPositiveSafeInt = is;
40
51
 
41
52
  /**
42
53
  * Casts a number to a PositiveSafeInt type.
54
+ *
55
+ * @example
56
+ *
57
+ * ```ts
58
+ * const branded = asPositiveSafeInt(128);
59
+ *
60
+ * assert(branded === 128);
61
+ * assert.ok(PositiveSafeInt.is(branded));
62
+ * ```
63
+ *
43
64
  * @param value The value to cast.
44
65
  * @returns The value as a PositiveSafeInt type.
45
66
  * @throws {TypeError} If the value is not a positive safe integer.
46
- * @example
47
- * ```typescript
48
- * const x = asPositiveSafeInt(5); // PositiveSafeInt
49
- * const y = asPositiveSafeInt(1000); // PositiveSafeInt
50
- * // asPositiveSafeInt(0); // throws TypeError
51
- * // asPositiveSafeInt(-1); // throws TypeError
52
- * ```
53
67
  */
54
68
  export const asPositiveSafeInt = castType;
55
69
 
56
70
  /**
57
- * Namespace providing type-safe arithmetic operations for positive safe integers.
71
+ * Namespace providing type-safe arithmetic operations for positive safe
72
+ * integers.
58
73
  *
59
- * All operations automatically clamp results to the positive safe integer range [1, MAX_SAFE_INTEGER].
60
- * This ensures that all arithmetic maintains both the positive constraint and IEEE 754 precision guarantees,
61
- * preventing precision loss and ensuring results are always positive.
62
- *
63
- * @example
64
- * ```typescript
65
- * const a = asPositiveSafeInt(1000000);
66
- * const b = asPositiveSafeInt(2000000);
67
- *
68
- * // Arithmetic operations with positive safe range clamping
69
- * const sum = PositiveSafeInt.add(a, b); // PositiveSafeInt (3000000)
70
- * const diff = PositiveSafeInt.sub(a, b); // PositiveSafeInt (1 - clamped to MIN_VALUE)
71
- * const product = PositiveSafeInt.mul(a, b); // PositiveSafeInt (2000000000000)
72
- *
73
- * // Range operations
74
- * const clamped = PositiveSafeInt.clamp(0); // PositiveSafeInt (1)
75
- * const minimum = PositiveSafeInt.min(a, b); // PositiveSafeInt (1000000)
76
- * const maximum = PositiveSafeInt.max(a, b); // PositiveSafeInt (2000000)
77
- *
78
- * // Utility operations
79
- * const random = PositiveSafeInt.random(); // PositiveSafeInt (random positive safe integer)
80
- * const power = PositiveSafeInt.pow(asPositiveSafeInt(2), asPositiveSafeInt(10)); // PositiveSafeInt (1024)
81
- * ```
74
+ * All operations automatically clamp results to the positive safe integer range
75
+ * [1, MAX_SAFE_INTEGER]. This ensures that all arithmetic maintains both the
76
+ * positive constraint and IEEE 754 precision guarantees, preventing precision
77
+ * loss and ensuring results are always positive.
82
78
  */
83
79
  export const PositiveSafeInt = {
84
80
  /**
85
81
  * Type guard to check if a value is a PositiveSafeInt.
82
+ *
83
+ * @example
84
+ *
85
+ * ```ts
86
+ * assert.ok(isPositiveSafeInt(1));
87
+ * assert.ok(isPositiveSafeInt(Number.MAX_SAFE_INTEGER));
88
+ * assert.notOk(isPositiveSafeInt(0));
89
+ * assert.ok(PositiveSafeInt.is(42));
90
+ * ```
91
+ *
86
92
  * @param value The value to check.
87
93
  * @returns `true` if the value is a positive safe integer, `false` otherwise.
94
+ * @see {@link isPositiveSafeInt} for usage examples
88
95
  */
89
96
  is,
90
97
 
91
98
  /**
92
99
  * The minimum value for a positive safe integer.
100
+ *
93
101
  * @readonly
94
102
  */
95
103
  MIN_VALUE,
96
104
 
97
105
  /**
98
106
  * The maximum safe integer value (2^53 - 1).
107
+ *
99
108
  * @readonly
100
109
  */
101
110
  MAX_VALUE,
102
111
 
103
112
  /**
104
113
  * Returns the smaller of two PositiveSafeInt values.
114
+ *
115
+ * @example
116
+ *
117
+ * ```ts
118
+ * const smallest = PositiveSafeInt.min(
119
+ * asPositiveSafeInt(10),
120
+ * asPositiveSafeInt(5),
121
+ * );
122
+ *
123
+ * assert(smallest === 5);
124
+ * ```
125
+ *
105
126
  * @param a The first PositiveSafeInt.
106
127
  * @param b The second PositiveSafeInt.
107
128
  * @returns The minimum value as a PositiveSafeInt.
@@ -110,6 +131,18 @@ export const PositiveSafeInt = {
110
131
 
111
132
  /**
112
133
  * Returns the larger of two PositiveSafeInt values.
134
+ *
135
+ * @example
136
+ *
137
+ * ```ts
138
+ * const largest = PositiveSafeInt.max(
139
+ * asPositiveSafeInt(10),
140
+ * asPositiveSafeInt(5),
141
+ * );
142
+ *
143
+ * assert(largest === 10);
144
+ * ```
145
+ *
113
146
  * @param a The first PositiveSafeInt.
114
147
  * @param b The second PositiveSafeInt.
115
148
  * @returns The maximum value as a PositiveSafeInt.
@@ -118,6 +151,19 @@ export const PositiveSafeInt = {
118
151
 
119
152
  /**
120
153
  * Clamps a number to the positive safe integer range.
154
+ *
155
+ * @example
156
+ *
157
+ * ```ts
158
+ * const belowRange = PositiveSafeInt.clamp(0);
159
+ * const withinRange = PositiveSafeInt.clamp(123);
160
+ * const aboveRange = PositiveSafeInt.clamp(Number.MAX_SAFE_INTEGER + 10);
161
+ *
162
+ * assert(belowRange === 1);
163
+ * assert(withinRange === 123);
164
+ * assert(aboveRange === Number.MAX_SAFE_INTEGER);
165
+ * ```
166
+ *
121
167
  * @param value The number to clamp.
122
168
  * @returns The value clamped to [1, MAX_SAFE_INTEGER] as a PositiveSafeInt.
123
169
  */
@@ -125,12 +171,35 @@ export const PositiveSafeInt = {
125
171
 
126
172
  /**
127
173
  * Generates a random PositiveSafeInt value within the valid range.
174
+ *
175
+ * @example
176
+ *
177
+ * ```ts
178
+ * const min = asPositiveSafeInt(1);
179
+ * const max = asPositiveSafeInt(6);
180
+ * const randomValue = PositiveSafeInt.random(min, max);
181
+ *
182
+ * assert.ok(PositiveSafeInt.is(randomValue));
183
+ * assert.ok(randomValue >= 1 && randomValue <= 6);
184
+ * ```
185
+ *
128
186
  * @returns A random PositiveSafeInt between 1 and MAX_SAFE_INTEGER.
129
187
  */
130
188
  random,
131
189
 
132
190
  /**
133
191
  * Raises a PositiveSafeInt to the power of another PositiveSafeInt.
192
+ *
193
+ * @example
194
+ *
195
+ * ```ts
196
+ * const base = asPositiveSafeInt(3);
197
+ * const exponent = asPositiveSafeInt(3);
198
+ * const power = PositiveSafeInt.pow(base, exponent);
199
+ *
200
+ * assert(power === 27);
201
+ * ```
202
+ *
134
203
  * @param a The base PositiveSafeInt.
135
204
  * @param b The exponent PositiveSafeInt.
136
205
  * @returns `a ** b` clamped to [1, MAX_SAFE_INTEGER] as a PositiveSafeInt.
@@ -139,6 +208,19 @@ export const PositiveSafeInt = {
139
208
 
140
209
  /**
141
210
  * Adds two PositiveSafeInt values.
211
+ *
212
+ * @example
213
+ *
214
+ * ```ts
215
+ * const sum = PositiveSafeInt.add(
216
+ * asPositiveSafeInt(1000),
217
+ * asPositiveSafeInt(2048),
218
+ * );
219
+ *
220
+ * assert(sum === 3048);
221
+ * assert.ok(PositiveSafeInt.is(sum));
222
+ * ```
223
+ *
142
224
  * @param a The first PositiveSafeInt.
143
225
  * @param b The second PositiveSafeInt.
144
226
  * @returns `a + b` clamped to [1, MAX_SAFE_INTEGER] as a PositiveSafeInt.
@@ -147,14 +229,41 @@ export const PositiveSafeInt = {
147
229
 
148
230
  /**
149
231
  * Subtracts one PositiveSafeInt from another.
232
+ *
233
+ * @example
234
+ *
235
+ * ```ts
236
+ * const difference = PositiveSafeInt.sub(
237
+ * asPositiveSafeInt(10),
238
+ * asPositiveSafeInt(20),
239
+ * );
240
+ *
241
+ * assert(difference === 1);
242
+ * assert.ok(PositiveSafeInt.is(difference));
243
+ * ```
244
+ *
150
245
  * @param a The minuend PositiveSafeInt.
151
246
  * @param b The subtrahend PositiveSafeInt.
152
- * @returns `a - b` clamped to [1, MAX_SAFE_INTEGER] as a PositiveSafeInt (minimum 1).
247
+ * @returns `a - b` clamped to [1, MAX_SAFE_INTEGER] as a PositiveSafeInt
248
+ * (minimum 1).
153
249
  */
154
250
  sub,
155
251
 
156
252
  /**
157
253
  * Multiplies two PositiveSafeInt values.
254
+ *
255
+ * @example
256
+ *
257
+ * ```ts
258
+ * const product = PositiveSafeInt.mul(
259
+ * asPositiveSafeInt(50),
260
+ * asPositiveSafeInt(20),
261
+ * );
262
+ *
263
+ * assert(product === 1000);
264
+ * assert.ok(PositiveSafeInt.is(product));
265
+ * ```
266
+ *
158
267
  * @param a The first PositiveSafeInt.
159
268
  * @param b The second PositiveSafeInt.
160
269
  * @returns `a * b` clamped to [1, MAX_SAFE_INTEGER] as a PositiveSafeInt.
@@ -163,6 +272,23 @@ export const PositiveSafeInt = {
163
272
 
164
273
  /**
165
274
  * Divides one PositiveSafeInt by another using floor division.
275
+ *
276
+ * @example
277
+ *
278
+ * ```ts
279
+ * const quotient = PositiveSafeInt.div(
280
+ * asPositiveSafeInt(25),
281
+ * asPositiveSafeInt(4),
282
+ * );
283
+ * const clamped = PositiveSafeInt.div(
284
+ * asPositiveSafeInt(5),
285
+ * asPositiveSafeInt(50),
286
+ * );
287
+ *
288
+ * assert(quotient === 6);
289
+ * assert(clamped === 1);
290
+ * ```
291
+ *
166
292
  * @param a The dividend PositiveSafeInt.
167
293
  * @param b The divisor PositiveSafeInt.
168
294
  * @returns `⌊a / b⌋` clamped to [1, MAX_SAFE_INTEGER] as a PositiveSafeInt.
@@ -31,7 +31,9 @@ const {
31
31
  } as const);
32
32
 
33
33
  /**
34
- * Checks if a number is a PositiveUint16 (16-bit positive unsigned integer in the range [1, 2^16)).
34
+ * Checks if a number is a PositiveUint16 (16-bit positive unsigned integer in
35
+ * the range [1, 2^16)).
36
+ *
35
37
  * @param value The value to check.
36
38
  * @returns `true` if the value is a PositiveUint16, `false` otherwise.
37
39
  */
@@ -39,70 +41,49 @@ export const isPositiveUint16 = is;
39
41
 
40
42
  /**
41
43
  * Casts a number to a PositiveUint16 type.
44
+ *
42
45
  * @param value The value to cast.
43
46
  * @returns The value as a PositiveUint16 type.
44
47
  * @throws {TypeError} If the value is not a positive integer in [1, 2^16).
45
- * @example
46
- * ```typescript
47
- * const x = asPositiveUint16(1000); // PositiveUint16
48
- * const y = asPositiveUint16(65535); // PositiveUint16
49
- * // asPositiveUint16(0); // throws TypeError
50
- * // asPositiveUint16(-1); // throws TypeError
51
- * // asPositiveUint16(65536); // throws TypeError
52
- * ```
53
48
  */
54
49
  export const asPositiveUint16 = castType;
55
50
 
56
51
  /**
57
- * Namespace providing type-safe arithmetic operations for 16-bit positive unsigned integers.
58
- *
59
- * All operations automatically clamp results to the valid PositiveUint16 range [1, 65535].
60
- * This ensures that all arithmetic maintains the 16-bit positive unsigned integer constraint,
61
- * with results below 1 clamped to MIN_VALUE and overflow results clamped to MAX_VALUE.
62
- *
63
- * @example
64
- * ```typescript
65
- * const a = asPositiveUint16(60000);
66
- * const b = asPositiveUint16(10000);
67
- *
68
- * // Arithmetic operations with automatic clamping and positive constraint
69
- * const sum = PositiveUint16.add(a, b); // PositiveUint16 (65535 - clamped to MAX_VALUE)
70
- * const diff = PositiveUint16.sub(a, b); // PositiveUint16 (50000)
71
- * const reverseDiff = PositiveUint16.sub(b, a); // PositiveUint16 (1 - clamped to MIN_VALUE)
72
- * const product = PositiveUint16.mul(a, b); // PositiveUint16 (65535 - clamped due to overflow)
73
- *
74
- * // Range operations (maintaining positive constraint)
75
- * const clamped = PositiveUint16.clamp(-100); // PositiveUint16 (1)
76
- * const minimum = PositiveUint16.min(a, b); // PositiveUint16 (10000)
77
- * const maximum = PositiveUint16.max(a, b); // PositiveUint16 (60000)
52
+ * Namespace providing type-safe arithmetic operations for 16-bit positive
53
+ * unsigned integers.
78
54
  *
79
- * // Utility operations
80
- * const random = PositiveUint16.random(); // PositiveUint16 (random value in [1, 65535])
81
- * const power = PositiveUint16.pow(asPositiveUint16(2), asPositiveUint16(10)); // PositiveUint16 (1024)
82
- * ```
55
+ * All operations automatically clamp results to the valid PositiveUint16 range
56
+ * [1, 65535]. This ensures that all arithmetic maintains the 16-bit positive
57
+ * unsigned integer constraint, with results below 1 clamped to MIN_VALUE and
58
+ * overflow results clamped to MAX_VALUE.
83
59
  */
84
60
  export const PositiveUint16 = {
85
61
  /**
86
62
  * Type guard to check if a value is a PositiveUint16.
63
+ *
87
64
  * @param value The value to check.
88
- * @returns `true` if the value is a 16-bit positive unsigned integer, `false` otherwise.
65
+ * @returns `true` if the value is a 16-bit positive unsigned integer, `false`
66
+ * otherwise.
89
67
  */
90
68
  is,
91
69
 
92
70
  /**
93
71
  * The minimum value for a 16-bit positive unsigned integer.
72
+ *
94
73
  * @readonly
95
74
  */
96
75
  MIN_VALUE,
97
76
 
98
77
  /**
99
78
  * The maximum value for a 16-bit positive unsigned integer.
79
+ *
100
80
  * @readonly
101
81
  */
102
82
  MAX_VALUE,
103
83
 
104
84
  /**
105
85
  * Returns the smaller of two PositiveUint16 values.
86
+ *
106
87
  * @param a The first PositiveUint16.
107
88
  * @param b The second PositiveUint16.
108
89
  * @returns The minimum value as a PositiveUint16.
@@ -111,6 +92,7 @@ export const PositiveUint16 = {
111
92
 
112
93
  /**
113
94
  * Returns the larger of two PositiveUint16 values.
95
+ *
114
96
  * @param a The first PositiveUint16.
115
97
  * @param b The second PositiveUint16.
116
98
  * @returns The maximum value as a PositiveUint16.
@@ -119,6 +101,7 @@ export const PositiveUint16 = {
119
101
 
120
102
  /**
121
103
  * Clamps a number to the PositiveUint16 range.
104
+ *
122
105
  * @param value The number to clamp.
123
106
  * @returns The value clamped to [1, 65535] as a PositiveUint16.
124
107
  */
@@ -126,12 +109,14 @@ export const PositiveUint16 = {
126
109
 
127
110
  /**
128
111
  * Generates a random PositiveUint16 value within the valid range.
112
+ *
129
113
  * @returns A random PositiveUint16 between 1 and 65535.
130
114
  */
131
115
  random,
132
116
 
133
117
  /**
134
118
  * Raises a PositiveUint16 to the power of another PositiveUint16.
119
+ *
135
120
  * @param a The base PositiveUint16.
136
121
  * @param b The exponent PositiveUint16.
137
122
  * @returns `a ** b` clamped to [1, 65535] as a PositiveUint16.
@@ -140,6 +125,7 @@ export const PositiveUint16 = {
140
125
 
141
126
  /**
142
127
  * Adds two PositiveUint16 values.
128
+ *
143
129
  * @param a The first PositiveUint16.
144
130
  * @param b The second PositiveUint16.
145
131
  * @returns `a + b` clamped to [1, 65535] as a PositiveUint16.
@@ -148,6 +134,7 @@ export const PositiveUint16 = {
148
134
 
149
135
  /**
150
136
  * Subtracts one PositiveUint16 from another.
137
+ *
151
138
  * @param a The minuend PositiveUint16.
152
139
  * @param b The subtrahend PositiveUint16.
153
140
  * @returns `a - b` clamped to [1, 65535] as a PositiveUint16 (minimum 1).
@@ -156,6 +143,7 @@ export const PositiveUint16 = {
156
143
 
157
144
  /**
158
145
  * Multiplies two PositiveUint16 values.
146
+ *
159
147
  * @param a The first PositiveUint16.
160
148
  * @param b The second PositiveUint16.
161
149
  * @returns `a * b` clamped to [1, 65535] as a PositiveUint16.
@@ -164,6 +152,7 @@ export const PositiveUint16 = {
164
152
 
165
153
  /**
166
154
  * Divides one PositiveUint16 by another using floor division.
155
+ *
167
156
  * @param a The dividend PositiveUint16.
168
157
  * @param b The divisor PositiveUint16.
169
158
  * @returns `⌊a / b⌋` clamped to [1, 65535] as a PositiveUint16.
@@ -11,8 +11,8 @@ describe('PositiveUint16', () => {
11
11
  test('accepts valid positive uint16 values', () => {
12
12
  expect(() => asPositiveUint16(1)).not.toThrow();
13
13
  expect(() => asPositiveUint16(1000)).not.toThrow();
14
- expect(() => asPositiveUint16(65535)).not.toThrow(); // 2^16 - 1
15
- expect(() => asPositiveUint16(32768)).not.toThrow(); // 2^15
14
+ expect(() => asPositiveUint16(65_535)).not.toThrow(); // 2^16 - 1
15
+ expect(() => asPositiveUint16(32_768)).not.toThrow(); // 2^15
16
16
  });
17
17
 
18
18
  test('rejects zero', () => {
@@ -20,8 +20,8 @@ describe('PositiveUint16', () => {
20
20
  });
21
21
 
22
22
  test('rejects values outside uint16 range', () => {
23
- expect(() => asPositiveUint16(65536)).toThrow(TypeError); // 2^16
24
- expect(() => asPositiveUint16(100000)).toThrow(TypeError);
23
+ expect(() => asPositiveUint16(65_536)).toThrow(TypeError); // 2^16
24
+ expect(() => asPositiveUint16(100_000)).toThrow(TypeError);
25
25
  });
26
26
 
27
27
  test('rejects negative integers', () => {
@@ -44,7 +44,7 @@ describe('PositiveUint16', () => {
44
44
  test('returns the same value for valid inputs', () => {
45
45
  expect(asPositiveUint16(5)).toBe(5);
46
46
  expect(asPositiveUint16(1)).toBe(1);
47
- expect(asPositiveUint16(65535)).toBe(65535);
47
+ expect(asPositiveUint16(65_535)).toBe(65_535);
48
48
  });
49
49
 
50
50
  test.each([
@@ -55,7 +55,7 @@ describe('PositiveUint16', () => {
55
55
  { name: '-3.4', value: -3.4 },
56
56
  { name: '0', value: 0 },
57
57
  { name: '-1', value: -1 },
58
- { name: '65536', value: 65536 },
58
+ { name: '65536', value: 65_536 },
59
59
  ] as const)(
60
60
  `asPositiveUint16($name) should throw a TypeError`,
61
61
  ({ value }) => {
@@ -72,8 +72,8 @@ describe('PositiveUint16', () => {
72
72
  test('correctly identifies positive uint16 values', () => {
73
73
  expect(isPositiveUint16(1)).toBe(true);
74
74
  expect(isPositiveUint16(1000)).toBe(true);
75
- expect(isPositiveUint16(65535)).toBe(true);
76
- expect(isPositiveUint16(32768)).toBe(true);
75
+ expect(isPositiveUint16(65_535)).toBe(true);
76
+ expect(isPositiveUint16(32_768)).toBe(true);
77
77
  });
78
78
 
79
79
  test('correctly identifies zero', () => {
@@ -81,8 +81,8 @@ describe('PositiveUint16', () => {
81
81
  });
82
82
 
83
83
  test('correctly identifies values outside uint16 range', () => {
84
- expect(isPositiveUint16(65536)).toBe(false);
85
- expect(isPositiveUint16(100000)).toBe(false);
84
+ expect(isPositiveUint16(65_536)).toBe(false);
85
+ expect(isPositiveUint16(100_000)).toBe(false);
86
86
  });
87
87
 
88
88
  test('correctly identifies negative integers', () => {
@@ -110,7 +110,7 @@ describe('PositiveUint16', () => {
110
110
  describe('constants', () => {
111
111
  test('MIN_VALUE and MAX_VALUE', () => {
112
112
  expect(PositiveUint16.MIN_VALUE).toBe(1);
113
- expect(PositiveUint16.MAX_VALUE).toBe(65535);
113
+ expect(PositiveUint16.MAX_VALUE).toBe(65_535);
114
114
  });
115
115
  });
116
116
 
@@ -125,10 +125,10 @@ describe('PositiveUint16', () => {
125
125
 
126
126
  test('add (with clamping to positive uint16 range)', () => {
127
127
  const result = PositiveUint16.add(
128
- asPositiveUint16(65000),
128
+ asPositiveUint16(65_000),
129
129
  asPositiveUint16(1000),
130
130
  );
131
- expect(result).toBe(65535); // clamped to max
131
+ expect(result).toBe(65_535); // clamped to max
132
132
  expect(PositiveUint16.add(a, b)).toBe(150);
133
133
  });
134
134
 
@@ -142,7 +142,7 @@ describe('PositiveUint16', () => {
142
142
  asPositiveUint16(1000),
143
143
  asPositiveUint16(100),
144
144
  );
145
- expect(result).toBe(65535); // clamped to max
145
+ expect(result).toBe(65_535); // clamped to max
146
146
  expect(
147
147
  PositiveUint16.mul(asPositiveUint16(10), asPositiveUint16(5)),
148
148
  ).toBe(50);
@@ -163,7 +163,7 @@ describe('PositiveUint16', () => {
163
163
  asPositiveUint16(256),
164
164
  asPositiveUint16(3),
165
165
  );
166
- expect(result).toBe(65535); // clamped to max
166
+ expect(result).toBe(65_535); // clamped to max
167
167
  expect(PositiveUint16.pow(asPositiveUint16(2), asPositiveUint16(3))).toBe(
168
168
  8,
169
169
  );
@@ -189,7 +189,7 @@ describe('PositiveUint16', () => {
189
189
  for (const _ of range(10)) {
190
190
  const result = PositiveUint16.random(1, 30);
191
191
  expect(result).toBeGreaterThanOrEqual(1);
192
- expect(result).toBeLessThanOrEqual(65535);
192
+ expect(result).toBeLessThanOrEqual(65_535);
193
193
  }
194
194
  });
195
195
  });