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,8 +13,8 @@ const {
|
|
|
13
13
|
MIN_VALUE,
|
|
14
14
|
add,
|
|
15
15
|
castType,
|
|
16
|
-
clamp,
|
|
17
16
|
div,
|
|
17
|
+
fromNumber,
|
|
18
18
|
is,
|
|
19
19
|
max: max_,
|
|
20
20
|
min: min_,
|
|
@@ -34,131 +34,141 @@ const {
|
|
|
34
34
|
} as const);
|
|
35
35
|
|
|
36
36
|
/**
|
|
37
|
-
*
|
|
38
|
-
* the range [1, 2^16)).
|
|
37
|
+
* Type guard that checks if a value is a positive integer in [1, 2^16).
|
|
39
38
|
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
39
|
+
* Returns `true` for a positive integer in [1, 2^16) — a value with no
|
|
40
|
+
* fractional component.
|
|
41
|
+
*
|
|
42
|
+
* @param value - The value to check
|
|
43
|
+
* @returns `true` if the value is a positive integer in [1, 2^16), `false` otherwise
|
|
42
44
|
*/
|
|
43
45
|
export const isPositiveUint16 = is;
|
|
44
46
|
|
|
45
47
|
/**
|
|
46
|
-
* Casts a number to
|
|
48
|
+
* Casts a `number` to the `PositiveUint16` branded type.
|
|
49
|
+
*
|
|
50
|
+
* Validates that the value is a positive integer in [1, 2^16) and returns it
|
|
51
|
+
* with the `PositiveUint16` brand. Throws a `TypeError` otherwise.
|
|
47
52
|
*
|
|
48
|
-
* @param value The value to cast
|
|
49
|
-
* @returns The value as a PositiveUint16
|
|
50
|
-
* @throws {TypeError} If the value is not a positive integer in [1, 2^16)
|
|
53
|
+
* @param value - The value to cast
|
|
54
|
+
* @returns The value as a `PositiveUint16`
|
|
55
|
+
* @throws {TypeError} If the value is not a positive integer in [1, 2^16)
|
|
51
56
|
*/
|
|
52
57
|
export const asPositiveUint16 = castType;
|
|
53
58
|
|
|
54
59
|
/**
|
|
55
|
-
* Namespace providing type-safe
|
|
56
|
-
*
|
|
60
|
+
* Namespace providing type-safe operations for the `PositiveUint16` branded
|
|
61
|
+
* type.
|
|
57
62
|
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
* unsigned integer constraint, with results below 1 clamped to MIN_VALUE and
|
|
61
|
-
* overflow results clamped to MAX_VALUE.
|
|
63
|
+
* The `PositiveUint16` type represents a positive integer in [1, 2^16).
|
|
64
|
+
* Division (`div`) uses floor division.
|
|
62
65
|
*/
|
|
63
66
|
export const PositiveUint16 = {
|
|
64
67
|
/**
|
|
65
|
-
* Type guard
|
|
68
|
+
* Type guard that checks if a value is a positive integer in [1, 2^16).
|
|
66
69
|
*
|
|
67
|
-
* @param value The value to check
|
|
68
|
-
* @returns `true` if the value is a
|
|
69
|
-
*
|
|
70
|
+
* @param value - The value to check
|
|
71
|
+
* @returns `true` if the value is a positive integer in [1, 2^16), `false` otherwise
|
|
72
|
+
* @see {@link isPositiveUint16} for usage examples
|
|
70
73
|
*/
|
|
71
74
|
is,
|
|
72
75
|
|
|
73
76
|
/**
|
|
74
|
-
* The
|
|
75
|
-
*
|
|
76
|
-
* @readonly
|
|
77
|
+
* The smallest value representable as `PositiveUint16` (the lower saturation
|
|
78
|
+
* target of `fromNumber`).
|
|
77
79
|
*/
|
|
78
80
|
MIN_VALUE,
|
|
79
81
|
|
|
80
82
|
/**
|
|
81
|
-
* The
|
|
82
|
-
*
|
|
83
|
-
* @readonly
|
|
83
|
+
* The largest value representable as `PositiveUint16` (the upper saturation
|
|
84
|
+
* target of `fromNumber`).
|
|
84
85
|
*/
|
|
85
86
|
MAX_VALUE,
|
|
86
87
|
|
|
87
88
|
/**
|
|
88
|
-
* Returns the
|
|
89
|
+
* Returns the smallest of the given positive integers.
|
|
89
90
|
*
|
|
90
|
-
* @param
|
|
91
|
-
* @
|
|
92
|
-
* @returns The minimum value as a PositiveUint16.
|
|
91
|
+
* @param values - The positive integers to compare (at least one required)
|
|
92
|
+
* @returns The smallest value as a `PositiveUint16`
|
|
93
93
|
*/
|
|
94
94
|
min: min_,
|
|
95
95
|
|
|
96
96
|
/**
|
|
97
|
-
* Returns the
|
|
97
|
+
* Returns the largest of the given positive integers.
|
|
98
98
|
*
|
|
99
|
-
* @param
|
|
100
|
-
* @
|
|
101
|
-
* @returns The maximum value as a PositiveUint16.
|
|
99
|
+
* @param values - The positive integers to compare (at least one required)
|
|
100
|
+
* @returns The largest value as a `PositiveUint16`
|
|
102
101
|
*/
|
|
103
102
|
max: max_,
|
|
104
103
|
|
|
105
104
|
/**
|
|
106
|
-
*
|
|
105
|
+
* Converts an arbitrary `number` into a `PositiveUint16`, rounding to the
|
|
106
|
+
* nearest integer and saturating the result into the range `[MIN_VALUE,
|
|
107
|
+
* MAX_VALUE]`.
|
|
108
|
+
*
|
|
109
|
+
* Unlike `asPositiveUint16`, this is total: out-of-range inputs are clamped
|
|
110
|
+
* to the nearest representable `PositiveUint16` instead of throwing.
|
|
107
111
|
*
|
|
108
|
-
* @param value The
|
|
109
|
-
* @returns The value
|
|
112
|
+
* @param value - The value to convert
|
|
113
|
+
* @returns The value as a `PositiveUint16`
|
|
110
114
|
*/
|
|
111
|
-
|
|
115
|
+
fromNumber,
|
|
112
116
|
|
|
113
117
|
/**
|
|
114
|
-
* Generates a random PositiveUint16
|
|
118
|
+
* Generates a random `PositiveUint16` within the given range.
|
|
119
|
+
*
|
|
120
|
+
* The range is inclusive on both ends.
|
|
115
121
|
*
|
|
116
|
-
* @
|
|
122
|
+
* @param min - The minimum value (inclusive)
|
|
123
|
+
* @param max - The maximum value (inclusive)
|
|
124
|
+
* @returns A random `PositiveUint16` in `[min, max]`
|
|
117
125
|
*/
|
|
118
126
|
random,
|
|
119
127
|
|
|
120
128
|
/**
|
|
121
|
-
* Raises a
|
|
129
|
+
* Raises `a` to the power `b`, returning `a ** b` as a `PositiveUint16`
|
|
130
|
+
* (floored to an integer).
|
|
122
131
|
*
|
|
123
|
-
* @param a The base
|
|
124
|
-
* @param b The exponent
|
|
125
|
-
* @returns `a ** b`
|
|
132
|
+
* @param a - The base positive integer
|
|
133
|
+
* @param b - The exponent positive integer
|
|
134
|
+
* @returns `a ** b` as a `PositiveUint16`
|
|
126
135
|
*/
|
|
127
136
|
pow,
|
|
128
137
|
|
|
129
138
|
/**
|
|
130
|
-
* Adds two PositiveUint16
|
|
139
|
+
* Adds two positive integers, returning `a + b` as a `PositiveUint16`.
|
|
131
140
|
*
|
|
132
|
-
* @param a The first
|
|
133
|
-
* @param b The second
|
|
134
|
-
* @returns `a
|
|
141
|
+
* @param a - The first positive integer
|
|
142
|
+
* @param b - The second positive integer
|
|
143
|
+
* @returns The sum of `a` and `b` as a `PositiveUint16`
|
|
135
144
|
*/
|
|
136
145
|
add,
|
|
137
146
|
|
|
138
147
|
/**
|
|
139
|
-
* Subtracts
|
|
148
|
+
* Subtracts two positive integers, returning `a - b` as a `PositiveUint16`.
|
|
140
149
|
*
|
|
141
|
-
* @param a The
|
|
142
|
-
* @param b The
|
|
143
|
-
* @returns `a
|
|
150
|
+
* @param a - The first positive integer
|
|
151
|
+
* @param b - The second positive integer
|
|
152
|
+
* @returns The difference of `a` and `b` as a `PositiveUint16`
|
|
144
153
|
*/
|
|
145
154
|
sub,
|
|
146
155
|
|
|
147
156
|
/**
|
|
148
|
-
* Multiplies two PositiveUint16
|
|
157
|
+
* Multiplies two positive integers, returning `a * b` as a `PositiveUint16`.
|
|
149
158
|
*
|
|
150
|
-
* @param a The first
|
|
151
|
-
* @param b The second
|
|
152
|
-
* @returns `a
|
|
159
|
+
* @param a - The first positive integer
|
|
160
|
+
* @param b - The second positive integer
|
|
161
|
+
* @returns The product of `a` and `b` as a `PositiveUint16`
|
|
153
162
|
*/
|
|
154
163
|
mul,
|
|
155
164
|
|
|
156
165
|
/**
|
|
157
|
-
* Divides
|
|
166
|
+
* Divides two positive integers using floor division (`⌊a / b⌋`): the result
|
|
167
|
+
* is `a / b` rounded toward negative infinity, as a `PositiveUint16`.
|
|
158
168
|
*
|
|
159
|
-
* @param a The dividend
|
|
160
|
-
* @param b The divisor
|
|
161
|
-
* @returns
|
|
169
|
+
* @param a - The dividend
|
|
170
|
+
* @param b - The divisor (must be non-zero)
|
|
171
|
+
* @returns The floored quotient as a `PositiveUint16`
|
|
162
172
|
*/
|
|
163
173
|
div,
|
|
164
174
|
} as const;
|
|
@@ -13,8 +13,8 @@ const {
|
|
|
13
13
|
MIN_VALUE,
|
|
14
14
|
add,
|
|
15
15
|
castType,
|
|
16
|
-
clamp,
|
|
17
16
|
div,
|
|
17
|
+
fromNumber,
|
|
18
18
|
is,
|
|
19
19
|
max: max_,
|
|
20
20
|
min: min_,
|
|
@@ -34,132 +34,141 @@ const {
|
|
|
34
34
|
} as const);
|
|
35
35
|
|
|
36
36
|
/**
|
|
37
|
-
*
|
|
38
|
-
* the range [1, 2^32)).
|
|
37
|
+
* Type guard that checks if a value is a positive integer in [1, 2^32).
|
|
39
38
|
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
39
|
+
* Returns `true` for a positive integer in [1, 2^32) — a value with no
|
|
40
|
+
* fractional component.
|
|
41
|
+
*
|
|
42
|
+
* @param value - The value to check
|
|
43
|
+
* @returns `true` if the value is a positive integer in [1, 2^32), `false` otherwise
|
|
42
44
|
*/
|
|
43
45
|
export const isPositiveUint32 = is;
|
|
44
46
|
|
|
45
47
|
/**
|
|
46
|
-
* Casts a number to
|
|
48
|
+
* Casts a `number` to the `PositiveUint32` branded type.
|
|
49
|
+
*
|
|
50
|
+
* Validates that the value is a positive integer in [1, 2^32) and returns it
|
|
51
|
+
* with the `PositiveUint32` brand. Throws a `TypeError` otherwise.
|
|
47
52
|
*
|
|
48
|
-
* @param value The value to cast
|
|
49
|
-
* @returns The value as a PositiveUint32
|
|
50
|
-
* @throws {TypeError} If the value is not a positive integer in [1, 2^32)
|
|
53
|
+
* @param value - The value to cast
|
|
54
|
+
* @returns The value as a `PositiveUint32`
|
|
55
|
+
* @throws {TypeError} If the value is not a positive integer in [1, 2^32)
|
|
51
56
|
*/
|
|
52
57
|
export const asPositiveUint32 = castType;
|
|
53
58
|
|
|
54
59
|
/**
|
|
55
|
-
* Namespace providing type-safe
|
|
56
|
-
*
|
|
60
|
+
* Namespace providing type-safe operations for the `PositiveUint32` branded
|
|
61
|
+
* type.
|
|
57
62
|
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
* positive unsigned integer constraint, with results below 1 clamped to
|
|
61
|
-
* MIN_VALUE and overflow results clamped to MAX_VALUE.
|
|
63
|
+
* The `PositiveUint32` type represents a positive integer in [1, 2^32).
|
|
64
|
+
* Division (`div`) uses floor division.
|
|
62
65
|
*/
|
|
63
66
|
export const PositiveUint32 = {
|
|
64
67
|
/**
|
|
65
|
-
* Type guard
|
|
68
|
+
* Type guard that checks if a value is a positive integer in [1, 2^32).
|
|
66
69
|
*
|
|
67
|
-
* @param value The value to check
|
|
68
|
-
* @returns `true` if the value is a
|
|
69
|
-
*
|
|
70
|
+
* @param value - The value to check
|
|
71
|
+
* @returns `true` if the value is a positive integer in [1, 2^32), `false` otherwise
|
|
72
|
+
* @see {@link isPositiveUint32} for usage examples
|
|
70
73
|
*/
|
|
71
74
|
is,
|
|
72
75
|
|
|
73
76
|
/**
|
|
74
|
-
* The
|
|
75
|
-
*
|
|
76
|
-
* @readonly
|
|
77
|
+
* The smallest value representable as `PositiveUint32` (the lower saturation
|
|
78
|
+
* target of `fromNumber`).
|
|
77
79
|
*/
|
|
78
80
|
MIN_VALUE,
|
|
79
81
|
|
|
80
82
|
/**
|
|
81
|
-
* The
|
|
82
|
-
*
|
|
83
|
-
* @readonly
|
|
83
|
+
* The largest value representable as `PositiveUint32` (the upper saturation
|
|
84
|
+
* target of `fromNumber`).
|
|
84
85
|
*/
|
|
85
86
|
MAX_VALUE,
|
|
86
87
|
|
|
87
88
|
/**
|
|
88
|
-
* Returns the
|
|
89
|
+
* Returns the smallest of the given positive integers.
|
|
89
90
|
*
|
|
90
|
-
* @param
|
|
91
|
-
* @
|
|
92
|
-
* @returns The minimum value as a PositiveUint32.
|
|
91
|
+
* @param values - The positive integers to compare (at least one required)
|
|
92
|
+
* @returns The smallest value as a `PositiveUint32`
|
|
93
93
|
*/
|
|
94
94
|
min: min_,
|
|
95
95
|
|
|
96
96
|
/**
|
|
97
|
-
* Returns the
|
|
97
|
+
* Returns the largest of the given positive integers.
|
|
98
98
|
*
|
|
99
|
-
* @param
|
|
100
|
-
* @
|
|
101
|
-
* @returns The maximum value as a PositiveUint32.
|
|
99
|
+
* @param values - The positive integers to compare (at least one required)
|
|
100
|
+
* @returns The largest value as a `PositiveUint32`
|
|
102
101
|
*/
|
|
103
102
|
max: max_,
|
|
104
103
|
|
|
105
104
|
/**
|
|
106
|
-
*
|
|
105
|
+
* Converts an arbitrary `number` into a `PositiveUint32`, rounding to the
|
|
106
|
+
* nearest integer and saturating the result into the range `[MIN_VALUE,
|
|
107
|
+
* MAX_VALUE]`.
|
|
108
|
+
*
|
|
109
|
+
* Unlike `asPositiveUint32`, this is total: out-of-range inputs are clamped
|
|
110
|
+
* to the nearest representable `PositiveUint32` instead of throwing.
|
|
107
111
|
*
|
|
108
|
-
* @param value The
|
|
109
|
-
* @returns The value
|
|
112
|
+
* @param value - The value to convert
|
|
113
|
+
* @returns The value as a `PositiveUint32`
|
|
110
114
|
*/
|
|
111
|
-
|
|
115
|
+
fromNumber,
|
|
112
116
|
|
|
113
117
|
/**
|
|
114
|
-
* Generates a random PositiveUint32
|
|
118
|
+
* Generates a random `PositiveUint32` within the given range.
|
|
119
|
+
*
|
|
120
|
+
* The range is inclusive on both ends.
|
|
115
121
|
*
|
|
116
|
-
* @
|
|
122
|
+
* @param min - The minimum value (inclusive)
|
|
123
|
+
* @param max - The maximum value (inclusive)
|
|
124
|
+
* @returns A random `PositiveUint32` in `[min, max]`
|
|
117
125
|
*/
|
|
118
126
|
random,
|
|
119
127
|
|
|
120
128
|
/**
|
|
121
|
-
* Raises a
|
|
129
|
+
* Raises `a` to the power `b`, returning `a ** b` as a `PositiveUint32`
|
|
130
|
+
* (floored to an integer).
|
|
122
131
|
*
|
|
123
|
-
* @param a The base
|
|
124
|
-
* @param b The exponent
|
|
125
|
-
* @returns `a ** b`
|
|
132
|
+
* @param a - The base positive integer
|
|
133
|
+
* @param b - The exponent positive integer
|
|
134
|
+
* @returns `a ** b` as a `PositiveUint32`
|
|
126
135
|
*/
|
|
127
136
|
pow,
|
|
128
137
|
|
|
129
138
|
/**
|
|
130
|
-
* Adds two PositiveUint32
|
|
139
|
+
* Adds two positive integers, returning `a + b` as a `PositiveUint32`.
|
|
131
140
|
*
|
|
132
|
-
* @param a The first
|
|
133
|
-
* @param b The second
|
|
134
|
-
* @returns `a
|
|
141
|
+
* @param a - The first positive integer
|
|
142
|
+
* @param b - The second positive integer
|
|
143
|
+
* @returns The sum of `a` and `b` as a `PositiveUint32`
|
|
135
144
|
*/
|
|
136
145
|
add,
|
|
137
146
|
|
|
138
147
|
/**
|
|
139
|
-
* Subtracts
|
|
148
|
+
* Subtracts two positive integers, returning `a - b` as a `PositiveUint32`.
|
|
140
149
|
*
|
|
141
|
-
* @param a The
|
|
142
|
-
* @param b The
|
|
143
|
-
* @returns `a
|
|
144
|
-
* 1).
|
|
150
|
+
* @param a - The first positive integer
|
|
151
|
+
* @param b - The second positive integer
|
|
152
|
+
* @returns The difference of `a` and `b` as a `PositiveUint32`
|
|
145
153
|
*/
|
|
146
154
|
sub,
|
|
147
155
|
|
|
148
156
|
/**
|
|
149
|
-
* Multiplies two PositiveUint32
|
|
157
|
+
* Multiplies two positive integers, returning `a * b` as a `PositiveUint32`.
|
|
150
158
|
*
|
|
151
|
-
* @param a The first
|
|
152
|
-
* @param b The second
|
|
153
|
-
* @returns `a
|
|
159
|
+
* @param a - The first positive integer
|
|
160
|
+
* @param b - The second positive integer
|
|
161
|
+
* @returns The product of `a` and `b` as a `PositiveUint32`
|
|
154
162
|
*/
|
|
155
163
|
mul,
|
|
156
164
|
|
|
157
165
|
/**
|
|
158
|
-
* Divides
|
|
166
|
+
* Divides two positive integers using floor division (`⌊a / b⌋`): the result
|
|
167
|
+
* is `a / b` rounded toward negative infinity, as a `PositiveUint32`.
|
|
159
168
|
*
|
|
160
|
-
* @param a The dividend
|
|
161
|
-
* @param b The divisor
|
|
162
|
-
* @returns
|
|
169
|
+
* @param a - The dividend
|
|
170
|
+
* @param b - The divisor (must be non-zero)
|
|
171
|
+
* @returns The floored quotient as a `PositiveUint32`
|
|
163
172
|
*/
|
|
164
173
|
div,
|
|
165
174
|
} as const;
|