ts-data-forge 11.0.0 → 11.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/dist/number/branded-types/finite-number.d.mts +47 -61
  2. package/dist/number/branded-types/finite-number.d.mts.map +1 -1
  3. package/dist/number/branded-types/finite-number.mjs +37 -41
  4. package/dist/number/branded-types/finite-number.mjs.map +1 -1
  5. package/dist/number/branded-types/int.d.mts +40 -46
  6. package/dist/number/branded-types/int.d.mts.map +1 -1
  7. package/dist/number/branded-types/int.mjs +29 -31
  8. package/dist/number/branded-types/int.mjs.map +1 -1
  9. package/dist/number/branded-types/int16.d.mts +65 -58
  10. package/dist/number/branded-types/int16.d.mts.map +1 -1
  11. package/dist/number/branded-types/int16.mjs +49 -45
  12. package/dist/number/branded-types/int16.mjs.map +1 -1
  13. package/dist/number/branded-types/int32.d.mts +65 -58
  14. package/dist/number/branded-types/int32.d.mts.map +1 -1
  15. package/dist/number/branded-types/int32.mjs +49 -45
  16. package/dist/number/branded-types/int32.mjs.map +1 -1
  17. package/dist/number/branded-types/negative-finite-number.d.mts +68 -59
  18. package/dist/number/branded-types/negative-finite-number.d.mts.map +1 -1
  19. package/dist/number/branded-types/negative-finite-number.mjs +52 -46
  20. package/dist/number/branded-types/negative-finite-number.mjs.map +1 -1
  21. package/dist/number/branded-types/negative-int.d.mts +60 -48
  22. package/dist/number/branded-types/negative-int.d.mts.map +1 -1
  23. package/dist/number/branded-types/negative-int.mjs +40 -36
  24. package/dist/number/branded-types/negative-int.mjs.map +1 -1
  25. package/dist/number/branded-types/negative-safe-int.d.mts +57 -56
  26. package/dist/number/branded-types/negative-safe-int.d.mts.map +1 -1
  27. package/dist/number/branded-types/negative-safe-int.mjs +40 -41
  28. package/dist/number/branded-types/negative-safe-int.mjs.map +1 -1
  29. package/dist/number/branded-types/non-negative-finite-number.d.mts +74 -64
  30. package/dist/number/branded-types/non-negative-finite-number.d.mts.map +1 -1
  31. package/dist/number/branded-types/non-negative-finite-number.mjs +58 -51
  32. package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
  33. package/dist/number/branded-types/non-negative-int16.d.mts +64 -57
  34. package/dist/number/branded-types/non-negative-int16.d.mts.map +1 -1
  35. package/dist/number/branded-types/non-negative-int16.mjs +47 -43
  36. package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
  37. package/dist/number/branded-types/non-negative-int32.d.mts +64 -58
  38. package/dist/number/branded-types/non-negative-int32.d.mts.map +1 -1
  39. package/dist/number/branded-types/non-negative-int32.mjs +47 -44
  40. package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
  41. package/dist/number/branded-types/non-positive-finite-number.d.mts +64 -54
  42. package/dist/number/branded-types/non-positive-finite-number.d.mts.map +1 -1
  43. package/dist/number/branded-types/non-positive-finite-number.mjs +48 -41
  44. package/dist/number/branded-types/non-positive-finite-number.mjs.map +1 -1
  45. package/dist/number/branded-types/non-positive-int.d.mts +41 -146
  46. package/dist/number/branded-types/non-positive-int.d.mts.map +1 -1
  47. package/dist/number/branded-types/non-positive-int.mjs +27 -107
  48. package/dist/number/branded-types/non-positive-int.mjs.map +1 -1
  49. package/dist/number/branded-types/non-positive-safe-int.d.mts +54 -53
  50. package/dist/number/branded-types/non-positive-safe-int.d.mts.map +1 -1
  51. package/dist/number/branded-types/non-positive-safe-int.mjs +37 -39
  52. package/dist/number/branded-types/non-positive-safe-int.mjs.map +1 -1
  53. package/dist/number/branded-types/non-zero-finite-number.d.mts +62 -49
  54. package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -1
  55. package/dist/number/branded-types/non-zero-finite-number.mjs +46 -37
  56. package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
  57. package/dist/number/branded-types/non-zero-int.d.mts +51 -38
  58. package/dist/number/branded-types/non-zero-int.d.mts.map +1 -1
  59. package/dist/number/branded-types/non-zero-int.mjs +31 -27
  60. package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
  61. package/dist/number/branded-types/non-zero-int16.d.mts +52 -53
  62. package/dist/number/branded-types/non-zero-int16.d.mts.map +1 -1
  63. package/dist/number/branded-types/non-zero-int16.mjs +36 -39
  64. package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
  65. package/dist/number/branded-types/non-zero-int32.d.mts +52 -54
  66. package/dist/number/branded-types/non-zero-int32.d.mts.map +1 -1
  67. package/dist/number/branded-types/non-zero-int32.mjs +36 -40
  68. package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
  69. package/dist/number/branded-types/non-zero-safe-int.d.mts +53 -54
  70. package/dist/number/branded-types/non-zero-safe-int.d.mts.map +1 -1
  71. package/dist/number/branded-types/non-zero-safe-int.mjs +36 -40
  72. package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
  73. package/dist/number/branded-types/non-zero-uint16.d.mts +52 -53
  74. package/dist/number/branded-types/non-zero-uint16.d.mts.map +1 -1
  75. package/dist/number/branded-types/non-zero-uint16.mjs +35 -39
  76. package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
  77. package/dist/number/branded-types/non-zero-uint32.d.mts +52 -53
  78. package/dist/number/branded-types/non-zero-uint32.d.mts.map +1 -1
  79. package/dist/number/branded-types/non-zero-uint32.mjs +35 -39
  80. package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
  81. package/dist/number/branded-types/positive-finite-number.d.mts +74 -63
  82. package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -1
  83. package/dist/number/branded-types/positive-finite-number.mjs +58 -50
  84. package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
  85. package/dist/number/branded-types/positive-int.d.mts +46 -68
  86. package/dist/number/branded-types/positive-int.d.mts.map +1 -1
  87. package/dist/number/branded-types/positive-int.mjs +34 -49
  88. package/dist/number/branded-types/positive-int.mjs.map +1 -1
  89. package/dist/number/branded-types/positive-int16.d.mts +61 -57
  90. package/dist/number/branded-types/positive-int16.d.mts.map +1 -1
  91. package/dist/number/branded-types/positive-int16.mjs +44 -43
  92. package/dist/number/branded-types/positive-int16.mjs.map +1 -1
  93. package/dist/number/branded-types/positive-int32.d.mts +61 -57
  94. package/dist/number/branded-types/positive-int32.d.mts.map +1 -1
  95. package/dist/number/branded-types/positive-int32.mjs +44 -43
  96. package/dist/number/branded-types/positive-int32.mjs.map +1 -1
  97. package/dist/number/branded-types/positive-safe-int.d.mts +62 -57
  98. package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
  99. package/dist/number/branded-types/positive-safe-int.mjs +45 -43
  100. package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
  101. package/dist/number/branded-types/positive-uint16.d.mts +61 -57
  102. package/dist/number/branded-types/positive-uint16.d.mts.map +1 -1
  103. package/dist/number/branded-types/positive-uint16.mjs +44 -43
  104. package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
  105. package/dist/number/branded-types/positive-uint32.d.mts +61 -58
  106. package/dist/number/branded-types/positive-uint32.d.mts.map +1 -1
  107. package/dist/number/branded-types/positive-uint32.mjs +44 -44
  108. package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
  109. package/dist/number/branded-types/safe-int.d.mts +43 -62
  110. package/dist/number/branded-types/safe-int.d.mts.map +1 -1
  111. package/dist/number/branded-types/safe-int.mjs +35 -42
  112. package/dist/number/branded-types/safe-int.mjs.map +1 -1
  113. package/dist/number/branded-types/safe-uint.d.mts +62 -57
  114. package/dist/number/branded-types/safe-uint.d.mts.map +1 -1
  115. package/dist/number/branded-types/safe-uint.mjs +46 -44
  116. package/dist/number/branded-types/safe-uint.mjs.map +1 -1
  117. package/dist/number/branded-types/uint.d.mts +63 -50
  118. package/dist/number/branded-types/uint.d.mts.map +1 -1
  119. package/dist/number/branded-types/uint.mjs +42 -39
  120. package/dist/number/branded-types/uint.mjs.map +1 -1
  121. package/dist/number/branded-types/uint16.d.mts +60 -58
  122. package/dist/number/branded-types/uint16.d.mts.map +1 -1
  123. package/dist/number/branded-types/uint16.mjs +44 -43
  124. package/dist/number/branded-types/uint16.mjs.map +1 -1
  125. package/dist/number/branded-types/uint32.d.mts +59 -55
  126. package/dist/number/branded-types/uint32.d.mts.map +1 -1
  127. package/dist/number/branded-types/uint32.mjs +42 -42
  128. package/dist/number/branded-types/uint32.mjs.map +1 -1
  129. package/dist/number/enum/int8.d.mts +56 -65
  130. package/dist/number/enum/int8.d.mts.map +1 -1
  131. package/dist/number/enum/int8.mjs +44 -43
  132. package/dist/number/enum/int8.mjs.map +1 -1
  133. package/dist/number/enum/uint8.d.mts +60 -58
  134. package/dist/number/enum/uint8.d.mts.map +1 -1
  135. package/dist/number/enum/uint8.mjs +44 -43
  136. package/dist/number/enum/uint8.mjs.map +1 -1
  137. package/package.json +2 -1
  138. package/src/number/branded-types/finite-number.mts +47 -61
  139. package/src/number/branded-types/int.mts +40 -46
  140. package/src/number/branded-types/int16.mts +65 -58
  141. package/src/number/branded-types/int32.mts +65 -58
  142. package/src/number/branded-types/negative-finite-number.mts +68 -68
  143. package/src/number/branded-types/negative-int.mts +60 -57
  144. package/src/number/branded-types/negative-safe-int.mts +57 -65
  145. package/src/number/branded-types/non-negative-finite-number.mts +74 -64
  146. package/src/number/branded-types/non-negative-int16.mts +64 -57
  147. package/src/number/branded-types/non-negative-int32.mts +64 -58
  148. package/src/number/branded-types/non-positive-finite-number.mts +64 -54
  149. package/src/number/branded-types/non-positive-int.mts +41 -146
  150. package/src/number/branded-types/non-positive-safe-int.mts +54 -53
  151. package/src/number/branded-types/non-zero-finite-number.mts +62 -51
  152. package/src/number/branded-types/non-zero-int.mts +51 -38
  153. package/src/number/branded-types/non-zero-int16.mts +52 -53
  154. package/src/number/branded-types/non-zero-int32.mts +52 -54
  155. package/src/number/branded-types/non-zero-safe-int.mts +53 -54
  156. package/src/number/branded-types/non-zero-uint16.mts +52 -53
  157. package/src/number/branded-types/non-zero-uint32.mts +52 -53
  158. package/src/number/branded-types/positive-finite-number.mts +74 -63
  159. package/src/number/branded-types/positive-int.mts +46 -68
  160. package/src/number/branded-types/positive-int16.mts +61 -57
  161. package/src/number/branded-types/positive-int32.mts +61 -57
  162. package/src/number/branded-types/positive-safe-int.mts +62 -57
  163. package/src/number/branded-types/positive-uint16.mts +61 -57
  164. package/src/number/branded-types/positive-uint32.mts +61 -58
  165. package/src/number/branded-types/safe-int.mts +43 -62
  166. package/src/number/branded-types/safe-uint.mts +62 -57
  167. package/src/number/branded-types/uint.mts +63 -50
  168. package/src/number/branded-types/uint16.mts +60 -58
  169. package/src/number/branded-types/uint32.mts +59 -55
  170. package/src/number/enum/int8.mts +56 -65
  171. package/src/number/enum/uint8.mts +60 -58
@@ -39,108 +39,116 @@ const isPositiveFiniteNumber = is;
39
39
  const asPositiveFiniteNumber = castType;
40
40
  const PositiveFiniteNumber = {
41
41
  /**
42
- * Type guard to check if a value is a PositiveFiniteNumber.
42
+ * Type guard that checks if a value is a positive finite number.
43
43
  *
44
- * @param value The value to check.
45
- * @returns `true` if the value is a positive finite number, `false`
46
- * otherwise.
44
+ * @param value - The value to check
45
+ * @returns `true` if the value is a positive finite number, `false` otherwise
46
+ * @see {@link isPositiveFiniteNumber} for usage examples
47
47
  */
48
48
  is,
49
49
  /**
50
- * The minimum value for a positive finite number.
51
- *
52
- * @readonly
50
+ * The smallest value representable as `PositiveFiniteNumber`.
53
51
  */
54
52
  MIN_VALUE,
55
53
  /**
56
- * Returns the smaller of two PositiveFiniteNumber values.
54
+ * Returns the smallest of the given positive finite numbers.
57
55
  *
58
- * @param a The first PositiveFiniteNumber.
59
- * @param b The second PositiveFiniteNumber.
60
- * @returns The minimum value as a PositiveFiniteNumber.
56
+ * @param values - The positive finite numbers to compare (at least one required)
57
+ * @returns The smallest value as a `PositiveFiniteNumber`
61
58
  */
62
59
  min: min_,
63
60
  /**
64
- * Returns the larger of two PositiveFiniteNumber values.
61
+ * Returns the largest of the given positive finite numbers.
65
62
  *
66
- * @param a The first PositiveFiniteNumber.
67
- * @param b The second PositiveFiniteNumber.
68
- * @returns The maximum value as a PositiveFiniteNumber.
63
+ * @param values - The positive finite numbers to compare (at least one required)
64
+ * @returns The largest value as a `PositiveFiniteNumber`
69
65
  */
70
66
  max: max_,
71
67
  /**
72
- * Clamps a number to the positive finite range.
68
+ * Clamps a `number` into the `PositiveFiniteNumber` range `[MIN_VALUE,
69
+ * MAX_VALUE]`.
73
70
  *
74
- * @param value The number to clamp.
75
- * @returns The value clamped to (0, +∞) as a PositiveFiniteNumber.
71
+ * @param value - The value to clamp
72
+ * @returns The clamped value as a `PositiveFiniteNumber`
76
73
  */
77
74
  clamp,
78
75
  /**
79
- * Rounds down a PositiveFiniteNumber to the nearest integer.
76
+ * Returns the greatest integer less than or equal to a positive finite
77
+ * number.
80
78
  *
81
- * @param x The PositiveFiniteNumber to round down.
82
- * @returns The floor value as a Uint (can be 0).
79
+ * @param a - The positive finite number value
80
+ * @returns The floored value as an integer
83
81
  */
84
82
  floor,
85
83
  /**
86
- * Rounds up a PositiveFiniteNumber to the nearest integer.
84
+ * Returns the smallest integer greater than or equal to a positive finite
85
+ * number.
87
86
  *
88
- * @param x The PositiveFiniteNumber to round up.
89
- * @returns The ceiling value as a PositiveInt (always >= 1).
87
+ * @param a - The positive finite number value
88
+ * @returns The ceiled value as an integer
90
89
  */
91
90
  ceil,
92
91
  /**
93
- * Rounds a PositiveFiniteNumber to the nearest integer.
92
+ * Returns the value of a positive finite number rounded to the nearest
93
+ * integer.
94
94
  *
95
- * @param x The PositiveFiniteNumber to round.
96
- * @returns The rounded value as a Uint (can be 0 if x < 0.5).
95
+ * @param a - The positive finite number value
96
+ * @returns The rounded value as an integer
97
97
  */
98
98
  round,
99
99
  /**
100
- * Generates a random PositiveFiniteNumber value.
100
+ * Generates a random `PositiveFiniteNumber` within the given range.
101
+ *
102
+ * The range is inclusive on both ends.
101
103
  *
102
- * @returns A random positive finite number.
104
+ * @param min - The minimum value (inclusive)
105
+ * @param max - The maximum value (inclusive)
106
+ * @returns A random `PositiveFiniteNumber` in `[min, max]`
103
107
  */
104
108
  random,
105
109
  /**
106
- * Raises a PositiveFiniteNumber to the power of another PositiveFiniteNumber.
110
+ * Raises `a` to the power `b`, returning `a ** b` as a
111
+ * `PositiveFiniteNumber`.
107
112
  *
108
- * @param a The base PositiveFiniteNumber.
109
- * @param b The exponent PositiveFiniteNumber.
110
- * @returns `a ** b` clamped to (0, +∞) as a PositiveFiniteNumber.
113
+ * @param a - The base positive finite number
114
+ * @param b - The exponent positive finite number
115
+ * @returns `a ** b` as a `PositiveFiniteNumber`
111
116
  */
112
117
  pow,
113
118
  /**
114
- * Adds two PositiveFiniteNumber values.
119
+ * Adds two positive finite numbers, returning `a + b` as a
120
+ * `PositiveFiniteNumber`.
115
121
  *
116
- * @param a The first PositiveFiniteNumber.
117
- * @param b The second PositiveFiniteNumber.
118
- * @returns `a + b` clamped to (0, +∞) as a PositiveFiniteNumber.
122
+ * @param a - The first positive finite number
123
+ * @param b - The second positive finite number
124
+ * @returns The sum of `a` and `b` as a `PositiveFiniteNumber`
119
125
  */
120
126
  add,
121
127
  /**
122
- * Subtracts one PositiveFiniteNumber from another.
128
+ * Subtracts two positive finite numbers, returning `a - b` as a
129
+ * `PositiveFiniteNumber`.
123
130
  *
124
- * @param a The minuend PositiveFiniteNumber.
125
- * @param b The subtrahend PositiveFiniteNumber.
126
- * @returns `a - b` clamped to (0, +∞) as a PositiveFiniteNumber (minimum
127
- * MIN_VALUE).
131
+ * @param a - The first positive finite number
132
+ * @param b - The second positive finite number
133
+ * @returns The difference of `a` and `b` as a `PositiveFiniteNumber`
128
134
  */
129
135
  sub,
130
136
  /**
131
- * Multiplies two PositiveFiniteNumber values.
137
+ * Multiplies two positive finite numbers, returning `a * b` as a
138
+ * `PositiveFiniteNumber`.
132
139
  *
133
- * @param a The first PositiveFiniteNumber.
134
- * @param b The second PositiveFiniteNumber.
135
- * @returns `a * b` clamped to (0, +∞) as a PositiveFiniteNumber.
140
+ * @param a - The first positive finite number
141
+ * @param b - The second positive finite number
142
+ * @returns The product of `a` and `b` as a `PositiveFiniteNumber`
136
143
  */
137
144
  mul,
138
145
  /**
139
- * Divides one PositiveFiniteNumber by another.
146
+ * Divides two positive finite numbers, returning `a / b` as a
147
+ * `PositiveFiniteNumber`.
140
148
  *
141
- * @param a The dividend PositiveFiniteNumber.
142
- * @param b The divisor PositiveFiniteNumber.
143
- * @returns `a / b` clamped to (0, +∞) as a PositiveFiniteNumber.
149
+ * @param a - The dividend
150
+ * @param b - The divisor (must be non-zero)
151
+ * @returns `a / b` as a `PositiveFiniteNumber`
144
152
  */
145
153
  div
146
154
  };
@@ -1 +1 @@
1
- {"version":3,"file":"positive-finite-number.mjs","sources":["../../../src/number/branded-types/positive-finite-number.mts"],"sourcesContent":["import {\n type PositiveInt,\n type PositiveFiniteNumber as TtfImported_PositiveFiniteNumber,\n type Uint,\n} from 'ts-type-forge';\nimport { expectType } from '../../expect-type.mjs';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type PositiveFiniteNumber = TtfImported_PositiveFiniteNumber;\n\ntype ElementType = PositiveFiniteNumber;\n\nconst typeNameInMessage = 'a positive finite number';\n\nconst {\n MIN_VALUE,\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.operatorsForFloat<\n ElementType,\n number,\n number\n>({\n MIN_VALUE: Number.MIN_VALUE,\n MAX_VALUE: Number.MAX_VALUE,\n typeNameInMessage,\n} as const);\n\nconst floor = (\n x: ElementType,\n): TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<\n TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>\n> =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n Math.floor(\n x,\n ) as TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<\n TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>\n >;\n\nconst ceil = (\n x: ElementType,\n): TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType> =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n Math.ceil(x) as TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>;\n\nconst round = (\n x: ElementType,\n): TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<\n TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>\n> =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n Math.round(\n x,\n ) as TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<\n TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>\n >;\n\nexpectType<\n TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>,\n PositiveInt\n>('=');\n\nexpectType<\n TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<\n TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>\n >,\n Uint\n>('=');\n\n/**\n * Checks if a number is a PositiveFiniteNumber (a finite number > 0).\n *\n * @param value The value to check.\n * @returns `true` if the value is a PositiveFiniteNumber, `false` otherwise.\n */\nexport const isPositiveFiniteNumber = is;\n\n/**\n * Casts a number to a PositiveFiniteNumber type.\n *\n * @param value The value to cast.\n * @returns The value as a PositiveFiniteNumber type.\n * @throws {TypeError} If the value is not a positive finite number.\n */\nexport const asPositiveFiniteNumber = castType;\n\n/**\n * Namespace providing type-safe arithmetic operations for positive finite\n * numbers.\n *\n * All operations maintain the positive constraint by clamping non-positive\n * results to MIN_VALUE, while ensuring results remain finite (excluding NaN and\n * Infinity). This type is useful for representing quantities that must always\n * be positive, such as probabilities, magnitudes, and physical measurements.\n */\nexport const PositiveFiniteNumber = {\n /**\n * Type guard to check if a value is a PositiveFiniteNumber.\n *\n * @param value The value to check.\n * @returns `true` if the value is a positive finite number, `false`\n * otherwise.\n */\n is,\n\n /**\n * The minimum value for a positive finite number.\n *\n * @readonly\n */\n MIN_VALUE,\n\n /**\n * Returns the smaller of two PositiveFiniteNumber values.\n *\n * @param a The first PositiveFiniteNumber.\n * @param b The second PositiveFiniteNumber.\n * @returns The minimum value as a PositiveFiniteNumber.\n */\n min: min_,\n\n /**\n * Returns the larger of two PositiveFiniteNumber values.\n *\n * @param a The first PositiveFiniteNumber.\n * @param b The second PositiveFiniteNumber.\n * @returns The maximum value as a PositiveFiniteNumber.\n */\n max: max_,\n\n /**\n * Clamps a number to the positive finite range.\n *\n * @param value The number to clamp.\n * @returns The value clamped to (0, +∞) as a PositiveFiniteNumber.\n */\n clamp,\n\n /**\n * Rounds down a PositiveFiniteNumber to the nearest integer.\n *\n * @param x The PositiveFiniteNumber to round down.\n * @returns The floor value as a Uint (can be 0).\n */\n floor,\n\n /**\n * Rounds up a PositiveFiniteNumber to the nearest integer.\n *\n * @param x The PositiveFiniteNumber to round up.\n * @returns The ceiling value as a PositiveInt (always >= 1).\n */\n ceil,\n\n /**\n * Rounds a PositiveFiniteNumber to the nearest integer.\n *\n * @param x The PositiveFiniteNumber to round.\n * @returns The rounded value as a Uint (can be 0 if x < 0.5).\n */\n round,\n\n /**\n * Generates a random PositiveFiniteNumber value.\n *\n * @returns A random positive finite number.\n */\n random,\n\n /**\n * Raises a PositiveFiniteNumber to the power of another PositiveFiniteNumber.\n *\n * @param a The base PositiveFiniteNumber.\n * @param b The exponent PositiveFiniteNumber.\n * @returns `a ** b` clamped to (0, +∞) as a PositiveFiniteNumber.\n */\n pow,\n\n /**\n * Adds two PositiveFiniteNumber values.\n *\n * @param a The first PositiveFiniteNumber.\n * @param b The second PositiveFiniteNumber.\n * @returns `a + b` clamped to (0, +∞) as a PositiveFiniteNumber.\n */\n add,\n\n /**\n * Subtracts one PositiveFiniteNumber from another.\n *\n * @param a The minuend PositiveFiniteNumber.\n * @param b The subtrahend PositiveFiniteNumber.\n * @returns `a - b` clamped to (0, +∞) as a PositiveFiniteNumber (minimum\n * MIN_VALUE).\n */\n sub,\n\n /**\n * Multiplies two PositiveFiniteNumber values.\n *\n * @param a The first PositiveFiniteNumber.\n * @param b The second PositiveFiniteNumber.\n * @returns `a * b` clamped to (0, +∞) as a PositiveFiniteNumber.\n */\n mul,\n\n /**\n * Divides one PositiveFiniteNumber by another.\n *\n * @param a The dividend PositiveFiniteNumber.\n * @param b The divisor PositiveFiniteNumber.\n * @returns `a / b` clamped to (0, +∞) as a PositiveFiniteNumber.\n */\n div,\n} as const;\n\nexpectType<\n keyof typeof PositiveFiniteNumber,\n keyof TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'positive'\n >\n>('=');\n\nexpectType<\n typeof PositiveFiniteNumber,\n TsDataForgeInternals.RefinedNumberUtils.NumberClass<ElementType, 'positive'>\n>('<=');\n"],"names":[],"mappings":";;AAYA,MAAM,iBAAA,GAAoB,0BAAA;AAE1B,MAAM;AAAA,EACJ,SAAA;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,iBAAA,CAI1C;AAAA,EACA,WAAW,MAAA,CAAO,SAAA;AAAA,EAClB,WAAW,MAAA,CAAO,SAAA;AAAA,EAClB;AACF,CAAU,CAAA;AAEV,MAAM,QAAQ,CACZ,CAAA;AAAA;AAAA,EAKA,IAAA,CAAK,KAAA;AAAA,IACH;AAAA;AACF,CAAA;AAIF,MAAM,OAAO,CACX,CAAA;AAAA;AAAA,EAGA,IAAA,CAAK,KAAK,CAAC;AAAA,CAAA;AAEb,MAAM,QAAQ,CACZ,CAAA;AAAA;AAAA,EAKA,IAAA,CAAK,KAAA;AAAA,IACH;AAAA;AACF,CAAA;AAsBK,MAAM,sBAAA,GAAyB;AAS/B,MAAM,sBAAA,GAAyB;AAW/B,MAAM,oBAAA,GAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQlC,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASL,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQL,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,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":"positive-finite-number.mjs","sources":["../../../src/number/branded-types/positive-finite-number.mts"],"sourcesContent":["import {\n type PositiveInt,\n type PositiveFiniteNumber as TtfImported_PositiveFiniteNumber,\n type Uint,\n} from 'ts-type-forge';\nimport { expectType } from '../../expect-type.mjs';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type PositiveFiniteNumber = TtfImported_PositiveFiniteNumber;\n\ntype ElementType = PositiveFiniteNumber;\n\nconst typeNameInMessage = 'a positive finite number';\n\nconst {\n MIN_VALUE,\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.operatorsForFloat<\n ElementType,\n number,\n number\n>({\n MIN_VALUE: Number.MIN_VALUE,\n MAX_VALUE: Number.MAX_VALUE,\n typeNameInMessage,\n} as const);\n\nconst floor = (\n x: ElementType,\n): TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<\n TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>\n> =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n Math.floor(\n x,\n ) as TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<\n TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>\n >;\n\nconst ceil = (\n x: ElementType,\n): TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType> =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n Math.ceil(x) as TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>;\n\nconst round = (\n x: ElementType,\n): TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<\n TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>\n> =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n Math.round(\n x,\n ) as TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<\n TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>\n >;\n\nexpectType<\n TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>,\n PositiveInt\n>('=');\n\nexpectType<\n TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<\n TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>\n >,\n Uint\n>('=');\n\n/**\n * Type guard that checks if a value is a positive finite number.\n *\n * Returns `true` only for a finite value — never `NaN`, `Infinity`, or\n * `-Infinity`.\n *\n * @param value - The value to check\n * @returns `true` if the value is a positive finite number, `false` otherwise\n */\nexport const isPositiveFiniteNumber = is;\n\n/**\n * Casts a `number` to the `PositiveFiniteNumber` branded type.\n *\n * Validates that the value is a positive finite number and returns it with the\n * `PositiveFiniteNumber` brand. Throws a `TypeError` otherwise.\n *\n * @param value - The value to cast\n * @returns The value as a `PositiveFiniteNumber`\n * @throws {TypeError} If the value is not a positive finite number\n */\nexport const asPositiveFiniteNumber = castType;\n\n/**\n * Namespace providing type-safe operations for the `PositiveFiniteNumber`\n * branded type.\n *\n * The `PositiveFiniteNumber` type represents a positive finite number.\n */\nexport const PositiveFiniteNumber = {\n /**\n * Type guard that checks if a value is a positive finite number.\n *\n * @param value - The value to check\n * @returns `true` if the value is a positive finite number, `false` otherwise\n * @see {@link isPositiveFiniteNumber} for usage examples\n */\n is,\n\n /**\n * The smallest value representable as `PositiveFiniteNumber`.\n */\n MIN_VALUE,\n\n /**\n * Returns the smallest of the given positive finite numbers.\n *\n * @param values - The positive finite numbers to compare (at least one required)\n * @returns The smallest value as a `PositiveFiniteNumber`\n */\n min: min_,\n\n /**\n * Returns the largest of the given positive finite numbers.\n *\n * @param values - The positive finite numbers to compare (at least one required)\n * @returns The largest value as a `PositiveFiniteNumber`\n */\n max: max_,\n\n /**\n * Clamps a `number` into the `PositiveFiniteNumber` range `[MIN_VALUE,\n * MAX_VALUE]`.\n *\n * @param value - The value to clamp\n * @returns The clamped value as a `PositiveFiniteNumber`\n */\n clamp,\n\n /**\n * Returns the greatest integer less than or equal to a positive finite\n * number.\n *\n * @param a - The positive finite number value\n * @returns The floored value as an integer\n */\n floor,\n\n /**\n * Returns the smallest integer greater than or equal to a positive finite\n * number.\n *\n * @param a - The positive finite number value\n * @returns The ceiled value as an integer\n */\n ceil,\n\n /**\n * Returns the value of a positive finite number rounded to the nearest\n * integer.\n *\n * @param a - The positive finite number value\n * @returns The rounded value as an integer\n */\n round,\n\n /**\n * Generates a random `PositiveFiniteNumber` 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 `PositiveFiniteNumber` in `[min, max]`\n */\n random,\n\n /**\n * Raises `a` to the power `b`, returning `a ** b` as a\n * `PositiveFiniteNumber`.\n *\n * @param a - The base positive finite number\n * @param b - The exponent positive finite number\n * @returns `a ** b` as a `PositiveFiniteNumber`\n */\n pow,\n\n /**\n * Adds two positive finite numbers, returning `a + b` as a\n * `PositiveFiniteNumber`.\n *\n * @param a - The first positive finite number\n * @param b - The second positive finite number\n * @returns The sum of `a` and `b` as a `PositiveFiniteNumber`\n */\n add,\n\n /**\n * Subtracts two positive finite numbers, returning `a - b` as a\n * `PositiveFiniteNumber`.\n *\n * @param a - The first positive finite number\n * @param b - The second positive finite number\n * @returns The difference of `a` and `b` as a `PositiveFiniteNumber`\n */\n sub,\n\n /**\n * Multiplies two positive finite numbers, returning `a * b` as a\n * `PositiveFiniteNumber`.\n *\n * @param a - The first positive finite number\n * @param b - The second positive finite number\n * @returns The product of `a` and `b` as a `PositiveFiniteNumber`\n */\n mul,\n\n /**\n * Divides two positive finite numbers, returning `a / b` as a\n * `PositiveFiniteNumber`.\n *\n * @param a - The dividend\n * @param b - The divisor (must be non-zero)\n * @returns `a / b` as a `PositiveFiniteNumber`\n */\n div,\n} as const;\n\nexpectType<\n keyof typeof PositiveFiniteNumber,\n keyof TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'positive'\n >\n>('=');\n\nexpectType<\n typeof PositiveFiniteNumber,\n TsDataForgeInternals.RefinedNumberUtils.NumberClass<ElementType, 'positive'>\n>('<=');\n"],"names":[],"mappings":";;AAYA,MAAM,iBAAA,GAAoB,0BAAA;AAE1B,MAAM;AAAA,EACJ,SAAA;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,iBAAA,CAI1C;AAAA,EACA,WAAW,MAAA,CAAO,SAAA;AAAA,EAClB,WAAW,MAAA,CAAO,SAAA;AAAA,EAClB;AACF,CAAU,CAAA;AAEV,MAAM,QAAQ,CACZ,CAAA;AAAA;AAAA,EAKA,IAAA,CAAK,KAAA;AAAA,IACH;AAAA;AACF,CAAA;AAIF,MAAM,OAAO,CACX,CAAA;AAAA;AAAA,EAGA,IAAA,CAAK,KAAK,CAAC;AAAA,CAAA;AAEb,MAAM,QAAQ,CACZ,CAAA;AAAA;AAAA,EAKA,IAAA,CAAK,KAAA;AAAA,IACH;AAAA;AACF,CAAA;AAyBK,MAAM,sBAAA,GAAyB;AAY/B,MAAM,sBAAA,GAAyB;AAQ/B,MAAM,oBAAA,GAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQlC,EAAA;AAAA;AAAA;AAAA;AAAA,EAKA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQL,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASL,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA;AACF;;;;"}
@@ -3,8 +3,8 @@ export type PositiveInt = TtfImported_PositiveInt;
3
3
  /**
4
4
  * Type guard that checks if a value is a positive integer.
5
5
  *
6
- * A positive integer is any integer greater than zero (>= 1). This excludes
7
- * zero, negative numbers, and non-integers.
6
+ * Returns `true` for a positive integer — a value with no fractional component,
7
+ * including values outside the safe integer range (unlike `SafeInt`).
8
8
  *
9
9
  * @example
10
10
  *
@@ -21,11 +21,10 @@ export type PositiveInt = TtfImported_PositiveInt;
21
21
  */
22
22
  export declare const isPositiveInt: (a: number) => a is TtfImported_PositiveInt;
23
23
  /**
24
- * Casts a number to a PositiveInt branded type.
24
+ * Casts a `number` to the `PositiveInt` branded type.
25
25
  *
26
- * This function validates that the input is a positive integer (>= 1) and
27
- * returns it with the PositiveInt brand. This ensures type safety for
28
- * operations that require strictly positive integer values.
26
+ * Validates that the value is a positive integer and returns it with the
27
+ * `PositiveInt` brand. Throws a `TypeError` otherwise.
29
28
  *
30
29
  * @example
31
30
  *
@@ -38,7 +37,7 @@ export declare const isPositiveInt: (a: number) => a is TtfImported_PositiveInt;
38
37
  * ```
39
38
  *
40
39
  * @param value - The value to cast
41
- * @returns The value as a PositiveInt branded type
40
+ * @returns The value as a `PositiveInt`
42
41
  * @throws {TypeError} If the value is not a positive integer
43
42
  */
44
43
  export declare const asPositiveInt: <N extends number>(x: N) => number & {
@@ -56,20 +55,14 @@ export declare const asPositiveInt: <N extends number>(x: N) => number & {
56
55
  'TSTypeForgeInternals--edd2f9ce-7ca5-45b0-9d1a-bd61b9b5d9c3': unknown;
57
56
  }> & N;
58
57
  /**
59
- * Namespace providing type-safe operations for PositiveInt branded types.
58
+ * Namespace providing type-safe operations for the `PositiveInt` branded type.
60
59
  *
61
- * PositiveInt represents integers that are strictly greater than zero (>= 1).
62
- * All operations automatically clamp results to maintain the positive
63
- * constraint, ensuring that arithmetic operations never produce zero or
64
- * negative values.
60
+ * The `PositiveInt` type represents a positive integer. Division (`div`) uses
61
+ * floor division.
65
62
  *
66
- * This type is essential for:
67
- *
68
- * - Array lengths and sizes (length >= 1)
69
- * - Counts and quantities that must be positive
70
- * - Denominators in division operations
71
- * - Loop counters and iteration counts
72
- * - Database primary keys and IDs
63
+ * Unlike `SafeInt`, `PositiveInt` allows values outside the safe integer range
64
+ * (±2^53 − 1), so very large magnitudes may lose precision in JavaScript's
65
+ * `number` type.
73
66
  */
74
67
  export declare const PositiveInt: {
75
68
  /**
@@ -91,16 +84,11 @@ export declare const PositiveInt: {
91
84
  */
92
85
  readonly is: (a: number) => a is TtfImported_PositiveInt;
93
86
  /**
94
- * The minimum value for a PositiveInt.
95
- *
96
- * @readonly
87
+ * The smallest value representable as `PositiveInt`.
97
88
  */
98
89
  readonly MIN_VALUE: 1;
99
90
  /**
100
- * Returns the minimum value from a list of positive integers.
101
- *
102
- * Since all inputs are guaranteed to be >= 1, the result is also guaranteed
103
- * to be a positive integer.
91
+ * Returns the smallest of the given positive integers.
104
92
  *
105
93
  * @example
106
94
  *
@@ -115,11 +103,11 @@ export declare const PositiveInt: {
115
103
  * ```
116
104
  *
117
105
  * @param values - The positive integers to compare (at least one required)
118
- * @returns The smallest value as a PositiveInt
106
+ * @returns The smallest value as a `PositiveInt`
119
107
  */
120
108
  readonly min: (...values: readonly import("ts-type-forge").WithSmallInt<TtfImported_PositiveInt>[]) => TtfImported_PositiveInt;
121
109
  /**
122
- * Returns the maximum value from a list of positive integers.
110
+ * Returns the largest of the given positive integers.
123
111
  *
124
112
  * @example
125
113
  *
@@ -134,14 +122,12 @@ export declare const PositiveInt: {
134
122
  * ```
135
123
  *
136
124
  * @param values - The positive integers to compare (at least one required)
137
- * @returns The largest value as a PositiveInt
125
+ * @returns The largest value as a `PositiveInt`
138
126
  */
139
127
  readonly max: (...values: readonly import("ts-type-forge").WithSmallInt<TtfImported_PositiveInt>[]) => TtfImported_PositiveInt;
140
128
  /**
141
- * Clamps a number to the positive integer range.
142
- *
143
- * Since PositiveInt has a minimum value of 1, this function ensures that any
144
- * input less than 1 is clamped to 1.
129
+ * Clamps a `number` into the `PositiveInt` range, rounding to the nearest
130
+ * integer and constraining the result to `[MIN_VALUE, MAX_VALUE]`.
145
131
  *
146
132
  * @example
147
133
  *
@@ -155,15 +141,14 @@ export declare const PositiveInt: {
155
141
  * assert.isTrue(withinRange === 10);
156
142
  * ```
157
143
  *
158
- * @param value - The number to clamp
159
- * @returns The value clamped to >= 1 as a PositiveInt
144
+ * @param value - The value to clamp
145
+ * @returns The clamped value as a `PositiveInt`
160
146
  */
161
147
  readonly clamp: (x: number) => TtfImported_PositiveInt;
162
148
  /**
163
- * Generates a random positive integer within the specified range (inclusive).
149
+ * Generates a random `PositiveInt` within the given range.
164
150
  *
165
- * Both bounds are inclusive, and both min and max must be positive integers.
166
- * If min > max, they are automatically swapped.
151
+ * The range is inclusive on both ends.
167
152
  *
168
153
  * @example
169
154
  *
@@ -179,14 +164,14 @@ export declare const PositiveInt: {
179
164
  * assert.isTrue(randomValue >= 3 && randomValue <= 6);
180
165
  * ```
181
166
  *
182
- * @param min - The minimum value (inclusive, must be >= 1)
183
- * @param max - The maximum value (inclusive, must be >= min)
184
- * @returns A random PositiveInt in the range [min, max]
167
+ * @param min - The minimum value (inclusive)
168
+ * @param max - The maximum value (inclusive)
169
+ * @returns A random `PositiveInt` in `[min, max]`
185
170
  */
186
171
  readonly random: (min?: import("ts-type-forge").WithSmallInt<TtfImported_PositiveInt> | undefined, max?: import("ts-type-forge").WithSmallInt<TtfImported_PositiveInt> | undefined) => TtfImported_PositiveInt;
187
172
  /**
188
- * Raises a positive integer to a power, ensuring the result is never less
189
- * than 1.
173
+ * Raises `a` to the power `b`, returning `a ** b` as a `PositiveInt` (floored
174
+ * to an integer).
190
175
  *
191
176
  * @example
192
177
  *
@@ -202,11 +187,11 @@ export declare const PositiveInt: {
202
187
  *
203
188
  * @param a - The base positive integer
204
189
  * @param b - The exponent positive integer
205
- * @returns `a ** b` as a PositiveInt, but never less than 1
190
+ * @returns `a ** b` as a `PositiveInt`
206
191
  */
207
192
  readonly pow: (x: import("ts-type-forge").WithSmallInt<TtfImported_PositiveInt>, y: import("ts-type-forge").WithSmallInt<TtfImported_PositiveInt>) => TtfImported_PositiveInt;
208
193
  /**
209
- * Adds two positive integers, ensuring the result is never less than 1.
194
+ * Adds two positive integers, returning `a + b` as a `PositiveInt`.
210
195
  *
211
196
  * @example
212
197
  *
@@ -216,16 +201,13 @@ export declare const PositiveInt: {
216
201
  * assert.isTrue(sum === 9);
217
202
  * ```
218
203
  *
219
- * @param a - First positive integer
220
- * @param b - Second positive integer
221
- * @returns `a + b` as a PositiveInt, but never less than 1
204
+ * @param a - The first positive integer
205
+ * @param b - The second positive integer
206
+ * @returns The sum of `a` and `b` as a `PositiveInt`
222
207
  */
223
208
  readonly add: (x: import("ts-type-forge").WithSmallInt<TtfImported_PositiveInt>, y: import("ts-type-forge").WithSmallInt<TtfImported_PositiveInt>) => TtfImported_PositiveInt;
224
209
  /**
225
- * Subtracts two positive integers, clamping the result to remain positive.
226
- *
227
- * If the mathematical result would be <= 0, it is clamped to 1 to maintain
228
- * the positive integer constraint.
210
+ * Subtracts two positive integers, returning `a - b` as a `PositiveInt`.
229
211
  *
230
212
  * @example
231
213
  *
@@ -235,13 +217,13 @@ export declare const PositiveInt: {
235
217
  * assert.isTrue(difference === 1);
236
218
  * ```
237
219
  *
238
- * @param a - The minuend (positive integer)
239
- * @param b - The subtrahend (positive integer)
240
- * @returns `max(1, a - b)` as a PositiveInt
220
+ * @param a - The first positive integer
221
+ * @param b - The second positive integer
222
+ * @returns The difference of `a` and `b` as a `PositiveInt`
241
223
  */
242
224
  readonly sub: (x: import("ts-type-forge").WithSmallInt<TtfImported_PositiveInt>, y: import("ts-type-forge").WithSmallInt<TtfImported_PositiveInt>) => TtfImported_PositiveInt;
243
225
  /**
244
- * Multiplies two positive integers, ensuring the result is never less than 1.
226
+ * Multiplies two positive integers, returning `a * b` as a `PositiveInt`.
245
227
  *
246
228
  * @example
247
229
  *
@@ -251,18 +233,14 @@ export declare const PositiveInt: {
251
233
  * assert.isTrue(product === 21);
252
234
  * ```
253
235
  *
254
- * @param a - First positive integer
255
- * @param b - Second positive integer
256
- * @returns `a * b` as a PositiveInt, but never less than 1
236
+ * @param a - The first positive integer
237
+ * @param b - The second positive integer
238
+ * @returns The product of `a` and `b` as a `PositiveInt`
257
239
  */
258
240
  readonly mul: (x: import("ts-type-forge").WithSmallInt<TtfImported_PositiveInt>, y: import("ts-type-forge").WithSmallInt<TtfImported_PositiveInt>) => TtfImported_PositiveInt;
259
241
  /**
260
- * Divides two positive integers using floor division, clamping to remain
261
- * positive.
262
- *
263
- * Performs mathematical floor division: `⌊a / b⌋`. If the result would be 0
264
- * (when a < b), it is clamped to 1 to maintain the positive integer
265
- * constraint.
242
+ * Divides two positive integers using floor division (`⌊a / b⌋`): the result
243
+ * is `a / b` rounded toward negative infinity, as a `PositiveInt`.
266
244
  *
267
245
  * @example
268
246
  *
@@ -276,9 +254,9 @@ export declare const PositiveInt: {
276
254
  * assert.isTrue(clamped === 1);
277
255
  * ```
278
256
  *
279
- * @param a - The dividend (positive integer)
280
- * @param b - The divisor (positive integer, guaranteed non-zero)
281
- * @returns `max(1, ⌊a / b⌋)` as a PositiveInt
257
+ * @param a - The dividend
258
+ * @param b - The divisor (must be non-zero)
259
+ * @returns The floored quotient as a `PositiveInt`
282
260
  */
283
261
  readonly div: (x: import("ts-type-forge").WithSmallInt<TtfImported_PositiveInt>, y: 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 & {
284
262
  readonly "!=0": true;
@@ -1 +1 @@
1
- {"version":3,"file":"positive-int.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/positive-int.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,IAAI,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAI5E,MAAM,MAAM,WAAW,GAAG,uBAAuB,CAAC;AA8BlD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,aAAa,6CAAK,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;MAAW,CAAC;AAEtC;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,WAAW;IACtB;;;;;;;;;;;;;;;;OAgBG;;IAGH;;;;OAIG;;IAGH;;;;;;;;;;;;;;;;;;;;OAoBG;;IAGH;;;;;;;;;;;;;;;;;OAiBG;;IAGH;;;;;;;;;;;;;;;;;;;;OAoBG;;IAGH;;;;;;;;;;;;;;;;;;;;;;;OAuBG;;IAGH;;;;;;;;;;;;;;;;;;;OAmBG;;IAGH;;;;;;;;;;;;;;OAcG;;IAGH;;;;;;;;;;;;;;;;;OAiBG;;IAGH;;;;;;;;;;;;;;OAcG;;IAGH;;;;;;;;;;;;;;;;;;;;;;;OAuBG;;;;;;;;;;;;;;;CAEK,CAAC"}
1
+ {"version":3,"file":"positive-int.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/positive-int.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,IAAI,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAI5E,MAAM,MAAM,WAAW,GAAG,uBAAuB,CAAC;AA8BlD;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,aAAa,6CAAK,CAAC;AAEhC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;MAAW,CAAC;AAEtC;;;;;;;;;GASG;AACH,eAAO,MAAM,WAAW;IACtB;;;;;;;;;;;;;;;;OAgBG;;IAGH;;OAEG;;IAGH;;;;;;;;;;;;;;;;;OAiBG;;IAGH;;;;;;;;;;;;;;;;;OAiBG;;IAGH;;;;;;;;;;;;;;;;;;OAkBG;;IAGH;;;;;;;;;;;;;;;;;;;;;;OAsBG;;IAGH;;;;;;;;;;;;;;;;;;;OAmBG;;IAGH;;;;;;;;;;;;;;OAcG;;IAGH;;;;;;;;;;;;;;OAcG;;IAGH;;;;;;;;;;;;;;OAcG;;IAGH;;;;;;;;;;;;;;;;;;;OAmBG;;;;;;;;;;;;;;;CAEK,CAAC"}
@@ -42,16 +42,11 @@ const PositiveInt = {
42
42
  */
43
43
  is,
44
44
  /**
45
- * The minimum value for a PositiveInt.
46
- *
47
- * @readonly
45
+ * The smallest value representable as `PositiveInt`.
48
46
  */
49
47
  MIN_VALUE,
50
48
  /**
51
- * Returns the minimum value from a list of positive integers.
52
- *
53
- * Since all inputs are guaranteed to be >= 1, the result is also guaranteed
54
- * to be a positive integer.
49
+ * Returns the smallest of the given positive integers.
55
50
  *
56
51
  * @example
57
52
  *
@@ -66,11 +61,11 @@ const PositiveInt = {
66
61
  * ```
67
62
  *
68
63
  * @param values - The positive integers to compare (at least one required)
69
- * @returns The smallest value as a PositiveInt
64
+ * @returns The smallest value as a `PositiveInt`
70
65
  */
71
66
  min: min_,
72
67
  /**
73
- * Returns the maximum value from a list of positive integers.
68
+ * Returns the largest of the given positive integers.
74
69
  *
75
70
  * @example
76
71
  *
@@ -85,14 +80,12 @@ const PositiveInt = {
85
80
  * ```
86
81
  *
87
82
  * @param values - The positive integers to compare (at least one required)
88
- * @returns The largest value as a PositiveInt
83
+ * @returns The largest value as a `PositiveInt`
89
84
  */
90
85
  max: max_,
91
86
  /**
92
- * Clamps a number to the positive integer range.
93
- *
94
- * Since PositiveInt has a minimum value of 1, this function ensures that any
95
- * input less than 1 is clamped to 1.
87
+ * Clamps a `number` into the `PositiveInt` range, rounding to the nearest
88
+ * integer and constraining the result to `[MIN_VALUE, MAX_VALUE]`.
96
89
  *
97
90
  * @example
98
91
  *
@@ -106,15 +99,14 @@ const PositiveInt = {
106
99
  * assert.isTrue(withinRange === 10);
107
100
  * ```
108
101
  *
109
- * @param value - The number to clamp
110
- * @returns The value clamped to >= 1 as a PositiveInt
102
+ * @param value - The value to clamp
103
+ * @returns The clamped value as a `PositiveInt`
111
104
  */
112
105
  clamp,
113
106
  /**
114
- * Generates a random positive integer within the specified range (inclusive).
107
+ * Generates a random `PositiveInt` within the given range.
115
108
  *
116
- * Both bounds are inclusive, and both min and max must be positive integers.
117
- * If min > max, they are automatically swapped.
109
+ * The range is inclusive on both ends.
118
110
  *
119
111
  * @example
120
112
  *
@@ -130,14 +122,14 @@ const PositiveInt = {
130
122
  * assert.isTrue(randomValue >= 3 && randomValue <= 6);
131
123
  * ```
132
124
  *
133
- * @param min - The minimum value (inclusive, must be >= 1)
134
- * @param max - The maximum value (inclusive, must be >= min)
135
- * @returns A random PositiveInt in the range [min, max]
125
+ * @param min - The minimum value (inclusive)
126
+ * @param max - The maximum value (inclusive)
127
+ * @returns A random `PositiveInt` in `[min, max]`
136
128
  */
137
129
  random,
138
130
  /**
139
- * Raises a positive integer to a power, ensuring the result is never less
140
- * than 1.
131
+ * Raises `a` to the power `b`, returning `a ** b` as a `PositiveInt` (floored
132
+ * to an integer).
141
133
  *
142
134
  * @example
143
135
  *
@@ -153,11 +145,11 @@ const PositiveInt = {
153
145
  *
154
146
  * @param a - The base positive integer
155
147
  * @param b - The exponent positive integer
156
- * @returns `a ** b` as a PositiveInt, but never less than 1
148
+ * @returns `a ** b` as a `PositiveInt`
157
149
  */
158
150
  pow,
159
151
  /**
160
- * Adds two positive integers, ensuring the result is never less than 1.
152
+ * Adds two positive integers, returning `a + b` as a `PositiveInt`.
161
153
  *
162
154
  * @example
163
155
  *
@@ -167,16 +159,13 @@ const PositiveInt = {
167
159
  * assert.isTrue(sum === 9);
168
160
  * ```
169
161
  *
170
- * @param a - First positive integer
171
- * @param b - Second positive integer
172
- * @returns `a + b` as a PositiveInt, but never less than 1
162
+ * @param a - The first positive integer
163
+ * @param b - The second positive integer
164
+ * @returns The sum of `a` and `b` as a `PositiveInt`
173
165
  */
174
166
  add,
175
167
  /**
176
- * Subtracts two positive integers, clamping the result to remain positive.
177
- *
178
- * If the mathematical result would be <= 0, it is clamped to 1 to maintain
179
- * the positive integer constraint.
168
+ * Subtracts two positive integers, returning `a - b` as a `PositiveInt`.
180
169
  *
181
170
  * @example
182
171
  *
@@ -186,13 +175,13 @@ const PositiveInt = {
186
175
  * assert.isTrue(difference === 1);
187
176
  * ```
188
177
  *
189
- * @param a - The minuend (positive integer)
190
- * @param b - The subtrahend (positive integer)
191
- * @returns `max(1, a - b)` as a PositiveInt
178
+ * @param a - The first positive integer
179
+ * @param b - The second positive integer
180
+ * @returns The difference of `a` and `b` as a `PositiveInt`
192
181
  */
193
182
  sub,
194
183
  /**
195
- * Multiplies two positive integers, ensuring the result is never less than 1.
184
+ * Multiplies two positive integers, returning `a * b` as a `PositiveInt`.
196
185
  *
197
186
  * @example
198
187
  *
@@ -202,18 +191,14 @@ const PositiveInt = {
202
191
  * assert.isTrue(product === 21);
203
192
  * ```
204
193
  *
205
- * @param a - First positive integer
206
- * @param b - Second positive integer
207
- * @returns `a * b` as a PositiveInt, but never less than 1
194
+ * @param a - The first positive integer
195
+ * @param b - The second positive integer
196
+ * @returns The product of `a` and `b` as a `PositiveInt`
208
197
  */
209
198
  mul,
210
199
  /**
211
- * Divides two positive integers using floor division, clamping to remain
212
- * positive.
213
- *
214
- * Performs mathematical floor division: `⌊a / b⌋`. If the result would be 0
215
- * (when a < b), it is clamped to 1 to maintain the positive integer
216
- * constraint.
200
+ * Divides two positive integers using floor division (`⌊a / b⌋`): the result
201
+ * is `a / b` rounded toward negative infinity, as a `PositiveInt`.
217
202
  *
218
203
  * @example
219
204
  *
@@ -227,9 +212,9 @@ const PositiveInt = {
227
212
  * assert.isTrue(clamped === 1);
228
213
  * ```
229
214
  *
230
- * @param a - The dividend (positive integer)
231
- * @param b - The divisor (positive integer, guaranteed non-zero)
232
- * @returns `max(1, ⌊a / b⌋)` as a PositiveInt
215
+ * @param a - The dividend
216
+ * @param b - The divisor (must be non-zero)
217
+ * @returns The floored quotient as a `PositiveInt`
233
218
  */
234
219
  div
235
220
  };