uom-types 3.1.0 → 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 -482
- package/dist/_time-duration.d.mts +0 -482
- package/dist/_units.d.cts +0 -258
- package/dist/_units.d.mts +0 -258
- 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,258 +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<UnitSubvalues extends A ? {} : A, UnitSubvalues extends B ? {} : 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> = Unit<{}, M>;
|
|
118
|
-
/**
|
|
119
|
-
* Create a {@link UnitConversionRate} from already existing {@link UnitMeta}.
|
|
120
|
-
*
|
|
121
|
-
* @group Unit Generators
|
|
122
|
-
*/
|
|
123
|
-
type UnitConversionRateFrom<M extends UnknownUnitMeta> = M extends UnitMeta<infer A> ? UnitConversionRate<UnitSubvalues extends A ? {} : A> : never;
|
|
124
|
-
/**
|
|
125
|
-
* Used to determine what a unit is of. For example, length, volume, mass etc.
|
|
126
|
-
*
|
|
127
|
-
* @group Unit Components
|
|
128
|
-
*/
|
|
129
|
-
type UnitClass<T extends UnitSubvalues> = UnitKeyValues<T> & {
|
|
130
|
-
readonly __uno_types__unit_class_type: true;
|
|
131
|
-
};
|
|
132
|
-
/**
|
|
133
|
-
* Used to state how units of the same {@link UnitClass} differ from one another.
|
|
134
|
-
* For example, by a scale factor.
|
|
135
|
-
*
|
|
136
|
-
* @group Unit Components
|
|
137
|
-
*/
|
|
138
|
-
type UnitMeta<T extends UnitSubvalues> = UnitKeyValues<T> & {
|
|
139
|
-
readonly __uno_types__unit_meta_type: true;
|
|
140
|
-
};
|
|
141
|
-
/**
|
|
142
|
-
* A {@link Unit} that we don't know anything about.
|
|
143
|
-
*
|
|
144
|
-
* @group Unknown Units
|
|
145
|
-
*/
|
|
146
|
-
type UnknownUnit = UnknownAbstractUnit & {
|
|
147
|
-
readonly __uom_types__unit_meta: UnknownUnitMeta;
|
|
148
|
-
};
|
|
149
|
-
/**
|
|
150
|
-
* An {@link AbstractUnit} that we don't know anything about.
|
|
151
|
-
*
|
|
152
|
-
* @group Unknown Units
|
|
153
|
-
*/
|
|
154
|
-
type UnknownAbstractUnit = number & {
|
|
155
|
-
readonly __uom_types__unit_class: UnknownUnitClass;
|
|
156
|
-
};
|
|
157
|
-
/**
|
|
158
|
-
* A {@link UnitClass} that we don't know anything about.
|
|
159
|
-
*
|
|
160
|
-
* @group Unknown Units
|
|
161
|
-
*/
|
|
162
|
-
type UnknownUnitClass = UnknownUnitKeyValues & {
|
|
163
|
-
readonly __uno_types__unit_class_type: true;
|
|
164
|
-
};
|
|
165
|
-
/**
|
|
166
|
-
* A {@link UnitMeta} that we don't know anything about.
|
|
167
|
-
*
|
|
168
|
-
* @group Unknown Units
|
|
169
|
-
*/
|
|
170
|
-
type UnknownUnitMeta = UnknownUnitKeyValues & {
|
|
171
|
-
readonly __uno_types__unit_meta_type: true;
|
|
172
|
-
};
|
|
173
|
-
type UnitKeyValues<T extends UnitSubvalues> = {
|
|
174
|
-
readonly __uom_types__keys: keyof ExcludeUnitZeroSubvalues<T> extends string ? keyof ExcludeUnitZeroSubvalues<T> : never;
|
|
175
|
-
readonly __uom_types__value: RemoveNeverValues<T>;
|
|
176
|
-
};
|
|
177
|
-
type UnknownUnitKeyValues = {
|
|
178
|
-
readonly __uom_types__keys: string;
|
|
179
|
-
readonly __uom_types__value: {};
|
|
180
|
-
};
|
|
181
|
-
/**
|
|
182
|
-
* A mapping of subvalue of a unit its magnitude.
|
|
183
|
-
*
|
|
184
|
-
* @group Unit Components
|
|
185
|
-
*/
|
|
186
|
-
type UnitSubvalues = Record<string, Exponent>;
|
|
187
|
-
|
|
188
|
-
/**
|
|
189
|
-
* Take the inverse of a unit.
|
|
190
|
-
*
|
|
191
|
-
* @group Unit Functions
|
|
192
|
-
* @returns `1/X`.
|
|
193
|
-
*/
|
|
194
|
-
type Inverse<X extends number> = Pow<X, -1>;
|
|
195
|
-
/**
|
|
196
|
-
* Inverses each of the subvalues.
|
|
197
|
-
*
|
|
198
|
-
* @group Unit Subvalue Functions
|
|
199
|
-
*/
|
|
200
|
-
type InverseUnitSubvalues<T extends UnitSubvalues> = PowUnitSubvalues<T, -1>;
|
|
201
|
-
/**
|
|
202
|
-
* Multiply a unit by another unit.
|
|
203
|
-
*
|
|
204
|
-
* @group Unit Functions
|
|
205
|
-
* @returns `A⋅B`
|
|
206
|
-
*/
|
|
207
|
-
type Multiply<A extends number, B extends number> = A extends Unit<infer AConfig, infer AMeta> ? B extends Unit<infer BConfig, infer BMeta> ? Unit<FlatternAlias<MultiplyUnitSubvalues<AConfig, BConfig>>, FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : B extends UnknownAbstractUnit ? never : A : B extends UnknownUnit ? A extends UnknownAbstractUnit ? never : B : A extends AbstractUnit<infer AConfig> ? B extends AbstractUnit<infer BConfig> ? AbstractUnit<FlatternAlias<MultiplyUnitSubvalues<AConfig, BConfig>>> : A : B extends UnknownAbstractUnit ? B : number;
|
|
208
|
-
/**
|
|
209
|
-
* Multiply each of the subvalues from a unit with the corresponding once from another unit.
|
|
210
|
-
*
|
|
211
|
-
* @group Unit Subvalue Functions
|
|
212
|
-
*/
|
|
213
|
-
type MultiplyUnitSubvalues<A extends UnitSubvalues, B extends UnitSubvalues> = ExcludeUnitZeroSubvalues<{
|
|
214
|
-
[S in keyof A | keyof B]: SumExponents<GetExponent<A, S>, GetExponent<B, S>>;
|
|
215
|
-
}>;
|
|
216
|
-
/**
|
|
217
|
-
* Divide a unit by another unit.
|
|
218
|
-
*
|
|
219
|
-
* @group Unit Functions
|
|
220
|
-
* @returns `A/B`
|
|
221
|
-
*/
|
|
222
|
-
type Divide<A extends number, B extends number> = Multiply<A, Inverse<B>>;
|
|
223
|
-
/**
|
|
224
|
-
* Divide each of the subvalues from a unit with the corresponding once from another unit.
|
|
225
|
-
*
|
|
226
|
-
* @group Unit Subvalue Functions
|
|
227
|
-
*/
|
|
228
|
-
type DivideUnitSubvalues<A extends UnitSubvalues, B extends UnitSubvalues> = MultiplyUnitSubvalues<A, InverseUnitSubvalues<B>>;
|
|
229
|
-
/**
|
|
230
|
-
* Put a unit to the power of an exponent.
|
|
231
|
-
*
|
|
232
|
-
* @group Unit Functions
|
|
233
|
-
*/
|
|
234
|
-
type Pow<T extends number, N extends Exponent> = T extends Unit<infer Config, infer Meta> ? Unit<FlatternAlias<PowUnitSubvalues<Config, N>>, FlatternAlias<PowUnitSubvalues<Meta, N>>> : T extends AbstractUnit<infer Config> ? AbstractUnit<FlatternAlias<PowUnitSubvalues<Config, N>>> : number;
|
|
235
|
-
/**
|
|
236
|
-
* Put each subvalue of a unit to the power of an exponent.
|
|
237
|
-
*
|
|
238
|
-
* @group Unit Subvalue Functions
|
|
239
|
-
*/
|
|
240
|
-
type PowUnitSubvalues<T extends UnitSubvalues, E extends Exponent> = ExcludeUnitZeroSubvalues<{
|
|
241
|
-
[S in keyof T]: MultiplyExponents<GetExponent<T, S>, E>;
|
|
242
|
-
}>;
|
|
243
|
-
/**
|
|
244
|
-
* Take the nth root of a unit.
|
|
245
|
-
*
|
|
246
|
-
* @group Unit Functions
|
|
247
|
-
*/
|
|
248
|
-
type Root<T extends number, N extends Exponent> = T extends Unit<infer Config, infer Meta> ? Unit<FlatternAlias<RootUnitSubvalues<Config, N>>, FlatternAlias<RootUnitSubvalues<Meta, N>>> : T extends AbstractUnit<infer Config> ? AbstractUnit<FlatternAlias<RootUnitSubvalues<Config, N>>> : number;
|
|
249
|
-
/**
|
|
250
|
-
* Take the nth root of each subvalue of a unit.
|
|
251
|
-
*
|
|
252
|
-
* @group Unit Subvalue Functions
|
|
253
|
-
*/
|
|
254
|
-
type RootUnitSubvalues<T extends UnitSubvalues, E extends Exponent> = ExcludeUnitZeroSubvalues<{
|
|
255
|
-
[S in keyof T]: DivideExponents<GetExponent<T, S>, E>;
|
|
256
|
-
}>;
|
|
257
|
-
|
|
258
|
-
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, UnknownUnitMeta as k, NegativeExponent as l, NegExponent as m, PosExponent as n, SumExponents as o, Divide as p, DivideUnitSubvalues as q, InverseUnitSubvalues as r, Multiply as s, MultiplyUnitSubvalues as t, PowUnitSubvalues as u, RootUnitSubvalues as v, Exactify as w };
|
package/dist/_units.d.mts
DELETED
|
@@ -1,258 +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<UnitSubvalues extends A ? {} : A, UnitSubvalues extends B ? {} : 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> = Unit<{}, M>;
|
|
118
|
-
/**
|
|
119
|
-
* Create a {@link UnitConversionRate} from already existing {@link UnitMeta}.
|
|
120
|
-
*
|
|
121
|
-
* @group Unit Generators
|
|
122
|
-
*/
|
|
123
|
-
type UnitConversionRateFrom<M extends UnknownUnitMeta> = M extends UnitMeta<infer A> ? UnitConversionRate<UnitSubvalues extends A ? {} : A> : never;
|
|
124
|
-
/**
|
|
125
|
-
* Used to determine what a unit is of. For example, length, volume, mass etc.
|
|
126
|
-
*
|
|
127
|
-
* @group Unit Components
|
|
128
|
-
*/
|
|
129
|
-
type UnitClass<T extends UnitSubvalues> = UnitKeyValues<T> & {
|
|
130
|
-
readonly __uno_types__unit_class_type: true;
|
|
131
|
-
};
|
|
132
|
-
/**
|
|
133
|
-
* Used to state how units of the same {@link UnitClass} differ from one another.
|
|
134
|
-
* For example, by a scale factor.
|
|
135
|
-
*
|
|
136
|
-
* @group Unit Components
|
|
137
|
-
*/
|
|
138
|
-
type UnitMeta<T extends UnitSubvalues> = UnitKeyValues<T> & {
|
|
139
|
-
readonly __uno_types__unit_meta_type: true;
|
|
140
|
-
};
|
|
141
|
-
/**
|
|
142
|
-
* A {@link Unit} that we don't know anything about.
|
|
143
|
-
*
|
|
144
|
-
* @group Unknown Units
|
|
145
|
-
*/
|
|
146
|
-
type UnknownUnit = UnknownAbstractUnit & {
|
|
147
|
-
readonly __uom_types__unit_meta: UnknownUnitMeta;
|
|
148
|
-
};
|
|
149
|
-
/**
|
|
150
|
-
* An {@link AbstractUnit} that we don't know anything about.
|
|
151
|
-
*
|
|
152
|
-
* @group Unknown Units
|
|
153
|
-
*/
|
|
154
|
-
type UnknownAbstractUnit = number & {
|
|
155
|
-
readonly __uom_types__unit_class: UnknownUnitClass;
|
|
156
|
-
};
|
|
157
|
-
/**
|
|
158
|
-
* A {@link UnitClass} that we don't know anything about.
|
|
159
|
-
*
|
|
160
|
-
* @group Unknown Units
|
|
161
|
-
*/
|
|
162
|
-
type UnknownUnitClass = UnknownUnitKeyValues & {
|
|
163
|
-
readonly __uno_types__unit_class_type: true;
|
|
164
|
-
};
|
|
165
|
-
/**
|
|
166
|
-
* A {@link UnitMeta} that we don't know anything about.
|
|
167
|
-
*
|
|
168
|
-
* @group Unknown Units
|
|
169
|
-
*/
|
|
170
|
-
type UnknownUnitMeta = UnknownUnitKeyValues & {
|
|
171
|
-
readonly __uno_types__unit_meta_type: true;
|
|
172
|
-
};
|
|
173
|
-
type UnitKeyValues<T extends UnitSubvalues> = {
|
|
174
|
-
readonly __uom_types__keys: keyof ExcludeUnitZeroSubvalues<T> extends string ? keyof ExcludeUnitZeroSubvalues<T> : never;
|
|
175
|
-
readonly __uom_types__value: RemoveNeverValues<T>;
|
|
176
|
-
};
|
|
177
|
-
type UnknownUnitKeyValues = {
|
|
178
|
-
readonly __uom_types__keys: string;
|
|
179
|
-
readonly __uom_types__value: {};
|
|
180
|
-
};
|
|
181
|
-
/**
|
|
182
|
-
* A mapping of subvalue of a unit its magnitude.
|
|
183
|
-
*
|
|
184
|
-
* @group Unit Components
|
|
185
|
-
*/
|
|
186
|
-
type UnitSubvalues = Record<string, Exponent>;
|
|
187
|
-
|
|
188
|
-
/**
|
|
189
|
-
* Take the inverse of a unit.
|
|
190
|
-
*
|
|
191
|
-
* @group Unit Functions
|
|
192
|
-
* @returns `1/X`.
|
|
193
|
-
*/
|
|
194
|
-
type Inverse<X extends number> = Pow<X, -1>;
|
|
195
|
-
/**
|
|
196
|
-
* Inverses each of the subvalues.
|
|
197
|
-
*
|
|
198
|
-
* @group Unit Subvalue Functions
|
|
199
|
-
*/
|
|
200
|
-
type InverseUnitSubvalues<T extends UnitSubvalues> = PowUnitSubvalues<T, -1>;
|
|
201
|
-
/**
|
|
202
|
-
* Multiply a unit by another unit.
|
|
203
|
-
*
|
|
204
|
-
* @group Unit Functions
|
|
205
|
-
* @returns `A⋅B`
|
|
206
|
-
*/
|
|
207
|
-
type Multiply<A extends number, B extends number> = A extends Unit<infer AConfig, infer AMeta> ? B extends Unit<infer BConfig, infer BMeta> ? Unit<FlatternAlias<MultiplyUnitSubvalues<AConfig, BConfig>>, FlatternAlias<MultiplyUnitSubvalues<AMeta, BMeta>>> : B extends UnknownAbstractUnit ? never : A : B extends UnknownUnit ? A extends UnknownAbstractUnit ? never : B : A extends AbstractUnit<infer AConfig> ? B extends AbstractUnit<infer BConfig> ? AbstractUnit<FlatternAlias<MultiplyUnitSubvalues<AConfig, BConfig>>> : A : B extends UnknownAbstractUnit ? B : number;
|
|
208
|
-
/**
|
|
209
|
-
* Multiply each of the subvalues from a unit with the corresponding once from another unit.
|
|
210
|
-
*
|
|
211
|
-
* @group Unit Subvalue Functions
|
|
212
|
-
*/
|
|
213
|
-
type MultiplyUnitSubvalues<A extends UnitSubvalues, B extends UnitSubvalues> = ExcludeUnitZeroSubvalues<{
|
|
214
|
-
[S in keyof A | keyof B]: SumExponents<GetExponent<A, S>, GetExponent<B, S>>;
|
|
215
|
-
}>;
|
|
216
|
-
/**
|
|
217
|
-
* Divide a unit by another unit.
|
|
218
|
-
*
|
|
219
|
-
* @group Unit Functions
|
|
220
|
-
* @returns `A/B`
|
|
221
|
-
*/
|
|
222
|
-
type Divide<A extends number, B extends number> = Multiply<A, Inverse<B>>;
|
|
223
|
-
/**
|
|
224
|
-
* Divide each of the subvalues from a unit with the corresponding once from another unit.
|
|
225
|
-
*
|
|
226
|
-
* @group Unit Subvalue Functions
|
|
227
|
-
*/
|
|
228
|
-
type DivideUnitSubvalues<A extends UnitSubvalues, B extends UnitSubvalues> = MultiplyUnitSubvalues<A, InverseUnitSubvalues<B>>;
|
|
229
|
-
/**
|
|
230
|
-
* Put a unit to the power of an exponent.
|
|
231
|
-
*
|
|
232
|
-
* @group Unit Functions
|
|
233
|
-
*/
|
|
234
|
-
type Pow<T extends number, N extends Exponent> = T extends Unit<infer Config, infer Meta> ? Unit<FlatternAlias<PowUnitSubvalues<Config, N>>, FlatternAlias<PowUnitSubvalues<Meta, N>>> : T extends AbstractUnit<infer Config> ? AbstractUnit<FlatternAlias<PowUnitSubvalues<Config, N>>> : number;
|
|
235
|
-
/**
|
|
236
|
-
* Put each subvalue of a unit to the power of an exponent.
|
|
237
|
-
*
|
|
238
|
-
* @group Unit Subvalue Functions
|
|
239
|
-
*/
|
|
240
|
-
type PowUnitSubvalues<T extends UnitSubvalues, E extends Exponent> = ExcludeUnitZeroSubvalues<{
|
|
241
|
-
[S in keyof T]: MultiplyExponents<GetExponent<T, S>, E>;
|
|
242
|
-
}>;
|
|
243
|
-
/**
|
|
244
|
-
* Take the nth root of a unit.
|
|
245
|
-
*
|
|
246
|
-
* @group Unit Functions
|
|
247
|
-
*/
|
|
248
|
-
type Root<T extends number, N extends Exponent> = T extends Unit<infer Config, infer Meta> ? Unit<FlatternAlias<RootUnitSubvalues<Config, N>>, FlatternAlias<RootUnitSubvalues<Meta, N>>> : T extends AbstractUnit<infer Config> ? AbstractUnit<FlatternAlias<RootUnitSubvalues<Config, N>>> : number;
|
|
249
|
-
/**
|
|
250
|
-
* Take the nth root of each subvalue of a unit.
|
|
251
|
-
*
|
|
252
|
-
* @group Unit Subvalue Functions
|
|
253
|
-
*/
|
|
254
|
-
type RootUnitSubvalues<T extends UnitSubvalues, E extends Exponent> = ExcludeUnitZeroSubvalues<{
|
|
255
|
-
[S in keyof T]: DivideExponents<GetExponent<T, S>, E>;
|
|
256
|
-
}>;
|
|
257
|
-
|
|
258
|
-
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, UnknownUnitMeta as k, NegativeExponent as l, NegExponent as m, PosExponent as n, SumExponents as o, Divide as p, DivideUnitSubvalues as q, InverseUnitSubvalues as r, Multiply as s, MultiplyUnitSubvalues as t, PowUnitSubvalues as u, RootUnitSubvalues as v, Exactify as w };
|