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
@@ -3,18 +3,24 @@ import { TsDataForgeInternals } from '../refined-number-utils.mjs';
3
3
  export type NonPositiveFiniteNumber = TtfImported_NonPositiveFiniteNumber;
4
4
  type ElementType = NonPositiveFiniteNumber;
5
5
  /**
6
- * Checks if a number is a NonPositiveFiniteNumber (a finite number <= 0).
6
+ * Type guard that checks if a value is a non-positive finite number.
7
7
  *
8
- * @param value The value to check.
9
- * @returns `true` if the value is a NonPositiveFiniteNumber, `false` otherwise.
8
+ * Returns `true` only for a finite value — never `NaN`, `Infinity`, or
9
+ * `-Infinity`.
10
+ *
11
+ * @param value - The value to check
12
+ * @returns `true` if the value is a non-positive finite number, `false` otherwise
10
13
  */
11
14
  export declare const isNonPositiveFiniteNumber: (a: number) => a is TtfImported_NonPositiveFiniteNumber;
12
15
  /**
13
- * Casts a number to a NonPositiveFiniteNumber type.
16
+ * Casts a `number` to the `NonPositiveFiniteNumber` branded type.
17
+ *
18
+ * Validates that the value is a non-positive finite number and returns it with
19
+ * the `NonPositiveFiniteNumber` brand. Throws a `TypeError` otherwise.
14
20
  *
15
- * @param value The value to cast.
16
- * @returns The value as a NonPositiveFiniteNumber type.
17
- * @throws {TypeError} If the value is not a non-positive finite number.
21
+ * @param value - The value to cast
22
+ * @returns The value as a `NonPositiveFiniteNumber`
23
+ * @throws {TypeError} If the value is not a non-positive finite number
18
24
  */
19
25
  export declare const asNonPositiveFiniteNumber: <N extends number>(x: N) => number & {
20
26
  readonly "< 2^15": true;
@@ -28,101 +34,110 @@ export declare const asNonPositiveFiniteNumber: <N extends number>(x: N) => numb
28
34
  'TSTypeForgeInternals--edd2f9ce-7ca5-45b0-9d1a-bd61b9b5d9c3': unknown;
29
35
  }> & N;
30
36
  /**
31
- * Namespace providing type-safe arithmetic operations for non-positive finite
32
- * numbers.
37
+ * Namespace providing type-safe operations for the `NonPositiveFiniteNumber`
38
+ * branded type.
33
39
  *
34
- * All operations maintain the non-positive constraint by clamping positive
35
- * results to MAX_VALUE (0), while ensuring results remain finite (excluding NaN
36
- * and Infinity). This type is useful for representing quantities that must
37
- * always be non-positive, such as debts, penalties, and negative offsets.
40
+ * The `NonPositiveFiniteNumber` type represents a non-positive finite number.
38
41
  */
39
42
  export declare const NonPositiveFiniteNumber: {
40
43
  /**
41
- * Type guard to check if a value is a NonPositiveFiniteNumber.
44
+ * Type guard that checks if a value is a non-positive finite number.
42
45
  *
43
- * @param value The value to check.
44
- * @returns `true` if the value is a non-positive finite number, `false`
45
- * otherwise.
46
+ * @param value - The value to check
47
+ * @returns `true` if the value is a non-positive finite number, `false` otherwise
48
+ * @see {@link isNonPositiveFiniteNumber} for usage examples
46
49
  */
47
50
  readonly is: (a: number) => a is TtfImported_NonPositiveFiniteNumber;
48
51
  /**
49
- * The maximum value for a non-positive finite number.
50
- *
51
- * @readonly
52
+ * The largest value representable as `NonPositiveFiniteNumber` (the upper
53
+ * saturation target of `fromNumber`).
52
54
  */
53
55
  readonly MAX_VALUE: 0;
54
56
  /**
55
- * Returns the smaller of two NonPositiveFiniteNumber values.
57
+ * Returns the smallest of the given non-positive finite numbers.
56
58
  *
57
- * @param a The first NonPositiveFiniteNumber.
58
- * @param b The second NonPositiveFiniteNumber.
59
- * @returns The minimum value as a NonPositiveFiniteNumber.
59
+ * @param values - The non-positive finite numbers to compare (at least one required)
60
+ * @returns The smallest value as a `NonPositiveFiniteNumber`
60
61
  */
61
62
  readonly min: (...values: readonly TtfImported_NonPositiveFiniteNumber[]) => TtfImported_NonPositiveFiniteNumber;
62
63
  /**
63
- * Returns the larger of two NonPositiveFiniteNumber values.
64
+ * Returns the largest of the given non-positive finite numbers.
64
65
  *
65
- * @param a The first NonPositiveFiniteNumber.
66
- * @param b The second NonPositiveFiniteNumber.
67
- * @returns The maximum value as a NonPositiveFiniteNumber.
66
+ * @param values - The non-positive finite numbers to compare (at least one required)
67
+ * @returns The largest value as a `NonPositiveFiniteNumber`
68
68
  */
69
69
  readonly max: (...values: readonly TtfImported_NonPositiveFiniteNumber[]) => TtfImported_NonPositiveFiniteNumber;
70
70
  /**
71
- * Clamps a number to the non-positive finite range.
71
+ * Converts an arbitrary `number` into a `NonPositiveFiniteNumber`, saturating
72
+ * it into the range `[MIN_VALUE, MAX_VALUE]`.
72
73
  *
73
- * @param value The number to clamp.
74
- * @returns The value clamped to (-∞, 0] as a NonPositiveFiniteNumber.
74
+ * Unlike `asNonPositiveFiniteNumber`, this is total: out-of-range inputs are
75
+ * clamped to the nearest representable `NonPositiveFiniteNumber` instead of
76
+ * throwing.
77
+ *
78
+ * @param value - The value to convert
79
+ * @returns The value as a `NonPositiveFiniteNumber`
75
80
  */
76
- readonly clamp: (x: number) => TtfImported_NonPositiveFiniteNumber;
81
+ readonly fromNumber: (x: number) => TtfImported_NonPositiveFiniteNumber;
77
82
  /**
78
- * Rounds down a NonPositiveFiniteNumber to the nearest integer.
83
+ * Returns the greatest integer less than or equal to a non-positive finite
84
+ * number.
79
85
  *
80
- * @param x The NonPositiveFiniteNumber to round down.
81
- * @returns The floor value as a NonPositiveInt (can be 0).
86
+ * @param a - The non-positive finite number value
87
+ * @returns The floored value as an integer
82
88
  */
83
89
  readonly floor: (x: ElementType) => TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>>;
84
90
  /**
85
- * Rounds up a NonPositiveFiniteNumber to the nearest integer.
91
+ * Returns the smallest integer greater than or equal to a non-positive finite
92
+ * number.
86
93
  *
87
- * @param x The NonPositiveFiniteNumber to round up.
88
- * @returns The ceiling value as a NegativeInt (always <= -1) or 0.
94
+ * @param a - The non-positive finite number value
95
+ * @returns The ceiled value as an integer
89
96
  */
90
97
  readonly ceil: (x: ElementType) => TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>>;
91
98
  /**
92
- * Rounds a NonPositiveFiniteNumber to the nearest integer.
99
+ * Returns the value of a non-positive finite number rounded to the nearest
100
+ * integer.
93
101
  *
94
- * @param x The NonPositiveFiniteNumber to round.
95
- * @returns The rounded value as a NonPositiveInt (can be 0 if x > -0.5).
102
+ * @param a - The non-positive finite number value
103
+ * @returns The rounded value as an integer
96
104
  */
97
105
  readonly round: (x: ElementType) => TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>>;
98
106
  /**
99
- * Generates a random NonPositiveFiniteNumber value.
107
+ * Generates a random `NonPositiveFiniteNumber` within the given range.
108
+ *
109
+ * The range is inclusive on both ends.
100
110
  *
101
- * @returns A random non-positive finite number.
111
+ * @param min - The minimum value (inclusive)
112
+ * @param max - The maximum value (inclusive)
113
+ * @returns A random `NonPositiveFiniteNumber` in `[min, max]`
102
114
  */
103
115
  readonly random: (min?: TtfImported_NonPositiveFiniteNumber | undefined, max?: TtfImported_NonPositiveFiniteNumber | undefined) => TtfImported_NonPositiveFiniteNumber;
104
116
  /**
105
- * Raises a NonPositiveFiniteNumber to the power of another NonPositiveFiniteNumber.
117
+ * Raises `a` to the power `b`, returning `a ** b` as a
118
+ * `NonPositiveFiniteNumber`.
106
119
  *
107
- * @param a The base NonPositiveFiniteNumber.
108
- * @param b The exponent NonPositiveFiniteNumber.
109
- * @returns `a ** b` clamped to (-∞, 0] as a NonPositiveFiniteNumber.
120
+ * @param a - The base non-positive finite number
121
+ * @param b - The exponent non-positive finite number
122
+ * @returns `a ** b` as a `NonPositiveFiniteNumber`
110
123
  */
111
124
  readonly pow: (x: TtfImported_NonPositiveFiniteNumber, y: TtfImported_NonPositiveFiniteNumber) => TtfImported_NonPositiveFiniteNumber;
112
125
  /**
113
- * Adds two NonPositiveFiniteNumber values.
126
+ * Adds two non-positive finite numbers, returning `a + b` as a
127
+ * `NonPositiveFiniteNumber`.
114
128
  *
115
- * @param a The first NonPositiveFiniteNumber.
116
- * @param b The second NonPositiveFiniteNumber.
117
- * @returns `a + b` clamped to (-∞, 0] as a NonPositiveFiniteNumber.
129
+ * @param a - The first non-positive finite number
130
+ * @param b - The second non-positive finite number
131
+ * @returns The sum of `a` and `b` as a `NonPositiveFiniteNumber`
118
132
  */
119
133
  readonly add: (x: TtfImported_NonPositiveFiniteNumber, y: TtfImported_NonPositiveFiniteNumber) => TtfImported_NonPositiveFiniteNumber;
120
134
  /**
121
- * Subtracts one NonPositiveFiniteNumber from another.
135
+ * Subtracts two non-positive finite numbers, returning `a - b` as a
136
+ * `NonPositiveFiniteNumber`.
122
137
  *
123
- * @param a The minuend NonPositiveFiniteNumber.
124
- * @param b The subtrahend NonPositiveFiniteNumber.
125
- * @returns `a - b` clamped to (-∞, 0] as a NonPositiveFiniteNumber (maximum 0).
138
+ * @param a - The first non-positive finite number
139
+ * @param b - The second non-positive finite number
140
+ * @returns The difference of `a` and `b` as a `NonPositiveFiniteNumber`
126
141
  */
127
142
  readonly sub: (x: TtfImported_NonPositiveFiniteNumber, y: TtfImported_NonPositiveFiniteNumber) => TtfImported_NonPositiveFiniteNumber;
128
143
  };
@@ -1 +1 @@
1
- {"version":3,"file":"non-positive-finite-number.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/non-positive-finite-number.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,uBAAuB,IAAI,mCAAmC,EAAE,MAAM,eAAe,CAAC;AACpG,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,MAAM,MAAM,uBAAuB,GAAG,mCAAmC,CAAC;AAE1E,KAAK,WAAW,GAAG,uBAAuB,CAAC;AA2D3C;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,yDAAK,CAAC;AAE5C;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;MAAW,CAAC;AAElD;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB;IAClC;;;;;;OAMG;;IAGH;;;;OAIG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;OAKG;;IAGH;;;;;OAKG;wBA3GA,WAAW,KACb,oBAAoB,CAAC,kBAAkB,CAAC,qBAAqB,CAC9D,oBAAoB,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,CAC3D;IA2GC;;;;;OAKG;uBAvGA,WAAW,KACb,oBAAoB,CAAC,kBAAkB,CAAC,qBAAqB,CAC9D,oBAAoB,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,CAC3D;IAuGC;;;;;OAKG;wBArGA,WAAW,KACb,oBAAoB,CAAC,kBAAkB,CAAC,qBAAqB,CAC9D,oBAAoB,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,CAC3D;IAqGC;;;;OAIG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;CAEK,CAAC"}
1
+ {"version":3,"file":"non-positive-finite-number.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/non-positive-finite-number.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,uBAAuB,IAAI,mCAAmC,EAAE,MAAM,eAAe,CAAC;AACpG,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,MAAM,MAAM,uBAAuB,GAAG,mCAAmC,CAAC;AAE1E,KAAK,WAAW,GAAG,uBAAuB,CAAC;AA2D3C;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,yDAAK,CAAC;AAE5C;;;;;;;;;GASG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;MAAW,CAAC;AAElD;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB;IAClC;;;;;;OAMG;;IAGH;;;OAGG;;IAGH;;;;;OAKG;;IAGH;;;;;OAKG;;IAGH;;;;;;;;;;OAUG;;IAGH;;;;;;OAMG;wBAjHA,WAAW,KACb,oBAAoB,CAAC,kBAAkB,CAAC,qBAAqB,CAC9D,oBAAoB,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,CAC3D;IAiHC;;;;;;OAMG;uBA9GA,WAAW,KACb,oBAAoB,CAAC,kBAAkB,CAAC,qBAAqB,CAC9D,oBAAoB,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,CAC3D;IA8GC;;;;;;OAMG;wBA7GA,WAAW,KACb,oBAAoB,CAAC,kBAAkB,CAAC,qBAAqB,CAC9D,oBAAoB,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC,CAC3D;IA6GC;;;;;;;;OAQG;;IAGH;;;;;;;OAOG;;IAGH;;;;;;;OAOG;;IAGH;;;;;;;OAOG;;CAEK,CAAC"}
@@ -5,7 +5,7 @@ const {
5
5
  MAX_VALUE,
6
6
  add,
7
7
  castType,
8
- clamp,
8
+ fromNumber,
9
9
  is,
10
10
  max: max_,
11
11
  min: min_,
@@ -37,91 +37,103 @@ const isNonPositiveFiniteNumber = is;
37
37
  const asNonPositiveFiniteNumber = castType;
38
38
  const NonPositiveFiniteNumber = {
39
39
  /**
40
- * Type guard to check if a value is a NonPositiveFiniteNumber.
40
+ * Type guard that checks if a value is a non-positive finite number.
41
41
  *
42
- * @param value The value to check.
43
- * @returns `true` if the value is a non-positive finite number, `false`
44
- * otherwise.
42
+ * @param value - The value to check
43
+ * @returns `true` if the value is a non-positive finite number, `false` otherwise
44
+ * @see {@link isNonPositiveFiniteNumber} for usage examples
45
45
  */
46
46
  is,
47
47
  /**
48
- * The maximum value for a non-positive finite number.
49
- *
50
- * @readonly
48
+ * The largest value representable as `NonPositiveFiniteNumber` (the upper
49
+ * saturation target of `fromNumber`).
51
50
  */
52
51
  MAX_VALUE,
53
52
  /**
54
- * Returns the smaller of two NonPositiveFiniteNumber values.
53
+ * Returns the smallest of the given non-positive finite numbers.
55
54
  *
56
- * @param a The first NonPositiveFiniteNumber.
57
- * @param b The second NonPositiveFiniteNumber.
58
- * @returns The minimum value as a NonPositiveFiniteNumber.
55
+ * @param values - The non-positive finite numbers to compare (at least one required)
56
+ * @returns The smallest value as a `NonPositiveFiniteNumber`
59
57
  */
60
58
  min: min_,
61
59
  /**
62
- * Returns the larger of two NonPositiveFiniteNumber values.
60
+ * Returns the largest of the given non-positive finite numbers.
63
61
  *
64
- * @param a The first NonPositiveFiniteNumber.
65
- * @param b The second NonPositiveFiniteNumber.
66
- * @returns The maximum value as a NonPositiveFiniteNumber.
62
+ * @param values - The non-positive finite numbers to compare (at least one required)
63
+ * @returns The largest value as a `NonPositiveFiniteNumber`
67
64
  */
68
65
  max: max_,
69
66
  /**
70
- * Clamps a number to the non-positive finite range.
67
+ * Converts an arbitrary `number` into a `NonPositiveFiniteNumber`, saturating
68
+ * it into the range `[MIN_VALUE, MAX_VALUE]`.
69
+ *
70
+ * Unlike `asNonPositiveFiniteNumber`, this is total: out-of-range inputs are
71
+ * clamped to the nearest representable `NonPositiveFiniteNumber` instead of
72
+ * throwing.
71
73
  *
72
- * @param value The number to clamp.
73
- * @returns The value clamped to (-∞, 0] as a NonPositiveFiniteNumber.
74
+ * @param value - The value to convert
75
+ * @returns The value as a `NonPositiveFiniteNumber`
74
76
  */
75
- clamp,
77
+ fromNumber,
76
78
  /**
77
- * Rounds down a NonPositiveFiniteNumber to the nearest integer.
79
+ * Returns the greatest integer less than or equal to a non-positive finite
80
+ * number.
78
81
  *
79
- * @param x The NonPositiveFiniteNumber to round down.
80
- * @returns The floor value as a NonPositiveInt (can be 0).
82
+ * @param a - The non-positive finite number value
83
+ * @returns The floored value as an integer
81
84
  */
82
85
  floor,
83
86
  /**
84
- * Rounds up a NonPositiveFiniteNumber to the nearest integer.
87
+ * Returns the smallest integer greater than or equal to a non-positive finite
88
+ * number.
85
89
  *
86
- * @param x The NonPositiveFiniteNumber to round up.
87
- * @returns The ceiling value as a NegativeInt (always <= -1) or 0.
90
+ * @param a - The non-positive finite number value
91
+ * @returns The ceiled value as an integer
88
92
  */
89
93
  ceil,
90
94
  /**
91
- * Rounds a NonPositiveFiniteNumber to the nearest integer.
95
+ * Returns the value of a non-positive finite number rounded to the nearest
96
+ * integer.
92
97
  *
93
- * @param x The NonPositiveFiniteNumber to round.
94
- * @returns The rounded value as a NonPositiveInt (can be 0 if x > -0.5).
98
+ * @param a - The non-positive finite number value
99
+ * @returns The rounded value as an integer
95
100
  */
96
101
  round,
97
102
  /**
98
- * Generates a random NonPositiveFiniteNumber value.
103
+ * Generates a random `NonPositiveFiniteNumber` within the given range.
104
+ *
105
+ * The range is inclusive on both ends.
99
106
  *
100
- * @returns A random non-positive finite number.
107
+ * @param min - The minimum value (inclusive)
108
+ * @param max - The maximum value (inclusive)
109
+ * @returns A random `NonPositiveFiniteNumber` in `[min, max]`
101
110
  */
102
111
  random,
103
112
  /**
104
- * Raises a NonPositiveFiniteNumber to the power of another NonPositiveFiniteNumber.
113
+ * Raises `a` to the power `b`, returning `a ** b` as a
114
+ * `NonPositiveFiniteNumber`.
105
115
  *
106
- * @param a The base NonPositiveFiniteNumber.
107
- * @param b The exponent NonPositiveFiniteNumber.
108
- * @returns `a ** b` clamped to (-∞, 0] as a NonPositiveFiniteNumber.
116
+ * @param a - The base non-positive finite number
117
+ * @param b - The exponent non-positive finite number
118
+ * @returns `a ** b` as a `NonPositiveFiniteNumber`
109
119
  */
110
120
  pow,
111
121
  /**
112
- * Adds two NonPositiveFiniteNumber values.
122
+ * Adds two non-positive finite numbers, returning `a + b` as a
123
+ * `NonPositiveFiniteNumber`.
113
124
  *
114
- * @param a The first NonPositiveFiniteNumber.
115
- * @param b The second NonPositiveFiniteNumber.
116
- * @returns `a + b` clamped to (-∞, 0] as a NonPositiveFiniteNumber.
125
+ * @param a - The first non-positive finite number
126
+ * @param b - The second non-positive finite number
127
+ * @returns The sum of `a` and `b` as a `NonPositiveFiniteNumber`
117
128
  */
118
129
  add,
119
130
  /**
120
- * Subtracts one NonPositiveFiniteNumber from another.
131
+ * Subtracts two non-positive finite numbers, returning `a - b` as a
132
+ * `NonPositiveFiniteNumber`.
121
133
  *
122
- * @param a The minuend NonPositiveFiniteNumber.
123
- * @param b The subtrahend NonPositiveFiniteNumber.
124
- * @returns `a - b` clamped to (-∞, 0] as a NonPositiveFiniteNumber (maximum 0).
134
+ * @param a - The first non-positive finite number
135
+ * @param b - The second non-positive finite number
136
+ * @returns The difference of `a` and `b` as a `NonPositiveFiniteNumber`
125
137
  */
126
138
  sub
127
139
  };
@@ -1 +1 @@
1
- {"version":3,"file":"non-positive-finite-number.mjs","sources":["../../../src/number/branded-types/non-positive-finite-number.mts"],"sourcesContent":["import { type NonPositiveFiniteNumber as TtfImported_NonPositiveFiniteNumber } from 'ts-type-forge';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type NonPositiveFiniteNumber = TtfImported_NonPositiveFiniteNumber;\n\ntype ElementType = NonPositiveFiniteNumber;\n\nconst typeNameInMessage = 'a non-positive finite number';\n\nconst {\n MAX_VALUE,\n add,\n castType,\n clamp,\n is,\n max: max_,\n min: min_,\n pow,\n random,\n sub,\n} = TsDataForgeInternals.RefinedNumberUtils.operatorsForFloat<\n ElementType,\n number,\n 0\n>({\n MIN_VALUE: Number.MAX_VALUE * -1,\n MAX_VALUE: 0,\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.RemoveNonZeroBrandKey<\n TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>\n> =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n Math.ceil(x) as TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<\n TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>\n >;\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\n/**\n * Checks if a number is a NonPositiveFiniteNumber (a finite number <= 0).\n *\n * @param value The value to check.\n * @returns `true` if the value is a NonPositiveFiniteNumber, `false` otherwise.\n */\nexport const isNonPositiveFiniteNumber = is;\n\n/**\n * Casts a number to a NonPositiveFiniteNumber type.\n *\n * @param value The value to cast.\n * @returns The value as a NonPositiveFiniteNumber type.\n * @throws {TypeError} If the value is not a non-positive finite number.\n */\nexport const asNonPositiveFiniteNumber = castType;\n\n/**\n * Namespace providing type-safe arithmetic operations for non-positive finite\n * numbers.\n *\n * All operations maintain the non-positive constraint by clamping positive\n * results to MAX_VALUE (0), while ensuring results remain finite (excluding NaN\n * and Infinity). This type is useful for representing quantities that must\n * always be non-positive, such as debts, penalties, and negative offsets.\n */\nexport const NonPositiveFiniteNumber = {\n /**\n * Type guard to check if a value is a NonPositiveFiniteNumber.\n *\n * @param value The value to check.\n * @returns `true` if the value is a non-positive finite number, `false`\n * otherwise.\n */\n is,\n\n /**\n * The maximum value for a non-positive finite number.\n *\n * @readonly\n */\n MAX_VALUE,\n\n /**\n * Returns the smaller of two NonPositiveFiniteNumber values.\n *\n * @param a The first NonPositiveFiniteNumber.\n * @param b The second NonPositiveFiniteNumber.\n * @returns The minimum value as a NonPositiveFiniteNumber.\n */\n min: min_,\n\n /**\n * Returns the larger of two NonPositiveFiniteNumber values.\n *\n * @param a The first NonPositiveFiniteNumber.\n * @param b The second NonPositiveFiniteNumber.\n * @returns The maximum value as a NonPositiveFiniteNumber.\n */\n max: max_,\n\n /**\n * Clamps a number to the non-positive finite range.\n *\n * @param value The number to clamp.\n * @returns The value clamped to (-∞, 0] as a NonPositiveFiniteNumber.\n */\n clamp,\n\n /**\n * Rounds down a NonPositiveFiniteNumber to the nearest integer.\n *\n * @param x The NonPositiveFiniteNumber to round down.\n * @returns The floor value as a NonPositiveInt (can be 0).\n */\n floor,\n\n /**\n * Rounds up a NonPositiveFiniteNumber to the nearest integer.\n *\n * @param x The NonPositiveFiniteNumber to round up.\n * @returns The ceiling value as a NegativeInt (always <= -1) or 0.\n */\n ceil,\n\n /**\n * Rounds a NonPositiveFiniteNumber to the nearest integer.\n *\n * @param x The NonPositiveFiniteNumber to round.\n * @returns The rounded value as a NonPositiveInt (can be 0 if x > -0.5).\n */\n round,\n\n /**\n * Generates a random NonPositiveFiniteNumber value.\n *\n * @returns A random non-positive finite number.\n */\n random,\n\n /**\n * Raises a NonPositiveFiniteNumber to the power of another NonPositiveFiniteNumber.\n *\n * @param a The base NonPositiveFiniteNumber.\n * @param b The exponent NonPositiveFiniteNumber.\n * @returns `a ** b` clamped to (-∞, 0] as a NonPositiveFiniteNumber.\n */\n pow,\n\n /**\n * Adds two NonPositiveFiniteNumber values.\n *\n * @param a The first NonPositiveFiniteNumber.\n * @param b The second NonPositiveFiniteNumber.\n * @returns `a + b` clamped to (-∞, 0] as a NonPositiveFiniteNumber.\n */\n add,\n\n /**\n * Subtracts one NonPositiveFiniteNumber from another.\n *\n * @param a The minuend NonPositiveFiniteNumber.\n * @param b The subtrahend NonPositiveFiniteNumber.\n * @returns `a - b` clamped to (-∞, 0] as a NonPositiveFiniteNumber (maximum 0).\n */\n sub,\n} as const;\n"],"names":[],"mappings":";;AAOA,MAAM,iBAAA,GAAoB,8BAAA;AAE1B,MAAM;AAAA,EACJ,SAAA;AAAA,EACA,GAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,EAAA;AAAA,EACA,GAAA,EAAK,IAAA;AAAA,EACL,GAAA,EAAK,IAAA;AAAA,EACL,GAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,GAAI,oBAAA,CAAqB,mBAAmB,iBAAA,CAI1C;AAAA,EACA,SAAA,EAAW,OAAO,SAAA,GAAY,EAAA;AAAA,EAC9B,SAAA,EAAW,CAAA;AAAA,EACX;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,EAKA,IAAA,CAAK,KAAK,CAAC;AAAA,CAAA;AAIb,MAAM,QAAQ,CACZ,CAAA;AAAA;AAAA,EAKA,IAAA,CAAK,KAAA;AAAA,IACH;AAAA;AACF,CAAA;AAUK,MAAM,yBAAA,GAA4B;AASlC,MAAM,yBAAA,GAA4B;AAWlC,MAAM,uBAAA,GAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQrC,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,EASA;AACF;;;;"}
1
+ {"version":3,"file":"non-positive-finite-number.mjs","sources":["../../../src/number/branded-types/non-positive-finite-number.mts"],"sourcesContent":["import { type NonPositiveFiniteNumber as TtfImported_NonPositiveFiniteNumber } from 'ts-type-forge';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type NonPositiveFiniteNumber = TtfImported_NonPositiveFiniteNumber;\n\ntype ElementType = NonPositiveFiniteNumber;\n\nconst typeNameInMessage = 'a non-positive finite number';\n\nconst {\n MAX_VALUE,\n add,\n castType,\n fromNumber,\n is,\n max: max_,\n min: min_,\n pow,\n random,\n sub,\n} = TsDataForgeInternals.RefinedNumberUtils.operatorsForFloat<\n ElementType,\n number,\n 0\n>({\n MIN_VALUE: Number.MAX_VALUE * -1,\n MAX_VALUE: 0,\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.RemoveNonZeroBrandKey<\n TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>\n> =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n Math.ceil(x) as TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<\n TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>\n >;\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\n/**\n * Type guard that checks if a value is a non-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 non-positive finite number, `false` otherwise\n */\nexport const isNonPositiveFiniteNumber = is;\n\n/**\n * Casts a `number` to the `NonPositiveFiniteNumber` branded type.\n *\n * Validates that the value is a non-positive finite number and returns it with\n * the `NonPositiveFiniteNumber` brand. Throws a `TypeError` otherwise.\n *\n * @param value - The value to cast\n * @returns The value as a `NonPositiveFiniteNumber`\n * @throws {TypeError} If the value is not a non-positive finite number\n */\nexport const asNonPositiveFiniteNumber = castType;\n\n/**\n * Namespace providing type-safe operations for the `NonPositiveFiniteNumber`\n * branded type.\n *\n * The `NonPositiveFiniteNumber` type represents a non-positive finite number.\n */\nexport const NonPositiveFiniteNumber = {\n /**\n * Type guard that checks if a value is a non-positive finite number.\n *\n * @param value - The value to check\n * @returns `true` if the value is a non-positive finite number, `false` otherwise\n * @see {@link isNonPositiveFiniteNumber} for usage examples\n */\n is,\n\n /**\n * The largest value representable as `NonPositiveFiniteNumber` (the upper\n * saturation target of `fromNumber`).\n */\n MAX_VALUE,\n\n /**\n * Returns the smallest of the given non-positive finite numbers.\n *\n * @param values - The non-positive finite numbers to compare (at least one required)\n * @returns The smallest value as a `NonPositiveFiniteNumber`\n */\n min: min_,\n\n /**\n * Returns the largest of the given non-positive finite numbers.\n *\n * @param values - The non-positive finite numbers to compare (at least one required)\n * @returns The largest value as a `NonPositiveFiniteNumber`\n */\n max: max_,\n\n /**\n * Converts an arbitrary `number` into a `NonPositiveFiniteNumber`, saturating\n * it into the range `[MIN_VALUE, MAX_VALUE]`.\n *\n * Unlike `asNonPositiveFiniteNumber`, this is total: out-of-range inputs are\n * clamped to the nearest representable `NonPositiveFiniteNumber` instead of\n * throwing.\n *\n * @param value - The value to convert\n * @returns The value as a `NonPositiveFiniteNumber`\n */\n fromNumber,\n\n /**\n * Returns the greatest integer less than or equal to a non-positive finite\n * number.\n *\n * @param a - The non-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 non-positive finite\n * number.\n *\n * @param a - The non-positive finite number value\n * @returns The ceiled value as an integer\n */\n ceil,\n\n /**\n * Returns the value of a non-positive finite number rounded to the nearest\n * integer.\n *\n * @param a - The non-positive finite number value\n * @returns The rounded value as an integer\n */\n round,\n\n /**\n * Generates a random `NonPositiveFiniteNumber` 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 `NonPositiveFiniteNumber` in `[min, max]`\n */\n random,\n\n /**\n * Raises `a` to the power `b`, returning `a ** b` as a\n * `NonPositiveFiniteNumber`.\n *\n * @param a - The base non-positive finite number\n * @param b - The exponent non-positive finite number\n * @returns `a ** b` as a `NonPositiveFiniteNumber`\n */\n pow,\n\n /**\n * Adds two non-positive finite numbers, returning `a + b` as a\n * `NonPositiveFiniteNumber`.\n *\n * @param a - The first non-positive finite number\n * @param b - The second non-positive finite number\n * @returns The sum of `a` and `b` as a `NonPositiveFiniteNumber`\n */\n add,\n\n /**\n * Subtracts two non-positive finite numbers, returning `a - b` as a\n * `NonPositiveFiniteNumber`.\n *\n * @param a - The first non-positive finite number\n * @param b - The second non-positive finite number\n * @returns The difference of `a` and `b` as a `NonPositiveFiniteNumber`\n */\n sub,\n} as const;\n"],"names":[],"mappings":";;AAOA,MAAM,iBAAA,GAAoB,8BAAA;AAE1B,MAAM;AAAA,EACJ,SAAA;AAAA,EACA,GAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,EAAA;AAAA,EACA,GAAA,EAAK,IAAA;AAAA,EACL,GAAA,EAAK,IAAA;AAAA,EACL,GAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,GAAI,oBAAA,CAAqB,mBAAmB,iBAAA,CAI1C;AAAA,EACA,SAAA,EAAW,OAAO,SAAA,GAAY,EAAA;AAAA,EAC9B,SAAA,EAAW,CAAA;AAAA,EACX;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,EAKA,IAAA,CAAK,KAAK,CAAC;AAAA,CAAA;AAIb,MAAM,QAAQ,CACZ,CAAA;AAAA;AAAA,EAKA,IAAA,CAAK,KAAA;AAAA,IACH;AAAA;AACF,CAAA;AAaK,MAAM,yBAAA,GAA4B;AAYlC,MAAM,yBAAA,GAA4B;AAQlC,MAAM,uBAAA,GAA0B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQrC,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,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;AAAA;AAAA;AAAA;AAAA,EAaL,UAAA;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;AACF;;;;"}