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
@@ -14,8 +14,8 @@ const {
14
14
  abs,
15
15
  add,
16
16
  castType,
17
- clamp,
18
17
  div,
18
+ fromNumber,
19
19
  is,
20
20
  max: max_,
21
21
  min: min_,
@@ -35,137 +35,149 @@ const {
35
35
  } as const);
36
36
 
37
37
  /**
38
- * Checks if a number is an Int16 (16-bit signed integer in the range [-2^15,
39
- * 2^15)).
38
+ * Type guard that checks if a value is an integer in [-2^15, 2^15).
40
39
  *
41
- * @param value The value to check.
42
- * @returns `true` if the value is an Int16, `false` otherwise.
40
+ * Returns `true` for an integer in [-2^15, 2^15) — a value with no fractional
41
+ * component.
42
+ *
43
+ * @param value - The value to check
44
+ * @returns `true` if the value is an integer in [-2^15, 2^15), `false` otherwise
43
45
  */
44
46
  export const isInt16 = is;
45
47
 
46
48
  /**
47
- * Casts a number to an Int16 type.
49
+ * Casts a `number` to the `Int16` branded type.
50
+ *
51
+ * Validates that the value is an integer in [-2^15, 2^15) and returns it with
52
+ * the `Int16` brand. Throws a `TypeError` otherwise.
48
53
  *
49
- * @param value The value to cast.
50
- * @returns The value as an Int16 type.
51
- * @throws {TypeError} If the value is not an integer in [-2^15, 2^15).
54
+ * @param value - The value to cast
55
+ * @returns The value as an `Int16`
56
+ * @throws {TypeError} If the value is not an integer in [-2^15, 2^15)
52
57
  */
53
58
  export const asInt16 = castType;
54
59
 
55
60
  /**
56
- * Namespace providing type-safe arithmetic operations for 16-bit signed
57
- * integers.
61
+ * Namespace providing type-safe operations for the `Int16` branded type.
58
62
  *
59
- * All operations automatically clamp results to the valid Int16 range [-32768,
60
- * 32767]. This ensures that all arithmetic maintains the 16-bit signed integer
61
- * constraint.
63
+ * The `Int16` type represents an integer in [-2^15, 2^15). Division (`div`)
64
+ * uses floor division.
62
65
  */
63
66
  export const Int16 = {
64
67
  /**
65
- * Type guard to check if a value is an Int16.
68
+ * Type guard that checks if a value is an integer in [-2^15, 2^15).
66
69
  *
67
- * @param value The value to check.
68
- * @returns `true` if the value is a 16-bit signed integer, `false` otherwise.
70
+ * @param value - The value to check
71
+ * @returns `true` if the value is an integer in [-2^15, 2^15), `false` otherwise
72
+ * @see {@link isInt16} for usage examples
69
73
  */
70
74
  is,
71
75
 
72
76
  /**
73
- * The minimum value for a 16-bit signed integer.
74
- *
75
- * @readonly
77
+ * The smallest value representable as `Int16` (the lower saturation target of
78
+ * `fromNumber`).
76
79
  */
77
80
  MIN_VALUE,
78
81
 
79
82
  /**
80
- * The maximum value for a 16-bit signed integer.
81
- *
82
- * @readonly
83
+ * The largest value representable as `Int16` (the upper saturation target of
84
+ * `fromNumber`).
83
85
  */
84
86
  MAX_VALUE,
85
87
 
86
88
  /**
87
- * Returns the absolute value of a 16-bit signed integer.
89
+ * Returns the absolute value of an integer in [-2^15, 2^15).
88
90
  *
89
- * @param a The Int16 value.
90
- * @returns The absolute value as an Int16, clamped to valid range.
91
+ * The result is non-negative and keeps the `Int16` brand.
92
+ *
93
+ * @param a - The integer value
94
+ * @returns The absolute value as a non-negative `Int16`
91
95
  */
92
96
  abs,
93
97
 
94
98
  /**
95
- * Returns the smaller of two Int16 values.
99
+ * Returns the smallest of the given integers.
96
100
  *
97
- * @param a The first Int16.
98
- * @param b The second Int16.
99
- * @returns The minimum value as an Int16.
101
+ * @param values - The integers to compare (at least one required)
102
+ * @returns The smallest value as an `Int16`
100
103
  */
101
104
  min: min_,
102
105
 
103
106
  /**
104
- * Returns the larger of two Int16 values.
107
+ * Returns the largest of the given integers.
105
108
  *
106
- * @param a The first Int16.
107
- * @param b The second Int16.
108
- * @returns The maximum value as an Int16.
109
+ * @param values - The integers to compare (at least one required)
110
+ * @returns The largest value as an `Int16`
109
111
  */
110
112
  max: max_,
111
113
 
112
114
  /**
113
- * Clamps a number to the Int16 range.
115
+ * Converts an arbitrary `number` into an `Int16`, rounding to the nearest
116
+ * integer and saturating the result into the range `[MIN_VALUE, MAX_VALUE]`.
117
+ *
118
+ * Unlike `asInt16`, this is total: out-of-range inputs are clamped to the
119
+ * nearest representable `Int16` instead of throwing.
114
120
  *
115
- * @param value The number to clamp.
116
- * @returns The value clamped to [-32768, 32767] as an Int16.
121
+ * @param value - The value to convert
122
+ * @returns The value as an `Int16`
117
123
  */
118
- clamp,
124
+ fromNumber,
119
125
 
120
126
  /**
121
- * Generates a random Int16 value within the valid range.
127
+ * Generates a random `Int16` within the given range.
128
+ *
129
+ * The range is inclusive on both ends.
122
130
  *
123
- * @returns A random Int16 between MIN_VALUE and MAX_VALUE.
131
+ * @param min - The minimum value (inclusive)
132
+ * @param max - The maximum value (inclusive)
133
+ * @returns A random `Int16` in `[min, max]`
124
134
  */
125
135
  random,
126
136
 
127
137
  /**
128
- * Raises an Int16 to the power of another Int16.
138
+ * Raises `a` to the power `b`, returning `a ** b` as an `Int16` (floored to
139
+ * an integer).
129
140
  *
130
- * @param a The base Int16.
131
- * @param b The exponent Int16.
132
- * @returns `a ** b` clamped to [-32768, 32767] as an Int16.
141
+ * @param a - The base integer
142
+ * @param b - The exponent integer
143
+ * @returns `a ** b` as an `Int16`
133
144
  */
134
145
  pow,
135
146
 
136
147
  /**
137
- * Adds two Int16 values.
148
+ * Adds two integers, returning `a + b` as an `Int16`.
138
149
  *
139
- * @param a The first Int16.
140
- * @param b The second Int16.
141
- * @returns `a + b` clamped to [-32768, 32767] as an Int16.
150
+ * @param a - The first integer
151
+ * @param b - The second integer
152
+ * @returns The sum of `a` and `b` as an `Int16`
142
153
  */
143
154
  add,
144
155
 
145
156
  /**
146
- * Subtracts one Int16 from another.
157
+ * Subtracts two integers, returning `a - b` as an `Int16`.
147
158
  *
148
- * @param a The minuend Int16.
149
- * @param b The subtrahend Int16.
150
- * @returns `a - b` clamped to [-32768, 32767] as an Int16.
159
+ * @param a - The first integer
160
+ * @param b - The second integer
161
+ * @returns The difference of `a` and `b` as an `Int16`
151
162
  */
152
163
  sub,
153
164
 
154
165
  /**
155
- * Multiplies two Int16 values.
166
+ * Multiplies two integers, returning `a * b` as an `Int16`.
156
167
  *
157
- * @param a The first Int16.
158
- * @param b The second Int16.
159
- * @returns `a * b` clamped to [-32768, 32767] as an Int16.
168
+ * @param a - The first integer
169
+ * @param b - The second integer
170
+ * @returns The product of `a` and `b` as an `Int16`
160
171
  */
161
172
  mul,
162
173
 
163
174
  /**
164
- * Divides one Int16 by another using floor division.
175
+ * Divides two integers using floor division (`⌊a / b⌋`): the result is `a /
176
+ * b` rounded toward negative infinity, as an `Int16`.
165
177
  *
166
- * @param a The dividend Int16.
167
- * @param b The divisor Int16.
168
- * @returns `⌊a / b⌋` clamped to [-32768, 32767] as an Int16.
178
+ * @param a - The dividend
179
+ * @param b - The divisor (must be non-zero)
180
+ * @returns The floored quotient as an `Int16`
169
181
  */
170
182
  div,
171
183
  } as const;
@@ -14,8 +14,8 @@ const {
14
14
  abs,
15
15
  add,
16
16
  castType,
17
- clamp,
18
17
  div,
18
+ fromNumber,
19
19
  is,
20
20
  max: max_,
21
21
  min: min_,
@@ -35,137 +35,149 @@ const {
35
35
  } as const);
36
36
 
37
37
  /**
38
- * Checks if a number is an Int32 (32-bit signed integer in the range [-2^31,
39
- * 2^31)).
38
+ * Type guard that checks if a value is an integer in [-2^31, 2^31).
40
39
  *
41
- * @param value The value to check.
42
- * @returns `true` if the value is an Int32, `false` otherwise.
40
+ * Returns `true` for an integer in [-2^31, 2^31) — a value with no fractional
41
+ * component.
42
+ *
43
+ * @param value - The value to check
44
+ * @returns `true` if the value is an integer in [-2^31, 2^31), `false` otherwise
43
45
  */
44
46
  export const isInt32 = is;
45
47
 
46
48
  /**
47
- * Casts a number to an Int32 type.
49
+ * Casts a `number` to the `Int32` branded type.
50
+ *
51
+ * Validates that the value is an integer in [-2^31, 2^31) and returns it with
52
+ * the `Int32` brand. Throws a `TypeError` otherwise.
48
53
  *
49
- * @param value The value to cast.
50
- * @returns The value as an Int32 type.
51
- * @throws {TypeError} If the value is not an integer in [-2^31, 2^31).
54
+ * @param value - The value to cast
55
+ * @returns The value as an `Int32`
56
+ * @throws {TypeError} If the value is not an integer in [-2^31, 2^31)
52
57
  */
53
58
  export const asInt32 = castType;
54
59
 
55
60
  /**
56
- * Namespace providing type-safe arithmetic operations for 32-bit signed
57
- * integers.
61
+ * Namespace providing type-safe operations for the `Int32` branded type.
58
62
  *
59
- * All operations automatically clamp results to the valid Int32 range
60
- * [-2147483648, 2147483647]. This ensures that all arithmetic maintains the
61
- * 32-bit signed integer constraint, preventing overflow.
63
+ * The `Int32` type represents an integer in [-2^31, 2^31). Division (`div`)
64
+ * uses floor division.
62
65
  */
63
66
  export const Int32 = {
64
67
  /**
65
- * Type guard to check if a value is an Int32.
68
+ * Type guard that checks if a value is an integer in [-2^31, 2^31).
66
69
  *
67
- * @param value The value to check.
68
- * @returns `true` if the value is a 32-bit signed integer, `false` otherwise.
70
+ * @param value - The value to check
71
+ * @returns `true` if the value is an integer in [-2^31, 2^31), `false` otherwise
72
+ * @see {@link isInt32} for usage examples
69
73
  */
70
74
  is,
71
75
 
72
76
  /**
73
- * The minimum value for a 32-bit signed integer.
74
- *
75
- * @readonly
77
+ * The smallest value representable as `Int32` (the lower saturation target of
78
+ * `fromNumber`).
76
79
  */
77
80
  MIN_VALUE,
78
81
 
79
82
  /**
80
- * The maximum value for a 32-bit signed integer.
81
- *
82
- * @readonly
83
+ * The largest value representable as `Int32` (the upper saturation target of
84
+ * `fromNumber`).
83
85
  */
84
86
  MAX_VALUE,
85
87
 
86
88
  /**
87
- * Returns the absolute value of a 32-bit signed integer.
89
+ * Returns the absolute value of an integer in [-2^31, 2^31).
88
90
  *
89
- * @param a The Int32 value.
90
- * @returns The absolute value as an Int32, clamped to valid range.
91
+ * The result is non-negative and keeps the `Int32` brand.
92
+ *
93
+ * @param a - The integer value
94
+ * @returns The absolute value as a non-negative `Int32`
91
95
  */
92
96
  abs,
93
97
 
94
98
  /**
95
- * Returns the smaller of two Int32 values.
99
+ * Returns the smallest of the given integers.
96
100
  *
97
- * @param a The first Int32.
98
- * @param b The second Int32.
99
- * @returns The minimum value as an Int32.
101
+ * @param values - The integers to compare (at least one required)
102
+ * @returns The smallest value as an `Int32`
100
103
  */
101
104
  min: min_,
102
105
 
103
106
  /**
104
- * Returns the larger of two Int32 values.
107
+ * Returns the largest of the given integers.
105
108
  *
106
- * @param a The first Int32.
107
- * @param b The second Int32.
108
- * @returns The maximum value as an Int32.
109
+ * @param values - The integers to compare (at least one required)
110
+ * @returns The largest value as an `Int32`
109
111
  */
110
112
  max: max_,
111
113
 
112
114
  /**
113
- * Clamps a number to the Int32 range.
115
+ * Converts an arbitrary `number` into an `Int32`, rounding to the nearest
116
+ * integer and saturating the result into the range `[MIN_VALUE, MAX_VALUE]`.
117
+ *
118
+ * Unlike `asInt32`, this is total: out-of-range inputs are clamped to the
119
+ * nearest representable `Int32` instead of throwing.
114
120
  *
115
- * @param value The number to clamp.
116
- * @returns The value clamped to [-2147483648, 2147483647] as an Int32.
121
+ * @param value - The value to convert
122
+ * @returns The value as an `Int32`
117
123
  */
118
- clamp,
124
+ fromNumber,
119
125
 
120
126
  /**
121
- * Generates a random Int32 value within the valid range.
127
+ * Generates a random `Int32` within the given range.
128
+ *
129
+ * The range is inclusive on both ends.
122
130
  *
123
- * @returns A random Int32 between MIN_VALUE and MAX_VALUE.
131
+ * @param min - The minimum value (inclusive)
132
+ * @param max - The maximum value (inclusive)
133
+ * @returns A random `Int32` in `[min, max]`
124
134
  */
125
135
  random,
126
136
 
127
137
  /**
128
- * Raises an Int32 to the power of another Int32.
138
+ * Raises `a` to the power `b`, returning `a ** b` as an `Int32` (floored to
139
+ * an integer).
129
140
  *
130
- * @param a The base Int32.
131
- * @param b The exponent Int32.
132
- * @returns `a ** b` clamped to [-2147483648, 2147483647] as an Int32.
141
+ * @param a - The base integer
142
+ * @param b - The exponent integer
143
+ * @returns `a ** b` as an `Int32`
133
144
  */
134
145
  pow,
135
146
 
136
147
  /**
137
- * Adds two Int32 values.
148
+ * Adds two integers, returning `a + b` as an `Int32`.
138
149
  *
139
- * @param a The first Int32.
140
- * @param b The second Int32.
141
- * @returns `a + b` clamped to [-2147483648, 2147483647] as an Int32.
150
+ * @param a - The first integer
151
+ * @param b - The second integer
152
+ * @returns The sum of `a` and `b` as an `Int32`
142
153
  */
143
154
  add,
144
155
 
145
156
  /**
146
- * Subtracts one Int32 from another.
157
+ * Subtracts two integers, returning `a - b` as an `Int32`.
147
158
  *
148
- * @param a The minuend Int32.
149
- * @param b The subtrahend Int32.
150
- * @returns `a - b` clamped to [-2147483648, 2147483647] as an Int32.
159
+ * @param a - The first integer
160
+ * @param b - The second integer
161
+ * @returns The difference of `a` and `b` as an `Int32`
151
162
  */
152
163
  sub,
153
164
 
154
165
  /**
155
- * Multiplies two Int32 values.
166
+ * Multiplies two integers, returning `a * b` as an `Int32`.
156
167
  *
157
- * @param a The first Int32.
158
- * @param b The second Int32.
159
- * @returns `a * b` clamped to [-2147483648, 2147483647] as an Int32.
168
+ * @param a - The first integer
169
+ * @param b - The second integer
170
+ * @returns The product of `a` and `b` as an `Int32`
160
171
  */
161
172
  mul,
162
173
 
163
174
  /**
164
- * Divides one Int32 by another using floor division.
175
+ * Divides two integers using floor division (`⌊a / b⌋`): the result is `a /
176
+ * b` rounded toward negative infinity, as an `Int32`.
165
177
  *
166
- * @param a The dividend Int32.
167
- * @param b The divisor Int32.
168
- * @returns `⌊a / b⌋` clamped to [-2147483648, 2147483647] as an Int32.
178
+ * @param a - The dividend
179
+ * @param b - The divisor (must be non-zero)
180
+ * @returns The floored quotient as an `Int32`
169
181
  */
170
182
  div,
171
183
  } as const;