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.
- package/dist/number/branded-types/finite-number.d.mts +47 -61
- package/dist/number/branded-types/finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/finite-number.mjs +37 -41
- package/dist/number/branded-types/finite-number.mjs.map +1 -1
- package/dist/number/branded-types/int.d.mts +40 -46
- package/dist/number/branded-types/int.d.mts.map +1 -1
- package/dist/number/branded-types/int.mjs +29 -31
- package/dist/number/branded-types/int.mjs.map +1 -1
- package/dist/number/branded-types/int16.d.mts +65 -58
- package/dist/number/branded-types/int16.d.mts.map +1 -1
- package/dist/number/branded-types/int16.mjs +49 -45
- package/dist/number/branded-types/int16.mjs.map +1 -1
- package/dist/number/branded-types/int32.d.mts +65 -58
- package/dist/number/branded-types/int32.d.mts.map +1 -1
- package/dist/number/branded-types/int32.mjs +49 -45
- package/dist/number/branded-types/int32.mjs.map +1 -1
- package/dist/number/branded-types/negative-finite-number.d.mts +68 -59
- package/dist/number/branded-types/negative-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/negative-finite-number.mjs +52 -46
- package/dist/number/branded-types/negative-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/negative-int.d.mts +60 -48
- package/dist/number/branded-types/negative-int.d.mts.map +1 -1
- package/dist/number/branded-types/negative-int.mjs +40 -36
- package/dist/number/branded-types/negative-int.mjs.map +1 -1
- package/dist/number/branded-types/negative-safe-int.d.mts +57 -56
- package/dist/number/branded-types/negative-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/negative-safe-int.mjs +40 -41
- package/dist/number/branded-types/negative-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-finite-number.d.mts +74 -64
- package/dist/number/branded-types/non-negative-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/non-negative-finite-number.mjs +58 -51
- package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-int16.d.mts +64 -57
- package/dist/number/branded-types/non-negative-int16.d.mts.map +1 -1
- package/dist/number/branded-types/non-negative-int16.mjs +47 -43
- package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-int32.d.mts +64 -58
- package/dist/number/branded-types/non-negative-int32.d.mts.map +1 -1
- package/dist/number/branded-types/non-negative-int32.mjs +47 -44
- package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
- package/dist/number/branded-types/non-positive-finite-number.d.mts +64 -54
- package/dist/number/branded-types/non-positive-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/non-positive-finite-number.mjs +48 -41
- package/dist/number/branded-types/non-positive-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-positive-int.d.mts +41 -146
- package/dist/number/branded-types/non-positive-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-positive-int.mjs +27 -107
- package/dist/number/branded-types/non-positive-int.mjs.map +1 -1
- package/dist/number/branded-types/non-positive-safe-int.d.mts +54 -53
- package/dist/number/branded-types/non-positive-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-positive-safe-int.mjs +37 -39
- package/dist/number/branded-types/non-positive-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-finite-number.d.mts +62 -49
- package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-finite-number.mjs +46 -37
- package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int.d.mts +51 -38
- package/dist/number/branded-types/non-zero-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int.mjs +31 -27
- package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int16.d.mts +52 -53
- package/dist/number/branded-types/non-zero-int16.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int16.mjs +36 -39
- package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int32.d.mts +52 -54
- package/dist/number/branded-types/non-zero-int32.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int32.mjs +36 -40
- package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-safe-int.d.mts +53 -54
- package/dist/number/branded-types/non-zero-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-safe-int.mjs +36 -40
- package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-uint16.d.mts +52 -53
- package/dist/number/branded-types/non-zero-uint16.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-uint16.mjs +35 -39
- package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-uint32.d.mts +52 -53
- package/dist/number/branded-types/non-zero-uint32.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-uint32.mjs +35 -39
- package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
- package/dist/number/branded-types/positive-finite-number.d.mts +74 -63
- package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/positive-finite-number.mjs +58 -50
- package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/positive-int.d.mts +46 -68
- package/dist/number/branded-types/positive-int.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int.mjs +34 -49
- package/dist/number/branded-types/positive-int.mjs.map +1 -1
- package/dist/number/branded-types/positive-int16.d.mts +61 -57
- package/dist/number/branded-types/positive-int16.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int16.mjs +44 -43
- package/dist/number/branded-types/positive-int16.mjs.map +1 -1
- package/dist/number/branded-types/positive-int32.d.mts +61 -57
- package/dist/number/branded-types/positive-int32.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int32.mjs +44 -43
- package/dist/number/branded-types/positive-int32.mjs.map +1 -1
- package/dist/number/branded-types/positive-safe-int.d.mts +62 -57
- package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/positive-safe-int.mjs +45 -43
- package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/positive-uint16.d.mts +61 -57
- package/dist/number/branded-types/positive-uint16.d.mts.map +1 -1
- package/dist/number/branded-types/positive-uint16.mjs +44 -43
- package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
- package/dist/number/branded-types/positive-uint32.d.mts +61 -58
- package/dist/number/branded-types/positive-uint32.d.mts.map +1 -1
- package/dist/number/branded-types/positive-uint32.mjs +44 -44
- package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
- package/dist/number/branded-types/safe-int.d.mts +43 -62
- package/dist/number/branded-types/safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/safe-int.mjs +35 -42
- package/dist/number/branded-types/safe-int.mjs.map +1 -1
- package/dist/number/branded-types/safe-uint.d.mts +62 -57
- package/dist/number/branded-types/safe-uint.d.mts.map +1 -1
- package/dist/number/branded-types/safe-uint.mjs +46 -44
- package/dist/number/branded-types/safe-uint.mjs.map +1 -1
- package/dist/number/branded-types/uint.d.mts +63 -50
- package/dist/number/branded-types/uint.d.mts.map +1 -1
- package/dist/number/branded-types/uint.mjs +42 -39
- package/dist/number/branded-types/uint.mjs.map +1 -1
- package/dist/number/branded-types/uint16.d.mts +60 -58
- package/dist/number/branded-types/uint16.d.mts.map +1 -1
- package/dist/number/branded-types/uint16.mjs +44 -43
- package/dist/number/branded-types/uint16.mjs.map +1 -1
- package/dist/number/branded-types/uint32.d.mts +59 -55
- package/dist/number/branded-types/uint32.d.mts.map +1 -1
- package/dist/number/branded-types/uint32.mjs +42 -42
- package/dist/number/branded-types/uint32.mjs.map +1 -1
- package/dist/number/enum/int8.d.mts +56 -65
- package/dist/number/enum/int8.d.mts.map +1 -1
- package/dist/number/enum/int8.mjs +44 -43
- package/dist/number/enum/int8.mjs.map +1 -1
- package/dist/number/enum/uint8.d.mts +60 -58
- package/dist/number/enum/uint8.d.mts.map +1 -1
- package/dist/number/enum/uint8.mjs +44 -43
- package/dist/number/enum/uint8.mjs.map +1 -1
- package/package.json +2 -1
- package/src/number/branded-types/finite-number.mts +47 -61
- package/src/number/branded-types/int.mts +40 -46
- package/src/number/branded-types/int16.mts +65 -58
- package/src/number/branded-types/int32.mts +65 -58
- package/src/number/branded-types/negative-finite-number.mts +68 -68
- package/src/number/branded-types/negative-int.mts +60 -57
- package/src/number/branded-types/negative-safe-int.mts +57 -65
- package/src/number/branded-types/non-negative-finite-number.mts +74 -64
- package/src/number/branded-types/non-negative-int16.mts +64 -57
- package/src/number/branded-types/non-negative-int32.mts +64 -58
- package/src/number/branded-types/non-positive-finite-number.mts +64 -54
- package/src/number/branded-types/non-positive-int.mts +41 -146
- package/src/number/branded-types/non-positive-safe-int.mts +54 -53
- package/src/number/branded-types/non-zero-finite-number.mts +62 -51
- package/src/number/branded-types/non-zero-int.mts +51 -38
- package/src/number/branded-types/non-zero-int16.mts +52 -53
- package/src/number/branded-types/non-zero-int32.mts +52 -54
- package/src/number/branded-types/non-zero-safe-int.mts +53 -54
- package/src/number/branded-types/non-zero-uint16.mts +52 -53
- package/src/number/branded-types/non-zero-uint32.mts +52 -53
- package/src/number/branded-types/positive-finite-number.mts +74 -63
- package/src/number/branded-types/positive-int.mts +46 -68
- package/src/number/branded-types/positive-int16.mts +61 -57
- package/src/number/branded-types/positive-int32.mts +61 -57
- package/src/number/branded-types/positive-safe-int.mts +62 -57
- package/src/number/branded-types/positive-uint16.mts +61 -57
- package/src/number/branded-types/positive-uint32.mts +61 -58
- package/src/number/branded-types/safe-int.mts +43 -62
- package/src/number/branded-types/safe-uint.mts +62 -57
- package/src/number/branded-types/uint.mts +63 -50
- package/src/number/branded-types/uint16.mts +60 -58
- package/src/number/branded-types/uint32.mts +59 -55
- package/src/number/enum/int8.mts +56 -65
- package/src/number/enum/uint8.mts +60 -58
|
@@ -34,8 +34,6 @@ const {
|
|
|
34
34
|
typeNameInMessage,
|
|
35
35
|
} as const);
|
|
36
36
|
|
|
37
|
-
// Not provided because reasonable rounding operations that avoid becoming 0 cannot be defined
|
|
38
|
-
|
|
39
37
|
const floor = (
|
|
40
38
|
x: ElementType,
|
|
41
39
|
): TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType> =>
|
|
@@ -67,125 +65,138 @@ expectType<
|
|
|
67
65
|
>('=');
|
|
68
66
|
|
|
69
67
|
/**
|
|
70
|
-
*
|
|
68
|
+
* Type guard that checks if a value is a non-zero finite number.
|
|
69
|
+
*
|
|
70
|
+
* Returns `true` only for a finite value — never `NaN`, `Infinity`, or
|
|
71
|
+
* `-Infinity`.
|
|
71
72
|
*
|
|
72
|
-
* @param value The value to check
|
|
73
|
-
* @returns `true` if the value is a
|
|
73
|
+
* @param value - The value to check
|
|
74
|
+
* @returns `true` if the value is a non-zero finite number, `false` otherwise
|
|
74
75
|
*/
|
|
75
76
|
export const isNonZeroFiniteNumber = is;
|
|
76
77
|
|
|
77
78
|
/**
|
|
78
|
-
* Casts a number to
|
|
79
|
+
* Casts a `number` to the `NonZeroFiniteNumber` branded type.
|
|
80
|
+
*
|
|
81
|
+
* Validates that the value is a non-zero finite number and returns it with the
|
|
82
|
+
* `NonZeroFiniteNumber` brand. Throws a `TypeError` otherwise.
|
|
79
83
|
*
|
|
80
|
-
* @param value The value to cast
|
|
81
|
-
* @returns The value as a NonZeroFiniteNumber
|
|
82
|
-
* @throws {TypeError} If the value is not a non-zero finite number
|
|
84
|
+
* @param value - The value to cast
|
|
85
|
+
* @returns The value as a `NonZeroFiniteNumber`
|
|
86
|
+
* @throws {TypeError} If the value is not a non-zero finite number
|
|
83
87
|
*/
|
|
84
88
|
export const asNonZeroFiniteNumber = castType;
|
|
85
89
|
|
|
86
90
|
/**
|
|
87
|
-
* Namespace providing type-safe
|
|
88
|
-
*
|
|
91
|
+
* Namespace providing type-safe operations for the `NonZeroFiniteNumber`
|
|
92
|
+
* branded type.
|
|
89
93
|
*
|
|
90
|
-
*
|
|
91
|
-
* finite (excluding NaN and Infinity). This type is useful for values that must
|
|
92
|
-
* never be zero, such as denominators, scaling factors, and ratios.
|
|
94
|
+
* The `NonZeroFiniteNumber` type represents a non-zero finite number.
|
|
93
95
|
*/
|
|
94
96
|
export const NonZeroFiniteNumber = {
|
|
95
97
|
/**
|
|
96
|
-
* Type guard
|
|
98
|
+
* Type guard that checks if a value is a non-zero finite number.
|
|
97
99
|
*
|
|
98
|
-
* @param value The value to check
|
|
99
|
-
* @returns `true` if the value is a non-zero finite number, `false`
|
|
100
|
-
*
|
|
100
|
+
* @param value - The value to check
|
|
101
|
+
* @returns `true` if the value is a non-zero finite number, `false` otherwise
|
|
102
|
+
* @see {@link isNonZeroFiniteNumber} for usage examples
|
|
101
103
|
*/
|
|
102
104
|
is,
|
|
103
105
|
|
|
104
106
|
/**
|
|
105
107
|
* Returns the absolute value of a non-zero finite number.
|
|
106
108
|
*
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
+
* The result is non-negative and keeps the `NonZeroFiniteNumber` brand.
|
|
110
|
+
*
|
|
111
|
+
* @param a - The non-zero finite number value
|
|
112
|
+
* @returns The absolute value as a non-negative `NonZeroFiniteNumber`
|
|
109
113
|
*/
|
|
110
114
|
abs,
|
|
111
115
|
|
|
112
116
|
/**
|
|
113
|
-
* Returns the
|
|
117
|
+
* Returns the smallest of the given non-zero finite numbers.
|
|
114
118
|
*
|
|
115
|
-
* @param
|
|
116
|
-
* @
|
|
117
|
-
* @returns The minimum value as a NonZeroFiniteNumber.
|
|
119
|
+
* @param values - The non-zero finite numbers to compare (at least one required)
|
|
120
|
+
* @returns The smallest value as a `NonZeroFiniteNumber`
|
|
118
121
|
*/
|
|
119
122
|
min: min_,
|
|
120
123
|
|
|
121
124
|
/**
|
|
122
|
-
* Returns the
|
|
125
|
+
* Returns the largest of the given non-zero finite numbers.
|
|
123
126
|
*
|
|
124
|
-
* @param
|
|
125
|
-
* @
|
|
126
|
-
* @returns The maximum value as a NonZeroFiniteNumber.
|
|
127
|
+
* @param values - The non-zero finite numbers to compare (at least one required)
|
|
128
|
+
* @returns The largest value as a `NonZeroFiniteNumber`
|
|
127
129
|
*/
|
|
128
130
|
max: max_,
|
|
129
131
|
|
|
130
132
|
/**
|
|
131
|
-
*
|
|
133
|
+
* Returns the greatest integer less than or equal to a non-zero finite
|
|
134
|
+
* number.
|
|
132
135
|
*
|
|
133
|
-
* @param
|
|
134
|
-
* @returns The
|
|
136
|
+
* @param a - The non-zero finite number value
|
|
137
|
+
* @returns The floored value as an integer
|
|
135
138
|
*/
|
|
136
139
|
floor,
|
|
137
140
|
|
|
138
141
|
/**
|
|
139
|
-
*
|
|
142
|
+
* Returns the smallest integer greater than or equal to a non-zero finite
|
|
143
|
+
* number.
|
|
140
144
|
*
|
|
141
|
-
* @param
|
|
142
|
-
* @returns The
|
|
145
|
+
* @param a - The non-zero finite number value
|
|
146
|
+
* @returns The ceiled value as an integer
|
|
143
147
|
*/
|
|
144
148
|
ceil,
|
|
145
149
|
|
|
146
150
|
/**
|
|
147
|
-
*
|
|
151
|
+
* Returns the value of a non-zero finite number rounded to the nearest
|
|
152
|
+
* integer.
|
|
148
153
|
*
|
|
149
|
-
* @param
|
|
150
|
-
* @returns The rounded value as
|
|
154
|
+
* @param a - The non-zero finite number value
|
|
155
|
+
* @returns The rounded value as an integer
|
|
151
156
|
*/
|
|
152
157
|
round,
|
|
153
158
|
|
|
154
159
|
/**
|
|
155
|
-
* Generates a random NonZeroFiniteNumber
|
|
160
|
+
* Generates a random `NonZeroFiniteNumber` within the given range.
|
|
161
|
+
*
|
|
162
|
+
* The range is inclusive on both ends.
|
|
156
163
|
*
|
|
157
|
-
* @
|
|
164
|
+
* @param min - The minimum value (inclusive)
|
|
165
|
+
* @param max - The maximum value (inclusive)
|
|
166
|
+
* @returns A random `NonZeroFiniteNumber` in `[min, max]`
|
|
158
167
|
*/
|
|
159
168
|
random,
|
|
160
169
|
|
|
161
170
|
/**
|
|
162
|
-
* Raises a
|
|
171
|
+
* Raises `a` to the power `b`, returning `a ** b` as a `NonZeroFiniteNumber`.
|
|
163
172
|
*
|
|
164
|
-
* @param a The base
|
|
165
|
-
* @param b The exponent
|
|
166
|
-
* @returns `a ** b` as a NonZeroFiniteNumber
|
|
173
|
+
* @param a - The base non-zero finite number
|
|
174
|
+
* @param b - The exponent non-zero finite number
|
|
175
|
+
* @returns `a ** b` as a `NonZeroFiniteNumber`
|
|
167
176
|
*/
|
|
168
177
|
pow,
|
|
169
178
|
|
|
170
179
|
/**
|
|
171
|
-
* Multiplies two
|
|
180
|
+
* Multiplies two non-zero finite numbers, returning `a * b` as a
|
|
181
|
+
* `NonZeroFiniteNumber`.
|
|
172
182
|
*
|
|
173
|
-
* @param a The first
|
|
174
|
-
* @param b The second
|
|
175
|
-
* @returns `a
|
|
183
|
+
* @param a - The first non-zero finite number
|
|
184
|
+
* @param b - The second non-zero finite number
|
|
185
|
+
* @returns The product of `a` and `b` as a `NonZeroFiniteNumber`
|
|
176
186
|
*/
|
|
177
187
|
mul,
|
|
178
188
|
|
|
179
189
|
/**
|
|
180
|
-
* Divides
|
|
190
|
+
* Divides two non-zero finite numbers, returning `a / b` as a
|
|
191
|
+
* `NonZeroFiniteNumber`.
|
|
181
192
|
*
|
|
182
193
|
* Exact (non-flooring) division of two non-zero finite numbers is always
|
|
183
194
|
* non-zero, so this stays closed. For the non-closed operations (`add`/`sub`,
|
|
184
195
|
* whose result may be `0`) use {@link Num.add}/{@link Num.sub}.
|
|
185
196
|
*
|
|
186
|
-
* @param a The dividend
|
|
187
|
-
* @param b The divisor
|
|
188
|
-
* @returns `a / b` as a NonZeroFiniteNumber
|
|
197
|
+
* @param a - The dividend
|
|
198
|
+
* @param b - The divisor (must be non-zero)
|
|
199
|
+
* @returns `a / b` as a `NonZeroFiniteNumber`
|
|
189
200
|
*/
|
|
190
201
|
div,
|
|
191
202
|
} as const;
|
|
@@ -30,90 +30,103 @@ const {
|
|
|
30
30
|
} as const);
|
|
31
31
|
|
|
32
32
|
/**
|
|
33
|
-
*
|
|
33
|
+
* Type guard that checks if a value is a non-zero integer.
|
|
34
34
|
*
|
|
35
|
-
*
|
|
36
|
-
*
|
|
35
|
+
* Returns `true` for a non-zero integer — a value with no fractional component,
|
|
36
|
+
* including values outside the safe integer range (unlike `SafeInt`).
|
|
37
|
+
*
|
|
38
|
+
* @param value - The value to check
|
|
39
|
+
* @returns `true` if the value is a non-zero integer, `false` otherwise
|
|
37
40
|
*/
|
|
38
41
|
export const isNonZeroInt = is;
|
|
39
42
|
|
|
40
43
|
/**
|
|
41
|
-
* Casts a number to
|
|
44
|
+
* Casts a `number` to the `NonZeroInt` branded type.
|
|
45
|
+
*
|
|
46
|
+
* Validates that the value is a non-zero integer and returns it with the
|
|
47
|
+
* `NonZeroInt` brand. Throws a `TypeError` otherwise.
|
|
42
48
|
*
|
|
43
|
-
* @param value The value to cast
|
|
44
|
-
* @returns The value as a NonZeroInt
|
|
45
|
-
* @throws {TypeError} If the value is not a non-zero integer
|
|
49
|
+
* @param value - The value to cast
|
|
50
|
+
* @returns The value as a `NonZeroInt`
|
|
51
|
+
* @throws {TypeError} If the value is not a non-zero integer
|
|
46
52
|
*/
|
|
47
53
|
export const asNonZeroInt = castType;
|
|
48
54
|
|
|
49
55
|
/**
|
|
50
|
-
* Namespace providing type-safe
|
|
56
|
+
* Namespace providing type-safe operations for the `NonZeroInt` branded type.
|
|
57
|
+
*
|
|
58
|
+
* The `NonZeroInt` type represents a non-zero integer. Division (`div`) uses
|
|
59
|
+
* floor division.
|
|
51
60
|
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
54
|
-
*
|
|
61
|
+
* Unlike `SafeInt`, `NonZeroInt` allows values outside the safe integer range
|
|
62
|
+
* (±2^53 − 1), so very large magnitudes may lose precision in JavaScript's
|
|
63
|
+
* `number` type.
|
|
55
64
|
*/
|
|
56
65
|
export const NonZeroInt = {
|
|
57
66
|
/**
|
|
58
|
-
* Type guard
|
|
67
|
+
* Type guard that checks if a value is a non-zero integer.
|
|
59
68
|
*
|
|
60
|
-
* @param value The value to check
|
|
61
|
-
* @returns `true` if the value is a non-zero integer, `false` otherwise
|
|
69
|
+
* @param value - The value to check
|
|
70
|
+
* @returns `true` if the value is a non-zero integer, `false` otherwise
|
|
71
|
+
* @see {@link isNonZeroInt} for usage examples
|
|
62
72
|
*/
|
|
63
73
|
is,
|
|
64
74
|
|
|
65
75
|
/**
|
|
66
76
|
* Returns the absolute value of a non-zero integer.
|
|
67
77
|
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
78
|
+
* The result is non-negative and keeps the `NonZeroInt` brand. Note that
|
|
79
|
+
* `Math.abs(Number.MIN_SAFE_INTEGER)` exceeds `Number.MAX_SAFE_INTEGER`, so
|
|
80
|
+
* use `SafeInt` for guaranteed precision.
|
|
81
|
+
*
|
|
82
|
+
* @param a - The non-zero integer value
|
|
83
|
+
* @returns The absolute value as a non-negative `NonZeroInt`
|
|
70
84
|
*/
|
|
71
85
|
abs,
|
|
72
86
|
|
|
73
87
|
/**
|
|
74
|
-
* Returns the
|
|
88
|
+
* Returns the smallest of the given non-zero integers.
|
|
75
89
|
*
|
|
76
|
-
* @param
|
|
77
|
-
* @
|
|
78
|
-
* @returns The minimum value as a NonZeroInt.
|
|
90
|
+
* @param values - The non-zero integers to compare (at least one required)
|
|
91
|
+
* @returns The smallest value as a `NonZeroInt`
|
|
79
92
|
*/
|
|
80
93
|
min: min_,
|
|
81
94
|
|
|
82
95
|
/**
|
|
83
|
-
* Returns the
|
|
96
|
+
* Returns the largest of the given non-zero integers.
|
|
84
97
|
*
|
|
85
|
-
* @param
|
|
86
|
-
* @
|
|
87
|
-
* @returns The maximum value as a NonZeroInt.
|
|
98
|
+
* @param values - The non-zero integers to compare (at least one required)
|
|
99
|
+
* @returns The largest value as a `NonZeroInt`
|
|
88
100
|
*/
|
|
89
101
|
max: max_,
|
|
90
102
|
|
|
91
103
|
/**
|
|
92
|
-
* Generates a random
|
|
104
|
+
* Generates a random `NonZeroInt` within the given range.
|
|
105
|
+
*
|
|
106
|
+
* The range is inclusive on both ends.
|
|
93
107
|
*
|
|
94
|
-
* @
|
|
108
|
+
* @param min - The minimum value (inclusive)
|
|
109
|
+
* @param max - The maximum value (inclusive)
|
|
110
|
+
* @returns A random `NonZeroInt` in `[min, max]`
|
|
95
111
|
*/
|
|
96
112
|
random,
|
|
97
113
|
|
|
98
114
|
/**
|
|
99
|
-
* Raises a
|
|
115
|
+
* Raises `a` to the power `b`, returning `a ** b` as a `NonZeroInt` (floored
|
|
116
|
+
* to an integer).
|
|
100
117
|
*
|
|
101
|
-
* @param a The base non-zero integer
|
|
102
|
-
* @param b The exponent non-zero integer
|
|
103
|
-
* @returns `a ** b` as a NonZeroInt
|
|
118
|
+
* @param a - The base non-zero integer
|
|
119
|
+
* @param b - The exponent non-zero integer
|
|
120
|
+
* @returns `a ** b` as a `NonZeroInt`
|
|
104
121
|
*/
|
|
105
122
|
pow,
|
|
106
123
|
|
|
107
124
|
/**
|
|
108
|
-
* Multiplies two non-zero integers
|
|
109
|
-
*
|
|
110
|
-
* The product of two non-zero integers is always non-zero, so this stays
|
|
111
|
-
* closed; for the non-closed operations (`add`/`sub`/`div`, whose result may
|
|
112
|
-
* be `0`) use {@link Num.add}/{@link Num.sub}/{@link Num.divInt}.
|
|
125
|
+
* Multiplies two non-zero integers, returning `a * b` as a `NonZeroInt`.
|
|
113
126
|
*
|
|
114
|
-
* @param a The first non-zero integer
|
|
115
|
-
* @param b The second non-zero integer
|
|
116
|
-
* @returns `a
|
|
127
|
+
* @param a - The first non-zero integer
|
|
128
|
+
* @param b - The second non-zero integer
|
|
129
|
+
* @returns The product of `a` and `b` as a `NonZeroInt`
|
|
117
130
|
*/
|
|
118
131
|
mul,
|
|
119
132
|
} as const;
|
|
@@ -33,117 +33,116 @@ const {
|
|
|
33
33
|
} as const);
|
|
34
34
|
|
|
35
35
|
/**
|
|
36
|
-
*
|
|
37
|
-
* range [-2^15, 2^15) excluding 0).
|
|
36
|
+
* Type guard that checks if a value is a non-zero integer in [-2^15, 2^15).
|
|
38
37
|
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
38
|
+
* Returns `true` for a non-zero integer in [-2^15, 2^15) — a value with no
|
|
39
|
+
* fractional component.
|
|
40
|
+
*
|
|
41
|
+
* @param value - The value to check
|
|
42
|
+
* @returns `true` if the value is a non-zero integer in [-2^15, 2^15), `false` otherwise
|
|
41
43
|
*/
|
|
42
44
|
export const isNonZeroInt16 = is;
|
|
43
45
|
|
|
44
46
|
/**
|
|
45
|
-
* Casts a number to
|
|
47
|
+
* Casts a `number` to the `NonZeroInt16` branded type.
|
|
48
|
+
*
|
|
49
|
+
* Validates that the value is a non-zero integer in [-2^15, 2^15) and returns
|
|
50
|
+
* it with the `NonZeroInt16` brand. Throws a `TypeError` otherwise.
|
|
46
51
|
*
|
|
47
|
-
* @param value The value to cast
|
|
48
|
-
* @returns The value as a NonZeroInt16
|
|
49
|
-
* @throws {TypeError} If the value is not a non-zero integer in [-2^15, 2^15)
|
|
52
|
+
* @param value - The value to cast
|
|
53
|
+
* @returns The value as a `NonZeroInt16`
|
|
54
|
+
* @throws {TypeError} If the value is not a non-zero integer in [-2^15, 2^15)
|
|
50
55
|
*/
|
|
51
56
|
export const asNonZeroInt16 = castType;
|
|
52
57
|
|
|
53
58
|
/**
|
|
54
|
-
* Namespace providing type-safe
|
|
55
|
-
* signed integers.
|
|
59
|
+
* Namespace providing type-safe operations for the `NonZeroInt16` branded type.
|
|
56
60
|
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
* 16-bit non-zero signed integer constraint, preventing zero results and
|
|
60
|
-
* overflow.
|
|
61
|
+
* The `NonZeroInt16` type represents a non-zero integer in [-2^15, 2^15).
|
|
62
|
+
* Division (`div`) uses floor division.
|
|
61
63
|
*/
|
|
62
64
|
export const NonZeroInt16 = {
|
|
63
65
|
/**
|
|
64
|
-
* Type guard
|
|
66
|
+
* Type guard that checks if a value is a non-zero integer in [-2^15, 2^15).
|
|
65
67
|
*
|
|
66
|
-
* @param value The value to check
|
|
67
|
-
* @returns `true` if the value is a
|
|
68
|
-
*
|
|
68
|
+
* @param value - The value to check
|
|
69
|
+
* @returns `true` if the value is a non-zero integer in [-2^15, 2^15), `false` otherwise
|
|
70
|
+
* @see {@link isNonZeroInt16} for usage examples
|
|
69
71
|
*/
|
|
70
72
|
is,
|
|
71
73
|
|
|
72
74
|
/**
|
|
73
|
-
* The
|
|
74
|
-
*
|
|
75
|
-
* @readonly
|
|
75
|
+
* The smallest value representable as `NonZeroInt16`.
|
|
76
76
|
*/
|
|
77
77
|
MIN_VALUE,
|
|
78
78
|
|
|
79
79
|
/**
|
|
80
|
-
* The
|
|
81
|
-
*
|
|
82
|
-
* @readonly
|
|
80
|
+
* The largest value representable as `NonZeroInt16`.
|
|
83
81
|
*/
|
|
84
82
|
MAX_VALUE,
|
|
85
83
|
|
|
86
84
|
/**
|
|
87
|
-
* Returns the absolute value of a
|
|
85
|
+
* Returns the absolute value of a non-zero integer in [-2^15, 2^15).
|
|
88
86
|
*
|
|
89
|
-
*
|
|
90
|
-
*
|
|
87
|
+
* The result is non-negative and keeps the `NonZeroInt16` brand.
|
|
88
|
+
*
|
|
89
|
+
* @param a - The non-zero integer value
|
|
90
|
+
* @returns The absolute value as a non-negative `NonZeroInt16`
|
|
91
91
|
*/
|
|
92
92
|
abs,
|
|
93
93
|
|
|
94
94
|
/**
|
|
95
|
-
* Returns the
|
|
95
|
+
* Returns the smallest of the given non-zero integers.
|
|
96
96
|
*
|
|
97
|
-
* @param
|
|
98
|
-
* @
|
|
99
|
-
* @returns The minimum value as a NonZeroInt16.
|
|
97
|
+
* @param values - The non-zero integers to compare (at least one required)
|
|
98
|
+
* @returns The smallest value as a `NonZeroInt16`
|
|
100
99
|
*/
|
|
101
100
|
min: min_,
|
|
102
101
|
|
|
103
102
|
/**
|
|
104
|
-
* Returns the
|
|
103
|
+
* Returns the largest of the given non-zero integers.
|
|
105
104
|
*
|
|
106
|
-
* @param
|
|
107
|
-
* @
|
|
108
|
-
* @returns The maximum value as a NonZeroInt16.
|
|
105
|
+
* @param values - The non-zero integers to compare (at least one required)
|
|
106
|
+
* @returns The largest value as a `NonZeroInt16`
|
|
109
107
|
*/
|
|
110
108
|
max: max_,
|
|
111
109
|
|
|
112
110
|
/**
|
|
113
|
-
* Clamps a number
|
|
111
|
+
* Clamps a `number` into the `NonZeroInt16` range, rounding to the nearest
|
|
112
|
+
* integer and constraining the result to `[MIN_VALUE, MAX_VALUE]`.
|
|
114
113
|
*
|
|
115
|
-
* @param value The
|
|
116
|
-
* @returns The
|
|
114
|
+
* @param value - The value to clamp
|
|
115
|
+
* @returns The clamped value as a `NonZeroInt16`
|
|
117
116
|
*/
|
|
118
117
|
clamp,
|
|
119
118
|
|
|
120
119
|
/**
|
|
121
|
-
* Generates a random NonZeroInt16
|
|
120
|
+
* Generates a random `NonZeroInt16` within the given range.
|
|
121
|
+
*
|
|
122
|
+
* The range is inclusive on both ends.
|
|
122
123
|
*
|
|
123
|
-
* @
|
|
124
|
-
*
|
|
124
|
+
* @param min - The minimum value (inclusive)
|
|
125
|
+
* @param max - The maximum value (inclusive)
|
|
126
|
+
* @returns A random `NonZeroInt16` in `[min, max]`
|
|
125
127
|
*/
|
|
126
128
|
random,
|
|
127
129
|
|
|
128
130
|
/**
|
|
129
|
-
* Raises a
|
|
131
|
+
* Raises `a` to the power `b`, returning `a ** b` as a `NonZeroInt16`
|
|
132
|
+
* (floored to an integer).
|
|
130
133
|
*
|
|
131
|
-
* @param a The base
|
|
132
|
-
* @param b The exponent
|
|
133
|
-
* @returns `a ** b`
|
|
134
|
+
* @param a - The base non-zero integer
|
|
135
|
+
* @param b - The exponent non-zero integer
|
|
136
|
+
* @returns `a ** b` as a `NonZeroInt16`
|
|
134
137
|
*/
|
|
135
138
|
pow,
|
|
136
139
|
|
|
137
140
|
/**
|
|
138
|
-
* Multiplies two NonZeroInt16
|
|
139
|
-
*
|
|
140
|
-
* The product of two non-zero integers is always non-zero, so this stays
|
|
141
|
-
* closed; for the non-closed operations (`add`/`sub`/`div`, whose result may
|
|
142
|
-
* be `0`) use {@link Num.add}/{@link Num.sub}/{@link Num.divInt}.
|
|
141
|
+
* Multiplies two non-zero integers, returning `a * b` as a `NonZeroInt16`.
|
|
143
142
|
*
|
|
144
|
-
* @param a The first
|
|
145
|
-
* @param b The second
|
|
146
|
-
* @returns `a
|
|
143
|
+
* @param a - The first non-zero integer
|
|
144
|
+
* @param b - The second non-zero integer
|
|
145
|
+
* @returns The product of `a` and `b` as a `NonZeroInt16`
|
|
147
146
|
*/
|
|
148
147
|
mul,
|
|
149
148
|
} as const;
|