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
|
@@ -6,8 +6,8 @@ const {
|
|
|
6
6
|
MIN_VALUE,
|
|
7
7
|
add,
|
|
8
8
|
castType,
|
|
9
|
-
clamp,
|
|
10
9
|
div,
|
|
10
|
+
fromNumber,
|
|
11
11
|
is,
|
|
12
12
|
max: max_,
|
|
13
13
|
min: min_,
|
|
@@ -26,7 +26,7 @@ const isPositiveSafeInt = is;
|
|
|
26
26
|
const asPositiveSafeInt = castType;
|
|
27
27
|
const PositiveSafeInt = {
|
|
28
28
|
/**
|
|
29
|
-
* Type guard
|
|
29
|
+
* Type guard that checks if a value is a positive safe integer.
|
|
30
30
|
*
|
|
31
31
|
* @example
|
|
32
32
|
*
|
|
@@ -40,25 +40,23 @@ const PositiveSafeInt = {
|
|
|
40
40
|
* assert.isTrue(PositiveSafeInt.is(42));
|
|
41
41
|
* ```
|
|
42
42
|
*
|
|
43
|
-
* @param value The value to check
|
|
44
|
-
* @returns `true` if the value is a positive safe integer, `false` otherwise
|
|
43
|
+
* @param value - The value to check
|
|
44
|
+
* @returns `true` if the value is a positive safe integer, `false` otherwise
|
|
45
45
|
* @see {@link isPositiveSafeInt} for usage examples
|
|
46
46
|
*/
|
|
47
47
|
is,
|
|
48
48
|
/**
|
|
49
|
-
* The
|
|
50
|
-
*
|
|
51
|
-
* @readonly
|
|
49
|
+
* The smallest value representable as `PositiveSafeInt` (the lower saturation
|
|
50
|
+
* target of `fromNumber`).
|
|
52
51
|
*/
|
|
53
52
|
MIN_VALUE,
|
|
54
53
|
/**
|
|
55
|
-
* The
|
|
56
|
-
*
|
|
57
|
-
* @readonly
|
|
54
|
+
* The largest value representable as `PositiveSafeInt` (the upper saturation
|
|
55
|
+
* target of `fromNumber`).
|
|
58
56
|
*/
|
|
59
57
|
MAX_VALUE,
|
|
60
58
|
/**
|
|
61
|
-
* Returns the
|
|
59
|
+
* Returns the smallest of the given positive safe integers.
|
|
62
60
|
*
|
|
63
61
|
* @example
|
|
64
62
|
*
|
|
@@ -71,13 +69,12 @@ const PositiveSafeInt = {
|
|
|
71
69
|
* assert.isTrue(smallest === 5);
|
|
72
70
|
* ```
|
|
73
71
|
*
|
|
74
|
-
* @param
|
|
75
|
-
* @
|
|
76
|
-
* @returns The minimum value as a PositiveSafeInt.
|
|
72
|
+
* @param values - The positive safe integers to compare (at least one required)
|
|
73
|
+
* @returns The smallest value as a `PositiveSafeInt`
|
|
77
74
|
*/
|
|
78
75
|
min: min_,
|
|
79
76
|
/**
|
|
80
|
-
* Returns the
|
|
77
|
+
* Returns the largest of the given positive safe integers.
|
|
81
78
|
*
|
|
82
79
|
* @example
|
|
83
80
|
*
|
|
@@ -90,22 +87,26 @@ const PositiveSafeInt = {
|
|
|
90
87
|
* assert.isTrue(largest === 10);
|
|
91
88
|
* ```
|
|
92
89
|
*
|
|
93
|
-
* @param
|
|
94
|
-
* @
|
|
95
|
-
* @returns The maximum value as a PositiveSafeInt.
|
|
90
|
+
* @param values - The positive safe integers to compare (at least one required)
|
|
91
|
+
* @returns The largest value as a `PositiveSafeInt`
|
|
96
92
|
*/
|
|
97
93
|
max: max_,
|
|
98
94
|
/**
|
|
99
|
-
*
|
|
95
|
+
* Converts an arbitrary `number` into a `PositiveSafeInt`, rounding to the
|
|
96
|
+
* nearest integer and saturating the result into the range `[MIN_VALUE,
|
|
97
|
+
* MAX_VALUE]`.
|
|
98
|
+
*
|
|
99
|
+
* Unlike `asPositiveSafeInt`, this is total: out-of-range inputs are clamped
|
|
100
|
+
* to the nearest representable `PositiveSafeInt` instead of throwing.
|
|
100
101
|
*
|
|
101
102
|
* @example
|
|
102
103
|
*
|
|
103
104
|
* ```ts
|
|
104
|
-
* const belowRange = PositiveSafeInt.
|
|
105
|
+
* const belowRange = PositiveSafeInt.fromNumber(0);
|
|
105
106
|
*
|
|
106
|
-
* const withinRange = PositiveSafeInt.
|
|
107
|
+
* const withinRange = PositiveSafeInt.fromNumber(123);
|
|
107
108
|
*
|
|
108
|
-
* const aboveRange = PositiveSafeInt.
|
|
109
|
+
* const aboveRange = PositiveSafeInt.fromNumber(Number.MAX_SAFE_INTEGER + 10);
|
|
109
110
|
*
|
|
110
111
|
* assert.isTrue(belowRange === 1);
|
|
111
112
|
*
|
|
@@ -114,12 +115,14 @@ const PositiveSafeInt = {
|
|
|
114
115
|
* assert.isTrue(aboveRange === Number.MAX_SAFE_INTEGER);
|
|
115
116
|
* ```
|
|
116
117
|
*
|
|
117
|
-
* @param value The
|
|
118
|
-
* @returns The value
|
|
118
|
+
* @param value - The value to convert
|
|
119
|
+
* @returns The value as a `PositiveSafeInt`
|
|
119
120
|
*/
|
|
120
|
-
|
|
121
|
+
fromNumber,
|
|
121
122
|
/**
|
|
122
|
-
* Generates a random PositiveSafeInt
|
|
123
|
+
* Generates a random `PositiveSafeInt` within the given range.
|
|
124
|
+
*
|
|
125
|
+
* The range is inclusive on both ends.
|
|
123
126
|
*
|
|
124
127
|
* @example
|
|
125
128
|
*
|
|
@@ -135,11 +138,14 @@ const PositiveSafeInt = {
|
|
|
135
138
|
* assert.isTrue(randomValue >= 1 && randomValue <= 6);
|
|
136
139
|
* ```
|
|
137
140
|
*
|
|
138
|
-
* @
|
|
141
|
+
* @param min - The minimum value (inclusive)
|
|
142
|
+
* @param max - The maximum value (inclusive)
|
|
143
|
+
* @returns A random `PositiveSafeInt` in `[min, max]`
|
|
139
144
|
*/
|
|
140
145
|
random,
|
|
141
146
|
/**
|
|
142
|
-
* Raises a
|
|
147
|
+
* Raises `a` to the power `b`, returning `a ** b` as a `PositiveSafeInt`
|
|
148
|
+
* (floored to an integer).
|
|
143
149
|
*
|
|
144
150
|
* @example
|
|
145
151
|
*
|
|
@@ -153,13 +159,13 @@ const PositiveSafeInt = {
|
|
|
153
159
|
* assert.isTrue(power === 27);
|
|
154
160
|
* ```
|
|
155
161
|
*
|
|
156
|
-
* @param a The base
|
|
157
|
-
* @param b The exponent
|
|
158
|
-
* @returns `a ** b`
|
|
162
|
+
* @param a - The base positive safe integer
|
|
163
|
+
* @param b - The exponent positive safe integer
|
|
164
|
+
* @returns `a ** b` as a `PositiveSafeInt`
|
|
159
165
|
*/
|
|
160
166
|
pow,
|
|
161
167
|
/**
|
|
162
|
-
* Adds two PositiveSafeInt
|
|
168
|
+
* Adds two positive safe integers, returning `a + b` as a `PositiveSafeInt`.
|
|
163
169
|
*
|
|
164
170
|
* @example
|
|
165
171
|
*
|
|
@@ -174,13 +180,14 @@ const PositiveSafeInt = {
|
|
|
174
180
|
* assert.isTrue(PositiveSafeInt.is(sum));
|
|
175
181
|
* ```
|
|
176
182
|
*
|
|
177
|
-
* @param a The first
|
|
178
|
-
* @param b The second
|
|
179
|
-
* @returns `a
|
|
183
|
+
* @param a - The first positive safe integer
|
|
184
|
+
* @param b - The second positive safe integer
|
|
185
|
+
* @returns The sum of `a` and `b` as a `PositiveSafeInt`
|
|
180
186
|
*/
|
|
181
187
|
add,
|
|
182
188
|
/**
|
|
183
|
-
* Subtracts
|
|
189
|
+
* Subtracts two positive safe integers, returning `a - b` as a
|
|
190
|
+
* `PositiveSafeInt`.
|
|
184
191
|
*
|
|
185
192
|
* @example
|
|
186
193
|
*
|
|
@@ -195,14 +202,14 @@ const PositiveSafeInt = {
|
|
|
195
202
|
* assert.isTrue(PositiveSafeInt.is(difference));
|
|
196
203
|
* ```
|
|
197
204
|
*
|
|
198
|
-
* @param a The
|
|
199
|
-
* @param b The
|
|
200
|
-
* @returns `a
|
|
201
|
-
* (minimum 1).
|
|
205
|
+
* @param a - The first positive safe integer
|
|
206
|
+
* @param b - The second positive safe integer
|
|
207
|
+
* @returns The difference of `a` and `b` as a `PositiveSafeInt`
|
|
202
208
|
*/
|
|
203
209
|
sub,
|
|
204
210
|
/**
|
|
205
|
-
* Multiplies two
|
|
211
|
+
* Multiplies two positive safe integers, returning `a * b` as a
|
|
212
|
+
* `PositiveSafeInt`.
|
|
206
213
|
*
|
|
207
214
|
* @example
|
|
208
215
|
*
|
|
@@ -217,13 +224,14 @@ const PositiveSafeInt = {
|
|
|
217
224
|
* assert.isTrue(PositiveSafeInt.is(product));
|
|
218
225
|
* ```
|
|
219
226
|
*
|
|
220
|
-
* @param a The first
|
|
221
|
-
* @param b The second
|
|
222
|
-
* @returns `a
|
|
227
|
+
* @param a - The first positive safe integer
|
|
228
|
+
* @param b - The second positive safe integer
|
|
229
|
+
* @returns The product of `a` and `b` as a `PositiveSafeInt`
|
|
223
230
|
*/
|
|
224
231
|
mul,
|
|
225
232
|
/**
|
|
226
|
-
* Divides
|
|
233
|
+
* Divides two positive safe integers using floor division (`⌊a / b⌋`): the
|
|
234
|
+
* result is `a / b` rounded toward negative infinity, as a `PositiveSafeInt`.
|
|
227
235
|
*
|
|
228
236
|
* @example
|
|
229
237
|
*
|
|
@@ -243,9 +251,9 @@ const PositiveSafeInt = {
|
|
|
243
251
|
* assert.isTrue(clamped === 1);
|
|
244
252
|
* ```
|
|
245
253
|
*
|
|
246
|
-
* @param a The dividend
|
|
247
|
-
* @param b The divisor
|
|
248
|
-
* @returns
|
|
254
|
+
* @param a - The dividend
|
|
255
|
+
* @param b - The divisor (must be non-zero)
|
|
256
|
+
* @returns The floored quotient as a `PositiveSafeInt`
|
|
249
257
|
*/
|
|
250
258
|
div
|
|
251
259
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"positive-safe-int.mjs","sources":["../../../src/number/branded-types/positive-safe-int.mts"],"sourcesContent":["import {\n type SafeUint,\n type PositiveSafeInt as TtfImported_PositiveSafeInt,\n} from 'ts-type-forge';\nimport { expectType } from '../../expect-type.mjs';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type PositiveSafeInt = TtfImported_PositiveSafeInt;\n\ntype ElementType = PositiveSafeInt;\n\nconst typeNameInMessage = 'a positive safe integer';\n\nconst {\n MAX_VALUE,\n MIN_VALUE,\n add,\n castType,\n clamp,\n div,\n is,\n max: max_,\n min: min_,\n mul,\n pow,\n random,\n sub,\n} = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<\n ElementType,\n 1,\n SafeUint\n>({\n integerOrSafeInteger: 'SafeInteger',\n MIN_VALUE: 1,\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion, math/prefer-number-max-safe-integer\n MAX_VALUE: Number.MAX_SAFE_INTEGER as SafeUint,\n typeNameInMessage,\n} as const);\n\n/**\n * Checks if a number is a PositiveSafeInt (a positive safe integer in the range\n * [1, MAX_SAFE_INTEGER]).\n *\n * @example\n *\n * ```ts\n * assert.isTrue(isPositiveSafeInt(1));\n *\n * assert.isTrue(isPositiveSafeInt(Number.MAX_SAFE_INTEGER));\n *\n * assert.isFalse(isPositiveSafeInt(0));\n *\n * assert.isTrue(PositiveSafeInt.is(42));\n * ```\n *\n * @param value The value to check.\n * @returns `true` if the value is a PositiveSafeInt, `false` otherwise.\n */\nexport const isPositiveSafeInt = is;\n\n/**\n * Casts a number to a PositiveSafeInt type.\n *\n * @example\n *\n * ```ts\n * const branded = asPositiveSafeInt(128);\n *\n * assert.isTrue(branded === 128);\n *\n * assert.isTrue(PositiveSafeInt.is(branded));\n * ```\n *\n * @param value The value to cast.\n * @returns The value as a PositiveSafeInt type.\n * @throws {TypeError} If the value is not a positive safe integer.\n */\nexport const asPositiveSafeInt = castType;\n\n/**\n * Namespace providing type-safe arithmetic operations for positive safe\n * integers.\n *\n * All operations automatically clamp results to the positive safe integer range\n * [1, MAX_SAFE_INTEGER]. This ensures that all arithmetic maintains both the\n * positive constraint and IEEE 754 precision guarantees, preventing precision\n * loss and ensuring results are always positive.\n */\nexport const PositiveSafeInt = {\n /**\n * Type guard to check if a value is a PositiveSafeInt.\n *\n * @example\n *\n * ```ts\n * assert.isTrue(isPositiveSafeInt(1));\n *\n * assert.isTrue(isPositiveSafeInt(Number.MAX_SAFE_INTEGER));\n *\n * assert.isFalse(isPositiveSafeInt(0));\n *\n * assert.isTrue(PositiveSafeInt.is(42));\n * ```\n *\n * @param value The value to check.\n * @returns `true` if the value is a positive safe integer, `false` otherwise.\n * @see {@link isPositiveSafeInt} for usage examples\n */\n is,\n\n /**\n * The minimum value for a positive safe integer.\n *\n * @readonly\n */\n MIN_VALUE,\n\n /**\n * The maximum safe integer value (2^53 - 1).\n *\n * @readonly\n */\n MAX_VALUE,\n\n /**\n * Returns the smaller of two PositiveSafeInt values.\n *\n * @example\n *\n * ```ts\n * const smallest = PositiveSafeInt.min(\n * asPositiveSafeInt(10),\n * asPositiveSafeInt(5),\n * );\n *\n * assert.isTrue(smallest === 5);\n * ```\n *\n * @param a The first PositiveSafeInt.\n * @param b The second PositiveSafeInt.\n * @returns The minimum value as a PositiveSafeInt.\n */\n min: min_,\n\n /**\n * Returns the larger of two PositiveSafeInt values.\n *\n * @example\n *\n * ```ts\n * const largest = PositiveSafeInt.max(\n * asPositiveSafeInt(10),\n * asPositiveSafeInt(5),\n * );\n *\n * assert.isTrue(largest === 10);\n * ```\n *\n * @param a The first PositiveSafeInt.\n * @param b The second PositiveSafeInt.\n * @returns The maximum value as a PositiveSafeInt.\n */\n max: max_,\n\n /**\n * Clamps a number to the positive safe integer range.\n *\n * @example\n *\n * ```ts\n * const belowRange = PositiveSafeInt.clamp(0);\n *\n * const withinRange = PositiveSafeInt.clamp(123);\n *\n * const aboveRange = PositiveSafeInt.clamp(Number.MAX_SAFE_INTEGER + 10);\n *\n * assert.isTrue(belowRange === 1);\n *\n * assert.isTrue(withinRange === 123);\n *\n * assert.isTrue(aboveRange === Number.MAX_SAFE_INTEGER);\n * ```\n *\n * @param value The number to clamp.\n * @returns The value clamped to [1, MAX_SAFE_INTEGER] as a PositiveSafeInt.\n */\n clamp,\n\n /**\n * Generates a random PositiveSafeInt value within the valid range.\n *\n * @example\n *\n * ```ts\n * const min = asPositiveSafeInt(1);\n *\n * const max = asPositiveSafeInt(6);\n *\n * const randomValue = PositiveSafeInt.random(min, max);\n *\n * assert.isTrue(PositiveSafeInt.is(randomValue));\n *\n * assert.isTrue(randomValue >= 1 && randomValue <= 6);\n * ```\n *\n * @returns A random PositiveSafeInt between 1 and MAX_SAFE_INTEGER.\n */\n random,\n\n /**\n * Raises a PositiveSafeInt to the power of another PositiveSafeInt.\n *\n * @example\n *\n * ```ts\n * const base = asPositiveSafeInt(3);\n *\n * const exponent = asPositiveSafeInt(3);\n *\n * const power = PositiveSafeInt.pow(base, exponent);\n *\n * assert.isTrue(power === 27);\n * ```\n *\n * @param a The base PositiveSafeInt.\n * @param b The exponent PositiveSafeInt.\n * @returns `a ** b` clamped to [1, MAX_SAFE_INTEGER] as a PositiveSafeInt.\n */\n pow,\n\n /**\n * Adds two PositiveSafeInt values.\n *\n * @example\n *\n * ```ts\n * const sum = PositiveSafeInt.add(\n * asPositiveSafeInt(1000),\n * asPositiveSafeInt(2048),\n * );\n *\n * assert.isTrue(sum === 3048);\n *\n * assert.isTrue(PositiveSafeInt.is(sum));\n * ```\n *\n * @param a The first PositiveSafeInt.\n * @param b The second PositiveSafeInt.\n * @returns `a + b` clamped to [1, MAX_SAFE_INTEGER] as a PositiveSafeInt.\n */\n add,\n\n /**\n * Subtracts one PositiveSafeInt from another.\n *\n * @example\n *\n * ```ts\n * const difference = PositiveSafeInt.sub(\n * asPositiveSafeInt(10),\n * asPositiveSafeInt(20),\n * );\n *\n * assert.isTrue(difference === 1);\n *\n * assert.isTrue(PositiveSafeInt.is(difference));\n * ```\n *\n * @param a The minuend PositiveSafeInt.\n * @param b The subtrahend PositiveSafeInt.\n * @returns `a - b` clamped to [1, MAX_SAFE_INTEGER] as a PositiveSafeInt\n * (minimum 1).\n */\n sub,\n\n /**\n * Multiplies two PositiveSafeInt values.\n *\n * @example\n *\n * ```ts\n * const product = PositiveSafeInt.mul(\n * asPositiveSafeInt(50),\n * asPositiveSafeInt(20),\n * );\n *\n * assert.isTrue(product === 1000);\n *\n * assert.isTrue(PositiveSafeInt.is(product));\n * ```\n *\n * @param a The first PositiveSafeInt.\n * @param b The second PositiveSafeInt.\n * @returns `a * b` clamped to [1, MAX_SAFE_INTEGER] as a PositiveSafeInt.\n */\n mul,\n\n /**\n * Divides one PositiveSafeInt by another using floor division.\n *\n * @example\n *\n * ```ts\n * const quotient = PositiveSafeInt.div(\n * asPositiveSafeInt(25),\n * asPositiveSafeInt(4),\n * );\n *\n * const clamped = PositiveSafeInt.div(\n * asPositiveSafeInt(5),\n * asPositiveSafeInt(50),\n * );\n *\n * assert.isTrue(quotient === 6);\n *\n * assert.isTrue(clamped === 1);\n * ```\n *\n * @param a The dividend PositiveSafeInt.\n * @param b The divisor PositiveSafeInt.\n * @returns `⌊a / b⌋` clamped to [1, MAX_SAFE_INTEGER] as a PositiveSafeInt.\n */\n div,\n} as const;\n\nexpectType<\n keyof typeof PositiveSafeInt,\n keyof TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'positive' | 'range'\n >\n>('=');\n\nexpectType<\n typeof PositiveSafeInt,\n TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'positive' | 'range'\n >\n>('<=');\n"],"names":[],"mappings":";;AAWA,MAAM,iBAAA,GAAoB,yBAAA;AAE1B,MAAM;AAAA,EACJ,SAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,GAAA;AAAA,EACA,EAAA;AAAA,EACA,GAAA,EAAK,IAAA;AAAA,EACL,GAAA,EAAK,IAAA;AAAA,EACL,GAAA;AAAA,EACA,GAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,GAAI,oBAAA,CAAqB,mBAAmB,mBAAA,CAI1C;AAAA,EACA,oBAAA,EAAsB,aAAA;AAAA,EACtB,SAAA,EAAW,CAAA;AAAA;AAAA,EAEX,WAAW,MAAA,CAAO,gBAAA;AAAA,EAClB;AACF,CAAU,CAAA;AAqBH,MAAM,iBAAA,GAAoB;AAmB1B,MAAM,iBAAA,GAAoB;AAW1B,MAAM,eAAA,GAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoB7B,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBA,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBL,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAwBL,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAqBA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuBA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA2BA;AACF;;;;"}
|
|
1
|
+
{"version":3,"file":"positive-safe-int.mjs","sources":["../../../src/number/branded-types/positive-safe-int.mts"],"sourcesContent":["import {\n type SafeUint,\n type PositiveSafeInt as TtfImported_PositiveSafeInt,\n} from 'ts-type-forge';\nimport { expectType } from '../../expect-type.mjs';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type PositiveSafeInt = TtfImported_PositiveSafeInt;\n\ntype ElementType = PositiveSafeInt;\n\nconst typeNameInMessage = 'a positive safe integer';\n\nconst {\n MAX_VALUE,\n MIN_VALUE,\n add,\n castType,\n div,\n fromNumber,\n is,\n max: max_,\n min: min_,\n mul,\n pow,\n random,\n sub,\n} = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<\n ElementType,\n 1,\n SafeUint\n>({\n integerOrSafeInteger: 'SafeInteger',\n MIN_VALUE: 1,\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion, math/prefer-number-max-safe-integer\n MAX_VALUE: Number.MAX_SAFE_INTEGER as SafeUint,\n typeNameInMessage,\n} as const);\n\n/**\n * Type guard that checks if a value is a positive safe integer.\n *\n * Returns `true` for a positive safe integer — a value with no fractional\n * component.\n *\n * @example\n *\n * ```ts\n * assert.isTrue(isPositiveSafeInt(1));\n *\n * assert.isTrue(isPositiveSafeInt(Number.MAX_SAFE_INTEGER));\n *\n * assert.isFalse(isPositiveSafeInt(0));\n *\n * assert.isTrue(PositiveSafeInt.is(42));\n * ```\n *\n * @param value - The value to check\n * @returns `true` if the value is a positive safe integer, `false` otherwise\n */\nexport const isPositiveSafeInt = is;\n\n/**\n * Casts a `number` to the `PositiveSafeInt` branded type.\n *\n * Validates that the value is a positive safe integer and returns it with the\n * `PositiveSafeInt` brand. Throws a `TypeError` otherwise.\n *\n * @example\n *\n * ```ts\n * const branded = asPositiveSafeInt(128);\n *\n * assert.isTrue(branded === 128);\n *\n * assert.isTrue(PositiveSafeInt.is(branded));\n * ```\n *\n * @param value - The value to cast\n * @returns The value as a `PositiveSafeInt`\n * @throws {TypeError} If the value is not a positive safe integer\n */\nexport const asPositiveSafeInt = castType;\n\n/**\n * Namespace providing type-safe operations for the `PositiveSafeInt` branded\n * type.\n *\n * The `PositiveSafeInt` type represents a positive safe integer. Division\n * (`div`) uses floor division.\n */\nexport const PositiveSafeInt = {\n /**\n * Type guard that checks if a value is a positive safe integer.\n *\n * @example\n *\n * ```ts\n * assert.isTrue(isPositiveSafeInt(1));\n *\n * assert.isTrue(isPositiveSafeInt(Number.MAX_SAFE_INTEGER));\n *\n * assert.isFalse(isPositiveSafeInt(0));\n *\n * assert.isTrue(PositiveSafeInt.is(42));\n * ```\n *\n * @param value - The value to check\n * @returns `true` if the value is a positive safe integer, `false` otherwise\n * @see {@link isPositiveSafeInt} for usage examples\n */\n is,\n\n /**\n * The smallest value representable as `PositiveSafeInt` (the lower saturation\n * target of `fromNumber`).\n */\n MIN_VALUE,\n\n /**\n * The largest value representable as `PositiveSafeInt` (the upper saturation\n * target of `fromNumber`).\n */\n MAX_VALUE,\n\n /**\n * Returns the smallest of the given positive safe integers.\n *\n * @example\n *\n * ```ts\n * const smallest = PositiveSafeInt.min(\n * asPositiveSafeInt(10),\n * asPositiveSafeInt(5),\n * );\n *\n * assert.isTrue(smallest === 5);\n * ```\n *\n * @param values - The positive safe integers to compare (at least one required)\n * @returns The smallest value as a `PositiveSafeInt`\n */\n min: min_,\n\n /**\n * Returns the largest of the given positive safe integers.\n *\n * @example\n *\n * ```ts\n * const largest = PositiveSafeInt.max(\n * asPositiveSafeInt(10),\n * asPositiveSafeInt(5),\n * );\n *\n * assert.isTrue(largest === 10);\n * ```\n *\n * @param values - The positive safe integers to compare (at least one required)\n * @returns The largest value as a `PositiveSafeInt`\n */\n max: max_,\n\n /**\n * Converts an arbitrary `number` into a `PositiveSafeInt`, rounding to the\n * nearest integer and saturating the result into the range `[MIN_VALUE,\n * MAX_VALUE]`.\n *\n * Unlike `asPositiveSafeInt`, this is total: out-of-range inputs are clamped\n * to the nearest representable `PositiveSafeInt` instead of throwing.\n *\n * @example\n *\n * ```ts\n * const belowRange = PositiveSafeInt.fromNumber(0);\n *\n * const withinRange = PositiveSafeInt.fromNumber(123);\n *\n * const aboveRange = PositiveSafeInt.fromNumber(Number.MAX_SAFE_INTEGER + 10);\n *\n * assert.isTrue(belowRange === 1);\n *\n * assert.isTrue(withinRange === 123);\n *\n * assert.isTrue(aboveRange === Number.MAX_SAFE_INTEGER);\n * ```\n *\n * @param value - The value to convert\n * @returns The value as a `PositiveSafeInt`\n */\n fromNumber,\n\n /**\n * Generates a random `PositiveSafeInt` within the given range.\n *\n * The range is inclusive on both ends.\n *\n * @example\n *\n * ```ts\n * const min = asPositiveSafeInt(1);\n *\n * const max = asPositiveSafeInt(6);\n *\n * const randomValue = PositiveSafeInt.random(min, max);\n *\n * assert.isTrue(PositiveSafeInt.is(randomValue));\n *\n * assert.isTrue(randomValue >= 1 && randomValue <= 6);\n * ```\n *\n * @param min - The minimum value (inclusive)\n * @param max - The maximum value (inclusive)\n * @returns A random `PositiveSafeInt` in `[min, max]`\n */\n random,\n\n /**\n * Raises `a` to the power `b`, returning `a ** b` as a `PositiveSafeInt`\n * (floored to an integer).\n *\n * @example\n *\n * ```ts\n * const base = asPositiveSafeInt(3);\n *\n * const exponent = asPositiveSafeInt(3);\n *\n * const power = PositiveSafeInt.pow(base, exponent);\n *\n * assert.isTrue(power === 27);\n * ```\n *\n * @param a - The base positive safe integer\n * @param b - The exponent positive safe integer\n * @returns `a ** b` as a `PositiveSafeInt`\n */\n pow,\n\n /**\n * Adds two positive safe integers, returning `a + b` as a `PositiveSafeInt`.\n *\n * @example\n *\n * ```ts\n * const sum = PositiveSafeInt.add(\n * asPositiveSafeInt(1000),\n * asPositiveSafeInt(2048),\n * );\n *\n * assert.isTrue(sum === 3048);\n *\n * assert.isTrue(PositiveSafeInt.is(sum));\n * ```\n *\n * @param a - The first positive safe integer\n * @param b - The second positive safe integer\n * @returns The sum of `a` and `b` as a `PositiveSafeInt`\n */\n add,\n\n /**\n * Subtracts two positive safe integers, returning `a - b` as a\n * `PositiveSafeInt`.\n *\n * @example\n *\n * ```ts\n * const difference = PositiveSafeInt.sub(\n * asPositiveSafeInt(10),\n * asPositiveSafeInt(20),\n * );\n *\n * assert.isTrue(difference === 1);\n *\n * assert.isTrue(PositiveSafeInt.is(difference));\n * ```\n *\n * @param a - The first positive safe integer\n * @param b - The second positive safe integer\n * @returns The difference of `a` and `b` as a `PositiveSafeInt`\n */\n sub,\n\n /**\n * Multiplies two positive safe integers, returning `a * b` as a\n * `PositiveSafeInt`.\n *\n * @example\n *\n * ```ts\n * const product = PositiveSafeInt.mul(\n * asPositiveSafeInt(50),\n * asPositiveSafeInt(20),\n * );\n *\n * assert.isTrue(product === 1000);\n *\n * assert.isTrue(PositiveSafeInt.is(product));\n * ```\n *\n * @param a - The first positive safe integer\n * @param b - The second positive safe integer\n * @returns The product of `a` and `b` as a `PositiveSafeInt`\n */\n mul,\n\n /**\n * Divides two positive safe integers using floor division (`⌊a / b⌋`): the\n * result is `a / b` rounded toward negative infinity, as a `PositiveSafeInt`.\n *\n * @example\n *\n * ```ts\n * const quotient = PositiveSafeInt.div(\n * asPositiveSafeInt(25),\n * asPositiveSafeInt(4),\n * );\n *\n * const clamped = PositiveSafeInt.div(\n * asPositiveSafeInt(5),\n * asPositiveSafeInt(50),\n * );\n *\n * assert.isTrue(quotient === 6);\n *\n * assert.isTrue(clamped === 1);\n * ```\n *\n * @param a - The dividend\n * @param b - The divisor (must be non-zero)\n * @returns The floored quotient as a `PositiveSafeInt`\n */\n div,\n} as const;\n\nexpectType<\n keyof typeof PositiveSafeInt,\n keyof TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'positive' | 'range'\n >\n>('=');\n\nexpectType<\n typeof PositiveSafeInt,\n TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int' | 'positive' | 'range'\n >\n>('<=');\n"],"names":[],"mappings":";;AAWA,MAAM,iBAAA,GAAoB,yBAAA;AAE1B,MAAM;AAAA,EACJ,SAAA;AAAA,EACA,SAAA;AAAA,EACA,GAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,UAAA;AAAA,EACA,EAAA;AAAA,EACA,GAAA,EAAK,IAAA;AAAA,EACL,GAAA,EAAK,IAAA;AAAA,EACL,GAAA;AAAA,EACA,GAAA;AAAA,EACA,MAAA;AAAA,EACA;AACF,CAAA,GAAI,oBAAA,CAAqB,mBAAmB,mBAAA,CAI1C;AAAA,EACA,oBAAA,EAAsB,aAAA;AAAA,EACtB,SAAA,EAAW,CAAA;AAAA;AAAA,EAEX,WAAW,MAAA,CAAO,gBAAA;AAAA,EAClB;AACF,CAAU,CAAA;AAuBH,MAAM,iBAAA,GAAoB;AAsB1B,MAAM,iBAAA,GAAoB;AAS1B,MAAM,eAAA,GAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoB7B,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBA,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAmBL,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA6BL,UAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAyBA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAsBA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuBA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAuBA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA4BA;AACF;;;;"}
|
|
@@ -1,19 +1,24 @@
|
|
|
1
1
|
import { type PositiveUint16 as TtfImported_PositiveUint16 } from 'ts-type-forge';
|
|
2
2
|
export type PositiveUint16 = TtfImported_PositiveUint16;
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
* the range [1, 2^16)).
|
|
4
|
+
* Type guard that checks if a value is a positive integer in [1, 2^16).
|
|
6
5
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* Returns `true` for a positive integer in [1, 2^16) — a value with no
|
|
7
|
+
* fractional component.
|
|
8
|
+
*
|
|
9
|
+
* @param value - The value to check
|
|
10
|
+
* @returns `true` if the value is a positive integer in [1, 2^16), `false` otherwise
|
|
9
11
|
*/
|
|
10
12
|
export declare const isPositiveUint16: (a: number) => a is TtfImported_PositiveUint16;
|
|
11
13
|
/**
|
|
12
|
-
* Casts a number to
|
|
14
|
+
* Casts a `number` to the `PositiveUint16` branded type.
|
|
15
|
+
*
|
|
16
|
+
* Validates that the value is a positive integer in [1, 2^16) and returns it
|
|
17
|
+
* with the `PositiveUint16` brand. Throws a `TypeError` otherwise.
|
|
13
18
|
*
|
|
14
|
-
* @param value The value to cast
|
|
15
|
-
* @returns The value as a PositiveUint16
|
|
16
|
-
* @throws {TypeError} If the value is not a positive integer in [1, 2^16)
|
|
19
|
+
* @param value - The value to cast
|
|
20
|
+
* @returns The value as a `PositiveUint16`
|
|
21
|
+
* @throws {TypeError} If the value is not a positive integer in [1, 2^16)
|
|
17
22
|
*/
|
|
18
23
|
export declare const asPositiveUint16: <N extends number>(x: N) => number & {
|
|
19
24
|
readonly "!=0": true;
|
|
@@ -34,102 +39,107 @@ export declare const asPositiveUint16: <N extends number>(x: N) => number & {
|
|
|
34
39
|
'TSTypeForgeInternals--edd2f9ce-7ca5-45b0-9d1a-bd61b9b5d9c3': unknown;
|
|
35
40
|
}> & N;
|
|
36
41
|
/**
|
|
37
|
-
* Namespace providing type-safe
|
|
38
|
-
*
|
|
42
|
+
* Namespace providing type-safe operations for the `PositiveUint16` branded
|
|
43
|
+
* type.
|
|
39
44
|
*
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
* unsigned integer constraint, with results below 1 clamped to MIN_VALUE and
|
|
43
|
-
* overflow results clamped to MAX_VALUE.
|
|
45
|
+
* The `PositiveUint16` type represents a positive integer in [1, 2^16).
|
|
46
|
+
* Division (`div`) uses floor division.
|
|
44
47
|
*/
|
|
45
48
|
export declare const PositiveUint16: {
|
|
46
49
|
/**
|
|
47
|
-
* Type guard
|
|
50
|
+
* Type guard that checks if a value is a positive integer in [1, 2^16).
|
|
48
51
|
*
|
|
49
|
-
* @param value The value to check
|
|
50
|
-
* @returns `true` if the value is a
|
|
51
|
-
*
|
|
52
|
+
* @param value - The value to check
|
|
53
|
+
* @returns `true` if the value is a positive integer in [1, 2^16), `false` otherwise
|
|
54
|
+
* @see {@link isPositiveUint16} for usage examples
|
|
52
55
|
*/
|
|
53
56
|
readonly is: (a: number) => a is TtfImported_PositiveUint16;
|
|
54
57
|
/**
|
|
55
|
-
* The
|
|
56
|
-
*
|
|
57
|
-
* @readonly
|
|
58
|
+
* The smallest value representable as `PositiveUint16` (the lower saturation
|
|
59
|
+
* target of `fromNumber`).
|
|
58
60
|
*/
|
|
59
61
|
readonly MIN_VALUE: 1;
|
|
60
62
|
/**
|
|
61
|
-
* The
|
|
62
|
-
*
|
|
63
|
-
* @readonly
|
|
63
|
+
* The largest value representable as `PositiveUint16` (the upper saturation
|
|
64
|
+
* target of `fromNumber`).
|
|
64
65
|
*/
|
|
65
66
|
readonly MAX_VALUE: number;
|
|
66
67
|
/**
|
|
67
|
-
* Returns the
|
|
68
|
+
* Returns the smallest of the given positive integers.
|
|
68
69
|
*
|
|
69
|
-
* @param
|
|
70
|
-
* @
|
|
71
|
-
* @returns The minimum value as a PositiveUint16.
|
|
70
|
+
* @param values - The positive integers to compare (at least one required)
|
|
71
|
+
* @returns The smallest value as a `PositiveUint16`
|
|
72
72
|
*/
|
|
73
73
|
readonly min: (...values: readonly import("ts-type-forge").WithSmallInt<TtfImported_PositiveUint16>[]) => TtfImported_PositiveUint16;
|
|
74
74
|
/**
|
|
75
|
-
* Returns the
|
|
75
|
+
* Returns the largest of the given positive integers.
|
|
76
76
|
*
|
|
77
|
-
* @param
|
|
78
|
-
* @
|
|
79
|
-
* @returns The maximum value as a PositiveUint16.
|
|
77
|
+
* @param values - The positive integers to compare (at least one required)
|
|
78
|
+
* @returns The largest value as a `PositiveUint16`
|
|
80
79
|
*/
|
|
81
80
|
readonly max: (...values: readonly import("ts-type-forge").WithSmallInt<TtfImported_PositiveUint16>[]) => TtfImported_PositiveUint16;
|
|
82
81
|
/**
|
|
83
|
-
*
|
|
82
|
+
* Converts an arbitrary `number` into a `PositiveUint16`, rounding to the
|
|
83
|
+
* nearest integer and saturating the result into the range `[MIN_VALUE,
|
|
84
|
+
* MAX_VALUE]`.
|
|
85
|
+
*
|
|
86
|
+
* Unlike `asPositiveUint16`, this is total: out-of-range inputs are clamped
|
|
87
|
+
* to the nearest representable `PositiveUint16` instead of throwing.
|
|
84
88
|
*
|
|
85
|
-
* @param value The
|
|
86
|
-
* @returns The value
|
|
89
|
+
* @param value - The value to convert
|
|
90
|
+
* @returns The value as a `PositiveUint16`
|
|
87
91
|
*/
|
|
88
|
-
readonly
|
|
92
|
+
readonly fromNumber: (x: number) => TtfImported_PositiveUint16;
|
|
89
93
|
/**
|
|
90
|
-
* Generates a random PositiveUint16
|
|
94
|
+
* Generates a random `PositiveUint16` within the given range.
|
|
95
|
+
*
|
|
96
|
+
* The range is inclusive on both ends.
|
|
91
97
|
*
|
|
92
|
-
* @
|
|
98
|
+
* @param min - The minimum value (inclusive)
|
|
99
|
+
* @param max - The maximum value (inclusive)
|
|
100
|
+
* @returns A random `PositiveUint16` in `[min, max]`
|
|
93
101
|
*/
|
|
94
102
|
readonly random: (min?: import("ts-type-forge").WithSmallInt<TtfImported_PositiveUint16> | undefined, max?: import("ts-type-forge").WithSmallInt<TtfImported_PositiveUint16> | undefined) => TtfImported_PositiveUint16;
|
|
95
103
|
/**
|
|
96
|
-
* Raises a
|
|
104
|
+
* Raises `a` to the power `b`, returning `a ** b` as a `PositiveUint16`
|
|
105
|
+
* (floored to an integer).
|
|
97
106
|
*
|
|
98
|
-
* @param a The base
|
|
99
|
-
* @param b The exponent
|
|
100
|
-
* @returns `a ** b`
|
|
107
|
+
* @param a - The base positive integer
|
|
108
|
+
* @param b - The exponent positive integer
|
|
109
|
+
* @returns `a ** b` as a `PositiveUint16`
|
|
101
110
|
*/
|
|
102
111
|
readonly pow: (x: import("ts-type-forge").WithSmallInt<TtfImported_PositiveUint16>, y: import("ts-type-forge").WithSmallInt<TtfImported_PositiveUint16>) => TtfImported_PositiveUint16;
|
|
103
112
|
/**
|
|
104
|
-
* Adds two PositiveUint16
|
|
113
|
+
* Adds two positive integers, returning `a + b` as a `PositiveUint16`.
|
|
105
114
|
*
|
|
106
|
-
* @param a The first
|
|
107
|
-
* @param b The second
|
|
108
|
-
* @returns `a
|
|
115
|
+
* @param a - The first positive integer
|
|
116
|
+
* @param b - The second positive integer
|
|
117
|
+
* @returns The sum of `a` and `b` as a `PositiveUint16`
|
|
109
118
|
*/
|
|
110
119
|
readonly add: (x: import("ts-type-forge").WithSmallInt<TtfImported_PositiveUint16>, y: import("ts-type-forge").WithSmallInt<TtfImported_PositiveUint16>) => TtfImported_PositiveUint16;
|
|
111
120
|
/**
|
|
112
|
-
* Subtracts
|
|
121
|
+
* Subtracts two positive integers, returning `a - b` as a `PositiveUint16`.
|
|
113
122
|
*
|
|
114
|
-
* @param a The
|
|
115
|
-
* @param b The
|
|
116
|
-
* @returns `a
|
|
123
|
+
* @param a - The first positive integer
|
|
124
|
+
* @param b - The second positive integer
|
|
125
|
+
* @returns The difference of `a` and `b` as a `PositiveUint16`
|
|
117
126
|
*/
|
|
118
127
|
readonly sub: (x: import("ts-type-forge").WithSmallInt<TtfImported_PositiveUint16>, y: import("ts-type-forge").WithSmallInt<TtfImported_PositiveUint16>) => TtfImported_PositiveUint16;
|
|
119
128
|
/**
|
|
120
|
-
* Multiplies two PositiveUint16
|
|
129
|
+
* Multiplies two positive integers, returning `a * b` as a `PositiveUint16`.
|
|
121
130
|
*
|
|
122
|
-
* @param a The first
|
|
123
|
-
* @param b The second
|
|
124
|
-
* @returns `a
|
|
131
|
+
* @param a - The first positive integer
|
|
132
|
+
* @param b - The second positive integer
|
|
133
|
+
* @returns The product of `a` and `b` as a `PositiveUint16`
|
|
125
134
|
*/
|
|
126
135
|
readonly mul: (x: import("ts-type-forge").WithSmallInt<TtfImported_PositiveUint16>, y: import("ts-type-forge").WithSmallInt<TtfImported_PositiveUint16>) => TtfImported_PositiveUint16;
|
|
127
136
|
/**
|
|
128
|
-
* Divides
|
|
137
|
+
* Divides two positive integers using floor division (`⌊a / b⌋`): the result
|
|
138
|
+
* is `a / b` rounded toward negative infinity, as a `PositiveUint16`.
|
|
129
139
|
*
|
|
130
|
-
* @param a The dividend
|
|
131
|
-
* @param b The divisor
|
|
132
|
-
* @returns
|
|
140
|
+
* @param a - The dividend
|
|
141
|
+
* @param b - The divisor (must be non-zero)
|
|
142
|
+
* @returns The floored quotient as a `PositiveUint16`
|
|
133
143
|
*/
|
|
134
144
|
readonly div: (x: import("ts-type-forge").WithSmallInt<TtfImported_PositiveUint16>, y: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | import("ts-type-forge").NormalizeBrandUnion<number & {
|
|
135
145
|
readonly "!=0": true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"positive-uint16.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/positive-uint16.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,IAAI,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAIlF,MAAM,MAAM,cAAc,GAAG,0BAA0B,CAAC;AA+BxD
|
|
1
|
+
{"version":3,"file":"positive-uint16.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/positive-uint16.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,IAAI,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAIlF,MAAM,MAAM,cAAc,GAAG,0BAA0B,CAAC;AA+BxD;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,gDAAK,CAAC;AAEnC;;;;;;;;;GASG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;MAAW,CAAC;AAEzC;;;;;;GAMG;AACH,eAAO,MAAM,cAAc;IACzB;;;;;;OAMG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;;;OAKG;;IAGH;;;;;OAKG;;IAGH;;;;;;;;;;OAUG;;IAGH;;;;;;;;OAQG;;IAGH;;;;;;;OAOG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;;;OAOG;;;;;;;;;;;;;;;;;;;CAEK,CAAC"}
|
|
@@ -6,8 +6,8 @@ const {
|
|
|
6
6
|
MIN_VALUE,
|
|
7
7
|
add,
|
|
8
8
|
castType,
|
|
9
|
-
clamp,
|
|
10
9
|
div,
|
|
10
|
+
fromNumber,
|
|
11
11
|
is,
|
|
12
12
|
max: max_,
|
|
13
13
|
min: min_,
|
|
@@ -25,92 +25,99 @@ const isPositiveUint16 = is;
|
|
|
25
25
|
const asPositiveUint16 = castType;
|
|
26
26
|
const PositiveUint16 = {
|
|
27
27
|
/**
|
|
28
|
-
* Type guard
|
|
28
|
+
* Type guard that checks if a value is a positive integer in [1, 2^16).
|
|
29
29
|
*
|
|
30
|
-
* @param value The value to check
|
|
31
|
-
* @returns `true` if the value is a
|
|
32
|
-
*
|
|
30
|
+
* @param value - The value to check
|
|
31
|
+
* @returns `true` if the value is a positive integer in [1, 2^16), `false` otherwise
|
|
32
|
+
* @see {@link isPositiveUint16} for usage examples
|
|
33
33
|
*/
|
|
34
34
|
is,
|
|
35
35
|
/**
|
|
36
|
-
* The
|
|
37
|
-
*
|
|
38
|
-
* @readonly
|
|
36
|
+
* The smallest value representable as `PositiveUint16` (the lower saturation
|
|
37
|
+
* target of `fromNumber`).
|
|
39
38
|
*/
|
|
40
39
|
MIN_VALUE,
|
|
41
40
|
/**
|
|
42
|
-
* The
|
|
43
|
-
*
|
|
44
|
-
* @readonly
|
|
41
|
+
* The largest value representable as `PositiveUint16` (the upper saturation
|
|
42
|
+
* target of `fromNumber`).
|
|
45
43
|
*/
|
|
46
44
|
MAX_VALUE,
|
|
47
45
|
/**
|
|
48
|
-
* Returns the
|
|
46
|
+
* Returns the smallest of the given positive integers.
|
|
49
47
|
*
|
|
50
|
-
* @param
|
|
51
|
-
* @
|
|
52
|
-
* @returns The minimum value as a PositiveUint16.
|
|
48
|
+
* @param values - The positive integers to compare (at least one required)
|
|
49
|
+
* @returns The smallest value as a `PositiveUint16`
|
|
53
50
|
*/
|
|
54
51
|
min: min_,
|
|
55
52
|
/**
|
|
56
|
-
* Returns the
|
|
53
|
+
* Returns the largest of the given positive integers.
|
|
57
54
|
*
|
|
58
|
-
* @param
|
|
59
|
-
* @
|
|
60
|
-
* @returns The maximum value as a PositiveUint16.
|
|
55
|
+
* @param values - The positive integers to compare (at least one required)
|
|
56
|
+
* @returns The largest value as a `PositiveUint16`
|
|
61
57
|
*/
|
|
62
58
|
max: max_,
|
|
63
59
|
/**
|
|
64
|
-
*
|
|
60
|
+
* Converts an arbitrary `number` into a `PositiveUint16`, rounding to the
|
|
61
|
+
* nearest integer and saturating the result into the range `[MIN_VALUE,
|
|
62
|
+
* MAX_VALUE]`.
|
|
65
63
|
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
64
|
+
* Unlike `asPositiveUint16`, this is total: out-of-range inputs are clamped
|
|
65
|
+
* to the nearest representable `PositiveUint16` instead of throwing.
|
|
66
|
+
*
|
|
67
|
+
* @param value - The value to convert
|
|
68
|
+
* @returns The value as a `PositiveUint16`
|
|
68
69
|
*/
|
|
69
|
-
|
|
70
|
+
fromNumber,
|
|
70
71
|
/**
|
|
71
|
-
* Generates a random PositiveUint16
|
|
72
|
+
* Generates a random `PositiveUint16` within the given range.
|
|
73
|
+
*
|
|
74
|
+
* The range is inclusive on both ends.
|
|
72
75
|
*
|
|
73
|
-
* @
|
|
76
|
+
* @param min - The minimum value (inclusive)
|
|
77
|
+
* @param max - The maximum value (inclusive)
|
|
78
|
+
* @returns A random `PositiveUint16` in `[min, max]`
|
|
74
79
|
*/
|
|
75
80
|
random,
|
|
76
81
|
/**
|
|
77
|
-
* Raises a
|
|
82
|
+
* Raises `a` to the power `b`, returning `a ** b` as a `PositiveUint16`
|
|
83
|
+
* (floored to an integer).
|
|
78
84
|
*
|
|
79
|
-
* @param a The base
|
|
80
|
-
* @param b The exponent
|
|
81
|
-
* @returns `a ** b`
|
|
85
|
+
* @param a - The base positive integer
|
|
86
|
+
* @param b - The exponent positive integer
|
|
87
|
+
* @returns `a ** b` as a `PositiveUint16`
|
|
82
88
|
*/
|
|
83
89
|
pow,
|
|
84
90
|
/**
|
|
85
|
-
* Adds two PositiveUint16
|
|
91
|
+
* Adds two positive integers, returning `a + b` as a `PositiveUint16`.
|
|
86
92
|
*
|
|
87
|
-
* @param a The first
|
|
88
|
-
* @param b The second
|
|
89
|
-
* @returns `a
|
|
93
|
+
* @param a - The first positive integer
|
|
94
|
+
* @param b - The second positive integer
|
|
95
|
+
* @returns The sum of `a` and `b` as a `PositiveUint16`
|
|
90
96
|
*/
|
|
91
97
|
add,
|
|
92
98
|
/**
|
|
93
|
-
* Subtracts
|
|
99
|
+
* Subtracts two positive integers, returning `a - b` as a `PositiveUint16`.
|
|
94
100
|
*
|
|
95
|
-
* @param a The
|
|
96
|
-
* @param b The
|
|
97
|
-
* @returns `a
|
|
101
|
+
* @param a - The first positive integer
|
|
102
|
+
* @param b - The second positive integer
|
|
103
|
+
* @returns The difference of `a` and `b` as a `PositiveUint16`
|
|
98
104
|
*/
|
|
99
105
|
sub,
|
|
100
106
|
/**
|
|
101
|
-
* Multiplies two PositiveUint16
|
|
107
|
+
* Multiplies two positive integers, returning `a * b` as a `PositiveUint16`.
|
|
102
108
|
*
|
|
103
|
-
* @param a The first
|
|
104
|
-
* @param b The second
|
|
105
|
-
* @returns `a
|
|
109
|
+
* @param a - The first positive integer
|
|
110
|
+
* @param b - The second positive integer
|
|
111
|
+
* @returns The product of `a` and `b` as a `PositiveUint16`
|
|
106
112
|
*/
|
|
107
113
|
mul,
|
|
108
114
|
/**
|
|
109
|
-
* Divides
|
|
115
|
+
* Divides two positive integers using floor division (`⌊a / b⌋`): the result
|
|
116
|
+
* is `a / b` rounded toward negative infinity, as a `PositiveUint16`.
|
|
110
117
|
*
|
|
111
|
-
* @param a The dividend
|
|
112
|
-
* @param b The divisor
|
|
113
|
-
* @returns
|
|
118
|
+
* @param a - The dividend
|
|
119
|
+
* @param b - The divisor (must be non-zero)
|
|
120
|
+
* @returns The floored quotient as a `PositiveUint16`
|
|
114
121
|
*/
|
|
115
122
|
div
|
|
116
123
|
};
|