uom-types 3.1.1 → 4.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/CHANGELOG.md +119 -0
- package/README.md +26 -27
- package/dist/{units-converters.cjs → index.cjs} +366 -81
- package/dist/index.d.cts +4522 -9
- package/dist/index.d.mts +4522 -9
- package/dist/{units-converters.mjs → index.mjs} +263 -14
- package/package.json +108 -110
- package/dist/_angle-plane.d.cts +0 -89
- package/dist/_angle-plane.d.mts +0 -89
- package/dist/_identity.d.cts +0 -29
- package/dist/_identity.d.mts +0 -29
- package/dist/_time-duration.d.cts +0 -481
- package/dist/_time-duration.d.mts +0 -481
- package/dist/_units.d.cts +0 -286
- package/dist/_units.d.mts +0 -286
- package/dist/functions-higher-order.cjs +0 -125
- package/dist/functions-higher-order.d.cts +0 -91
- package/dist/functions-higher-order.d.mts +0 -91
- package/dist/functions-higher-order.mjs +0 -111
- package/dist/functions.cjs +0 -333
- package/dist/functions.d.cts +0 -243
- package/dist/functions.d.mts +0 -243
- package/dist/functions.mjs +0 -296
- package/dist/units-converters.d.cts +0 -370
- package/dist/units-converters.d.mts +0 -370
- package/dist/units.d.cts +0 -3056
- package/dist/units.d.mts +0 -3056
package/dist/_units.d.cts
DELETED
|
@@ -1,286 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file Autogenerated File - Don't manually edit.
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* All the supported positive exponent values.
|
|
6
|
-
*
|
|
7
|
-
* @group Unit Components
|
|
8
|
-
*/
|
|
9
|
-
type PosExponent = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
|
|
10
|
-
/**
|
|
11
|
-
* All the supported negative exponent values.
|
|
12
|
-
*
|
|
13
|
-
* @group Unit Components
|
|
14
|
-
*/
|
|
15
|
-
type NegExponent = -1 | -2 | -3 | -4 | -5 | -6 | -7 | -8 | -9 | -10 | -11 | -12;
|
|
16
|
-
/**
|
|
17
|
-
* All the supported exponent values.
|
|
18
|
-
*
|
|
19
|
-
* @group Unit Components
|
|
20
|
-
*/
|
|
21
|
-
type Exponent = 0 | PosExponent | NegExponent;
|
|
22
|
-
/**
|
|
23
|
-
* @group Exponent Functions
|
|
24
|
-
*/
|
|
25
|
-
type NegateExponent<T extends Exponent> = MultiplyExponents<T, -1>;
|
|
26
|
-
/**
|
|
27
|
-
* @depreated Use {@link NegateExponent} instead.
|
|
28
|
-
*/
|
|
29
|
-
type NegativeExponent<T extends Exponent> = NegateExponent<T>;
|
|
30
|
-
/**
|
|
31
|
-
* @group Exponent Functions
|
|
32
|
-
*/
|
|
33
|
-
type SumExponents<A extends Exponent, B extends Exponent> = A extends 0 ? B extends 0 ? 0 : B extends 1 ? 1 : B extends -1 ? -1 : B extends 2 ? 2 : B extends -2 ? -2 : B extends 3 ? 3 : B extends -3 ? -3 : B extends 4 ? 4 : B extends -4 ? -4 : B extends 5 ? 5 : B extends -5 ? -5 : B extends 6 ? 6 : B extends -6 ? -6 : B extends 7 ? 7 : B extends -7 ? -7 : B extends 8 ? 8 : B extends -8 ? -8 : B extends 9 ? 9 : B extends -9 ? -9 : B extends 10 ? 10 : B extends -10 ? -10 : B extends 11 ? 11 : B extends -11 ? -11 : B extends 12 ? 12 : B extends -12 ? -12 : never : A extends 1 ? B extends 0 ? 1 : B extends 1 ? 2 : B extends -1 ? 0 : B extends 2 ? 3 : B extends -2 ? -1 : B extends 3 ? 4 : B extends -3 ? -2 : B extends 4 ? 5 : B extends -4 ? -3 : B extends 5 ? 6 : B extends -5 ? -4 : B extends 6 ? 7 : B extends -6 ? -5 : B extends 7 ? 8 : B extends -7 ? -6 : B extends 8 ? 9 : B extends -8 ? -7 : B extends 9 ? 10 : B extends -9 ? -8 : B extends 10 ? 11 : B extends -10 ? -9 : B extends 11 ? 12 : B extends -11 ? -10 : B extends -12 ? -11 : never : A extends -1 ? B extends 0 ? -1 : B extends 1 ? 0 : B extends -1 ? -2 : B extends 2 ? 1 : B extends -2 ? -3 : B extends 3 ? 2 : B extends -3 ? -4 : B extends 4 ? 3 : B extends -4 ? -5 : B extends 5 ? 4 : B extends -5 ? -6 : B extends 6 ? 5 : B extends -6 ? -7 : B extends 7 ? 6 : B extends -7 ? -8 : B extends 8 ? 7 : B extends -8 ? -9 : B extends 9 ? 8 : B extends -9 ? -10 : B extends 10 ? 9 : B extends -10 ? -11 : B extends 11 ? 10 : B extends -11 ? -12 : B extends 12 ? 11 : never : A extends 2 ? B extends 0 ? 2 : B extends 1 ? 3 : B extends -1 ? 1 : B extends 2 ? 4 : B extends -2 ? 0 : B extends 3 ? 5 : B extends -3 ? -1 : B extends 4 ? 6 : B extends -4 ? -2 : B extends 5 ? 7 : B extends -5 ? -3 : B extends 6 ? 8 : B extends -6 ? -4 : B extends 7 ? 9 : B extends -7 ? -5 : B extends 8 ? 10 : B extends -8 ? -6 : B extends 9 ? 11 : B extends -9 ? -7 : B extends 10 ? 12 : B extends -10 ? -8 : B extends -11 ? -9 : B extends -12 ? -10 : never : A extends -2 ? B extends 0 ? -2 : B extends 1 ? -1 : B extends -1 ? -3 : B extends 2 ? 0 : B extends -2 ? -4 : B extends 3 ? 1 : B extends -3 ? -5 : B extends 4 ? 2 : B extends -4 ? -6 : B extends 5 ? 3 : B extends -5 ? -7 : B extends 6 ? 4 : B extends -6 ? -8 : B extends 7 ? 5 : B extends -7 ? -9 : B extends 8 ? 6 : B extends -8 ? -10 : B extends 9 ? 7 : B extends -9 ? -11 : B extends 10 ? 8 : B extends -10 ? -12 : B extends 11 ? 9 : B extends 12 ? 10 : never : A extends 3 ? B extends 0 ? 3 : B extends 1 ? 4 : B extends -1 ? 2 : B extends 2 ? 5 : B extends -2 ? 1 : B extends 3 ? 6 : B extends -3 ? 0 : B extends 4 ? 7 : B extends -4 ? -1 : B extends 5 ? 8 : B extends -5 ? -2 : B extends 6 ? 9 : B extends -6 ? -3 : B extends 7 ? 10 : B extends -7 ? -4 : B extends 8 ? 11 : B extends -8 ? -5 : B extends 9 ? 12 : B extends -9 ? -6 : B extends -10 ? -7 : B extends -11 ? -8 : B extends -12 ? -9 : never : A extends -3 ? B extends 0 ? -3 : B extends 1 ? -2 : B extends -1 ? -4 : B extends 2 ? -1 : B extends -2 ? -5 : B extends 3 ? 0 : B extends -3 ? -6 : B extends 4 ? 1 : B extends -4 ? -7 : B extends 5 ? 2 : B extends -5 ? -8 : B extends 6 ? 3 : B extends -6 ? -9 : B extends 7 ? 4 : B extends -7 ? -10 : B extends 8 ? 5 : B extends -8 ? -11 : B extends 9 ? 6 : B extends -9 ? -12 : B extends 10 ? 7 : B extends 11 ? 8 : B extends 12 ? 9 : never : A extends 4 ? B extends 0 ? 4 : B extends 1 ? 5 : B extends -1 ? 3 : B extends 2 ? 6 : B extends -2 ? 2 : B extends 3 ? 7 : B extends -3 ? 1 : B extends 4 ? 8 : B extends -4 ? 0 : B extends 5 ? 9 : B extends -5 ? -1 : B extends 6 ? 10 : B extends -6 ? -2 : B extends 7 ? 11 : B extends -7 ? -3 : B extends 8 ? 12 : B extends -8 ? -4 : B extends -9 ? -5 : B extends -10 ? -6 : B extends -11 ? -7 : B extends -12 ? -8 : never : A extends -4 ? B extends 0 ? -4 : B extends 1 ? -3 : B extends -1 ? -5 : B extends 2 ? -2 : B extends -2 ? -6 : B extends 3 ? -1 : B extends -3 ? -7 : B extends 4 ? 0 : B extends -4 ? -8 : B extends 5 ? 1 : B extends -5 ? -9 : B extends 6 ? 2 : B extends -6 ? -10 : B extends 7 ? 3 : B extends -7 ? -11 : B extends 8 ? 4 : B extends -8 ? -12 : B extends 9 ? 5 : B extends 10 ? 6 : B extends 11 ? 7 : B extends 12 ? 8 : never : A extends 5 ? B extends 0 ? 5 : B extends 1 ? 6 : B extends -1 ? 4 : B extends 2 ? 7 : B extends -2 ? 3 : B extends 3 ? 8 : B extends -3 ? 2 : B extends 4 ? 9 : B extends -4 ? 1 : B extends 5 ? 10 : B extends -5 ? 0 : B extends 6 ? 11 : B extends -6 ? -1 : B extends 7 ? 12 : B extends -7 ? -2 : B extends -8 ? -3 : B extends -9 ? -4 : B extends -10 ? -5 : B extends -11 ? -6 : B extends -12 ? -7 : never : A extends -5 ? B extends 0 ? -5 : B extends 1 ? -4 : B extends -1 ? -6 : B extends 2 ? -3 : B extends -2 ? -7 : B extends 3 ? -2 : B extends -3 ? -8 : B extends 4 ? -1 : B extends -4 ? -9 : B extends 5 ? 0 : B extends -5 ? -10 : B extends 6 ? 1 : B extends -6 ? -11 : B extends 7 ? 2 : B extends -7 ? -12 : B extends 8 ? 3 : B extends 9 ? 4 : B extends 10 ? 5 : B extends 11 ? 6 : B extends 12 ? 7 : never : A extends 6 ? B extends 0 ? 6 : B extends 1 ? 7 : B extends -1 ? 5 : B extends 2 ? 8 : B extends -2 ? 4 : B extends 3 ? 9 : B extends -3 ? 3 : B extends 4 ? 10 : B extends -4 ? 2 : B extends 5 ? 11 : B extends -5 ? 1 : B extends 6 ? 12 : B extends -6 ? 0 : B extends -7 ? -1 : B extends -8 ? -2 : B extends -9 ? -3 : B extends -10 ? -4 : B extends -11 ? -5 : B extends -12 ? -6 : never : A extends -6 ? B extends 0 ? -6 : B extends 1 ? -5 : B extends -1 ? -7 : B extends 2 ? -4 : B extends -2 ? -8 : B extends 3 ? -3 : B extends -3 ? -9 : B extends 4 ? -2 : B extends -4 ? -10 : B extends 5 ? -1 : B extends -5 ? -11 : B extends 6 ? 0 : B extends -6 ? -12 : B extends 7 ? 1 : B extends 8 ? 2 : B extends 9 ? 3 : B extends 10 ? 4 : B extends 11 ? 5 : B extends 12 ? 6 : never : A extends 7 ? B extends 0 ? 7 : B extends 1 ? 8 : B extends -1 ? 6 : B extends 2 ? 9 : B extends -2 ? 5 : B extends 3 ? 10 : B extends -3 ? 4 : B extends 4 ? 11 : B extends -4 ? 3 : B extends 5 ? 12 : B extends -5 ? 2 : B extends -6 ? 1 : B extends -7 ? 0 : B extends -8 ? -1 : B extends -9 ? -2 : B extends -10 ? -3 : B extends -11 ? -4 : B extends -12 ? -5 : never : A extends -7 ? B extends 0 ? -7 : B extends 1 ? -6 : B extends -1 ? -8 : B extends 2 ? -5 : B extends -2 ? -9 : B extends 3 ? -4 : B extends -3 ? -10 : B extends 4 ? -3 : B extends -4 ? -11 : B extends 5 ? -2 : B extends -5 ? -12 : B extends 6 ? -1 : B extends 7 ? 0 : B extends 8 ? 1 : B extends 9 ? 2 : B extends 10 ? 3 : B extends 11 ? 4 : B extends 12 ? 5 : never : A extends 8 ? B extends 0 ? 8 : B extends 1 ? 9 : B extends -1 ? 7 : B extends 2 ? 10 : B extends -2 ? 6 : B extends 3 ? 11 : B extends -3 ? 5 : B extends 4 ? 12 : B extends -4 ? 4 : B extends -5 ? 3 : B extends -6 ? 2 : B extends -7 ? 1 : B extends -8 ? 0 : B extends -9 ? -1 : B extends -10 ? -2 : B extends -11 ? -3 : B extends -12 ? -4 : never : A extends -8 ? B extends 0 ? -8 : B extends 1 ? -7 : B extends -1 ? -9 : B extends 2 ? -6 : B extends -2 ? -10 : B extends 3 ? -5 : B extends -3 ? -11 : B extends 4 ? -4 : B extends -4 ? -12 : B extends 5 ? -3 : B extends 6 ? -2 : B extends 7 ? -1 : B extends 8 ? 0 : B extends 9 ? 1 : B extends 10 ? 2 : B extends 11 ? 3 : B extends 12 ? 4 : never : A extends 9 ? B extends 0 ? 9 : B extends 1 ? 10 : B extends -1 ? 8 : B extends 2 ? 11 : B extends -2 ? 7 : B extends 3 ? 12 : B extends -3 ? 6 : B extends -4 ? 5 : B extends -5 ? 4 : B extends -6 ? 3 : B extends -7 ? 2 : B extends -8 ? 1 : B extends -9 ? 0 : B extends -10 ? -1 : B extends -11 ? -2 : B extends -12 ? -3 : never : A extends -9 ? B extends 0 ? -9 : B extends 1 ? -8 : B extends -1 ? -10 : B extends 2 ? -7 : B extends -2 ? -11 : B extends 3 ? -6 : B extends -3 ? -12 : B extends 4 ? -5 : B extends 5 ? -4 : B extends 6 ? -3 : B extends 7 ? -2 : B extends 8 ? -1 : B extends 9 ? 0 : B extends 10 ? 1 : B extends 11 ? 2 : B extends 12 ? 3 : never : A extends 10 ? B extends 0 ? 10 : B extends 1 ? 11 : B extends -1 ? 9 : B extends 2 ? 12 : B extends -2 ? 8 : B extends -3 ? 7 : B extends -4 ? 6 : B extends -5 ? 5 : B extends -6 ? 4 : B extends -7 ? 3 : B extends -8 ? 2 : B extends -9 ? 1 : B extends -10 ? 0 : B extends -11 ? -1 : B extends -12 ? -2 : never : A extends -10 ? B extends 0 ? -10 : B extends 1 ? -9 : B extends -1 ? -11 : B extends 2 ? -8 : B extends -2 ? -12 : B extends 3 ? -7 : B extends 4 ? -6 : B extends 5 ? -5 : B extends 6 ? -4 : B extends 7 ? -3 : B extends 8 ? -2 : B extends 9 ? -1 : B extends 10 ? 0 : B extends 11 ? 1 : B extends 12 ? 2 : never : A extends 11 ? B extends 0 ? 11 : B extends 1 ? 12 : B extends -1 ? 10 : B extends -2 ? 9 : B extends -3 ? 8 : B extends -4 ? 7 : B extends -5 ? 6 : B extends -6 ? 5 : B extends -7 ? 4 : B extends -8 ? 3 : B extends -9 ? 2 : B extends -10 ? 1 : B extends -11 ? 0 : B extends -12 ? -1 : never : A extends -11 ? B extends 0 ? -11 : B extends 1 ? -10 : B extends -1 ? -12 : B extends 2 ? -9 : B extends 3 ? -8 : B extends 4 ? -7 : B extends 5 ? -6 : B extends 6 ? -5 : B extends 7 ? -4 : B extends 8 ? -3 : B extends 9 ? -2 : B extends 10 ? -1 : B extends 11 ? 0 : B extends 12 ? 1 : never : A extends 12 ? B extends 0 ? 12 : B extends -1 ? 11 : B extends -2 ? 10 : B extends -3 ? 9 : B extends -4 ? 8 : B extends -5 ? 7 : B extends -6 ? 6 : B extends -7 ? 5 : B extends -8 ? 4 : B extends -9 ? 3 : B extends -10 ? 2 : B extends -11 ? 1 : B extends -12 ? 0 : never : A extends -12 ? B extends 0 ? -12 : B extends 1 ? -11 : B extends 2 ? -10 : B extends 3 ? -9 : B extends 4 ? -8 : B extends 5 ? -7 : B extends 6 ? -6 : B extends 7 ? -5 : B extends 8 ? -4 : B extends 9 ? -3 : B extends 10 ? -2 : B extends 11 ? -1 : B extends 12 ? 0 : never : never;
|
|
34
|
-
/**
|
|
35
|
-
* @group Exponent Functions
|
|
36
|
-
*/
|
|
37
|
-
type SubExponents<A extends Exponent, B extends Exponent> = SumExponents<A, NegativeExponent<B>>;
|
|
38
|
-
/**
|
|
39
|
-
* @group Exponent Functions
|
|
40
|
-
*/
|
|
41
|
-
type MultiplyExponents<A extends Exponent, B extends Exponent> = A extends 0 ? B extends 0 ? 0 : B extends 1 ? 0 : B extends -1 ? 0 : B extends 2 ? 0 : B extends -2 ? 0 : B extends 3 ? 0 : B extends -3 ? 0 : B extends 4 ? 0 : B extends -4 ? 0 : B extends 5 ? 0 : B extends -5 ? 0 : B extends 6 ? 0 : B extends -6 ? 0 : B extends 7 ? 0 : B extends -7 ? 0 : B extends 8 ? 0 : B extends -8 ? 0 : B extends 9 ? 0 : B extends -9 ? 0 : B extends 10 ? 0 : B extends -10 ? 0 : B extends 11 ? 0 : B extends -11 ? 0 : B extends 12 ? 0 : B extends -12 ? 0 : never : A extends 1 ? B extends 0 ? 0 : B extends 1 ? 1 : B extends -1 ? -1 : B extends 2 ? 2 : B extends -2 ? -2 : B extends 3 ? 3 : B extends -3 ? -3 : B extends 4 ? 4 : B extends -4 ? -4 : B extends 5 ? 5 : B extends -5 ? -5 : B extends 6 ? 6 : B extends -6 ? -6 : B extends 7 ? 7 : B extends -7 ? -7 : B extends 8 ? 8 : B extends -8 ? -8 : B extends 9 ? 9 : B extends -9 ? -9 : B extends 10 ? 10 : B extends -10 ? -10 : B extends 11 ? 11 : B extends -11 ? -11 : B extends 12 ? 12 : B extends -12 ? -12 : never : A extends -1 ? B extends 0 ? 0 : B extends 1 ? -1 : B extends -1 ? 1 : B extends 2 ? -2 : B extends -2 ? 2 : B extends 3 ? -3 : B extends -3 ? 3 : B extends 4 ? -4 : B extends -4 ? 4 : B extends 5 ? -5 : B extends -5 ? 5 : B extends 6 ? -6 : B extends -6 ? 6 : B extends 7 ? -7 : B extends -7 ? 7 : B extends 8 ? -8 : B extends -8 ? 8 : B extends 9 ? -9 : B extends -9 ? 9 : B extends 10 ? -10 : B extends -10 ? 10 : B extends 11 ? -11 : B extends -11 ? 11 : B extends 12 ? -12 : B extends -12 ? 12 : never : A extends 2 ? B extends 0 ? 0 : B extends 1 ? 2 : B extends -1 ? -2 : B extends 2 ? 4 : B extends -2 ? -4 : B extends 3 ? 6 : B extends -3 ? -6 : B extends 4 ? 8 : B extends -4 ? -8 : B extends 5 ? 10 : B extends -5 ? -10 : B extends 6 ? 12 : B extends -6 ? -12 : never : A extends -2 ? B extends 0 ? 0 : B extends 1 ? -2 : B extends -1 ? 2 : B extends 2 ? -4 : B extends -2 ? 4 : B extends 3 ? -6 : B extends -3 ? 6 : B extends 4 ? -8 : B extends -4 ? 8 : B extends 5 ? -10 : B extends -5 ? 10 : B extends 6 ? -12 : B extends -6 ? 12 : never : A extends 3 ? B extends 0 ? 0 : B extends 1 ? 3 : B extends -1 ? -3 : B extends 2 ? 6 : B extends -2 ? -6 : B extends 3 ? 9 : B extends -3 ? -9 : B extends 4 ? 12 : B extends -4 ? -12 : never : A extends -3 ? B extends 0 ? 0 : B extends 1 ? -3 : B extends -1 ? 3 : B extends 2 ? -6 : B extends -2 ? 6 : B extends 3 ? -9 : B extends -3 ? 9 : B extends 4 ? -12 : B extends -4 ? 12 : never : A extends 4 ? B extends 0 ? 0 : B extends 1 ? 4 : B extends -1 ? -4 : B extends 2 ? 8 : B extends -2 ? -8 : B extends 3 ? 12 : B extends -3 ? -12 : never : A extends -4 ? B extends 0 ? 0 : B extends 1 ? -4 : B extends -1 ? 4 : B extends 2 ? -8 : B extends -2 ? 8 : B extends 3 ? -12 : B extends -3 ? 12 : never : A extends 5 ? B extends 0 ? 0 : B extends 1 ? 5 : B extends -1 ? -5 : B extends 2 ? 10 : B extends -2 ? -10 : never : A extends -5 ? B extends 0 ? 0 : B extends 1 ? -5 : B extends -1 ? 5 : B extends 2 ? -10 : B extends -2 ? 10 : never : A extends 6 ? B extends 0 ? 0 : B extends 1 ? 6 : B extends -1 ? -6 : B extends 2 ? 12 : B extends -2 ? -12 : never : A extends -6 ? B extends 0 ? 0 : B extends 1 ? -6 : B extends -1 ? 6 : B extends 2 ? -12 : B extends -2 ? 12 : never : A extends 7 ? B extends 0 ? 0 : B extends 1 ? 7 : B extends -1 ? -7 : never : A extends -7 ? B extends 0 ? 0 : B extends 1 ? -7 : B extends -1 ? 7 : never : A extends 8 ? B extends 0 ? 0 : B extends 1 ? 8 : B extends -1 ? -8 : never : A extends -8 ? B extends 0 ? 0 : B extends 1 ? -8 : B extends -1 ? 8 : never : A extends 9 ? B extends 0 ? 0 : B extends 1 ? 9 : B extends -1 ? -9 : never : A extends -9 ? B extends 0 ? 0 : B extends 1 ? -9 : B extends -1 ? 9 : never : A extends 10 ? B extends 0 ? 0 : B extends 1 ? 10 : B extends -1 ? -10 : never : A extends -10 ? B extends 0 ? 0 : B extends 1 ? -10 : B extends -1 ? 10 : never : A extends 11 ? B extends 0 ? 0 : B extends 1 ? 11 : B extends -1 ? -11 : never : A extends -11 ? B extends 0 ? 0 : B extends 1 ? -11 : B extends -1 ? 11 : never : A extends 12 ? B extends 0 ? 0 : B extends 1 ? 12 : B extends -1 ? -12 : never : A extends -12 ? B extends 0 ? 0 : B extends 1 ? -12 : B extends -1 ? 12 : never : never;
|
|
42
|
-
/**
|
|
43
|
-
* @group Exponent Functions
|
|
44
|
-
*/
|
|
45
|
-
type DivideExponents<A extends Exponent, B extends Exponent> = B extends 0 ? never : B extends 1 ? A extends 0 ? 0 : A extends 1 ? 1 : A extends -1 ? -1 : A extends 2 ? 2 : A extends -2 ? -2 : A extends 3 ? 3 : A extends -3 ? -3 : A extends 4 ? 4 : A extends -4 ? -4 : A extends 5 ? 5 : A extends -5 ? -5 : A extends 6 ? 6 : A extends -6 ? -6 : A extends 7 ? 7 : A extends -7 ? -7 : A extends 8 ? 8 : A extends -8 ? -8 : A extends 9 ? 9 : A extends -9 ? -9 : A extends 10 ? 10 : A extends -10 ? -10 : A extends 11 ? 11 : A extends -11 ? -11 : A extends 12 ? 12 : A extends -12 ? -12 : never : B extends -1 ? A extends 0 ? 0 : A extends 1 ? -1 : A extends -1 ? 1 : A extends 2 ? -2 : A extends -2 ? 2 : A extends 3 ? -3 : A extends -3 ? 3 : A extends 4 ? -4 : A extends -4 ? 4 : A extends 5 ? -5 : A extends -5 ? 5 : A extends 6 ? -6 : A extends -6 ? 6 : A extends 7 ? -7 : A extends -7 ? 7 : A extends 8 ? -8 : A extends -8 ? 8 : A extends 9 ? -9 : A extends -9 ? 9 : A extends 10 ? -10 : A extends -10 ? 10 : A extends 11 ? -11 : A extends -11 ? 11 : A extends 12 ? -12 : A extends -12 ? 12 : never : B extends 2 ? A extends 0 ? 0 : A extends 2 ? 1 : A extends -2 ? -1 : A extends 4 ? 2 : A extends -4 ? -2 : A extends 6 ? 3 : A extends -6 ? -3 : A extends 8 ? 4 : A extends -8 ? -4 : A extends 10 ? 5 : A extends -10 ? -5 : A extends 12 ? 6 : A extends -12 ? -6 : never : B extends -2 ? A extends 0 ? 0 : A extends 2 ? -1 : A extends -2 ? 1 : A extends 4 ? -2 : A extends -4 ? 2 : A extends 6 ? -3 : A extends -6 ? 3 : A extends 8 ? -4 : A extends -8 ? 4 : A extends 10 ? -5 : A extends -10 ? 5 : A extends 12 ? -6 : A extends -12 ? 6 : never : B extends 3 ? A extends 0 ? 0 : A extends 3 ? 1 : A extends -3 ? -1 : A extends 6 ? 2 : A extends -6 ? -2 : A extends 9 ? 3 : A extends -9 ? -3 : A extends 12 ? 4 : A extends -12 ? -4 : never : B extends -3 ? A extends 0 ? 0 : A extends 3 ? -1 : A extends -3 ? 1 : A extends 6 ? -2 : A extends -6 ? 2 : A extends 9 ? -3 : A extends -9 ? 3 : A extends 12 ? -4 : A extends -12 ? 4 : never : B extends 4 ? A extends 0 ? 0 : A extends 4 ? 1 : A extends -4 ? -1 : A extends 8 ? 2 : A extends -8 ? -2 : A extends 12 ? 3 : A extends -12 ? -3 : never : B extends -4 ? A extends 0 ? 0 : A extends 4 ? -1 : A extends -4 ? 1 : A extends 8 ? -2 : A extends -8 ? 2 : A extends 12 ? -3 : A extends -12 ? 3 : never : B extends 5 ? A extends 0 ? 0 : A extends 5 ? 1 : A extends -5 ? -1 : A extends 10 ? 2 : A extends -10 ? -2 : never : B extends -5 ? A extends 0 ? 0 : A extends 5 ? -1 : A extends -5 ? 1 : A extends 10 ? -2 : A extends -10 ? 2 : never : B extends 6 ? A extends 0 ? 0 : A extends 6 ? 1 : A extends -6 ? -1 : A extends 12 ? 2 : A extends -12 ? -2 : never : B extends -6 ? A extends 0 ? 0 : A extends 6 ? -1 : A extends -6 ? 1 : A extends 12 ? -2 : A extends -12 ? 2 : never : B extends 7 ? A extends 0 ? 0 : A extends 7 ? 1 : A extends -7 ? -1 : never : B extends -7 ? A extends 0 ? 0 : A extends 7 ? -1 : A extends -7 ? 1 : never : B extends 8 ? A extends 0 ? 0 : A extends 8 ? 1 : A extends -8 ? -1 : never : B extends -8 ? A extends 0 ? 0 : A extends 8 ? -1 : A extends -8 ? 1 : never : B extends 9 ? A extends 0 ? 0 : A extends 9 ? 1 : A extends -9 ? -1 : never : B extends -9 ? A extends 0 ? 0 : A extends 9 ? -1 : A extends -9 ? 1 : never : B extends 10 ? A extends 0 ? 0 : A extends 10 ? 1 : A extends -10 ? -1 : never : B extends -10 ? A extends 0 ? 0 : A extends 10 ? -1 : A extends -10 ? 1 : never : B extends 11 ? A extends 0 ? 0 : A extends 11 ? 1 : A extends -11 ? -1 : never : B extends -11 ? A extends 0 ? 0 : A extends 11 ? -1 : A extends -11 ? 1 : never : B extends 12 ? A extends 0 ? 0 : A extends 12 ? 1 : A extends -12 ? -1 : never : B extends -12 ? A extends 0 ? 0 : A extends 12 ? -1 : A extends -12 ? 1 : never : never;
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Remove all key from the object that are `never`.
|
|
49
|
-
*/
|
|
50
|
-
type RemoveNeverValues<T extends object> = {
|
|
51
|
-
[K in keyof T as [T[K]] extends [never] ? never : K]: T[K];
|
|
52
|
-
};
|
|
53
|
-
/**
|
|
54
|
-
* Exclude all unit subvalues with an exponent value of zero.
|
|
55
|
-
*/
|
|
56
|
-
type ExcludeUnitZeroSubvalues<U extends UnitSubvalues> = {
|
|
57
|
-
[S in keyof U as S extends string ? U[S] extends 0 ? never : S : never]: U[S];
|
|
58
|
-
};
|
|
59
|
-
/**
|
|
60
|
-
* Get the exponent value of the given key.
|
|
61
|
-
*/
|
|
62
|
-
type GetExponent<C extends UnitSubvalues, S> = S extends keyof C ? C[S] : 0;
|
|
63
|
-
/**
|
|
64
|
-
* Flatten a complex type such as a union or intersection of objects into a
|
|
65
|
-
* single object.
|
|
66
|
-
*
|
|
67
|
-
* @internal
|
|
68
|
-
*/
|
|
69
|
-
type FlatternAlias<T> = {
|
|
70
|
-
[P in keyof T]: T[P];
|
|
71
|
-
} & {};
|
|
72
|
-
/**
|
|
73
|
-
* Make `T` exactly `T`.
|
|
74
|
-
*
|
|
75
|
-
* @internal
|
|
76
|
-
*/
|
|
77
|
-
type Exactify<T, U extends T> = T & {
|
|
78
|
-
[K in keyof U]: K extends keyof T ? U[K] : never;
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* A unit without any meta data.
|
|
83
|
-
*
|
|
84
|
-
* @group Abstract Unit Generators
|
|
85
|
-
*/
|
|
86
|
-
type AbstractUnit<C extends UnitSubvalues> = number & {
|
|
87
|
-
readonly __uom_types__unit_class: UnitClass<C>;
|
|
88
|
-
};
|
|
89
|
-
/**
|
|
90
|
-
* Create a unit without meta data from an already existing {@link UnitClass}.
|
|
91
|
-
*
|
|
92
|
-
* @group Abstract Unit Generators
|
|
93
|
-
*/
|
|
94
|
-
type AbstractUnitFrom<C extends UnknownUnitClass> = C extends UnitClass<infer A> ? AbstractUnit<UnitSubvalues extends A ? {} : A> : never;
|
|
95
|
-
/**
|
|
96
|
-
* The core unit type.
|
|
97
|
-
*
|
|
98
|
-
* @group Unit Generators
|
|
99
|
-
*/
|
|
100
|
-
type Unit<C extends UnitSubvalues, M extends UnitSubvalues = {}> = number & {
|
|
101
|
-
readonly __uom_types__unit_class: UnitClass<C>;
|
|
102
|
-
readonly __uom_types__unit_meta: UnitMeta<M>;
|
|
103
|
-
};
|
|
104
|
-
/**
|
|
105
|
-
* Create a {@link Unit} from already existing {@link UnitClass} and {@link UnitMeta}.
|
|
106
|
-
*
|
|
107
|
-
* @group Unit Generators
|
|
108
|
-
*/
|
|
109
|
-
type UnitFrom<C extends UnknownUnitClass, M extends UnknownUnitMeta = UnitMeta<{}>> = C extends UnitClass<infer A> ? M extends UnitMeta<infer B> ? Unit<A, B> : never : never;
|
|
110
|
-
/**
|
|
111
|
-
* A {@link Unit} without any {@link UnitClass}.
|
|
112
|
-
*
|
|
113
|
-
* Used to convert from one {@link Unit} to another of the same {@link UnitClass}.
|
|
114
|
-
*
|
|
115
|
-
* @group Unit Generators
|
|
116
|
-
*/
|
|
117
|
-
type UnitConversionRate<M extends UnitSubvalues> = number & {
|
|
118
|
-
readonly __uom_types__unit_meta: UnitMeta<M>;
|
|
119
|
-
};
|
|
120
|
-
/**
|
|
121
|
-
* Create a {@link UnitConversionRate} from already existing {@link UnitMeta}.
|
|
122
|
-
*
|
|
123
|
-
* @group Unit Generators
|
|
124
|
-
*/
|
|
125
|
-
type UnitConversionRateFrom<M extends UnknownUnitMeta> = M extends UnitMeta<infer A> ? UnitConversionRate<A> : never;
|
|
126
|
-
/**
|
|
127
|
-
* Used to determine what a unit is of. For example, length, volume, mass etc.
|
|
128
|
-
*
|
|
129
|
-
* @group Unit Components
|
|
130
|
-
*/
|
|
131
|
-
type UnitClass<T extends UnitSubvalues> = UnitKeyValues<T> & {
|
|
132
|
-
readonly __uno_types__unit_class_type: true;
|
|
133
|
-
};
|
|
134
|
-
/**
|
|
135
|
-
* Used to state how units of the same {@link UnitClass} differ from one another.
|
|
136
|
-
* For example, by a scale factor.
|
|
137
|
-
*
|
|
138
|
-
* @group Unit Components
|
|
139
|
-
*/
|
|
140
|
-
type UnitMeta<T extends UnitSubvalues> = UnitKeyValues<T> & {
|
|
141
|
-
readonly __uno_types__unit_meta_type: true;
|
|
142
|
-
};
|
|
143
|
-
/**
|
|
144
|
-
* A {@link Unit} that we don't know anything about.
|
|
145
|
-
*
|
|
146
|
-
* @group Unknown Units
|
|
147
|
-
*/
|
|
148
|
-
type UnknownUnit = UnknownAbstractUnit & {
|
|
149
|
-
readonly __uom_types__unit_meta: UnknownUnitMeta;
|
|
150
|
-
};
|
|
151
|
-
/**
|
|
152
|
-
* An {@link AbstractUnit} that we don't know anything about.
|
|
153
|
-
*
|
|
154
|
-
* @group Unknown Units
|
|
155
|
-
*/
|
|
156
|
-
type UnknownAbstractUnit = number & {
|
|
157
|
-
readonly __uom_types__unit_class: UnknownUnitClass;
|
|
158
|
-
};
|
|
159
|
-
/**
|
|
160
|
-
* An {@link UnitConversionRate} that we don't know anything about.
|
|
161
|
-
*
|
|
162
|
-
* @group Unknown Units
|
|
163
|
-
*/
|
|
164
|
-
type UnknownUnitConversionRate = number & {
|
|
165
|
-
readonly __uom_types__unit_meta: UnknownUnitMeta;
|
|
166
|
-
};
|
|
167
|
-
/**
|
|
168
|
-
* A {@link UnitClass} that we don't know anything about.
|
|
169
|
-
*
|
|
170
|
-
* @group Unknown Units
|
|
171
|
-
*/
|
|
172
|
-
type UnknownUnitClass = UnknownUnitKeyValues & {
|
|
173
|
-
readonly __uno_types__unit_class_type: true;
|
|
174
|
-
};
|
|
175
|
-
/**
|
|
176
|
-
* A {@link UnitMeta} that we don't know anything about.
|
|
177
|
-
*
|
|
178
|
-
* @group Unknown Units
|
|
179
|
-
*/
|
|
180
|
-
type UnknownUnitMeta = UnknownUnitKeyValues & {
|
|
181
|
-
readonly __uno_types__unit_meta_type: true;
|
|
182
|
-
};
|
|
183
|
-
type UnitKeyValues<T extends UnitSubvalues> = {
|
|
184
|
-
readonly __uom_types__keys: keyof ExcludeUnitZeroSubvalues<T> extends string ? keyof ExcludeUnitZeroSubvalues<T> : never;
|
|
185
|
-
readonly __uom_types__value: RemoveNeverValues<T>;
|
|
186
|
-
};
|
|
187
|
-
type UnknownUnitKeyValues = {
|
|
188
|
-
readonly __uom_types__keys: string;
|
|
189
|
-
readonly __uom_types__value: {};
|
|
190
|
-
};
|
|
191
|
-
/**
|
|
192
|
-
* A mapping of subvalue of a unit its magnitude.
|
|
193
|
-
*
|
|
194
|
-
* @group Unit Components
|
|
195
|
-
*/
|
|
196
|
-
type UnitSubvalues = Record<string, Exponent>;
|
|
197
|
-
|
|
198
|
-
/**
|
|
199
|
-
* Take the inverse of a unit.
|
|
200
|
-
*
|
|
201
|
-
* @group Unit Functions
|
|
202
|
-
* @returns `1/X`.
|
|
203
|
-
*/
|
|
204
|
-
type Inverse<X extends number> = Pow<X, -1>;
|
|
205
|
-
/**
|
|
206
|
-
* Inverses each of the subvalues.
|
|
207
|
-
*
|
|
208
|
-
* @group Unit Subvalue Functions
|
|
209
|
-
*/
|
|
210
|
-
type InverseUnitSubvalues<T extends UnitSubvalues> = PowUnitSubvalues<T, -1>;
|
|
211
|
-
/**
|
|
212
|
-
* Multiply a unit by another unit.
|
|
213
|
-
*
|
|
214
|
-
* @group Unit Functions
|
|
215
|
-
* @returns `A⋅B`
|
|
216
|
-
*/
|
|
217
|
-
type Multiply<A extends number, B extends number> = A extends UnknownUnit ? MultiplyHelperUnit<A, B> : B extends UnknownUnit ? MultiplyHelperUnit<B, A> : A extends UnknownAbstractUnit ? MultiplyHelperAbstractUnit<A, B> : B extends UnknownAbstractUnit ? MultiplyHelperAbstractUnit<B, A> : A extends UnknownUnitConversionRate ? MultiplyHelperUnitConversionRate<A, B> : B extends UnknownUnitConversionRate ? MultiplyHelperUnitConversionRate<B, A> : number;
|
|
218
|
-
/**
|
|
219
|
-
* Multiple a Unit by a Unit, AbstractUnit, UnitConversionRate or number
|
|
220
|
-
*
|
|
221
|
-
* @internal
|
|
222
|
-
*/
|
|
223
|
-
type MultiplyHelperUnit<A extends UnknownUnit, B extends number> = A extends Unit<infer AClass, infer AMeta> ? B extends Unit<infer BClass, infer BMeta> ? Unit<FlatternAlias<MultiplyUnitSubvalues<AClass, BClass>>, FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : B extends AbstractUnit<infer BClass> ? Unit<FlatternAlias<MultiplyUnitSubvalues<AClass, BClass>>, AMeta> : B extends UnitConversionRate<infer BMeta> ? Unit<AClass, FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : A : never;
|
|
224
|
-
/**
|
|
225
|
-
* Multiple an AbstractUnit by an AbstractUnit, UnitConversionRate or number
|
|
226
|
-
*
|
|
227
|
-
* @internal
|
|
228
|
-
*/
|
|
229
|
-
type MultiplyHelperAbstractUnit<A extends UnknownAbstractUnit, B extends number> = A extends AbstractUnit<infer AClass> ? B extends AbstractUnit<infer BClass> ? AbstractUnit<FlatternAlias<MultiplyUnitSubvalues<AClass, BClass>>> : B extends UnitConversionRate<infer BMeta> ? Unit<AClass, BMeta> : A : never;
|
|
230
|
-
/**
|
|
231
|
-
* Multiple an UnitConversionRate by a UnitConversionRate or number
|
|
232
|
-
*
|
|
233
|
-
* @internal
|
|
234
|
-
*/
|
|
235
|
-
type MultiplyHelperUnitConversionRate<A extends UnknownUnitConversionRate, B extends number> = A extends UnitConversionRate<infer AMeta> ? B extends UnitConversionRate<infer BMeta> ? UnitConversionRate<FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : A : never;
|
|
236
|
-
/**
|
|
237
|
-
* Multiply each of the subvalues from a unit with the corresponding once from another unit.
|
|
238
|
-
*
|
|
239
|
-
* @group Unit Subvalue Functions
|
|
240
|
-
*/
|
|
241
|
-
type MultiplyUnitSubvalues<A extends UnitSubvalues, B extends UnitSubvalues> = ExcludeUnitZeroSubvalues<{
|
|
242
|
-
[S in keyof A | keyof B]: SumExponents<GetExponent<A, S>, GetExponent<B, S>>;
|
|
243
|
-
}>;
|
|
244
|
-
/**
|
|
245
|
-
* Divide a unit by another unit.
|
|
246
|
-
*
|
|
247
|
-
* @group Unit Functions
|
|
248
|
-
* @returns `A/B`
|
|
249
|
-
*/
|
|
250
|
-
type Divide<A extends number, B extends number> = Multiply<A, Inverse<B>>;
|
|
251
|
-
/**
|
|
252
|
-
* Divide each of the subvalues from a unit with the corresponding once from another unit.
|
|
253
|
-
*
|
|
254
|
-
* @group Unit Subvalue Functions
|
|
255
|
-
*/
|
|
256
|
-
type DivideUnitSubvalues<A extends UnitSubvalues, B extends UnitSubvalues> = MultiplyUnitSubvalues<A, InverseUnitSubvalues<B>>;
|
|
257
|
-
/**
|
|
258
|
-
* Put a unit to the power of an exponent.
|
|
259
|
-
*
|
|
260
|
-
* @group Unit Functions
|
|
261
|
-
*/
|
|
262
|
-
type Pow<T extends number, N extends Exponent> = T extends Unit<infer Class, infer Meta> ? Unit<FlatternAlias<PowUnitSubvalues<Class, N>>, FlatternAlias<PowUnitSubvalues<Meta, N>>> : T extends AbstractUnit<infer Class> ? AbstractUnit<FlatternAlias<PowUnitSubvalues<Class, N>>> : T extends UnitConversionRate<infer Meta> ? UnitConversionRate<FlatternAlias<PowUnitSubvalues<Meta, N>>> : number;
|
|
263
|
-
/**
|
|
264
|
-
* Put each subvalue of a unit to the power of an exponent.
|
|
265
|
-
*
|
|
266
|
-
* @group Unit Subvalue Functions
|
|
267
|
-
*/
|
|
268
|
-
type PowUnitSubvalues<T extends UnitSubvalues, E extends Exponent> = ExcludeUnitZeroSubvalues<{
|
|
269
|
-
[S in keyof T]: MultiplyExponents<GetExponent<T, S>, E>;
|
|
270
|
-
}>;
|
|
271
|
-
/**
|
|
272
|
-
* Take the nth root of a unit.
|
|
273
|
-
*
|
|
274
|
-
* @group Unit Functions
|
|
275
|
-
*/
|
|
276
|
-
type Root<T extends number, N extends Exponent> = T extends Unit<infer Class, infer Meta> ? Unit<FlatternAlias<RootUnitSubvalues<Class, N>>, FlatternAlias<RootUnitSubvalues<Meta, N>>> : T extends AbstractUnit<infer Class> ? AbstractUnit<FlatternAlias<RootUnitSubvalues<Class, N>>> : T extends UnitConversionRate<infer Meta> ? UnitConversionRate<FlatternAlias<RootUnitSubvalues<Meta, N>>> : number;
|
|
277
|
-
/**
|
|
278
|
-
* Take the nth root of each subvalue of a unit.
|
|
279
|
-
*
|
|
280
|
-
* @group Unit Subvalue Functions
|
|
281
|
-
*/
|
|
282
|
-
type RootUnitSubvalues<T extends UnitSubvalues, E extends Exponent> = ExcludeUnitZeroSubvalues<{
|
|
283
|
-
[S in keyof T]: DivideExponents<GetExponent<T, S>, E>;
|
|
284
|
-
}>;
|
|
285
|
-
|
|
286
|
-
export { AbstractUnit as A, DivideExponents as D, Exponent as E, Inverse as I, MultiplyExponents as M, NegateExponent as N, Pow as P, Root as R, SubExponents as S, Unit as U, AbstractUnitFrom as a, UnitClass as b, UnitConversionRate as c, UnitConversionRateFrom as d, UnitFrom as e, UnitMeta as f, UnitSubvalues as g, UnknownAbstractUnit as h, UnknownUnit as i, UnknownUnitClass as j, UnknownUnitConversionRate as k, UnknownUnitMeta as l, NegativeExponent as m, NegExponent as n, PosExponent as o, SumExponents as p, Divide as q, DivideUnitSubvalues as r, InverseUnitSubvalues as s, Multiply as t, MultiplyUnitSubvalues as u, PowUnitSubvalues as v, RootUnitSubvalues as w, Exactify as x };
|
package/dist/_units.d.mts
DELETED
|
@@ -1,286 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @file Autogenerated File - Don't manually edit.
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* All the supported positive exponent values.
|
|
6
|
-
*
|
|
7
|
-
* @group Unit Components
|
|
8
|
-
*/
|
|
9
|
-
type PosExponent = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
|
|
10
|
-
/**
|
|
11
|
-
* All the supported negative exponent values.
|
|
12
|
-
*
|
|
13
|
-
* @group Unit Components
|
|
14
|
-
*/
|
|
15
|
-
type NegExponent = -1 | -2 | -3 | -4 | -5 | -6 | -7 | -8 | -9 | -10 | -11 | -12;
|
|
16
|
-
/**
|
|
17
|
-
* All the supported exponent values.
|
|
18
|
-
*
|
|
19
|
-
* @group Unit Components
|
|
20
|
-
*/
|
|
21
|
-
type Exponent = 0 | PosExponent | NegExponent;
|
|
22
|
-
/**
|
|
23
|
-
* @group Exponent Functions
|
|
24
|
-
*/
|
|
25
|
-
type NegateExponent<T extends Exponent> = MultiplyExponents<T, -1>;
|
|
26
|
-
/**
|
|
27
|
-
* @depreated Use {@link NegateExponent} instead.
|
|
28
|
-
*/
|
|
29
|
-
type NegativeExponent<T extends Exponent> = NegateExponent<T>;
|
|
30
|
-
/**
|
|
31
|
-
* @group Exponent Functions
|
|
32
|
-
*/
|
|
33
|
-
type SumExponents<A extends Exponent, B extends Exponent> = A extends 0 ? B extends 0 ? 0 : B extends 1 ? 1 : B extends -1 ? -1 : B extends 2 ? 2 : B extends -2 ? -2 : B extends 3 ? 3 : B extends -3 ? -3 : B extends 4 ? 4 : B extends -4 ? -4 : B extends 5 ? 5 : B extends -5 ? -5 : B extends 6 ? 6 : B extends -6 ? -6 : B extends 7 ? 7 : B extends -7 ? -7 : B extends 8 ? 8 : B extends -8 ? -8 : B extends 9 ? 9 : B extends -9 ? -9 : B extends 10 ? 10 : B extends -10 ? -10 : B extends 11 ? 11 : B extends -11 ? -11 : B extends 12 ? 12 : B extends -12 ? -12 : never : A extends 1 ? B extends 0 ? 1 : B extends 1 ? 2 : B extends -1 ? 0 : B extends 2 ? 3 : B extends -2 ? -1 : B extends 3 ? 4 : B extends -3 ? -2 : B extends 4 ? 5 : B extends -4 ? -3 : B extends 5 ? 6 : B extends -5 ? -4 : B extends 6 ? 7 : B extends -6 ? -5 : B extends 7 ? 8 : B extends -7 ? -6 : B extends 8 ? 9 : B extends -8 ? -7 : B extends 9 ? 10 : B extends -9 ? -8 : B extends 10 ? 11 : B extends -10 ? -9 : B extends 11 ? 12 : B extends -11 ? -10 : B extends -12 ? -11 : never : A extends -1 ? B extends 0 ? -1 : B extends 1 ? 0 : B extends -1 ? -2 : B extends 2 ? 1 : B extends -2 ? -3 : B extends 3 ? 2 : B extends -3 ? -4 : B extends 4 ? 3 : B extends -4 ? -5 : B extends 5 ? 4 : B extends -5 ? -6 : B extends 6 ? 5 : B extends -6 ? -7 : B extends 7 ? 6 : B extends -7 ? -8 : B extends 8 ? 7 : B extends -8 ? -9 : B extends 9 ? 8 : B extends -9 ? -10 : B extends 10 ? 9 : B extends -10 ? -11 : B extends 11 ? 10 : B extends -11 ? -12 : B extends 12 ? 11 : never : A extends 2 ? B extends 0 ? 2 : B extends 1 ? 3 : B extends -1 ? 1 : B extends 2 ? 4 : B extends -2 ? 0 : B extends 3 ? 5 : B extends -3 ? -1 : B extends 4 ? 6 : B extends -4 ? -2 : B extends 5 ? 7 : B extends -5 ? -3 : B extends 6 ? 8 : B extends -6 ? -4 : B extends 7 ? 9 : B extends -7 ? -5 : B extends 8 ? 10 : B extends -8 ? -6 : B extends 9 ? 11 : B extends -9 ? -7 : B extends 10 ? 12 : B extends -10 ? -8 : B extends -11 ? -9 : B extends -12 ? -10 : never : A extends -2 ? B extends 0 ? -2 : B extends 1 ? -1 : B extends -1 ? -3 : B extends 2 ? 0 : B extends -2 ? -4 : B extends 3 ? 1 : B extends -3 ? -5 : B extends 4 ? 2 : B extends -4 ? -6 : B extends 5 ? 3 : B extends -5 ? -7 : B extends 6 ? 4 : B extends -6 ? -8 : B extends 7 ? 5 : B extends -7 ? -9 : B extends 8 ? 6 : B extends -8 ? -10 : B extends 9 ? 7 : B extends -9 ? -11 : B extends 10 ? 8 : B extends -10 ? -12 : B extends 11 ? 9 : B extends 12 ? 10 : never : A extends 3 ? B extends 0 ? 3 : B extends 1 ? 4 : B extends -1 ? 2 : B extends 2 ? 5 : B extends -2 ? 1 : B extends 3 ? 6 : B extends -3 ? 0 : B extends 4 ? 7 : B extends -4 ? -1 : B extends 5 ? 8 : B extends -5 ? -2 : B extends 6 ? 9 : B extends -6 ? -3 : B extends 7 ? 10 : B extends -7 ? -4 : B extends 8 ? 11 : B extends -8 ? -5 : B extends 9 ? 12 : B extends -9 ? -6 : B extends -10 ? -7 : B extends -11 ? -8 : B extends -12 ? -9 : never : A extends -3 ? B extends 0 ? -3 : B extends 1 ? -2 : B extends -1 ? -4 : B extends 2 ? -1 : B extends -2 ? -5 : B extends 3 ? 0 : B extends -3 ? -6 : B extends 4 ? 1 : B extends -4 ? -7 : B extends 5 ? 2 : B extends -5 ? -8 : B extends 6 ? 3 : B extends -6 ? -9 : B extends 7 ? 4 : B extends -7 ? -10 : B extends 8 ? 5 : B extends -8 ? -11 : B extends 9 ? 6 : B extends -9 ? -12 : B extends 10 ? 7 : B extends 11 ? 8 : B extends 12 ? 9 : never : A extends 4 ? B extends 0 ? 4 : B extends 1 ? 5 : B extends -1 ? 3 : B extends 2 ? 6 : B extends -2 ? 2 : B extends 3 ? 7 : B extends -3 ? 1 : B extends 4 ? 8 : B extends -4 ? 0 : B extends 5 ? 9 : B extends -5 ? -1 : B extends 6 ? 10 : B extends -6 ? -2 : B extends 7 ? 11 : B extends -7 ? -3 : B extends 8 ? 12 : B extends -8 ? -4 : B extends -9 ? -5 : B extends -10 ? -6 : B extends -11 ? -7 : B extends -12 ? -8 : never : A extends -4 ? B extends 0 ? -4 : B extends 1 ? -3 : B extends -1 ? -5 : B extends 2 ? -2 : B extends -2 ? -6 : B extends 3 ? -1 : B extends -3 ? -7 : B extends 4 ? 0 : B extends -4 ? -8 : B extends 5 ? 1 : B extends -5 ? -9 : B extends 6 ? 2 : B extends -6 ? -10 : B extends 7 ? 3 : B extends -7 ? -11 : B extends 8 ? 4 : B extends -8 ? -12 : B extends 9 ? 5 : B extends 10 ? 6 : B extends 11 ? 7 : B extends 12 ? 8 : never : A extends 5 ? B extends 0 ? 5 : B extends 1 ? 6 : B extends -1 ? 4 : B extends 2 ? 7 : B extends -2 ? 3 : B extends 3 ? 8 : B extends -3 ? 2 : B extends 4 ? 9 : B extends -4 ? 1 : B extends 5 ? 10 : B extends -5 ? 0 : B extends 6 ? 11 : B extends -6 ? -1 : B extends 7 ? 12 : B extends -7 ? -2 : B extends -8 ? -3 : B extends -9 ? -4 : B extends -10 ? -5 : B extends -11 ? -6 : B extends -12 ? -7 : never : A extends -5 ? B extends 0 ? -5 : B extends 1 ? -4 : B extends -1 ? -6 : B extends 2 ? -3 : B extends -2 ? -7 : B extends 3 ? -2 : B extends -3 ? -8 : B extends 4 ? -1 : B extends -4 ? -9 : B extends 5 ? 0 : B extends -5 ? -10 : B extends 6 ? 1 : B extends -6 ? -11 : B extends 7 ? 2 : B extends -7 ? -12 : B extends 8 ? 3 : B extends 9 ? 4 : B extends 10 ? 5 : B extends 11 ? 6 : B extends 12 ? 7 : never : A extends 6 ? B extends 0 ? 6 : B extends 1 ? 7 : B extends -1 ? 5 : B extends 2 ? 8 : B extends -2 ? 4 : B extends 3 ? 9 : B extends -3 ? 3 : B extends 4 ? 10 : B extends -4 ? 2 : B extends 5 ? 11 : B extends -5 ? 1 : B extends 6 ? 12 : B extends -6 ? 0 : B extends -7 ? -1 : B extends -8 ? -2 : B extends -9 ? -3 : B extends -10 ? -4 : B extends -11 ? -5 : B extends -12 ? -6 : never : A extends -6 ? B extends 0 ? -6 : B extends 1 ? -5 : B extends -1 ? -7 : B extends 2 ? -4 : B extends -2 ? -8 : B extends 3 ? -3 : B extends -3 ? -9 : B extends 4 ? -2 : B extends -4 ? -10 : B extends 5 ? -1 : B extends -5 ? -11 : B extends 6 ? 0 : B extends -6 ? -12 : B extends 7 ? 1 : B extends 8 ? 2 : B extends 9 ? 3 : B extends 10 ? 4 : B extends 11 ? 5 : B extends 12 ? 6 : never : A extends 7 ? B extends 0 ? 7 : B extends 1 ? 8 : B extends -1 ? 6 : B extends 2 ? 9 : B extends -2 ? 5 : B extends 3 ? 10 : B extends -3 ? 4 : B extends 4 ? 11 : B extends -4 ? 3 : B extends 5 ? 12 : B extends -5 ? 2 : B extends -6 ? 1 : B extends -7 ? 0 : B extends -8 ? -1 : B extends -9 ? -2 : B extends -10 ? -3 : B extends -11 ? -4 : B extends -12 ? -5 : never : A extends -7 ? B extends 0 ? -7 : B extends 1 ? -6 : B extends -1 ? -8 : B extends 2 ? -5 : B extends -2 ? -9 : B extends 3 ? -4 : B extends -3 ? -10 : B extends 4 ? -3 : B extends -4 ? -11 : B extends 5 ? -2 : B extends -5 ? -12 : B extends 6 ? -1 : B extends 7 ? 0 : B extends 8 ? 1 : B extends 9 ? 2 : B extends 10 ? 3 : B extends 11 ? 4 : B extends 12 ? 5 : never : A extends 8 ? B extends 0 ? 8 : B extends 1 ? 9 : B extends -1 ? 7 : B extends 2 ? 10 : B extends -2 ? 6 : B extends 3 ? 11 : B extends -3 ? 5 : B extends 4 ? 12 : B extends -4 ? 4 : B extends -5 ? 3 : B extends -6 ? 2 : B extends -7 ? 1 : B extends -8 ? 0 : B extends -9 ? -1 : B extends -10 ? -2 : B extends -11 ? -3 : B extends -12 ? -4 : never : A extends -8 ? B extends 0 ? -8 : B extends 1 ? -7 : B extends -1 ? -9 : B extends 2 ? -6 : B extends -2 ? -10 : B extends 3 ? -5 : B extends -3 ? -11 : B extends 4 ? -4 : B extends -4 ? -12 : B extends 5 ? -3 : B extends 6 ? -2 : B extends 7 ? -1 : B extends 8 ? 0 : B extends 9 ? 1 : B extends 10 ? 2 : B extends 11 ? 3 : B extends 12 ? 4 : never : A extends 9 ? B extends 0 ? 9 : B extends 1 ? 10 : B extends -1 ? 8 : B extends 2 ? 11 : B extends -2 ? 7 : B extends 3 ? 12 : B extends -3 ? 6 : B extends -4 ? 5 : B extends -5 ? 4 : B extends -6 ? 3 : B extends -7 ? 2 : B extends -8 ? 1 : B extends -9 ? 0 : B extends -10 ? -1 : B extends -11 ? -2 : B extends -12 ? -3 : never : A extends -9 ? B extends 0 ? -9 : B extends 1 ? -8 : B extends -1 ? -10 : B extends 2 ? -7 : B extends -2 ? -11 : B extends 3 ? -6 : B extends -3 ? -12 : B extends 4 ? -5 : B extends 5 ? -4 : B extends 6 ? -3 : B extends 7 ? -2 : B extends 8 ? -1 : B extends 9 ? 0 : B extends 10 ? 1 : B extends 11 ? 2 : B extends 12 ? 3 : never : A extends 10 ? B extends 0 ? 10 : B extends 1 ? 11 : B extends -1 ? 9 : B extends 2 ? 12 : B extends -2 ? 8 : B extends -3 ? 7 : B extends -4 ? 6 : B extends -5 ? 5 : B extends -6 ? 4 : B extends -7 ? 3 : B extends -8 ? 2 : B extends -9 ? 1 : B extends -10 ? 0 : B extends -11 ? -1 : B extends -12 ? -2 : never : A extends -10 ? B extends 0 ? -10 : B extends 1 ? -9 : B extends -1 ? -11 : B extends 2 ? -8 : B extends -2 ? -12 : B extends 3 ? -7 : B extends 4 ? -6 : B extends 5 ? -5 : B extends 6 ? -4 : B extends 7 ? -3 : B extends 8 ? -2 : B extends 9 ? -1 : B extends 10 ? 0 : B extends 11 ? 1 : B extends 12 ? 2 : never : A extends 11 ? B extends 0 ? 11 : B extends 1 ? 12 : B extends -1 ? 10 : B extends -2 ? 9 : B extends -3 ? 8 : B extends -4 ? 7 : B extends -5 ? 6 : B extends -6 ? 5 : B extends -7 ? 4 : B extends -8 ? 3 : B extends -9 ? 2 : B extends -10 ? 1 : B extends -11 ? 0 : B extends -12 ? -1 : never : A extends -11 ? B extends 0 ? -11 : B extends 1 ? -10 : B extends -1 ? -12 : B extends 2 ? -9 : B extends 3 ? -8 : B extends 4 ? -7 : B extends 5 ? -6 : B extends 6 ? -5 : B extends 7 ? -4 : B extends 8 ? -3 : B extends 9 ? -2 : B extends 10 ? -1 : B extends 11 ? 0 : B extends 12 ? 1 : never : A extends 12 ? B extends 0 ? 12 : B extends -1 ? 11 : B extends -2 ? 10 : B extends -3 ? 9 : B extends -4 ? 8 : B extends -5 ? 7 : B extends -6 ? 6 : B extends -7 ? 5 : B extends -8 ? 4 : B extends -9 ? 3 : B extends -10 ? 2 : B extends -11 ? 1 : B extends -12 ? 0 : never : A extends -12 ? B extends 0 ? -12 : B extends 1 ? -11 : B extends 2 ? -10 : B extends 3 ? -9 : B extends 4 ? -8 : B extends 5 ? -7 : B extends 6 ? -6 : B extends 7 ? -5 : B extends 8 ? -4 : B extends 9 ? -3 : B extends 10 ? -2 : B extends 11 ? -1 : B extends 12 ? 0 : never : never;
|
|
34
|
-
/**
|
|
35
|
-
* @group Exponent Functions
|
|
36
|
-
*/
|
|
37
|
-
type SubExponents<A extends Exponent, B extends Exponent> = SumExponents<A, NegativeExponent<B>>;
|
|
38
|
-
/**
|
|
39
|
-
* @group Exponent Functions
|
|
40
|
-
*/
|
|
41
|
-
type MultiplyExponents<A extends Exponent, B extends Exponent> = A extends 0 ? B extends 0 ? 0 : B extends 1 ? 0 : B extends -1 ? 0 : B extends 2 ? 0 : B extends -2 ? 0 : B extends 3 ? 0 : B extends -3 ? 0 : B extends 4 ? 0 : B extends -4 ? 0 : B extends 5 ? 0 : B extends -5 ? 0 : B extends 6 ? 0 : B extends -6 ? 0 : B extends 7 ? 0 : B extends -7 ? 0 : B extends 8 ? 0 : B extends -8 ? 0 : B extends 9 ? 0 : B extends -9 ? 0 : B extends 10 ? 0 : B extends -10 ? 0 : B extends 11 ? 0 : B extends -11 ? 0 : B extends 12 ? 0 : B extends -12 ? 0 : never : A extends 1 ? B extends 0 ? 0 : B extends 1 ? 1 : B extends -1 ? -1 : B extends 2 ? 2 : B extends -2 ? -2 : B extends 3 ? 3 : B extends -3 ? -3 : B extends 4 ? 4 : B extends -4 ? -4 : B extends 5 ? 5 : B extends -5 ? -5 : B extends 6 ? 6 : B extends -6 ? -6 : B extends 7 ? 7 : B extends -7 ? -7 : B extends 8 ? 8 : B extends -8 ? -8 : B extends 9 ? 9 : B extends -9 ? -9 : B extends 10 ? 10 : B extends -10 ? -10 : B extends 11 ? 11 : B extends -11 ? -11 : B extends 12 ? 12 : B extends -12 ? -12 : never : A extends -1 ? B extends 0 ? 0 : B extends 1 ? -1 : B extends -1 ? 1 : B extends 2 ? -2 : B extends -2 ? 2 : B extends 3 ? -3 : B extends -3 ? 3 : B extends 4 ? -4 : B extends -4 ? 4 : B extends 5 ? -5 : B extends -5 ? 5 : B extends 6 ? -6 : B extends -6 ? 6 : B extends 7 ? -7 : B extends -7 ? 7 : B extends 8 ? -8 : B extends -8 ? 8 : B extends 9 ? -9 : B extends -9 ? 9 : B extends 10 ? -10 : B extends -10 ? 10 : B extends 11 ? -11 : B extends -11 ? 11 : B extends 12 ? -12 : B extends -12 ? 12 : never : A extends 2 ? B extends 0 ? 0 : B extends 1 ? 2 : B extends -1 ? -2 : B extends 2 ? 4 : B extends -2 ? -4 : B extends 3 ? 6 : B extends -3 ? -6 : B extends 4 ? 8 : B extends -4 ? -8 : B extends 5 ? 10 : B extends -5 ? -10 : B extends 6 ? 12 : B extends -6 ? -12 : never : A extends -2 ? B extends 0 ? 0 : B extends 1 ? -2 : B extends -1 ? 2 : B extends 2 ? -4 : B extends -2 ? 4 : B extends 3 ? -6 : B extends -3 ? 6 : B extends 4 ? -8 : B extends -4 ? 8 : B extends 5 ? -10 : B extends -5 ? 10 : B extends 6 ? -12 : B extends -6 ? 12 : never : A extends 3 ? B extends 0 ? 0 : B extends 1 ? 3 : B extends -1 ? -3 : B extends 2 ? 6 : B extends -2 ? -6 : B extends 3 ? 9 : B extends -3 ? -9 : B extends 4 ? 12 : B extends -4 ? -12 : never : A extends -3 ? B extends 0 ? 0 : B extends 1 ? -3 : B extends -1 ? 3 : B extends 2 ? -6 : B extends -2 ? 6 : B extends 3 ? -9 : B extends -3 ? 9 : B extends 4 ? -12 : B extends -4 ? 12 : never : A extends 4 ? B extends 0 ? 0 : B extends 1 ? 4 : B extends -1 ? -4 : B extends 2 ? 8 : B extends -2 ? -8 : B extends 3 ? 12 : B extends -3 ? -12 : never : A extends -4 ? B extends 0 ? 0 : B extends 1 ? -4 : B extends -1 ? 4 : B extends 2 ? -8 : B extends -2 ? 8 : B extends 3 ? -12 : B extends -3 ? 12 : never : A extends 5 ? B extends 0 ? 0 : B extends 1 ? 5 : B extends -1 ? -5 : B extends 2 ? 10 : B extends -2 ? -10 : never : A extends -5 ? B extends 0 ? 0 : B extends 1 ? -5 : B extends -1 ? 5 : B extends 2 ? -10 : B extends -2 ? 10 : never : A extends 6 ? B extends 0 ? 0 : B extends 1 ? 6 : B extends -1 ? -6 : B extends 2 ? 12 : B extends -2 ? -12 : never : A extends -6 ? B extends 0 ? 0 : B extends 1 ? -6 : B extends -1 ? 6 : B extends 2 ? -12 : B extends -2 ? 12 : never : A extends 7 ? B extends 0 ? 0 : B extends 1 ? 7 : B extends -1 ? -7 : never : A extends -7 ? B extends 0 ? 0 : B extends 1 ? -7 : B extends -1 ? 7 : never : A extends 8 ? B extends 0 ? 0 : B extends 1 ? 8 : B extends -1 ? -8 : never : A extends -8 ? B extends 0 ? 0 : B extends 1 ? -8 : B extends -1 ? 8 : never : A extends 9 ? B extends 0 ? 0 : B extends 1 ? 9 : B extends -1 ? -9 : never : A extends -9 ? B extends 0 ? 0 : B extends 1 ? -9 : B extends -1 ? 9 : never : A extends 10 ? B extends 0 ? 0 : B extends 1 ? 10 : B extends -1 ? -10 : never : A extends -10 ? B extends 0 ? 0 : B extends 1 ? -10 : B extends -1 ? 10 : never : A extends 11 ? B extends 0 ? 0 : B extends 1 ? 11 : B extends -1 ? -11 : never : A extends -11 ? B extends 0 ? 0 : B extends 1 ? -11 : B extends -1 ? 11 : never : A extends 12 ? B extends 0 ? 0 : B extends 1 ? 12 : B extends -1 ? -12 : never : A extends -12 ? B extends 0 ? 0 : B extends 1 ? -12 : B extends -1 ? 12 : never : never;
|
|
42
|
-
/**
|
|
43
|
-
* @group Exponent Functions
|
|
44
|
-
*/
|
|
45
|
-
type DivideExponents<A extends Exponent, B extends Exponent> = B extends 0 ? never : B extends 1 ? A extends 0 ? 0 : A extends 1 ? 1 : A extends -1 ? -1 : A extends 2 ? 2 : A extends -2 ? -2 : A extends 3 ? 3 : A extends -3 ? -3 : A extends 4 ? 4 : A extends -4 ? -4 : A extends 5 ? 5 : A extends -5 ? -5 : A extends 6 ? 6 : A extends -6 ? -6 : A extends 7 ? 7 : A extends -7 ? -7 : A extends 8 ? 8 : A extends -8 ? -8 : A extends 9 ? 9 : A extends -9 ? -9 : A extends 10 ? 10 : A extends -10 ? -10 : A extends 11 ? 11 : A extends -11 ? -11 : A extends 12 ? 12 : A extends -12 ? -12 : never : B extends -1 ? A extends 0 ? 0 : A extends 1 ? -1 : A extends -1 ? 1 : A extends 2 ? -2 : A extends -2 ? 2 : A extends 3 ? -3 : A extends -3 ? 3 : A extends 4 ? -4 : A extends -4 ? 4 : A extends 5 ? -5 : A extends -5 ? 5 : A extends 6 ? -6 : A extends -6 ? 6 : A extends 7 ? -7 : A extends -7 ? 7 : A extends 8 ? -8 : A extends -8 ? 8 : A extends 9 ? -9 : A extends -9 ? 9 : A extends 10 ? -10 : A extends -10 ? 10 : A extends 11 ? -11 : A extends -11 ? 11 : A extends 12 ? -12 : A extends -12 ? 12 : never : B extends 2 ? A extends 0 ? 0 : A extends 2 ? 1 : A extends -2 ? -1 : A extends 4 ? 2 : A extends -4 ? -2 : A extends 6 ? 3 : A extends -6 ? -3 : A extends 8 ? 4 : A extends -8 ? -4 : A extends 10 ? 5 : A extends -10 ? -5 : A extends 12 ? 6 : A extends -12 ? -6 : never : B extends -2 ? A extends 0 ? 0 : A extends 2 ? -1 : A extends -2 ? 1 : A extends 4 ? -2 : A extends -4 ? 2 : A extends 6 ? -3 : A extends -6 ? 3 : A extends 8 ? -4 : A extends -8 ? 4 : A extends 10 ? -5 : A extends -10 ? 5 : A extends 12 ? -6 : A extends -12 ? 6 : never : B extends 3 ? A extends 0 ? 0 : A extends 3 ? 1 : A extends -3 ? -1 : A extends 6 ? 2 : A extends -6 ? -2 : A extends 9 ? 3 : A extends -9 ? -3 : A extends 12 ? 4 : A extends -12 ? -4 : never : B extends -3 ? A extends 0 ? 0 : A extends 3 ? -1 : A extends -3 ? 1 : A extends 6 ? -2 : A extends -6 ? 2 : A extends 9 ? -3 : A extends -9 ? 3 : A extends 12 ? -4 : A extends -12 ? 4 : never : B extends 4 ? A extends 0 ? 0 : A extends 4 ? 1 : A extends -4 ? -1 : A extends 8 ? 2 : A extends -8 ? -2 : A extends 12 ? 3 : A extends -12 ? -3 : never : B extends -4 ? A extends 0 ? 0 : A extends 4 ? -1 : A extends -4 ? 1 : A extends 8 ? -2 : A extends -8 ? 2 : A extends 12 ? -3 : A extends -12 ? 3 : never : B extends 5 ? A extends 0 ? 0 : A extends 5 ? 1 : A extends -5 ? -1 : A extends 10 ? 2 : A extends -10 ? -2 : never : B extends -5 ? A extends 0 ? 0 : A extends 5 ? -1 : A extends -5 ? 1 : A extends 10 ? -2 : A extends -10 ? 2 : never : B extends 6 ? A extends 0 ? 0 : A extends 6 ? 1 : A extends -6 ? -1 : A extends 12 ? 2 : A extends -12 ? -2 : never : B extends -6 ? A extends 0 ? 0 : A extends 6 ? -1 : A extends -6 ? 1 : A extends 12 ? -2 : A extends -12 ? 2 : never : B extends 7 ? A extends 0 ? 0 : A extends 7 ? 1 : A extends -7 ? -1 : never : B extends -7 ? A extends 0 ? 0 : A extends 7 ? -1 : A extends -7 ? 1 : never : B extends 8 ? A extends 0 ? 0 : A extends 8 ? 1 : A extends -8 ? -1 : never : B extends -8 ? A extends 0 ? 0 : A extends 8 ? -1 : A extends -8 ? 1 : never : B extends 9 ? A extends 0 ? 0 : A extends 9 ? 1 : A extends -9 ? -1 : never : B extends -9 ? A extends 0 ? 0 : A extends 9 ? -1 : A extends -9 ? 1 : never : B extends 10 ? A extends 0 ? 0 : A extends 10 ? 1 : A extends -10 ? -1 : never : B extends -10 ? A extends 0 ? 0 : A extends 10 ? -1 : A extends -10 ? 1 : never : B extends 11 ? A extends 0 ? 0 : A extends 11 ? 1 : A extends -11 ? -1 : never : B extends -11 ? A extends 0 ? 0 : A extends 11 ? -1 : A extends -11 ? 1 : never : B extends 12 ? A extends 0 ? 0 : A extends 12 ? 1 : A extends -12 ? -1 : never : B extends -12 ? A extends 0 ? 0 : A extends 12 ? -1 : A extends -12 ? 1 : never : never;
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* Remove all key from the object that are `never`.
|
|
49
|
-
*/
|
|
50
|
-
type RemoveNeverValues<T extends object> = {
|
|
51
|
-
[K in keyof T as [T[K]] extends [never] ? never : K]: T[K];
|
|
52
|
-
};
|
|
53
|
-
/**
|
|
54
|
-
* Exclude all unit subvalues with an exponent value of zero.
|
|
55
|
-
*/
|
|
56
|
-
type ExcludeUnitZeroSubvalues<U extends UnitSubvalues> = {
|
|
57
|
-
[S in keyof U as S extends string ? U[S] extends 0 ? never : S : never]: U[S];
|
|
58
|
-
};
|
|
59
|
-
/**
|
|
60
|
-
* Get the exponent value of the given key.
|
|
61
|
-
*/
|
|
62
|
-
type GetExponent<C extends UnitSubvalues, S> = S extends keyof C ? C[S] : 0;
|
|
63
|
-
/**
|
|
64
|
-
* Flatten a complex type such as a union or intersection of objects into a
|
|
65
|
-
* single object.
|
|
66
|
-
*
|
|
67
|
-
* @internal
|
|
68
|
-
*/
|
|
69
|
-
type FlatternAlias<T> = {
|
|
70
|
-
[P in keyof T]: T[P];
|
|
71
|
-
} & {};
|
|
72
|
-
/**
|
|
73
|
-
* Make `T` exactly `T`.
|
|
74
|
-
*
|
|
75
|
-
* @internal
|
|
76
|
-
*/
|
|
77
|
-
type Exactify<T, U extends T> = T & {
|
|
78
|
-
[K in keyof U]: K extends keyof T ? U[K] : never;
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* A unit without any meta data.
|
|
83
|
-
*
|
|
84
|
-
* @group Abstract Unit Generators
|
|
85
|
-
*/
|
|
86
|
-
type AbstractUnit<C extends UnitSubvalues> = number & {
|
|
87
|
-
readonly __uom_types__unit_class: UnitClass<C>;
|
|
88
|
-
};
|
|
89
|
-
/**
|
|
90
|
-
* Create a unit without meta data from an already existing {@link UnitClass}.
|
|
91
|
-
*
|
|
92
|
-
* @group Abstract Unit Generators
|
|
93
|
-
*/
|
|
94
|
-
type AbstractUnitFrom<C extends UnknownUnitClass> = C extends UnitClass<infer A> ? AbstractUnit<UnitSubvalues extends A ? {} : A> : never;
|
|
95
|
-
/**
|
|
96
|
-
* The core unit type.
|
|
97
|
-
*
|
|
98
|
-
* @group Unit Generators
|
|
99
|
-
*/
|
|
100
|
-
type Unit<C extends UnitSubvalues, M extends UnitSubvalues = {}> = number & {
|
|
101
|
-
readonly __uom_types__unit_class: UnitClass<C>;
|
|
102
|
-
readonly __uom_types__unit_meta: UnitMeta<M>;
|
|
103
|
-
};
|
|
104
|
-
/**
|
|
105
|
-
* Create a {@link Unit} from already existing {@link UnitClass} and {@link UnitMeta}.
|
|
106
|
-
*
|
|
107
|
-
* @group Unit Generators
|
|
108
|
-
*/
|
|
109
|
-
type UnitFrom<C extends UnknownUnitClass, M extends UnknownUnitMeta = UnitMeta<{}>> = C extends UnitClass<infer A> ? M extends UnitMeta<infer B> ? Unit<A, B> : never : never;
|
|
110
|
-
/**
|
|
111
|
-
* A {@link Unit} without any {@link UnitClass}.
|
|
112
|
-
*
|
|
113
|
-
* Used to convert from one {@link Unit} to another of the same {@link UnitClass}.
|
|
114
|
-
*
|
|
115
|
-
* @group Unit Generators
|
|
116
|
-
*/
|
|
117
|
-
type UnitConversionRate<M extends UnitSubvalues> = number & {
|
|
118
|
-
readonly __uom_types__unit_meta: UnitMeta<M>;
|
|
119
|
-
};
|
|
120
|
-
/**
|
|
121
|
-
* Create a {@link UnitConversionRate} from already existing {@link UnitMeta}.
|
|
122
|
-
*
|
|
123
|
-
* @group Unit Generators
|
|
124
|
-
*/
|
|
125
|
-
type UnitConversionRateFrom<M extends UnknownUnitMeta> = M extends UnitMeta<infer A> ? UnitConversionRate<A> : never;
|
|
126
|
-
/**
|
|
127
|
-
* Used to determine what a unit is of. For example, length, volume, mass etc.
|
|
128
|
-
*
|
|
129
|
-
* @group Unit Components
|
|
130
|
-
*/
|
|
131
|
-
type UnitClass<T extends UnitSubvalues> = UnitKeyValues<T> & {
|
|
132
|
-
readonly __uno_types__unit_class_type: true;
|
|
133
|
-
};
|
|
134
|
-
/**
|
|
135
|
-
* Used to state how units of the same {@link UnitClass} differ from one another.
|
|
136
|
-
* For example, by a scale factor.
|
|
137
|
-
*
|
|
138
|
-
* @group Unit Components
|
|
139
|
-
*/
|
|
140
|
-
type UnitMeta<T extends UnitSubvalues> = UnitKeyValues<T> & {
|
|
141
|
-
readonly __uno_types__unit_meta_type: true;
|
|
142
|
-
};
|
|
143
|
-
/**
|
|
144
|
-
* A {@link Unit} that we don't know anything about.
|
|
145
|
-
*
|
|
146
|
-
* @group Unknown Units
|
|
147
|
-
*/
|
|
148
|
-
type UnknownUnit = UnknownAbstractUnit & {
|
|
149
|
-
readonly __uom_types__unit_meta: UnknownUnitMeta;
|
|
150
|
-
};
|
|
151
|
-
/**
|
|
152
|
-
* An {@link AbstractUnit} that we don't know anything about.
|
|
153
|
-
*
|
|
154
|
-
* @group Unknown Units
|
|
155
|
-
*/
|
|
156
|
-
type UnknownAbstractUnit = number & {
|
|
157
|
-
readonly __uom_types__unit_class: UnknownUnitClass;
|
|
158
|
-
};
|
|
159
|
-
/**
|
|
160
|
-
* An {@link UnitConversionRate} that we don't know anything about.
|
|
161
|
-
*
|
|
162
|
-
* @group Unknown Units
|
|
163
|
-
*/
|
|
164
|
-
type UnknownUnitConversionRate = number & {
|
|
165
|
-
readonly __uom_types__unit_meta: UnknownUnitMeta;
|
|
166
|
-
};
|
|
167
|
-
/**
|
|
168
|
-
* A {@link UnitClass} that we don't know anything about.
|
|
169
|
-
*
|
|
170
|
-
* @group Unknown Units
|
|
171
|
-
*/
|
|
172
|
-
type UnknownUnitClass = UnknownUnitKeyValues & {
|
|
173
|
-
readonly __uno_types__unit_class_type: true;
|
|
174
|
-
};
|
|
175
|
-
/**
|
|
176
|
-
* A {@link UnitMeta} that we don't know anything about.
|
|
177
|
-
*
|
|
178
|
-
* @group Unknown Units
|
|
179
|
-
*/
|
|
180
|
-
type UnknownUnitMeta = UnknownUnitKeyValues & {
|
|
181
|
-
readonly __uno_types__unit_meta_type: true;
|
|
182
|
-
};
|
|
183
|
-
type UnitKeyValues<T extends UnitSubvalues> = {
|
|
184
|
-
readonly __uom_types__keys: keyof ExcludeUnitZeroSubvalues<T> extends string ? keyof ExcludeUnitZeroSubvalues<T> : never;
|
|
185
|
-
readonly __uom_types__value: RemoveNeverValues<T>;
|
|
186
|
-
};
|
|
187
|
-
type UnknownUnitKeyValues = {
|
|
188
|
-
readonly __uom_types__keys: string;
|
|
189
|
-
readonly __uom_types__value: {};
|
|
190
|
-
};
|
|
191
|
-
/**
|
|
192
|
-
* A mapping of subvalue of a unit its magnitude.
|
|
193
|
-
*
|
|
194
|
-
* @group Unit Components
|
|
195
|
-
*/
|
|
196
|
-
type UnitSubvalues = Record<string, Exponent>;
|
|
197
|
-
|
|
198
|
-
/**
|
|
199
|
-
* Take the inverse of a unit.
|
|
200
|
-
*
|
|
201
|
-
* @group Unit Functions
|
|
202
|
-
* @returns `1/X`.
|
|
203
|
-
*/
|
|
204
|
-
type Inverse<X extends number> = Pow<X, -1>;
|
|
205
|
-
/**
|
|
206
|
-
* Inverses each of the subvalues.
|
|
207
|
-
*
|
|
208
|
-
* @group Unit Subvalue Functions
|
|
209
|
-
*/
|
|
210
|
-
type InverseUnitSubvalues<T extends UnitSubvalues> = PowUnitSubvalues<T, -1>;
|
|
211
|
-
/**
|
|
212
|
-
* Multiply a unit by another unit.
|
|
213
|
-
*
|
|
214
|
-
* @group Unit Functions
|
|
215
|
-
* @returns `A⋅B`
|
|
216
|
-
*/
|
|
217
|
-
type Multiply<A extends number, B extends number> = A extends UnknownUnit ? MultiplyHelperUnit<A, B> : B extends UnknownUnit ? MultiplyHelperUnit<B, A> : A extends UnknownAbstractUnit ? MultiplyHelperAbstractUnit<A, B> : B extends UnknownAbstractUnit ? MultiplyHelperAbstractUnit<B, A> : A extends UnknownUnitConversionRate ? MultiplyHelperUnitConversionRate<A, B> : B extends UnknownUnitConversionRate ? MultiplyHelperUnitConversionRate<B, A> : number;
|
|
218
|
-
/**
|
|
219
|
-
* Multiple a Unit by a Unit, AbstractUnit, UnitConversionRate or number
|
|
220
|
-
*
|
|
221
|
-
* @internal
|
|
222
|
-
*/
|
|
223
|
-
type MultiplyHelperUnit<A extends UnknownUnit, B extends number> = A extends Unit<infer AClass, infer AMeta> ? B extends Unit<infer BClass, infer BMeta> ? Unit<FlatternAlias<MultiplyUnitSubvalues<AClass, BClass>>, FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : B extends AbstractUnit<infer BClass> ? Unit<FlatternAlias<MultiplyUnitSubvalues<AClass, BClass>>, AMeta> : B extends UnitConversionRate<infer BMeta> ? Unit<AClass, FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : A : never;
|
|
224
|
-
/**
|
|
225
|
-
* Multiple an AbstractUnit by an AbstractUnit, UnitConversionRate or number
|
|
226
|
-
*
|
|
227
|
-
* @internal
|
|
228
|
-
*/
|
|
229
|
-
type MultiplyHelperAbstractUnit<A extends UnknownAbstractUnit, B extends number> = A extends AbstractUnit<infer AClass> ? B extends AbstractUnit<infer BClass> ? AbstractUnit<FlatternAlias<MultiplyUnitSubvalues<AClass, BClass>>> : B extends UnitConversionRate<infer BMeta> ? Unit<AClass, BMeta> : A : never;
|
|
230
|
-
/**
|
|
231
|
-
* Multiple an UnitConversionRate by a UnitConversionRate or number
|
|
232
|
-
*
|
|
233
|
-
* @internal
|
|
234
|
-
*/
|
|
235
|
-
type MultiplyHelperUnitConversionRate<A extends UnknownUnitConversionRate, B extends number> = A extends UnitConversionRate<infer AMeta> ? B extends UnitConversionRate<infer BMeta> ? UnitConversionRate<FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : A : never;
|
|
236
|
-
/**
|
|
237
|
-
* Multiply each of the subvalues from a unit with the corresponding once from another unit.
|
|
238
|
-
*
|
|
239
|
-
* @group Unit Subvalue Functions
|
|
240
|
-
*/
|
|
241
|
-
type MultiplyUnitSubvalues<A extends UnitSubvalues, B extends UnitSubvalues> = ExcludeUnitZeroSubvalues<{
|
|
242
|
-
[S in keyof A | keyof B]: SumExponents<GetExponent<A, S>, GetExponent<B, S>>;
|
|
243
|
-
}>;
|
|
244
|
-
/**
|
|
245
|
-
* Divide a unit by another unit.
|
|
246
|
-
*
|
|
247
|
-
* @group Unit Functions
|
|
248
|
-
* @returns `A/B`
|
|
249
|
-
*/
|
|
250
|
-
type Divide<A extends number, B extends number> = Multiply<A, Inverse<B>>;
|
|
251
|
-
/**
|
|
252
|
-
* Divide each of the subvalues from a unit with the corresponding once from another unit.
|
|
253
|
-
*
|
|
254
|
-
* @group Unit Subvalue Functions
|
|
255
|
-
*/
|
|
256
|
-
type DivideUnitSubvalues<A extends UnitSubvalues, B extends UnitSubvalues> = MultiplyUnitSubvalues<A, InverseUnitSubvalues<B>>;
|
|
257
|
-
/**
|
|
258
|
-
* Put a unit to the power of an exponent.
|
|
259
|
-
*
|
|
260
|
-
* @group Unit Functions
|
|
261
|
-
*/
|
|
262
|
-
type Pow<T extends number, N extends Exponent> = T extends Unit<infer Class, infer Meta> ? Unit<FlatternAlias<PowUnitSubvalues<Class, N>>, FlatternAlias<PowUnitSubvalues<Meta, N>>> : T extends AbstractUnit<infer Class> ? AbstractUnit<FlatternAlias<PowUnitSubvalues<Class, N>>> : T extends UnitConversionRate<infer Meta> ? UnitConversionRate<FlatternAlias<PowUnitSubvalues<Meta, N>>> : number;
|
|
263
|
-
/**
|
|
264
|
-
* Put each subvalue of a unit to the power of an exponent.
|
|
265
|
-
*
|
|
266
|
-
* @group Unit Subvalue Functions
|
|
267
|
-
*/
|
|
268
|
-
type PowUnitSubvalues<T extends UnitSubvalues, E extends Exponent> = ExcludeUnitZeroSubvalues<{
|
|
269
|
-
[S in keyof T]: MultiplyExponents<GetExponent<T, S>, E>;
|
|
270
|
-
}>;
|
|
271
|
-
/**
|
|
272
|
-
* Take the nth root of a unit.
|
|
273
|
-
*
|
|
274
|
-
* @group Unit Functions
|
|
275
|
-
*/
|
|
276
|
-
type Root<T extends number, N extends Exponent> = T extends Unit<infer Class, infer Meta> ? Unit<FlatternAlias<RootUnitSubvalues<Class, N>>, FlatternAlias<RootUnitSubvalues<Meta, N>>> : T extends AbstractUnit<infer Class> ? AbstractUnit<FlatternAlias<RootUnitSubvalues<Class, N>>> : T extends UnitConversionRate<infer Meta> ? UnitConversionRate<FlatternAlias<RootUnitSubvalues<Meta, N>>> : number;
|
|
277
|
-
/**
|
|
278
|
-
* Take the nth root of each subvalue of a unit.
|
|
279
|
-
*
|
|
280
|
-
* @group Unit Subvalue Functions
|
|
281
|
-
*/
|
|
282
|
-
type RootUnitSubvalues<T extends UnitSubvalues, E extends Exponent> = ExcludeUnitZeroSubvalues<{
|
|
283
|
-
[S in keyof T]: DivideExponents<GetExponent<T, S>, E>;
|
|
284
|
-
}>;
|
|
285
|
-
|
|
286
|
-
export { AbstractUnit as A, DivideExponents as D, Exponent as E, Inverse as I, MultiplyExponents as M, NegateExponent as N, Pow as P, Root as R, SubExponents as S, Unit as U, AbstractUnitFrom as a, UnitClass as b, UnitConversionRate as c, UnitConversionRateFrom as d, UnitFrom as e, UnitMeta as f, UnitSubvalues as g, UnknownAbstractUnit as h, UnknownUnit as i, UnknownUnitClass as j, UnknownUnitConversionRate as k, UnknownUnitMeta as l, NegativeExponent as m, NegExponent as n, PosExponent as o, SumExponents as p, Divide as q, DivideUnitSubvalues as r, InverseUnitSubvalues as s, Multiply as t, MultiplyUnitSubvalues as u, PowUnitSubvalues as v, RootUnitSubvalues as w, Exactify as x };
|