ts-data-forge 10.0.0 → 11.0.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 (249) hide show
  1. package/dist/array/impl/array-utils-creation.d.mts +3 -3
  2. package/dist/array/impl/array-utils-creation.d.mts.map +1 -1
  3. package/dist/array/impl/array-utils-creation.mjs.map +1 -1
  4. package/dist/array/impl/array-utils-element-access.d.mts +4 -4
  5. package/dist/array/impl/array-utils-element-access.mjs.map +1 -1
  6. package/dist/{guard/as-length-bounded-array.d.mts → array/impl/array-utils-length-bounded-array-cast.d.mts} +9 -9
  7. package/dist/array/impl/array-utils-length-bounded-array-cast.d.mts.map +1 -0
  8. package/dist/{guard/as-length-bounded-array.mjs → array/impl/array-utils-length-bounded-array-cast.mjs} +2 -2
  9. package/dist/array/impl/array-utils-length-bounded-array-cast.mjs.map +1 -0
  10. package/dist/{guard/is-length-bounded-array.d.mts → array/impl/array-utils-length-bounded-array-guard.d.mts} +13 -13
  11. package/dist/array/impl/array-utils-length-bounded-array-guard.d.mts.map +1 -0
  12. package/dist/{guard/is-length-bounded-array.mjs → array/impl/array-utils-length-bounded-array-guard.mjs} +1 -1
  13. package/dist/array/impl/array-utils-length-bounded-array-guard.mjs.map +1 -0
  14. package/dist/array/impl/array-utils-modification.d.mts +9 -9
  15. package/dist/array/impl/array-utils-modification.d.mts.map +1 -1
  16. package/dist/array/impl/array-utils-modification.mjs.map +1 -1
  17. package/dist/array/impl/array-utils-reducing-value.d.mts +9 -9
  18. package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -1
  19. package/dist/array/impl/array-utils-size.d.mts +3 -3
  20. package/dist/array/impl/array-utils-size.mjs.map +1 -1
  21. package/dist/array/impl/array-utils-slicing.d.mts +9 -9
  22. package/dist/array/impl/array-utils-slicing.d.mts.map +1 -1
  23. package/dist/array/impl/array-utils-slicing.mjs.map +1 -1
  24. package/dist/array/impl/array-utils-transformation.d.mts +16 -10
  25. package/dist/array/impl/array-utils-transformation.d.mts.map +1 -1
  26. package/dist/array/impl/array-utils-transformation.mjs.map +1 -1
  27. package/dist/array/impl/index.d.mts +2 -0
  28. package/dist/array/impl/index.d.mts.map +1 -1
  29. package/dist/array/impl/index.mjs +2 -0
  30. package/dist/array/impl/index.mjs.map +1 -1
  31. package/dist/entry-point.mjs +1 -3
  32. package/dist/entry-point.mjs.map +1 -1
  33. package/dist/guard/index.d.mts +0 -3
  34. package/dist/guard/index.d.mts.map +1 -1
  35. package/dist/guard/index.mjs +0 -3
  36. package/dist/guard/index.mjs.map +1 -1
  37. package/dist/index.d.mts +1 -0
  38. package/dist/index.d.mts.map +1 -1
  39. package/dist/index.mjs +1 -3
  40. package/dist/index.mjs.map +1 -1
  41. package/dist/number/branded-types/finite-number.d.mts +47 -61
  42. package/dist/number/branded-types/finite-number.d.mts.map +1 -1
  43. package/dist/number/branded-types/finite-number.mjs +37 -41
  44. package/dist/number/branded-types/finite-number.mjs.map +1 -1
  45. package/dist/number/branded-types/int.d.mts +40 -46
  46. package/dist/number/branded-types/int.d.mts.map +1 -1
  47. package/dist/number/branded-types/int.mjs +29 -31
  48. package/dist/number/branded-types/int.mjs.map +1 -1
  49. package/dist/number/branded-types/int16.d.mts +65 -58
  50. package/dist/number/branded-types/int16.d.mts.map +1 -1
  51. package/dist/number/branded-types/int16.mjs +49 -45
  52. package/dist/number/branded-types/int16.mjs.map +1 -1
  53. package/dist/number/branded-types/int32.d.mts +65 -58
  54. package/dist/number/branded-types/int32.d.mts.map +1 -1
  55. package/dist/number/branded-types/int32.mjs +49 -45
  56. package/dist/number/branded-types/int32.mjs.map +1 -1
  57. package/dist/number/branded-types/negative-finite-number.d.mts +68 -59
  58. package/dist/number/branded-types/negative-finite-number.d.mts.map +1 -1
  59. package/dist/number/branded-types/negative-finite-number.mjs +52 -46
  60. package/dist/number/branded-types/negative-finite-number.mjs.map +1 -1
  61. package/dist/number/branded-types/negative-int.d.mts +60 -48
  62. package/dist/number/branded-types/negative-int.d.mts.map +1 -1
  63. package/dist/number/branded-types/negative-int.mjs +40 -36
  64. package/dist/number/branded-types/negative-int.mjs.map +1 -1
  65. package/dist/number/branded-types/negative-safe-int.d.mts +57 -56
  66. package/dist/number/branded-types/negative-safe-int.d.mts.map +1 -1
  67. package/dist/number/branded-types/negative-safe-int.mjs +40 -41
  68. package/dist/number/branded-types/negative-safe-int.mjs.map +1 -1
  69. package/dist/number/branded-types/non-negative-finite-number.d.mts +74 -64
  70. package/dist/number/branded-types/non-negative-finite-number.d.mts.map +1 -1
  71. package/dist/number/branded-types/non-negative-finite-number.mjs +58 -51
  72. package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
  73. package/dist/number/branded-types/non-negative-int16.d.mts +64 -57
  74. package/dist/number/branded-types/non-negative-int16.d.mts.map +1 -1
  75. package/dist/number/branded-types/non-negative-int16.mjs +47 -43
  76. package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
  77. package/dist/number/branded-types/non-negative-int32.d.mts +64 -58
  78. package/dist/number/branded-types/non-negative-int32.d.mts.map +1 -1
  79. package/dist/number/branded-types/non-negative-int32.mjs +47 -44
  80. package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
  81. package/dist/number/branded-types/non-positive-finite-number.d.mts +64 -54
  82. package/dist/number/branded-types/non-positive-finite-number.d.mts.map +1 -1
  83. package/dist/number/branded-types/non-positive-finite-number.mjs +48 -41
  84. package/dist/number/branded-types/non-positive-finite-number.mjs.map +1 -1
  85. package/dist/number/branded-types/non-positive-int.d.mts +41 -146
  86. package/dist/number/branded-types/non-positive-int.d.mts.map +1 -1
  87. package/dist/number/branded-types/non-positive-int.mjs +27 -107
  88. package/dist/number/branded-types/non-positive-int.mjs.map +1 -1
  89. package/dist/number/branded-types/non-positive-safe-int.d.mts +54 -53
  90. package/dist/number/branded-types/non-positive-safe-int.d.mts.map +1 -1
  91. package/dist/number/branded-types/non-positive-safe-int.mjs +37 -39
  92. package/dist/number/branded-types/non-positive-safe-int.mjs.map +1 -1
  93. package/dist/number/branded-types/non-zero-finite-number.d.mts +62 -49
  94. package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -1
  95. package/dist/number/branded-types/non-zero-finite-number.mjs +46 -37
  96. package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
  97. package/dist/number/branded-types/non-zero-int.d.mts +51 -38
  98. package/dist/number/branded-types/non-zero-int.d.mts.map +1 -1
  99. package/dist/number/branded-types/non-zero-int.mjs +31 -27
  100. package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
  101. package/dist/number/branded-types/non-zero-int16.d.mts +52 -53
  102. package/dist/number/branded-types/non-zero-int16.d.mts.map +1 -1
  103. package/dist/number/branded-types/non-zero-int16.mjs +36 -39
  104. package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
  105. package/dist/number/branded-types/non-zero-int32.d.mts +52 -54
  106. package/dist/number/branded-types/non-zero-int32.d.mts.map +1 -1
  107. package/dist/number/branded-types/non-zero-int32.mjs +36 -40
  108. package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
  109. package/dist/number/branded-types/non-zero-safe-int.d.mts +53 -54
  110. package/dist/number/branded-types/non-zero-safe-int.d.mts.map +1 -1
  111. package/dist/number/branded-types/non-zero-safe-int.mjs +36 -40
  112. package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
  113. package/dist/number/branded-types/non-zero-uint16.d.mts +52 -53
  114. package/dist/number/branded-types/non-zero-uint16.d.mts.map +1 -1
  115. package/dist/number/branded-types/non-zero-uint16.mjs +35 -39
  116. package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
  117. package/dist/number/branded-types/non-zero-uint32.d.mts +52 -53
  118. package/dist/number/branded-types/non-zero-uint32.d.mts.map +1 -1
  119. package/dist/number/branded-types/non-zero-uint32.mjs +35 -39
  120. package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
  121. package/dist/number/branded-types/positive-finite-number.d.mts +74 -63
  122. package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -1
  123. package/dist/number/branded-types/positive-finite-number.mjs +58 -50
  124. package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
  125. package/dist/number/branded-types/positive-int.d.mts +46 -68
  126. package/dist/number/branded-types/positive-int.d.mts.map +1 -1
  127. package/dist/number/branded-types/positive-int.mjs +34 -49
  128. package/dist/number/branded-types/positive-int.mjs.map +1 -1
  129. package/dist/number/branded-types/positive-int16.d.mts +61 -57
  130. package/dist/number/branded-types/positive-int16.d.mts.map +1 -1
  131. package/dist/number/branded-types/positive-int16.mjs +44 -43
  132. package/dist/number/branded-types/positive-int16.mjs.map +1 -1
  133. package/dist/number/branded-types/positive-int32.d.mts +61 -57
  134. package/dist/number/branded-types/positive-int32.d.mts.map +1 -1
  135. package/dist/number/branded-types/positive-int32.mjs +44 -43
  136. package/dist/number/branded-types/positive-int32.mjs.map +1 -1
  137. package/dist/number/branded-types/positive-safe-int.d.mts +62 -57
  138. package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
  139. package/dist/number/branded-types/positive-safe-int.mjs +45 -43
  140. package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
  141. package/dist/number/branded-types/positive-uint16.d.mts +61 -57
  142. package/dist/number/branded-types/positive-uint16.d.mts.map +1 -1
  143. package/dist/number/branded-types/positive-uint16.mjs +44 -43
  144. package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
  145. package/dist/number/branded-types/positive-uint32.d.mts +61 -58
  146. package/dist/number/branded-types/positive-uint32.d.mts.map +1 -1
  147. package/dist/number/branded-types/positive-uint32.mjs +44 -44
  148. package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
  149. package/dist/number/branded-types/safe-int.d.mts +43 -62
  150. package/dist/number/branded-types/safe-int.d.mts.map +1 -1
  151. package/dist/number/branded-types/safe-int.mjs +35 -42
  152. package/dist/number/branded-types/safe-int.mjs.map +1 -1
  153. package/dist/number/branded-types/safe-uint.d.mts +62 -57
  154. package/dist/number/branded-types/safe-uint.d.mts.map +1 -1
  155. package/dist/number/branded-types/safe-uint.mjs +46 -44
  156. package/dist/number/branded-types/safe-uint.mjs.map +1 -1
  157. package/dist/number/branded-types/uint.d.mts +63 -50
  158. package/dist/number/branded-types/uint.d.mts.map +1 -1
  159. package/dist/number/branded-types/uint.mjs +42 -39
  160. package/dist/number/branded-types/uint.mjs.map +1 -1
  161. package/dist/number/branded-types/uint16.d.mts +60 -58
  162. package/dist/number/branded-types/uint16.d.mts.map +1 -1
  163. package/dist/number/branded-types/uint16.mjs +44 -43
  164. package/dist/number/branded-types/uint16.mjs.map +1 -1
  165. package/dist/number/branded-types/uint32.d.mts +59 -55
  166. package/dist/number/branded-types/uint32.d.mts.map +1 -1
  167. package/dist/number/branded-types/uint32.mjs +42 -42
  168. package/dist/number/branded-types/uint32.mjs.map +1 -1
  169. package/dist/number/enum/int8.d.mts +56 -65
  170. package/dist/number/enum/int8.d.mts.map +1 -1
  171. package/dist/number/enum/int8.mjs +44 -43
  172. package/dist/number/enum/int8.mjs.map +1 -1
  173. package/dist/number/enum/uint8.d.mts +60 -58
  174. package/dist/number/enum/uint8.d.mts.map +1 -1
  175. package/dist/number/enum/uint8.mjs +44 -43
  176. package/dist/number/enum/uint8.mjs.map +1 -1
  177. package/dist/string/index.d.mts +2 -0
  178. package/dist/string/index.d.mts.map +1 -0
  179. package/dist/string/index.mjs +2 -0
  180. package/dist/string/index.mjs.map +1 -0
  181. package/dist/string/str.d.mts +273 -0
  182. package/dist/string/str.d.mts.map +1 -0
  183. package/dist/string/str.mjs +42 -0
  184. package/dist/string/str.mjs.map +1 -0
  185. package/package.json +31 -92
  186. package/src/array/impl/array-utils-creation.mts +2 -1
  187. package/src/array/impl/array-utils-element-access.mts +3 -3
  188. package/src/array/impl/array-utils-element-access.test.mts +3 -3
  189. package/src/{guard/as-length-bounded-array.mts → array/impl/array-utils-length-bounded-array-cast.mts} +9 -9
  190. package/src/{guard/as-length-bounded-array.test.mts → array/impl/array-utils-length-bounded-array-cast.test.mts} +2 -2
  191. package/src/{guard/is-length-bounded-array.mts → array/impl/array-utils-length-bounded-array-guard.mts} +12 -12
  192. package/src/{guard/is-length-bounded-array.test.mts → array/impl/array-utils-length-bounded-array-guard.test.mts} +2 -2
  193. package/src/array/impl/array-utils-modification.mts +9 -8
  194. package/src/array/impl/array-utils-modification.test.mts +6 -1
  195. package/src/array/impl/array-utils-reducing-value.mts +9 -9
  196. package/src/array/impl/array-utils-size.mts +2 -2
  197. package/src/array/impl/array-utils-slicing.mts +24 -13
  198. package/src/array/impl/array-utils-transformation.mts +18 -12
  199. package/src/array/impl/array-utils-transformation.test.mts +12 -12
  200. package/src/array/impl/index.mts +2 -0
  201. package/src/guard/index.mts +0 -3
  202. package/src/index.mts +1 -0
  203. package/src/number/branded-types/finite-number.mts +47 -61
  204. package/src/number/branded-types/int.mts +40 -46
  205. package/src/number/branded-types/int16.mts +65 -58
  206. package/src/number/branded-types/int32.mts +65 -58
  207. package/src/number/branded-types/negative-finite-number.mts +68 -68
  208. package/src/number/branded-types/negative-int.mts +60 -57
  209. package/src/number/branded-types/negative-safe-int.mts +57 -65
  210. package/src/number/branded-types/non-negative-finite-number.mts +74 -64
  211. package/src/number/branded-types/non-negative-int16.mts +64 -57
  212. package/src/number/branded-types/non-negative-int32.mts +64 -58
  213. package/src/number/branded-types/non-positive-finite-number.mts +64 -54
  214. package/src/number/branded-types/non-positive-int.mts +41 -146
  215. package/src/number/branded-types/non-positive-safe-int.mts +54 -53
  216. package/src/number/branded-types/non-zero-finite-number.mts +62 -51
  217. package/src/number/branded-types/non-zero-int.mts +51 -38
  218. package/src/number/branded-types/non-zero-int16.mts +52 -53
  219. package/src/number/branded-types/non-zero-int32.mts +52 -54
  220. package/src/number/branded-types/non-zero-safe-int.mts +53 -54
  221. package/src/number/branded-types/non-zero-uint16.mts +52 -53
  222. package/src/number/branded-types/non-zero-uint32.mts +52 -53
  223. package/src/number/branded-types/positive-finite-number.mts +74 -63
  224. package/src/number/branded-types/positive-int.mts +46 -68
  225. package/src/number/branded-types/positive-int16.mts +61 -57
  226. package/src/number/branded-types/positive-int32.mts +61 -57
  227. package/src/number/branded-types/positive-safe-int.mts +62 -57
  228. package/src/number/branded-types/positive-uint16.mts +61 -57
  229. package/src/number/branded-types/positive-uint32.mts +61 -58
  230. package/src/number/branded-types/safe-int.mts +43 -62
  231. package/src/number/branded-types/safe-uint.mts +62 -57
  232. package/src/number/branded-types/uint.mts +63 -50
  233. package/src/number/branded-types/uint16.mts +60 -58
  234. package/src/number/branded-types/uint32.mts +59 -55
  235. package/src/number/enum/int8.mts +56 -65
  236. package/src/number/enum/uint8.mts +60 -58
  237. package/src/string/index.mts +1 -0
  238. package/src/string/str.mts +371 -0
  239. package/src/string/str.test.mts +215 -0
  240. package/dist/guard/as-length-bounded-array.d.mts.map +0 -1
  241. package/dist/guard/as-length-bounded-array.mjs.map +0 -1
  242. package/dist/guard/is-length-bounded-array.d.mts.map +0 -1
  243. package/dist/guard/is-length-bounded-array.mjs.map +0 -1
  244. package/dist/guard/is-length-bounded-string.d.mts +0 -163
  245. package/dist/guard/is-length-bounded-string.d.mts.map +0 -1
  246. package/dist/guard/is-length-bounded-string.mjs +0 -7
  247. package/dist/guard/is-length-bounded-string.mjs.map +0 -1
  248. package/src/guard/is-length-bounded-string.mts +0 -199
  249. package/src/guard/is-length-bounded-string.test.mts +0 -170
@@ -24,81 +24,77 @@ const isNonZeroInt32 = is;
24
24
  const asNonZeroInt32 = castType;
25
25
  const NonZeroInt32 = {
26
26
  /**
27
- * Type guard to check if a value is a NonZeroInt32.
27
+ * Type guard that checks if a value is a non-zero integer in [-2^31, 2^31).
28
28
  *
29
- * @param value The value to check.
30
- * @returns `true` if the value is a 32-bit non-zero signed integer, `false`
31
- * otherwise.
29
+ * @param value - The value to check
30
+ * @returns `true` if the value is a non-zero integer in [-2^31, 2^31), `false` otherwise
31
+ * @see {@link isNonZeroInt32} for usage examples
32
32
  */
33
33
  is,
34
34
  /**
35
- * The minimum value for a 32-bit non-zero signed integer.
36
- *
37
- * @readonly
35
+ * The smallest value representable as `NonZeroInt32`.
38
36
  */
39
37
  MIN_VALUE,
40
38
  /**
41
- * The maximum value for a 32-bit non-zero signed integer.
42
- *
43
- * @readonly
39
+ * The largest value representable as `NonZeroInt32`.
44
40
  */
45
41
  MAX_VALUE,
46
42
  /**
47
- * Returns the absolute value of a 32-bit non-zero signed integer.
43
+ * Returns the absolute value of a non-zero integer in [-2^31, 2^31).
44
+ *
45
+ * The result is non-negative and keeps the `NonZeroInt32` brand.
48
46
  *
49
- * @param a The NonZeroInt32 value.
50
- * @returns The absolute value as a NonZeroInt32, clamped to valid range.
47
+ * @param a - The non-zero integer value
48
+ * @returns The absolute value as a non-negative `NonZeroInt32`
51
49
  */
52
50
  abs,
53
51
  /**
54
- * Returns the smaller of two NonZeroInt32 values.
52
+ * Returns the smallest of the given non-zero integers.
55
53
  *
56
- * @param a The first NonZeroInt32.
57
- * @param b The second NonZeroInt32.
58
- * @returns The minimum value as a NonZeroInt32.
54
+ * @param values - The non-zero integers to compare (at least one required)
55
+ * @returns The smallest value as a `NonZeroInt32`
59
56
  */
60
57
  min: min_,
61
58
  /**
62
- * Returns the larger of two NonZeroInt32 values.
59
+ * Returns the largest of the given non-zero integers.
63
60
  *
64
- * @param a The first NonZeroInt32.
65
- * @param b The second NonZeroInt32.
66
- * @returns The maximum value as a NonZeroInt32.
61
+ * @param values - The non-zero integers to compare (at least one required)
62
+ * @returns The largest value as a `NonZeroInt32`
67
63
  */
68
64
  max: max_,
69
65
  /**
70
- * Clamps a number to the NonZeroInt32 range (avoiding zero).
66
+ * Clamps a `number` into the `NonZeroInt32` range, rounding to the nearest
67
+ * integer and constraining the result to `[MIN_VALUE, MAX_VALUE]`.
71
68
  *
72
- * @param value The number to clamp.
73
- * @returns The value clamped to [-2147483648, 2147483647] \ {0} as a
74
- * NonZeroInt32.
69
+ * @param value - The value to clamp
70
+ * @returns The clamped value as a `NonZeroInt32`
75
71
  */
76
72
  clamp,
77
73
  /**
78
- * Generates a random NonZeroInt32 value within the valid range.
74
+ * Generates a random `NonZeroInt32` within the given range.
79
75
  *
80
- * @returns A random NonZeroInt32 between MIN_VALUE and MAX_VALUE (excluding
81
- * 0).
76
+ * The range is inclusive on both ends.
77
+ *
78
+ * @param min - The minimum value (inclusive)
79
+ * @param max - The maximum value (inclusive)
80
+ * @returns A random `NonZeroInt32` in `[min, max]`
82
81
  */
83
82
  random,
84
83
  /**
85
- * Raises a NonZeroInt32 to the power of another NonZeroInt32.
84
+ * Raises `a` to the power `b`, returning `a ** b` as a `NonZeroInt32`
85
+ * (floored to an integer).
86
86
  *
87
- * @param a The base NonZeroInt32.
88
- * @param b The exponent NonZeroInt32.
89
- * @returns `a ** b` clamped to [-2147483648, 2147483647] as a NonZeroInt32.
87
+ * @param a - The base non-zero integer
88
+ * @param b - The exponent non-zero integer
89
+ * @returns `a ** b` as a `NonZeroInt32`
90
90
  */
91
91
  pow,
92
92
  /**
93
- * Multiplies two NonZeroInt32 values.
94
- *
95
- * The product of two non-zero integers is always non-zero, so this stays
96
- * closed; for the non-closed operations (`add`/`sub`/`div`, whose result may
97
- * be `0`) use {@link Num.add}/{@link Num.sub}/{@link Num.divInt}.
93
+ * Multiplies two non-zero integers, returning `a * b` as a `NonZeroInt32`.
98
94
  *
99
- * @param a The first NonZeroInt32.
100
- * @param b The second NonZeroInt32.
101
- * @returns `a * b` clamped to [-2147483648, 2147483647] as a NonZeroInt32.
95
+ * @param a - The first non-zero integer
96
+ * @param b - The second non-zero integer
97
+ * @returns The product of `a` and `b` as a `NonZeroInt32`
102
98
  */
103
99
  mul
104
100
  };
@@ -1 +1 @@
1
- {"version":3,"file":"non-zero-int32.mjs","sources":["../../../src/number/branded-types/non-zero-int32.mts"],"sourcesContent":["import { type NonZeroInt32 as TtfImported_NonZeroInt32 } from 'ts-type-forge';\nimport { expectType } from '../../expect-type.mjs';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type NonZeroInt32 = TtfImported_NonZeroInt32;\n\ntype ElementType = NonZeroInt32;\n\nconst typeNameInMessage = 'a non-zero integer in [-2^31, 2^31)';\n\nconst {\n MAX_VALUE,\n MIN_VALUE,\n abs,\n castType,\n clamp,\n is,\n max: max_,\n min: min_,\n mul,\n pow,\n randomNonZero: random,\n} = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<\n ElementType,\n number,\n number\n>({\n integerOrSafeInteger: 'SafeInteger',\n nonZero: true,\n MIN_VALUE: -(2 ** 31),\n MAX_VALUE: 2 ** 31 - 1,\n typeNameInMessage,\n} as const);\n\n/**\n * Checks if a number is a NonZeroInt32 (32-bit non-zero signed integer in the\n * range [-2^31, 2^31) excluding 0).\n *\n * @param value The value to check.\n * @returns `true` if the value is a NonZeroInt32, `false` otherwise.\n */\nexport const isNonZeroInt32 = is;\n\n/**\n * Casts a number to a NonZeroInt32 type.\n *\n * @param value The value to cast.\n * @returns The value as a NonZeroInt32 type.\n * @throws {TypeError} If the value is not a non-zero integer in [-2^31, 2^31).\n */\nexport const asNonZeroInt32 = castType;\n\n/**\n * Namespace providing type-safe arithmetic operations for 32-bit non-zero\n * signed integers.\n *\n * All operations automatically clamp results to the valid NonZeroInt32 range\n * [-2147483648, 2147483647] excluding 0. This ensures that all arithmetic\n * maintains the 32-bit non-zero signed integer constraint, preventing zero\n * results and overflow.\n */\nexport const NonZeroInt32 = {\n /**\n * Type guard to check if a value is a NonZeroInt32.\n *\n * @param value The value to check.\n * @returns `true` if the value is a 32-bit non-zero signed integer, `false`\n * otherwise.\n */\n is,\n\n /**\n * The minimum value for a 32-bit non-zero signed integer.\n *\n * @readonly\n */\n MIN_VALUE,\n\n /**\n * The maximum value for a 32-bit non-zero signed integer.\n *\n * @readonly\n */\n MAX_VALUE,\n\n /**\n * Returns the absolute value of a 32-bit non-zero signed integer.\n *\n * @param a The NonZeroInt32 value.\n * @returns The absolute value as a NonZeroInt32, clamped to valid range.\n */\n abs,\n\n /**\n * Returns the smaller of two NonZeroInt32 values.\n *\n * @param a The first NonZeroInt32.\n * @param b The second NonZeroInt32.\n * @returns The minimum value as a NonZeroInt32.\n */\n min: min_,\n\n /**\n * Returns the larger of two NonZeroInt32 values.\n *\n * @param a The first NonZeroInt32.\n * @param b The second NonZeroInt32.\n * @returns The maximum value as a NonZeroInt32.\n */\n max: max_,\n\n /**\n * Clamps a number to the NonZeroInt32 range (avoiding zero).\n *\n * @param value The number to clamp.\n * @returns The value clamped to [-2147483648, 2147483647] \\ {0} as a\n * NonZeroInt32.\n */\n clamp,\n\n /**\n * Generates a random NonZeroInt32 value within the valid range.\n *\n * @returns A random NonZeroInt32 between MIN_VALUE and MAX_VALUE (excluding\n * 0).\n */\n random,\n\n /**\n * Raises a NonZeroInt32 to the power of another NonZeroInt32.\n *\n * @param a The base NonZeroInt32.\n * @param b The exponent NonZeroInt32.\n * @returns `a ** b` clamped to [-2147483648, 2147483647] as a NonZeroInt32.\n */\n pow,\n\n /**\n * Multiplies two NonZeroInt32 values.\n *\n * The product of two non-zero integers is always non-zero, so this stays\n * closed; for the non-closed operations (`add`/`sub`/`div`, whose result may\n * be `0`) use {@link Num.add}/{@link Num.sub}/{@link Num.divInt}.\n *\n * @param a The first NonZeroInt32.\n * @param b The second NonZeroInt32.\n * @returns `a * b` clamped to [-2147483648, 2147483647] as a NonZeroInt32.\n */\n mul,\n} as const;\n\nexpectType<\n keyof typeof NonZeroInt32,\n keyof TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'range',\n 'mul'\n >\n>('=');\n\nexpectType<\n typeof NonZeroInt32,\n TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'range',\n 'mul'\n >\n>('<=');\n"],"names":[],"mappings":";;AAQA,MAAM,iBAAA,GAAoB,qCAAA;AAE1B,MAAM;AAAA,EACJ,SAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,EAAA;AAAA,EACA,GAAA,EAAK,IAAA;AAAA,EACL,GAAA,EAAK,IAAA;AAAA,EACL,GAAA;AAAA,EACA,GAAA;AAAA,EACA,aAAA,EAAe;AACjB,CAAA,GAAI,oBAAA,CAAqB,mBAAmB,mBAAA,CAI1C;AAAA,EACA,oBAAA,EAAsB,aAAA;AAAA,EACtB,OAAA,EAAS,IAAA;AAAA,EACT,SAAA,EAAW,WAAO;AAAA,EAClB,SAAA,EAAW,KAAK,EAAA,GAAK,CAAA;AAAA,EACrB;AACF,CAAU,CAAA;AASH,MAAM,cAAA,GAAiB;AASvB,MAAM,cAAA,GAAiB;AAWvB,MAAM,YAAA,GAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ1B,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASL,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASL,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA;AACF;;;;"}
1
+ {"version":3,"file":"non-zero-int32.mjs","sources":["../../../src/number/branded-types/non-zero-int32.mts"],"sourcesContent":["import { type NonZeroInt32 as TtfImported_NonZeroInt32 } from 'ts-type-forge';\nimport { expectType } from '../../expect-type.mjs';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type NonZeroInt32 = TtfImported_NonZeroInt32;\n\ntype ElementType = NonZeroInt32;\n\nconst typeNameInMessage = 'a non-zero integer in [-2^31, 2^31)';\n\nconst {\n MAX_VALUE,\n MIN_VALUE,\n abs,\n castType,\n clamp,\n is,\n max: max_,\n min: min_,\n mul,\n pow,\n randomNonZero: random,\n} = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<\n ElementType,\n number,\n number\n>({\n integerOrSafeInteger: 'SafeInteger',\n nonZero: true,\n MIN_VALUE: -(2 ** 31),\n MAX_VALUE: 2 ** 31 - 1,\n typeNameInMessage,\n} as const);\n\n/**\n * Type guard that checks if a value is a non-zero integer in [-2^31, 2^31).\n *\n * Returns `true` for a non-zero integer in [-2^31, 2^31) — a value with no\n * fractional component.\n *\n * @param value - The value to check\n * @returns `true` if the value is a non-zero integer in [-2^31, 2^31), `false` otherwise\n */\nexport const isNonZeroInt32 = is;\n\n/**\n * Casts a `number` to the `NonZeroInt32` branded type.\n *\n * Validates that the value is a non-zero integer in [-2^31, 2^31) and returns\n * it with the `NonZeroInt32` brand. Throws a `TypeError` otherwise.\n *\n * @param value - The value to cast\n * @returns The value as a `NonZeroInt32`\n * @throws {TypeError} If the value is not a non-zero integer in [-2^31, 2^31)\n */\nexport const asNonZeroInt32 = castType;\n\n/**\n * Namespace providing type-safe operations for the `NonZeroInt32` branded type.\n *\n * The `NonZeroInt32` type represents a non-zero integer in [-2^31, 2^31).\n * Division (`div`) uses floor division.\n */\nexport const NonZeroInt32 = {\n /**\n * Type guard that checks if a value is a non-zero integer in [-2^31, 2^31).\n *\n * @param value - The value to check\n * @returns `true` if the value is a non-zero integer in [-2^31, 2^31), `false` otherwise\n * @see {@link isNonZeroInt32} for usage examples\n */\n is,\n\n /**\n * The smallest value representable as `NonZeroInt32`.\n */\n MIN_VALUE,\n\n /**\n * The largest value representable as `NonZeroInt32`.\n */\n MAX_VALUE,\n\n /**\n * Returns the absolute value of a non-zero integer in [-2^31, 2^31).\n *\n * The result is non-negative and keeps the `NonZeroInt32` brand.\n *\n * @param a - The non-zero integer value\n * @returns The absolute value as a non-negative `NonZeroInt32`\n */\n abs,\n\n /**\n * Returns the smallest of the given non-zero integers.\n *\n * @param values - The non-zero integers to compare (at least one required)\n * @returns The smallest value as a `NonZeroInt32`\n */\n min: min_,\n\n /**\n * Returns the largest of the given non-zero integers.\n *\n * @param values - The non-zero integers to compare (at least one required)\n * @returns The largest value as a `NonZeroInt32`\n */\n max: max_,\n\n /**\n * Clamps a `number` into the `NonZeroInt32` range, rounding to the nearest\n * integer and constraining the result to `[MIN_VALUE, MAX_VALUE]`.\n *\n * @param value - The value to clamp\n * @returns The clamped value as a `NonZeroInt32`\n */\n clamp,\n\n /**\n * Generates a random `NonZeroInt32` within the given range.\n *\n * The range is inclusive on both ends.\n *\n * @param min - The minimum value (inclusive)\n * @param max - The maximum value (inclusive)\n * @returns A random `NonZeroInt32` in `[min, max]`\n */\n random,\n\n /**\n * Raises `a` to the power `b`, returning `a ** b` as a `NonZeroInt32`\n * (floored to an integer).\n *\n * @param a - The base non-zero integer\n * @param b - The exponent non-zero integer\n * @returns `a ** b` as a `NonZeroInt32`\n */\n pow,\n\n /**\n * Multiplies two non-zero integers, returning `a * b` as a `NonZeroInt32`.\n *\n * @param a - The first non-zero integer\n * @param b - The second non-zero integer\n * @returns The product of `a` and `b` as a `NonZeroInt32`\n */\n mul,\n} as const;\n\nexpectType<\n keyof typeof NonZeroInt32,\n keyof TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'range',\n 'mul'\n >\n>('=');\n\nexpectType<\n typeof NonZeroInt32,\n TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'range',\n 'mul'\n >\n>('<=');\n"],"names":[],"mappings":";;AAQA,MAAM,iBAAA,GAAoB,qCAAA;AAE1B,MAAM;AAAA,EACJ,SAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,EAAA;AAAA,EACA,GAAA,EAAK,IAAA;AAAA,EACL,GAAA,EAAK,IAAA;AAAA,EACL,GAAA;AAAA,EACA,GAAA;AAAA,EACA,aAAA,EAAe;AACjB,CAAA,GAAI,oBAAA,CAAqB,mBAAmB,mBAAA,CAI1C;AAAA,EACA,oBAAA,EAAsB,aAAA;AAAA,EACtB,OAAA,EAAS,IAAA;AAAA,EACT,SAAA,EAAW,WAAO;AAAA,EAClB,SAAA,EAAW,KAAK,EAAA,GAAK,CAAA;AAAA,EACrB;AACF,CAAU,CAAA;AAWH,MAAM,cAAA,GAAiB;AAYvB,MAAM,cAAA,GAAiB;AAQvB,MAAM,YAAA,GAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ1B,EAAA;AAAA;AAAA;AAAA;AAAA,EAKA,SAAA;AAAA;AAAA;AAAA;AAAA,EAKA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQL,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASL,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA;AACF;;;;"}
@@ -1,19 +1,24 @@
1
1
  import { type SafeInt, type SafeUint, type NonZeroSafeInt as TtfImported_NonZeroSafeInt } from 'ts-type-forge';
2
2
  export type NonZeroSafeInt = TtfImported_NonZeroSafeInt;
3
3
  /**
4
- * Checks if a number is a NonZeroSafeInt (a non-zero safe integer in the range
5
- * [MIN_SAFE_INTEGER, MAX_SAFE_INTEGER] excluding 0).
4
+ * Type guard that checks if a value is a non-zero safe integer.
6
5
  *
7
- * @param value The value to check.
8
- * @returns `true` if the value is a NonZeroSafeInt, `false` otherwise.
6
+ * Returns `true` for a non-zero safe integer — a value with no fractional
7
+ * component.
8
+ *
9
+ * @param value - The value to check
10
+ * @returns `true` if the value is a non-zero safe integer, `false` otherwise
9
11
  */
10
12
  export declare const isNonZeroSafeInt: (a: number) => a is TtfImported_NonZeroSafeInt;
11
13
  /**
12
- * Casts a number to a NonZeroSafeInt type.
14
+ * Casts a `number` to the `NonZeroSafeInt` branded type.
15
+ *
16
+ * Validates that the value is a non-zero safe integer and returns it with the
17
+ * `NonZeroSafeInt` brand. Throws a `TypeError` otherwise.
13
18
  *
14
- * @param value The value to cast.
15
- * @returns The value as a NonZeroSafeInt type.
16
- * @throws {TypeError} If the value is not a non-zero safe integer.
19
+ * @param value - The value to cast
20
+ * @returns The value as a `NonZeroSafeInt`
21
+ * @throws {TypeError} If the value is not a non-zero safe integer
17
22
  */
18
23
  export declare const asNonZeroSafeInt: <N extends number>(x: N) => number & {
19
24
  readonly "!=0": true;
@@ -25,92 +30,86 @@ export declare const asNonZeroSafeInt: <N extends number>(x: N) => number & {
25
30
  'TSTypeForgeInternals--edd2f9ce-7ca5-45b0-9d1a-bd61b9b5d9c3': unknown;
26
31
  }> & N;
27
32
  /**
28
- * Namespace providing type-safe arithmetic operations for non-zero safe
29
- * integers.
33
+ * Namespace providing type-safe operations for the `NonZeroSafeInt` branded
34
+ * type.
30
35
  *
31
- * All operations automatically clamp results to the non-zero safe integer
32
- * range, excluding zero. This ensures that all arithmetic maintains both the
33
- * non-zero constraint and IEEE 754 precision guarantees, preventing precision
34
- * loss while ensuring results are never zero.
36
+ * The `NonZeroSafeInt` type represents a non-zero safe integer. Division
37
+ * (`div`) uses floor division.
35
38
  */
36
39
  export declare const NonZeroSafeInt: {
37
40
  /**
38
- * Type guard to check if a value is a NonZeroSafeInt.
41
+ * Type guard that checks if a value is a non-zero safe integer.
39
42
  *
40
- * @param value The value to check.
41
- * @returns `true` if the value is a non-zero safe integer, `false` otherwise.
43
+ * @param value - The value to check
44
+ * @returns `true` if the value is a non-zero safe integer, `false` otherwise
45
+ * @see {@link isNonZeroSafeInt} for usage examples
42
46
  */
43
47
  readonly is: (a: number) => a is TtfImported_NonZeroSafeInt;
44
48
  /**
45
- * The minimum safe integer value (-(2^53 - 1)).
46
- *
47
- * @readonly
49
+ * The smallest value representable as `NonZeroSafeInt`.
48
50
  */
49
51
  readonly MIN_VALUE: SafeInt;
50
52
  /**
51
- * The maximum safe integer value (2^53 - 1).
52
- *
53
- * @readonly
53
+ * The largest value representable as `NonZeroSafeInt`.
54
54
  */
55
55
  readonly MAX_VALUE: SafeUint;
56
56
  /**
57
57
  * Returns the absolute value of a non-zero safe integer.
58
58
  *
59
- * @param a The NonZeroSafeInt value.
60
- * @returns The absolute value as a NonZeroSafeInt, clamped to safe range.
59
+ * The result is non-negative and keeps the `NonZeroSafeInt` brand.
60
+ *
61
+ * @param a - The non-zero safe integer value
62
+ * @returns The absolute value as a non-negative `NonZeroSafeInt`
61
63
  */
62
64
  readonly abs: (x: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroSafeInt>) => import("ts-type-forge").IntersectBrand<TtfImported_NonZeroSafeInt, import("ts-type-forge").PositiveNumber>;
63
65
  /**
64
- * Returns the smaller of two NonZeroSafeInt values.
66
+ * Returns the smallest of the given non-zero safe integers.
65
67
  *
66
- * @param a The first NonZeroSafeInt.
67
- * @param b The second NonZeroSafeInt.
68
- * @returns The minimum value as a NonZeroSafeInt.
68
+ * @param values - The non-zero safe integers to compare (at least one required)
69
+ * @returns The smallest value as a `NonZeroSafeInt`
69
70
  */
70
71
  readonly min: (...values: readonly import("ts-type-forge").WithSmallInt<TtfImported_NonZeroSafeInt>[]) => TtfImported_NonZeroSafeInt;
71
72
  /**
72
- * Returns the larger of two NonZeroSafeInt values.
73
+ * Returns the largest of the given non-zero safe integers.
73
74
  *
74
- * @param a The first NonZeroSafeInt.
75
- * @param b The second NonZeroSafeInt.
76
- * @returns The maximum value as a NonZeroSafeInt.
75
+ * @param values - The non-zero safe integers to compare (at least one required)
76
+ * @returns The largest value as a `NonZeroSafeInt`
77
77
  */
78
78
  readonly max: (...values: readonly import("ts-type-forge").WithSmallInt<TtfImported_NonZeroSafeInt>[]) => TtfImported_NonZeroSafeInt;
79
79
  /**
80
- * Clamps a number to the non-zero safe integer range.
80
+ * Clamps a `number` into the `NonZeroSafeInt` range, rounding to the nearest
81
+ * integer and constraining the result to `[MIN_VALUE, MAX_VALUE]`.
81
82
  *
82
- * @param value The number to clamp.
83
- * @returns The value clamped to [MIN_SAFE_INTEGER, MAX_SAFE_INTEGER] \ {0} as
84
- * a NonZeroSafeInt.
83
+ * @param value - The value to clamp
84
+ * @returns The clamped value as a `NonZeroSafeInt`
85
85
  */
86
86
  readonly clamp: (x: number) => TtfImported_NonZeroSafeInt;
87
87
  /**
88
- * Generates a random NonZeroSafeInt value within the valid range.
88
+ * Generates a random `NonZeroSafeInt` within the given range.
89
+ *
90
+ * The range is inclusive on both ends.
89
91
  *
90
- * @returns A random non-zero safe integer between MIN_SAFE_INTEGER and
91
- * MAX_SAFE_INTEGER.
92
+ * @param min - The minimum value (inclusive)
93
+ * @param max - The maximum value (inclusive)
94
+ * @returns A random `NonZeroSafeInt` in `[min, max]`
92
95
  */
93
96
  readonly random: (min?: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroSafeInt> | undefined, max?: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroSafeInt> | undefined) => TtfImported_NonZeroSafeInt;
94
97
  /**
95
- * Raises a NonZeroSafeInt to the power of another NonZeroSafeInt.
98
+ * Raises `a` to the power `b`, returning `a ** b` as a `NonZeroSafeInt`
99
+ * (floored to an integer).
96
100
  *
97
- * @param a The base NonZeroSafeInt.
98
- * @param b The exponent NonZeroSafeInt.
99
- * @returns `a ** b` clamped to non-zero safe integer range as a
100
- * NonZeroSafeInt.
101
+ * @param a - The base non-zero safe integer
102
+ * @param b - The exponent non-zero safe integer
103
+ * @returns `a ** b` as a `NonZeroSafeInt`
101
104
  */
102
105
  readonly pow: (x: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroSafeInt>, y: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroSafeInt>) => TtfImported_NonZeroSafeInt;
103
106
  /**
104
- * Multiplies two NonZeroSafeInt values.
105
- *
106
- * The product of two non-zero safe integers is always non-zero, so this stays
107
- * closed; for the non-closed operations (`add`/`sub`/`div`, whose result may
108
- * be `0`) use {@link Num.add}/{@link Num.sub}/{@link Num.divInt}.
107
+ * Multiplies two non-zero safe integers, returning `a * b` as a
108
+ * `NonZeroSafeInt`.
109
109
  *
110
- * @param a The first NonZeroSafeInt.
111
- * @param b The second NonZeroSafeInt.
112
- * @returns `a * b` clamped to non-zero safe integer range as a
113
- * NonZeroSafeInt.
110
+ * @param a - The first non-zero safe integer
111
+ * @param b - The second non-zero safe integer
112
+ * @returns The product of `a` and `b` as a `NonZeroSafeInt`
114
113
  */
115
114
  readonly mul: (x: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroSafeInt>, y: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroSafeInt>) => TtfImported_NonZeroSafeInt;
116
115
  };
@@ -1 +1 @@
1
- {"version":3,"file":"non-zero-safe-int.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/non-zero-safe-int.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,cAAc,IAAI,0BAA0B,EAClD,MAAM,eAAe,CAAC;AAIvB,MAAM,MAAM,cAAc,GAAG,0BAA0B,CAAC;AAgCxD;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,gDAAK,CAAC;AAEnC;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;MAAW,CAAC;AAEzC;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc;IACzB;;;;;OAKG;;IAGH;;;;OAIG;;IAGH;;;;OAIG;;IAGH;;;;;OAKG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;OAKG;;IAGH;;;;;;;OAOG;;IAGH;;;;;;;;;;;OAWG;;CAEK,CAAC"}
1
+ {"version":3,"file":"non-zero-safe-int.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/non-zero-safe-int.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,cAAc,IAAI,0BAA0B,EAClD,MAAM,eAAe,CAAC;AAIvB,MAAM,MAAM,cAAc,GAAG,0BAA0B,CAAC;AAgCxD;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,gDAAK,CAAC;AAEnC;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;MAAW,CAAC;AAEzC;;;;;;GAMG;AACH,eAAO,MAAM,cAAc;IACzB;;;;;;OAMG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;;;;;;OAOG;;IAGH;;;;;OAKG;;IAGH;;;;;OAKG;;IAGH;;;;;;OAMG;;IAGH;;;;;;;;OAQG;;IAGH;;;;;;;OAOG;;IAGH;;;;;;;OAOG;;CAEK,CAAC"}
@@ -26,82 +26,78 @@ const isNonZeroSafeInt = is;
26
26
  const asNonZeroSafeInt = castType;
27
27
  const NonZeroSafeInt = {
28
28
  /**
29
- * Type guard to check if a value is a NonZeroSafeInt.
29
+ * Type guard that checks if a value is a non-zero safe integer.
30
30
  *
31
- * @param value The value to check.
32
- * @returns `true` if the value is a non-zero safe integer, `false` otherwise.
31
+ * @param value - The value to check
32
+ * @returns `true` if the value is a non-zero safe integer, `false` otherwise
33
+ * @see {@link isNonZeroSafeInt} for usage examples
33
34
  */
34
35
  is,
35
36
  /**
36
- * The minimum safe integer value (-(2^53 - 1)).
37
- *
38
- * @readonly
37
+ * The smallest value representable as `NonZeroSafeInt`.
39
38
  */
40
39
  MIN_VALUE,
41
40
  /**
42
- * The maximum safe integer value (2^53 - 1).
43
- *
44
- * @readonly
41
+ * The largest value representable as `NonZeroSafeInt`.
45
42
  */
46
43
  MAX_VALUE,
47
44
  /**
48
45
  * Returns the absolute value of a non-zero safe integer.
49
46
  *
50
- * @param a The NonZeroSafeInt value.
51
- * @returns The absolute value as a NonZeroSafeInt, clamped to safe range.
47
+ * The result is non-negative and keeps the `NonZeroSafeInt` brand.
48
+ *
49
+ * @param a - The non-zero safe integer value
50
+ * @returns The absolute value as a non-negative `NonZeroSafeInt`
52
51
  */
53
52
  abs,
54
53
  /**
55
- * Returns the smaller of two NonZeroSafeInt values.
54
+ * Returns the smallest of the given non-zero safe integers.
56
55
  *
57
- * @param a The first NonZeroSafeInt.
58
- * @param b The second NonZeroSafeInt.
59
- * @returns The minimum value as a NonZeroSafeInt.
56
+ * @param values - The non-zero safe integers to compare (at least one required)
57
+ * @returns The smallest value as a `NonZeroSafeInt`
60
58
  */
61
59
  min: min_,
62
60
  /**
63
- * Returns the larger of two NonZeroSafeInt values.
61
+ * Returns the largest of the given non-zero safe integers.
64
62
  *
65
- * @param a The first NonZeroSafeInt.
66
- * @param b The second NonZeroSafeInt.
67
- * @returns The maximum value as a NonZeroSafeInt.
63
+ * @param values - The non-zero safe integers to compare (at least one required)
64
+ * @returns The largest value as a `NonZeroSafeInt`
68
65
  */
69
66
  max: max_,
70
67
  /**
71
- * Clamps a number to the non-zero safe integer range.
68
+ * Clamps a `number` into the `NonZeroSafeInt` range, rounding to the nearest
69
+ * integer and constraining the result to `[MIN_VALUE, MAX_VALUE]`.
72
70
  *
73
- * @param value The number to clamp.
74
- * @returns The value clamped to [MIN_SAFE_INTEGER, MAX_SAFE_INTEGER] \ {0} as
75
- * a NonZeroSafeInt.
71
+ * @param value - The value to clamp
72
+ * @returns The clamped value as a `NonZeroSafeInt`
76
73
  */
77
74
  clamp,
78
75
  /**
79
- * Generates a random NonZeroSafeInt value within the valid range.
76
+ * Generates a random `NonZeroSafeInt` within the given range.
80
77
  *
81
- * @returns A random non-zero safe integer between MIN_SAFE_INTEGER and
82
- * MAX_SAFE_INTEGER.
78
+ * The range is inclusive on both ends.
79
+ *
80
+ * @param min - The minimum value (inclusive)
81
+ * @param max - The maximum value (inclusive)
82
+ * @returns A random `NonZeroSafeInt` in `[min, max]`
83
83
  */
84
84
  random,
85
85
  /**
86
- * Raises a NonZeroSafeInt to the power of another NonZeroSafeInt.
86
+ * Raises `a` to the power `b`, returning `a ** b` as a `NonZeroSafeInt`
87
+ * (floored to an integer).
87
88
  *
88
- * @param a The base NonZeroSafeInt.
89
- * @param b The exponent NonZeroSafeInt.
90
- * @returns `a ** b` clamped to non-zero safe integer range as a
91
- * NonZeroSafeInt.
89
+ * @param a - The base non-zero safe integer
90
+ * @param b - The exponent non-zero safe integer
91
+ * @returns `a ** b` as a `NonZeroSafeInt`
92
92
  */
93
93
  pow,
94
94
  /**
95
- * Multiplies two NonZeroSafeInt values.
96
- *
97
- * The product of two non-zero safe integers is always non-zero, so this stays
98
- * closed; for the non-closed operations (`add`/`sub`/`div`, whose result may
99
- * be `0`) use {@link Num.add}/{@link Num.sub}/{@link Num.divInt}.
95
+ * Multiplies two non-zero safe integers, returning `a * b` as a
96
+ * `NonZeroSafeInt`.
100
97
  *
101
- * @param a The first NonZeroSafeInt.
102
- * @param b The second NonZeroSafeInt.
103
- * @returns `a * b` clamped to non-zero safe integer range as a
104
- * NonZeroSafeInt.
98
+ * @param a - The first non-zero safe integer
99
+ * @param b - The second non-zero safe integer
100
+ * @returns The product of `a` and `b` as a `NonZeroSafeInt`
105
101
  */
106
102
  mul
107
103
  };
@@ -1 +1 @@
1
- {"version":3,"file":"non-zero-safe-int.mjs","sources":["../../../src/number/branded-types/non-zero-safe-int.mts"],"sourcesContent":["import {\n type SafeInt,\n type SafeUint,\n type NonZeroSafeInt as TtfImported_NonZeroSafeInt,\n} from 'ts-type-forge';\nimport { expectType } from '../../expect-type.mjs';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type NonZeroSafeInt = TtfImported_NonZeroSafeInt;\n\ntype ElementType = NonZeroSafeInt;\n\nconst typeNameInMessage = 'a non-zero safe integer';\n\nconst {\n MAX_VALUE,\n MIN_VALUE,\n abs,\n castType,\n clamp,\n is,\n max: max_,\n min: min_,\n mul,\n pow,\n randomNonZero: random,\n} = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<\n ElementType,\n SafeInt,\n SafeUint\n>({\n integerOrSafeInteger: 'SafeInteger',\n nonZero: true,\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion, math/prefer-number-min-safe-integer\n MIN_VALUE: Number.MIN_SAFE_INTEGER as SafeInt,\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion, math/prefer-number-max-safe-integer\n MAX_VALUE: Number.MAX_SAFE_INTEGER as SafeUint,\n typeNameInMessage,\n} as const);\n\n/**\n * Checks if a number is a NonZeroSafeInt (a non-zero safe integer in the range\n * [MIN_SAFE_INTEGER, MAX_SAFE_INTEGER] excluding 0).\n *\n * @param value The value to check.\n * @returns `true` if the value is a NonZeroSafeInt, `false` otherwise.\n */\nexport const isNonZeroSafeInt = is;\n\n/**\n * Casts a number to a NonZeroSafeInt type.\n *\n * @param value The value to cast.\n * @returns The value as a NonZeroSafeInt type.\n * @throws {TypeError} If the value is not a non-zero safe integer.\n */\nexport const asNonZeroSafeInt = castType;\n\n/**\n * Namespace providing type-safe arithmetic operations for non-zero safe\n * integers.\n *\n * All operations automatically clamp results to the non-zero safe integer\n * range, excluding zero. This ensures that all arithmetic maintains both the\n * non-zero constraint and IEEE 754 precision guarantees, preventing precision\n * loss while ensuring results are never zero.\n */\nexport const NonZeroSafeInt = {\n /**\n * Type guard to check if a value is a NonZeroSafeInt.\n *\n * @param value The value to check.\n * @returns `true` if the value is a non-zero safe integer, `false` otherwise.\n */\n is,\n\n /**\n * The minimum safe integer value (-(2^53 - 1)).\n *\n * @readonly\n */\n MIN_VALUE,\n\n /**\n * The maximum safe integer value (2^53 - 1).\n *\n * @readonly\n */\n MAX_VALUE,\n\n /**\n * Returns the absolute value of a non-zero safe integer.\n *\n * @param a The NonZeroSafeInt value.\n * @returns The absolute value as a NonZeroSafeInt, clamped to safe range.\n */\n abs,\n\n /**\n * Returns the smaller of two NonZeroSafeInt values.\n *\n * @param a The first NonZeroSafeInt.\n * @param b The second NonZeroSafeInt.\n * @returns The minimum value as a NonZeroSafeInt.\n */\n min: min_,\n\n /**\n * Returns the larger of two NonZeroSafeInt values.\n *\n * @param a The first NonZeroSafeInt.\n * @param b The second NonZeroSafeInt.\n * @returns The maximum value as a NonZeroSafeInt.\n */\n max: max_,\n\n /**\n * Clamps a number to the non-zero safe integer range.\n *\n * @param value The number to clamp.\n * @returns The value clamped to [MIN_SAFE_INTEGER, MAX_SAFE_INTEGER] \\ {0} as\n * a NonZeroSafeInt.\n */\n clamp,\n\n /**\n * Generates a random NonZeroSafeInt value within the valid range.\n *\n * @returns A random non-zero safe integer between MIN_SAFE_INTEGER and\n * MAX_SAFE_INTEGER.\n */\n random,\n\n /**\n * Raises a NonZeroSafeInt to the power of another NonZeroSafeInt.\n *\n * @param a The base NonZeroSafeInt.\n * @param b The exponent NonZeroSafeInt.\n * @returns `a ** b` clamped to non-zero safe integer range as a\n * NonZeroSafeInt.\n */\n pow,\n\n /**\n * Multiplies two NonZeroSafeInt values.\n *\n * The product of two non-zero safe integers is always non-zero, so this stays\n * closed; for the non-closed operations (`add`/`sub`/`div`, whose result may\n * be `0`) use {@link Num.add}/{@link Num.sub}/{@link Num.divInt}.\n *\n * @param a The first NonZeroSafeInt.\n * @param b The second NonZeroSafeInt.\n * @returns `a * b` clamped to non-zero safe integer range as a\n * NonZeroSafeInt.\n */\n mul,\n} as const;\n\nexpectType<\n keyof typeof NonZeroSafeInt,\n keyof TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'range',\n 'mul'\n >\n>('=');\n\nexpectType<\n typeof NonZeroSafeInt,\n TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'range',\n 'mul'\n >\n>('<=');\n"],"names":[],"mappings":";;AAYA,MAAM,iBAAA,GAAoB,yBAAA;AAE1B,MAAM;AAAA,EACJ,SAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,EAAA;AAAA,EACA,GAAA,EAAK,IAAA;AAAA,EACL,GAAA,EAAK,IAAA;AAAA,EACL,GAAA;AAAA,EACA,GAAA;AAAA,EACA,aAAA,EAAe;AACjB,CAAA,GAAI,oBAAA,CAAqB,mBAAmB,mBAAA,CAI1C;AAAA,EACA,oBAAA,EAAsB,aAAA;AAAA,EACtB,OAAA,EAAS,IAAA;AAAA;AAAA,EAET,WAAW,MAAA,CAAO,gBAAA;AAAA;AAAA,EAElB,WAAW,MAAA,CAAO,gBAAA;AAAA,EAClB;AACF,CAAU,CAAA;AASH,MAAM,gBAAA,GAAmB;AASzB,MAAM,gBAAA,GAAmB;AAWzB,MAAM,cAAA,GAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAO5B,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASL,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASL,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA;AACF;;;;"}
1
+ {"version":3,"file":"non-zero-safe-int.mjs","sources":["../../../src/number/branded-types/non-zero-safe-int.mts"],"sourcesContent":["import {\n type SafeInt,\n type SafeUint,\n type NonZeroSafeInt as TtfImported_NonZeroSafeInt,\n} from 'ts-type-forge';\nimport { expectType } from '../../expect-type.mjs';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type NonZeroSafeInt = TtfImported_NonZeroSafeInt;\n\ntype ElementType = NonZeroSafeInt;\n\nconst typeNameInMessage = 'a non-zero safe integer';\n\nconst {\n MAX_VALUE,\n MIN_VALUE,\n abs,\n castType,\n clamp,\n is,\n max: max_,\n min: min_,\n mul,\n pow,\n randomNonZero: random,\n} = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<\n ElementType,\n SafeInt,\n SafeUint\n>({\n integerOrSafeInteger: 'SafeInteger',\n nonZero: true,\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion, math/prefer-number-min-safe-integer\n MIN_VALUE: Number.MIN_SAFE_INTEGER as SafeInt,\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion, math/prefer-number-max-safe-integer\n MAX_VALUE: Number.MAX_SAFE_INTEGER as SafeUint,\n typeNameInMessage,\n} as const);\n\n/**\n * Type guard that checks if a value is a non-zero safe integer.\n *\n * Returns `true` for a non-zero safe integer — a value with no fractional\n * component.\n *\n * @param value - The value to check\n * @returns `true` if the value is a non-zero safe integer, `false` otherwise\n */\nexport const isNonZeroSafeInt = is;\n\n/**\n * Casts a `number` to the `NonZeroSafeInt` branded type.\n *\n * Validates that the value is a non-zero safe integer and returns it with the\n * `NonZeroSafeInt` brand. Throws a `TypeError` otherwise.\n *\n * @param value - The value to cast\n * @returns The value as a `NonZeroSafeInt`\n * @throws {TypeError} If the value is not a non-zero safe integer\n */\nexport const asNonZeroSafeInt = castType;\n\n/**\n * Namespace providing type-safe operations for the `NonZeroSafeInt` branded\n * type.\n *\n * The `NonZeroSafeInt` type represents a non-zero safe integer. Division\n * (`div`) uses floor division.\n */\nexport const NonZeroSafeInt = {\n /**\n * Type guard that checks if a value is a non-zero safe integer.\n *\n * @param value - The value to check\n * @returns `true` if the value is a non-zero safe integer, `false` otherwise\n * @see {@link isNonZeroSafeInt} for usage examples\n */\n is,\n\n /**\n * The smallest value representable as `NonZeroSafeInt`.\n */\n MIN_VALUE,\n\n /**\n * The largest value representable as `NonZeroSafeInt`.\n */\n MAX_VALUE,\n\n /**\n * Returns the absolute value of a non-zero safe integer.\n *\n * The result is non-negative and keeps the `NonZeroSafeInt` brand.\n *\n * @param a - The non-zero safe integer value\n * @returns The absolute value as a non-negative `NonZeroSafeInt`\n */\n abs,\n\n /**\n * Returns the smallest of the given non-zero safe integers.\n *\n * @param values - The non-zero safe integers to compare (at least one required)\n * @returns The smallest value as a `NonZeroSafeInt`\n */\n min: min_,\n\n /**\n * Returns the largest of the given non-zero safe integers.\n *\n * @param values - The non-zero safe integers to compare (at least one required)\n * @returns The largest value as a `NonZeroSafeInt`\n */\n max: max_,\n\n /**\n * Clamps a `number` into the `NonZeroSafeInt` range, rounding to the nearest\n * integer and constraining the result to `[MIN_VALUE, MAX_VALUE]`.\n *\n * @param value - The value to clamp\n * @returns The clamped value as a `NonZeroSafeInt`\n */\n clamp,\n\n /**\n * Generates a random `NonZeroSafeInt` within the given range.\n *\n * The range is inclusive on both ends.\n *\n * @param min - The minimum value (inclusive)\n * @param max - The maximum value (inclusive)\n * @returns A random `NonZeroSafeInt` in `[min, max]`\n */\n random,\n\n /**\n * Raises `a` to the power `b`, returning `a ** b` as a `NonZeroSafeInt`\n * (floored to an integer).\n *\n * @param a - The base non-zero safe integer\n * @param b - The exponent non-zero safe integer\n * @returns `a ** b` as a `NonZeroSafeInt`\n */\n pow,\n\n /**\n * Multiplies two non-zero safe integers, returning `a * b` as a\n * `NonZeroSafeInt`.\n *\n * @param a - The first non-zero safe integer\n * @param b - The second non-zero safe integer\n * @returns The product of `a` and `b` as a `NonZeroSafeInt`\n */\n mul,\n} as const;\n\nexpectType<\n keyof typeof NonZeroSafeInt,\n keyof TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'range',\n 'mul'\n >\n>('=');\n\nexpectType<\n typeof NonZeroSafeInt,\n TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'range',\n 'mul'\n >\n>('<=');\n"],"names":[],"mappings":";;AAYA,MAAM,iBAAA,GAAoB,yBAAA;AAE1B,MAAM;AAAA,EACJ,SAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,EAAA;AAAA,EACA,GAAA,EAAK,IAAA;AAAA,EACL,GAAA,EAAK,IAAA;AAAA,EACL,GAAA;AAAA,EACA,GAAA;AAAA,EACA,aAAA,EAAe;AACjB,CAAA,GAAI,oBAAA,CAAqB,mBAAmB,mBAAA,CAI1C;AAAA,EACA,oBAAA,EAAsB,aAAA;AAAA,EACtB,OAAA,EAAS,IAAA;AAAA;AAAA,EAET,WAAW,MAAA,CAAO,gBAAA;AAAA;AAAA,EAElB,WAAW,MAAA,CAAO,gBAAA;AAAA,EAClB;AACF,CAAU,CAAA;AAWH,MAAM,gBAAA,GAAmB;AAYzB,MAAM,gBAAA,GAAmB;AASzB,MAAM,cAAA,GAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQ5B,EAAA;AAAA;AAAA;AAAA;AAAA,EAKA,SAAA;AAAA;AAAA;AAAA;AAAA,EAKA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQL,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASL,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA;AACF;;;;"}