ts-data-forge 1.0.0 → 1.0.2
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 +1 -1
- package/dist/array/array-utils.d.mts +2617 -0
- package/dist/array/array-utils.d.mts.map +1 -0
- package/dist/array/array-utils.mjs +2915 -0
- package/dist/array/array-utils.mjs.map +1 -0
- package/dist/array/index.d.mts +3 -0
- package/dist/array/index.d.mts.map +1 -0
- package/dist/array/index.mjs +3 -0
- package/dist/array/index.mjs.map +1 -0
- package/dist/array/tuple-utils.d.mts +421 -0
- package/dist/array/tuple-utils.d.mts.map +1 -0
- package/dist/array/tuple-utils.mjs +391 -0
- package/dist/array/tuple-utils.mjs.map +1 -0
- package/dist/collections/imap-mapped.d.mts +445 -0
- package/dist/collections/imap-mapped.d.mts.map +1 -0
- package/dist/collections/imap-mapped.mjs +424 -0
- package/dist/collections/imap-mapped.mjs.map +1 -0
- package/dist/collections/imap.d.mts +359 -0
- package/dist/collections/imap.d.mts.map +1 -0
- package/dist/collections/imap.mjs +338 -0
- package/dist/collections/imap.mjs.map +1 -0
- package/dist/collections/index.d.mts +7 -0
- package/dist/collections/index.d.mts.map +1 -0
- package/dist/collections/index.mjs +7 -0
- package/dist/collections/index.mjs.map +1 -0
- package/dist/collections/iset-mapped.d.mts +576 -0
- package/dist/collections/iset-mapped.d.mts.map +1 -0
- package/dist/collections/iset-mapped.mjs +522 -0
- package/dist/collections/iset-mapped.mjs.map +1 -0
- package/dist/collections/iset.d.mts +426 -0
- package/dist/collections/iset.d.mts.map +1 -0
- package/dist/collections/iset.mjs +437 -0
- package/dist/collections/iset.mjs.map +1 -0
- package/dist/collections/queue.d.mts +190 -0
- package/dist/collections/queue.d.mts.map +1 -0
- package/dist/collections/queue.mjs +317 -0
- package/dist/collections/queue.mjs.map +1 -0
- package/dist/collections/stack.d.mts +210 -0
- package/dist/collections/stack.d.mts.map +1 -0
- package/dist/collections/stack.mjs +353 -0
- package/dist/collections/stack.mjs.map +1 -0
- package/dist/expect-type.d.mts +199 -0
- package/dist/expect-type.d.mts.map +1 -0
- package/dist/expect-type.mjs +201 -0
- package/dist/expect-type.mjs.map +1 -0
- package/dist/functional/index.d.mts +5 -0
- package/dist/functional/index.d.mts.map +1 -0
- package/dist/functional/index.mjs +5 -0
- package/dist/functional/index.mjs.map +1 -0
- package/dist/functional/match.d.mts +215 -0
- package/dist/functional/match.d.mts.map +1 -0
- package/dist/functional/match.mjs +139 -0
- package/dist/functional/match.mjs.map +1 -0
- package/dist/functional/optional.d.mts +517 -0
- package/dist/functional/optional.d.mts.map +1 -0
- package/dist/functional/optional.mjs +532 -0
- package/dist/functional/optional.mjs.map +1 -0
- package/dist/functional/pipe.d.mts +185 -0
- package/dist/functional/pipe.d.mts.map +1 -0
- package/dist/functional/pipe.mjs +129 -0
- package/dist/functional/pipe.mjs.map +1 -0
- package/dist/functional/result.d.mts +796 -0
- package/dist/functional/result.d.mts.map +1 -0
- package/dist/functional/result.mjs +844 -0
- package/dist/functional/result.mjs.map +1 -0
- package/dist/globals.d.mts +38 -0
- package/dist/guard/has-key.d.mts +100 -0
- package/dist/guard/has-key.d.mts.map +1 -0
- package/dist/guard/has-key.mjs +94 -0
- package/dist/guard/has-key.mjs.map +1 -0
- package/dist/guard/index.d.mts +8 -0
- package/dist/guard/index.d.mts.map +1 -0
- package/dist/guard/index.mjs +8 -0
- package/dist/guard/index.mjs.map +1 -0
- package/dist/guard/is-non-empty-string.d.mts +106 -0
- package/dist/guard/is-non-empty-string.d.mts.map +1 -0
- package/dist/guard/is-non-empty-string.mjs +108 -0
- package/dist/guard/is-non-empty-string.mjs.map +1 -0
- package/dist/guard/is-non-null-object.d.mts +105 -0
- package/dist/guard/is-non-null-object.d.mts.map +1 -0
- package/dist/guard/is-non-null-object.mjs +108 -0
- package/dist/guard/is-non-null-object.mjs.map +1 -0
- package/dist/guard/is-primitive.d.mts +146 -0
- package/dist/guard/is-primitive.d.mts.map +1 -0
- package/dist/guard/is-primitive.mjs +161 -0
- package/dist/guard/is-primitive.mjs.map +1 -0
- package/dist/guard/is-record.d.mts +151 -0
- package/dist/guard/is-record.d.mts.map +1 -0
- package/dist/guard/is-record.mjs +155 -0
- package/dist/guard/is-record.mjs.map +1 -0
- package/dist/guard/is-type.d.mts +430 -0
- package/dist/guard/is-type.d.mts.map +1 -0
- package/dist/guard/is-type.mjs +432 -0
- package/dist/guard/is-type.mjs.map +1 -0
- package/dist/guard/key-is-in.d.mts +158 -0
- package/dist/guard/key-is-in.d.mts.map +1 -0
- package/dist/guard/key-is-in.mjs +160 -0
- package/dist/guard/key-is-in.mjs.map +1 -0
- package/dist/index.d.mts +11 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +61 -0
- package/dist/index.mjs.map +1 -0
- package/dist/iterator/index.d.mts +2 -0
- package/dist/iterator/index.d.mts.map +1 -0
- package/dist/iterator/index.mjs +2 -0
- package/dist/iterator/index.mjs.map +1 -0
- package/dist/iterator/range.d.mts +97 -0
- package/dist/iterator/range.d.mts.map +1 -0
- package/dist/iterator/range.mjs +130 -0
- package/dist/iterator/range.mjs.map +1 -0
- package/dist/json/index.d.mts +2 -0
- package/dist/json/index.d.mts.map +1 -0
- package/dist/json/index.mjs +2 -0
- package/dist/json/index.mjs.map +1 -0
- package/dist/json/json.d.mts +597 -0
- package/dist/json/json.d.mts.map +1 -0
- package/dist/json/json.mjs +687 -0
- package/dist/json/json.mjs.map +1 -0
- package/dist/number/branded-types/finite-number.d.mts +291 -0
- package/dist/number/branded-types/finite-number.d.mts.map +1 -0
- package/dist/number/branded-types/finite-number.mjs +296 -0
- package/dist/number/branded-types/finite-number.mjs.map +1 -0
- package/dist/number/branded-types/index.d.mts +27 -0
- package/dist/number/branded-types/index.d.mts.map +1 -0
- package/dist/number/branded-types/index.mjs +27 -0
- package/dist/number/branded-types/index.mjs.map +1 -0
- package/dist/number/branded-types/int.d.mts +242 -0
- package/dist/number/branded-types/int.d.mts.map +1 -0
- package/dist/number/branded-types/int.mjs +239 -0
- package/dist/number/branded-types/int.mjs.map +1 -0
- package/dist/number/branded-types/int16.d.mts +162 -0
- package/dist/number/branded-types/int16.d.mts.map +1 -0
- package/dist/number/branded-types/int16.mjs +141 -0
- package/dist/number/branded-types/int16.mjs.map +1 -0
- package/dist/number/branded-types/int32.d.mts +155 -0
- package/dist/number/branded-types/int32.d.mts.map +1 -0
- package/dist/number/branded-types/int32.mjs +142 -0
- package/dist/number/branded-types/int32.mjs.map +1 -0
- package/dist/number/branded-types/non-negative-finite-number.d.mts +165 -0
- package/dist/number/branded-types/non-negative-finite-number.d.mts.map +1 -0
- package/dist/number/branded-types/non-negative-finite-number.mjs +160 -0
- package/dist/number/branded-types/non-negative-finite-number.mjs.map +1 -0
- package/dist/number/branded-types/non-negative-int16.d.mts +160 -0
- package/dist/number/branded-types/non-negative-int16.d.mts.map +1 -0
- package/dist/number/branded-types/non-negative-int16.mjs +138 -0
- package/dist/number/branded-types/non-negative-int16.mjs.map +1 -0
- package/dist/number/branded-types/non-negative-int32.d.mts +156 -0
- package/dist/number/branded-types/non-negative-int32.d.mts.map +1 -0
- package/dist/number/branded-types/non-negative-int32.mjs +138 -0
- package/dist/number/branded-types/non-negative-int32.mjs.map +1 -0
- package/dist/number/branded-types/non-zero-finite-number.d.mts +154 -0
- package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -0
- package/dist/number/branded-types/non-zero-finite-number.mjs +160 -0
- package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -0
- package/dist/number/branded-types/non-zero-int.d.mts +131 -0
- package/dist/number/branded-types/non-zero-int.d.mts.map +1 -0
- package/dist/number/branded-types/non-zero-int.mjs +128 -0
- package/dist/number/branded-types/non-zero-int.mjs.map +1 -0
- package/dist/number/branded-types/non-zero-int16.d.mts +166 -0
- package/dist/number/branded-types/non-zero-int16.d.mts.map +1 -0
- package/dist/number/branded-types/non-zero-int16.mjs +145 -0
- package/dist/number/branded-types/non-zero-int16.mjs.map +1 -0
- package/dist/number/branded-types/non-zero-int32.d.mts +158 -0
- package/dist/number/branded-types/non-zero-int32.d.mts.map +1 -0
- package/dist/number/branded-types/non-zero-int32.mjs +145 -0
- package/dist/number/branded-types/non-zero-int32.mjs.map +1 -0
- package/dist/number/branded-types/non-zero-safe-int.d.mts +148 -0
- package/dist/number/branded-types/non-zero-safe-int.d.mts.map +1 -0
- package/dist/number/branded-types/non-zero-safe-int.mjs +145 -0
- package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -0
- package/dist/number/branded-types/non-zero-uint16.d.mts +160 -0
- package/dist/number/branded-types/non-zero-uint16.d.mts.map +1 -0
- package/dist/number/branded-types/non-zero-uint16.mjs +140 -0
- package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -0
- package/dist/number/branded-types/non-zero-uint32.d.mts +156 -0
- package/dist/number/branded-types/non-zero-uint32.d.mts.map +1 -0
- package/dist/number/branded-types/non-zero-uint32.mjs +140 -0
- package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -0
- package/dist/number/branded-types/positive-finite-number.d.mts +171 -0
- package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -0
- package/dist/number/branded-types/positive-finite-number.mjs +165 -0
- package/dist/number/branded-types/positive-finite-number.mjs.map +1 -0
- package/dist/number/branded-types/positive-int.d.mts +270 -0
- package/dist/number/branded-types/positive-int.d.mts.map +1 -0
- package/dist/number/branded-types/positive-int.mjs +257 -0
- package/dist/number/branded-types/positive-int.mjs.map +1 -0
- package/dist/number/branded-types/positive-int16.d.mts +162 -0
- package/dist/number/branded-types/positive-int16.d.mts.map +1 -0
- package/dist/number/branded-types/positive-int16.mjs +139 -0
- package/dist/number/branded-types/positive-int16.mjs.map +1 -0
- package/dist/number/branded-types/positive-int32.d.mts +158 -0
- package/dist/number/branded-types/positive-int32.d.mts.map +1 -0
- package/dist/number/branded-types/positive-int32.mjs +139 -0
- package/dist/number/branded-types/positive-int32.mjs.map +1 -0
- package/dist/number/branded-types/positive-safe-int.d.mts +152 -0
- package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -0
- package/dist/number/branded-types/positive-safe-int.mjs +138 -0
- package/dist/number/branded-types/positive-safe-int.mjs.map +1 -0
- package/dist/number/branded-types/positive-uint16.d.mts +160 -0
- package/dist/number/branded-types/positive-uint16.d.mts.map +1 -0
- package/dist/number/branded-types/positive-uint16.mjs +139 -0
- package/dist/number/branded-types/positive-uint16.mjs.map +1 -0
- package/dist/number/branded-types/positive-uint32.d.mts +156 -0
- package/dist/number/branded-types/positive-uint32.d.mts.map +1 -0
- package/dist/number/branded-types/positive-uint32.mjs +139 -0
- package/dist/number/branded-types/positive-uint32.mjs.map +1 -0
- package/dist/number/branded-types/safe-int.d.mts +243 -0
- package/dist/number/branded-types/safe-int.d.mts.map +1 -0
- package/dist/number/branded-types/safe-int.mjs +240 -0
- package/dist/number/branded-types/safe-int.mjs.map +1 -0
- package/dist/number/branded-types/safe-uint.d.mts +151 -0
- package/dist/number/branded-types/safe-uint.d.mts.map +1 -0
- package/dist/number/branded-types/safe-uint.mjs +138 -0
- package/dist/number/branded-types/safe-uint.mjs.map +1 -0
- package/dist/number/branded-types/uint.d.mts +144 -0
- package/dist/number/branded-types/uint.d.mts.map +1 -0
- package/dist/number/branded-types/uint.mjs +132 -0
- package/dist/number/branded-types/uint.mjs.map +1 -0
- package/dist/number/branded-types/uint16.d.mts +157 -0
- package/dist/number/branded-types/uint16.d.mts.map +1 -0
- package/dist/number/branded-types/uint16.mjs +137 -0
- package/dist/number/branded-types/uint16.mjs.map +1 -0
- package/dist/number/branded-types/uint32.d.mts +185 -0
- package/dist/number/branded-types/uint32.d.mts.map +1 -0
- package/dist/number/branded-types/uint32.mjs +169 -0
- package/dist/number/branded-types/uint32.mjs.map +1 -0
- package/dist/number/enum/index.d.mts +3 -0
- package/dist/number/enum/index.d.mts.map +1 -0
- package/dist/number/enum/index.mjs +3 -0
- package/dist/number/enum/index.mjs.map +1 -0
- package/dist/number/enum/int8.d.mts +202 -0
- package/dist/number/enum/int8.d.mts.map +1 -0
- package/dist/number/enum/int8.mjs +296 -0
- package/dist/number/enum/int8.mjs.map +1 -0
- package/dist/number/enum/uint8.d.mts +128 -0
- package/dist/number/enum/uint8.d.mts.map +1 -0
- package/dist/number/enum/uint8.mjs +251 -0
- package/dist/number/enum/uint8.mjs.map +1 -0
- package/dist/number/index.d.mts +5 -0
- package/dist/number/index.d.mts.map +1 -0
- package/dist/number/index.mjs +31 -0
- package/dist/number/index.mjs.map +1 -0
- package/dist/number/num.d.mts +515 -0
- package/dist/number/num.d.mts.map +1 -0
- package/dist/number/num.mjs +513 -0
- package/dist/number/num.mjs.map +1 -0
- package/dist/number/refined-number-utils.d.mts +191 -0
- package/dist/number/refined-number-utils.d.mts.map +1 -0
- package/dist/number/refined-number-utils.mjs +179 -0
- package/dist/number/refined-number-utils.mjs.map +1 -0
- package/dist/object/index.d.mts +2 -0
- package/dist/object/index.d.mts.map +1 -0
- package/dist/object/index.mjs +2 -0
- package/dist/object/index.mjs.map +1 -0
- package/dist/object/object.d.mts +296 -0
- package/dist/object/object.d.mts.map +1 -0
- package/dist/object/object.mjs +295 -0
- package/dist/object/object.mjs.map +1 -0
- package/dist/others/cast-mutable.d.mts +110 -0
- package/dist/others/cast-mutable.d.mts.map +1 -0
- package/dist/others/cast-mutable.mjs +114 -0
- package/dist/others/cast-mutable.mjs.map +1 -0
- package/dist/others/cast-readonly.d.mts +189 -0
- package/dist/others/cast-readonly.d.mts.map +1 -0
- package/dist/others/cast-readonly.mjs +193 -0
- package/dist/others/cast-readonly.mjs.map +1 -0
- package/dist/others/if-then.d.mts +98 -0
- package/dist/others/if-then.d.mts.map +1 -0
- package/dist/others/if-then.mjs +100 -0
- package/dist/others/if-then.mjs.map +1 -0
- package/dist/others/index.d.mts +8 -0
- package/dist/others/index.d.mts.map +1 -0
- package/dist/others/index.mjs +8 -0
- package/dist/others/index.mjs.map +1 -0
- package/dist/others/map-nullable.d.mts +151 -0
- package/dist/others/map-nullable.d.mts.map +1 -0
- package/dist/others/map-nullable.mjs +159 -0
- package/dist/others/map-nullable.mjs.map +1 -0
- package/dist/others/memoize-function.d.mts +173 -0
- package/dist/others/memoize-function.d.mts.map +1 -0
- package/dist/others/memoize-function.mjs +189 -0
- package/dist/others/memoize-function.mjs.map +1 -0
- package/dist/others/tuple.d.mts +159 -0
- package/dist/others/tuple.d.mts.map +1 -0
- package/dist/others/tuple.mjs +161 -0
- package/dist/others/tuple.mjs.map +1 -0
- package/dist/others/unknown-to-string.d.mts +180 -0
- package/dist/others/unknown-to-string.d.mts.map +1 -0
- package/dist/others/unknown-to-string.mjs +211 -0
- package/dist/others/unknown-to-string.mjs.map +1 -0
- package/dist/tsconfig.json +1 -0
- package/package.json +18 -16
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { TsVerifiedInternals } from '../refined-number-utils.mjs';
|
|
2
|
+
|
|
3
|
+
const typeNameInMessage = 'a non-negative integer in [0, 2^31)';
|
|
4
|
+
const { MIN_VALUE, MAX_VALUE, min: min_, max: max_, pow, add, sub, mul, div, random, is, castType, clamp, } = TsVerifiedInternals.RefinedNumberUtils.operatorsForInteger({
|
|
5
|
+
integerOrSafeInteger: 'SafeInteger',
|
|
6
|
+
MIN_VALUE: 0,
|
|
7
|
+
MAX_VALUE: 2 ** 31 - 1,
|
|
8
|
+
typeNameInMessage,
|
|
9
|
+
});
|
|
10
|
+
/**
|
|
11
|
+
* Checks if a number is a NonNegativeInt32 (32-bit non-negative signed integer in the range [0, 2^31)).
|
|
12
|
+
* @param value The value to check.
|
|
13
|
+
* @returns `true` if the value is a NonNegativeInt32, `false` otherwise.
|
|
14
|
+
*/
|
|
15
|
+
const isNonNegativeInt32 = is;
|
|
16
|
+
/**
|
|
17
|
+
* Casts a number to a NonNegativeInt32 type.
|
|
18
|
+
* @param value The value to cast.
|
|
19
|
+
* @returns The value as a NonNegativeInt32 type.
|
|
20
|
+
* @throws {TypeError} If the value is not a non-negative integer in [0, 2^31).
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const x = asNonNegativeInt32(1000); // NonNegativeInt32
|
|
24
|
+
* const y = asNonNegativeInt32(0); // NonNegativeInt32
|
|
25
|
+
* // asNonNegativeInt32(-1); // throws TypeError
|
|
26
|
+
* // asNonNegativeInt32(2147483648); // throws TypeError
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
const asNonNegativeInt32 = castType;
|
|
30
|
+
/**
|
|
31
|
+
* Namespace providing type-safe arithmetic operations for 32-bit non-negative integers.
|
|
32
|
+
*
|
|
33
|
+
* All operations automatically clamp results to the valid NonNegativeInt32 range [0, 2147483647].
|
|
34
|
+
* This ensures that all arithmetic maintains the 32-bit non-negative integer constraint,
|
|
35
|
+
* with negative results clamped to 0 and overflow results clamped to MAX_VALUE.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```typescript
|
|
39
|
+
* const a = asNonNegativeInt32(2000000000);
|
|
40
|
+
* const b = asNonNegativeInt32(500000000);
|
|
41
|
+
*
|
|
42
|
+
* // Arithmetic operations with automatic clamping
|
|
43
|
+
* const sum = NonNegativeInt32.add(a, b); // NonNegativeInt32 (2147483647 - clamped to MAX_VALUE)
|
|
44
|
+
* const diff = NonNegativeInt32.sub(a, b); // NonNegativeInt32 (1500000000)
|
|
45
|
+
* const reverseDiff = NonNegativeInt32.sub(b, a); // NonNegativeInt32 (0 - clamped to MIN_VALUE)
|
|
46
|
+
* const product = NonNegativeInt32.mul(a, b); // NonNegativeInt32 (2147483647 - clamped due to overflow)
|
|
47
|
+
*
|
|
48
|
+
* // Range operations
|
|
49
|
+
* const clamped = NonNegativeInt32.clamp(-1000); // NonNegativeInt32 (0)
|
|
50
|
+
* const minimum = NonNegativeInt32.min(a, b); // NonNegativeInt32 (500000000)
|
|
51
|
+
* const maximum = NonNegativeInt32.max(a, b); // NonNegativeInt32 (2000000000)
|
|
52
|
+
*
|
|
53
|
+
* // Utility operations
|
|
54
|
+
* const random = NonNegativeInt32.random(); // NonNegativeInt32 (random value in [0, 2147483647])
|
|
55
|
+
* const power = NonNegativeInt32.pow(asNonNegativeInt32(2), asNonNegativeInt32(20)); // NonNegativeInt32 (1048576)
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
const NonNegativeInt32 = {
|
|
59
|
+
/**
|
|
60
|
+
* Type guard to check if a value is a NonNegativeInt32.
|
|
61
|
+
* @param value The value to check.
|
|
62
|
+
* @returns `true` if the value is a 32-bit non-negative integer, `false` otherwise.
|
|
63
|
+
*/
|
|
64
|
+
is,
|
|
65
|
+
/**
|
|
66
|
+
* The minimum value for a 32-bit non-negative integer.
|
|
67
|
+
* @readonly
|
|
68
|
+
*/
|
|
69
|
+
MIN_VALUE,
|
|
70
|
+
/**
|
|
71
|
+
* The maximum value for a 32-bit non-negative integer.
|
|
72
|
+
* @readonly
|
|
73
|
+
*/
|
|
74
|
+
MAX_VALUE,
|
|
75
|
+
/**
|
|
76
|
+
* Returns the smaller of two NonNegativeInt32 values.
|
|
77
|
+
* @param a The first NonNegativeInt32.
|
|
78
|
+
* @param b The second NonNegativeInt32.
|
|
79
|
+
* @returns The minimum value as a NonNegativeInt32.
|
|
80
|
+
*/
|
|
81
|
+
min: min_,
|
|
82
|
+
/**
|
|
83
|
+
* Returns the larger of two NonNegativeInt32 values.
|
|
84
|
+
* @param a The first NonNegativeInt32.
|
|
85
|
+
* @param b The second NonNegativeInt32.
|
|
86
|
+
* @returns The maximum value as a NonNegativeInt32.
|
|
87
|
+
*/
|
|
88
|
+
max: max_,
|
|
89
|
+
/**
|
|
90
|
+
* Clamps a number to the NonNegativeInt32 range.
|
|
91
|
+
* @param value The number to clamp.
|
|
92
|
+
* @returns The value clamped to [0, 2147483647] as a NonNegativeInt32.
|
|
93
|
+
*/
|
|
94
|
+
clamp,
|
|
95
|
+
/**
|
|
96
|
+
* Generates a random NonNegativeInt32 value within the valid range.
|
|
97
|
+
* @returns A random NonNegativeInt32 between 0 and 2147483647.
|
|
98
|
+
*/
|
|
99
|
+
random,
|
|
100
|
+
/**
|
|
101
|
+
* Raises a NonNegativeInt32 to the power of another NonNegativeInt32.
|
|
102
|
+
* @param a The base NonNegativeInt32.
|
|
103
|
+
* @param b The exponent NonNegativeInt32.
|
|
104
|
+
* @returns `a ** b` clamped to [0, 2147483647] as a NonNegativeInt32.
|
|
105
|
+
*/
|
|
106
|
+
pow,
|
|
107
|
+
/**
|
|
108
|
+
* Adds two NonNegativeInt32 values.
|
|
109
|
+
* @param a The first NonNegativeInt32.
|
|
110
|
+
* @param b The second NonNegativeInt32.
|
|
111
|
+
* @returns `a + b` clamped to [0, 2147483647] as a NonNegativeInt32.
|
|
112
|
+
*/
|
|
113
|
+
add,
|
|
114
|
+
/**
|
|
115
|
+
* Subtracts one NonNegativeInt32 from another.
|
|
116
|
+
* @param a The minuend NonNegativeInt32.
|
|
117
|
+
* @param b The subtrahend NonNegativeInt32.
|
|
118
|
+
* @returns `a - b` clamped to [0, 2147483647] as a NonNegativeInt32 (minimum 0).
|
|
119
|
+
*/
|
|
120
|
+
sub,
|
|
121
|
+
/**
|
|
122
|
+
* Multiplies two NonNegativeInt32 values.
|
|
123
|
+
* @param a The first NonNegativeInt32.
|
|
124
|
+
* @param b The second NonNegativeInt32.
|
|
125
|
+
* @returns `a * b` clamped to [0, 2147483647] as a NonNegativeInt32.
|
|
126
|
+
*/
|
|
127
|
+
mul,
|
|
128
|
+
/**
|
|
129
|
+
* Divides one NonNegativeInt32 by another using floor division.
|
|
130
|
+
* @param a The dividend NonNegativeInt32.
|
|
131
|
+
* @param b The divisor NonNegativeInt32.
|
|
132
|
+
* @returns `⌊a / b⌋` clamped to [0, 2147483647] as a NonNegativeInt32.
|
|
133
|
+
*/
|
|
134
|
+
div,
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
export { NonNegativeInt32, asNonNegativeInt32, isNonNegativeInt32 };
|
|
138
|
+
//# sourceMappingURL=non-negative-int32.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"non-negative-int32.mjs","sources":["../../../src/number/branded-types/non-negative-int32.mts"],"sourcesContent":[null],"names":[],"mappings":";;AAKA,MAAM,iBAAiB,GAAG,qCAAqC;AAE/D,MAAM,EACJ,SAAS,EACT,SAAS,EACT,GAAG,EAAE,IAAI,EACT,GAAG,EAAE,IAAI,EACT,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,MAAM,EACN,EAAE,EACF,QAAQ,EACR,KAAK,GACN,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,mBAAmB,CAI5D;AACA,IAAA,oBAAoB,EAAE,aAAa;AACnC,IAAA,SAAS,EAAE,CAAC;AACZ,IAAA,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC;IACtB,iBAAiB;AACT,CAAA,CAAC;AAEX;;;;AAIG;AACI,MAAM,kBAAkB,GAAG;AAElC;;;;;;;;;;;;AAYG;AACI,MAAM,kBAAkB,GAAG;AAElC;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BG;AACI,MAAM,gBAAgB,GAAG;AAC9B;;;;AAIG;IACH,EAAE;AAEF;;;AAGG;IACH,SAAS;AAET;;;AAGG;IACH,SAAS;AAET;;;;;AAKG;AACH,IAAA,GAAG,EAAE,IAAI;AAET;;;;;AAKG;AACH,IAAA,GAAG,EAAE,IAAI;AAET;;;;AAIG;IACH,KAAK;AAEL;;;AAGG;IACH,MAAM;AAEN;;;;;AAKG;IACH,GAAG;AAEH;;;;;AAKG;IACH,GAAG;AAEH;;;;;AAKG;IACH,GAAG;AAEH;;;;;AAKG;IACH,GAAG;AAEH;;;;;AAKG;IACH,GAAG;;;;;"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { TsVerifiedInternals } from '../refined-number-utils.mjs';
|
|
2
|
+
type ElementType = NonZeroFiniteNumber;
|
|
3
|
+
/**
|
|
4
|
+
* Checks if a number is a NonZeroFiniteNumber (a finite number that is not 0).
|
|
5
|
+
* @param value The value to check.
|
|
6
|
+
* @returns `true` if the value is a NonZeroFiniteNumber, `false` otherwise.
|
|
7
|
+
*/
|
|
8
|
+
export declare const isNonZeroFiniteNumber: (a: number) => a is NonZeroFiniteNumber;
|
|
9
|
+
/**
|
|
10
|
+
* Casts a number to a NonZeroFiniteNumber type.
|
|
11
|
+
* @param value The value to cast.
|
|
12
|
+
* @returns The value as a NonZeroFiniteNumber type.
|
|
13
|
+
* @throws {TypeError} If the value is not a non-zero finite number.
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* const x = asNonZeroFiniteNumber(5.5); // NonZeroFiniteNumber
|
|
17
|
+
* const y = asNonZeroFiniteNumber(-3.2); // NonZeroFiniteNumber
|
|
18
|
+
* // asNonZeroFiniteNumber(0); // throws TypeError
|
|
19
|
+
* // asNonZeroFiniteNumber(Infinity); // throws TypeError
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare const asNonZeroFiniteNumber: <N extends number>(x: N) => number & {
|
|
23
|
+
readonly NaNValue: false;
|
|
24
|
+
readonly "!=0": true;
|
|
25
|
+
readonly Finite: true;
|
|
26
|
+
} & Readonly<{
|
|
27
|
+
'TSTypeForgeInternals--edd2f9ce-7ca5-45b0-9d1a-bd61b9b5d9c3': unknown;
|
|
28
|
+
}> & N;
|
|
29
|
+
/**
|
|
30
|
+
* Namespace providing type-safe arithmetic operations for non-zero finite numbers.
|
|
31
|
+
*
|
|
32
|
+
* All operations maintain the non-zero constraint while ensuring results remain finite
|
|
33
|
+
* (excluding NaN and Infinity). This type is useful for values that must never be zero,
|
|
34
|
+
* such as denominators, scaling factors, and ratios.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* const factor = asNonZeroFiniteNumber(2.5);
|
|
39
|
+
* const multiplier = asNonZeroFiniteNumber(-1.5);
|
|
40
|
+
*
|
|
41
|
+
* // Arithmetic operations that preserve non-zero constraint
|
|
42
|
+
* const result = NonZeroFiniteNumber.add(factor, multiplier); // NonZeroFiniteNumber (1.0)
|
|
43
|
+
* const difference = NonZeroFiniteNumber.sub(factor, multiplier); // NonZeroFiniteNumber (4.0)
|
|
44
|
+
* const product = NonZeroFiniteNumber.mul(factor, multiplier); // NonZeroFiniteNumber (-3.75)
|
|
45
|
+
* const quotient = NonZeroFiniteNumber.div(factor, multiplier); // NonZeroFiniteNumber (-1.666...)
|
|
46
|
+
*
|
|
47
|
+
* // Utility operations
|
|
48
|
+
* const absolute = NonZeroFiniteNumber.abs(multiplier); // NonZeroFiniteNumber (1.5)
|
|
49
|
+
* const minimum = NonZeroFiniteNumber.min(factor, multiplier); // NonZeroFiniteNumber (-1.5)
|
|
50
|
+
* const maximum = NonZeroFiniteNumber.max(factor, multiplier); // NonZeroFiniteNumber (2.5)
|
|
51
|
+
*
|
|
52
|
+
* // Rounding operations (return NonZeroInt)
|
|
53
|
+
* const rounded = NonZeroFiniteNumber.round(factor); // NonZeroInt (3)
|
|
54
|
+
* const floored = NonZeroFiniteNumber.floor(factor); // NonZeroInt (2)
|
|
55
|
+
* const ceiled = NonZeroFiniteNumber.ceil(factor); // NonZeroInt (3)
|
|
56
|
+
*
|
|
57
|
+
* // Random generation
|
|
58
|
+
* const randomValue = NonZeroFiniteNumber.random(); // NonZeroFiniteNumber (random non-zero value)
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare const NonZeroFiniteNumber: {
|
|
62
|
+
/**
|
|
63
|
+
* Type guard to check if a value is a NonZeroFiniteNumber.
|
|
64
|
+
* @param value The value to check.
|
|
65
|
+
* @returns `true` if the value is a non-zero finite number, `false` otherwise.
|
|
66
|
+
*/
|
|
67
|
+
readonly is: (a: number) => a is NonZeroFiniteNumber;
|
|
68
|
+
/**
|
|
69
|
+
* Returns the absolute value of a non-zero finite number.
|
|
70
|
+
* @param a The NonZeroFiniteNumber.
|
|
71
|
+
* @returns The absolute value as a NonZeroFiniteNumber.
|
|
72
|
+
*/
|
|
73
|
+
readonly abs: (x: NonZeroFiniteNumber) => TsVerifiedInternals.RefinedNumberUtils.ToNonNegative<NonZeroFiniteNumber>;
|
|
74
|
+
/**
|
|
75
|
+
* Returns the smaller of two NonZeroFiniteNumber values.
|
|
76
|
+
* @param a The first NonZeroFiniteNumber.
|
|
77
|
+
* @param b The second NonZeroFiniteNumber.
|
|
78
|
+
* @returns The minimum value as a NonZeroFiniteNumber.
|
|
79
|
+
*/
|
|
80
|
+
readonly min: (...values: readonly NonZeroFiniteNumber[]) => NonZeroFiniteNumber;
|
|
81
|
+
/**
|
|
82
|
+
* Returns the larger of two NonZeroFiniteNumber values.
|
|
83
|
+
* @param a The first NonZeroFiniteNumber.
|
|
84
|
+
* @param b The second NonZeroFiniteNumber.
|
|
85
|
+
* @returns The maximum value as a NonZeroFiniteNumber.
|
|
86
|
+
*/
|
|
87
|
+
readonly max: (...values: readonly NonZeroFiniteNumber[]) => NonZeroFiniteNumber;
|
|
88
|
+
/**
|
|
89
|
+
* Rounds down a NonZeroFiniteNumber to the nearest integer.
|
|
90
|
+
* @param x The NonZeroFiniteNumber to round down.
|
|
91
|
+
* @returns The floor value as a NonZeroInt.
|
|
92
|
+
*/
|
|
93
|
+
readonly floor: (x: ElementType) => TsVerifiedInternals.RefinedNumberUtils.ToInt<ElementType>;
|
|
94
|
+
/**
|
|
95
|
+
* Rounds up a NonZeroFiniteNumber to the nearest integer.
|
|
96
|
+
* @param x The NonZeroFiniteNumber to round up.
|
|
97
|
+
* @returns The ceiling value as a NonZeroInt.
|
|
98
|
+
*/
|
|
99
|
+
readonly ceil: (x: ElementType) => TsVerifiedInternals.RefinedNumberUtils.ToInt<ElementType>;
|
|
100
|
+
/**
|
|
101
|
+
* Rounds a NonZeroFiniteNumber to the nearest integer.
|
|
102
|
+
* @param x The NonZeroFiniteNumber to round.
|
|
103
|
+
* @returns The rounded value as a NonZeroInt.
|
|
104
|
+
*/
|
|
105
|
+
readonly round: (x: ElementType) => TsVerifiedInternals.RefinedNumberUtils.ToInt<ElementType>;
|
|
106
|
+
/**
|
|
107
|
+
* Generates a random NonZeroFiniteNumber value.
|
|
108
|
+
* @returns A random non-zero finite number.
|
|
109
|
+
*/
|
|
110
|
+
readonly random: (min: NonZeroFiniteNumber, max: NonZeroFiniteNumber) => NonZeroFiniteNumber;
|
|
111
|
+
/**
|
|
112
|
+
* Raises a NonZeroFiniteNumber to the power of another NonZeroFiniteNumber.
|
|
113
|
+
* @param a The base NonZeroFiniteNumber.
|
|
114
|
+
* @param b The exponent NonZeroFiniteNumber.
|
|
115
|
+
* @returns `a ** b` as a NonZeroFiniteNumber.
|
|
116
|
+
*/
|
|
117
|
+
readonly pow: (x: NonZeroFiniteNumber, y: NonZeroFiniteNumber) => NonZeroFiniteNumber;
|
|
118
|
+
/**
|
|
119
|
+
* Adds two NonZeroFiniteNumber values.
|
|
120
|
+
* @param a The first NonZeroFiniteNumber.
|
|
121
|
+
* @param b The second NonZeroFiniteNumber.
|
|
122
|
+
* @returns `a + b` as a NonZeroFiniteNumber.
|
|
123
|
+
*/
|
|
124
|
+
readonly add: (x: NonZeroFiniteNumber, y: NonZeroFiniteNumber) => NonZeroFiniteNumber;
|
|
125
|
+
/**
|
|
126
|
+
* Subtracts one NonZeroFiniteNumber from another.
|
|
127
|
+
* @param a The minuend NonZeroFiniteNumber.
|
|
128
|
+
* @param b The subtrahend NonZeroFiniteNumber.
|
|
129
|
+
* @returns `a - b` as a NonZeroFiniteNumber.
|
|
130
|
+
*/
|
|
131
|
+
readonly sub: (x: NonZeroFiniteNumber, y: NonZeroFiniteNumber) => NonZeroFiniteNumber;
|
|
132
|
+
/**
|
|
133
|
+
* Multiplies two NonZeroFiniteNumber values.
|
|
134
|
+
* @param a The first NonZeroFiniteNumber.
|
|
135
|
+
* @param b The second NonZeroFiniteNumber.
|
|
136
|
+
* @returns `a * b` as a NonZeroFiniteNumber.
|
|
137
|
+
*/
|
|
138
|
+
readonly mul: (x: NonZeroFiniteNumber, y: NonZeroFiniteNumber) => NonZeroFiniteNumber;
|
|
139
|
+
/**
|
|
140
|
+
* Divides one NonZeroFiniteNumber by another.
|
|
141
|
+
* @param a The dividend NonZeroFiniteNumber.
|
|
142
|
+
* @param b The divisor NonZeroFiniteNumber.
|
|
143
|
+
* @returns `a / b` as a NonZeroFiniteNumber.
|
|
144
|
+
*/
|
|
145
|
+
readonly div: (x: NonZeroFiniteNumber, y: number & {
|
|
146
|
+
readonly NaNValue: false;
|
|
147
|
+
readonly "!=0": true;
|
|
148
|
+
readonly Finite: true;
|
|
149
|
+
} & Readonly<{
|
|
150
|
+
'TSTypeForgeInternals--edd2f9ce-7ca5-45b0-9d1a-bd61b9b5d9c3': unknown;
|
|
151
|
+
}>) => NonZeroFiniteNumber;
|
|
152
|
+
};
|
|
153
|
+
export {};
|
|
154
|
+
//# sourceMappingURL=non-zero-finite-number.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"non-zero-finite-number.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/non-zero-finite-number.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,KAAK,WAAW,GAAG,mBAAmB,CAAC;AA2DvC;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,yCAAK,CAAC;AAExC;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB;;;;;;MAAW,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,mBAAmB;IAC9B;;;;OAIG;;IAGH;;;;OAIG;;IAGH;;;;;OAKG;;IAGH;;;;;OAKG;;IAGH;;;;OAIG;wBAtHA,WAAW,KACb,mBAAmB,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC;IAwH1D;;;;OAIG;uBAvHA,WAAW,KACb,mBAAmB,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC;IAyH1D;;;;OAIG;wBAxHA,WAAW,KACb,mBAAmB,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAW,CAAC;IA0H1D;;;OAGG;;IAGH;;;;;OAKG;;IAGH;;;;;OAKG;;IAGH;;;;;OAKG;;IAGH;;;;;OAKG;;IAGH;;;;;OAKG;;;;;;;;CAEK,CAAC"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { TsVerifiedInternals } from '../refined-number-utils.mjs';
|
|
2
|
+
|
|
3
|
+
const typeNameInMessage = 'a non-zero finite number';
|
|
4
|
+
const { abs, min: min_, max: max_, pow, add, sub, mul, div, randomNonZero: random, is, castType, } = TsVerifiedInternals.RefinedNumberUtils.operatorsForFloat({
|
|
5
|
+
nonZero: true,
|
|
6
|
+
MIN_VALUE: undefined,
|
|
7
|
+
MAX_VALUE: undefined,
|
|
8
|
+
typeNameInMessage,
|
|
9
|
+
});
|
|
10
|
+
// Not provided because reasonable rounding operations that avoid becoming 0 cannot be defined
|
|
11
|
+
const floor = (x) =>
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
|
|
13
|
+
Math.floor(x);
|
|
14
|
+
const ceil = (x) =>
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
|
|
16
|
+
Math.ceil(x);
|
|
17
|
+
const round = (x) =>
|
|
18
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
|
|
19
|
+
Math.round(x);
|
|
20
|
+
/**
|
|
21
|
+
* Checks if a number is a NonZeroFiniteNumber (a finite number that is not 0).
|
|
22
|
+
* @param value The value to check.
|
|
23
|
+
* @returns `true` if the value is a NonZeroFiniteNumber, `false` otherwise.
|
|
24
|
+
*/
|
|
25
|
+
const isNonZeroFiniteNumber = is;
|
|
26
|
+
/**
|
|
27
|
+
* Casts a number to a NonZeroFiniteNumber type.
|
|
28
|
+
* @param value The value to cast.
|
|
29
|
+
* @returns The value as a NonZeroFiniteNumber type.
|
|
30
|
+
* @throws {TypeError} If the value is not a non-zero finite number.
|
|
31
|
+
* @example
|
|
32
|
+
* ```typescript
|
|
33
|
+
* const x = asNonZeroFiniteNumber(5.5); // NonZeroFiniteNumber
|
|
34
|
+
* const y = asNonZeroFiniteNumber(-3.2); // NonZeroFiniteNumber
|
|
35
|
+
* // asNonZeroFiniteNumber(0); // throws TypeError
|
|
36
|
+
* // asNonZeroFiniteNumber(Infinity); // throws TypeError
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
const asNonZeroFiniteNumber = castType;
|
|
40
|
+
/**
|
|
41
|
+
* Namespace providing type-safe arithmetic operations for non-zero finite numbers.
|
|
42
|
+
*
|
|
43
|
+
* All operations maintain the non-zero constraint while ensuring results remain finite
|
|
44
|
+
* (excluding NaN and Infinity). This type is useful for values that must never be zero,
|
|
45
|
+
* such as denominators, scaling factors, and ratios.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```typescript
|
|
49
|
+
* const factor = asNonZeroFiniteNumber(2.5);
|
|
50
|
+
* const multiplier = asNonZeroFiniteNumber(-1.5);
|
|
51
|
+
*
|
|
52
|
+
* // Arithmetic operations that preserve non-zero constraint
|
|
53
|
+
* const result = NonZeroFiniteNumber.add(factor, multiplier); // NonZeroFiniteNumber (1.0)
|
|
54
|
+
* const difference = NonZeroFiniteNumber.sub(factor, multiplier); // NonZeroFiniteNumber (4.0)
|
|
55
|
+
* const product = NonZeroFiniteNumber.mul(factor, multiplier); // NonZeroFiniteNumber (-3.75)
|
|
56
|
+
* const quotient = NonZeroFiniteNumber.div(factor, multiplier); // NonZeroFiniteNumber (-1.666...)
|
|
57
|
+
*
|
|
58
|
+
* // Utility operations
|
|
59
|
+
* const absolute = NonZeroFiniteNumber.abs(multiplier); // NonZeroFiniteNumber (1.5)
|
|
60
|
+
* const minimum = NonZeroFiniteNumber.min(factor, multiplier); // NonZeroFiniteNumber (-1.5)
|
|
61
|
+
* const maximum = NonZeroFiniteNumber.max(factor, multiplier); // NonZeroFiniteNumber (2.5)
|
|
62
|
+
*
|
|
63
|
+
* // Rounding operations (return NonZeroInt)
|
|
64
|
+
* const rounded = NonZeroFiniteNumber.round(factor); // NonZeroInt (3)
|
|
65
|
+
* const floored = NonZeroFiniteNumber.floor(factor); // NonZeroInt (2)
|
|
66
|
+
* const ceiled = NonZeroFiniteNumber.ceil(factor); // NonZeroInt (3)
|
|
67
|
+
*
|
|
68
|
+
* // Random generation
|
|
69
|
+
* const randomValue = NonZeroFiniteNumber.random(); // NonZeroFiniteNumber (random non-zero value)
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
const NonZeroFiniteNumber = {
|
|
73
|
+
/**
|
|
74
|
+
* Type guard to check if a value is a NonZeroFiniteNumber.
|
|
75
|
+
* @param value The value to check.
|
|
76
|
+
* @returns `true` if the value is a non-zero finite number, `false` otherwise.
|
|
77
|
+
*/
|
|
78
|
+
is,
|
|
79
|
+
/**
|
|
80
|
+
* Returns the absolute value of a non-zero finite number.
|
|
81
|
+
* @param a The NonZeroFiniteNumber.
|
|
82
|
+
* @returns The absolute value as a NonZeroFiniteNumber.
|
|
83
|
+
*/
|
|
84
|
+
abs,
|
|
85
|
+
/**
|
|
86
|
+
* Returns the smaller of two NonZeroFiniteNumber values.
|
|
87
|
+
* @param a The first NonZeroFiniteNumber.
|
|
88
|
+
* @param b The second NonZeroFiniteNumber.
|
|
89
|
+
* @returns The minimum value as a NonZeroFiniteNumber.
|
|
90
|
+
*/
|
|
91
|
+
min: min_,
|
|
92
|
+
/**
|
|
93
|
+
* Returns the larger of two NonZeroFiniteNumber values.
|
|
94
|
+
* @param a The first NonZeroFiniteNumber.
|
|
95
|
+
* @param b The second NonZeroFiniteNumber.
|
|
96
|
+
* @returns The maximum value as a NonZeroFiniteNumber.
|
|
97
|
+
*/
|
|
98
|
+
max: max_,
|
|
99
|
+
/**
|
|
100
|
+
* Rounds down a NonZeroFiniteNumber to the nearest integer.
|
|
101
|
+
* @param x The NonZeroFiniteNumber to round down.
|
|
102
|
+
* @returns The floor value as a NonZeroInt.
|
|
103
|
+
*/
|
|
104
|
+
floor,
|
|
105
|
+
/**
|
|
106
|
+
* Rounds up a NonZeroFiniteNumber to the nearest integer.
|
|
107
|
+
* @param x The NonZeroFiniteNumber to round up.
|
|
108
|
+
* @returns The ceiling value as a NonZeroInt.
|
|
109
|
+
*/
|
|
110
|
+
ceil,
|
|
111
|
+
/**
|
|
112
|
+
* Rounds a NonZeroFiniteNumber to the nearest integer.
|
|
113
|
+
* @param x The NonZeroFiniteNumber to round.
|
|
114
|
+
* @returns The rounded value as a NonZeroInt.
|
|
115
|
+
*/
|
|
116
|
+
round,
|
|
117
|
+
/**
|
|
118
|
+
* Generates a random NonZeroFiniteNumber value.
|
|
119
|
+
* @returns A random non-zero finite number.
|
|
120
|
+
*/
|
|
121
|
+
random,
|
|
122
|
+
/**
|
|
123
|
+
* Raises a NonZeroFiniteNumber to the power of another NonZeroFiniteNumber.
|
|
124
|
+
* @param a The base NonZeroFiniteNumber.
|
|
125
|
+
* @param b The exponent NonZeroFiniteNumber.
|
|
126
|
+
* @returns `a ** b` as a NonZeroFiniteNumber.
|
|
127
|
+
*/
|
|
128
|
+
pow,
|
|
129
|
+
/**
|
|
130
|
+
* Adds two NonZeroFiniteNumber values.
|
|
131
|
+
* @param a The first NonZeroFiniteNumber.
|
|
132
|
+
* @param b The second NonZeroFiniteNumber.
|
|
133
|
+
* @returns `a + b` as a NonZeroFiniteNumber.
|
|
134
|
+
*/
|
|
135
|
+
add,
|
|
136
|
+
/**
|
|
137
|
+
* Subtracts one NonZeroFiniteNumber from another.
|
|
138
|
+
* @param a The minuend NonZeroFiniteNumber.
|
|
139
|
+
* @param b The subtrahend NonZeroFiniteNumber.
|
|
140
|
+
* @returns `a - b` as a NonZeroFiniteNumber.
|
|
141
|
+
*/
|
|
142
|
+
sub,
|
|
143
|
+
/**
|
|
144
|
+
* Multiplies two NonZeroFiniteNumber values.
|
|
145
|
+
* @param a The first NonZeroFiniteNumber.
|
|
146
|
+
* @param b The second NonZeroFiniteNumber.
|
|
147
|
+
* @returns `a * b` as a NonZeroFiniteNumber.
|
|
148
|
+
*/
|
|
149
|
+
mul,
|
|
150
|
+
/**
|
|
151
|
+
* Divides one NonZeroFiniteNumber by another.
|
|
152
|
+
* @param a The dividend NonZeroFiniteNumber.
|
|
153
|
+
* @param b The divisor NonZeroFiniteNumber.
|
|
154
|
+
* @returns `a / b` as a NonZeroFiniteNumber.
|
|
155
|
+
*/
|
|
156
|
+
div,
|
|
157
|
+
};
|
|
158
|
+
|
|
159
|
+
export { NonZeroFiniteNumber, asNonZeroFiniteNumber, isNonZeroFiniteNumber };
|
|
160
|
+
//# sourceMappingURL=non-zero-finite-number.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"non-zero-finite-number.mjs","sources":["../../../src/number/branded-types/non-zero-finite-number.mts"],"sourcesContent":[null],"names":[],"mappings":";;AAKA,MAAM,iBAAiB,GAAG,0BAA0B;AAEpD,MAAM,EACJ,GAAG,EACH,GAAG,EAAE,IAAI,EACT,GAAG,EAAE,IAAI,EACT,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,GAAG,EACH,aAAa,EAAE,MAAM,EACrB,EAAE,EACF,QAAQ,GACT,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,iBAAiB,CAI1D;AACA,IAAA,OAAO,EAAE,IAAI;AACb,IAAA,SAAS,EAAE,SAAS;AACpB,IAAA,SAAS,EAAE,SAAS;IACpB,iBAAiB;AACT,CAAA,CAAC;AAEX;AAEA,MAAM,KAAK,GAAG,CACZ,CAAc;AAEd;AACA,IAAI,CAAC,KAAK,CAAC,CAAC,CAA8D;AAE5E,MAAM,IAAI,GAAG,CACX,CAAc;AAEd;AACA,IAAI,CAAC,IAAI,CAAC,CAAC,CAA8D;AAE3E,MAAM,KAAK,GAAG,CACZ,CAAc;AAEd;AACA,IAAI,CAAC,KAAK,CAAC,CAAC,CAA8D;AAc5E;;;;AAIG;AACI,MAAM,qBAAqB,GAAG;AAErC;;;;;;;;;;;;AAYG;AACI,MAAM,qBAAqB,GAAG;AAErC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BG;AACI,MAAM,mBAAmB,GAAG;AACjC;;;;AAIG;IACH,EAAE;AAEF;;;;AAIG;IACH,GAAG;AAEH;;;;;AAKG;AACH,IAAA,GAAG,EAAE,IAAI;AAET;;;;;AAKG;AACH,IAAA,GAAG,EAAE,IAAI;AAET;;;;AAIG;IACH,KAAK;AAEL;;;;AAIG;IACH,IAAI;AAEJ;;;;AAIG;IACH,KAAK;AAEL;;;AAGG;IACH,MAAM;AAEN;;;;;AAKG;IACH,GAAG;AAEH;;;;;AAKG;IACH,GAAG;AAEH;;;;;AAKG;IACH,GAAG;AAEH;;;;;AAKG;IACH,GAAG;AAEH;;;;;AAKG;IACH,GAAG;;;;;"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { TsVerifiedInternals } from '../refined-number-utils.mjs';
|
|
2
|
+
/**
|
|
3
|
+
* Checks if a number is a NonZeroInt.
|
|
4
|
+
* @param value The value to check.
|
|
5
|
+
* @returns `true` if the value is a NonZeroInt, `false` otherwise.
|
|
6
|
+
*/
|
|
7
|
+
export declare const isNonZeroInt: (a: number) => a is NonZeroInt;
|
|
8
|
+
/**
|
|
9
|
+
* Casts a number to a NonZeroInt type.
|
|
10
|
+
* @param value The value to cast.
|
|
11
|
+
* @returns The value as a NonZeroInt type.
|
|
12
|
+
* @throws {TypeError} If the value is not a non-zero integer.
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const x = asNonZeroInt(5); // NonZeroInt
|
|
16
|
+
* const y = asNonZeroInt(-3); // NonZeroInt
|
|
17
|
+
* // asNonZeroInt(0); // throws TypeError
|
|
18
|
+
* // asNonZeroInt(1.5); // throws TypeError
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare const asNonZeroInt: <N extends number>(x: N) => number & {
|
|
22
|
+
readonly NaNValue: false;
|
|
23
|
+
readonly "!=0": true;
|
|
24
|
+
readonly Finite: true;
|
|
25
|
+
readonly Int: true;
|
|
26
|
+
} & Readonly<{
|
|
27
|
+
'TSTypeForgeInternals--edd2f9ce-7ca5-45b0-9d1a-bd61b9b5d9c3': unknown;
|
|
28
|
+
}> & N;
|
|
29
|
+
/**
|
|
30
|
+
* Namespace providing type-safe arithmetic operations for non-zero integers.
|
|
31
|
+
*
|
|
32
|
+
* All operations maintain the non-zero constraint, ensuring that results are always valid NonZeroInt values.
|
|
33
|
+
* Division operations return floor division results, and all arithmetic maintains integer precision.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```typescript
|
|
37
|
+
* const a = asNonZeroInt(10);
|
|
38
|
+
* const b = asNonZeroInt(-5);
|
|
39
|
+
*
|
|
40
|
+
* // Arithmetic operations
|
|
41
|
+
* const sum = NonZeroInt.add(a, b); // NonZeroInt (5)
|
|
42
|
+
* const diff = NonZeroInt.sub(a, b); // NonZeroInt (15)
|
|
43
|
+
* const product = NonZeroInt.mul(a, b); // NonZeroInt (-50)
|
|
44
|
+
* const quotient = NonZeroInt.div(a, b); // NonZeroInt (-2)
|
|
45
|
+
*
|
|
46
|
+
* // Utility operations
|
|
47
|
+
* const absolute = NonZeroInt.abs(b); // NonZeroInt (5)
|
|
48
|
+
* const power = NonZeroInt.pow(a, asNonZeroInt(2)); // NonZeroInt (100)
|
|
49
|
+
* const minimum = NonZeroInt.min(a, b); // NonZeroInt (-5)
|
|
50
|
+
* const maximum = NonZeroInt(a, b); // NonZeroInt (10)
|
|
51
|
+
*
|
|
52
|
+
* // Random generation
|
|
53
|
+
* const randomInt = NonZeroInt.random(); // NonZeroInt (random non-zero integer)
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export declare const NonZeroInt: {
|
|
57
|
+
/**
|
|
58
|
+
* Type guard to check if a value is a NonZeroInt.
|
|
59
|
+
* @param value The value to check.
|
|
60
|
+
* @returns `true` if the value is a non-zero integer, `false` otherwise.
|
|
61
|
+
*/
|
|
62
|
+
readonly is: (a: number) => a is NonZeroInt;
|
|
63
|
+
/**
|
|
64
|
+
* Returns the absolute value of a non-zero integer.
|
|
65
|
+
* @param a The non-zero integer.
|
|
66
|
+
* @returns The absolute value as a NonZeroInt.
|
|
67
|
+
*/
|
|
68
|
+
readonly abs: (x: WithSmallInt<NonZeroInt, 40>) => TsVerifiedInternals.RefinedNumberUtils.ToNonNegative<NonZeroInt>;
|
|
69
|
+
/**
|
|
70
|
+
* Returns the smaller of two non-zero integers.
|
|
71
|
+
* @param a The first non-zero integer.
|
|
72
|
+
* @param b The second non-zero integer.
|
|
73
|
+
* @returns The minimum value as a NonZeroInt.
|
|
74
|
+
*/
|
|
75
|
+
readonly min: (...values: readonly WithSmallInt<NonZeroInt, 40>[]) => NonZeroInt;
|
|
76
|
+
/**
|
|
77
|
+
* Returns the larger of two non-zero integers.
|
|
78
|
+
* @param a The first non-zero integer.
|
|
79
|
+
* @param b The second non-zero integer.
|
|
80
|
+
* @returns The maximum value as a NonZeroInt.
|
|
81
|
+
*/
|
|
82
|
+
readonly max: (...values: readonly WithSmallInt<NonZeroInt, 40>[]) => NonZeroInt;
|
|
83
|
+
/**
|
|
84
|
+
* Generates a random non-zero integer.
|
|
85
|
+
* @returns A random NonZeroInt value.
|
|
86
|
+
*/
|
|
87
|
+
readonly random: (min: WithSmallInt<NonZeroInt, 40>, max: WithSmallInt<NonZeroInt, 40>) => NonZeroInt;
|
|
88
|
+
/**
|
|
89
|
+
* Raises a non-zero integer to the power of another non-zero integer.
|
|
90
|
+
* @param a The base non-zero integer.
|
|
91
|
+
* @param b The exponent non-zero integer.
|
|
92
|
+
* @returns `a ** b` as a NonZeroInt.
|
|
93
|
+
*/
|
|
94
|
+
readonly pow: (x: WithSmallInt<NonZeroInt, 40>, y: WithSmallInt<NonZeroInt, 40>) => NonZeroInt;
|
|
95
|
+
/**
|
|
96
|
+
* Adds two non-zero integers.
|
|
97
|
+
* @param a The first non-zero integer.
|
|
98
|
+
* @param b The second non-zero integer.
|
|
99
|
+
* @returns `a + b` as a NonZeroInt.
|
|
100
|
+
*/
|
|
101
|
+
readonly add: (x: WithSmallInt<NonZeroInt, 40>, y: WithSmallInt<NonZeroInt, 40>) => NonZeroInt;
|
|
102
|
+
/**
|
|
103
|
+
* Subtracts one non-zero integer from another.
|
|
104
|
+
* @param a The minuend non-zero integer.
|
|
105
|
+
* @param b The subtrahend non-zero integer.
|
|
106
|
+
* @returns `a - b` as a NonZeroInt.
|
|
107
|
+
*/
|
|
108
|
+
readonly sub: (x: WithSmallInt<NonZeroInt, 40>, y: WithSmallInt<NonZeroInt, 40>) => NonZeroInt;
|
|
109
|
+
/**
|
|
110
|
+
* Multiplies two non-zero integers.
|
|
111
|
+
* @param a The first non-zero integer.
|
|
112
|
+
* @param b The second non-zero integer.
|
|
113
|
+
* @returns `a * b` as a NonZeroInt.
|
|
114
|
+
*/
|
|
115
|
+
readonly mul: (x: WithSmallInt<NonZeroInt, 40>, y: WithSmallInt<NonZeroInt, 40>) => NonZeroInt;
|
|
116
|
+
/**
|
|
117
|
+
* Divides one non-zero integer by another using floor division.
|
|
118
|
+
* @param a The dividend non-zero integer.
|
|
119
|
+
* @param b The divisor non-zero integer.
|
|
120
|
+
* @returns `⌊a / b⌋` as a NonZeroInt.
|
|
121
|
+
*/
|
|
122
|
+
readonly div: (x: WithSmallInt<NonZeroInt, 40>, y: 1 | 2 | 3 | 32 | 4 | 5 | 6 | 7 | 8 | 9 | 11 | 10 | 24 | 14 | 34 | 12 | 13 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 33 | 35 | 36 | 37 | 38 | 39 | -1 | -2 | -3 | -32 | -4 | -5 | -6 | -7 | -8 | -9 | -11 | -10 | -24 | -14 | -34 | -12 | -13 | -15 | -16 | -17 | -18 | -19 | -20 | -21 | -22 | -23 | -25 | -26 | -27 | -28 | -29 | -30 | -31 | -33 | -35 | -36 | -37 | -38 | -39 | -40 | NormalizeBrandUnion<number & {
|
|
123
|
+
readonly NaNValue: false;
|
|
124
|
+
readonly "!=0": true;
|
|
125
|
+
readonly Finite: true;
|
|
126
|
+
readonly Int: true;
|
|
127
|
+
} & Readonly<{
|
|
128
|
+
'TSTypeForgeInternals--edd2f9ce-7ca5-45b0-9d1a-bd61b9b5d9c3': unknown;
|
|
129
|
+
}>>) => NonZeroInt;
|
|
130
|
+
};
|
|
131
|
+
//# sourceMappingURL=non-zero-int.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"non-zero-int.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/non-zero-int.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AA8BlE;;;;GAIG;AACH,eAAO,MAAM,YAAY,gCAAK,CAAC;AAE/B;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,YAAY;;;;;;;MAAW,CAAC;AAErC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,UAAU;IACrB;;;;OAIG;;IAGH;;;;OAIG;;IAGH;;;;;OAKG;;IAGH;;;;;OAKG;;IAGH;;;OAGG;;IAGH;;;;;OAKG;;IAGH;;;;;OAKG;;IAGH;;;;;OAKG;;IAGH;;;;;OAKG;;IAGH;;;;;OAKG;;;;;;;;;CAEK,CAAC"}
|