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
|
@@ -33,89 +33,98 @@ const isNonZeroFiniteNumber = is;
|
|
|
33
33
|
const asNonZeroFiniteNumber = castType;
|
|
34
34
|
const NonZeroFiniteNumber = {
|
|
35
35
|
/**
|
|
36
|
-
* Type guard
|
|
36
|
+
* Type guard that checks if a value is a non-zero finite number.
|
|
37
37
|
*
|
|
38
|
-
* @param value The value to check
|
|
39
|
-
* @returns `true` if the value is a non-zero finite number, `false`
|
|
40
|
-
*
|
|
38
|
+
* @param value - The value to check
|
|
39
|
+
* @returns `true` if the value is a non-zero finite number, `false` otherwise
|
|
40
|
+
* @see {@link isNonZeroFiniteNumber} for usage examples
|
|
41
41
|
*/
|
|
42
42
|
is,
|
|
43
43
|
/**
|
|
44
44
|
* Returns the absolute value of a non-zero finite number.
|
|
45
45
|
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
46
|
+
* The result is non-negative and keeps the `NonZeroFiniteNumber` brand.
|
|
47
|
+
*
|
|
48
|
+
* @param a - The non-zero finite number value
|
|
49
|
+
* @returns The absolute value as a non-negative `NonZeroFiniteNumber`
|
|
48
50
|
*/
|
|
49
51
|
abs,
|
|
50
52
|
/**
|
|
51
|
-
* Returns the
|
|
53
|
+
* Returns the smallest of the given non-zero finite numbers.
|
|
52
54
|
*
|
|
53
|
-
* @param
|
|
54
|
-
* @
|
|
55
|
-
* @returns The minimum value as a NonZeroFiniteNumber.
|
|
55
|
+
* @param values - The non-zero finite numbers to compare (at least one required)
|
|
56
|
+
* @returns The smallest value as a `NonZeroFiniteNumber`
|
|
56
57
|
*/
|
|
57
58
|
min: min_,
|
|
58
59
|
/**
|
|
59
|
-
* Returns the
|
|
60
|
+
* Returns the largest of the given non-zero finite numbers.
|
|
60
61
|
*
|
|
61
|
-
* @param
|
|
62
|
-
* @
|
|
63
|
-
* @returns The maximum value as a NonZeroFiniteNumber.
|
|
62
|
+
* @param values - The non-zero finite numbers to compare (at least one required)
|
|
63
|
+
* @returns The largest value as a `NonZeroFiniteNumber`
|
|
64
64
|
*/
|
|
65
65
|
max: max_,
|
|
66
66
|
/**
|
|
67
|
-
*
|
|
67
|
+
* Returns the greatest integer less than or equal to a non-zero finite
|
|
68
|
+
* number.
|
|
68
69
|
*
|
|
69
|
-
* @param
|
|
70
|
-
* @returns The
|
|
70
|
+
* @param a - The non-zero finite number value
|
|
71
|
+
* @returns The floored value as an integer
|
|
71
72
|
*/
|
|
72
73
|
floor,
|
|
73
74
|
/**
|
|
74
|
-
*
|
|
75
|
+
* Returns the smallest integer greater than or equal to a non-zero finite
|
|
76
|
+
* number.
|
|
75
77
|
*
|
|
76
|
-
* @param
|
|
77
|
-
* @returns The
|
|
78
|
+
* @param a - The non-zero finite number value
|
|
79
|
+
* @returns The ceiled value as an integer
|
|
78
80
|
*/
|
|
79
81
|
ceil,
|
|
80
82
|
/**
|
|
81
|
-
*
|
|
83
|
+
* Returns the value of a non-zero finite number rounded to the nearest
|
|
84
|
+
* integer.
|
|
82
85
|
*
|
|
83
|
-
* @param
|
|
84
|
-
* @returns The rounded value as
|
|
86
|
+
* @param a - The non-zero finite number value
|
|
87
|
+
* @returns The rounded value as an integer
|
|
85
88
|
*/
|
|
86
89
|
round,
|
|
87
90
|
/**
|
|
88
|
-
* Generates a random NonZeroFiniteNumber
|
|
91
|
+
* Generates a random `NonZeroFiniteNumber` within the given range.
|
|
92
|
+
*
|
|
93
|
+
* The range is inclusive on both ends.
|
|
89
94
|
*
|
|
90
|
-
* @
|
|
95
|
+
* @param min - The minimum value (inclusive)
|
|
96
|
+
* @param max - The maximum value (inclusive)
|
|
97
|
+
* @returns A random `NonZeroFiniteNumber` in `[min, max]`
|
|
91
98
|
*/
|
|
92
99
|
random,
|
|
93
100
|
/**
|
|
94
|
-
* Raises a
|
|
101
|
+
* Raises `a` to the power `b`, returning `a ** b` as a `NonZeroFiniteNumber`.
|
|
95
102
|
*
|
|
96
|
-
* @param a The base
|
|
97
|
-
* @param b The exponent
|
|
98
|
-
* @returns `a ** b` as a NonZeroFiniteNumber
|
|
103
|
+
* @param a - The base non-zero finite number
|
|
104
|
+
* @param b - The exponent non-zero finite number
|
|
105
|
+
* @returns `a ** b` as a `NonZeroFiniteNumber`
|
|
99
106
|
*/
|
|
100
107
|
pow,
|
|
101
108
|
/**
|
|
102
|
-
* Multiplies two
|
|
109
|
+
* Multiplies two non-zero finite numbers, returning `a * b` as a
|
|
110
|
+
* `NonZeroFiniteNumber`.
|
|
103
111
|
*
|
|
104
|
-
* @param a The first
|
|
105
|
-
* @param b The second
|
|
106
|
-
* @returns `a
|
|
112
|
+
* @param a - The first non-zero finite number
|
|
113
|
+
* @param b - The second non-zero finite number
|
|
114
|
+
* @returns The product of `a` and `b` as a `NonZeroFiniteNumber`
|
|
107
115
|
*/
|
|
108
116
|
mul,
|
|
109
117
|
/**
|
|
110
|
-
* Divides
|
|
118
|
+
* Divides two non-zero finite numbers, returning `a / b` as a
|
|
119
|
+
* `NonZeroFiniteNumber`.
|
|
111
120
|
*
|
|
112
121
|
* Exact (non-flooring) division of two non-zero finite numbers is always
|
|
113
122
|
* non-zero, so this stays closed. For the non-closed operations (`add`/`sub`,
|
|
114
123
|
* whose result may be `0`) use {@link Num.add}/{@link Num.sub}.
|
|
115
124
|
*
|
|
116
|
-
* @param a The dividend
|
|
117
|
-
* @param b The divisor
|
|
118
|
-
* @returns `a / b` as a NonZeroFiniteNumber
|
|
125
|
+
* @param a - The dividend
|
|
126
|
+
* @param b - The divisor (must be non-zero)
|
|
127
|
+
* @returns `a / b` as a `NonZeroFiniteNumber`
|
|
119
128
|
*/
|
|
120
129
|
div
|
|
121
130
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"non-zero-finite-number.mjs","sources":["../../../src/number/branded-types/non-zero-finite-number.mts"],"sourcesContent":["import {\n type Int,\n type NonZeroInt,\n type PositiveFiniteNumber,\n type NonZeroFiniteNumber as TtfImported_NonZeroFiniteNumber,\n} from 'ts-type-forge';\nimport { expectType } from '../../expect-type.mjs';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type NonZeroFiniteNumber = TtfImported_NonZeroFiniteNumber;\n\ntype ElementType = NonZeroFiniteNumber;\n\nconst typeNameInMessage = 'a non-zero finite number';\n\nconst {\n abs,\n castType,\n div,\n is,\n max: max_,\n min: min_,\n mul,\n pow,\n randomNonZero: random,\n} = TsDataForgeInternals.RefinedNumberUtils.operatorsForFloat<\n ElementType,\n number,\n number\n>({\n nonZero: true,\n MIN_VALUE: -Number.MAX_VALUE,\n MAX_VALUE: Number.MAX_VALUE,\n typeNameInMessage,\n} as const);\n\
|
|
1
|
+
{"version":3,"file":"non-zero-finite-number.mjs","sources":["../../../src/number/branded-types/non-zero-finite-number.mts"],"sourcesContent":["import {\n type Int,\n type NonZeroInt,\n type PositiveFiniteNumber,\n type NonZeroFiniteNumber as TtfImported_NonZeroFiniteNumber,\n} from 'ts-type-forge';\nimport { expectType } from '../../expect-type.mjs';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type NonZeroFiniteNumber = TtfImported_NonZeroFiniteNumber;\n\ntype ElementType = NonZeroFiniteNumber;\n\nconst typeNameInMessage = 'a non-zero finite number';\n\nconst {\n abs,\n castType,\n div,\n is,\n max: max_,\n min: min_,\n mul,\n pow,\n randomNonZero: random,\n} = TsDataForgeInternals.RefinedNumberUtils.operatorsForFloat<\n ElementType,\n number,\n number\n>({\n nonZero: true,\n MIN_VALUE: -Number.MAX_VALUE,\n MAX_VALUE: Number.MAX_VALUE,\n typeNameInMessage,\n} as const);\n\nconst floor = (\n x: ElementType,\n): TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType> =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n Math.floor(x) as TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>;\n\nconst ceil = (\n x: ElementType,\n): TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType> =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n Math.ceil(x) as TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>;\n\nconst round = (\n x: ElementType,\n): TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType> =>\n // eslint-disable-next-line total-functions/no-unsafe-type-assertion\n Math.round(x) as TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>;\n\nexpectType<\n TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>,\n NonZeroInt\n>('=');\n\nexpectType<\n TsDataForgeInternals.RefinedNumberUtils.RemoveNonZeroBrandKey<\n TsDataForgeInternals.RefinedNumberUtils.ToInt<ElementType>\n >,\n Int\n>('=');\n\n/**\n * Type guard that checks if a value is a non-zero finite number.\n *\n * Returns `true` only for a finite value — never `NaN`, `Infinity`, or\n * `-Infinity`.\n *\n * @param value - The value to check\n * @returns `true` if the value is a non-zero finite number, `false` otherwise\n */\nexport const isNonZeroFiniteNumber = is;\n\n/**\n * Casts a `number` to the `NonZeroFiniteNumber` branded type.\n *\n * Validates that the value is a non-zero finite number and returns it with the\n * `NonZeroFiniteNumber` brand. Throws a `TypeError` otherwise.\n *\n * @param value - The value to cast\n * @returns The value as a `NonZeroFiniteNumber`\n * @throws {TypeError} If the value is not a non-zero finite number\n */\nexport const asNonZeroFiniteNumber = castType;\n\n/**\n * Namespace providing type-safe operations for the `NonZeroFiniteNumber`\n * branded type.\n *\n * The `NonZeroFiniteNumber` type represents a non-zero finite number.\n */\nexport const NonZeroFiniteNumber = {\n /**\n * Type guard that checks if a value is a non-zero finite number.\n *\n * @param value - The value to check\n * @returns `true` if the value is a non-zero finite number, `false` otherwise\n * @see {@link isNonZeroFiniteNumber} for usage examples\n */\n is,\n\n /**\n * Returns the absolute value of a non-zero finite number.\n *\n * The result is non-negative and keeps the `NonZeroFiniteNumber` brand.\n *\n * @param a - The non-zero finite number value\n * @returns The absolute value as a non-negative `NonZeroFiniteNumber`\n */\n abs,\n\n /**\n * Returns the smallest of the given non-zero finite numbers.\n *\n * @param values - The non-zero finite numbers to compare (at least one required)\n * @returns The smallest value as a `NonZeroFiniteNumber`\n */\n min: min_,\n\n /**\n * Returns the largest of the given non-zero finite numbers.\n *\n * @param values - The non-zero finite numbers to compare (at least one required)\n * @returns The largest value as a `NonZeroFiniteNumber`\n */\n max: max_,\n\n /**\n * Returns the greatest integer less than or equal to a non-zero finite\n * number.\n *\n * @param a - The non-zero finite number value\n * @returns The floored value as an integer\n */\n floor,\n\n /**\n * Returns the smallest integer greater than or equal to a non-zero finite\n * number.\n *\n * @param a - The non-zero finite number value\n * @returns The ceiled value as an integer\n */\n ceil,\n\n /**\n * Returns the value of a non-zero finite number rounded to the nearest\n * integer.\n *\n * @param a - The non-zero finite number value\n * @returns The rounded value as an integer\n */\n round,\n\n /**\n * Generates a random `NonZeroFiniteNumber` within the given range.\n *\n * The range is inclusive on both ends.\n *\n * @param min - The minimum value (inclusive)\n * @param max - The maximum value (inclusive)\n * @returns A random `NonZeroFiniteNumber` in `[min, max]`\n */\n random,\n\n /**\n * Raises `a` to the power `b`, returning `a ** b` as a `NonZeroFiniteNumber`.\n *\n * @param a - The base non-zero finite number\n * @param b - The exponent non-zero finite number\n * @returns `a ** b` as a `NonZeroFiniteNumber`\n */\n pow,\n\n /**\n * Multiplies two non-zero finite numbers, returning `a * b` as a\n * `NonZeroFiniteNumber`.\n *\n * @param a - The first non-zero finite number\n * @param b - The second non-zero finite number\n * @returns The product of `a` and `b` as a `NonZeroFiniteNumber`\n */\n mul,\n\n /**\n * Divides two non-zero finite numbers, returning `a / b` as a\n * `NonZeroFiniteNumber`.\n *\n * Exact (non-flooring) division of two non-zero finite numbers is always\n * non-zero, so this stays closed. For the non-closed operations (`add`/`sub`,\n * whose result may be `0`) use {@link Num.add}/{@link Num.sub}.\n *\n * @param a - The dividend\n * @param b - The divisor (must be non-zero)\n * @returns `a / b` as a `NonZeroFiniteNumber`\n */\n div,\n} as const;\n\nexpectType<\n TsDataForgeInternals.RefinedNumberUtils.ToNonNegative<ElementType>,\n PositiveFiniteNumber\n>('=');\n\nexpectType<\n keyof typeof NonZeroFiniteNumber,\n keyof TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n never,\n 'div' | 'mul'\n >\n>('=');\n\nexpectType<\n typeof NonZeroFiniteNumber,\n TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n never,\n 'div' | 'mul'\n >\n>('<=');\n"],"names":[],"mappings":";;AAaA,MAAM,iBAAA,GAAoB,0BAAA;AAE1B,MAAM;AAAA,EACJ,GAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,EAAA;AAAA,EACA,GAAA,EAAK,IAAA;AAAA,EACL,GAAA,EAAK,IAAA;AAAA,EACL,GAAA;AAAA,EACA,GAAA;AAAA,EACA,aAAA,EAAe;AACjB,CAAA,GAAI,oBAAA,CAAqB,mBAAmB,iBAAA,CAI1C;AAAA,EACA,OAAA,EAAS,IAAA;AAAA,EACT,SAAA,EAAW,CAAC,MAAA,CAAO,SAAA;AAAA,EACnB,WAAW,MAAA,CAAO,SAAA;AAAA,EAClB;AACF,CAAU,CAAA;AAEV,MAAM,QAAQ,CACZ,CAAA;AAAA;AAAA,EAGA,IAAA,CAAK,MAAM,CAAC;AAAA,CAAA;AAEd,MAAM,OAAO,CACX,CAAA;AAAA;AAAA,EAGA,IAAA,CAAK,KAAK,CAAC;AAAA,CAAA;AAEb,MAAM,QAAQ,CACZ,CAAA;AAAA;AAAA,EAGA,IAAA,CAAK,MAAM,CAAC;AAAA,CAAA;AAuBP,MAAM,qBAAA,GAAwB;AAY9B,MAAM,qBAAA,GAAwB;AAQ9B,MAAM,mBAAA,GAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQjC,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQL,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASL,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,KAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA;AACF;;;;"}
|
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
import { type NonZeroInt as TtfImported_NonZeroInt } from 'ts-type-forge';
|
|
2
2
|
export type NonZeroInt = TtfImported_NonZeroInt;
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
4
|
+
* Type guard that checks if a value is a non-zero integer.
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
6
|
+
* Returns `true` for a non-zero integer — a value with no fractional component,
|
|
7
|
+
* including values outside the safe integer range (unlike `SafeInt`).
|
|
8
|
+
*
|
|
9
|
+
* @param value - The value to check
|
|
10
|
+
* @returns `true` if the value is a non-zero integer, `false` otherwise
|
|
8
11
|
*/
|
|
9
12
|
export declare const isNonZeroInt: (a: number) => a is TtfImported_NonZeroInt;
|
|
10
13
|
/**
|
|
11
|
-
* Casts a number to
|
|
14
|
+
* Casts a `number` to the `NonZeroInt` branded type.
|
|
15
|
+
*
|
|
16
|
+
* Validates that the value is a non-zero integer and returns it with the
|
|
17
|
+
* `NonZeroInt` brand. Throws a `TypeError` otherwise.
|
|
12
18
|
*
|
|
13
|
-
* @param value The value to cast
|
|
14
|
-
* @returns The value as a NonZeroInt
|
|
15
|
-
* @throws {TypeError} If the value is not a non-zero integer
|
|
19
|
+
* @param value - The value to cast
|
|
20
|
+
* @returns The value as a `NonZeroInt`
|
|
21
|
+
* @throws {TypeError} If the value is not a non-zero integer
|
|
16
22
|
*/
|
|
17
23
|
export declare const asNonZeroInt: <N extends number>(x: N) => number & {
|
|
18
24
|
readonly "!=0": true;
|
|
@@ -23,67 +29,74 @@ export declare const asNonZeroInt: <N extends number>(x: N) => number & {
|
|
|
23
29
|
'TSTypeForgeInternals--edd2f9ce-7ca5-45b0-9d1a-bd61b9b5d9c3': unknown;
|
|
24
30
|
}> & N;
|
|
25
31
|
/**
|
|
26
|
-
* Namespace providing type-safe
|
|
32
|
+
* Namespace providing type-safe operations for the `NonZeroInt` branded type.
|
|
33
|
+
*
|
|
34
|
+
* The `NonZeroInt` type represents a non-zero integer. Division (`div`) uses
|
|
35
|
+
* floor division.
|
|
27
36
|
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
37
|
+
* Unlike `SafeInt`, `NonZeroInt` allows values outside the safe integer range
|
|
38
|
+
* (±2^53 − 1), so very large magnitudes may lose precision in JavaScript's
|
|
39
|
+
* `number` type.
|
|
31
40
|
*/
|
|
32
41
|
export declare const NonZeroInt: {
|
|
33
42
|
/**
|
|
34
|
-
* Type guard
|
|
43
|
+
* Type guard that checks if a value is a non-zero integer.
|
|
35
44
|
*
|
|
36
|
-
* @param value The value to check
|
|
37
|
-
* @returns `true` if the value is a non-zero integer, `false` otherwise
|
|
45
|
+
* @param value - The value to check
|
|
46
|
+
* @returns `true` if the value is a non-zero integer, `false` otherwise
|
|
47
|
+
* @see {@link isNonZeroInt} for usage examples
|
|
38
48
|
*/
|
|
39
49
|
readonly is: (a: number) => a is TtfImported_NonZeroInt;
|
|
40
50
|
/**
|
|
41
51
|
* Returns the absolute value of a non-zero integer.
|
|
42
52
|
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
53
|
+
* The result is non-negative and keeps the `NonZeroInt` brand. Note that
|
|
54
|
+
* `Math.abs(Number.MIN_SAFE_INTEGER)` exceeds `Number.MAX_SAFE_INTEGER`, so
|
|
55
|
+
* use `SafeInt` for guaranteed precision.
|
|
56
|
+
*
|
|
57
|
+
* @param a - The non-zero integer value
|
|
58
|
+
* @returns The absolute value as a non-negative `NonZeroInt`
|
|
45
59
|
*/
|
|
46
60
|
readonly abs: (x: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt>) => import("ts-type-forge").IntersectBrand<TtfImported_NonZeroInt, import("ts-type-forge").PositiveNumber>;
|
|
47
61
|
/**
|
|
48
|
-
* Returns the
|
|
62
|
+
* Returns the smallest of the given non-zero integers.
|
|
49
63
|
*
|
|
50
|
-
* @param
|
|
51
|
-
* @
|
|
52
|
-
* @returns The minimum value as a NonZeroInt.
|
|
64
|
+
* @param values - The non-zero integers to compare (at least one required)
|
|
65
|
+
* @returns The smallest value as a `NonZeroInt`
|
|
53
66
|
*/
|
|
54
67
|
readonly min: (...values: readonly import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt>[]) => TtfImported_NonZeroInt;
|
|
55
68
|
/**
|
|
56
|
-
* Returns the
|
|
69
|
+
* Returns the largest of the given non-zero integers.
|
|
57
70
|
*
|
|
58
|
-
* @param
|
|
59
|
-
* @
|
|
60
|
-
* @returns The maximum value as a NonZeroInt.
|
|
71
|
+
* @param values - The non-zero integers to compare (at least one required)
|
|
72
|
+
* @returns The largest value as a `NonZeroInt`
|
|
61
73
|
*/
|
|
62
74
|
readonly max: (...values: readonly import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt>[]) => TtfImported_NonZeroInt;
|
|
63
75
|
/**
|
|
64
|
-
* Generates a random
|
|
76
|
+
* Generates a random `NonZeroInt` within the given range.
|
|
77
|
+
*
|
|
78
|
+
* The range is inclusive on both ends.
|
|
65
79
|
*
|
|
66
|
-
* @
|
|
80
|
+
* @param min - The minimum value (inclusive)
|
|
81
|
+
* @param max - The maximum value (inclusive)
|
|
82
|
+
* @returns A random `NonZeroInt` in `[min, max]`
|
|
67
83
|
*/
|
|
68
84
|
readonly random: (min?: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt> | undefined, max?: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt> | undefined) => TtfImported_NonZeroInt;
|
|
69
85
|
/**
|
|
70
|
-
* Raises a
|
|
86
|
+
* Raises `a` to the power `b`, returning `a ** b` as a `NonZeroInt` (floored
|
|
87
|
+
* to an integer).
|
|
71
88
|
*
|
|
72
|
-
* @param a The base non-zero integer
|
|
73
|
-
* @param b The exponent non-zero integer
|
|
74
|
-
* @returns `a ** b` as a NonZeroInt
|
|
89
|
+
* @param a - The base non-zero integer
|
|
90
|
+
* @param b - The exponent non-zero integer
|
|
91
|
+
* @returns `a ** b` as a `NonZeroInt`
|
|
75
92
|
*/
|
|
76
93
|
readonly pow: (x: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt>, y: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt>) => TtfImported_NonZeroInt;
|
|
77
94
|
/**
|
|
78
|
-
* Multiplies two non-zero integers
|
|
79
|
-
*
|
|
80
|
-
* The product of two non-zero integers is always non-zero, so this stays
|
|
81
|
-
* closed; for the non-closed operations (`add`/`sub`/`div`, whose result may
|
|
82
|
-
* be `0`) use {@link Num.add}/{@link Num.sub}/{@link Num.divInt}.
|
|
95
|
+
* Multiplies two non-zero integers, returning `a * b` as a `NonZeroInt`.
|
|
83
96
|
*
|
|
84
|
-
* @param a The first non-zero integer
|
|
85
|
-
* @param b The second non-zero integer
|
|
86
|
-
* @returns `a
|
|
97
|
+
* @param a - The first non-zero integer
|
|
98
|
+
* @param b - The second non-zero integer
|
|
99
|
+
* @returns The product of `a` and `b` as a `NonZeroInt`
|
|
87
100
|
*/
|
|
88
101
|
readonly mul: (x: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt>, y: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt>) => TtfImported_NonZeroInt;
|
|
89
102
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"non-zero-int.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/non-zero-int.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,IAAI,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAI1E,MAAM,MAAM,UAAU,GAAG,sBAAsB,CAAC;AA2BhD
|
|
1
|
+
{"version":3,"file":"non-zero-int.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/non-zero-int.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,IAAI,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAI1E,MAAM,MAAM,UAAU,GAAG,sBAAsB,CAAC;AA2BhD;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,4CAAK,CAAC;AAE/B;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY;;;;;;;MAAW,CAAC;AAErC;;;;;;;;;GASG;AACH,eAAO,MAAM,UAAU;IACrB;;;;;;OAMG;;IAGH;;;;;;;;;OASG;;IAGH;;;;;OAKG;;IAGH;;;;;OAKG;;IAGH;;;;;;;;OAQG;;IAGH;;;;;;;OAOG;;IAGH;;;;;;OAMG;;CAEK,CAAC"}
|
|
@@ -21,59 +21,63 @@ const isNonZeroInt = is;
|
|
|
21
21
|
const asNonZeroInt = castType;
|
|
22
22
|
const NonZeroInt = {
|
|
23
23
|
/**
|
|
24
|
-
* Type guard
|
|
24
|
+
* Type guard that checks if a value is a non-zero integer.
|
|
25
25
|
*
|
|
26
|
-
* @param value The value to check
|
|
27
|
-
* @returns `true` if the value is a non-zero integer, `false` otherwise
|
|
26
|
+
* @param value - The value to check
|
|
27
|
+
* @returns `true` if the value is a non-zero integer, `false` otherwise
|
|
28
|
+
* @see {@link isNonZeroInt} for usage examples
|
|
28
29
|
*/
|
|
29
30
|
is,
|
|
30
31
|
/**
|
|
31
32
|
* Returns the absolute value of a non-zero integer.
|
|
32
33
|
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
34
|
+
* The result is non-negative and keeps the `NonZeroInt` brand. Note that
|
|
35
|
+
* `Math.abs(Number.MIN_SAFE_INTEGER)` exceeds `Number.MAX_SAFE_INTEGER`, so
|
|
36
|
+
* use `SafeInt` for guaranteed precision.
|
|
37
|
+
*
|
|
38
|
+
* @param a - The non-zero integer value
|
|
39
|
+
* @returns The absolute value as a non-negative `NonZeroInt`
|
|
35
40
|
*/
|
|
36
41
|
abs,
|
|
37
42
|
/**
|
|
38
|
-
* Returns the
|
|
43
|
+
* Returns the smallest of the given non-zero integers.
|
|
39
44
|
*
|
|
40
|
-
* @param
|
|
41
|
-
* @
|
|
42
|
-
* @returns The minimum value as a NonZeroInt.
|
|
45
|
+
* @param values - The non-zero integers to compare (at least one required)
|
|
46
|
+
* @returns The smallest value as a `NonZeroInt`
|
|
43
47
|
*/
|
|
44
48
|
min: min_,
|
|
45
49
|
/**
|
|
46
|
-
* Returns the
|
|
50
|
+
* Returns the largest of the given non-zero integers.
|
|
47
51
|
*
|
|
48
|
-
* @param
|
|
49
|
-
* @
|
|
50
|
-
* @returns The maximum value as a NonZeroInt.
|
|
52
|
+
* @param values - The non-zero integers to compare (at least one required)
|
|
53
|
+
* @returns The largest value as a `NonZeroInt`
|
|
51
54
|
*/
|
|
52
55
|
max: max_,
|
|
53
56
|
/**
|
|
54
|
-
* Generates a random
|
|
57
|
+
* Generates a random `NonZeroInt` within the given range.
|
|
58
|
+
*
|
|
59
|
+
* The range is inclusive on both ends.
|
|
55
60
|
*
|
|
56
|
-
* @
|
|
61
|
+
* @param min - The minimum value (inclusive)
|
|
62
|
+
* @param max - The maximum value (inclusive)
|
|
63
|
+
* @returns A random `NonZeroInt` in `[min, max]`
|
|
57
64
|
*/
|
|
58
65
|
random,
|
|
59
66
|
/**
|
|
60
|
-
* Raises a
|
|
67
|
+
* Raises `a` to the power `b`, returning `a ** b` as a `NonZeroInt` (floored
|
|
68
|
+
* to an integer).
|
|
61
69
|
*
|
|
62
|
-
* @param a The base non-zero integer
|
|
63
|
-
* @param b The exponent non-zero integer
|
|
64
|
-
* @returns `a ** b` as a NonZeroInt
|
|
70
|
+
* @param a - The base non-zero integer
|
|
71
|
+
* @param b - The exponent non-zero integer
|
|
72
|
+
* @returns `a ** b` as a `NonZeroInt`
|
|
65
73
|
*/
|
|
66
74
|
pow,
|
|
67
75
|
/**
|
|
68
|
-
* Multiplies two non-zero integers
|
|
69
|
-
*
|
|
70
|
-
* The product of two non-zero integers is always non-zero, so this stays
|
|
71
|
-
* closed; for the non-closed operations (`add`/`sub`/`div`, whose result may
|
|
72
|
-
* be `0`) use {@link Num.add}/{@link Num.sub}/{@link Num.divInt}.
|
|
76
|
+
* Multiplies two non-zero integers, returning `a * b` as a `NonZeroInt`.
|
|
73
77
|
*
|
|
74
|
-
* @param a The first non-zero integer
|
|
75
|
-
* @param b The second non-zero integer
|
|
76
|
-
* @returns `a
|
|
78
|
+
* @param a - The first non-zero integer
|
|
79
|
+
* @param b - The second non-zero integer
|
|
80
|
+
* @returns The product of `a` and `b` as a `NonZeroInt`
|
|
77
81
|
*/
|
|
78
82
|
mul
|
|
79
83
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"non-zero-int.mjs","sources":["../../../src/number/branded-types/non-zero-int.mts"],"sourcesContent":["import { type NonZeroInt as TtfImported_NonZeroInt } from 'ts-type-forge';\nimport { expectType } from '../../expect-type.mjs';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type NonZeroInt = TtfImported_NonZeroInt;\n\ntype ElementType = NonZeroInt;\n\nconst typeNameInMessage = 'a non-zero integer';\n\nconst {\n abs,\n castType,\n is,\n max: max_,\n min: min_,\n mul,\n pow,\n randomNonZero: random,\n} = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<\n ElementType,\n number,\n number\n>({\n integerOrSafeInteger: 'Integer',\n nonZero: true,\n MIN_VALUE: -Number.MAX_VALUE,\n MAX_VALUE: Number.MAX_VALUE,\n typeNameInMessage,\n} as const);\n\n/**\n *
|
|
1
|
+
{"version":3,"file":"non-zero-int.mjs","sources":["../../../src/number/branded-types/non-zero-int.mts"],"sourcesContent":["import { type NonZeroInt as TtfImported_NonZeroInt } from 'ts-type-forge';\nimport { expectType } from '../../expect-type.mjs';\nimport { TsDataForgeInternals } from '../refined-number-utils.mjs';\n\nexport type NonZeroInt = TtfImported_NonZeroInt;\n\ntype ElementType = NonZeroInt;\n\nconst typeNameInMessage = 'a non-zero integer';\n\nconst {\n abs,\n castType,\n is,\n max: max_,\n min: min_,\n mul,\n pow,\n randomNonZero: random,\n} = TsDataForgeInternals.RefinedNumberUtils.operatorsForInteger<\n ElementType,\n number,\n number\n>({\n integerOrSafeInteger: 'Integer',\n nonZero: true,\n MIN_VALUE: -Number.MAX_VALUE,\n MAX_VALUE: Number.MAX_VALUE,\n typeNameInMessage,\n} as const);\n\n/**\n * Type guard that checks if a value is a non-zero integer.\n *\n * Returns `true` for a non-zero integer — a value with no fractional component,\n * including values outside the safe integer range (unlike `SafeInt`).\n *\n * @param value - The value to check\n * @returns `true` if the value is a non-zero integer, `false` otherwise\n */\nexport const isNonZeroInt = is;\n\n/**\n * Casts a `number` to the `NonZeroInt` branded type.\n *\n * Validates that the value is a non-zero integer and returns it with the\n * `NonZeroInt` brand. Throws a `TypeError` otherwise.\n *\n * @param value - The value to cast\n * @returns The value as a `NonZeroInt`\n * @throws {TypeError} If the value is not a non-zero integer\n */\nexport const asNonZeroInt = castType;\n\n/**\n * Namespace providing type-safe operations for the `NonZeroInt` branded type.\n *\n * The `NonZeroInt` type represents a non-zero integer. Division (`div`) uses\n * floor division.\n *\n * Unlike `SafeInt`, `NonZeroInt` allows values outside the safe integer range\n * (±2^53 − 1), so very large magnitudes may lose precision in JavaScript's\n * `number` type.\n */\nexport const NonZeroInt = {\n /**\n * Type guard that checks if a value is a non-zero integer.\n *\n * @param value - The value to check\n * @returns `true` if the value is a non-zero integer, `false` otherwise\n * @see {@link isNonZeroInt} for usage examples\n */\n is,\n\n /**\n * Returns the absolute value of a non-zero integer.\n *\n * The result is non-negative and keeps the `NonZeroInt` brand. Note that\n * `Math.abs(Number.MIN_SAFE_INTEGER)` exceeds `Number.MAX_SAFE_INTEGER`, so\n * use `SafeInt` for guaranteed precision.\n *\n * @param a - The non-zero integer value\n * @returns The absolute value as a non-negative `NonZeroInt`\n */\n abs,\n\n /**\n * Returns the smallest of the given non-zero integers.\n *\n * @param values - The non-zero integers to compare (at least one required)\n * @returns The smallest value as a `NonZeroInt`\n */\n min: min_,\n\n /**\n * Returns the largest of the given non-zero integers.\n *\n * @param values - The non-zero integers to compare (at least one required)\n * @returns The largest value as a `NonZeroInt`\n */\n max: max_,\n\n /**\n * Generates a random `NonZeroInt` within the given range.\n *\n * The range is inclusive on both ends.\n *\n * @param min - The minimum value (inclusive)\n * @param max - The maximum value (inclusive)\n * @returns A random `NonZeroInt` in `[min, max]`\n */\n random,\n\n /**\n * Raises `a` to the power `b`, returning `a ** b` as a `NonZeroInt` (floored\n * to an integer).\n *\n * @param a - The base non-zero integer\n * @param b - The exponent non-zero integer\n * @returns `a ** b` as a `NonZeroInt`\n */\n pow,\n\n /**\n * Multiplies two non-zero integers, returning `a * b` as a `NonZeroInt`.\n *\n * @param a - The first non-zero integer\n * @param b - The second non-zero integer\n * @returns The product of `a` and `b` as a `NonZeroInt`\n */\n mul,\n} as const;\n\nexpectType<\n keyof typeof NonZeroInt,\n keyof TsDataForgeInternals.RefinedNumberUtils.NumberClass<\n ElementType,\n 'int',\n 'mul'\n >\n>('=');\n\nexpectType<\n typeof NonZeroInt,\n TsDataForgeInternals.RefinedNumberUtils.NumberClass<ElementType, 'int', 'mul'>\n>('<=');\n"],"names":[],"mappings":";;AAQA,MAAM,iBAAA,GAAoB,oBAAA;AAE1B,MAAM;AAAA,EACJ,GAAA;AAAA,EACA,QAAA;AAAA,EACA,EAAA;AAAA,EACA,GAAA,EAAK,IAAA;AAAA,EACL,GAAA,EAAK,IAAA;AAAA,EACL,GAAA;AAAA,EACA,GAAA;AAAA,EACA,aAAA,EAAe;AACjB,CAAA,GAAI,oBAAA,CAAqB,mBAAmB,mBAAA,CAI1C;AAAA,EACA,oBAAA,EAAsB,SAAA;AAAA,EACtB,OAAA,EAAS,IAAA;AAAA,EACT,SAAA,EAAW,CAAC,MAAA,CAAO,SAAA;AAAA,EACnB,WAAW,MAAA,CAAO,SAAA;AAAA,EAClB;AACF,CAAU,CAAA;AAWH,MAAM,YAAA,GAAe;AAYrB,MAAM,YAAA,GAAe;AAYrB,MAAM,UAAA,GAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQxB,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQL,GAAA,EAAK,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWL,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA;AACF;;;;"}
|
|
@@ -1,19 +1,24 @@
|
|
|
1
1
|
import { type NonZeroInt16 as TtfImported_NonZeroInt16 } from 'ts-type-forge';
|
|
2
2
|
export type NonZeroInt16 = TtfImported_NonZeroInt16;
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
* range [-2^15, 2^15) excluding 0).
|
|
4
|
+
* Type guard that checks if a value is a non-zero integer in [-2^15, 2^15).
|
|
6
5
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
6
|
+
* Returns `true` for a non-zero integer in [-2^15, 2^15) — a value with no
|
|
7
|
+
* fractional component.
|
|
8
|
+
*
|
|
9
|
+
* @param value - The value to check
|
|
10
|
+
* @returns `true` if the value is a non-zero integer in [-2^15, 2^15), `false` otherwise
|
|
9
11
|
*/
|
|
10
12
|
export declare const isNonZeroInt16: (a: number) => a is TtfImported_NonZeroInt16;
|
|
11
13
|
/**
|
|
12
|
-
* Casts a number to
|
|
14
|
+
* Casts a `number` to the `NonZeroInt16` branded type.
|
|
15
|
+
*
|
|
16
|
+
* Validates that the value is a non-zero integer in [-2^15, 2^15) and returns
|
|
17
|
+
* it with the `NonZeroInt16` brand. Throws a `TypeError` otherwise.
|
|
13
18
|
*
|
|
14
|
-
* @param value The value to cast
|
|
15
|
-
* @returns The value as a NonZeroInt16
|
|
16
|
-
* @throws {TypeError} If the value is not a non-zero integer in [-2^15, 2^15)
|
|
19
|
+
* @param value - The value to cast
|
|
20
|
+
* @returns The value as a `NonZeroInt16`
|
|
21
|
+
* @throws {TypeError} If the value is not a non-zero integer in [-2^15, 2^15)
|
|
17
22
|
*/
|
|
18
23
|
export declare const asNonZeroInt16: <N extends number>(x: N) => number & {
|
|
19
24
|
readonly "!=0": true;
|
|
@@ -33,90 +38,90 @@ export declare const asNonZeroInt16: <N extends number>(x: N) => number & {
|
|
|
33
38
|
'TSTypeForgeInternals--edd2f9ce-7ca5-45b0-9d1a-bd61b9b5d9c3': unknown;
|
|
34
39
|
}> & N;
|
|
35
40
|
/**
|
|
36
|
-
* Namespace providing type-safe
|
|
37
|
-
* signed integers.
|
|
41
|
+
* Namespace providing type-safe operations for the `NonZeroInt16` branded type.
|
|
38
42
|
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
* 16-bit non-zero signed integer constraint, preventing zero results and
|
|
42
|
-
* overflow.
|
|
43
|
+
* The `NonZeroInt16` type represents a non-zero integer in [-2^15, 2^15).
|
|
44
|
+
* Division (`div`) uses floor division.
|
|
43
45
|
*/
|
|
44
46
|
export declare const NonZeroInt16: {
|
|
45
47
|
/**
|
|
46
|
-
* Type guard
|
|
48
|
+
* Type guard that checks if a value is a non-zero integer in [-2^15, 2^15).
|
|
47
49
|
*
|
|
48
|
-
* @param value The value to check
|
|
49
|
-
* @returns `true` if the value is a
|
|
50
|
-
*
|
|
50
|
+
* @param value - The value to check
|
|
51
|
+
* @returns `true` if the value is a non-zero integer in [-2^15, 2^15), `false` otherwise
|
|
52
|
+
* @see {@link isNonZeroInt16} for usage examples
|
|
51
53
|
*/
|
|
52
54
|
readonly is: (a: number) => a is TtfImported_NonZeroInt16;
|
|
53
55
|
/**
|
|
54
|
-
* The
|
|
55
|
-
*
|
|
56
|
-
* @readonly
|
|
56
|
+
* The smallest value representable as `NonZeroInt16` (the lower saturation
|
|
57
|
+
* target of `fromNumber`).
|
|
57
58
|
*/
|
|
58
59
|
readonly MIN_VALUE: number;
|
|
59
60
|
/**
|
|
60
|
-
* The
|
|
61
|
-
*
|
|
62
|
-
* @readonly
|
|
61
|
+
* The largest value representable as `NonZeroInt16` (the upper saturation
|
|
62
|
+
* target of `fromNumber`).
|
|
63
63
|
*/
|
|
64
64
|
readonly MAX_VALUE: number;
|
|
65
65
|
/**
|
|
66
|
-
* Returns the absolute value of a
|
|
66
|
+
* Returns the absolute value of a non-zero integer in [-2^15, 2^15).
|
|
67
67
|
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
68
|
+
* The result is non-negative and keeps the `NonZeroInt16` brand.
|
|
69
|
+
*
|
|
70
|
+
* @param a - The non-zero integer value
|
|
71
|
+
* @returns The absolute value as a non-negative `NonZeroInt16`
|
|
70
72
|
*/
|
|
71
73
|
readonly abs: (x: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt16>) => import("ts-type-forge").IntersectBrand<TtfImported_NonZeroInt16, import("ts-type-forge").PositiveNumber>;
|
|
72
74
|
/**
|
|
73
|
-
* Returns the
|
|
75
|
+
* Returns the smallest of the given non-zero integers.
|
|
74
76
|
*
|
|
75
|
-
* @param
|
|
76
|
-
* @
|
|
77
|
-
* @returns The minimum value as a NonZeroInt16.
|
|
77
|
+
* @param values - The non-zero integers to compare (at least one required)
|
|
78
|
+
* @returns The smallest value as a `NonZeroInt16`
|
|
78
79
|
*/
|
|
79
80
|
readonly min: (...values: readonly import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt16>[]) => TtfImported_NonZeroInt16;
|
|
80
81
|
/**
|
|
81
|
-
* Returns the
|
|
82
|
+
* Returns the largest of the given non-zero integers.
|
|
82
83
|
*
|
|
83
|
-
* @param
|
|
84
|
-
* @
|
|
85
|
-
* @returns The maximum value as a NonZeroInt16.
|
|
84
|
+
* @param values - The non-zero integers to compare (at least one required)
|
|
85
|
+
* @returns The largest value as a `NonZeroInt16`
|
|
86
86
|
*/
|
|
87
87
|
readonly max: (...values: readonly import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt16>[]) => TtfImported_NonZeroInt16;
|
|
88
88
|
/**
|
|
89
|
-
*
|
|
89
|
+
* Converts an arbitrary `number` into a `NonZeroInt16`, rounding to the
|
|
90
|
+
* nearest integer and saturating the result into the range `[MIN_VALUE,
|
|
91
|
+
* MAX_VALUE]`.
|
|
92
|
+
*
|
|
93
|
+
* Unlike `asNonZeroInt16`, this is total: out-of-range inputs are clamped to
|
|
94
|
+
* the nearest representable `NonZeroInt16` instead of throwing.
|
|
90
95
|
*
|
|
91
|
-
* @param value The
|
|
92
|
-
* @returns The value
|
|
96
|
+
* @param value - The value to convert
|
|
97
|
+
* @returns The value as a `NonZeroInt16`
|
|
93
98
|
*/
|
|
94
|
-
readonly
|
|
99
|
+
readonly fromNumber: (x: number) => TtfImported_NonZeroInt16;
|
|
95
100
|
/**
|
|
96
|
-
* Generates a random NonZeroInt16
|
|
101
|
+
* Generates a random `NonZeroInt16` within the given range.
|
|
97
102
|
*
|
|
98
|
-
*
|
|
99
|
-
*
|
|
103
|
+
* The range is inclusive on both ends.
|
|
104
|
+
*
|
|
105
|
+
* @param min - The minimum value (inclusive)
|
|
106
|
+
* @param max - The maximum value (inclusive)
|
|
107
|
+
* @returns A random `NonZeroInt16` in `[min, max]`
|
|
100
108
|
*/
|
|
101
109
|
readonly random: (min?: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt16> | undefined, max?: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt16> | undefined) => TtfImported_NonZeroInt16;
|
|
102
110
|
/**
|
|
103
|
-
* Raises a
|
|
111
|
+
* Raises `a` to the power `b`, returning `a ** b` as a `NonZeroInt16`
|
|
112
|
+
* (floored to an integer).
|
|
104
113
|
*
|
|
105
|
-
* @param a The base
|
|
106
|
-
* @param b The exponent
|
|
107
|
-
* @returns `a ** b`
|
|
114
|
+
* @param a - The base non-zero integer
|
|
115
|
+
* @param b - The exponent non-zero integer
|
|
116
|
+
* @returns `a ** b` as a `NonZeroInt16`
|
|
108
117
|
*/
|
|
109
118
|
readonly pow: (x: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt16>, y: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt16>) => TtfImported_NonZeroInt16;
|
|
110
119
|
/**
|
|
111
|
-
* Multiplies two NonZeroInt16
|
|
112
|
-
*
|
|
113
|
-
* The product of two non-zero integers is always non-zero, so this stays
|
|
114
|
-
* closed; for the non-closed operations (`add`/`sub`/`div`, whose result may
|
|
115
|
-
* be `0`) use {@link Num.add}/{@link Num.sub}/{@link Num.divInt}.
|
|
120
|
+
* Multiplies two non-zero integers, returning `a * b` as a `NonZeroInt16`.
|
|
116
121
|
*
|
|
117
|
-
* @param a The first
|
|
118
|
-
* @param b The second
|
|
119
|
-
* @returns `a
|
|
122
|
+
* @param a - The first non-zero integer
|
|
123
|
+
* @param b - The second non-zero integer
|
|
124
|
+
* @returns The product of `a` and `b` as a `NonZeroInt16`
|
|
120
125
|
*/
|
|
121
126
|
readonly mul: (x: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt16>, y: import("ts-type-forge").WithSmallInt<TtfImported_NonZeroInt16>) => TtfImported_NonZeroInt16;
|
|
122
127
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"non-zero-int16.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/non-zero-int16.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,IAAI,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAI9E,MAAM,MAAM,YAAY,GAAG,wBAAwB,CAAC;AA8BpD
|
|
1
|
+
{"version":3,"file":"non-zero-int16.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/non-zero-int16.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,IAAI,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAI9E,MAAM,MAAM,YAAY,GAAG,wBAAwB,CAAC;AA8BpD;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,8CAAK,CAAC;AAEjC;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;MAAW,CAAC;AAEvC;;;;;GAKG;AACH,eAAO,MAAM,YAAY;IACvB;;;;;;OAMG;;IAGH;;;OAGG;;IAGH;;;OAGG;;IAGH;;;;;;;OAOG;;IAGH;;;;;OAKG;;IAGH;;;;;OAKG;;IAGH;;;;;;;;;;OAUG;;IAGH;;;;;;;;OAQG;;IAGH;;;;;;;OAOG;;IAGH;;;;;;OAMG;;CAEK,CAAC"}
|