uom-types 3.0.1 → 3.1.1
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/dist/_angle-plane.d.cts +1 -1
- package/dist/_angle-plane.d.mts +1 -1
- package/dist/_identity.d.cts +1 -1
- package/dist/_identity.d.mts +1 -1
- package/dist/_time-duration.d.cts +9 -10
- package/dist/_time-duration.d.mts +9 -10
- package/dist/{_index.d.cts → _units.d.cts} +81 -30
- package/dist/{_index.d.mts → _units.d.mts} +81 -30
- package/dist/functions-higher-order.cjs +9 -0
- package/dist/functions-higher-order.d.cts +10 -3
- package/dist/functions-higher-order.d.mts +10 -3
- package/dist/functions-higher-order.mjs +9 -1
- package/dist/functions.cjs +10 -1
- package/dist/functions.d.cts +8 -38
- package/dist/functions.d.mts +8 -38
- package/dist/functions.mjs +10 -2
- package/dist/index.d.cts +17 -1
- package/dist/index.d.mts +17 -1
- package/dist/units-converters.d.cts +8 -8
- package/dist/units-converters.d.mts +8 -8
- package/dist/units.d.cts +19 -19
- package/dist/units.d.mts +19 -19
- package/package.json +2 -3
package/dist/_angle-plane.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { x as Exactify, b as UnitClass, E as Exponent, a as AbstractUnitFrom, g as UnitSubvalues, f as UnitMeta, l as UnknownUnitMeta, e as UnitFrom } from './_units.cjs';
|
|
2
2
|
|
|
3
3
|
type SiUnitKeys = "Second" | "Metre" | "Kilogram" | "Mole" | "Ampere" | "Candela" | "Kelvin" | "Radian";
|
|
4
4
|
/**
|
package/dist/_angle-plane.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { x as Exactify, b as UnitClass, E as Exponent, a as AbstractUnitFrom, g as UnitSubvalues, f as UnitMeta, l as UnknownUnitMeta, e as UnitFrom } from './_units.mjs';
|
|
2
2
|
|
|
3
3
|
type SiUnitKeys = "Second" | "Metre" | "Kilogram" | "Mole" | "Ampere" | "Candela" | "Kelvin" | "Radian";
|
|
4
4
|
/**
|
package/dist/_identity.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as AbstractUnitFrom, g as UnitSubvalues, f as UnitMeta, l as UnknownUnitMeta, e as UnitFrom } from './_units.cjs';
|
|
2
2
|
import { B as BaseUnitClass } from './_angle-plane.cjs';
|
|
3
3
|
|
|
4
4
|
/**
|
package/dist/_identity.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as AbstractUnitFrom, g as UnitSubvalues, f as UnitMeta, l as UnknownUnitMeta, e as UnitFrom } from './_units.mjs';
|
|
2
2
|
import { B as BaseUnitClass } from './_angle-plane.mjs';
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { i as UnknownUnit, h as UnknownAbstractUnit, k as UnknownUnitConversionRate, j as UnknownUnitClass, l as UnknownUnitMeta, P as Pow, b as UnitClass, v as PowUnitSubvalues, f as UnitMeta, I as Inverse, s as InverseUnitSubvalues, g as UnitSubvalues, e as UnitFrom, a as AbstractUnitFrom } from './_units.cjs';
|
|
2
2
|
import { B as BaseUnitClass } from './_angle-plane.cjs';
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -6,19 +6,19 @@ import { B as BaseUnitClass } from './_angle-plane.cjs';
|
|
|
6
6
|
*
|
|
7
7
|
* @group Modifiers
|
|
8
8
|
* @category General
|
|
9
|
-
* @see {@link
|
|
9
|
+
* @see {@link Pow}
|
|
10
10
|
* @see {@link Cubic}
|
|
11
11
|
*/
|
|
12
|
-
type Square<T extends UnknownAbstractUnit |
|
|
12
|
+
type Square<T extends UnknownUnit | UnknownAbstractUnit | UnknownUnitConversionRate | UnknownUnitClass | UnknownUnitMeta> = T extends number ? Pow<T, 2> : T extends UnknownUnitClass ? UnitClass<PowUnitSubvalues<T["__uom_types__value"], 2>> : T extends UnknownUnitMeta ? UnitMeta<PowUnitSubvalues<T["__uom_types__value"], 2>> : never;
|
|
13
13
|
/**
|
|
14
14
|
* Put the given {@link Unit} to the power of 3.
|
|
15
15
|
*
|
|
16
16
|
* @group Modifiers
|
|
17
17
|
* @category General
|
|
18
|
-
* @see {@link
|
|
18
|
+
* @see {@link Pow}
|
|
19
19
|
* @see {@link Square}
|
|
20
20
|
*/
|
|
21
|
-
type Cubic<T extends UnknownAbstractUnit |
|
|
21
|
+
type Cubic<T extends UnknownUnit | UnknownAbstractUnit | UnknownUnitConversionRate | UnknownUnitClass | UnknownUnitMeta> = T extends number ? Pow<T, 3> : T extends UnknownUnitClass ? UnitClass<PowUnitSubvalues<T["__uom_types__value"], 3>> : T extends UnknownUnitMeta ? UnitMeta<PowUnitSubvalues<T["__uom_types__value"], 3>> : never;
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
24
|
* Invert the {@link Unit}.
|
|
@@ -26,12 +26,11 @@ type Cubic<T extends UnknownAbstractUnit | UnknownUnit> = MultiplyUnitExponents<
|
|
|
26
26
|
* @group Modifiers
|
|
27
27
|
* @category General
|
|
28
28
|
*/
|
|
29
|
-
type Reciprocal<T extends UnknownAbstractUnit |
|
|
29
|
+
type Reciprocal<T extends UnknownUnit | UnknownAbstractUnit | UnknownUnitConversionRate | UnknownUnitClass | UnknownUnitMeta> = T extends number ? Inverse<T> : T extends UnknownUnitClass ? UnitClass<InverseUnitSubvalues<T["__uom_types__value"]>> : T extends UnknownUnitMeta ? UnitMeta<InverseUnitSubvalues<T["__uom_types__value"]>> : never;
|
|
30
30
|
/**
|
|
31
31
|
* Invert the {@link UnitClass}.
|
|
32
32
|
*
|
|
33
|
-
* @
|
|
34
|
-
* @category General
|
|
33
|
+
* @deprecated Use {@link Reciprocal} instead.
|
|
35
34
|
*/
|
|
36
35
|
type ReciprocalUnitClass<T extends UnknownUnitClass> = UnitClass<InverseUnitSubvalues<T["__uom_types__value"]>>;
|
|
37
36
|
|
|
@@ -39,7 +38,7 @@ type ReciprocalUnitClass<T extends UnknownUnitClass> = UnitClass<InverseUnitSubv
|
|
|
39
38
|
* @group Unit Classes
|
|
40
39
|
* @category Kinematic
|
|
41
40
|
*/
|
|
42
|
-
type FrequencyUnitClass =
|
|
41
|
+
type FrequencyUnitClass = Reciprocal<DurationUnitClass>;
|
|
43
42
|
/**
|
|
44
43
|
* @group Abstract Units
|
|
45
44
|
* @category Kinematic
|
|
@@ -479,4 +478,4 @@ type Year = DurationUnit<{
|
|
|
479
478
|
scalarDayInYear: 1;
|
|
480
479
|
}>;
|
|
481
480
|
|
|
482
|
-
export {
|
|
481
|
+
export { Minute as $, AreaUnitClass as A, Tonne as B, Volume as C, VolumeUnit as D, EnergyUnitClass as E, FrequencyUnitClass as F, Gram as G, Hertz as H, VolumeUnitFrom as I, Joule as J, Litre as K, LengthUnitClass as L, Metre as M, TemperatureUnit as N, TemperatureUnitFrom as O, PerSecond as P, Kelvin as Q, Reciprocal as R, Celsius as S, TemperatureUnitClass as T, DurationUnitClass as U, VolumeUnitClass as V, WattSecond as W, Duration as X, DurationUnit as Y, DurationUnitFrom as Z, Second as _, Energy as a, Hour as a0, Day as a1, Week as a2, Year as a3, Square as a4, Cubic as a5, ReciprocalUnitClass as a6, EnergyUnit as b, EnergyUnitFrom as c, Temperature as d, Frequency as e, FrequencyUnit as f, FrequencyUnitFrom as g, PerMinute as h, PerHour as i, PerDay as j, PerWeek as k, PerYear as l, Area as m, AreaUnit as n, AreaUnitFrom as o, Are as p, Hectare as q, WattMinute as r, WattHour as s, Length as t, LengthUnit as u, LengthUnitFrom as v, MassUnitClass as w, Mass as x, MassUnit as y, MassUnitFrom as z };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { i as UnknownUnit, h as UnknownAbstractUnit, k as UnknownUnitConversionRate, j as UnknownUnitClass, l as UnknownUnitMeta, P as Pow, b as UnitClass, v as PowUnitSubvalues, f as UnitMeta, I as Inverse, s as InverseUnitSubvalues, g as UnitSubvalues, e as UnitFrom, a as AbstractUnitFrom } from './_units.mjs';
|
|
2
2
|
import { B as BaseUnitClass } from './_angle-plane.mjs';
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -6,19 +6,19 @@ import { B as BaseUnitClass } from './_angle-plane.mjs';
|
|
|
6
6
|
*
|
|
7
7
|
* @group Modifiers
|
|
8
8
|
* @category General
|
|
9
|
-
* @see {@link
|
|
9
|
+
* @see {@link Pow}
|
|
10
10
|
* @see {@link Cubic}
|
|
11
11
|
*/
|
|
12
|
-
type Square<T extends UnknownAbstractUnit |
|
|
12
|
+
type Square<T extends UnknownUnit | UnknownAbstractUnit | UnknownUnitConversionRate | UnknownUnitClass | UnknownUnitMeta> = T extends number ? Pow<T, 2> : T extends UnknownUnitClass ? UnitClass<PowUnitSubvalues<T["__uom_types__value"], 2>> : T extends UnknownUnitMeta ? UnitMeta<PowUnitSubvalues<T["__uom_types__value"], 2>> : never;
|
|
13
13
|
/**
|
|
14
14
|
* Put the given {@link Unit} to the power of 3.
|
|
15
15
|
*
|
|
16
16
|
* @group Modifiers
|
|
17
17
|
* @category General
|
|
18
|
-
* @see {@link
|
|
18
|
+
* @see {@link Pow}
|
|
19
19
|
* @see {@link Square}
|
|
20
20
|
*/
|
|
21
|
-
type Cubic<T extends UnknownAbstractUnit |
|
|
21
|
+
type Cubic<T extends UnknownUnit | UnknownAbstractUnit | UnknownUnitConversionRate | UnknownUnitClass | UnknownUnitMeta> = T extends number ? Pow<T, 3> : T extends UnknownUnitClass ? UnitClass<PowUnitSubvalues<T["__uom_types__value"], 3>> : T extends UnknownUnitMeta ? UnitMeta<PowUnitSubvalues<T["__uom_types__value"], 3>> : never;
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
24
|
* Invert the {@link Unit}.
|
|
@@ -26,12 +26,11 @@ type Cubic<T extends UnknownAbstractUnit | UnknownUnit> = MultiplyUnitExponents<
|
|
|
26
26
|
* @group Modifiers
|
|
27
27
|
* @category General
|
|
28
28
|
*/
|
|
29
|
-
type Reciprocal<T extends UnknownAbstractUnit |
|
|
29
|
+
type Reciprocal<T extends UnknownUnit | UnknownAbstractUnit | UnknownUnitConversionRate | UnknownUnitClass | UnknownUnitMeta> = T extends number ? Inverse<T> : T extends UnknownUnitClass ? UnitClass<InverseUnitSubvalues<T["__uom_types__value"]>> : T extends UnknownUnitMeta ? UnitMeta<InverseUnitSubvalues<T["__uom_types__value"]>> : never;
|
|
30
30
|
/**
|
|
31
31
|
* Invert the {@link UnitClass}.
|
|
32
32
|
*
|
|
33
|
-
* @
|
|
34
|
-
* @category General
|
|
33
|
+
* @deprecated Use {@link Reciprocal} instead.
|
|
35
34
|
*/
|
|
36
35
|
type ReciprocalUnitClass<T extends UnknownUnitClass> = UnitClass<InverseUnitSubvalues<T["__uom_types__value"]>>;
|
|
37
36
|
|
|
@@ -39,7 +38,7 @@ type ReciprocalUnitClass<T extends UnknownUnitClass> = UnitClass<InverseUnitSubv
|
|
|
39
38
|
* @group Unit Classes
|
|
40
39
|
* @category Kinematic
|
|
41
40
|
*/
|
|
42
|
-
type FrequencyUnitClass =
|
|
41
|
+
type FrequencyUnitClass = Reciprocal<DurationUnitClass>;
|
|
43
42
|
/**
|
|
44
43
|
* @group Abstract Units
|
|
45
44
|
* @category Kinematic
|
|
@@ -479,4 +478,4 @@ type Year = DurationUnit<{
|
|
|
479
478
|
scalarDayInYear: 1;
|
|
480
479
|
}>;
|
|
481
480
|
|
|
482
|
-
export {
|
|
481
|
+
export { Minute as $, AreaUnitClass as A, Tonne as B, Volume as C, VolumeUnit as D, EnergyUnitClass as E, FrequencyUnitClass as F, Gram as G, Hertz as H, VolumeUnitFrom as I, Joule as J, Litre as K, LengthUnitClass as L, Metre as M, TemperatureUnit as N, TemperatureUnitFrom as O, PerSecond as P, Kelvin as Q, Reciprocal as R, Celsius as S, TemperatureUnitClass as T, DurationUnitClass as U, VolumeUnitClass as V, WattSecond as W, Duration as X, DurationUnit as Y, DurationUnitFrom as Z, Second as _, Energy as a, Hour as a0, Day as a1, Week as a2, Year as a3, Square as a4, Cubic as a5, ReciprocalUnitClass as a6, EnergyUnit as b, EnergyUnitFrom as c, Temperature as d, Frequency as e, FrequencyUnit as f, FrequencyUnitFrom as g, PerMinute as h, PerHour as i, PerDay as j, PerWeek as k, PerYear as l, Area as m, AreaUnit as n, AreaUnitFrom as o, Are as p, Hectare as q, WattMinute as r, WattHour as s, Length as t, LengthUnit as u, LengthUnitFrom as v, MassUnitClass as w, Mass as x, MassUnit as y, MassUnitFrom as z };
|
|
@@ -1,16 +1,32 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file Autogenerated File - Don't manually edit.
|
|
3
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;
|
|
4
16
|
/**
|
|
5
17
|
* All the supported exponent values.
|
|
6
18
|
*
|
|
7
19
|
* @group Unit Components
|
|
8
20
|
*/
|
|
9
|
-
type Exponent = 0 |
|
|
21
|
+
type Exponent = 0 | PosExponent | NegExponent;
|
|
10
22
|
/**
|
|
11
23
|
* @group Exponent Functions
|
|
12
24
|
*/
|
|
13
|
-
type
|
|
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>;
|
|
14
30
|
/**
|
|
15
31
|
* @group Exponent Functions
|
|
16
32
|
*/
|
|
@@ -90,7 +106,7 @@ type Unit<C extends UnitSubvalues, M extends UnitSubvalues = {}> = number & {
|
|
|
90
106
|
*
|
|
91
107
|
* @group Unit Generators
|
|
92
108
|
*/
|
|
93
|
-
type UnitFrom<C extends UnknownUnitClass, M extends UnknownUnitMeta = UnitMeta<{}>> = C extends UnitClass<infer A> ? M extends UnitMeta<infer B> ? Unit<
|
|
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;
|
|
94
110
|
/**
|
|
95
111
|
* A {@link Unit} without any {@link UnitClass}.
|
|
96
112
|
*
|
|
@@ -98,13 +114,15 @@ type UnitFrom<C extends UnknownUnitClass, M extends UnknownUnitMeta = UnitMeta<{
|
|
|
98
114
|
*
|
|
99
115
|
* @group Unit Generators
|
|
100
116
|
*/
|
|
101
|
-
type UnitConversionRate<M extends UnitSubvalues> =
|
|
117
|
+
type UnitConversionRate<M extends UnitSubvalues> = number & {
|
|
118
|
+
readonly __uom_types__unit_meta: UnitMeta<M>;
|
|
119
|
+
};
|
|
102
120
|
/**
|
|
103
121
|
* Create a {@link UnitConversionRate} from already existing {@link UnitMeta}.
|
|
104
122
|
*
|
|
105
123
|
* @group Unit Generators
|
|
106
124
|
*/
|
|
107
|
-
type UnitConversionRateFrom<M extends UnknownUnitMeta> = M extends UnitMeta<infer A> ? UnitConversionRate<
|
|
125
|
+
type UnitConversionRateFrom<M extends UnknownUnitMeta> = M extends UnitMeta<infer A> ? UnitConversionRate<A> : never;
|
|
108
126
|
/**
|
|
109
127
|
* Used to determine what a unit is of. For example, length, volume, mass etc.
|
|
110
128
|
*
|
|
@@ -138,6 +156,14 @@ type UnknownUnit = UnknownAbstractUnit & {
|
|
|
138
156
|
type UnknownAbstractUnit = number & {
|
|
139
157
|
readonly __uom_types__unit_class: UnknownUnitClass;
|
|
140
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
|
+
};
|
|
141
167
|
/**
|
|
142
168
|
* A {@link UnitClass} that we don't know anything about.
|
|
143
169
|
*
|
|
@@ -169,47 +195,44 @@ type UnknownUnitKeyValues = {
|
|
|
169
195
|
*/
|
|
170
196
|
type UnitSubvalues = Record<string, Exponent>;
|
|
171
197
|
|
|
172
|
-
/**
|
|
173
|
-
* Multiple the exponent values of a unit by a number.
|
|
174
|
-
*
|
|
175
|
-
* @group Unit Functions
|
|
176
|
-
*/
|
|
177
|
-
type MultiplyUnitExponents<T extends number, E extends Exponent> = T extends Unit<infer Config, infer Meta> ? Unit<FlatternAlias<MultiplyUnitSubvaluesExponents<Config, E>>, FlatternAlias<MultiplyUnitSubvaluesExponents<Meta, E>>> : T extends AbstractUnit<infer Config> ? AbstractUnit<FlatternAlias<MultiplyUnitSubvaluesExponents<Config, E>>> : number;
|
|
178
|
-
type MultiplyUnitSubvaluesExponents<T extends UnitSubvalues, E extends Exponent> = {
|
|
179
|
-
[S in keyof T]: MultiplyExponents<GetExponent<T, S>, E>;
|
|
180
|
-
};
|
|
181
|
-
/**
|
|
182
|
-
* Divide the exponent values of a unit by a number.
|
|
183
|
-
*
|
|
184
|
-
* @group Unit Functions
|
|
185
|
-
*/
|
|
186
|
-
type DivideUnitExponents<T extends number, E extends Exponent> = T extends Unit<infer Config, infer Meta> ? Unit<FlatternAlias<DivideUnitSubvaluesExponents<Config, E>>, FlatternAlias<DivideUnitSubvaluesExponents<Meta, E>>> : T extends AbstractUnit<infer Config> ? AbstractUnit<FlatternAlias<DivideUnitSubvaluesExponents<Config, E>>> : number;
|
|
187
|
-
type DivideUnitSubvaluesExponents<T extends UnitSubvalues, E extends Exponent> = {
|
|
188
|
-
[S in keyof T]: DivideExponents<GetExponent<T, S>, E>;
|
|
189
|
-
};
|
|
190
|
-
|
|
191
198
|
/**
|
|
192
199
|
* Take the inverse of a unit.
|
|
193
200
|
*
|
|
194
201
|
* @group Unit Functions
|
|
195
202
|
* @returns `1/X`.
|
|
196
203
|
*/
|
|
197
|
-
type Inverse<X extends number> = X
|
|
204
|
+
type Inverse<X extends number> = Pow<X, -1>;
|
|
198
205
|
/**
|
|
199
206
|
* Inverses each of the subvalues.
|
|
200
207
|
*
|
|
201
208
|
* @group Unit Subvalue Functions
|
|
202
209
|
*/
|
|
203
|
-
type InverseUnitSubvalues<T extends UnitSubvalues> =
|
|
204
|
-
[E in keyof T]: NegativeExponent<T[E]>;
|
|
205
|
-
};
|
|
210
|
+
type InverseUnitSubvalues<T extends UnitSubvalues> = PowUnitSubvalues<T, -1>;
|
|
206
211
|
/**
|
|
207
212
|
* Multiply a unit by another unit.
|
|
208
213
|
*
|
|
209
214
|
* @group Unit Functions
|
|
210
215
|
* @returns `A⋅B`
|
|
211
216
|
*/
|
|
212
|
-
type Multiply<A extends number, B extends number> = A extends
|
|
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;
|
|
213
236
|
/**
|
|
214
237
|
* Multiply each of the subvalues from a unit with the corresponding once from another unit.
|
|
215
238
|
*
|
|
@@ -231,5 +254,33 @@ type Divide<A extends number, B extends number> = Multiply<A, Inverse<B>>;
|
|
|
231
254
|
* @group Unit Subvalue Functions
|
|
232
255
|
*/
|
|
233
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
|
+
}>;
|
|
234
285
|
|
|
235
|
-
export { AbstractUnit as A,
|
|
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 };
|
|
@@ -1,16 +1,32 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @file Autogenerated File - Don't manually edit.
|
|
3
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;
|
|
4
16
|
/**
|
|
5
17
|
* All the supported exponent values.
|
|
6
18
|
*
|
|
7
19
|
* @group Unit Components
|
|
8
20
|
*/
|
|
9
|
-
type Exponent = 0 |
|
|
21
|
+
type Exponent = 0 | PosExponent | NegExponent;
|
|
10
22
|
/**
|
|
11
23
|
* @group Exponent Functions
|
|
12
24
|
*/
|
|
13
|
-
type
|
|
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>;
|
|
14
30
|
/**
|
|
15
31
|
* @group Exponent Functions
|
|
16
32
|
*/
|
|
@@ -90,7 +106,7 @@ type Unit<C extends UnitSubvalues, M extends UnitSubvalues = {}> = number & {
|
|
|
90
106
|
*
|
|
91
107
|
* @group Unit Generators
|
|
92
108
|
*/
|
|
93
|
-
type UnitFrom<C extends UnknownUnitClass, M extends UnknownUnitMeta = UnitMeta<{}>> = C extends UnitClass<infer A> ? M extends UnitMeta<infer B> ? Unit<
|
|
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;
|
|
94
110
|
/**
|
|
95
111
|
* A {@link Unit} without any {@link UnitClass}.
|
|
96
112
|
*
|
|
@@ -98,13 +114,15 @@ type UnitFrom<C extends UnknownUnitClass, M extends UnknownUnitMeta = UnitMeta<{
|
|
|
98
114
|
*
|
|
99
115
|
* @group Unit Generators
|
|
100
116
|
*/
|
|
101
|
-
type UnitConversionRate<M extends UnitSubvalues> =
|
|
117
|
+
type UnitConversionRate<M extends UnitSubvalues> = number & {
|
|
118
|
+
readonly __uom_types__unit_meta: UnitMeta<M>;
|
|
119
|
+
};
|
|
102
120
|
/**
|
|
103
121
|
* Create a {@link UnitConversionRate} from already existing {@link UnitMeta}.
|
|
104
122
|
*
|
|
105
123
|
* @group Unit Generators
|
|
106
124
|
*/
|
|
107
|
-
type UnitConversionRateFrom<M extends UnknownUnitMeta> = M extends UnitMeta<infer A> ? UnitConversionRate<
|
|
125
|
+
type UnitConversionRateFrom<M extends UnknownUnitMeta> = M extends UnitMeta<infer A> ? UnitConversionRate<A> : never;
|
|
108
126
|
/**
|
|
109
127
|
* Used to determine what a unit is of. For example, length, volume, mass etc.
|
|
110
128
|
*
|
|
@@ -138,6 +156,14 @@ type UnknownUnit = UnknownAbstractUnit & {
|
|
|
138
156
|
type UnknownAbstractUnit = number & {
|
|
139
157
|
readonly __uom_types__unit_class: UnknownUnitClass;
|
|
140
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
|
+
};
|
|
141
167
|
/**
|
|
142
168
|
* A {@link UnitClass} that we don't know anything about.
|
|
143
169
|
*
|
|
@@ -169,47 +195,44 @@ type UnknownUnitKeyValues = {
|
|
|
169
195
|
*/
|
|
170
196
|
type UnitSubvalues = Record<string, Exponent>;
|
|
171
197
|
|
|
172
|
-
/**
|
|
173
|
-
* Multiple the exponent values of a unit by a number.
|
|
174
|
-
*
|
|
175
|
-
* @group Unit Functions
|
|
176
|
-
*/
|
|
177
|
-
type MultiplyUnitExponents<T extends number, E extends Exponent> = T extends Unit<infer Config, infer Meta> ? Unit<FlatternAlias<MultiplyUnitSubvaluesExponents<Config, E>>, FlatternAlias<MultiplyUnitSubvaluesExponents<Meta, E>>> : T extends AbstractUnit<infer Config> ? AbstractUnit<FlatternAlias<MultiplyUnitSubvaluesExponents<Config, E>>> : number;
|
|
178
|
-
type MultiplyUnitSubvaluesExponents<T extends UnitSubvalues, E extends Exponent> = {
|
|
179
|
-
[S in keyof T]: MultiplyExponents<GetExponent<T, S>, E>;
|
|
180
|
-
};
|
|
181
|
-
/**
|
|
182
|
-
* Divide the exponent values of a unit by a number.
|
|
183
|
-
*
|
|
184
|
-
* @group Unit Functions
|
|
185
|
-
*/
|
|
186
|
-
type DivideUnitExponents<T extends number, E extends Exponent> = T extends Unit<infer Config, infer Meta> ? Unit<FlatternAlias<DivideUnitSubvaluesExponents<Config, E>>, FlatternAlias<DivideUnitSubvaluesExponents<Meta, E>>> : T extends AbstractUnit<infer Config> ? AbstractUnit<FlatternAlias<DivideUnitSubvaluesExponents<Config, E>>> : number;
|
|
187
|
-
type DivideUnitSubvaluesExponents<T extends UnitSubvalues, E extends Exponent> = {
|
|
188
|
-
[S in keyof T]: DivideExponents<GetExponent<T, S>, E>;
|
|
189
|
-
};
|
|
190
|
-
|
|
191
198
|
/**
|
|
192
199
|
* Take the inverse of a unit.
|
|
193
200
|
*
|
|
194
201
|
* @group Unit Functions
|
|
195
202
|
* @returns `1/X`.
|
|
196
203
|
*/
|
|
197
|
-
type Inverse<X extends number> = X
|
|
204
|
+
type Inverse<X extends number> = Pow<X, -1>;
|
|
198
205
|
/**
|
|
199
206
|
* Inverses each of the subvalues.
|
|
200
207
|
*
|
|
201
208
|
* @group Unit Subvalue Functions
|
|
202
209
|
*/
|
|
203
|
-
type InverseUnitSubvalues<T extends UnitSubvalues> =
|
|
204
|
-
[E in keyof T]: NegativeExponent<T[E]>;
|
|
205
|
-
};
|
|
210
|
+
type InverseUnitSubvalues<T extends UnitSubvalues> = PowUnitSubvalues<T, -1>;
|
|
206
211
|
/**
|
|
207
212
|
* Multiply a unit by another unit.
|
|
208
213
|
*
|
|
209
214
|
* @group Unit Functions
|
|
210
215
|
* @returns `A⋅B`
|
|
211
216
|
*/
|
|
212
|
-
type Multiply<A extends number, B extends number> = A extends
|
|
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;
|
|
213
236
|
/**
|
|
214
237
|
* Multiply each of the subvalues from a unit with the corresponding once from another unit.
|
|
215
238
|
*
|
|
@@ -231,5 +254,33 @@ type Divide<A extends number, B extends number> = Multiply<A, Inverse<B>>;
|
|
|
231
254
|
* @group Unit Subvalue Functions
|
|
232
255
|
*/
|
|
233
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
|
+
}>;
|
|
234
285
|
|
|
235
|
-
export { AbstractUnit as A,
|
|
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 };
|
|
@@ -61,6 +61,14 @@ function modSafe(a) {
|
|
|
61
61
|
function pow(exponent) {
|
|
62
62
|
return (base) => (base ** exponent);
|
|
63
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* Take the nth root of a number.
|
|
66
|
+
*
|
|
67
|
+
* @category Math
|
|
68
|
+
*/
|
|
69
|
+
function root(exponent) {
|
|
70
|
+
return (base) => (base ** (1 / exponent));
|
|
71
|
+
}
|
|
64
72
|
/**
|
|
65
73
|
* Equal: Compare if a value is equal to the given value.
|
|
66
74
|
*
|
|
@@ -113,4 +121,5 @@ exports.mod = mod;
|
|
|
113
121
|
exports.modSafe = modSafe;
|
|
114
122
|
exports.mul = mul;
|
|
115
123
|
exports.pow = pow;
|
|
124
|
+
exports.root = root;
|
|
116
125
|
exports.sub = sub;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { t as Multiply, q as Divide, i as UnknownUnit, h as UnknownAbstractUnit, E as Exponent, P as Pow, R as Root, o as PosExponent } from './_units.cjs';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* @module uom-types/functions/higher-order
|
|
@@ -43,13 +43,20 @@ declare function mod<T extends number>(a: OperationIO<T>): (b: OperationIO<T>) =
|
|
|
43
43
|
* @category Math
|
|
44
44
|
*/
|
|
45
45
|
declare function modSafe<T extends number>(a: OperationIO<T>): (b: OperationIO<T>) => OperationIO<T>;
|
|
46
|
-
type PowFunction<E extends number, B extends number> = E extends UnknownUnit ? never : E extends UnknownAbstractUnit ? never : E extends
|
|
46
|
+
type PowFunction<E extends number, B extends number> = E extends UnknownUnit ? never : E extends UnknownAbstractUnit ? never : E extends Exponent ? (b: B) => Pow<B, E> : E extends 0.5 ? (b: B) => Root<B, 2> : (b: B) => number;
|
|
47
47
|
/**
|
|
48
48
|
* Put a number to the power of the given value.
|
|
49
49
|
*
|
|
50
50
|
* @category Math
|
|
51
51
|
*/
|
|
52
52
|
declare function pow<E extends number>(exponent: E): <B extends number>(base: Parameters<PowFunction<E, B>>[0]) => ReturnType<PowFunction<E, B>>;
|
|
53
|
+
type RootFunction<E extends number, B extends number> = E extends UnknownUnit ? never : E extends UnknownAbstractUnit ? never : E extends PosExponent ? (b: B) => Root<B, E> : (b: B) => number;
|
|
54
|
+
/**
|
|
55
|
+
* Take the nth root of a number.
|
|
56
|
+
*
|
|
57
|
+
* @category Math
|
|
58
|
+
*/
|
|
59
|
+
declare function root<N extends number>(exponent: N): <B extends number>(base: Parameters<RootFunction<N, B>>[0]) => ReturnType<RootFunction<N, B>>;
|
|
53
60
|
/**
|
|
54
61
|
* Equal: Compare if a value is equal to the given value.
|
|
55
62
|
*
|
|
@@ -81,4 +88,4 @@ declare function lt<T extends number>(a: OperationIO<T>): (b: OperationIO<T>) =>
|
|
|
81
88
|
*/
|
|
82
89
|
declare function lte<T extends number>(a: OperationIO<T>): (b: OperationIO<T>) => boolean;
|
|
83
90
|
|
|
84
|
-
export { add, div, eq, gt, gte, lt, lte, mod, modSafe, mul, pow, sub };
|
|
91
|
+
export { add, div, eq, gt, gte, lt, lte, mod, modSafe, mul, pow, root, sub };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { t as Multiply, q as Divide, i as UnknownUnit, h as UnknownAbstractUnit, E as Exponent, P as Pow, R as Root, o as PosExponent } from './_units.mjs';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* @module uom-types/functions/higher-order
|
|
@@ -43,13 +43,20 @@ declare function mod<T extends number>(a: OperationIO<T>): (b: OperationIO<T>) =
|
|
|
43
43
|
* @category Math
|
|
44
44
|
*/
|
|
45
45
|
declare function modSafe<T extends number>(a: OperationIO<T>): (b: OperationIO<T>) => OperationIO<T>;
|
|
46
|
-
type PowFunction<E extends number, B extends number> = E extends UnknownUnit ? never : E extends UnknownAbstractUnit ? never : E extends
|
|
46
|
+
type PowFunction<E extends number, B extends number> = E extends UnknownUnit ? never : E extends UnknownAbstractUnit ? never : E extends Exponent ? (b: B) => Pow<B, E> : E extends 0.5 ? (b: B) => Root<B, 2> : (b: B) => number;
|
|
47
47
|
/**
|
|
48
48
|
* Put a number to the power of the given value.
|
|
49
49
|
*
|
|
50
50
|
* @category Math
|
|
51
51
|
*/
|
|
52
52
|
declare function pow<E extends number>(exponent: E): <B extends number>(base: Parameters<PowFunction<E, B>>[0]) => ReturnType<PowFunction<E, B>>;
|
|
53
|
+
type RootFunction<E extends number, B extends number> = E extends UnknownUnit ? never : E extends UnknownAbstractUnit ? never : E extends PosExponent ? (b: B) => Root<B, E> : (b: B) => number;
|
|
54
|
+
/**
|
|
55
|
+
* Take the nth root of a number.
|
|
56
|
+
*
|
|
57
|
+
* @category Math
|
|
58
|
+
*/
|
|
59
|
+
declare function root<N extends number>(exponent: N): <B extends number>(base: Parameters<RootFunction<N, B>>[0]) => ReturnType<RootFunction<N, B>>;
|
|
53
60
|
/**
|
|
54
61
|
* Equal: Compare if a value is equal to the given value.
|
|
55
62
|
*
|
|
@@ -81,4 +88,4 @@ declare function lt<T extends number>(a: OperationIO<T>): (b: OperationIO<T>) =>
|
|
|
81
88
|
*/
|
|
82
89
|
declare function lte<T extends number>(a: OperationIO<T>): (b: OperationIO<T>) => boolean;
|
|
83
90
|
|
|
84
|
-
export { add, div, eq, gt, gte, lt, lte, mod, modSafe, mul, pow, sub };
|
|
91
|
+
export { add, div, eq, gt, gte, lt, lte, mod, modSafe, mul, pow, root, sub };
|