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
@@ -3,18 +3,24 @@ import { TsDataForgeInternals } from '../refined-number-utils.mjs';
3
3
  export type NonZeroFiniteNumber = TtfImported_NonZeroFiniteNumber;
4
4
  type ElementType = NonZeroFiniteNumber;
5
5
  /**
6
- * Checks if a number is a NonZeroFiniteNumber (a finite number that is not 0).
6
+ * Type guard that checks if a value is a non-zero finite number.
7
7
  *
8
- * @param value The value to check.
9
- * @returns `true` if the value is a NonZeroFiniteNumber, `false` otherwise.
8
+ * Returns `true` only for a finite value — never `NaN`, `Infinity`, or
9
+ * `-Infinity`.
10
+ *
11
+ * @param value - The value to check
12
+ * @returns `true` if the value is a non-zero finite number, `false` otherwise
10
13
  */
11
14
  export declare const isNonZeroFiniteNumber: (a: number) => a is TtfImported_NonZeroFiniteNumber;
12
15
  /**
13
- * Casts a number to a NonZeroFiniteNumber type.
16
+ * Casts a `number` to the `NonZeroFiniteNumber` branded type.
17
+ *
18
+ * Validates that the value is a non-zero finite number and returns it with the
19
+ * `NonZeroFiniteNumber` brand. Throws a `TypeError` otherwise.
14
20
  *
15
- * @param value The value to cast.
16
- * @returns The value as a NonZeroFiniteNumber type.
17
- * @throws {TypeError} If the value is not a non-zero finite number.
21
+ * @param value - The value to cast
22
+ * @returns The value as a `NonZeroFiniteNumber`
23
+ * @throws {TypeError} If the value is not a non-zero finite number
18
24
  */
19
25
  export declare const asNonZeroFiniteNumber: <N extends number>(x: N) => number & {
20
26
  readonly "!=0": true;
@@ -24,98 +30,105 @@ export declare const asNonZeroFiniteNumber: <N extends number>(x: N) => number &
24
30
  'TSTypeForgeInternals--edd2f9ce-7ca5-45b0-9d1a-bd61b9b5d9c3': unknown;
25
31
  }> & N;
26
32
  /**
27
- * Namespace providing type-safe arithmetic operations for non-zero finite
28
- * numbers.
33
+ * Namespace providing type-safe operations for the `NonZeroFiniteNumber`
34
+ * branded type.
29
35
  *
30
- * All operations maintain the non-zero constraint while ensuring results remain
31
- * finite (excluding NaN and Infinity). This type is useful for values that must
32
- * never be zero, such as denominators, scaling factors, and ratios.
36
+ * The `NonZeroFiniteNumber` type represents a non-zero finite number.
33
37
  */
34
38
  export declare const NonZeroFiniteNumber: {
35
39
  /**
36
- * Type guard to check if a value is a NonZeroFiniteNumber.
40
+ * Type guard that checks if a value is a non-zero finite number.
37
41
  *
38
- * @param value The value to check.
39
- * @returns `true` if the value is a non-zero finite number, `false`
40
- * otherwise.
42
+ * @param value - The value to check
43
+ * @returns `true` if the value is a non-zero finite number, `false` otherwise
44
+ * @see {@link isNonZeroFiniteNumber} for usage examples
41
45
  */
42
46
  readonly is: (a: number) => a is TtfImported_NonZeroFiniteNumber;
43
47
  /**
44
48
  * Returns the absolute value of a non-zero finite number.
45
49
  *
46
- * @param a The NonZeroFiniteNumber.
47
- * @returns The absolute value as a NonZeroFiniteNumber.
50
+ * The result is non-negative and keeps the `NonZeroFiniteNumber` brand.
51
+ *
52
+ * @param a - The non-zero finite number value
53
+ * @returns The absolute value as a non-negative `NonZeroFiniteNumber`
48
54
  */
49
55
  readonly abs: (x: TtfImported_NonZeroFiniteNumber) => import("ts-type-forge").IntersectBrand<TtfImported_NonZeroFiniteNumber, import("ts-type-forge").PositiveNumber>;
50
56
  /**
51
- * Returns the smaller of two NonZeroFiniteNumber values.
57
+ * Returns the smallest of the given non-zero finite numbers.
52
58
  *
53
- * @param a The first NonZeroFiniteNumber.
54
- * @param b The second NonZeroFiniteNumber.
55
- * @returns The minimum value as a NonZeroFiniteNumber.
59
+ * @param values - The non-zero finite numbers to compare (at least one required)
60
+ * @returns The smallest value as a `NonZeroFiniteNumber`
56
61
  */
57
62
  readonly min: (...values: readonly TtfImported_NonZeroFiniteNumber[]) => TtfImported_NonZeroFiniteNumber;
58
63
  /**
59
- * Returns the larger of two NonZeroFiniteNumber values.
64
+ * Returns the largest of the given non-zero finite numbers.
60
65
  *
61
- * @param a The first NonZeroFiniteNumber.
62
- * @param b The second NonZeroFiniteNumber.
63
- * @returns The maximum value as a NonZeroFiniteNumber.
66
+ * @param values - The non-zero finite numbers to compare (at least one required)
67
+ * @returns The largest value as a `NonZeroFiniteNumber`
64
68
  */
65
69
  readonly max: (...values: readonly TtfImported_NonZeroFiniteNumber[]) => TtfImported_NonZeroFiniteNumber;
66
70
  /**
67
- * Rounds down a NonZeroFiniteNumber to the nearest integer.
71
+ * Returns the greatest integer less than or equal to a non-zero finite
72
+ * number.
68
73
  *
69
- * @param x The NonZeroFiniteNumber to round down.
70
- * @returns The floor value as a NonZeroInt.
74
+ * @param a - The non-zero finite number value
75
+ * @returns The floored value as an integer
71
76
  */
72
77
  readonly floor: (x: ElementType) => TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>;
73
78
  /**
74
- * Rounds up a NonZeroFiniteNumber to the nearest integer.
79
+ * Returns the smallest integer greater than or equal to a non-zero finite
80
+ * number.
75
81
  *
76
- * @param x The NonZeroFiniteNumber to round up.
77
- * @returns The ceiling value as a NonZeroInt.
82
+ * @param a - The non-zero finite number value
83
+ * @returns The ceiled value as an integer
78
84
  */
79
85
  readonly ceil: (x: ElementType) => TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>;
80
86
  /**
81
- * Rounds a NonZeroFiniteNumber to the nearest integer.
87
+ * Returns the value of a non-zero finite number rounded to the nearest
88
+ * integer.
82
89
  *
83
- * @param x The NonZeroFiniteNumber to round.
84
- * @returns The rounded value as a NonZeroInt.
90
+ * @param a - The non-zero finite number value
91
+ * @returns The rounded value as an integer
85
92
  */
86
93
  readonly round: (x: ElementType) => TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>;
87
94
  /**
88
- * Generates a random NonZeroFiniteNumber value.
95
+ * Generates a random `NonZeroFiniteNumber` within the given range.
96
+ *
97
+ * The range is inclusive on both ends.
89
98
  *
90
- * @returns A random non-zero finite number.
99
+ * @param min - The minimum value (inclusive)
100
+ * @param max - The maximum value (inclusive)
101
+ * @returns A random `NonZeroFiniteNumber` in `[min, max]`
91
102
  */
92
103
  readonly random: (min?: TtfImported_NonZeroFiniteNumber | undefined, max?: TtfImported_NonZeroFiniteNumber | undefined) => TtfImported_NonZeroFiniteNumber;
93
104
  /**
94
- * Raises a NonZeroFiniteNumber to the power of another NonZeroFiniteNumber.
105
+ * Raises `a` to the power `b`, returning `a ** b` as a `NonZeroFiniteNumber`.
95
106
  *
96
- * @param a The base NonZeroFiniteNumber.
97
- * @param b The exponent NonZeroFiniteNumber.
98
- * @returns `a ** b` as a NonZeroFiniteNumber.
107
+ * @param a - The base non-zero finite number
108
+ * @param b - The exponent non-zero finite number
109
+ * @returns `a ** b` as a `NonZeroFiniteNumber`
99
110
  */
100
111
  readonly pow: (x: TtfImported_NonZeroFiniteNumber, y: TtfImported_NonZeroFiniteNumber) => TtfImported_NonZeroFiniteNumber;
101
112
  /**
102
- * Multiplies two NonZeroFiniteNumber values.
113
+ * Multiplies two non-zero finite numbers, returning `a * b` as a
114
+ * `NonZeroFiniteNumber`.
103
115
  *
104
- * @param a The first NonZeroFiniteNumber.
105
- * @param b The second NonZeroFiniteNumber.
106
- * @returns `a * b` as a NonZeroFiniteNumber.
116
+ * @param a - The first non-zero finite number
117
+ * @param b - The second non-zero finite number
118
+ * @returns The product of `a` and `b` as a `NonZeroFiniteNumber`
107
119
  */
108
120
  readonly mul: (x: TtfImported_NonZeroFiniteNumber, y: TtfImported_NonZeroFiniteNumber) => TtfImported_NonZeroFiniteNumber;
109
121
  /**
110
- * Divides one NonZeroFiniteNumber by another.
122
+ * Divides two non-zero finite numbers, returning `a / b` as a
123
+ * `NonZeroFiniteNumber`.
111
124
  *
112
125
  * Exact (non-flooring) division of two non-zero finite numbers is always
113
126
  * non-zero, so this stays closed. For the non-closed operations (`add`/`sub`,
114
127
  * whose result may be `0`) use {@link Num.add}/{@link Num.sub}.
115
128
  *
116
- * @param a The dividend NonZeroFiniteNumber.
117
- * @param b The divisor NonZeroFiniteNumber.
118
- * @returns `a / b` as a NonZeroFiniteNumber.
129
+ * @param a - The dividend
130
+ * @param b - The divisor (must be non-zero)
131
+ * @returns `a / b` as a `NonZeroFiniteNumber`
119
132
  */
120
133
  readonly div: (x: TtfImported_NonZeroFiniteNumber, y: number & {
121
134
  readonly "!=0": true;
@@ -1 +1 @@
1
- {"version":3,"file":"non-zero-finite-number.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/non-zero-finite-number.mts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,mBAAmB,IAAI,+BAA+B,EAC5D,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,MAAM,MAAM,mBAAmB,GAAG,+BAA+B,CAAC;AAElE,KAAK,WAAW,GAAG,mBAAmB,CAAC;AAyDvC;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,qDAAK,CAAC;AAExC;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB;;;;;;MAAW,CAAC;AAE9C;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB;IAC9B;;;;;;OAMG;;IAGH;;;;;OAKG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;OAKG;wBA/FA,WAAW,KACb,oBAAoB,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC;IAiG3D;;;;;OAKG;uBAjGA,WAAW,KACb,oBAAoB,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC;IAmG3D;;;;;OAKG;wBAnGA,WAAW,KACb,oBAAoB,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC;IAqG3D;;;;OAIG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;;;;;;OAUG;;;;;;;;CAEK,CAAC"}
1
+ {"version":3,"file":"non-zero-finite-number.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/non-zero-finite-number.mts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,mBAAmB,IAAI,+BAA+B,EAC5D,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,MAAM,MAAM,mBAAmB,GAAG,+BAA+B,CAAC;AAElE,KAAK,WAAW,GAAG,mBAAmB,CAAC;AAuDvC;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB,qDAAK,CAAC;AAExC;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB;;;;;;MAAW,CAAC;AAE9C;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB;IAC9B;;;;;;OAMG;;IAGH;;;;;;;OAOG;;IAGH;;;;;OAKG;;IAGH;;;;;OAKG;;IAGH;;;;;;OAMG;wBApGA,WAAW,KACb,oBAAoB,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC;IAsG3D;;;;;;OAMG;uBAvGA,WAAW,KACb,oBAAoB,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC;IAyG3D;;;;;;OAMG;wBA1GA,WAAW,KACb,oBAAoB,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC;IA4G3D;;;;;;;;OAQG;;IAGH;;;;;;OAMG;;IAGH;;;;;;;OAOG;;IAGH;;;;;;;;;;;OAWG;;;;;;;;CAEK,CAAC"}
@@ -33,89 +33,98 @@ const isNonZeroFiniteNumber = is;
33
33
  const asNonZeroFiniteNumber = castType;
34
34
  const NonZeroFiniteNumber = {
35
35
  /**
36
- * Type guard to check if a value is a NonZeroFiniteNumber.
36
+ * Type guard that checks if a value is a non-zero finite number.
37
37
  *
38
- * @param value The value to check.
39
- * @returns `true` if the value is a non-zero finite number, `false`
40
- * otherwise.
38
+ * @param value - The value to check
39
+ * @returns `true` if the value is a non-zero finite number, `false` otherwise
40
+ * @see {@link isNonZeroFiniteNumber} for usage examples
41
41
  */
42
42
  is,
43
43
  /**
44
44
  * Returns the absolute value of a non-zero finite number.
45
45
  *
46
- * @param a The NonZeroFiniteNumber.
47
- * @returns The absolute value as a NonZeroFiniteNumber.
46
+ * The result is non-negative and keeps the `NonZeroFiniteNumber` brand.
47
+ *
48
+ * @param a - The non-zero finite number value
49
+ * @returns The absolute value as a non-negative `NonZeroFiniteNumber`
48
50
  */
49
51
  abs,
50
52
  /**
51
- * Returns the smaller of two NonZeroFiniteNumber values.
53
+ * Returns the smallest of the given non-zero finite numbers.
52
54
  *
53
- * @param a The first NonZeroFiniteNumber.
54
- * @param b The second NonZeroFiniteNumber.
55
- * @returns The minimum value as a NonZeroFiniteNumber.
55
+ * @param values - The non-zero finite numbers to compare (at least one required)
56
+ * @returns The smallest value as a `NonZeroFiniteNumber`
56
57
  */
57
58
  min: min_,
58
59
  /**
59
- * Returns the larger of two NonZeroFiniteNumber values.
60
+ * Returns the largest of the given non-zero finite numbers.
60
61
  *
61
- * @param a The first NonZeroFiniteNumber.
62
- * @param b The second NonZeroFiniteNumber.
63
- * @returns The maximum value as a NonZeroFiniteNumber.
62
+ * @param values - The non-zero finite numbers to compare (at least one required)
63
+ * @returns The largest value as a `NonZeroFiniteNumber`
64
64
  */
65
65
  max: max_,
66
66
  /**
67
- * Rounds down a NonZeroFiniteNumber to the nearest integer.
67
+ * Returns the greatest integer less than or equal to a non-zero finite
68
+ * number.
68
69
  *
69
- * @param x The NonZeroFiniteNumber to round down.
70
- * @returns The floor value as a NonZeroInt.
70
+ * @param a - The non-zero finite number value
71
+ * @returns The floored value as an integer
71
72
  */
72
73
  floor,
73
74
  /**
74
- * Rounds up a NonZeroFiniteNumber to the nearest integer.
75
+ * Returns the smallest integer greater than or equal to a non-zero finite
76
+ * number.
75
77
  *
76
- * @param x The NonZeroFiniteNumber to round up.
77
- * @returns The ceiling value as a NonZeroInt.
78
+ * @param a - The non-zero finite number value
79
+ * @returns The ceiled value as an integer
78
80
  */
79
81
  ceil,
80
82
  /**
81
- * Rounds a NonZeroFiniteNumber to the nearest integer.
83
+ * Returns the value of a non-zero finite number rounded to the nearest
84
+ * integer.
82
85
  *
83
- * @param x The NonZeroFiniteNumber to round.
84
- * @returns The rounded value as a NonZeroInt.
86
+ * @param a - The non-zero finite number value
87
+ * @returns The rounded value as an integer
85
88
  */
86
89
  round,
87
90
  /**
88
- * Generates a random NonZeroFiniteNumber value.
91
+ * Generates a random `NonZeroFiniteNumber` within the given range.
92
+ *
93
+ * The range is inclusive on both ends.
89
94
  *
90
- * @returns A random non-zero finite number.
95
+ * @param min - The minimum value (inclusive)
96
+ * @param max - The maximum value (inclusive)
97
+ * @returns A random `NonZeroFiniteNumber` in `[min, max]`
91
98
  */
92
99
  random,
93
100
  /**
94
- * Raises a NonZeroFiniteNumber to the power of another NonZeroFiniteNumber.
101
+ * Raises `a` to the power `b`, returning `a ** b` as a `NonZeroFiniteNumber`.
95
102
  *
96
- * @param a The base NonZeroFiniteNumber.
97
- * @param b The exponent NonZeroFiniteNumber.
98
- * @returns `a ** b` as a NonZeroFiniteNumber.
103
+ * @param a - The base non-zero finite number
104
+ * @param b - The exponent non-zero finite number
105
+ * @returns `a ** b` as a `NonZeroFiniteNumber`
99
106
  */
100
107
  pow,
101
108
  /**
102
- * Multiplies two NonZeroFiniteNumber values.
109
+ * Multiplies two non-zero finite numbers, returning `a * b` as a
110
+ * `NonZeroFiniteNumber`.
103
111
  *
104
- * @param a The first NonZeroFiniteNumber.
105
- * @param b The second NonZeroFiniteNumber.
106
- * @returns `a * b` as a NonZeroFiniteNumber.
112
+ * @param a - The first non-zero finite number
113
+ * @param b - The second non-zero finite number
114
+ * @returns The product of `a` and `b` as a `NonZeroFiniteNumber`
107
115
  */
108
116
  mul,
109
117
  /**
110
- * Divides one NonZeroFiniteNumber by another.
118
+ * Divides two non-zero finite numbers, returning `a / b` as a
119
+ * `NonZeroFiniteNumber`.
111
120
  *
112
121
  * Exact (non-flooring) division of two non-zero finite numbers is always
113
122
  * non-zero, so this stays closed. For the non-closed operations (`add`/`sub`,
114
123
  * whose result may be `0`) use {@link Num.add}/{@link Num.sub}.
115
124
  *
116
- * @param a The dividend NonZeroFiniteNumber.
117
- * @param b The divisor NonZeroFiniteNumber.
118
- * @returns `a / b` as a NonZeroFiniteNumber.
125
+ * @param a - The dividend
126
+ * @param b - The divisor (must be non-zero)
127
+ * @returns `a / b` as a `NonZeroFiniteNumber`
119
128
  */
120
129
  div
121
130
  };
@@ -1 +1 @@
1
- {"version":3,"file":"non-zero-finite-number.mjs","sources":["../../../src/number/branded-types/non-zero-finite-number.mts"],"sourcesContent":["import {\n type Int,\n type NonZeroInt,\n type PositiveFiniteNumber,\n type NonZeroFiniteNumber as TtfImported_NonZeroFiniteNumber,\n} from 'ts-type-forge';\nimport { expectType } from '../../expect-type.mjs';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type NonZeroFiniteNumber = TtfImported_NonZeroFiniteNumber;\n\ntype ElementType = NonZeroFiniteNumber;\n\nconst typeNameInMessage = 'a non-zero finite number';\n\nconst {\n abs,\n castType,\n div,\n is,\n max: max_,\n min: min_,\n mul,\n pow,\n randomNonZero: random,\n} = TsDataForgeInternals.RefinedNumberUtils.operatorsForFloat<\n ElementType,\n number,\n number\n>({\n nonZero: true,\n MIN_VALUE: -Number.MAX_VALUE,\n MAX_VALUE: Number.MAX_VALUE,\n typeNameInMessage,\n} as const);\n\n// Not provided because reasonable rounding operations that avoid becoming 0 cannot be defined\n\nconst floor = (\n x: ElementType,\n): TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType> =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n Math.floor(x) as TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>;\n\nconst ceil = (\n x: ElementType,\n): TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType> =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n Math.ceil(x) as TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>;\n\nconst round = (\n x: ElementType,\n): TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType> =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n Math.round(x) as TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>;\n\nexpectType<\n TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>,\n NonZeroInt\n>('=');\n\nexpectType<\n TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<\n TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>\n >,\n Int\n>('=');\n\n/**\n * Checks if a number is a NonZeroFiniteNumber (a finite number that is not 0).\n *\n * @param value The value to check.\n * @returns `true` if the value is a NonZeroFiniteNumber, `false` otherwise.\n */\nexport const isNonZeroFiniteNumber = is;\n\n/**\n * Casts a number to a NonZeroFiniteNumber type.\n *\n * @param value The value to cast.\n * @returns The value as a NonZeroFiniteNumber type.\n * @throws {TypeError} If the value is not a non-zero finite number.\n */\nexport const asNonZeroFiniteNumber = castType;\n\n/**\n * Namespace providing type-safe arithmetic operations for non-zero finite\n * numbers.\n *\n * All operations maintain the non-zero constraint while ensuring results remain\n * finite (excluding NaN and Infinity). This type is useful for values that must\n * never be zero, such as denominators, scaling factors, and ratios.\n */\nexport const NonZeroFiniteNumber = {\n /**\n * Type guard to check if a value is a NonZeroFiniteNumber.\n *\n * @param value The value to check.\n * @returns `true` if the value is a non-zero finite number, `false`\n * otherwise.\n */\n is,\n\n /**\n * Returns the absolute value of a non-zero finite number.\n *\n * @param a The NonZeroFiniteNumber.\n * @returns The absolute value as a NonZeroFiniteNumber.\n */\n abs,\n\n /**\n * Returns the smaller of two NonZeroFiniteNumber values.\n *\n * @param a The first NonZeroFiniteNumber.\n * @param b The second NonZeroFiniteNumber.\n * @returns The minimum value as a NonZeroFiniteNumber.\n */\n min: min_,\n\n /**\n * Returns the larger of two NonZeroFiniteNumber values.\n *\n * @param a The first NonZeroFiniteNumber.\n * @param b The second NonZeroFiniteNumber.\n * @returns The maximum value as a NonZeroFiniteNumber.\n */\n max: max_,\n\n /**\n * Rounds down a NonZeroFiniteNumber to the nearest integer.\n *\n * @param x The NonZeroFiniteNumber to round down.\n * @returns The floor value as a NonZeroInt.\n */\n floor,\n\n /**\n * Rounds up a NonZeroFiniteNumber to the nearest integer.\n *\n * @param x The NonZeroFiniteNumber to round up.\n * @returns The ceiling value as a NonZeroInt.\n */\n ceil,\n\n /**\n * Rounds a NonZeroFiniteNumber to the nearest integer.\n *\n * @param x The NonZeroFiniteNumber to round.\n * @returns The rounded value as a NonZeroInt.\n */\n round,\n\n /**\n * Generates a random NonZeroFiniteNumber value.\n *\n * @returns A random non-zero finite number.\n */\n random,\n\n /**\n * Raises a NonZeroFiniteNumber to the power of another NonZeroFiniteNumber.\n *\n * @param a The base NonZeroFiniteNumber.\n * @param b The exponent NonZeroFiniteNumber.\n * @returns `a ** b` as a NonZeroFiniteNumber.\n */\n pow,\n\n /**\n * Multiplies two NonZeroFiniteNumber values.\n *\n * @param a The first NonZeroFiniteNumber.\n * @param b The second NonZeroFiniteNumber.\n * @returns `a * b` as a NonZeroFiniteNumber.\n */\n mul,\n\n /**\n * Divides one NonZeroFiniteNumber by another.\n *\n * Exact (non-flooring) division of two non-zero finite numbers is always\n * non-zero, so this stays closed. For the non-closed operations (`add`/`sub`,\n * whose result may be `0`) use {@link Num.add}/{@link Num.sub}.\n *\n * @param a The dividend NonZeroFiniteNumber.\n * @param b The divisor NonZeroFiniteNumber.\n * @returns `a / b` as a NonZeroFiniteNumber.\n */\n div,\n} as const;\n\nexpectType<\n TsDataForgeInternals.RefinedNumberUtils.ToNonNegative<ElementType>,\n PositiveFiniteNumber\n>('=');\n\nexpectType<\n keyof typeof NonZeroFiniteNumber,\n keyof TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n never,\n 'div' | 'mul'\n >\n>('=');\n\nexpectType<\n typeof NonZeroFiniteNumber,\n TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n never,\n 'div' | 'mul'\n >\n>('<=');\n"],"names":[],"mappings":";;AAaA,MAAM,iBAAA,GAAoB,0BAAA;AAE1B,MAAM;AAAA,EACJ,GAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;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,iBAAA,CAI1C;AAAA,EACA,OAAA,EAAS,IAAA;AAAA,EACT,SAAA,EAAW,CAAC,MAAA,CAAO,SAAA;AAAA,EACnB,WAAW,MAAA,CAAO,SAAA;AAAA,EAClB;AACF,CAAU,CAAA;AAIV,MAAM,QAAQ,CACZ,CAAA;AAAA;AAAA,EAGA,IAAA,CAAK,MAAM,CAAC;AAAA,CAAA;AAEd,MAAM,OAAO,CACX,CAAA;AAAA;AAAA,EAGA,IAAA,CAAK,KAAK,CAAC;AAAA,CAAA;AAEb,MAAM,QAAQ,CACZ,CAAA;AAAA;AAAA,EAGA,IAAA,CAAK,MAAM,CAAC;AAAA,CAAA;AAoBP,MAAM,qBAAA,GAAwB;AAS9B,MAAM,qBAAA,GAAwB;AAU9B,MAAM,mBAAA,GAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQjC,EAAA;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,EAQL,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,GAAA;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-finite-number.mjs","sources":["../../../src/number/branded-types/non-zero-finite-number.mts"],"sourcesContent":["import {\n type Int,\n type NonZeroInt,\n type PositiveFiniteNumber,\n type NonZeroFiniteNumber as TtfImported_NonZeroFiniteNumber,\n} from 'ts-type-forge';\nimport { expectType } from '../../expect-type.mjs';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type NonZeroFiniteNumber = TtfImported_NonZeroFiniteNumber;\n\ntype ElementType = NonZeroFiniteNumber;\n\nconst typeNameInMessage = 'a non-zero finite number';\n\nconst {\n abs,\n castType,\n div,\n is,\n max: max_,\n min: min_,\n mul,\n pow,\n randomNonZero: random,\n} = TsDataForgeInternals.RefinedNumberUtils.operatorsForFloat<\n ElementType,\n number,\n number\n>({\n nonZero: true,\n MIN_VALUE: -Number.MAX_VALUE,\n MAX_VALUE: Number.MAX_VALUE,\n typeNameInMessage,\n} as const);\n\nconst floor = (\n x: ElementType,\n): TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType> =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n Math.floor(x) as TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>;\n\nconst ceil = (\n x: ElementType,\n): TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType> =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n Math.ceil(x) as TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>;\n\nconst round = (\n x: ElementType,\n): TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType> =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n Math.round(x) as TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>;\n\nexpectType<\n TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>,\n NonZeroInt\n>('=');\n\nexpectType<\n TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<\n TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>\n >,\n Int\n>('=');\n\n/**\n * Type guard that checks if a value is a non-zero finite number.\n *\n * Returns `true` only for a finite value — never `NaN`, `Infinity`, or\n * `-Infinity`.\n *\n * @param value - The value to check\n * @returns `true` if the value is a non-zero finite number, `false` otherwise\n */\nexport const isNonZeroFiniteNumber = is;\n\n/**\n * Casts a `number` to the `NonZeroFiniteNumber` branded type.\n *\n * Validates that the value is a non-zero finite number and returns it with the\n * `NonZeroFiniteNumber` brand. Throws a `TypeError` otherwise.\n *\n * @param value - The value to cast\n * @returns The value as a `NonZeroFiniteNumber`\n * @throws {TypeError} If the value is not a non-zero finite number\n */\nexport const asNonZeroFiniteNumber = castType;\n\n/**\n * Namespace providing type-safe operations for the `NonZeroFiniteNumber`\n * branded type.\n *\n * The `NonZeroFiniteNumber` type represents a non-zero finite number.\n */\nexport const NonZeroFiniteNumber = {\n /**\n * Type guard that checks if a value is a non-zero finite number.\n *\n * @param value - The value to check\n * @returns `true` if the value is a non-zero finite number, `false` otherwise\n * @see {@link isNonZeroFiniteNumber} for usage examples\n */\n is,\n\n /**\n * Returns the absolute value of a non-zero finite number.\n *\n * The result is non-negative and keeps the `NonZeroFiniteNumber` brand.\n *\n * @param a - The non-zero finite number value\n * @returns The absolute value as a non-negative `NonZeroFiniteNumber`\n */\n abs,\n\n /**\n * Returns the smallest of the given non-zero finite numbers.\n *\n * @param values - The non-zero finite numbers to compare (at least one required)\n * @returns The smallest value as a `NonZeroFiniteNumber`\n */\n min: min_,\n\n /**\n * Returns the largest of the given non-zero finite numbers.\n *\n * @param values - The non-zero finite numbers to compare (at least one required)\n * @returns The largest value as a `NonZeroFiniteNumber`\n */\n max: max_,\n\n /**\n * Returns the greatest integer less than or equal to a non-zero finite\n * number.\n *\n * @param a - The non-zero finite number value\n * @returns The floored value as an integer\n */\n floor,\n\n /**\n * Returns the smallest integer greater than or equal to a non-zero finite\n * number.\n *\n * @param a - The non-zero finite number value\n * @returns The ceiled value as an integer\n */\n ceil,\n\n /**\n * Returns the value of a non-zero finite number rounded to the nearest\n * integer.\n *\n * @param a - The non-zero finite number value\n * @returns The rounded value as an integer\n */\n round,\n\n /**\n * Generates a random `NonZeroFiniteNumber` 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 `NonZeroFiniteNumber` in `[min, max]`\n */\n random,\n\n /**\n * Raises `a` to the power `b`, returning `a ** b` as a `NonZeroFiniteNumber`.\n *\n * @param a - The base non-zero finite number\n * @param b - The exponent non-zero finite number\n * @returns `a ** b` as a `NonZeroFiniteNumber`\n */\n pow,\n\n /**\n * Multiplies two non-zero finite numbers, returning `a * b` as a\n * `NonZeroFiniteNumber`.\n *\n * @param a - The first non-zero finite number\n * @param b - The second non-zero finite number\n * @returns The product of `a` and `b` as a `NonZeroFiniteNumber`\n */\n mul,\n\n /**\n * Divides two non-zero finite numbers, returning `a / b` as a\n * `NonZeroFiniteNumber`.\n *\n * Exact (non-flooring) division of two non-zero finite numbers is always\n * non-zero, so this stays closed. For the non-closed operations (`add`/`sub`,\n * whose result may be `0`) use {@link Num.add}/{@link Num.sub}.\n *\n * @param a - The dividend\n * @param b - The divisor (must be non-zero)\n * @returns `a / b` as a `NonZeroFiniteNumber`\n */\n div,\n} as const;\n\nexpectType<\n TsDataForgeInternals.RefinedNumberUtils.ToNonNegative<ElementType>,\n PositiveFiniteNumber\n>('=');\n\nexpectType<\n keyof typeof NonZeroFiniteNumber,\n keyof TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n never,\n 'div' | 'mul'\n >\n>('=');\n\nexpectType<\n typeof NonZeroFiniteNumber,\n TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n never,\n 'div' | 'mul'\n >\n>('<=');\n"],"names":[],"mappings":";;AAaA,MAAM,iBAAA,GAAoB,0BAAA;AAE1B,MAAM;AAAA,EACJ,GAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;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,iBAAA,CAI1C;AAAA,EACA,OAAA,EAAS,IAAA;AAAA,EACT,SAAA,EAAW,CAAC,MAAA,CAAO,SAAA;AAAA,EACnB,WAAW,MAAA,CAAO,SAAA;AAAA,EAClB;AACF,CAAU,CAAA;AAEV,MAAM,QAAQ,CACZ,CAAA;AAAA;AAAA,EAGA,IAAA,CAAK,MAAM,CAAC;AAAA,CAAA;AAEd,MAAM,OAAO,CACX,CAAA;AAAA;AAAA,EAGA,IAAA,CAAK,KAAK,CAAC;AAAA,CAAA;AAEb,MAAM,QAAQ,CACZ,CAAA;AAAA;AAAA,EAGA,IAAA,CAAK,MAAM,CAAC;AAAA,CAAA;AAuBP,MAAM,qBAAA,GAAwB;AAY9B,MAAM,qBAAA,GAAwB;AAQ9B,MAAM,mBAAA,GAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQjC,EAAA;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,EASA,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,GAAA;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,18 +1,24 @@
1
1
  import { type NonZeroInt as TtfImported_NonZeroInt } from 'ts-type-forge';
2
2
  export type NonZeroInt = TtfImported_NonZeroInt;
3
3
  /**
4
- * Checks if a number is a NonZeroInt.
4
+ * Type guard that checks if a value is a non-zero integer.
5
5
  *
6
- * @param value The value to check.
7
- * @returns `true` if the value is a NonZeroInt, `false` otherwise.
6
+ * Returns `true` for a non-zero integer — a value with no fractional component,
7
+ * including values outside the safe integer range (unlike `SafeInt`).
8
+ *
9
+ * @param value - The value to check
10
+ * @returns `true` if the value is a non-zero integer, `false` otherwise
8
11
  */
9
12
  export declare const isNonZeroInt: (a: number) => a is TtfImported_NonZeroInt;
10
13
  /**
11
- * Casts a number to a NonZeroInt type.
14
+ * Casts a `number` to the `NonZeroInt` branded type.
15
+ *
16
+ * Validates that the value is a non-zero integer and returns it with the
17
+ * `NonZeroInt` brand. Throws a `TypeError` otherwise.
12
18
  *
13
- * @param value The value to cast.
14
- * @returns The value as a NonZeroInt type.
15
- * @throws {TypeError} If the value is not a non-zero integer.
19
+ * @param value - The value to cast
20
+ * @returns The value as a `NonZeroInt`
21
+ * @throws {TypeError} If the value is not a non-zero integer
16
22
  */
17
23
  export declare const asNonZeroInt: <N extends number>(x: N) => number & {
18
24
  readonly "!=0": true;
@@ -23,67 +29,74 @@ export declare const asNonZeroInt: <N extends number>(x: N) => number & {
23
29
  'TSTypeForgeInternals--edd2f9ce-7ca5-45b0-9d1a-bd61b9b5d9c3': unknown;
24
30
  }> & N;
25
31
  /**
26
- * Namespace providing type-safe arithmetic operations for non-zero integers.
32
+ * Namespace providing type-safe operations for the `NonZeroInt` branded type.
33
+ *
34
+ * The `NonZeroInt` type represents a non-zero integer. Division (`div`) uses
35
+ * floor division.
27
36
  *
28
- * All operations maintain the non-zero constraint, ensuring that results are
29
- * always valid NonZeroInt values. Division operations return floor division
30
- * results, and all arithmetic maintains integer precision.
37
+ * Unlike `SafeInt`, `NonZeroInt` allows values outside the safe integer range
38
+ * (±2^53 − 1), so very large magnitudes may lose precision in JavaScript's
39
+ * `number` type.
31
40
  */
32
41
  export declare const NonZeroInt: {
33
42
  /**
34
- * Type guard to check if a value is a NonZeroInt.
43
+ * Type guard that checks if a value is a non-zero integer.
35
44
  *
36
- * @param value The value to check.
37
- * @returns `true` if the value is a non-zero integer, `false` otherwise.
45
+ * @param value - The value to check
46
+ * @returns `true` if the value is a non-zero integer, `false` otherwise
47
+ * @see {@link isNonZeroInt} for usage examples
38
48
  */
39
49
  readonly is: (a: number) => a is TtfImported_NonZeroInt;
40
50
  /**
41
51
  * Returns the absolute value of a non-zero integer.
42
52
  *
43
- * @param a The non-zero integer.
44
- * @returns The absolute value as a NonZeroInt.
53
+ * The result is non-negative and keeps the `NonZeroInt` brand. Note that
54
+ * `Math.abs(Number.MIN_SAFE_INTEGER)` exceeds `Number.MAX_SAFE_INTEGER`, so
55
+ * use `SafeInt` for guaranteed precision.
56
+ *
57
+ * @param a - The non-zero integer value
58
+ * @returns The absolute value as a non-negative `NonZeroInt`
45
59
  */
46
60
  readonly abs: (x: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt>) => import("ts-type-forge").IntersectBrand<TtfImported_NonZeroInt, import("ts-type-forge").PositiveNumber>;
47
61
  /**
48
- * Returns the smaller of two non-zero integers.
62
+ * Returns the smallest of the given non-zero integers.
49
63
  *
50
- * @param a The first non-zero integer.
51
- * @param b The second non-zero integer.
52
- * @returns The minimum value as a NonZeroInt.
64
+ * @param values - The non-zero integers to compare (at least one required)
65
+ * @returns The smallest value as a `NonZeroInt`
53
66
  */
54
67
  readonly min: (...values: readonly import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt>[]) => TtfImported_NonZeroInt;
55
68
  /**
56
- * Returns the larger of two non-zero integers.
69
+ * Returns the largest of the given non-zero integers.
57
70
  *
58
- * @param a The first non-zero integer.
59
- * @param b The second non-zero integer.
60
- * @returns The maximum value as a NonZeroInt.
71
+ * @param values - The non-zero integers to compare (at least one required)
72
+ * @returns The largest value as a `NonZeroInt`
61
73
  */
62
74
  readonly max: (...values: readonly import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt>[]) => TtfImported_NonZeroInt;
63
75
  /**
64
- * Generates a random non-zero integer.
76
+ * Generates a random `NonZeroInt` within the given range.
77
+ *
78
+ * The range is inclusive on both ends.
65
79
  *
66
- * @returns A random NonZeroInt value.
80
+ * @param min - The minimum value (inclusive)
81
+ * @param max - The maximum value (inclusive)
82
+ * @returns A random `NonZeroInt` in `[min, max]`
67
83
  */
68
84
  readonly random: (min?: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt> | undefined, max?: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt> | undefined) => TtfImported_NonZeroInt;
69
85
  /**
70
- * Raises a non-zero integer to the power of another non-zero integer.
86
+ * Raises `a` to the power `b`, returning `a ** b` as a `NonZeroInt` (floored
87
+ * to an integer).
71
88
  *
72
- * @param a The base non-zero integer.
73
- * @param b The exponent non-zero integer.
74
- * @returns `a ** b` as a NonZeroInt.
89
+ * @param a - The base non-zero integer
90
+ * @param b - The exponent non-zero integer
91
+ * @returns `a ** b` as a `NonZeroInt`
75
92
  */
76
93
  readonly pow: (x: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt>, y: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt>) => TtfImported_NonZeroInt;
77
94
  /**
78
- * Multiplies two non-zero integers.
79
- *
80
- * The product of two non-zero integers is always non-zero, so this stays
81
- * closed; for the non-closed operations (`add`/`sub`/`div`, whose result may
82
- * be `0`) use {@link Num.add}/{@link Num.sub}/{@link Num.divInt}.
95
+ * Multiplies two non-zero integers, returning `a * b` as a `NonZeroInt`.
83
96
  *
84
- * @param a The first non-zero integer.
85
- * @param b The second non-zero integer.
86
- * @returns `a * b` as a NonZeroInt.
97
+ * @param a - The first non-zero integer
98
+ * @param b - The second non-zero integer
99
+ * @returns The product of `a` and `b` as a `NonZeroInt`
87
100
  */
88
101
  readonly mul: (x: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt>, y: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt>) => TtfImported_NonZeroInt;
89
102
  };
@@ -1 +1 @@
1
- {"version":3,"file":"non-zero-int.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/non-zero-int.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,IAAI,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAI1E,MAAM,MAAM,UAAU,GAAG,sBAAsB,CAAC;AA2BhD;;;;;GAKG;AACH,eAAO,MAAM,YAAY,4CAAK,CAAC;AAE/B;;;;;;GAMG;AACH,eAAO,MAAM,YAAY;;;;;;;MAAW,CAAC;AAErC;;;;;;GAMG;AACH,eAAO,MAAM,UAAU;IACrB;;;;;OAKG;;IAGH;;;;;OAKG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;OAIG;;IAGH;;;;;;OAMG;;IAGH;;;;;;;;;;OAUG;;CAEK,CAAC"}
1
+ {"version":3,"file":"non-zero-int.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/non-zero-int.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,IAAI,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAI1E,MAAM,MAAM,UAAU,GAAG,sBAAsB,CAAC;AA2BhD;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,4CAAK,CAAC;AAE/B;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY;;;;;;;MAAW,CAAC;AAErC;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU;IACrB;;;;;;OAMG;;IAGH;;;;;;;;;OASG;;IAGH;;;;;OAKG;;IAGH;;;;;OAKG;;IAGH;;;;;;;;OAQG;;IAGH;;;;;;;OAOG;;IAGH;;;;;;OAMG;;CAEK,CAAC"}
@@ -21,59 +21,63 @@ const isNonZeroInt = is;
21
21
  const asNonZeroInt = castType;
22
22
  const NonZeroInt = {
23
23
  /**
24
- * Type guard to check if a value is a NonZeroInt.
24
+ * Type guard that checks if a value is a non-zero integer.
25
25
  *
26
- * @param value The value to check.
27
- * @returns `true` if the value is a non-zero integer, `false` otherwise.
26
+ * @param value - The value to check
27
+ * @returns `true` if the value is a non-zero integer, `false` otherwise
28
+ * @see {@link isNonZeroInt} for usage examples
28
29
  */
29
30
  is,
30
31
  /**
31
32
  * Returns the absolute value of a non-zero integer.
32
33
  *
33
- * @param a The non-zero integer.
34
- * @returns The absolute value as a NonZeroInt.
34
+ * The result is non-negative and keeps the `NonZeroInt` brand. Note that
35
+ * `Math.abs(Number.MIN_SAFE_INTEGER)` exceeds `Number.MAX_SAFE_INTEGER`, so
36
+ * use `SafeInt` for guaranteed precision.
37
+ *
38
+ * @param a - The non-zero integer value
39
+ * @returns The absolute value as a non-negative `NonZeroInt`
35
40
  */
36
41
  abs,
37
42
  /**
38
- * Returns the smaller of two non-zero integers.
43
+ * Returns the smallest of the given non-zero integers.
39
44
  *
40
- * @param a The first non-zero integer.
41
- * @param b The second non-zero integer.
42
- * @returns The minimum value as a NonZeroInt.
45
+ * @param values - The non-zero integers to compare (at least one required)
46
+ * @returns The smallest value as a `NonZeroInt`
43
47
  */
44
48
  min: min_,
45
49
  /**
46
- * Returns the larger of two non-zero integers.
50
+ * Returns the largest of the given non-zero integers.
47
51
  *
48
- * @param a The first non-zero integer.
49
- * @param b The second non-zero integer.
50
- * @returns The maximum value as a NonZeroInt.
52
+ * @param values - The non-zero integers to compare (at least one required)
53
+ * @returns The largest value as a `NonZeroInt`
51
54
  */
52
55
  max: max_,
53
56
  /**
54
- * Generates a random non-zero integer.
57
+ * Generates a random `NonZeroInt` within the given range.
58
+ *
59
+ * The range is inclusive on both ends.
55
60
  *
56
- * @returns A random NonZeroInt value.
61
+ * @param min - The minimum value (inclusive)
62
+ * @param max - The maximum value (inclusive)
63
+ * @returns A random `NonZeroInt` in `[min, max]`
57
64
  */
58
65
  random,
59
66
  /**
60
- * Raises a non-zero integer to the power of another non-zero integer.
67
+ * Raises `a` to the power `b`, returning `a ** b` as a `NonZeroInt` (floored
68
+ * to an integer).
61
69
  *
62
- * @param a The base non-zero integer.
63
- * @param b The exponent non-zero integer.
64
- * @returns `a ** b` as a NonZeroInt.
70
+ * @param a - The base non-zero integer
71
+ * @param b - The exponent non-zero integer
72
+ * @returns `a ** b` as a `NonZeroInt`
65
73
  */
66
74
  pow,
67
75
  /**
68
- * Multiplies two non-zero integers.
69
- *
70
- * The product of two non-zero integers is always non-zero, so this stays
71
- * closed; for the non-closed operations (`add`/`sub`/`div`, whose result may
72
- * be `0`) use {@link Num.add}/{@link Num.sub}/{@link Num.divInt}.
76
+ * Multiplies two non-zero integers, returning `a * b` as a `NonZeroInt`.
73
77
  *
74
- * @param a The first non-zero integer.
75
- * @param b The second non-zero integer.
76
- * @returns `a * b` as a NonZeroInt.
78
+ * @param a - The first non-zero integer
79
+ * @param b - The second non-zero integer
80
+ * @returns The product of `a` and `b` as a `NonZeroInt`
77
81
  */
78
82
  mul
79
83
  };