ts-data-forge 6.13.1 → 7.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/array/impl/array-utils-iterators.mjs +6 -0
- package/dist/array/impl/array-utils-iterators.mjs.map +1 -1
- package/dist/array/impl/array-utils-modification.mjs +6 -0
- package/dist/array/impl/array-utils-modification.mjs.map +1 -1
- package/dist/array/impl/array-utils-reducing-value.mjs +6 -0
- package/dist/array/impl/array-utils-reducing-value.mjs.map +1 -1
- package/dist/array/impl/array-utils-search.mjs +6 -0
- package/dist/array/impl/array-utils-search.mjs.map +1 -1
- package/dist/array/impl/array-utils-slice-clamped.mjs +6 -0
- package/dist/array/impl/array-utils-slice-clamped.mjs.map +1 -1
- package/dist/array/impl/array-utils-slicing.mjs +6 -0
- package/dist/array/impl/array-utils-slicing.mjs.map +1 -1
- package/dist/array/impl/array-utils-transformation.mjs +6 -0
- package/dist/array/impl/array-utils-transformation.mjs.map +1 -1
- package/dist/array/impl/array-utils-validation.mjs +6 -0
- package/dist/array/impl/array-utils-validation.mjs.map +1 -1
- package/dist/collections/imap-mapped.mjs +6 -0
- package/dist/collections/imap-mapped.mjs.map +1 -1
- package/dist/collections/imap.mjs +6 -0
- package/dist/collections/imap.mjs.map +1 -1
- package/dist/collections/iset-mapped.mjs +6 -0
- package/dist/collections/iset-mapped.mjs.map +1 -1
- package/dist/collections/iset.mjs +6 -0
- package/dist/collections/iset.mjs.map +1 -1
- package/dist/collections/queue.mjs +6 -0
- package/dist/collections/queue.mjs.map +1 -1
- package/dist/collections/stack.mjs +6 -0
- package/dist/collections/stack.mjs.map +1 -1
- package/dist/entry-point.mjs +6 -0
- package/dist/entry-point.mjs.map +1 -1
- package/dist/index.mjs +6 -0
- package/dist/index.mjs.map +1 -1
- package/dist/iterator/range.mjs +6 -0
- package/dist/iterator/range.mjs.map +1 -1
- package/dist/json/json.mjs +6 -0
- package/dist/json/json.mjs.map +1 -1
- package/dist/number/branded-types/finite-number.d.mts +1 -1
- package/dist/number/branded-types/index.d.mts +6 -0
- package/dist/number/branded-types/index.d.mts.map +1 -1
- package/dist/number/branded-types/index.mjs +6 -0
- package/dist/number/branded-types/index.mjs.map +1 -1
- package/dist/number/branded-types/int.d.mts +1 -2
- package/dist/number/branded-types/int.d.mts.map +1 -1
- package/dist/number/branded-types/int16.d.mts +2 -3
- package/dist/number/branded-types/int16.d.mts.map +1 -1
- package/dist/number/branded-types/int32.d.mts +2 -3
- package/dist/number/branded-types/int32.d.mts.map +1 -1
- package/dist/number/branded-types/negative-finite-number.d.mts +143 -0
- package/dist/number/branded-types/negative-finite-number.d.mts.map +1 -0
- package/dist/number/branded-types/negative-finite-number.mjs +156 -0
- package/dist/number/branded-types/negative-finite-number.mjs.map +1 -0
- package/dist/number/branded-types/negative-int.d.mts +120 -0
- package/dist/number/branded-types/negative-int.d.mts.map +1 -0
- package/dist/number/branded-types/negative-int.mjs +125 -0
- package/dist/number/branded-types/negative-int.mjs.map +1 -0
- package/dist/number/branded-types/negative-safe-int.d.mts +132 -0
- package/dist/number/branded-types/negative-safe-int.d.mts.map +1 -0
- package/dist/number/branded-types/negative-safe-int.mjs +136 -0
- package/dist/number/branded-types/negative-safe-int.mjs.map +1 -0
- package/dist/number/branded-types/non-negative-finite-number.d.mts +1 -1
- package/dist/number/branded-types/non-negative-int16.d.mts +1 -1
- package/dist/number/branded-types/non-negative-int32.d.mts +1 -1
- package/dist/number/branded-types/non-positive-finite-number.d.mts +130 -0
- package/dist/number/branded-types/non-positive-finite-number.d.mts.map +1 -0
- package/dist/number/branded-types/non-positive-finite-number.mjs +134 -0
- package/dist/number/branded-types/non-positive-finite-number.mjs.map +1 -0
- package/dist/number/branded-types/non-positive-int.d.mts +224 -0
- package/dist/number/branded-types/non-positive-int.d.mts.map +1 -0
- package/dist/number/branded-types/non-positive-int.mjs +222 -0
- package/dist/number/branded-types/non-positive-int.mjs.map +1 -0
- package/dist/number/branded-types/non-positive-safe-int.d.mts +119 -0
- package/dist/number/branded-types/non-positive-safe-int.d.mts.map +1 -0
- package/dist/number/branded-types/non-positive-safe-int.mjs +116 -0
- package/dist/number/branded-types/non-positive-safe-int.mjs.map +1 -0
- package/dist/number/branded-types/non-zero-finite-number.d.mts +5 -17
- package/dist/number/branded-types/non-zero-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-finite-number.mjs +5 -17
- package/dist/number/branded-types/non-zero-finite-number.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int.d.mts +5 -33
- package/dist/number/branded-types/non-zero-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int.mjs +5 -25
- package/dist/number/branded-types/non-zero-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int16.d.mts +6 -43
- package/dist/number/branded-types/non-zero-int16.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int16.mjs +5 -25
- package/dist/number/branded-types/non-zero-int16.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-int32.d.mts +6 -39
- package/dist/number/branded-types/non-zero-int32.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-int32.mjs +5 -25
- package/dist/number/branded-types/non-zero-int32.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-safe-int.d.mts +5 -37
- package/dist/number/branded-types/non-zero-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-safe-int.mjs +5 -28
- package/dist/number/branded-types/non-zero-safe-int.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-uint16.d.mts +6 -33
- package/dist/number/branded-types/non-zero-uint16.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-uint16.mjs +5 -17
- package/dist/number/branded-types/non-zero-uint16.mjs.map +1 -1
- package/dist/number/branded-types/non-zero-uint32.d.mts +6 -31
- package/dist/number/branded-types/non-zero-uint32.d.mts.map +1 -1
- package/dist/number/branded-types/non-zero-uint32.mjs +5 -17
- package/dist/number/branded-types/non-zero-uint32.mjs.map +1 -1
- package/dist/number/branded-types/positive-finite-number.d.mts +4 -2
- package/dist/number/branded-types/positive-finite-number.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int.d.mts +4 -2
- package/dist/number/branded-types/positive-int.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int16.d.mts +4 -2
- package/dist/number/branded-types/positive-int16.d.mts.map +1 -1
- package/dist/number/branded-types/positive-int32.d.mts +4 -2
- package/dist/number/branded-types/positive-int32.d.mts.map +1 -1
- package/dist/number/branded-types/positive-safe-int.d.mts +4 -2
- package/dist/number/branded-types/positive-safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/positive-uint16.d.mts +4 -2
- package/dist/number/branded-types/positive-uint16.d.mts.map +1 -1
- package/dist/number/branded-types/positive-uint32.d.mts +4 -2
- package/dist/number/branded-types/positive-uint32.d.mts.map +1 -1
- package/dist/number/branded-types/safe-int.d.mts +1 -2
- package/dist/number/branded-types/safe-int.d.mts.map +1 -1
- package/dist/number/branded-types/safe-uint.d.mts +1 -1
- package/dist/number/branded-types/uint.d.mts +1 -1
- package/dist/number/branded-types/uint16.d.mts +1 -1
- package/dist/number/branded-types/uint32.d.mts +1 -1
- package/dist/number/index.d.mts +1 -0
- package/dist/number/index.d.mts.map +1 -1
- package/dist/number/index.mjs +6 -0
- package/dist/number/index.mjs.map +1 -1
- package/dist/number/num-arithmetic-types.d.mts +74 -0
- package/dist/number/num-arithmetic-types.d.mts.map +1 -0
- package/dist/number/num-arithmetic-types.mjs +2 -0
- package/dist/number/num-arithmetic-types.mjs.map +1 -0
- package/dist/number/num.d.mts +53 -9
- package/dist/number/num.d.mts.map +1 -1
- package/dist/number/num.mjs +64 -12
- package/dist/number/num.mjs.map +1 -1
- package/dist/number/refined-number-utils.d.mts +12 -9
- package/dist/number/refined-number-utils.d.mts.map +1 -1
- package/dist/number/refined-number-utils.mjs.map +1 -1
- package/dist/object/object.mjs +6 -0
- package/dist/object/object.mjs.map +1 -1
- package/package.json +2 -2
- package/src/number/branded-types/index.mts +6 -0
- package/src/number/branded-types/negative-finite-number.mts +210 -0
- package/src/number/branded-types/negative-finite-number.test.mts +172 -0
- package/src/number/branded-types/negative-int.mts +160 -0
- package/src/number/branded-types/negative-int.test.mts +146 -0
- package/src/number/branded-types/negative-safe-int.mts +173 -0
- package/src/number/branded-types/negative-safe-int.test.mts +120 -0
- package/src/number/branded-types/non-positive-finite-number.mts +191 -0
- package/src/number/branded-types/non-positive-finite-number.test.mts +286 -0
- package/src/number/branded-types/non-positive-int.mts +251 -0
- package/src/number/branded-types/non-positive-int.test.mts +197 -0
- package/src/number/branded-types/non-positive-safe-int.mts +147 -0
- package/src/number/branded-types/non-positive-safe-int.test.mts +223 -0
- package/src/number/branded-types/non-zero-finite-number.mts +14 -22
- package/src/number/branded-types/non-zero-finite-number.test.mts +0 -12
- package/src/number/branded-types/non-zero-int.mts +10 -32
- package/src/number/branded-types/non-zero-int.test.mts +0 -20
- package/src/number/branded-types/non-zero-int16.mts +8 -32
- package/src/number/branded-types/non-zero-int16.test.mts +0 -30
- package/src/number/branded-types/non-zero-int32.mts +8 -32
- package/src/number/branded-types/non-zero-int32.test.mts +0 -30
- package/src/number/branded-types/non-zero-safe-int.mts +8 -35
- package/src/number/branded-types/non-zero-safe-int.test.mts +0 -32
- package/src/number/branded-types/non-zero-uint16.mts +8 -22
- package/src/number/branded-types/non-zero-uint16.test.mts +0 -16
- package/src/number/branded-types/non-zero-uint32.mts +8 -22
- package/src/number/branded-types/non-zero-uint32.test.mts +0 -16
- package/src/number/index.mts +1 -0
- package/src/number/num-arithmetic-types.mts +269 -0
- package/src/number/num-arithmetic-types.test.mts +130 -0
- package/src/number/num-arithmetic.test.mts +102 -0
- package/src/number/num.mts +96 -15
- package/src/number/refined-number-utils.mts +19 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"positive-int16.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/positive-int16.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,IAAI,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAIhF,MAAM,MAAM,aAAa,GAAG,yBAAyB,CAAC;AA+BtD;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,+CAAK,CAAC;AAElC;;;;;;GAMG;AACH,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"positive-int16.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/positive-int16.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,IAAI,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAIhF,MAAM,MAAM,aAAa,GAAG,yBAAyB,CAAC;AA+BtD;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,+CAAK,CAAC;AAElC;;;;;;GAMG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;MAAW,CAAC;AAExC;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa;IACxB;;;;;;OAMG;;IAGH;;;;OAIG;;IAGH;;;;OAIG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;OAKG;;IAGH;;;;OAIG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;;;;;;;;;;;;;;;;;;;CAEK,CAAC"}
|
|
@@ -19,12 +19,13 @@ export declare const asPositiveInt32: <N extends number>(x: N) => number & {
|
|
|
19
19
|
readonly NaNValue: false;
|
|
20
20
|
readonly Finite: true;
|
|
21
21
|
readonly Int: true;
|
|
22
|
-
readonly "!=0": true;
|
|
23
22
|
readonly "> -2^16": true;
|
|
24
23
|
readonly "> -2^32": true;
|
|
25
24
|
readonly ">= -2^15": true;
|
|
26
25
|
readonly ">= -2^31": true;
|
|
27
26
|
readonly ">=0": true;
|
|
27
|
+
readonly "!=0": true;
|
|
28
|
+
readonly "<=0": false;
|
|
28
29
|
readonly "< 2^31": true;
|
|
29
30
|
readonly "< 2^32": true;
|
|
30
31
|
readonly SafeInt: true;
|
|
@@ -133,12 +134,13 @@ export declare const PositiveInt32: {
|
|
|
133
134
|
readonly NaNValue: false;
|
|
134
135
|
readonly Finite: true;
|
|
135
136
|
readonly Int: true;
|
|
136
|
-
readonly "!=0": true;
|
|
137
137
|
readonly "> -2^16": true;
|
|
138
138
|
readonly "> -2^32": true;
|
|
139
139
|
readonly ">= -2^15": true;
|
|
140
140
|
readonly ">= -2^31": true;
|
|
141
141
|
readonly ">=0": true;
|
|
142
|
+
readonly "!=0": true;
|
|
143
|
+
readonly "<=0": false;
|
|
142
144
|
readonly "< 2^31": true;
|
|
143
145
|
readonly "< 2^32": true;
|
|
144
146
|
readonly SafeInt: true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"positive-int32.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/positive-int32.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,IAAI,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAIhF,MAAM,MAAM,aAAa,GAAG,yBAAyB,CAAC;AA+BtD;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,+CAAK,CAAC;AAElC;;;;;;GAMG;AACH,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"positive-int32.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/positive-int32.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,IAAI,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAIhF,MAAM,MAAM,aAAa,GAAG,yBAAyB,CAAC;AA+BtD;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,+CAAK,CAAC;AAElC;;;;;;GAMG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;MAAW,CAAC;AAExC;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa;IACxB;;;;;;OAMG;;IAGH;;;;OAIG;;IAGH;;;;OAIG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;OAKG;;IAGH;;;;OAIG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;;;;;;;;;;;;;;;;;CAEK,CAAC"}
|
|
@@ -41,12 +41,13 @@ export declare const asPositiveSafeInt: <N extends number>(x: N) => number & {
|
|
|
41
41
|
readonly NaNValue: false;
|
|
42
42
|
readonly Finite: true;
|
|
43
43
|
readonly Int: true;
|
|
44
|
-
readonly "!=0": true;
|
|
45
44
|
readonly "> -2^16": true;
|
|
46
45
|
readonly "> -2^32": true;
|
|
47
46
|
readonly ">= -2^15": true;
|
|
48
47
|
readonly ">= -2^31": true;
|
|
49
48
|
readonly ">=0": true;
|
|
49
|
+
readonly "!=0": true;
|
|
50
|
+
readonly "<=0": false;
|
|
50
51
|
readonly SafeInt: true;
|
|
51
52
|
} & Readonly<{
|
|
52
53
|
'TSTypeForgeInternals--edd2f9ce-7ca5-45b0-9d1a-bd61b9b5d9c3': unknown;
|
|
@@ -287,12 +288,13 @@ export declare const PositiveSafeInt: {
|
|
|
287
288
|
readonly NaNValue: false;
|
|
288
289
|
readonly Finite: true;
|
|
289
290
|
readonly Int: true;
|
|
290
|
-
readonly "!=0": true;
|
|
291
291
|
readonly "> -2^16": true;
|
|
292
292
|
readonly "> -2^32": true;
|
|
293
293
|
readonly ">= -2^15": true;
|
|
294
294
|
readonly ">= -2^31": true;
|
|
295
295
|
readonly ">=0": true;
|
|
296
|
+
readonly "!=0": true;
|
|
297
|
+
readonly "<=0": false;
|
|
296
298
|
readonly SafeInt: true;
|
|
297
299
|
} & Readonly<{
|
|
298
300
|
'TSTypeForgeInternals--edd2f9ce-7ca5-45b0-9d1a-bd61b9b5d9c3': unknown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"positive-safe-int.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/positive-safe-int.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,eAAe,IAAI,2BAA2B,EACpD,MAAM,eAAe,CAAC;AAIvB,MAAM,MAAM,eAAe,GAAG,2BAA2B,CAAC;AAgC1D;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,iBAAiB,iDAAK,CAAC;AAEpC;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"positive-safe-int.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/positive-safe-int.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,eAAe,IAAI,2BAA2B,EACpD,MAAM,eAAe,CAAC;AAIvB,MAAM,MAAM,eAAe,GAAG,2BAA2B,CAAC;AAgC1D;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,iBAAiB,iDAAK,CAAC;AAEpC;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;MAAW,CAAC;AAE1C;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe;IAC1B;;;;;;;;;;;;;;;;;;OAkBG;;IAGH;;;;OAIG;;IAGH;;;;OAIG;;IAGH;;;;;;;;;;;;;;;;;OAiBG;;IAGH;;;;;;;;;;;;;;;;;OAiBG;;IAGH;;;;;;;;;;;;;;;;;;;;;OAqBG;;IAGH;;;;;;;;;;;;;;;;;;OAkBG;;IAGH;;;;;;;;;;;;;;;;;;OAkBG;;IAGH;;;;;;;;;;;;;;;;;;;OAmBG;;IAGH;;;;;;;;;;;;;;;;;;;;OAoBG;;IAGH;;;;;;;;;;;;;;;;;;;OAmBG;;IAGH;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;;;;;;;;;;;;;;;;CAEK,CAAC"}
|
|
@@ -19,12 +19,13 @@ export declare const asPositiveUint16: <N extends number>(x: N) => number & {
|
|
|
19
19
|
readonly NaNValue: false;
|
|
20
20
|
readonly Finite: true;
|
|
21
21
|
readonly Int: true;
|
|
22
|
-
readonly "!=0": true;
|
|
23
22
|
readonly "> -2^16": true;
|
|
24
23
|
readonly "> -2^32": true;
|
|
25
24
|
readonly ">= -2^15": true;
|
|
26
25
|
readonly ">= -2^31": true;
|
|
27
26
|
readonly ">=0": true;
|
|
27
|
+
readonly "!=0": true;
|
|
28
|
+
readonly "<=0": false;
|
|
28
29
|
readonly "< 2^16": true;
|
|
29
30
|
readonly "< 2^31": true;
|
|
30
31
|
readonly "< 2^32": true;
|
|
@@ -134,12 +135,13 @@ export declare const PositiveUint16: {
|
|
|
134
135
|
readonly NaNValue: false;
|
|
135
136
|
readonly Finite: true;
|
|
136
137
|
readonly Int: true;
|
|
137
|
-
readonly "!=0": true;
|
|
138
138
|
readonly "> -2^16": true;
|
|
139
139
|
readonly "> -2^32": true;
|
|
140
140
|
readonly ">= -2^15": true;
|
|
141
141
|
readonly ">= -2^31": true;
|
|
142
142
|
readonly ">=0": true;
|
|
143
|
+
readonly "!=0": true;
|
|
144
|
+
readonly "<=0": false;
|
|
143
145
|
readonly "< 2^16": true;
|
|
144
146
|
readonly "< 2^31": true;
|
|
145
147
|
readonly "< 2^32": true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"positive-uint16.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/positive-uint16.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,IAAI,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAIlF,MAAM,MAAM,cAAc,GAAG,0BAA0B,CAAC;AA+BxD;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,gDAAK,CAAC;AAEnC;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"positive-uint16.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/positive-uint16.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,IAAI,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAIlF,MAAM,MAAM,cAAc,GAAG,0BAA0B,CAAC;AA+BxD;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,gDAAK,CAAC;AAEnC;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;MAAW,CAAC;AAEzC;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc;IACzB;;;;;;OAMG;;IAGH;;;;OAIG;;IAGH;;;;OAIG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;OAKG;;IAGH;;;;OAIG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;;;;;;;;;;;;;;;;;;CAEK,CAAC"}
|
|
@@ -19,12 +19,13 @@ export declare const asPositiveUint32: <N extends number>(x: N) => number & {
|
|
|
19
19
|
readonly NaNValue: false;
|
|
20
20
|
readonly Finite: true;
|
|
21
21
|
readonly Int: true;
|
|
22
|
-
readonly "!=0": true;
|
|
23
22
|
readonly "> -2^16": true;
|
|
24
23
|
readonly "> -2^32": true;
|
|
25
24
|
readonly ">= -2^15": true;
|
|
26
25
|
readonly ">= -2^31": true;
|
|
27
26
|
readonly ">=0": true;
|
|
27
|
+
readonly "!=0": true;
|
|
28
|
+
readonly "<=0": false;
|
|
28
29
|
readonly "< 2^32": true;
|
|
29
30
|
readonly SafeInt: true;
|
|
30
31
|
} & Readonly<{
|
|
@@ -133,12 +134,13 @@ export declare const PositiveUint32: {
|
|
|
133
134
|
readonly NaNValue: false;
|
|
134
135
|
readonly Finite: true;
|
|
135
136
|
readonly Int: true;
|
|
136
|
-
readonly "!=0": true;
|
|
137
137
|
readonly "> -2^16": true;
|
|
138
138
|
readonly "> -2^32": true;
|
|
139
139
|
readonly ">= -2^15": true;
|
|
140
140
|
readonly ">= -2^31": true;
|
|
141
141
|
readonly ">=0": true;
|
|
142
|
+
readonly "!=0": true;
|
|
143
|
+
readonly "<=0": false;
|
|
142
144
|
readonly "< 2^32": true;
|
|
143
145
|
readonly SafeInt: true;
|
|
144
146
|
} & Readonly<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"positive-uint32.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/positive-uint32.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,IAAI,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAIlF,MAAM,MAAM,cAAc,GAAG,0BAA0B,CAAC;AA+BxD;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,gDAAK,CAAC;AAEnC;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB
|
|
1
|
+
{"version":3,"file":"positive-uint32.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/positive-uint32.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,IAAI,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAIlF,MAAM,MAAM,cAAc,GAAG,0BAA0B,CAAC;AA+BxD;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,gDAAK,CAAC;AAEnC;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;MAAW,CAAC;AAEzC;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc;IACzB;;;;;;OAMG;;IAGH;;;;OAIG;;IAGH;;;;OAIG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;OAKG;;IAGH;;;;OAIG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;IAGH;;;;;;;OAOG;;IAGH;;;;;;OAMG;;IAGH;;;;;;OAMG;;;;;;;;;;;;;;;;;CAEK,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { type SafeUint, type SafeInt as TtfImported_SafeInt } from 'ts-type-forge';
|
|
2
|
-
import { TsDataForgeInternals } from '../refined-number-utils.mjs';
|
|
3
2
|
export type SafeInt = TtfImported_SafeInt;
|
|
4
3
|
/**
|
|
5
4
|
* Type guard that checks if a value is a safe integer.
|
|
@@ -118,7 +117,7 @@ export declare const SafeInt: {
|
|
|
118
117
|
* @param a - The safe integer value
|
|
119
118
|
* @returns The absolute value as a SafeInt, clamped if necessary
|
|
120
119
|
*/
|
|
121
|
-
readonly abs: (x: import("ts-type-forge").WithSmallInt<TtfImported_SafeInt>) =>
|
|
120
|
+
readonly abs: (x: import("ts-type-forge").WithSmallInt<TtfImported_SafeInt>) => import("ts-type-forge").IntersectBrand<TtfImported_SafeInt, import("ts-type-forge").NonNegativeNumber>;
|
|
122
121
|
/**
|
|
123
122
|
* Returns the minimum value from a list of safe integers.
|
|
124
123
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safe-int.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/safe-int.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,OAAO,IAAI,mBAAmB,EACpC,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"safe-int.d.mts","sourceRoot":"","sources":["../../../src/number/branded-types/safe-int.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,OAAO,IAAI,mBAAmB,EACpC,MAAM,eAAe,CAAC;AAIvB,MAAM,MAAM,OAAO,GAAG,mBAAmB,CAAC;AAkC1C;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,SAAS,yCAAK,CAAC;AAE5B;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,SAAS;;;;;;;MAAW,CAAC;AAElC;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,OAAO;IAClB;;;;;;;;;;;;;;;;OAgBG;;IAGH;;;;OAIG;;IAGH;;;;OAIG;;IAGH;;;;;;;;;;;;;;;;;;;;OAoBG;;IAGH;;;;;;;;;;;;;OAaG;;IAGH;;;;;;;;;;;;;OAaG;;IAGH;;;;;;;;;;;;;;;;;;;;;;OAsBG;;IAGH;;;;;;;;;;;;;;;;;;;;;;;OAuBG;;IAGH;;;;;;;;;;;;;;;;;;;;OAoBG;;IAGH;;;;;;;;;;;;;;;;OAgBG;;IAGH;;;;;;;;;;;;;;;;OAgBG;;IAGH;;;;;;;;;;;;;;;;OAgBG;;IAGH;;;;;;;;;;;;;;;;;;;OAmBG;;;;;;;;;;CAEK,CAAC"}
|
|
@@ -130,12 +130,12 @@ export declare const SafeUint: {
|
|
|
130
130
|
readonly NaNValue: false;
|
|
131
131
|
readonly Finite: true;
|
|
132
132
|
readonly Int: true;
|
|
133
|
-
readonly "!=0": true;
|
|
134
133
|
readonly "> -2^16": true;
|
|
135
134
|
readonly "> -2^32": true;
|
|
136
135
|
readonly ">= -2^15": true;
|
|
137
136
|
readonly ">= -2^31": true;
|
|
138
137
|
readonly ">=0": true;
|
|
138
|
+
readonly "!=0": true;
|
|
139
139
|
readonly SafeInt: true;
|
|
140
140
|
} & Readonly<{
|
|
141
141
|
'TSTypeForgeInternals--edd2f9ce-7ca5-45b0-9d1a-bd61b9b5d9c3': unknown;
|
|
@@ -236,12 +236,12 @@ export declare const Uint: {
|
|
|
236
236
|
readonly NaNValue: false;
|
|
237
237
|
readonly Finite: true;
|
|
238
238
|
readonly Int: true;
|
|
239
|
-
readonly "!=0": true;
|
|
240
239
|
readonly "> -2^16": true;
|
|
241
240
|
readonly "> -2^32": true;
|
|
242
241
|
readonly ">= -2^15": true;
|
|
243
242
|
readonly ">= -2^31": true;
|
|
244
243
|
readonly ">=0": true;
|
|
244
|
+
readonly "!=0": true;
|
|
245
245
|
} & Readonly<{
|
|
246
246
|
'TSTypeForgeInternals--edd2f9ce-7ca5-45b0-9d1a-bd61b9b5d9c3': unknown;
|
|
247
247
|
}>>) => import("ts-type-forge").NonNegativeInt;
|
|
@@ -134,12 +134,12 @@ export declare const Uint16: {
|
|
|
134
134
|
readonly NaNValue: false;
|
|
135
135
|
readonly Finite: true;
|
|
136
136
|
readonly Int: true;
|
|
137
|
-
readonly "!=0": true;
|
|
138
137
|
readonly "> -2^16": true;
|
|
139
138
|
readonly "> -2^32": true;
|
|
140
139
|
readonly ">= -2^15": true;
|
|
141
140
|
readonly ">= -2^31": true;
|
|
142
141
|
readonly ">=0": true;
|
|
142
|
+
readonly "!=0": true;
|
|
143
143
|
readonly "< 2^16": true;
|
|
144
144
|
readonly "< 2^31": true;
|
|
145
145
|
readonly "< 2^32": true;
|
|
@@ -130,12 +130,12 @@ export declare const Uint32: {
|
|
|
130
130
|
readonly NaNValue: false;
|
|
131
131
|
readonly Finite: true;
|
|
132
132
|
readonly Int: true;
|
|
133
|
-
readonly "!=0": true;
|
|
134
133
|
readonly "> -2^16": true;
|
|
135
134
|
readonly "> -2^32": true;
|
|
136
135
|
readonly ">= -2^15": true;
|
|
137
136
|
readonly ">= -2^31": true;
|
|
138
137
|
readonly ">=0": true;
|
|
138
|
+
readonly "!=0": true;
|
|
139
139
|
readonly "< 2^32": true;
|
|
140
140
|
readonly SafeInt: true;
|
|
141
141
|
} & Readonly<{
|
package/dist/number/index.d.mts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/number/index.mts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/number/index.mts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,WAAW,CAAC;AAC1B,cAAc,4BAA4B,CAAC"}
|
package/dist/number/index.mjs
CHANGED
|
@@ -2,9 +2,15 @@ export { FiniteNumber, asFiniteNumber, isFiniteNumber } from './branded-types/fi
|
|
|
2
2
|
export { Int, asInt, isInt } from './branded-types/int.mjs';
|
|
3
3
|
export { Int16, asInt16, isInt16 } from './branded-types/int16.mjs';
|
|
4
4
|
export { Int32, asInt32, isInt32 } from './branded-types/int32.mjs';
|
|
5
|
+
export { NegativeFiniteNumber, asNegativeFiniteNumber, isNegativeFiniteNumber } from './branded-types/negative-finite-number.mjs';
|
|
6
|
+
export { NegativeInt, asNegativeInt, isNegativeInt } from './branded-types/negative-int.mjs';
|
|
7
|
+
export { NegativeSafeInt, asNegativeSafeInt, isNegativeSafeInt } from './branded-types/negative-safe-int.mjs';
|
|
5
8
|
export { NonNegativeFiniteNumber, asNonNegativeFiniteNumber, isNonNegativeFiniteNumber } from './branded-types/non-negative-finite-number.mjs';
|
|
6
9
|
export { NonNegativeInt16, asNonNegativeInt16, isNonNegativeInt16 } from './branded-types/non-negative-int16.mjs';
|
|
7
10
|
export { NonNegativeInt32, asNonNegativeInt32, isNonNegativeInt32 } from './branded-types/non-negative-int32.mjs';
|
|
11
|
+
export { NonPositiveFiniteNumber, asNonPositiveFiniteNumber, isNonPositiveFiniteNumber } from './branded-types/non-positive-finite-number.mjs';
|
|
12
|
+
export { NonPositiveInt, asNonPositiveInt, isNonPositiveInt } from './branded-types/non-positive-int.mjs';
|
|
13
|
+
export { NonPositiveSafeInt, asNonPositiveSafeInt, isNonPositiveSafeInt } from './branded-types/non-positive-safe-int.mjs';
|
|
8
14
|
export { NonZeroFiniteNumber, asNonZeroFiniteNumber, isNonZeroFiniteNumber } from './branded-types/non-zero-finite-number.mjs';
|
|
9
15
|
export { NonZeroInt, asNonZeroInt, isNonZeroInt } from './branded-types/non-zero-int.mjs';
|
|
10
16
|
export { NonZeroInt16, asNonZeroInt16, isNonZeroInt16 } from './branded-types/non-zero-int16.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { type FiniteNumber, type Int, type NegativeFiniteNumber, type NegativeInt, type NegativeNumber, type NegativeSafeInt, type NonNegativeFiniteNumber, type NonNegativeNumber, type NonPositiveFiniteNumber, type NonPositiveInt, type NonPositiveNumber, type NonPositiveSafeInt, type NonZeroFiniteNumber, type NonZeroInt, type NonZeroNumber, type NonZeroSafeInt, type PositiveFiniteNumber, type PositiveInt, type PositiveNumber, type PositiveSafeInt, type SafeInt, type SafeUint, type Uint } from 'ts-type-forge';
|
|
2
|
+
/**
|
|
3
|
+
* Internal type-level arithmetic for {@link Num}'s `add`/`sub`/`mul`/`div`.
|
|
4
|
+
*
|
|
5
|
+
* The result type of a binary operation is computed from two independent axes of
|
|
6
|
+
* each operand:
|
|
7
|
+
*
|
|
8
|
+
* - **Sign** — `pos | neg | nonneg | nonpos | nonzero | any`, derived from the
|
|
9
|
+
* brand's sign keys and combined with a small boolean algebra over the facts
|
|
10
|
+
* `>= 0`, `<= 0`, `!= 0`.
|
|
11
|
+
* - **Level** — `safeint | int | finite | number`, derived from the brand's
|
|
12
|
+
* level keys.
|
|
13
|
+
*
|
|
14
|
+
* The sign is always computed exactly (so e.g. `neg * neg` becomes `pos`). The
|
|
15
|
+
* level widens on possible overflow (`safeint` results of `+`/`-`/`*` become
|
|
16
|
+
* `int`, since the magnitude may exceed the safe-integer range). No runtime
|
|
17
|
+
* clamping is performed — saturating "stay in the type" behavior is provided by
|
|
18
|
+
* the branded namespaces instead.
|
|
19
|
+
*
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
22
|
+
/** Sign classification of a numeric brand. */
|
|
23
|
+
type Sign = 'any' | 'neg' | 'nonneg' | 'nonpos' | 'nonzero' | 'pos';
|
|
24
|
+
/** Level (integer/finite) classification of a numeric brand. */
|
|
25
|
+
type Level = 'finite' | 'int' | 'number' | 'safeint';
|
|
26
|
+
/** Classifies a numeric type's sign. */
|
|
27
|
+
export type SignOf<N> = [N] extends [PositiveNumber] ? 'pos' : [N] extends [NegativeNumber] ? 'neg' : [N] extends [NonNegativeNumber] ? 'nonneg' : [N] extends [NonPositiveNumber] ? 'nonpos' : [N] extends [NonZeroNumber] ? 'nonzero' : 'any';
|
|
28
|
+
/** Classifies a numeric type's level. */
|
|
29
|
+
export type LevelOf<N> = [N] extends [SafeInt] ? 'safeint' : [N] extends [Int] ? 'int' : [N] extends [FiniteNumber] ? 'finite' : 'number';
|
|
30
|
+
type And<A extends boolean, B extends boolean> = [A, B] extends [true, true] ? true : false;
|
|
31
|
+
type Or<A extends boolean, B extends boolean> = true extends A | B ? true : false;
|
|
32
|
+
/** Whether the value is guaranteed `>= 0`. */
|
|
33
|
+
type Ge0<S extends Sign> = S extends 'pos' | 'nonneg' ? true : false;
|
|
34
|
+
/** Whether the value is guaranteed `<= 0`. */
|
|
35
|
+
type Le0<S extends Sign> = S extends 'neg' | 'nonpos' ? true : false;
|
|
36
|
+
/** Whether the value is guaranteed `!= 0`. */
|
|
37
|
+
type Ne0<S extends Sign> = S extends 'pos' | 'neg' | 'nonzero' ? true : false;
|
|
38
|
+
/** Rebuilds a {@link Sign} from the three facts. */
|
|
39
|
+
type FromFacts<ge0 extends boolean, le0 extends boolean, ne0 extends boolean> = ge0 extends true ? ne0 extends true ? 'pos' : 'nonneg' : le0 extends true ? ne0 extends true ? 'neg' : 'nonpos' : ne0 extends true ? 'nonzero' : 'any';
|
|
40
|
+
type NegateSign<S extends Sign> = FromFacts<Le0<S>, Ge0<S>, Ne0<S>>;
|
|
41
|
+
type AddSign<A extends Sign, B extends Sign> = FromFacts<And<Ge0<A>, Ge0<B>>, And<Le0<A>, Le0<B>>, Or<And<And<Ge0<A>, Ge0<B>>, Or<Ne0<A>, Ne0<B>>>, And<And<Le0<A>, Le0<B>>, Or<Ne0<A>, Ne0<B>>>>>;
|
|
42
|
+
type SubSign<A extends Sign, B extends Sign> = AddSign<A, NegateSign<B>>;
|
|
43
|
+
/** Sign of a product/quotient, parameterized by the `!= 0` fact of the result. */
|
|
44
|
+
type MulSignWithNe0<A extends Sign, B extends Sign, ne0 extends boolean> = FromFacts<Or<And<Ge0<A>, Ge0<B>>, And<Le0<A>, Le0<B>>>, Or<And<Ge0<A>, Le0<B>>, And<Le0<A>, Ge0<B>>>, ne0>;
|
|
45
|
+
type MulSign<A extends Sign, B extends Sign> = MulSignWithNe0<A, B, And<Ne0<A>, Ne0<B>>>;
|
|
46
|
+
/** Exact division: nonzero dividend over nonzero divisor stays nonzero. */
|
|
47
|
+
type DivSign<A extends Sign, B extends Sign> = MulSignWithNe0<A, B, Ne0<A>>;
|
|
48
|
+
/** Floor division: flooring can land on `0`, so the result is never `!= 0`. */
|
|
49
|
+
type DivIntSign<A extends Sign, B extends Sign> = MulSignWithNe0<A, B, false>;
|
|
50
|
+
/** Looser of two levels (number > finite > int > safeint). */
|
|
51
|
+
type LooserLevel<LA extends Level, LB extends Level> = 'number' extends LA | LB ? 'number' : 'finite' extends LA | LB ? 'finite' : 'int' extends LA | LB ? 'int' : 'safeint';
|
|
52
|
+
/** `+`/`-`/`*`: looser level, widening `safeint -> int` (overflow may occur). */
|
|
53
|
+
type AddMulLevel<LA extends Level, LB extends Level> = LooserLevel<LA, LB> extends 'safeint' ? 'int' : LooserLevel<LA, LB>;
|
|
54
|
+
/** Exact division yields a (possibly fractional) finite number. */
|
|
55
|
+
type DivLevel<LA extends Level, LB extends Level> = 'number' extends LA | LB ? 'number' : 'finite';
|
|
56
|
+
/** Floor division yields an integer; the safe range is preserved. */
|
|
57
|
+
type DivIntLevel<LA extends Level, LB extends Level> = 'number' extends LA | LB ? 'number' : [LA, LB] extends ['safeint', 'safeint'] ? 'safeint' : 'int';
|
|
58
|
+
type ReconstructNumber<S extends Sign> = S extends 'pos' ? PositiveNumber : S extends 'neg' ? NegativeNumber : S extends 'nonneg' ? NonNegativeNumber : S extends 'nonpos' ? NonPositiveNumber : S extends 'nonzero' ? NonZeroNumber : number;
|
|
59
|
+
type ReconstructFinite<S extends Sign> = S extends 'pos' ? PositiveFiniteNumber : S extends 'neg' ? NegativeFiniteNumber : S extends 'nonneg' ? NonNegativeFiniteNumber : S extends 'nonpos' ? NonPositiveFiniteNumber : S extends 'nonzero' ? NonZeroFiniteNumber : FiniteNumber;
|
|
60
|
+
type ReconstructInt<S extends Sign> = S extends 'pos' ? PositiveInt : S extends 'neg' ? NegativeInt : S extends 'nonneg' ? Uint : S extends 'nonpos' ? NonPositiveInt : S extends 'nonzero' ? NonZeroInt : Int;
|
|
61
|
+
type ReconstructSafeInt<S extends Sign> = S extends 'pos' ? PositiveSafeInt : S extends 'neg' ? NegativeSafeInt : S extends 'nonneg' ? SafeUint : S extends 'nonpos' ? NonPositiveSafeInt : S extends 'nonzero' ? NonZeroSafeInt : SafeInt;
|
|
62
|
+
type Reconstruct<S extends Sign, L extends Level> = L extends 'safeint' ? ReconstructSafeInt<S> : L extends 'int' ? ReconstructInt<S> : L extends 'finite' ? ReconstructFinite<S> : ReconstructNumber<S>;
|
|
63
|
+
/** Result type of {@link Num.add} applied to operands of type `A` and `B`. */
|
|
64
|
+
export type AddResult<A, B> = Reconstruct<AddSign<SignOf<A>, SignOf<B>>, AddMulLevel<LevelOf<A>, LevelOf<B>>>;
|
|
65
|
+
/** Result type of {@link Num.sub} applied to operands of type `A` and `B`. */
|
|
66
|
+
export type SubResult<A, B> = Reconstruct<SubSign<SignOf<A>, SignOf<B>>, AddMulLevel<LevelOf<A>, LevelOf<B>>>;
|
|
67
|
+
/** Result type of {@link Num.mul} applied to operands of type `A` and `B`. */
|
|
68
|
+
export type MulResult<A, B> = Reconstruct<MulSign<SignOf<A>, SignOf<B>>, AddMulLevel<LevelOf<A>, LevelOf<B>>>;
|
|
69
|
+
/** Result type of {@link Num.div} (exact) applied to operands of type `A` and `B`. */
|
|
70
|
+
export type DivResult<A, B> = Reconstruct<DivSign<SignOf<A>, SignOf<B>>, DivLevel<LevelOf<A>, LevelOf<B>>>;
|
|
71
|
+
/** Result type of {@link Num.divInt} (floor) applied to operands of type `A` and `B`. */
|
|
72
|
+
export type DivIntResult<A, B> = Reconstruct<DivIntSign<SignOf<A>, SignOf<B>>, DivIntLevel<LevelOf<A>, LevelOf<B>>>;
|
|
73
|
+
export {};
|
|
74
|
+
//# sourceMappingURL=num-arithmetic-types.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"num-arithmetic-types.d.mts","sourceRoot":"","sources":["../../src/number/num-arithmetic-types.mts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"num-arithmetic-types.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/dist/number/num.d.mts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type Decrement, type FiniteNumber, type Increment, type Index, type Int, type Min, type NaNType, type NegativeIndex, type NonNegativeNumber, type NonZeroNumber, type PositiveNumber, type PositiveSafeIntWithSmallInt, type RelaxedExclude, type SmallInt, type SmallUint } from 'ts-type-forge';
|
|
2
2
|
import { Result } from '../functional/index.mjs';
|
|
3
3
|
import { type SmallPositiveInt } from '../types.mjs';
|
|
4
|
+
import { type AddResult, type DivIntResult, type DivResult, type MulResult, type SubResult } from './num-arithmetic-types.mjs';
|
|
4
5
|
/**
|
|
5
6
|
* Namespace providing utility functions for number manipulation and validation.
|
|
6
7
|
*
|
|
@@ -395,17 +396,60 @@ export declare namespace Num {
|
|
|
395
396
|
export function clamp(target: number, lowerBound: number, upperBound: number): number;
|
|
396
397
|
export function clamp(lowerBound: number, upperBound: number): (target: number) => number;
|
|
397
398
|
/**
|
|
398
|
-
*
|
|
399
|
+
* Adds two numbers, returning the tightest sound branded result type.
|
|
400
|
+
*
|
|
401
|
+
* The sign of the result is computed exactly (e.g. a non-negative plus a
|
|
402
|
+
* non-negative is non-negative); the integer/finite level is preserved, with
|
|
403
|
+
* `SafeInt` operands widening to `Int` because the sum may exceed the safe
|
|
404
|
+
* range. No clamping is performed — for a result that stays inside a bounded
|
|
405
|
+
* type, use that type's branded `add` instead.
|
|
406
|
+
*
|
|
407
|
+
* @param a - The first addend.
|
|
408
|
+
* @param b - The second addend.
|
|
409
|
+
* @returns `a + b`, typed as the tightest branded type guaranteed to contain
|
|
410
|
+
* it.
|
|
411
|
+
*/
|
|
412
|
+
export const add: <A extends number, B extends number>(a: A, b: B) => AddResult<A, B>;
|
|
413
|
+
/**
|
|
414
|
+
* Subtracts `b` from `a`, returning the tightest sound branded result type.
|
|
399
415
|
*
|
|
400
|
-
*
|
|
401
|
-
*
|
|
402
|
-
*
|
|
416
|
+
* The sign is computed exactly; the level is preserved (with `SafeInt`
|
|
417
|
+
* widening to `Int`). No clamping — for saturating subtraction that stays in a
|
|
418
|
+
* bounded type (e.g. `Uint.sub` clamping at `0`), use that type's branded
|
|
419
|
+
* `sub`.
|
|
403
420
|
*
|
|
404
|
-
* @param a - The
|
|
405
|
-
* @param b - The
|
|
406
|
-
* @returns
|
|
421
|
+
* @param a - The minuend.
|
|
422
|
+
* @param b - The subtrahend.
|
|
423
|
+
* @returns `a - b`, typed as the tightest branded type guaranteed to contain
|
|
424
|
+
* it.
|
|
425
|
+
*/
|
|
426
|
+
export const sub: <A extends number, B extends number>(a: A, b: B) => SubResult<A, B>;
|
|
427
|
+
/**
|
|
428
|
+
* Multiplies two numbers, returning the tightest sound branded result type.
|
|
429
|
+
*
|
|
430
|
+
* The sign follows the usual product rule (e.g. negative times negative is
|
|
431
|
+
* positive); the level is preserved (with `SafeInt` widening to `Int`). No
|
|
432
|
+
* clamping.
|
|
433
|
+
*
|
|
434
|
+
* @param a - The first factor.
|
|
435
|
+
* @param b - The second factor.
|
|
436
|
+
* @returns `a * b`, typed as the tightest branded type guaranteed to contain
|
|
437
|
+
* it.
|
|
438
|
+
*/
|
|
439
|
+
export const mul: <A extends number, B extends number>(a: A, b: B) => MulResult<A, B>;
|
|
440
|
+
/**
|
|
441
|
+
* Performs type-safe exact division with a compile-time zero-check.
|
|
442
|
+
*
|
|
443
|
+
* The divisor must be typed as `NonZeroNumber` or a non-zero numeric literal.
|
|
444
|
+
* The result sign follows the quotient rule; because exact division can be
|
|
445
|
+
* fractional, the level is `finite` (or `number`).
|
|
446
|
+
*
|
|
447
|
+
* @param a - The dividend.
|
|
448
|
+
* @param b - The divisor (must be non-zero, enforced by types).
|
|
449
|
+
* @returns `a / b`, typed as the tightest branded type guaranteed to contain
|
|
450
|
+
* it.
|
|
407
451
|
*/
|
|
408
|
-
export const div:
|
|
452
|
+
export const div: <A extends number, B extends NonZeroNumber | SmallInt<"!=0">>(a: A, b: B) => DivResult<A, B>;
|
|
409
453
|
/**
|
|
410
454
|
* Performs integer division using floor division.
|
|
411
455
|
*
|
|
@@ -419,7 +463,7 @@ export declare namespace Num {
|
|
|
419
463
|
* @param b - The divisor
|
|
420
464
|
* @returns The integer quotient, or `NaN` if b is zero
|
|
421
465
|
*/
|
|
422
|
-
export const divInt:
|
|
466
|
+
export const divInt: <A extends number, B extends NonZeroNumber | SmallInt<"!=0">>(a: A, b: B) => DivIntResult<A, B>;
|
|
423
467
|
/**
|
|
424
468
|
* Rounds a number to a specified number of decimal places.
|
|
425
469
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"num.d.mts","sourceRoot":"","sources":["../../src/number/num.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,KAAK,EACV,KAAK,GAAG,EACR,KAAK,GAAG,EACR,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,2BAA2B,EAChC,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,SAAS,EAEf,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"num.d.mts","sourceRoot":"","sources":["../../src/number/num.mts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,KAAK,EACV,KAAK,GAAG,EACR,KAAK,GAAG,EACR,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,2BAA2B,EAChC,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,SAAS,EAEf,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EACL,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,EACf,MAAM,4BAA4B,CAAC;AAEpC;;;;;;;;;;;;;;GAcG;AACH,yBAAiB,GAAG,CAAC;IACnB;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,MAAe,CAAC;IAEnD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8DG;IACH,MAAM,CAAC,MAAM,YAAY,GAAI,GAAG,MAAM,KAAG,MAAM,CAAC,GAAG,EAAE,KAAK,CAYzD,CAAC;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8DG;IACH,MAAM,CAAC,MAAM,cAAc,GAAI,GAAG,MAAM,KAAG,MAAM,CAAC,YAAY,EAAE,KAAK,CAepE,CAAC;IAEF;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,MAAM,CAAC,MAAM,SAAS,GAAI,CAAC,SAAS,MAAM,EACxC,KAAK,CAAC,KACL,GAAG,IAAI,aAAa,GAAG,cAAc,CAAC,CAAC,EAAE,CAAC,CAAc,CAAC;IAI5D;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACH,MAAM,CAAC,MAAM,aAAa,GAAI,CAAC,SAAS,MAAM,EAC5C,KAAK,CAAC,KACL,GAAG,IAAI,iBAAiB,GAAG,cAAc,CAAC,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,CACzD,CAAC;IAEX;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,MAAM,CAAC,MAAM,UAAU,GAAI,CAAC,SAAS,MAAM,EACzC,KAAK,CAAC,KACL,GAAG,IAAI,cAAc,GAAG,cAAc,CAAC,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAC3D,CAAC;IAEV;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,CAAC,MAAM,SAAS,GACnB,YAAY,MAAM,EAAE,YAAY,MAAM,MACtC,GAAG,MAAM,KAAG,OACsB,CAAC;IAEtC;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,CAAC,MAAM,kBAAkB,GAC5B,YAAY,MAAM,EAAE,YAAY,MAAM,MACtC,GAAG,MAAM,KAAG,OACuB,CAAC;IAEvC;;;;;;;;;OASG;IACH,KAAK,EAAE,GAAG,QAAQ,CAAC;SAAG,CAAC,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC;KAAE,CAAC,CAAC;IAEnD;;;;;;;;;OASG;IACH,KAAK,GAAG,GAAG,QAAQ,CAAC;SAAG,CAAC,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;KAAE,CAAC,CAAC;IAExD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,MAAM,CAAC,MAAM,aAAa,GACvB,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,SAAS,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,MACtE,GAAG,MAAM,KAAG,CAAC,IAAI,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CACY,CAAC;IAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,MAAM,CAAC,MAAM,sBAAsB,GAChC,CAAC,SAAS,SAAS,EAAE,CAAC,SAAS,SAAS,EAAE,YAAY,CAAC,EAAE,YAAY,CAAC,MACtE,GAAG,MAAM,KAAG,CAAC,IAAI,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CACY,CAAC;IAElE;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,MAAM,UAAU,KAAK,CACnB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,MAAM,CAAC;IAGV,MAAM,UAAU,KAAK,CACnB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC;IAyB9B;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,MAAM,GAAG,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EACpD,GAAG,CAAC,EACJ,GAAG,CAAC,KACH,SAAS,CAAC,CAAC,EAAE,CAAC,CAEW,CAAC;IAE7B;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,MAAM,GAAG,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EACpD,GAAG,CAAC,EACJ,GAAG,CAAC,KACH,SAAS,CAAC,CAAC,EAAE,CAAC,CAEW,CAAC;IAE7B;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,MAAM,GAAG,GAAI,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EACpD,GAAG,CAAC,EACJ,GAAG,CAAC,KACH,SAAS,CAAC,CAAC,EAAE,CAAC,CAEW,CAAC;IAE7B;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,MAAM,GAAG,GACd,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,EAEzC,GAAG,CAAC,EACJ,GAAG,CAAC,KACH,SAAS,CAAC,CAAC,EAAE,CAAC,CAEW,CAAC;IAE7B;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,MAAM,MAAM,GACjB,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,EAEzC,GAAG,CAAC,EACJ,GAAG,CAAC,KACH,YAAY,CAAC,CAAC,EAAE,CAAC,CAMnB,CAAC;IAEF;;;;;;;;;OASG;IACH,MAAM,CAAC,MAAM,OAAO,GAClB,KAAK,MAAM,EACX,WAAW,2BAA2B,KACrC,MAKF,CAAC;IAEF;;;;;;;;;OASG;IAEH,MAAM,CAAC,MAAM,UAAU,GAAI,KAAK,MAAM,KAAG,GAAmC,CAAC;IAE7E;;;;;;;;;OASG;IACH,MAAM,CAAC,MAAM,KAAK,GAChB,OAAO,2BAA2B,KACjC,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAM1B,CAAC;IAEF;;;;;;;;;;OAUG;IACH,MAAM,CAAC,MAAM,gBAAgB,GAAI,CAAC,SAAS,MAAM,EAC/C,KAAK,CAAC,KACL,cAAc,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,SAIS,CAAC;IAE1C;;;;;;;;;;OAUG;IACH,MAAM,CAAC,MAAM,SAAS,GAAI,CAAC,SAAS,SAAS,EAAE,GAAG,CAAC,KAAG,SAAS,CAAC,CAAC,CAExC,CAAC;IAE1B;;;;;;;;;;OAUG;IACH,MAAM,CAAC,MAAM,SAAS,GAAI,CAAC,SAAS,gBAAgB,EAAE,GAAG,CAAC,KAAG,SAAS,CAAC,CAAC,CAE/C,CAAC;;CAC3B"}
|
package/dist/number/num.mjs
CHANGED
|
@@ -381,19 +381,68 @@ var Num;
|
|
|
381
381
|
}
|
|
382
382
|
Num.clamp = clamp;
|
|
383
383
|
/**
|
|
384
|
-
*
|
|
384
|
+
* Adds two numbers, returning the tightest sound branded result type.
|
|
385
|
+
*
|
|
386
|
+
* The sign of the result is computed exactly (e.g. a non-negative plus a
|
|
387
|
+
* non-negative is non-negative); the integer/finite level is preserved, with
|
|
388
|
+
* `SafeInt` operands widening to `Int` because the sum may exceed the safe
|
|
389
|
+
* range. No clamping is performed — for a result that stays inside a bounded
|
|
390
|
+
* type, use that type's branded `add` instead.
|
|
391
|
+
*
|
|
392
|
+
* @param a - The first addend.
|
|
393
|
+
* @param b - The second addend.
|
|
394
|
+
* @returns `a + b`, typed as the tightest branded type guaranteed to contain
|
|
395
|
+
* it.
|
|
396
|
+
*/
|
|
397
|
+
Num.add = (a, b) =>
|
|
398
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
399
|
+
(a + b);
|
|
400
|
+
/**
|
|
401
|
+
* Subtracts `b` from `a`, returning the tightest sound branded result type.
|
|
385
402
|
*
|
|
386
|
-
*
|
|
387
|
-
*
|
|
388
|
-
*
|
|
403
|
+
* The sign is computed exactly; the level is preserved (with `SafeInt`
|
|
404
|
+
* widening to `Int`). No clamping — for saturating subtraction that stays in a
|
|
405
|
+
* bounded type (e.g. `Uint.sub` clamping at `0`), use that type's branded
|
|
406
|
+
* `sub`.
|
|
389
407
|
*
|
|
390
|
-
* @param a - The
|
|
391
|
-
* @param b - The
|
|
392
|
-
* @returns
|
|
408
|
+
* @param a - The minuend.
|
|
409
|
+
* @param b - The subtrahend.
|
|
410
|
+
* @returns `a - b`, typed as the tightest branded type guaranteed to contain
|
|
411
|
+
* it.
|
|
412
|
+
*/
|
|
413
|
+
Num.sub = (a, b) =>
|
|
414
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
415
|
+
(a - b);
|
|
416
|
+
/**
|
|
417
|
+
* Multiplies two numbers, returning the tightest sound branded result type.
|
|
418
|
+
*
|
|
419
|
+
* The sign follows the usual product rule (e.g. negative times negative is
|
|
420
|
+
* positive); the level is preserved (with `SafeInt` widening to `Int`). No
|
|
421
|
+
* clamping.
|
|
422
|
+
*
|
|
423
|
+
* @param a - The first factor.
|
|
424
|
+
* @param b - The second factor.
|
|
425
|
+
* @returns `a * b`, typed as the tightest branded type guaranteed to contain
|
|
426
|
+
* it.
|
|
427
|
+
*/
|
|
428
|
+
Num.mul = (a, b) =>
|
|
429
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
430
|
+
(a * b);
|
|
431
|
+
/**
|
|
432
|
+
* Performs type-safe exact division with a compile-time zero-check.
|
|
433
|
+
*
|
|
434
|
+
* The divisor must be typed as `NonZeroNumber` or a non-zero numeric literal.
|
|
435
|
+
* The result sign follows the quotient rule; because exact division can be
|
|
436
|
+
* fractional, the level is `finite` (or `number`).
|
|
437
|
+
*
|
|
438
|
+
* @param a - The dividend.
|
|
439
|
+
* @param b - The divisor (must be non-zero, enforced by types).
|
|
440
|
+
* @returns `a / b`, typed as the tightest branded type guaranteed to contain
|
|
441
|
+
* it.
|
|
393
442
|
*/
|
|
394
443
|
Num.div = (a, b) =>
|
|
395
|
-
// eslint-disable-next-line total-functions/no-partial-division
|
|
396
|
-
a / b;
|
|
444
|
+
// eslint-disable-next-line total-functions/no-partial-division, total-functions/no-unsafe-type-assertion
|
|
445
|
+
(a / b);
|
|
397
446
|
/**
|
|
398
447
|
* Performs integer division using floor division.
|
|
399
448
|
*
|
|
@@ -407,9 +456,12 @@ var Num;
|
|
|
407
456
|
* @param b - The divisor
|
|
408
457
|
* @returns The integer quotient, or `NaN` if b is zero
|
|
409
458
|
*/
|
|
410
|
-
Num.divInt = (a, b) =>
|
|
411
|
-
|
|
412
|
-
|
|
459
|
+
Num.divInt = (a, b) => {
|
|
460
|
+
// eslint-disable-next-line total-functions/no-partial-division
|
|
461
|
+
const quotient = Math.floor(Math.floor(a) / Math.floor(b));
|
|
462
|
+
// eslint-disable-next-line total-functions/no-unsafe-type-assertion
|
|
463
|
+
return quotient;
|
|
464
|
+
};
|
|
413
465
|
/**
|
|
414
466
|
* Rounds a number to a specified number of decimal places.
|
|
415
467
|
*
|
package/dist/number/num.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"num.mjs","sources":["../../src/number/num.mts"],"sourcesContent":[null],"names":["Result.err","Result.ok"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"num.mjs","sources":["../../src/number/num.mts"],"sourcesContent":[null],"names":["Result.err","Result.ok"],"mappings":"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"}
|