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.
- package/README.md +2 -2
- 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 +71 -59
- package/dist/number/branded-types/int16.d.mts.map +1 -1
- package/dist/number/branded-types/int16.mjs +56 -47
- package/dist/number/branded-types/int16.mjs.map +1 -1
- package/dist/number/branded-types/int32.d.mts +71 -59
- package/dist/number/branded-types/int32.d.mts.map +1 -1
- package/dist/number/branded-types/int32.mjs +56 -47
- package/dist/number/branded-types/int32.mjs.map +1 -1
- package/dist/number/branded-types/negative-finite-number.d.mts +76 -60
- package/dist/number/branded-types/negative-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/negative-finite-number.mjs +62 -49
- package/dist/number/branded-types/negative-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/negative-int.d.mts +66 -49
- package/dist/number/branded-types/negative-int.d.mts.map +1 -1
- package/dist/number/branded-types/negative-int.mjs +48 -39
- package/dist/number/branded-types/negative-int.mjs.map +1 -1
- package/dist/number/branded-types/negative-safe-int.d.mts +64 -57
- package/dist/number/branded-types/negative-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/negative-safe-int.mjs +49 -44
- package/dist/number/branded-types/negative-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-finite-number.d.mts +80 -65
- package/dist/number/branded-types/non-negative-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/non-negative-finite-number.mjs +65 -53
- package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-int16.d.mts +71 -58
- package/dist/number/branded-types/non-negative-int16.d.mts.map +1 -1
- package/dist/number/branded-types/non-negative-int16.mjs +55 -45
- package/dist/number/branded-types/non-negative-int16.mjs.map +1 -1
- package/dist/number/branded-types/non-negative-int32.d.mts +71 -59
- package/dist/number/branded-types/non-negative-int32.d.mts.map +1 -1
- package/dist/number/branded-types/non-negative-int32.mjs +55 -46
- package/dist/number/branded-types/non-negative-int32.mjs.map +1 -1
- package/dist/number/branded-types/non-positive-finite-number.d.mts +70 -55
- package/dist/number/branded-types/non-positive-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/non-positive-finite-number.mjs +55 -43
- package/dist/number/branded-types/non-positive-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-positive-int.d.mts +46 -146
- package/dist/number/branded-types/non-positive-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-positive-int.mjs +33 -108
- package/dist/number/branded-types/non-positive-int.mjs.map +1 -1
- package/dist/number/branded-types/non-positive-safe-int.d.mts +62 -54
- package/dist/number/branded-types/non-positive-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-positive-safe-int.mjs +46 -41
- 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 +59 -54
- package/dist/number/branded-types/non-zero-int16.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int16.mjs +44 -41
- package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int32.d.mts +59 -55
- package/dist/number/branded-types/non-zero-int32.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int32.mjs +44 -42
- package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-safe-int.d.mts +60 -55
- package/dist/number/branded-types/non-zero-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-safe-int.mjs +44 -42
- package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-uint16.d.mts +59 -54
- package/dist/number/branded-types/non-zero-uint16.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-uint16.mjs +43 -41
- package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-uint32.d.mts +59 -54
- package/dist/number/branded-types/non-zero-uint32.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-uint32.mjs +43 -41
- package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
- package/dist/number/branded-types/positive-finite-number.d.mts +82 -64
- package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/positive-finite-number.mjs +67 -52
- package/dist/number/branded-types/positive-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/positive-int.d.mts +53 -70
- package/dist/number/branded-types/positive-int.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int.mjs +42 -52
- package/dist/number/branded-types/positive-int.mjs.map +1 -1
- package/dist/number/branded-types/positive-int16.d.mts +68 -58
- package/dist/number/branded-types/positive-int16.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int16.mjs +52 -45
- package/dist/number/branded-types/positive-int16.mjs.map +1 -1
- package/dist/number/branded-types/positive-int32.d.mts +68 -58
- package/dist/number/branded-types/positive-int32.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int32.mjs +52 -45
- package/dist/number/branded-types/positive-int32.mjs.map +1 -1
- package/dist/number/branded-types/positive-safe-int.d.mts +72 -61
- package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/positive-safe-int.mjs +56 -48
- package/dist/number/branded-types/positive-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/positive-uint16.d.mts +68 -58
- package/dist/number/branded-types/positive-uint16.d.mts.map +1 -1
- package/dist/number/branded-types/positive-uint16.mjs +52 -45
- package/dist/number/branded-types/positive-uint16.mjs.map +1 -1
- package/dist/number/branded-types/positive-uint32.d.mts +68 -59
- package/dist/number/branded-types/positive-uint32.d.mts.map +1 -1
- package/dist/number/branded-types/positive-uint32.mjs +52 -46
- package/dist/number/branded-types/positive-uint32.mjs.map +1 -1
- package/dist/number/branded-types/safe-int.d.mts +52 -66
- package/dist/number/branded-types/safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/safe-int.mjs +45 -47
- package/dist/number/branded-types/safe-int.mjs.map +1 -1
- package/dist/number/branded-types/safe-uint.d.mts +68 -58
- package/dist/number/branded-types/safe-uint.d.mts.map +1 -1
- package/dist/number/branded-types/safe-uint.mjs +53 -46
- package/dist/number/branded-types/safe-uint.mjs.map +1 -1
- package/dist/number/branded-types/uint.d.mts +72 -55
- package/dist/number/branded-types/uint.d.mts.map +1 -1
- package/dist/number/branded-types/uint.mjs +52 -45
- package/dist/number/branded-types/uint.mjs.map +1 -1
- package/dist/number/branded-types/uint16.d.mts +66 -59
- package/dist/number/branded-types/uint16.d.mts.map +1 -1
- package/dist/number/branded-types/uint16.mjs +51 -45
- package/dist/number/branded-types/uint16.mjs.map +1 -1
- package/dist/number/branded-types/uint32.d.mts +66 -57
- package/dist/number/branded-types/uint32.d.mts.map +1 -1
- package/dist/number/branded-types/uint32.mjs +50 -45
- package/dist/number/branded-types/uint32.mjs.map +1 -1
- package/dist/number/enum/int8.d.mts +62 -66
- package/dist/number/enum/int8.d.mts.map +1 -1
- package/dist/number/enum/int8.mjs +57 -51
- package/dist/number/enum/int8.mjs.map +1 -1
- package/dist/number/enum/uint8.d.mts +66 -59
- package/dist/number/enum/uint8.d.mts.map +1 -1
- package/dist/number/enum/uint8.mjs +57 -51
- package/dist/number/enum/uint8.mjs.map +1 -1
- package/dist/number/refined-number-utils.d.mts +9 -9
- package/dist/number/refined-number-utils.d.mts.map +1 -1
- package/dist/number/refined-number-utils.mjs +7 -7
- package/dist/number/refined-number-utils.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 +72 -60
- package/src/number/branded-types/int32.mts +72 -60
- package/src/number/branded-types/negative-finite-number.mts +78 -71
- package/src/number/branded-types/negative-finite-number.test.mts +4 -4
- package/src/number/branded-types/negative-int.mts +68 -60
- package/src/number/branded-types/negative-int.test.mts +5 -5
- package/src/number/branded-types/negative-safe-int.mts +66 -68
- package/src/number/branded-types/negative-safe-int.test.mts +4 -4
- package/src/number/branded-types/non-negative-finite-number.mts +81 -66
- package/src/number/branded-types/non-negative-int16.mts +72 -59
- package/src/number/branded-types/non-negative-int32.mts +72 -60
- package/src/number/branded-types/non-positive-finite-number.mts +71 -56
- package/src/number/branded-types/non-positive-finite-number.test.mts +7 -7
- package/src/number/branded-types/non-positive-int.mts +47 -147
- package/src/number/branded-types/non-positive-int.test.mts +7 -7
- package/src/number/branded-types/non-positive-safe-int.mts +63 -55
- package/src/number/branded-types/non-positive-safe-int.test.mts +7 -7
- 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 +60 -55
- package/src/number/branded-types/non-zero-int32.mts +60 -56
- package/src/number/branded-types/non-zero-safe-int.mts +61 -56
- package/src/number/branded-types/non-zero-uint16.mts +60 -55
- package/src/number/branded-types/non-zero-uint32.mts +60 -55
- package/src/number/branded-types/positive-finite-number.mts +83 -65
- package/src/number/branded-types/positive-int.mts +54 -71
- package/src/number/branded-types/positive-int16.mts +69 -59
- package/src/number/branded-types/positive-int32.mts +69 -59
- package/src/number/branded-types/positive-safe-int.mts +73 -62
- package/src/number/branded-types/positive-uint16.mts +69 -59
- package/src/number/branded-types/positive-uint32.mts +69 -60
- package/src/number/branded-types/safe-int.mts +53 -67
- package/src/number/branded-types/safe-uint.mts +69 -59
- package/src/number/branded-types/uint.mts +73 -56
- package/src/number/branded-types/uint16.mts +67 -60
- package/src/number/branded-types/uint32.mts +67 -58
- package/src/number/enum/int8.mts +70 -73
- package/src/number/enum/int8.test.mts +7 -4
- package/src/number/enum/uint8.mts +74 -66
- package/src/number/enum/uint8.test.mts +7 -4
- package/src/number/refined-number-utils.mts +22 -19
|
@@ -13,7 +13,7 @@ const {
|
|
|
13
13
|
MIN_VALUE,
|
|
14
14
|
add,
|
|
15
15
|
castType,
|
|
16
|
-
|
|
16
|
+
fromNumber,
|
|
17
17
|
is,
|
|
18
18
|
max: max_,
|
|
19
19
|
min: min_,
|
|
@@ -33,117 +33,122 @@ const {
|
|
|
33
33
|
} as const);
|
|
34
34
|
|
|
35
35
|
/**
|
|
36
|
-
*
|
|
37
|
-
* the range [1, 2^32)).
|
|
36
|
+
* Type guard that checks if a value is a non-zero integer in [1, 2^32).
|
|
38
37
|
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
38
|
+
* Returns `true` for a non-zero integer in [1, 2^32) — 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 [1, 2^32), `false` otherwise
|
|
41
43
|
*/
|
|
42
44
|
export const isNonZeroUint32 = is;
|
|
43
45
|
|
|
44
46
|
/**
|
|
45
|
-
* Casts a number to
|
|
47
|
+
* Casts a `number` to the `NonZeroUint32` branded type.
|
|
48
|
+
*
|
|
49
|
+
* Validates that the value is a non-zero integer in [1, 2^32) and returns it
|
|
50
|
+
* with the `NonZeroUint32` brand. Throws a `TypeError` otherwise.
|
|
46
51
|
*
|
|
47
|
-
* @param value The value to cast
|
|
48
|
-
* @returns The value as a NonZeroUint32
|
|
49
|
-
* @throws {TypeError} If the value is not a non-zero integer in [1, 2^32)
|
|
52
|
+
* @param value - The value to cast
|
|
53
|
+
* @returns The value as a `NonZeroUint32`
|
|
54
|
+
* @throws {TypeError} If the value is not a non-zero integer in [1, 2^32)
|
|
50
55
|
*/
|
|
51
56
|
export const asNonZeroUint32 = castType;
|
|
52
57
|
|
|
53
58
|
/**
|
|
54
|
-
* Namespace providing type-safe
|
|
55
|
-
*
|
|
59
|
+
* Namespace providing type-safe operations for the `NonZeroUint32` branded
|
|
60
|
+
* type.
|
|
56
61
|
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
* non-zero unsigned integer constraint, with results below 1 clamped to
|
|
60
|
-
* MIN_VALUE and overflow results clamped to MAX_VALUE.
|
|
62
|
+
* The `NonZeroUint32` type represents a non-zero integer in [1, 2^32). Division
|
|
63
|
+
* (`div`) uses floor division.
|
|
61
64
|
*/
|
|
62
65
|
export const NonZeroUint32 = {
|
|
63
66
|
/**
|
|
64
|
-
* Type guard
|
|
67
|
+
* Type guard that checks if a value is a non-zero integer in [1, 2^32).
|
|
65
68
|
*
|
|
66
|
-
* @param value The value to check
|
|
67
|
-
* @returns `true` if the value is a
|
|
68
|
-
*
|
|
69
|
+
* @param value - The value to check
|
|
70
|
+
* @returns `true` if the value is a non-zero integer in [1, 2^32), `false` otherwise
|
|
71
|
+
* @see {@link isNonZeroUint32} for usage examples
|
|
69
72
|
*/
|
|
70
73
|
is,
|
|
71
74
|
|
|
72
75
|
/**
|
|
73
|
-
* The
|
|
74
|
-
*
|
|
75
|
-
* @readonly
|
|
76
|
+
* The smallest value representable as `NonZeroUint32` (the lower saturation
|
|
77
|
+
* target of `fromNumber`).
|
|
76
78
|
*/
|
|
77
79
|
MIN_VALUE,
|
|
78
80
|
|
|
79
81
|
/**
|
|
80
|
-
* The
|
|
81
|
-
*
|
|
82
|
-
* @readonly
|
|
82
|
+
* The largest value representable as `NonZeroUint32` (the upper saturation
|
|
83
|
+
* target of `fromNumber`).
|
|
83
84
|
*/
|
|
84
85
|
MAX_VALUE,
|
|
85
86
|
|
|
86
87
|
/**
|
|
87
|
-
* Returns the
|
|
88
|
+
* Returns the smallest of the given non-zero integers.
|
|
88
89
|
*
|
|
89
|
-
* @param
|
|
90
|
-
* @
|
|
91
|
-
* @returns The minimum value as a NonZeroUint32.
|
|
90
|
+
* @param values - The non-zero integers to compare (at least one required)
|
|
91
|
+
* @returns The smallest value as a `NonZeroUint32`
|
|
92
92
|
*/
|
|
93
93
|
min: min_,
|
|
94
94
|
|
|
95
95
|
/**
|
|
96
|
-
* Returns the
|
|
96
|
+
* Returns the largest of the given non-zero integers.
|
|
97
97
|
*
|
|
98
|
-
* @param
|
|
99
|
-
* @
|
|
100
|
-
* @returns The maximum value as a NonZeroUint32.
|
|
98
|
+
* @param values - The non-zero integers to compare (at least one required)
|
|
99
|
+
* @returns The largest value as a `NonZeroUint32`
|
|
101
100
|
*/
|
|
102
101
|
max: max_,
|
|
103
102
|
|
|
104
103
|
/**
|
|
105
|
-
*
|
|
104
|
+
* Converts an arbitrary `number` into a `NonZeroUint32`, rounding to the
|
|
105
|
+
* nearest integer and saturating the result into the range `[MIN_VALUE,
|
|
106
|
+
* MAX_VALUE]`.
|
|
106
107
|
*
|
|
107
|
-
*
|
|
108
|
-
*
|
|
108
|
+
* Unlike `asNonZeroUint32`, this is total: out-of-range inputs are clamped to
|
|
109
|
+
* the nearest representable `NonZeroUint32` instead of throwing.
|
|
110
|
+
*
|
|
111
|
+
* @param value - The value to convert
|
|
112
|
+
* @returns The value as a `NonZeroUint32`
|
|
109
113
|
*/
|
|
110
|
-
|
|
114
|
+
fromNumber,
|
|
111
115
|
|
|
112
116
|
/**
|
|
113
|
-
* Generates a random NonZeroUint32
|
|
117
|
+
* Generates a random `NonZeroUint32` within the given range.
|
|
118
|
+
*
|
|
119
|
+
* The range is inclusive on both ends.
|
|
114
120
|
*
|
|
115
|
-
* @
|
|
121
|
+
* @param min - The minimum value (inclusive)
|
|
122
|
+
* @param max - The maximum value (inclusive)
|
|
123
|
+
* @returns A random `NonZeroUint32` in `[min, max]`
|
|
116
124
|
*/
|
|
117
125
|
random,
|
|
118
126
|
|
|
119
127
|
/**
|
|
120
|
-
* Raises a
|
|
128
|
+
* Raises `a` to the power `b`, returning `a ** b` as a `NonZeroUint32`
|
|
129
|
+
* (floored to an integer).
|
|
121
130
|
*
|
|
122
|
-
* @param a The base
|
|
123
|
-
* @param b The exponent
|
|
124
|
-
* @returns `a ** b`
|
|
131
|
+
* @param a - The base non-zero integer
|
|
132
|
+
* @param b - The exponent non-zero integer
|
|
133
|
+
* @returns `a ** b` as a `NonZeroUint32`
|
|
125
134
|
*/
|
|
126
135
|
pow,
|
|
127
136
|
|
|
128
137
|
/**
|
|
129
|
-
* Adds two NonZeroUint32
|
|
138
|
+
* Adds two non-zero integers, returning `a + b` as a `NonZeroUint32`.
|
|
130
139
|
*
|
|
131
|
-
* @param a The first
|
|
132
|
-
* @param b The second
|
|
133
|
-
* @returns `a
|
|
140
|
+
* @param a - The first non-zero integer
|
|
141
|
+
* @param b - The second non-zero integer
|
|
142
|
+
* @returns The sum of `a` and `b` as a `NonZeroUint32`
|
|
134
143
|
*/
|
|
135
144
|
add,
|
|
136
145
|
|
|
137
146
|
/**
|
|
138
|
-
* Multiplies two NonZeroUint32
|
|
139
|
-
*
|
|
140
|
-
* Both `add` and `mul` stay within `[1, 4294967295]`. For the non-closed
|
|
141
|
-
* operations (`sub`/`div`, whose result may be `0`) use {@link Num.sub} /
|
|
142
|
-
* {@link Num.divInt}.
|
|
147
|
+
* Multiplies two non-zero integers, returning `a * b` as a `NonZeroUint32`.
|
|
143
148
|
*
|
|
144
|
-
* @param a The first
|
|
145
|
-
* @param b The second
|
|
146
|
-
* @returns `a
|
|
149
|
+
* @param a - The first non-zero integer
|
|
150
|
+
* @param b - The second non-zero integer
|
|
151
|
+
* @returns The product of `a` and `b` as a `NonZeroUint32`
|
|
147
152
|
*/
|
|
148
153
|
mul,
|
|
149
154
|
} as const;
|
|
@@ -16,8 +16,8 @@ const {
|
|
|
16
16
|
MIN_VALUE,
|
|
17
17
|
add,
|
|
18
18
|
castType,
|
|
19
|
-
clamp,
|
|
20
19
|
div,
|
|
20
|
+
fromNumber,
|
|
21
21
|
is,
|
|
22
22
|
max: max_,
|
|
23
23
|
min: min_,
|
|
@@ -78,148 +78,166 @@ expectType<
|
|
|
78
78
|
>('=');
|
|
79
79
|
|
|
80
80
|
/**
|
|
81
|
-
*
|
|
81
|
+
* Type guard that checks if a value is a positive finite number.
|
|
82
82
|
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
83
|
+
* Returns `true` only for a finite value — never `NaN`, `Infinity`, or
|
|
84
|
+
* `-Infinity`.
|
|
85
|
+
*
|
|
86
|
+
* @param value - The value to check
|
|
87
|
+
* @returns `true` if the value is a positive finite number, `false` otherwise
|
|
85
88
|
*/
|
|
86
89
|
export const isPositiveFiniteNumber = is;
|
|
87
90
|
|
|
88
91
|
/**
|
|
89
|
-
* Casts a number to
|
|
92
|
+
* Casts a `number` to the `PositiveFiniteNumber` branded type.
|
|
93
|
+
*
|
|
94
|
+
* Validates that the value is a positive finite number and returns it with the
|
|
95
|
+
* `PositiveFiniteNumber` brand. Throws a `TypeError` otherwise.
|
|
90
96
|
*
|
|
91
|
-
* @param value The value to cast
|
|
92
|
-
* @returns The value as a PositiveFiniteNumber
|
|
93
|
-
* @throws {TypeError} If the value is not a positive finite number
|
|
97
|
+
* @param value - The value to cast
|
|
98
|
+
* @returns The value as a `PositiveFiniteNumber`
|
|
99
|
+
* @throws {TypeError} If the value is not a positive finite number
|
|
94
100
|
*/
|
|
95
101
|
export const asPositiveFiniteNumber = castType;
|
|
96
102
|
|
|
97
103
|
/**
|
|
98
|
-
* Namespace providing type-safe
|
|
99
|
-
*
|
|
104
|
+
* Namespace providing type-safe operations for the `PositiveFiniteNumber`
|
|
105
|
+
* branded type.
|
|
100
106
|
*
|
|
101
|
-
*
|
|
102
|
-
* results to MIN_VALUE, while ensuring results remain finite (excluding NaN and
|
|
103
|
-
* Infinity). This type is useful for representing quantities that must always
|
|
104
|
-
* be positive, such as probabilities, magnitudes, and physical measurements.
|
|
107
|
+
* The `PositiveFiniteNumber` type represents a positive finite number.
|
|
105
108
|
*/
|
|
106
109
|
export const PositiveFiniteNumber = {
|
|
107
110
|
/**
|
|
108
|
-
* Type guard
|
|
111
|
+
* Type guard that checks if a value is a positive finite number.
|
|
109
112
|
*
|
|
110
|
-
* @param value The value to check
|
|
111
|
-
* @returns `true` if the value is a positive finite number, `false`
|
|
112
|
-
*
|
|
113
|
+
* @param value - The value to check
|
|
114
|
+
* @returns `true` if the value is a positive finite number, `false` otherwise
|
|
115
|
+
* @see {@link isPositiveFiniteNumber} for usage examples
|
|
113
116
|
*/
|
|
114
117
|
is,
|
|
115
118
|
|
|
116
119
|
/**
|
|
117
|
-
* The
|
|
118
|
-
*
|
|
119
|
-
*
|
|
120
|
+
* The smallest value representable as `PositiveFiniteNumber` (the lower
|
|
121
|
+
* saturation target of `fromNumber`). The domain is open at `0` (excluded),
|
|
122
|
+
* so this is `Number.MIN_VALUE` — the smallest positive double — rather than
|
|
123
|
+
* `0`.
|
|
120
124
|
*/
|
|
121
125
|
MIN_VALUE,
|
|
122
126
|
|
|
123
127
|
/**
|
|
124
|
-
* Returns the
|
|
128
|
+
* Returns the smallest of the given positive finite numbers.
|
|
125
129
|
*
|
|
126
|
-
* @param
|
|
127
|
-
* @
|
|
128
|
-
* @returns The minimum value as a PositiveFiniteNumber.
|
|
130
|
+
* @param values - The positive finite numbers to compare (at least one required)
|
|
131
|
+
* @returns The smallest value as a `PositiveFiniteNumber`
|
|
129
132
|
*/
|
|
130
133
|
min: min_,
|
|
131
134
|
|
|
132
135
|
/**
|
|
133
|
-
* Returns the
|
|
136
|
+
* Returns the largest of the given positive finite numbers.
|
|
134
137
|
*
|
|
135
|
-
* @param
|
|
136
|
-
* @
|
|
137
|
-
* @returns The maximum value as a PositiveFiniteNumber.
|
|
138
|
+
* @param values - The positive finite numbers to compare (at least one required)
|
|
139
|
+
* @returns The largest value as a `PositiveFiniteNumber`
|
|
138
140
|
*/
|
|
139
141
|
max: max_,
|
|
140
142
|
|
|
141
143
|
/**
|
|
142
|
-
*
|
|
144
|
+
* Converts an arbitrary `number` into a `PositiveFiniteNumber`, saturating it
|
|
145
|
+
* into the range `[MIN_VALUE, MAX_VALUE]`.
|
|
143
146
|
*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
147
|
+
* Unlike `asPositiveFiniteNumber`, this is total: out-of-range inputs are
|
|
148
|
+
* clamped to the nearest representable `PositiveFiniteNumber` instead of
|
|
149
|
+
* throwing.
|
|
150
|
+
*
|
|
151
|
+
* @param value - The value to convert
|
|
152
|
+
* @returns The value as a `PositiveFiniteNumber`
|
|
146
153
|
*/
|
|
147
|
-
|
|
154
|
+
fromNumber,
|
|
148
155
|
|
|
149
156
|
/**
|
|
150
|
-
*
|
|
157
|
+
* Returns the greatest integer less than or equal to a positive finite
|
|
158
|
+
* number.
|
|
151
159
|
*
|
|
152
|
-
* @param
|
|
153
|
-
* @returns The
|
|
160
|
+
* @param a - The positive finite number value
|
|
161
|
+
* @returns The floored value as an integer
|
|
154
162
|
*/
|
|
155
163
|
floor,
|
|
156
164
|
|
|
157
165
|
/**
|
|
158
|
-
*
|
|
166
|
+
* Returns the smallest integer greater than or equal to a positive finite
|
|
167
|
+
* number.
|
|
159
168
|
*
|
|
160
|
-
* @param
|
|
161
|
-
* @returns The
|
|
169
|
+
* @param a - The positive finite number value
|
|
170
|
+
* @returns The ceiled value as an integer
|
|
162
171
|
*/
|
|
163
172
|
ceil,
|
|
164
173
|
|
|
165
174
|
/**
|
|
166
|
-
*
|
|
175
|
+
* Returns the value of a positive finite number rounded to the nearest
|
|
176
|
+
* integer.
|
|
167
177
|
*
|
|
168
|
-
* @param
|
|
169
|
-
* @returns The rounded value as
|
|
178
|
+
* @param a - The positive finite number value
|
|
179
|
+
* @returns The rounded value as an integer
|
|
170
180
|
*/
|
|
171
181
|
round,
|
|
172
182
|
|
|
173
183
|
/**
|
|
174
|
-
* Generates a random PositiveFiniteNumber
|
|
184
|
+
* Generates a random `PositiveFiniteNumber` within the given range.
|
|
185
|
+
*
|
|
186
|
+
* The range is inclusive on both ends.
|
|
175
187
|
*
|
|
176
|
-
* @
|
|
188
|
+
* @param min - The minimum value (inclusive)
|
|
189
|
+
* @param max - The maximum value (inclusive)
|
|
190
|
+
* @returns A random `PositiveFiniteNumber` in `[min, max]`
|
|
177
191
|
*/
|
|
178
192
|
random,
|
|
179
193
|
|
|
180
194
|
/**
|
|
181
|
-
* Raises a
|
|
195
|
+
* Raises `a` to the power `b`, returning `a ** b` as a
|
|
196
|
+
* `PositiveFiniteNumber`.
|
|
182
197
|
*
|
|
183
|
-
* @param a The base
|
|
184
|
-
* @param b The exponent
|
|
185
|
-
* @returns `a ** b`
|
|
198
|
+
* @param a - The base positive finite number
|
|
199
|
+
* @param b - The exponent positive finite number
|
|
200
|
+
* @returns `a ** b` as a `PositiveFiniteNumber`
|
|
186
201
|
*/
|
|
187
202
|
pow,
|
|
188
203
|
|
|
189
204
|
/**
|
|
190
|
-
* Adds two
|
|
205
|
+
* Adds two positive finite numbers, returning `a + b` as a
|
|
206
|
+
* `PositiveFiniteNumber`.
|
|
191
207
|
*
|
|
192
|
-
* @param a The first
|
|
193
|
-
* @param b The second
|
|
194
|
-
* @returns `a
|
|
208
|
+
* @param a - The first positive finite number
|
|
209
|
+
* @param b - The second positive finite number
|
|
210
|
+
* @returns The sum of `a` and `b` as a `PositiveFiniteNumber`
|
|
195
211
|
*/
|
|
196
212
|
add,
|
|
197
213
|
|
|
198
214
|
/**
|
|
199
|
-
* Subtracts
|
|
215
|
+
* Subtracts two positive finite numbers, returning `a - b` as a
|
|
216
|
+
* `PositiveFiniteNumber`.
|
|
200
217
|
*
|
|
201
|
-
* @param a The
|
|
202
|
-
* @param b The
|
|
203
|
-
* @returns `a
|
|
204
|
-
* MIN_VALUE).
|
|
218
|
+
* @param a - The first positive finite number
|
|
219
|
+
* @param b - The second positive finite number
|
|
220
|
+
* @returns The difference of `a` and `b` as a `PositiveFiniteNumber`
|
|
205
221
|
*/
|
|
206
222
|
sub,
|
|
207
223
|
|
|
208
224
|
/**
|
|
209
|
-
* Multiplies two
|
|
225
|
+
* Multiplies two positive finite numbers, returning `a * b` as a
|
|
226
|
+
* `PositiveFiniteNumber`.
|
|
210
227
|
*
|
|
211
|
-
* @param a The first
|
|
212
|
-
* @param b The second
|
|
213
|
-
* @returns `a
|
|
228
|
+
* @param a - The first positive finite number
|
|
229
|
+
* @param b - The second positive finite number
|
|
230
|
+
* @returns The product of `a` and `b` as a `PositiveFiniteNumber`
|
|
214
231
|
*/
|
|
215
232
|
mul,
|
|
216
233
|
|
|
217
234
|
/**
|
|
218
|
-
* Divides
|
|
235
|
+
* Divides two positive finite numbers, returning `a / b` as a
|
|
236
|
+
* `PositiveFiniteNumber`.
|
|
219
237
|
*
|
|
220
|
-
* @param a The dividend
|
|
221
|
-
* @param b The divisor
|
|
222
|
-
* @returns `a / b`
|
|
238
|
+
* @param a - The dividend
|
|
239
|
+
* @param b - The divisor (must be non-zero)
|
|
240
|
+
* @returns `a / b` as a `PositiveFiniteNumber`
|
|
223
241
|
*/
|
|
224
242
|
div,
|
|
225
243
|
} as const;
|