ts-data-forge 11.0.0 → 12.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. package/README.md +2 -2
  2. package/dist/number/branded-types/finite-number.d.mts +47 -61
  3. package/dist/number/branded-types/finite-number.d.mts.map +1 -1
  4. package/dist/number/branded-types/finite-number.mjs +37 -41
  5. package/dist/number/branded-types/finite-number.mjs.map +1 -1
  6. package/dist/number/branded-types/int.d.mts +40 -46
  7. package/dist/number/branded-types/int.d.mts.map +1 -1
  8. package/dist/number/branded-types/int.mjs +29 -31
  9. package/dist/number/branded-types/int.mjs.map +1 -1
  10. package/dist/number/branded-types/int16.d.mts +71 -59
  11. package/dist/number/branded-types/int16.d.mts.map +1 -1
  12. package/dist/number/branded-types/int16.mjs +56 -47
  13. package/dist/number/branded-types/int16.mjs.map +1 -1
  14. package/dist/number/branded-types/int32.d.mts +71 -59
  15. package/dist/number/branded-types/int32.d.mts.map +1 -1
  16. package/dist/number/branded-types/int32.mjs +56 -47
  17. package/dist/number/branded-types/int32.mjs.map +1 -1
  18. package/dist/number/branded-types/negative-finite-number.d.mts +76 -60
  19. package/dist/number/branded-types/negative-finite-number.d.mts.map +1 -1
  20. package/dist/number/branded-types/negative-finite-number.mjs +62 -49
  21. package/dist/number/branded-types/negative-finite-number.mjs.map +1 -1
  22. package/dist/number/branded-types/negative-int.d.mts +66 -49
  23. package/dist/number/branded-types/negative-int.d.mts.map +1 -1
  24. package/dist/number/branded-types/negative-int.mjs +48 -39
  25. package/dist/number/branded-types/negative-int.mjs.map +1 -1
  26. package/dist/number/branded-types/negative-safe-int.d.mts +64 -57
  27. package/dist/number/branded-types/negative-safe-int.d.mts.map +1 -1
  28. package/dist/number/branded-types/negative-safe-int.mjs +49 -44
  29. package/dist/number/branded-types/negative-safe-int.mjs.map +1 -1
  30. package/dist/number/branded-types/non-negative-finite-number.d.mts +80 -65
  31. package/dist/number/branded-types/non-negative-finite-number.d.mts.map +1 -1
  32. package/dist/number/branded-types/non-negative-finite-number.mjs +65 -53
  33. package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
  34. package/dist/number/branded-types/non-negative-int16.d.mts +71 -58
  35. package/dist/number/branded-types/non-negative-int16.d.mts.map +1 -1
  36. package/dist/number/branded-types/non-negative-int16.mjs +55 -45
  37. package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
  38. package/dist/number/branded-types/non-negative-int32.d.mts +71 -59
  39. package/dist/number/branded-types/non-negative-int32.d.mts.map +1 -1
  40. package/dist/number/branded-types/non-negative-int32.mjs +55 -46
  41. package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
  42. package/dist/number/branded-types/non-positive-finite-number.d.mts +70 -55
  43. package/dist/number/branded-types/non-positive-finite-number.d.mts.map +1 -1
  44. package/dist/number/branded-types/non-positive-finite-number.mjs +55 -43
  45. package/dist/number/branded-types/non-positive-finite-number.mjs.map +1 -1
  46. package/dist/number/branded-types/non-positive-int.d.mts +46 -146
  47. package/dist/number/branded-types/non-positive-int.d.mts.map +1 -1
  48. package/dist/number/branded-types/non-positive-int.mjs +33 -108
  49. package/dist/number/branded-types/non-positive-int.mjs.map +1 -1
  50. package/dist/number/branded-types/non-positive-safe-int.d.mts +62 -54
  51. package/dist/number/branded-types/non-positive-safe-int.d.mts.map +1 -1
  52. package/dist/number/branded-types/non-positive-safe-int.mjs +46 -41
  53. package/dist/number/branded-types/non-positive-safe-int.mjs.map +1 -1
  54. package/dist/number/branded-types/non-zero-finite-number.d.mts +62 -49
  55. package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -1
  56. package/dist/number/branded-types/non-zero-finite-number.mjs +46 -37
  57. package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
  58. package/dist/number/branded-types/non-zero-int.d.mts +51 -38
  59. package/dist/number/branded-types/non-zero-int.d.mts.map +1 -1
  60. package/dist/number/branded-types/non-zero-int.mjs +31 -27
  61. package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
  62. package/dist/number/branded-types/non-zero-int16.d.mts +59 -54
  63. package/dist/number/branded-types/non-zero-int16.d.mts.map +1 -1
  64. package/dist/number/branded-types/non-zero-int16.mjs +44 -41
  65. package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
  66. package/dist/number/branded-types/non-zero-int32.d.mts +59 -55
  67. package/dist/number/branded-types/non-zero-int32.d.mts.map +1 -1
  68. package/dist/number/branded-types/non-zero-int32.mjs +44 -42
  69. package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
  70. package/dist/number/branded-types/non-zero-safe-int.d.mts +60 -55
  71. package/dist/number/branded-types/non-zero-safe-int.d.mts.map +1 -1
  72. package/dist/number/branded-types/non-zero-safe-int.mjs +44 -42
  73. package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
  74. package/dist/number/branded-types/non-zero-uint16.d.mts +59 -54
  75. package/dist/number/branded-types/non-zero-uint16.d.mts.map +1 -1
  76. package/dist/number/branded-types/non-zero-uint16.mjs +43 -41
  77. package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
  78. package/dist/number/branded-types/non-zero-uint32.d.mts +59 -54
  79. package/dist/number/branded-types/non-zero-uint32.d.mts.map +1 -1
  80. package/dist/number/branded-types/non-zero-uint32.mjs +43 -41
  81. package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
  82. package/dist/number/branded-types/positive-finite-number.d.mts +82 -64
  83. package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -1
  84. package/dist/number/branded-types/positive-finite-number.mjs +67 -52
  85. package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
  86. package/dist/number/branded-types/positive-int.d.mts +53 -70
  87. package/dist/number/branded-types/positive-int.d.mts.map +1 -1
  88. package/dist/number/branded-types/positive-int.mjs +42 -52
  89. package/dist/number/branded-types/positive-int.mjs.map +1 -1
  90. package/dist/number/branded-types/positive-int16.d.mts +68 -58
  91. package/dist/number/branded-types/positive-int16.d.mts.map +1 -1
  92. package/dist/number/branded-types/positive-int16.mjs +52 -45
  93. package/dist/number/branded-types/positive-int16.mjs.map +1 -1
  94. package/dist/number/branded-types/positive-int32.d.mts +68 -58
  95. package/dist/number/branded-types/positive-int32.d.mts.map +1 -1
  96. package/dist/number/branded-types/positive-int32.mjs +52 -45
  97. package/dist/number/branded-types/positive-int32.mjs.map +1 -1
  98. package/dist/number/branded-types/positive-safe-int.d.mts +72 -61
  99. package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
  100. package/dist/number/branded-types/positive-safe-int.mjs +56 -48
  101. package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
  102. package/dist/number/branded-types/positive-uint16.d.mts +68 -58
  103. package/dist/number/branded-types/positive-uint16.d.mts.map +1 -1
  104. package/dist/number/branded-types/positive-uint16.mjs +52 -45
  105. package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
  106. package/dist/number/branded-types/positive-uint32.d.mts +68 -59
  107. package/dist/number/branded-types/positive-uint32.d.mts.map +1 -1
  108. package/dist/number/branded-types/positive-uint32.mjs +52 -46
  109. package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
  110. package/dist/number/branded-types/safe-int.d.mts +52 -66
  111. package/dist/number/branded-types/safe-int.d.mts.map +1 -1
  112. package/dist/number/branded-types/safe-int.mjs +45 -47
  113. package/dist/number/branded-types/safe-int.mjs.map +1 -1
  114. package/dist/number/branded-types/safe-uint.d.mts +68 -58
  115. package/dist/number/branded-types/safe-uint.d.mts.map +1 -1
  116. package/dist/number/branded-types/safe-uint.mjs +53 -46
  117. package/dist/number/branded-types/safe-uint.mjs.map +1 -1
  118. package/dist/number/branded-types/uint.d.mts +72 -55
  119. package/dist/number/branded-types/uint.d.mts.map +1 -1
  120. package/dist/number/branded-types/uint.mjs +52 -45
  121. package/dist/number/branded-types/uint.mjs.map +1 -1
  122. package/dist/number/branded-types/uint16.d.mts +66 -59
  123. package/dist/number/branded-types/uint16.d.mts.map +1 -1
  124. package/dist/number/branded-types/uint16.mjs +51 -45
  125. package/dist/number/branded-types/uint16.mjs.map +1 -1
  126. package/dist/number/branded-types/uint32.d.mts +66 -57
  127. package/dist/number/branded-types/uint32.d.mts.map +1 -1
  128. package/dist/number/branded-types/uint32.mjs +50 -45
  129. package/dist/number/branded-types/uint32.mjs.map +1 -1
  130. package/dist/number/enum/int8.d.mts +62 -66
  131. package/dist/number/enum/int8.d.mts.map +1 -1
  132. package/dist/number/enum/int8.mjs +57 -51
  133. package/dist/number/enum/int8.mjs.map +1 -1
  134. package/dist/number/enum/uint8.d.mts +66 -59
  135. package/dist/number/enum/uint8.d.mts.map +1 -1
  136. package/dist/number/enum/uint8.mjs +57 -51
  137. package/dist/number/enum/uint8.mjs.map +1 -1
  138. package/dist/number/refined-number-utils.d.mts +9 -9
  139. package/dist/number/refined-number-utils.d.mts.map +1 -1
  140. package/dist/number/refined-number-utils.mjs +7 -7
  141. package/dist/number/refined-number-utils.mjs.map +1 -1
  142. package/package.json +2 -1
  143. package/src/number/branded-types/finite-number.mts +47 -61
  144. package/src/number/branded-types/int.mts +40 -46
  145. package/src/number/branded-types/int16.mts +72 -60
  146. package/src/number/branded-types/int32.mts +72 -60
  147. package/src/number/branded-types/negative-finite-number.mts +78 -71
  148. package/src/number/branded-types/negative-finite-number.test.mts +4 -4
  149. package/src/number/branded-types/negative-int.mts +68 -60
  150. package/src/number/branded-types/negative-int.test.mts +5 -5
  151. package/src/number/branded-types/negative-safe-int.mts +66 -68
  152. package/src/number/branded-types/negative-safe-int.test.mts +4 -4
  153. package/src/number/branded-types/non-negative-finite-number.mts +81 -66
  154. package/src/number/branded-types/non-negative-int16.mts +72 -59
  155. package/src/number/branded-types/non-negative-int32.mts +72 -60
  156. package/src/number/branded-types/non-positive-finite-number.mts +71 -56
  157. package/src/number/branded-types/non-positive-finite-number.test.mts +7 -7
  158. package/src/number/branded-types/non-positive-int.mts +47 -147
  159. package/src/number/branded-types/non-positive-int.test.mts +7 -7
  160. package/src/number/branded-types/non-positive-safe-int.mts +63 -55
  161. package/src/number/branded-types/non-positive-safe-int.test.mts +7 -7
  162. package/src/number/branded-types/non-zero-finite-number.mts +62 -51
  163. package/src/number/branded-types/non-zero-int.mts +51 -38
  164. package/src/number/branded-types/non-zero-int16.mts +60 -55
  165. package/src/number/branded-types/non-zero-int32.mts +60 -56
  166. package/src/number/branded-types/non-zero-safe-int.mts +61 -56
  167. package/src/number/branded-types/non-zero-uint16.mts +60 -55
  168. package/src/number/branded-types/non-zero-uint32.mts +60 -55
  169. package/src/number/branded-types/positive-finite-number.mts +83 -65
  170. package/src/number/branded-types/positive-int.mts +54 -71
  171. package/src/number/branded-types/positive-int16.mts +69 -59
  172. package/src/number/branded-types/positive-int32.mts +69 -59
  173. package/src/number/branded-types/positive-safe-int.mts +73 -62
  174. package/src/number/branded-types/positive-uint16.mts +69 -59
  175. package/src/number/branded-types/positive-uint32.mts +69 -60
  176. package/src/number/branded-types/safe-int.mts +53 -67
  177. package/src/number/branded-types/safe-uint.mts +69 -59
  178. package/src/number/branded-types/uint.mts +73 -56
  179. package/src/number/branded-types/uint16.mts +67 -60
  180. package/src/number/branded-types/uint32.mts +67 -58
  181. package/src/number/enum/int8.mts +70 -73
  182. package/src/number/enum/int8.test.mts +7 -4
  183. package/src/number/enum/uint8.mts +74 -66
  184. package/src/number/enum/uint8.test.mts +7 -4
  185. package/src/number/refined-number-utils.mts +22 -19
@@ -13,7 +13,7 @@ const {
13
13
  MIN_VALUE,
14
14
  add,
15
15
  castType,
16
- clamp,
16
+ fromNumber,
17
17
  is,
18
18
  max: max_,
19
19
  min: min_,
@@ -33,117 +33,122 @@ const {
33
33
  } as const);
34
34
 
35
35
  /**
36
- * Checks if a number is a NonZeroUint32 (32-bit non-zero unsigned integer in
37
- * the range [1, 2^32)).
36
+ * Type guard that checks if a value is a non-zero integer in [1, 2^32).
38
37
  *
39
- * @param value The value to check.
40
- * @returns `true` if the value is a NonZeroUint32, `false` otherwise.
38
+ * Returns `true` for a non-zero integer in [1, 2^32) — a value with no
39
+ * fractional component.
40
+ *
41
+ * @param value - The value to check
42
+ * @returns `true` if the value is a non-zero integer in [1, 2^32), `false` otherwise
41
43
  */
42
44
  export const isNonZeroUint32 = is;
43
45
 
44
46
  /**
45
- * Casts a number to a NonZeroUint32 type.
47
+ * Casts a `number` to the `NonZeroUint32` branded type.
48
+ *
49
+ * Validates that the value is a non-zero integer in [1, 2^32) and returns it
50
+ * with the `NonZeroUint32` brand. Throws a `TypeError` otherwise.
46
51
  *
47
- * @param value The value to cast.
48
- * @returns The value as a NonZeroUint32 type.
49
- * @throws {TypeError} If the value is not a non-zero integer in [1, 2^32).
52
+ * @param value - The value to cast
53
+ * @returns The value as a `NonZeroUint32`
54
+ * @throws {TypeError} If the value is not a non-zero integer in [1, 2^32)
50
55
  */
51
56
  export const asNonZeroUint32 = castType;
52
57
 
53
58
  /**
54
- * Namespace providing type-safe arithmetic operations for 32-bit non-zero
55
- * unsigned integers.
59
+ * Namespace providing type-safe operations for the `NonZeroUint32` branded
60
+ * type.
56
61
  *
57
- * All operations automatically clamp results to the valid NonZeroUint32 range
58
- * [1, 4294967295]. This ensures that all arithmetic maintains the 32-bit
59
- * non-zero unsigned integer constraint, with results below 1 clamped to
60
- * MIN_VALUE and overflow results clamped to MAX_VALUE.
62
+ * The `NonZeroUint32` type represents a non-zero integer in [1, 2^32). Division
63
+ * (`div`) uses floor division.
61
64
  */
62
65
  export const NonZeroUint32 = {
63
66
  /**
64
- * Type guard to check if a value is a NonZeroUint32.
67
+ * Type guard that checks if a value is a non-zero integer in [1, 2^32).
65
68
  *
66
- * @param value The value to check.
67
- * @returns `true` if the value is a 32-bit non-zero unsigned integer, `false`
68
- * otherwise.
69
+ * @param value - The value to check
70
+ * @returns `true` if the value is a non-zero integer in [1, 2^32), `false` otherwise
71
+ * @see {@link isNonZeroUint32} for usage examples
69
72
  */
70
73
  is,
71
74
 
72
75
  /**
73
- * The minimum value for a 32-bit non-zero unsigned integer.
74
- *
75
- * @readonly
76
+ * The smallest value representable as `NonZeroUint32` (the lower saturation
77
+ * target of `fromNumber`).
76
78
  */
77
79
  MIN_VALUE,
78
80
 
79
81
  /**
80
- * The maximum value for a 32-bit non-zero unsigned integer.
81
- *
82
- * @readonly
82
+ * The largest value representable as `NonZeroUint32` (the upper saturation
83
+ * target of `fromNumber`).
83
84
  */
84
85
  MAX_VALUE,
85
86
 
86
87
  /**
87
- * Returns the smaller of two NonZeroUint32 values.
88
+ * Returns the smallest of the given non-zero integers.
88
89
  *
89
- * @param a The first NonZeroUint32.
90
- * @param b The second NonZeroUint32.
91
- * @returns The minimum value as a NonZeroUint32.
90
+ * @param values - The non-zero integers to compare (at least one required)
91
+ * @returns The smallest value as a `NonZeroUint32`
92
92
  */
93
93
  min: min_,
94
94
 
95
95
  /**
96
- * Returns the larger of two NonZeroUint32 values.
96
+ * Returns the largest of the given non-zero integers.
97
97
  *
98
- * @param a The first NonZeroUint32.
99
- * @param b The second NonZeroUint32.
100
- * @returns The maximum value as a NonZeroUint32.
98
+ * @param values - The non-zero integers to compare (at least one required)
99
+ * @returns The largest value as a `NonZeroUint32`
101
100
  */
102
101
  max: max_,
103
102
 
104
103
  /**
105
- * Clamps a number to the NonZeroUint32 range.
104
+ * Converts an arbitrary `number` into a `NonZeroUint32`, rounding to the
105
+ * nearest integer and saturating the result into the range `[MIN_VALUE,
106
+ * MAX_VALUE]`.
106
107
  *
107
- * @param value The number to clamp.
108
- * @returns The value clamped to [1, 4294967295] as a NonZeroUint32.
108
+ * Unlike `asNonZeroUint32`, this is total: out-of-range inputs are clamped to
109
+ * the nearest representable `NonZeroUint32` instead of throwing.
110
+ *
111
+ * @param value - The value to convert
112
+ * @returns The value as a `NonZeroUint32`
109
113
  */
110
- clamp,
114
+ fromNumber,
111
115
 
112
116
  /**
113
- * Generates a random NonZeroUint32 value within the valid range.
117
+ * Generates a random `NonZeroUint32` within the given range.
118
+ *
119
+ * The range is inclusive on both ends.
114
120
  *
115
- * @returns A random NonZeroUint32 between 1 and 4294967295.
121
+ * @param min - The minimum value (inclusive)
122
+ * @param max - The maximum value (inclusive)
123
+ * @returns A random `NonZeroUint32` in `[min, max]`
116
124
  */
117
125
  random,
118
126
 
119
127
  /**
120
- * Raises a NonZeroUint32 to the power of another NonZeroUint32.
128
+ * Raises `a` to the power `b`, returning `a ** b` as a `NonZeroUint32`
129
+ * (floored to an integer).
121
130
  *
122
- * @param a The base NonZeroUint32.
123
- * @param b The exponent NonZeroUint32.
124
- * @returns `a ** b` clamped to [1, 4294967295] as a NonZeroUint32.
131
+ * @param a - The base non-zero integer
132
+ * @param b - The exponent non-zero integer
133
+ * @returns `a ** b` as a `NonZeroUint32`
125
134
  */
126
135
  pow,
127
136
 
128
137
  /**
129
- * Adds two NonZeroUint32 values.
138
+ * Adds two non-zero integers, returning `a + b` as a `NonZeroUint32`.
130
139
  *
131
- * @param a The first NonZeroUint32.
132
- * @param b The second NonZeroUint32.
133
- * @returns `a + b` clamped to [1, 4294967295] as a NonZeroUint32.
140
+ * @param a - The first non-zero integer
141
+ * @param b - The second non-zero integer
142
+ * @returns The sum of `a` and `b` as a `NonZeroUint32`
134
143
  */
135
144
  add,
136
145
 
137
146
  /**
138
- * Multiplies two NonZeroUint32 values.
139
- *
140
- * Both `add` and `mul` stay within `[1, 4294967295]`. For the non-closed
141
- * operations (`sub`/`div`, whose result may be `0`) use {@link Num.sub} /
142
- * {@link Num.divInt}.
147
+ * Multiplies two non-zero integers, returning `a * b` as a `NonZeroUint32`.
143
148
  *
144
- * @param a The first NonZeroUint32.
145
- * @param b The second NonZeroUint32.
146
- * @returns `a * b` clamped to [1, 4294967295] as a NonZeroUint32.
149
+ * @param a - The first non-zero integer
150
+ * @param b - The second non-zero integer
151
+ * @returns The product of `a` and `b` as a `NonZeroUint32`
147
152
  */
148
153
  mul,
149
154
  } as const;
@@ -16,8 +16,8 @@ const {
16
16
  MIN_VALUE,
17
17
  add,
18
18
  castType,
19
- clamp,
20
19
  div,
20
+ fromNumber,
21
21
  is,
22
22
  max: max_,
23
23
  min: min_,
@@ -78,148 +78,166 @@ expectType<
78
78
  >('=');
79
79
 
80
80
  /**
81
- * Checks if a number is a PositiveFiniteNumber (a finite number > 0).
81
+ * Type guard that checks if a value is a positive finite number.
82
82
  *
83
- * @param value The value to check.
84
- * @returns `true` if the value is a PositiveFiniteNumber, `false` otherwise.
83
+ * Returns `true` only for a finite value — never `NaN`, `Infinity`, or
84
+ * `-Infinity`.
85
+ *
86
+ * @param value - The value to check
87
+ * @returns `true` if the value is a positive finite number, `false` otherwise
85
88
  */
86
89
  export const isPositiveFiniteNumber = is;
87
90
 
88
91
  /**
89
- * Casts a number to a PositiveFiniteNumber type.
92
+ * Casts a `number` to the `PositiveFiniteNumber` branded type.
93
+ *
94
+ * Validates that the value is a positive finite number and returns it with the
95
+ * `PositiveFiniteNumber` brand. Throws a `TypeError` otherwise.
90
96
  *
91
- * @param value The value to cast.
92
- * @returns The value as a PositiveFiniteNumber type.
93
- * @throws {TypeError} If the value is not a positive finite number.
97
+ * @param value - The value to cast
98
+ * @returns The value as a `PositiveFiniteNumber`
99
+ * @throws {TypeError} If the value is not a positive finite number
94
100
  */
95
101
  export const asPositiveFiniteNumber = castType;
96
102
 
97
103
  /**
98
- * Namespace providing type-safe arithmetic operations for positive finite
99
- * numbers.
104
+ * Namespace providing type-safe operations for the `PositiveFiniteNumber`
105
+ * branded type.
100
106
  *
101
- * All operations maintain the positive constraint by clamping non-positive
102
- * results to MIN_VALUE, while ensuring results remain finite (excluding NaN and
103
- * Infinity). This type is useful for representing quantities that must always
104
- * be positive, such as probabilities, magnitudes, and physical measurements.
107
+ * The `PositiveFiniteNumber` type represents a positive finite number.
105
108
  */
106
109
  export const PositiveFiniteNumber = {
107
110
  /**
108
- * Type guard to check if a value is a PositiveFiniteNumber.
111
+ * Type guard that checks if a value is a positive finite number.
109
112
  *
110
- * @param value The value to check.
111
- * @returns `true` if the value is a positive finite number, `false`
112
- * otherwise.
113
+ * @param value - The value to check
114
+ * @returns `true` if the value is a positive finite number, `false` otherwise
115
+ * @see {@link isPositiveFiniteNumber} for usage examples
113
116
  */
114
117
  is,
115
118
 
116
119
  /**
117
- * The minimum value for a positive finite number.
118
- *
119
- * @readonly
120
+ * The smallest value representable as `PositiveFiniteNumber` (the lower
121
+ * saturation target of `fromNumber`). The domain is open at `0` (excluded),
122
+ * so this is `Number.MIN_VALUE` — the smallest positive double — rather than
123
+ * `0`.
120
124
  */
121
125
  MIN_VALUE,
122
126
 
123
127
  /**
124
- * Returns the smaller of two PositiveFiniteNumber values.
128
+ * Returns the smallest of the given positive finite numbers.
125
129
  *
126
- * @param a The first PositiveFiniteNumber.
127
- * @param b The second PositiveFiniteNumber.
128
- * @returns The minimum value as a PositiveFiniteNumber.
130
+ * @param values - The positive finite numbers to compare (at least one required)
131
+ * @returns The smallest value as a `PositiveFiniteNumber`
129
132
  */
130
133
  min: min_,
131
134
 
132
135
  /**
133
- * Returns the larger of two PositiveFiniteNumber values.
136
+ * Returns the largest of the given positive finite numbers.
134
137
  *
135
- * @param a The first PositiveFiniteNumber.
136
- * @param b The second PositiveFiniteNumber.
137
- * @returns The maximum value as a PositiveFiniteNumber.
138
+ * @param values - The positive finite numbers to compare (at least one required)
139
+ * @returns The largest value as a `PositiveFiniteNumber`
138
140
  */
139
141
  max: max_,
140
142
 
141
143
  /**
142
- * Clamps a number to the positive finite range.
144
+ * Converts an arbitrary `number` into a `PositiveFiniteNumber`, saturating it
145
+ * into the range `[MIN_VALUE, MAX_VALUE]`.
143
146
  *
144
- * @param value The number to clamp.
145
- * @returns The value clamped to (0, +∞) as a PositiveFiniteNumber.
147
+ * Unlike `asPositiveFiniteNumber`, this is total: out-of-range inputs are
148
+ * clamped to the nearest representable `PositiveFiniteNumber` instead of
149
+ * throwing.
150
+ *
151
+ * @param value - The value to convert
152
+ * @returns The value as a `PositiveFiniteNumber`
146
153
  */
147
- clamp,
154
+ fromNumber,
148
155
 
149
156
  /**
150
- * Rounds down a PositiveFiniteNumber to the nearest integer.
157
+ * Returns the greatest integer less than or equal to a positive finite
158
+ * number.
151
159
  *
152
- * @param x The PositiveFiniteNumber to round down.
153
- * @returns The floor value as a Uint (can be 0).
160
+ * @param a - The positive finite number value
161
+ * @returns The floored value as an integer
154
162
  */
155
163
  floor,
156
164
 
157
165
  /**
158
- * Rounds up a PositiveFiniteNumber to the nearest integer.
166
+ * Returns the smallest integer greater than or equal to a positive finite
167
+ * number.
159
168
  *
160
- * @param x The PositiveFiniteNumber to round up.
161
- * @returns The ceiling value as a PositiveInt (always >= 1).
169
+ * @param a - The positive finite number value
170
+ * @returns The ceiled value as an integer
162
171
  */
163
172
  ceil,
164
173
 
165
174
  /**
166
- * Rounds a PositiveFiniteNumber to the nearest integer.
175
+ * Returns the value of a positive finite number rounded to the nearest
176
+ * integer.
167
177
  *
168
- * @param x The PositiveFiniteNumber to round.
169
- * @returns The rounded value as a Uint (can be 0 if x < 0.5).
178
+ * @param a - The positive finite number value
179
+ * @returns The rounded value as an integer
170
180
  */
171
181
  round,
172
182
 
173
183
  /**
174
- * Generates a random PositiveFiniteNumber value.
184
+ * Generates a random `PositiveFiniteNumber` within the given range.
185
+ *
186
+ * The range is inclusive on both ends.
175
187
  *
176
- * @returns A random positive finite number.
188
+ * @param min - The minimum value (inclusive)
189
+ * @param max - The maximum value (inclusive)
190
+ * @returns A random `PositiveFiniteNumber` in `[min, max]`
177
191
  */
178
192
  random,
179
193
 
180
194
  /**
181
- * Raises a PositiveFiniteNumber to the power of another PositiveFiniteNumber.
195
+ * Raises `a` to the power `b`, returning `a ** b` as a
196
+ * `PositiveFiniteNumber`.
182
197
  *
183
- * @param a The base PositiveFiniteNumber.
184
- * @param b The exponent PositiveFiniteNumber.
185
- * @returns `a ** b` clamped to (0, +∞) as a PositiveFiniteNumber.
198
+ * @param a - The base positive finite number
199
+ * @param b - The exponent positive finite number
200
+ * @returns `a ** b` as a `PositiveFiniteNumber`
186
201
  */
187
202
  pow,
188
203
 
189
204
  /**
190
- * Adds two PositiveFiniteNumber values.
205
+ * Adds two positive finite numbers, returning `a + b` as a
206
+ * `PositiveFiniteNumber`.
191
207
  *
192
- * @param a The first PositiveFiniteNumber.
193
- * @param b The second PositiveFiniteNumber.
194
- * @returns `a + b` clamped to (0, +∞) as a PositiveFiniteNumber.
208
+ * @param a - The first positive finite number
209
+ * @param b - The second positive finite number
210
+ * @returns The sum of `a` and `b` as a `PositiveFiniteNumber`
195
211
  */
196
212
  add,
197
213
 
198
214
  /**
199
- * Subtracts one PositiveFiniteNumber from another.
215
+ * Subtracts two positive finite numbers, returning `a - b` as a
216
+ * `PositiveFiniteNumber`.
200
217
  *
201
- * @param a The minuend PositiveFiniteNumber.
202
- * @param b The subtrahend PositiveFiniteNumber.
203
- * @returns `a - b` clamped to (0, +∞) as a PositiveFiniteNumber (minimum
204
- * MIN_VALUE).
218
+ * @param a - The first positive finite number
219
+ * @param b - The second positive finite number
220
+ * @returns The difference of `a` and `b` as a `PositiveFiniteNumber`
205
221
  */
206
222
  sub,
207
223
 
208
224
  /**
209
- * Multiplies two PositiveFiniteNumber values.
225
+ * Multiplies two positive finite numbers, returning `a * b` as a
226
+ * `PositiveFiniteNumber`.
210
227
  *
211
- * @param a The first PositiveFiniteNumber.
212
- * @param b The second PositiveFiniteNumber.
213
- * @returns `a * b` clamped to (0, +∞) as a PositiveFiniteNumber.
228
+ * @param a - The first positive finite number
229
+ * @param b - The second positive finite number
230
+ * @returns The product of `a` and `b` as a `PositiveFiniteNumber`
214
231
  */
215
232
  mul,
216
233
 
217
234
  /**
218
- * Divides one PositiveFiniteNumber by another.
235
+ * Divides two positive finite numbers, returning `a / b` as a
236
+ * `PositiveFiniteNumber`.
219
237
  *
220
- * @param a The dividend PositiveFiniteNumber.
221
- * @param b The divisor PositiveFiniteNumber.
222
- * @returns `a / b` clamped to (0, +∞) as a PositiveFiniteNumber.
238
+ * @param a - The dividend
239
+ * @param b - The divisor (must be non-zero)
240
+ * @returns `a / b` as a `PositiveFiniteNumber`
223
241
  */
224
242
  div,
225
243
  } as const;