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
@@ -1,19 +1,24 @@
1
1
  import { type Int32 as TtfImported_Int32 } from 'ts-type-forge';
2
2
  export type Int32 = TtfImported_Int32;
3
3
  /**
4
- * Checks if a number is an Int32 (32-bit signed integer in the range [-2^31,
5
- * 2^31)).
4
+ * Type guard that checks if a value is an integer in [-2^31, 2^31).
6
5
  *
7
- * @param value The value to check.
8
- * @returns `true` if the value is an Int32, `false` otherwise.
6
+ * Returns `true` for an integer in [-2^31, 2^31) — a value with no fractional
7
+ * component.
8
+ *
9
+ * @param value - The value to check
10
+ * @returns `true` if the value is an integer in [-2^31, 2^31), `false` otherwise
9
11
  */
10
12
  export declare const isInt32: (a: number) => a is TtfImported_Int32;
11
13
  /**
12
- * Casts a number to an Int32 type.
14
+ * Casts a `number` to the `Int32` branded type.
15
+ *
16
+ * Validates that the value is an integer in [-2^31, 2^31) and returns it with
17
+ * the `Int32` brand. Throws a `TypeError` otherwise.
13
18
  *
14
- * @param value The value to cast.
15
- * @returns The value as an Int32 type.
16
- * @throws {TypeError} If the value is not an integer in [-2^31, 2^31).
19
+ * @param value - The value to cast
20
+ * @returns The value as an `Int32`
21
+ * @throws {TypeError} If the value is not an integer in [-2^31, 2^31)
17
22
  */
18
23
  export declare const asInt32: <N extends number>(x: N) => number & {
19
24
  readonly "< 2^31": true;
@@ -28,107 +33,114 @@ export declare const asInt32: <N extends number>(x: N) => number & {
28
33
  'TSTypeForgeInternals--edd2f9ce-7ca5-45b0-9d1a-bd61b9b5d9c3': unknown;
29
34
  }> & N;
30
35
  /**
31
- * Namespace providing type-safe arithmetic operations for 32-bit signed
32
- * integers.
36
+ * Namespace providing type-safe operations for the `Int32` branded type.
33
37
  *
34
- * All operations automatically clamp results to the valid Int32 range
35
- * [-2147483648, 2147483647]. This ensures that all arithmetic maintains the
36
- * 32-bit signed integer constraint, preventing overflow.
38
+ * The `Int32` type represents an integer in [-2^31, 2^31). Division (`div`)
39
+ * uses floor division.
37
40
  */
38
41
  export declare const Int32: {
39
42
  /**
40
- * Type guard to check if a value is an Int32.
43
+ * Type guard that checks if a value is an integer in [-2^31, 2^31).
41
44
  *
42
- * @param value The value to check.
43
- * @returns `true` if the value is a 32-bit signed integer, `false` otherwise.
45
+ * @param value - The value to check
46
+ * @returns `true` if the value is an integer in [-2^31, 2^31), `false` otherwise
47
+ * @see {@link isInt32} for usage examples
44
48
  */
45
49
  readonly is: (a: number) => a is TtfImported_Int32;
46
50
  /**
47
- * The minimum value for a 32-bit signed integer.
48
- *
49
- * @readonly
51
+ * The smallest value representable as `Int32` (the lower saturation target of
52
+ * `fromNumber`).
50
53
  */
51
54
  readonly MIN_VALUE: number;
52
55
  /**
53
- * The maximum value for a 32-bit signed integer.
54
- *
55
- * @readonly
56
+ * The largest value representable as `Int32` (the upper saturation target of
57
+ * `fromNumber`).
56
58
  */
57
59
  readonly MAX_VALUE: number;
58
60
  /**
59
- * Returns the absolute value of a 32-bit signed integer.
61
+ * Returns the absolute value of an integer in [-2^31, 2^31).
60
62
  *
61
- * @param a The Int32 value.
62
- * @returns The absolute value as an Int32, clamped to valid range.
63
+ * The result is non-negative and keeps the `Int32` brand.
64
+ *
65
+ * @param a - The integer value
66
+ * @returns The absolute value as a non-negative `Int32`
63
67
  */
64
68
  readonly abs: (x: import("ts-type-forge").WithSmallInt<TtfImported_Int32>) => import("ts-type-forge").IntersectBrand<TtfImported_Int32, import("ts-type-forge").NonNegativeNumber>;
65
69
  /**
66
- * Returns the smaller of two Int32 values.
70
+ * Returns the smallest of the given integers.
67
71
  *
68
- * @param a The first Int32.
69
- * @param b The second Int32.
70
- * @returns The minimum value as an Int32.
72
+ * @param values - The integers to compare (at least one required)
73
+ * @returns The smallest value as an `Int32`
71
74
  */
72
75
  readonly min: (...values: readonly import("ts-type-forge").WithSmallInt<TtfImported_Int32>[]) => TtfImported_Int32;
73
76
  /**
74
- * Returns the larger of two Int32 values.
77
+ * Returns the largest of the given integers.
75
78
  *
76
- * @param a The first Int32.
77
- * @param b The second Int32.
78
- * @returns The maximum value as an Int32.
79
+ * @param values - The integers to compare (at least one required)
80
+ * @returns The largest value as an `Int32`
79
81
  */
80
82
  readonly max: (...values: readonly import("ts-type-forge").WithSmallInt<TtfImported_Int32>[]) => TtfImported_Int32;
81
83
  /**
82
- * Clamps a number to the Int32 range.
84
+ * Converts an arbitrary `number` into an `Int32`, rounding to the nearest
85
+ * integer and saturating the result into the range `[MIN_VALUE, MAX_VALUE]`.
86
+ *
87
+ * Unlike `asInt32`, this is total: out-of-range inputs are clamped to the
88
+ * nearest representable `Int32` instead of throwing.
83
89
  *
84
- * @param value The number to clamp.
85
- * @returns The value clamped to [-2147483648, 2147483647] as an Int32.
90
+ * @param value - The value to convert
91
+ * @returns The value as an `Int32`
86
92
  */
87
- readonly clamp: (x: number) => TtfImported_Int32;
93
+ readonly fromNumber: (x: number) => TtfImported_Int32;
88
94
  /**
89
- * Generates a random Int32 value within the valid range.
95
+ * Generates a random `Int32` within the given range.
96
+ *
97
+ * The range is inclusive on both ends.
90
98
  *
91
- * @returns A random Int32 between MIN_VALUE and MAX_VALUE.
99
+ * @param min - The minimum value (inclusive)
100
+ * @param max - The maximum value (inclusive)
101
+ * @returns A random `Int32` in `[min, max]`
92
102
  */
93
103
  readonly random: (min?: import("ts-type-forge").WithSmallInt<TtfImported_Int32> | undefined, max?: import("ts-type-forge").WithSmallInt<TtfImported_Int32> | undefined) => TtfImported_Int32;
94
104
  /**
95
- * Raises an Int32 to the power of another Int32.
105
+ * Raises `a` to the power `b`, returning `a ** b` as an `Int32` (floored to
106
+ * an integer).
96
107
  *
97
- * @param a The base Int32.
98
- * @param b The exponent Int32.
99
- * @returns `a ** b` clamped to [-2147483648, 2147483647] as an Int32.
108
+ * @param a - The base integer
109
+ * @param b - The exponent integer
110
+ * @returns `a ** b` as an `Int32`
100
111
  */
101
112
  readonly pow: (x: import("ts-type-forge").WithSmallInt<TtfImported_Int32>, y: import("ts-type-forge").WithSmallInt<TtfImported_Int32>) => TtfImported_Int32;
102
113
  /**
103
- * Adds two Int32 values.
114
+ * Adds two integers, returning `a + b` as an `Int32`.
104
115
  *
105
- * @param a The first Int32.
106
- * @param b The second Int32.
107
- * @returns `a + b` clamped to [-2147483648, 2147483647] as an Int32.
116
+ * @param a - The first integer
117
+ * @param b - The second integer
118
+ * @returns The sum of `a` and `b` as an `Int32`
108
119
  */
109
120
  readonly add: (x: import("ts-type-forge").WithSmallInt<TtfImported_Int32>, y: import("ts-type-forge").WithSmallInt<TtfImported_Int32>) => TtfImported_Int32;
110
121
  /**
111
- * Subtracts one Int32 from another.
122
+ * Subtracts two integers, returning `a - b` as an `Int32`.
112
123
  *
113
- * @param a The minuend Int32.
114
- * @param b The subtrahend Int32.
115
- * @returns `a - b` clamped to [-2147483648, 2147483647] as an Int32.
124
+ * @param a - The first integer
125
+ * @param b - The second integer
126
+ * @returns The difference of `a` and `b` as an `Int32`
116
127
  */
117
128
  readonly sub: (x: import("ts-type-forge").WithSmallInt<TtfImported_Int32>, y: import("ts-type-forge").WithSmallInt<TtfImported_Int32>) => TtfImported_Int32;
118
129
  /**
119
- * Multiplies two Int32 values.
130
+ * Multiplies two integers, returning `a * b` as an `Int32`.
120
131
  *
121
- * @param a The first Int32.
122
- * @param b The second Int32.
123
- * @returns `a * b` clamped to [-2147483648, 2147483647] as an Int32.
132
+ * @param a - The first integer
133
+ * @param b - The second integer
134
+ * @returns The product of `a` and `b` as an `Int32`
124
135
  */
125
136
  readonly mul: (x: import("ts-type-forge").WithSmallInt<TtfImported_Int32>, y: import("ts-type-forge").WithSmallInt<TtfImported_Int32>) => TtfImported_Int32;
126
137
  /**
127
- * Divides one Int32 by another using floor division.
138
+ * Divides two integers using floor division (`⌊a / b⌋`): the result is `a /
139
+ * b` rounded toward negative infinity, as an `Int32`.
128
140
  *
129
- * @param a The dividend Int32.
130
- * @param b The divisor Int32.
131
- * @returns `⌊a / b⌋` clamped to [-2147483648, 2147483647] as an Int32.
141
+ * @param a - The dividend
142
+ * @param b - The divisor (must be non-zero)
143
+ * @returns The floored quotient as an `Int32`
132
144
  */
133
145
  readonly div: (x: import("ts-type-forge").WithSmallInt<TtfImported_Int32>, y: -40 | -39 | -38 | -37 | -36 | -35 | -34 | -33 | -32 | -31 | -30 | -29 | -28 | -27 | -26 | -25 | -24 | -23 | -22 | -21 | -20 | -19 | -18 | -17 | -16 | -15 | -14 | -13 | -12 | -11 | -10 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | import("ts-type-forge").NormalizeBrandUnion<number & {
134
146
  readonly "!=0": true;
@@ -1 +1 @@
1
- {"version":3,"file":"int32.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/int32.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,IAAI,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAIhE,MAAM,MAAM,KAAK,GAAG,iBAAiB,CAAC;AAgCtC;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,uCAAK,CAAC;AAE1B;;;;;;GAMG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;MAAW,CAAC;AAEhC;;;;;;;GAOG;AACH,eAAO,MAAM,KAAK;IAChB;;;;;OAKG;;IAGH;;;;OAIG;;IAGH;;;;OAIG;;IAGH;;;;;OAKG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;OAKG;;IAGH;;;;OAIG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;;;;;;;;;;;;;CAEK,CAAC"}
1
+ {"version":3,"file":"int32.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/int32.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,IAAI,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAIhE,MAAM,MAAM,KAAK,GAAG,iBAAiB,CAAC;AAgCtC;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,uCAAK,CAAC;AAE1B;;;;;;;;;GASG;AACH,eAAO,MAAM,OAAO;;;;;;;;;;;MAAW,CAAC;AAEhC;;;;;GAKG;AACH,eAAO,MAAM,KAAK;IAChB;;;;;;OAMG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;;;;;OAOG;;IAGH;;;;;OAKG;;IAGH;;;;;OAKG;;IAGH;;;;;;;;;OASG;;IAGH;;;;;;;;OAQG;;IAGH;;;;;;;OAOG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;;;OAOG;;;;;;;;;;;;;;CAEK,CAAC"}
@@ -7,8 +7,8 @@ const {
7
7
  abs,
8
8
  add,
9
9
  castType,
10
- clamp,
11
10
  div,
11
+ fromNumber,
12
12
  is,
13
13
  max: max_,
14
14
  min: min_,
@@ -26,98 +26,107 @@ const isInt32 = is;
26
26
  const asInt32 = castType;
27
27
  const Int32 = {
28
28
  /**
29
- * Type guard to check if a value is an Int32.
29
+ * Type guard that checks if a value is an integer in [-2^31, 2^31).
30
30
  *
31
- * @param value The value to check.
32
- * @returns `true` if the value is a 32-bit signed integer, `false` otherwise.
31
+ * @param value - The value to check
32
+ * @returns `true` if the value is an integer in [-2^31, 2^31), `false` otherwise
33
+ * @see {@link isInt32} for usage examples
33
34
  */
34
35
  is,
35
36
  /**
36
- * The minimum value for a 32-bit signed integer.
37
- *
38
- * @readonly
37
+ * The smallest value representable as `Int32` (the lower saturation target of
38
+ * `fromNumber`).
39
39
  */
40
40
  MIN_VALUE,
41
41
  /**
42
- * The maximum value for a 32-bit signed integer.
43
- *
44
- * @readonly
42
+ * The largest value representable as `Int32` (the upper saturation target of
43
+ * `fromNumber`).
45
44
  */
46
45
  MAX_VALUE,
47
46
  /**
48
- * Returns the absolute value of a 32-bit signed integer.
47
+ * Returns the absolute value of an integer in [-2^31, 2^31).
48
+ *
49
+ * The result is non-negative and keeps the `Int32` brand.
49
50
  *
50
- * @param a The Int32 value.
51
- * @returns The absolute value as an Int32, clamped to valid range.
51
+ * @param a - The integer value
52
+ * @returns The absolute value as a non-negative `Int32`
52
53
  */
53
54
  abs,
54
55
  /**
55
- * Returns the smaller of two Int32 values.
56
+ * Returns the smallest of the given integers.
56
57
  *
57
- * @param a The first Int32.
58
- * @param b The second Int32.
59
- * @returns The minimum value as an Int32.
58
+ * @param values - The integers to compare (at least one required)
59
+ * @returns The smallest value as an `Int32`
60
60
  */
61
61
  min: min_,
62
62
  /**
63
- * Returns the larger of two Int32 values.
63
+ * Returns the largest of the given integers.
64
64
  *
65
- * @param a The first Int32.
66
- * @param b The second Int32.
67
- * @returns The maximum value as an Int32.
65
+ * @param values - The integers to compare (at least one required)
66
+ * @returns The largest value as an `Int32`
68
67
  */
69
68
  max: max_,
70
69
  /**
71
- * Clamps a number to the Int32 range.
70
+ * Converts an arbitrary `number` into an `Int32`, rounding to the nearest
71
+ * integer and saturating the result into the range `[MIN_VALUE, MAX_VALUE]`.
72
72
  *
73
- * @param value The number to clamp.
74
- * @returns The value clamped to [-2147483648, 2147483647] as an Int32.
73
+ * Unlike `asInt32`, this is total: out-of-range inputs are clamped to the
74
+ * nearest representable `Int32` instead of throwing.
75
+ *
76
+ * @param value - The value to convert
77
+ * @returns The value as an `Int32`
75
78
  */
76
- clamp,
79
+ fromNumber,
77
80
  /**
78
- * Generates a random Int32 value within the valid range.
81
+ * Generates a random `Int32` within the given range.
82
+ *
83
+ * The range is inclusive on both ends.
79
84
  *
80
- * @returns A random Int32 between MIN_VALUE and MAX_VALUE.
85
+ * @param min - The minimum value (inclusive)
86
+ * @param max - The maximum value (inclusive)
87
+ * @returns A random `Int32` in `[min, max]`
81
88
  */
82
89
  random,
83
90
  /**
84
- * Raises an Int32 to the power of another Int32.
91
+ * Raises `a` to the power `b`, returning `a ** b` as an `Int32` (floored to
92
+ * an integer).
85
93
  *
86
- * @param a The base Int32.
87
- * @param b The exponent Int32.
88
- * @returns `a ** b` clamped to [-2147483648, 2147483647] as an Int32.
94
+ * @param a - The base integer
95
+ * @param b - The exponent integer
96
+ * @returns `a ** b` as an `Int32`
89
97
  */
90
98
  pow,
91
99
  /**
92
- * Adds two Int32 values.
100
+ * Adds two integers, returning `a + b` as an `Int32`.
93
101
  *
94
- * @param a The first Int32.
95
- * @param b The second Int32.
96
- * @returns `a + b` clamped to [-2147483648, 2147483647] as an Int32.
102
+ * @param a - The first integer
103
+ * @param b - The second integer
104
+ * @returns The sum of `a` and `b` as an `Int32`
97
105
  */
98
106
  add,
99
107
  /**
100
- * Subtracts one Int32 from another.
108
+ * Subtracts two integers, returning `a - b` as an `Int32`.
101
109
  *
102
- * @param a The minuend Int32.
103
- * @param b The subtrahend Int32.
104
- * @returns `a - b` clamped to [-2147483648, 2147483647] as an Int32.
110
+ * @param a - The first integer
111
+ * @param b - The second integer
112
+ * @returns The difference of `a` and `b` as an `Int32`
105
113
  */
106
114
  sub,
107
115
  /**
108
- * Multiplies two Int32 values.
116
+ * Multiplies two integers, returning `a * b` as an `Int32`.
109
117
  *
110
- * @param a The first Int32.
111
- * @param b The second Int32.
112
- * @returns `a * b` clamped to [-2147483648, 2147483647] as an Int32.
118
+ * @param a - The first integer
119
+ * @param b - The second integer
120
+ * @returns The product of `a` and `b` as an `Int32`
113
121
  */
114
122
  mul,
115
123
  /**
116
- * Divides one Int32 by another using floor division.
124
+ * Divides two integers using floor division (`⌊a / b⌋`): the result is `a /
125
+ * b` rounded toward negative infinity, as an `Int32`.
117
126
  *
118
- * @param a The dividend Int32.
119
- * @param b The divisor Int32.
120
- * @returns `⌊a / b⌋` clamped to [-2147483648, 2147483647] as an Int32.
127
+ * @param a - The dividend
128
+ * @param b - The divisor (must be non-zero)
129
+ * @returns The floored quotient as an `Int32`
121
130
  */
122
131
  div
123
132
  };
@@ -1 +1 @@
1
- {"version":3,"file":"int32.mjs","sources":["../../../src/number/branded-types/int32.mts"],"sourcesContent":["import { type Int32 as TtfImported_Int32 } from 'ts-type-forge';\nimport { expectType } from '../../expect-type.mjs';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type Int32 = TtfImported_Int32;\n\ntype ElementType = Int32;\n\nconst typeNameInMessage = 'an integer in [-2^31, 2^31)';\n\nconst {\n MAX_VALUE,\n MIN_VALUE,\n abs,\n add,\n castType,\n clamp,\n div,\n is,\n max: max_,\n min: min_,\n mul,\n pow,\n random,\n sub,\n} = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<\n ElementType,\n number,\n number\n>({\n integerOrSafeInteger: 'SafeInteger',\n MIN_VALUE: -(2 ** 31),\n MAX_VALUE: 2 ** 31 - 1,\n typeNameInMessage,\n} as const);\n\n/**\n * Checks if a number is an Int32 (32-bit signed integer in the range [-2^31,\n * 2^31)).\n *\n * @param value The value to check.\n * @returns `true` if the value is an Int32, `false` otherwise.\n */\nexport const isInt32 = is;\n\n/**\n * Casts a number to an Int32 type.\n *\n * @param value The value to cast.\n * @returns The value as an Int32 type.\n * @throws {TypeError} If the value is not an integer in [-2^31, 2^31).\n */\nexport const asInt32 = castType;\n\n/**\n * Namespace providing type-safe arithmetic operations for 32-bit signed\n * integers.\n *\n * All operations automatically clamp results to the valid Int32 range\n * [-2147483648, 2147483647]. This ensures that all arithmetic maintains the\n * 32-bit signed integer constraint, preventing overflow.\n */\nexport const Int32 = {\n /**\n * Type guard to check if a value is an Int32.\n *\n * @param value The value to check.\n * @returns `true` if the value is a 32-bit signed integer, `false` otherwise.\n */\n is,\n\n /**\n * The minimum value for a 32-bit signed integer.\n *\n * @readonly\n */\n MIN_VALUE,\n\n /**\n * The maximum value for a 32-bit signed integer.\n *\n * @readonly\n */\n MAX_VALUE,\n\n /**\n * Returns the absolute value of a 32-bit signed integer.\n *\n * @param a The Int32 value.\n * @returns The absolute value as an Int32, clamped to valid range.\n */\n abs,\n\n /**\n * Returns the smaller of two Int32 values.\n *\n * @param a The first Int32.\n * @param b The second Int32.\n * @returns The minimum value as an Int32.\n */\n min: min_,\n\n /**\n * Returns the larger of two Int32 values.\n *\n * @param a The first Int32.\n * @param b The second Int32.\n * @returns The maximum value as an Int32.\n */\n max: max_,\n\n /**\n * Clamps a number to the Int32 range.\n *\n * @param value The number to clamp.\n * @returns The value clamped to [-2147483648, 2147483647] as an Int32.\n */\n clamp,\n\n /**\n * Generates a random Int32 value within the valid range.\n *\n * @returns A random Int32 between MIN_VALUE and MAX_VALUE.\n */\n random,\n\n /**\n * Raises an Int32 to the power of another Int32.\n *\n * @param a The base Int32.\n * @param b The exponent Int32.\n * @returns `a ** b` clamped to [-2147483648, 2147483647] as an Int32.\n */\n pow,\n\n /**\n * Adds two Int32 values.\n *\n * @param a The first Int32.\n * @param b The second Int32.\n * @returns `a + b` clamped to [-2147483648, 2147483647] as an Int32.\n */\n add,\n\n /**\n * Subtracts one Int32 from another.\n *\n * @param a The minuend Int32.\n * @param b The subtrahend Int32.\n * @returns `a - b` clamped to [-2147483648, 2147483647] as an Int32.\n */\n sub,\n\n /**\n * Multiplies two Int32 values.\n *\n * @param a The first Int32.\n * @param b The second Int32.\n * @returns `a * b` clamped to [-2147483648, 2147483647] as an Int32.\n */\n mul,\n\n /**\n * Divides one Int32 by another using floor division.\n *\n * @param a The dividend Int32.\n * @param b The divisor Int32.\n * @returns `⌊a / b⌋` clamped to [-2147483648, 2147483647] as an Int32.\n */\n div,\n} as const;\n\nexpectType<\n keyof typeof Int32,\n keyof TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'range'\n >\n>('=');\n\nexpectType<\n typeof Int32,\n TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'range'\n >\n>('<=');\n"],"names":[],"mappings":";;AAQA,MAAM,iBAAA,GAAoB,6BAAA;AAE1B,MAAM;AAAA,EACJ,SAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA;AAAA,EACA,EAAA;AAAA,EACA,GAAA,EAAK,IAAA;AAAA,EACL,GAAA,EAAK,IAAA;AAAA,EACL,GAAA;AAAA,EACA,GAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,GAAI,oBAAA,CAAqB,mBAAmB,mBAAA,CAI1C;AAAA,EACA,oBAAA,EAAsB,aAAA;AAAA,EACtB,SAAA,EAAW,WAAO;AAAA,EAClB,SAAA,EAAW,KAAK,EAAA,GAAK,CAAA;AAAA,EACrB;AACF,CAAU,CAAA;AASH,MAAM,OAAA,GAAU;AAShB,MAAM,OAAA,GAAU;AAUhB,MAAM,KAAA,GAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOnB,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASL,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQL,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,EASA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA;AACF;;;;"}
1
+ {"version":3,"file":"int32.mjs","sources":["../../../src/number/branded-types/int32.mts"],"sourcesContent":["import { type Int32 as TtfImported_Int32 } from 'ts-type-forge';\nimport { expectType } from '../../expect-type.mjs';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type Int32 = TtfImported_Int32;\n\ntype ElementType = Int32;\n\nconst typeNameInMessage = 'an integer in [-2^31, 2^31)';\n\nconst {\n MAX_VALUE,\n MIN_VALUE,\n abs,\n add,\n castType,\n div,\n fromNumber,\n is,\n max: max_,\n min: min_,\n mul,\n pow,\n random,\n sub,\n} = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<\n ElementType,\n number,\n number\n>({\n integerOrSafeInteger: 'SafeInteger',\n MIN_VALUE: -(2 ** 31),\n MAX_VALUE: 2 ** 31 - 1,\n typeNameInMessage,\n} as const);\n\n/**\n * Type guard that checks if a value is an integer in [-2^31, 2^31).\n *\n * Returns `true` for an integer in [-2^31, 2^31) — a value with no fractional\n * component.\n *\n * @param value - The value to check\n * @returns `true` if the value is an integer in [-2^31, 2^31), `false` otherwise\n */\nexport const isInt32 = is;\n\n/**\n * Casts a `number` to the `Int32` branded type.\n *\n * Validates that the value is an integer in [-2^31, 2^31) and returns it with\n * the `Int32` brand. Throws a `TypeError` otherwise.\n *\n * @param value - The value to cast\n * @returns The value as an `Int32`\n * @throws {TypeError} If the value is not an integer in [-2^31, 2^31)\n */\nexport const asInt32 = castType;\n\n/**\n * Namespace providing type-safe operations for the `Int32` branded type.\n *\n * The `Int32` type represents an integer in [-2^31, 2^31). Division (`div`)\n * uses floor division.\n */\nexport const Int32 = {\n /**\n * Type guard that checks if a value is an integer in [-2^31, 2^31).\n *\n * @param value - The value to check\n * @returns `true` if the value is an integer in [-2^31, 2^31), `false` otherwise\n * @see {@link isInt32} for usage examples\n */\n is,\n\n /**\n * The smallest value representable as `Int32` (the lower saturation target of\n * `fromNumber`).\n */\n MIN_VALUE,\n\n /**\n * The largest value representable as `Int32` (the upper saturation target of\n * `fromNumber`).\n */\n MAX_VALUE,\n\n /**\n * Returns the absolute value of an integer in [-2^31, 2^31).\n *\n * The result is non-negative and keeps the `Int32` brand.\n *\n * @param a - The integer value\n * @returns The absolute value as a non-negative `Int32`\n */\n abs,\n\n /**\n * Returns the smallest of the given integers.\n *\n * @param values - The integers to compare (at least one required)\n * @returns The smallest value as an `Int32`\n */\n min: min_,\n\n /**\n * Returns the largest of the given integers.\n *\n * @param values - The integers to compare (at least one required)\n * @returns The largest value as an `Int32`\n */\n max: max_,\n\n /**\n * Converts an arbitrary `number` into an `Int32`, rounding to the nearest\n * integer and saturating the result into the range `[MIN_VALUE, MAX_VALUE]`.\n *\n * Unlike `asInt32`, this is total: out-of-range inputs are clamped to the\n * nearest representable `Int32` instead of throwing.\n *\n * @param value - The value to convert\n * @returns The value as an `Int32`\n */\n fromNumber,\n\n /**\n * Generates a random `Int32` 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 `Int32` in `[min, max]`\n */\n random,\n\n /**\n * Raises `a` to the power `b`, returning `a ** b` as an `Int32` (floored to\n * an integer).\n *\n * @param a - The base integer\n * @param b - The exponent integer\n * @returns `a ** b` as an `Int32`\n */\n pow,\n\n /**\n * Adds two integers, returning `a + b` as an `Int32`.\n *\n * @param a - The first integer\n * @param b - The second integer\n * @returns The sum of `a` and `b` as an `Int32`\n */\n add,\n\n /**\n * Subtracts two integers, returning `a - b` as an `Int32`.\n *\n * @param a - The first integer\n * @param b - The second integer\n * @returns The difference of `a` and `b` as an `Int32`\n */\n sub,\n\n /**\n * Multiplies two integers, returning `a * b` as an `Int32`.\n *\n * @param a - The first integer\n * @param b - The second integer\n * @returns The product of `a` and `b` as an `Int32`\n */\n mul,\n\n /**\n * Divides two integers using floor division (`⌊a / b⌋`): the result is `a /\n * b` rounded toward negative infinity, as an `Int32`.\n *\n * @param a - The dividend\n * @param b - The divisor (must be non-zero)\n * @returns The floored quotient as an `Int32`\n */\n div,\n} as const;\n\nexpectType<\n keyof typeof Int32,\n keyof TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'range'\n >\n>('=');\n\nexpectType<\n typeof Int32,\n TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'range'\n >\n>('<=');\n"],"names":[],"mappings":";;AAQA,MAAM,iBAAA,GAAoB,6BAAA;AAE1B,MAAM;AAAA,EACJ,SAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,UAAA;AAAA,EACA,EAAA;AAAA,EACA,GAAA,EAAK,IAAA;AAAA,EACL,GAAA,EAAK,IAAA;AAAA,EACL,GAAA;AAAA,EACA,GAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,GAAI,oBAAA,CAAqB,mBAAmB,mBAAA,CAI1C;AAAA,EACA,oBAAA,EAAsB,aAAA;AAAA,EACtB,SAAA,EAAW,WAAO;AAAA,EAClB,SAAA,EAAW,KAAK,EAAA,GAAK,CAAA;AAAA,EACrB;AACF,CAAU,CAAA;AAWH,MAAM,OAAA,GAAU;AAYhB,MAAM,OAAA,GAAU;AAQhB,MAAM,KAAA,GAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQnB,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQL,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYL,UAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,GAAA;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,EAUA;AACF;;;;"}
@@ -4,18 +4,24 @@ import { PositiveFiniteNumber } from './positive-finite-number.mjs';
4
4
  export type NegativeFiniteNumber = TtfImported_NegativeFiniteNumber;
5
5
  type ElementType = NegativeFiniteNumber;
6
6
  /**
7
- * Checks if a number is a NegativeFiniteNumber (a finite number `< 0`).
7
+ * Type guard that checks if a value is a negative finite number.
8
8
  *
9
- * @param value The value to check.
10
- * @returns `true` if the value is a NegativeFiniteNumber, `false` otherwise.
9
+ * Returns `true` only for a finite value — never `NaN`, `Infinity`, or
10
+ * `-Infinity`.
11
+ *
12
+ * @param value - The value to check
13
+ * @returns `true` if the value is a negative finite number, `false` otherwise
11
14
  */
12
15
  export declare const isNegativeFiniteNumber: (a: number) => a is TtfImported_NegativeFiniteNumber;
13
16
  /**
14
- * Casts a number to a NegativeFiniteNumber type.
17
+ * Casts a `number` to the `NegativeFiniteNumber` branded type.
18
+ *
19
+ * Validates that the value is a negative finite number and returns it with the
20
+ * `NegativeFiniteNumber` brand. Throws a `TypeError` otherwise.
15
21
  *
16
- * @param value The value to cast.
17
- * @returns The value as a NegativeFiniteNumber type.
18
- * @throws {TypeError} If the value is not a negative finite number.
22
+ * @param value - The value to cast
23
+ * @returns The value as a `NegativeFiniteNumber`
24
+ * @throws {TypeError} If the value is not a negative finite number
19
25
  */
20
26
  export declare const asNegativeFiniteNumber: <N extends number>(x: N) => number & {
21
27
  readonly "!=0": true;
@@ -31,111 +37,121 @@ export declare const asNegativeFiniteNumber: <N extends number>(x: N) => number
31
37
  'TSTypeForgeInternals--edd2f9ce-7ca5-45b0-9d1a-bd61b9b5d9c3': unknown;
32
38
  }> & N;
33
39
  /**
34
- * Namespace providing type-safe arithmetic operations for negative finite
35
- * numbers.
40
+ * Namespace providing type-safe operations for the `NegativeFiniteNumber`
41
+ * branded type.
36
42
  *
37
- * All operations keep results finite (excluding NaN and Infinity). Operations
38
- * that stay within the negative finite numbers clamp their results to the valid
39
- * range, while operations whose result leaves the set (`mul`, `div`, `abs`) are
40
- * typed to reflect the actual sign of the result.
43
+ * The `NegativeFiniteNumber` type represents a negative finite number.
41
44
  */
42
45
  export declare const NegativeFiniteNumber: {
43
46
  /**
44
- * Type guard to check if a value is a NegativeFiniteNumber.
47
+ * Type guard that checks if a value is a negative finite number.
45
48
  *
46
- * @param value The value to check.
47
- * @returns `true` if the value is a negative finite number, `false`
48
- * otherwise.
49
+ * @param value - The value to check
50
+ * @returns `true` if the value is a negative finite number, `false` otherwise
51
+ * @see {@link isNegativeFiniteNumber} for usage examples
49
52
  */
50
53
  readonly is: (a: number) => a is TtfImported_NegativeFiniteNumber;
51
54
  /**
52
- * The maximum value for a negative finite number.
53
- *
54
- * @readonly
55
+ * The largest value representable as `NegativeFiniteNumber` (the upper
56
+ * saturation target of `fromNumber`). The domain is open at `0` (excluded),
57
+ * so this is `-Number.MIN_VALUE` — the negative double closest to `0` —
58
+ * rather than `0`.
55
59
  */
56
60
  readonly MAX_VALUE: number;
57
61
  /**
58
62
  * Returns the absolute value of a negative finite number.
59
63
  *
60
- * @param a The negative finite number.
61
- * @returns The absolute value as a PositiveFiniteNumber.
64
+ * The result is non-negative and keeps the `NegativeFiniteNumber` brand.
65
+ *
66
+ * @param a - The negative finite number value
67
+ * @returns The absolute value as a non-negative `NegativeFiniteNumber`
62
68
  */
63
69
  readonly abs: (x: ElementType) => PositiveFiniteNumber;
64
70
  /**
65
- * Returns the smaller of two NegativeFiniteNumber values.
71
+ * Returns the smallest of the given negative finite numbers.
66
72
  *
67
- * @param a The first NegativeFiniteNumber.
68
- * @param b The second NegativeFiniteNumber.
69
- * @returns The minimum value as a NegativeFiniteNumber.
73
+ * @param values - The negative finite numbers to compare (at least one required)
74
+ * @returns The smallest value as a `NegativeFiniteNumber`
70
75
  */
71
76
  readonly min: (...values: readonly TtfImported_NegativeFiniteNumber[]) => TtfImported_NegativeFiniteNumber;
72
77
  /**
73
- * Returns the larger of two NegativeFiniteNumber values.
78
+ * Returns the largest of the given negative finite numbers.
74
79
  *
75
- * @param a The first NegativeFiniteNumber.
76
- * @param b The second NegativeFiniteNumber.
77
- * @returns The maximum value as a NegativeFiniteNumber.
80
+ * @param values - The negative finite numbers to compare (at least one required)
81
+ * @returns The largest value as a `NegativeFiniteNumber`
78
82
  */
79
83
  readonly max: (...values: readonly TtfImported_NegativeFiniteNumber[]) => TtfImported_NegativeFiniteNumber;
80
84
  /**
81
- * Clamps a number to the negative finite range.
85
+ * Converts an arbitrary `number` into a `NegativeFiniteNumber`, saturating it
86
+ * into the range `[MIN_VALUE, MAX_VALUE]`.
82
87
  *
83
- * @param value The number to clamp.
84
- * @returns The value clamped to `(-∞, 0)` as a NegativeFiniteNumber.
88
+ * Unlike `asNegativeFiniteNumber`, this is total: out-of-range inputs are
89
+ * clamped to the nearest representable `NegativeFiniteNumber` instead of
90
+ * throwing.
91
+ *
92
+ * @param value - The value to convert
93
+ * @returns The value as a `NegativeFiniteNumber`
85
94
  */
86
- readonly clamp: (x: number) => TtfImported_NegativeFiniteNumber;
95
+ readonly fromNumber: (x: number) => TtfImported_NegativeFiniteNumber;
87
96
  /**
88
- * Rounds down a NegativeFiniteNumber to the nearest integer.
97
+ * Returns the greatest integer less than or equal to a negative finite
98
+ * number.
89
99
  *
90
- * @param x The NegativeFiniteNumber to round down.
91
- * @returns The floor value as a NegativeInt (always `<= -1`).
100
+ * @param a - The negative finite number value
101
+ * @returns The floored value as an integer
92
102
  */
93
103
  readonly floor: (x: ElementType) => TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>;
94
104
  /**
95
- * Rounds up a NegativeFiniteNumber to the nearest integer.
105
+ * Returns the smallest integer greater than or equal to a negative finite
106
+ * number.
96
107
  *
97
- * @param x The NegativeFiniteNumber to round up.
98
- * @returns The ceiling value as a NonPositiveInt (can be 0).
108
+ * @param a - The negative finite number value
109
+ * @returns The ceiled value as an integer
99
110
  */
100
111
  readonly ceil: (x: ElementType) => TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>>;
101
112
  /**
102
- * Rounds a NegativeFiniteNumber to the nearest integer.
113
+ * Returns the value of a negative finite number rounded to the nearest
114
+ * integer.
103
115
  *
104
- * @param x The NegativeFiniteNumber to round.
105
- * @returns The rounded value as a NonPositiveInt (can be 0 if x > -0.5).
116
+ * @param a - The negative finite number value
117
+ * @returns The rounded value as an integer
106
118
  */
107
119
  readonly round: (x: ElementType) => TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>>;
108
120
  /**
109
- * Generates a random NegativeFiniteNumber value.
121
+ * Generates a random `NegativeFiniteNumber` within the given range.
122
+ *
123
+ * The range is inclusive on both ends.
110
124
  *
111
- * @returns A random negative finite number.
125
+ * @param min - The minimum value (inclusive)
126
+ * @param max - The maximum value (inclusive)
127
+ * @returns A random `NegativeFiniteNumber` in `[min, max]`
112
128
  */
113
129
  readonly random: (min?: TtfImported_NegativeFiniteNumber | undefined, max?: TtfImported_NegativeFiniteNumber | undefined) => TtfImported_NegativeFiniteNumber;
114
130
  /**
115
- * Raises a NegativeFiniteNumber to the power of another NegativeFiniteNumber.
131
+ * Raises `a` to the power `b`, returning `a ** b` as a
132
+ * `NegativeFiniteNumber`.
116
133
  *
117
- * @param a The base NegativeFiniteNumber.
118
- * @param b The exponent NegativeFiniteNumber.
119
- * @returns `a ** b` clamped to `(-∞, 0)` as a NegativeFiniteNumber.
134
+ * @param a - The base negative finite number
135
+ * @param b - The exponent negative finite number
136
+ * @returns `a ** b` as a `NegativeFiniteNumber`
120
137
  */
121
138
  readonly pow: (x: TtfImported_NegativeFiniteNumber, y: TtfImported_NegativeFiniteNumber) => TtfImported_NegativeFiniteNumber;
122
139
  /**
123
- * Adds two NegativeFiniteNumber values.
140
+ * Adds two negative finite numbers, returning `a + b` as a
141
+ * `NegativeFiniteNumber`.
124
142
  *
125
- * @param a The first NegativeFiniteNumber.
126
- * @param b The second NegativeFiniteNumber.
127
- * @returns `a + b` as a NegativeFiniteNumber.
143
+ * @param a - The first negative finite number
144
+ * @param b - The second negative finite number
145
+ * @returns The sum of `a` and `b` as a `NegativeFiniteNumber`
128
146
  */
129
147
  readonly add: (x: TtfImported_NegativeFiniteNumber, y: TtfImported_NegativeFiniteNumber) => TtfImported_NegativeFiniteNumber;
130
148
  /**
131
- * Subtracts one NegativeFiniteNumber from another.
132
- *
133
- * The mathematical result can be positive, so it is clamped to the negative
134
- * finite range (maximum `-Number.MIN_VALUE`).
149
+ * Subtracts two negative finite numbers, returning `a - b` as a
150
+ * `NegativeFiniteNumber`.
135
151
  *
136
- * @param a The minuend NegativeFiniteNumber.
137
- * @param b The subtrahend NegativeFiniteNumber.
138
- * @returns `a - b` clamped to `(-∞, 0)` as a NegativeFiniteNumber.
152
+ * @param a - The first negative finite number
153
+ * @param b - The second negative finite number
154
+ * @returns The difference of `a` and `b` as a `NegativeFiniteNumber`
139
155
  */
140
156
  readonly sub: (x: TtfImported_NegativeFiniteNumber, y: TtfImported_NegativeFiniteNumber) => TtfImported_NegativeFiniteNumber;
141
157
  };
@@ -1 +1 @@
1
- {"version":3,"file":"negative-finite-number.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/negative-finite-number.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,oBAAoB,IAAI,gCAAgC,EAAE,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE,MAAM,MAAM,oBAAoB,GAAG,gCAAgC,CAAC;AAEpE,KAAK,WAAW,GAAG,oBAAoB,CAAC;AAkExC;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,sDAAK,CAAC;AAEzC;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;MAAW,CAAC;AAE/C;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB;IAC/B;;;;;;OAMG;;IAGH;;;;OAIG;;IAGH;;;;;OAKG;sBA/EW,WAAW,KAAG,oBAAoB;IAkFhD;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;OAKG;;IAGH;;;;;OAKG;wBA7GA,WAAW,KACb,oBAAoB,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC;IA+G3D;;;;;OAKG;uBA/GA,WAAW,KACb,oBAAoB,CAAC,kBAAkB,CAAC,qBAAqB,CAC9D,oBAAoB,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,CAC3D;IA+GC;;;;;OAKG;wBA7GA,WAAW,KACb,oBAAoB,CAAC,kBAAkB,CAAC,qBAAqB,CAC9D,oBAAoB,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,CAC3D;IA6GC;;;;OAIG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;;;;;OASG;;CAEK,CAAC"}
1
+ {"version":3,"file":"negative-finite-number.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/negative-finite-number.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,oBAAoB,IAAI,gCAAgC,EAAE,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEpE,MAAM,MAAM,oBAAoB,GAAG,gCAAgC,CAAC;AAEpE,KAAK,WAAW,GAAG,oBAAoB,CAAC;AAyDxC;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,sDAAK,CAAC;AAEzC;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;MAAW,CAAC;AAE/C;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB;IAC/B;;;;;;OAMG;;IAGH;;;;;OAKG;;IAGH;;;;;;;OAOG;sBArFW,WAAW,KAAG,oBAAoB;IAwFhD;;;;;OAKG;;IAGH;;;;;OAKG;;IAGH;;;;;;;;;;OAUG;;IAGH;;;;;;OAMG;wBAvHA,WAAW,KACb,oBAAoB,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC;IAyH3D;;;;;;OAMG;uBA1HA,WAAW,KACb,oBAAoB,CAAC,kBAAkB,CAAC,qBAAqB,CAC9D,oBAAoB,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,CAC3D;IA0HC;;;;;;OAMG;wBAzHA,WAAW,KACb,oBAAoB,CAAC,kBAAkB,CAAC,qBAAqB,CAC9D,oBAAoB,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,CAC3D;IAyHC;;;;;;;;OAQG;;IAGH;;;;;;;OAOG;;IAGH;;;;;;;OAOG;;IAGH;;;;;;;OAOG;;CAEK,CAAC"}