uom-types 5.0.0 → 5.0.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/CHANGELOG.md CHANGED
@@ -1,6 +1,13 @@
1
1
  # Changelog
2
2
  All notable changes to this project will be documented in this file. Dates are displayed in UTC.
3
3
 
4
+ ## [5.0.1](https://github.com/RebeccaStevens/uom-types/compare/v5.0.0...v5.0.1) (2024-12-14)
5
+
6
+
7
+ ### Bug Fixes
8
+
9
+ * dist types ([a01ca42](https://github.com/RebeccaStevens/uom-types/commit/a01ca429263a5752edf554a739318cdeb155a940)), closes [#437](https://github.com/RebeccaStevens/uom-types/issues/437)
10
+
4
11
  # [5.0.0](https://github.com/RebeccaStevens/uom-types/compare/v4.1.2...v5.0.0) (2024-11-27)
5
12
 
6
13
 
package/dist/index.d.cts CHANGED
@@ -41,79 +41,44 @@ export type MultiplyExponents<A extends Exponent, B extends Exponent> = A extend
41
41
  * @group Exponent Functions
42
42
  */
43
43
  export 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;
44
- /**
45
- * Available for providing custom branding.
46
- */
47
- export interface Brand {
44
+ interface Brand {
48
45
  }
49
- /**
50
- * Brand with the unit meta.
51
- */
52
- export type BrandUnitMeta<UM extends UnknownUnitMeta> = Brand & {
46
+ type BrandUnitMeta<UM extends UnknownUnitMeta> = Brand & {
53
47
  __uom_types: {
54
48
  unitMeta: UM;
55
49
  };
56
50
  };
57
- /**
58
- * Brand with the unit class.
59
- */
60
- export type BrandUnitClass<UC extends UnknownUnitClass> = Brand & {
51
+ type BrandUnitClass<UC extends UnknownUnitClass> = Brand & {
61
52
  __uom_types: {
62
53
  unitClass: UC;
63
54
  };
64
55
  };
65
- /**
66
- * Brand that it is a unit class.
67
- */
68
- export type BrandUnitClassType = Brand & {
56
+ type BrandUnitClassType = Brand & {
69
57
  __uom_types: {
70
58
  unitClassType: true;
71
59
  };
72
60
  };
73
- /**
74
- * Brand with the unit keys and value.
75
- */
76
- export type BrandUnitKeyValues<K, V> = Brand & Readonly<{
61
+ type BrandUnitKeyValues<K, V> = Brand & Readonly<{
77
62
  __uom_types: {
78
63
  keys: K;
79
64
  value: V;
80
65
  };
81
66
  }>;
82
- /**
83
- * Remove all key from the object that are `never`.
84
- */
85
- export type RemoveNeverValues<T extends object> = {
67
+ type RemoveNeverValues<T extends object> = {
86
68
  [K in keyof T as [
87
69
  T[K]
88
70
  ] extends [
89
71
  never
90
72
  ] ? never : K]: T[K];
91
73
  };
92
- /**
93
- * Exclude all unit subvalues with an exponent value of zero.
94
- */
95
- export type ExcludeUnitZeroSubvalues<U extends UnitSubvalues> = {
74
+ type ExcludeUnitZeroSubvalues<U extends UnitSubvalues> = {
96
75
  [S in keyof U as S extends string ? (U[S] extends 0 ? never : S) : never]: U[S];
97
76
  };
98
- /**
99
- * Get the exponent value of the given key.
100
- */
101
- export type GetExponent<C extends UnitSubvalues, S> = S extends keyof C ? C[S] : 0;
102
- /**
103
- * Flatten a complex type such as a union or intersection of objects into a
104
- * single object.
105
- *
106
- * @internal
107
- */
108
- export type FlatternAlias<T> = {
77
+ type GetExponent<C extends UnitSubvalues, S> = S extends keyof C ? C[S] : 0;
78
+ type FlatternAlias<T> = {
109
79
  [P in keyof T]: T[P];
110
80
  } & {};
111
- /**
112
- * Make `T` exactly `T`.
113
- *
114
- * @internal
115
- */
116
- export type Exactify<T, U extends T> = T & {
81
+ type Exactify<T, U extends T> = T & {
117
82
  [K in keyof U]: K extends keyof T ? U[K] : never;
118
83
  };
119
84
  /**
@@ -201,14 +166,8 @@ export type UnknownUnitClass = UnknownUnitKeyValues & BrandUnitClassType;
201
166
  export type UnknownUnitMeta = UnknownUnitKeyValues & Readonly<{
202
167
  __uno_types__unit_meta_type: true;
203
168
  }>;
204
- /**
205
- * @internal
206
- */
207
- export type UnitKeyValues<T extends UnitSubvalues> = BrandUnitKeyValues<keyof ExcludeUnitZeroSubvalues<T> extends string ? keyof ExcludeUnitZeroSubvalues<T> : never, RemoveNeverValues<T>>;
208
- /**
209
- * @internal
210
- */
211
- export type UnknownUnitKeyValues = BrandUnitKeyValues<string, {}>;
169
+ type UnitKeyValues<T extends UnitSubvalues> = BrandUnitKeyValues<keyof ExcludeUnitZeroSubvalues<T> extends string ? keyof ExcludeUnitZeroSubvalues<T> : never, RemoveNeverValues<T>>;
170
+ type UnknownUnitKeyValues = BrandUnitKeyValues<string, {}>;
212
171
  /**
213
172
  * A mapping of subvalue of a unit its magnitude.
214
173
  *
@@ -235,24 +194,9 @@ export type InverseUnitSubvalues<T extends UnitSubvalues> = PowUnitSubvalues<T,
235
194
  * @returns `A⋅B`
236
195
  */
237
196
  export 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;
238
- /**
239
- * Multiple a Unit by a Unit, AbstractUnit, UnitConversionRate or number
240
- *
241
- * @internal
242
- */
243
- export 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;
244
- /**
245
- * Multiple an AbstractUnit by an AbstractUnit, UnitConversionRate or number
246
- *
247
- * @internal
248
- */
249
- export 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;
250
- /**
251
- * Multiple an UnitConversionRate by a UnitConversionRate or number
252
- *
253
- * @internal
254
- */
255
- export 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;
197
+ 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;
198
+ 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;
199
+ 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;
256
200
  /**
257
201
  * Multiply each of the subvalues from a unit with the corresponding once from another unit.
258
202
  *
@@ -302,14 +246,14 @@ export type Root<B extends number, E extends Exponent> = B extends Unit<infer Cl
302
246
  export type RootUnitSubvalues<B extends UnitSubvalues, E extends Exponent> = ExcludeUnitZeroSubvalues<{
303
247
  [S in keyof B]: DivideExponents<GetExponent<B, S>, E>;
304
248
  }>;
305
- export type SiUnitKeys = "Second" | "Meter" | "Kilogram" | "Mole" | "Ampere" | "Candela" | "Kelvin" | "Radian";
249
+ type SiUnitKeys = "Second" | "Meter" | "Kilogram" | "Mole" | "Ampere" | "Candela" | "Kelvin" | "Radian";
306
250
  /**
307
251
  * The {@link UnitClass} that is the base of all {@link Unit}s defined by this library.
308
252
  *
309
253
  * @group Unit Classes
310
254
  */
311
255
  export type BaseUnitClass<T extends Exactify<SiUnitConfig, T>> = UnitClass<T>;
312
- export type SiUnitConfig = Partial<Record<SiUnitKeys, Exponent>>;
256
+ type SiUnitConfig = Partial<Record<SiUnitKeys, Exponent>>;
313
257
  /**
314
258
  * @group Unit Classes
315
259
  * @category Angle (Plane)
@@ -4180,7 +4124,7 @@ export declare function cubicMetersToLiters(volume: Cubic<Meter>): Liter;
4180
4124
  * Convert {@link Liter} to {@link Cubic}<{@link Meter}>.
4181
4125
  */
4182
4126
  export declare function litersToCubicMeters(volume: Liter): Cubic<Meter>;
4183
- export type OperationIO<T extends number> = [
4127
+ type OperationIO<T extends number> = [
4184
4128
  T
4185
4129
  ] extends [
4186
4130
  UnknownUnit | UnknownAbstractUnit
@@ -4275,10 +4219,10 @@ export declare function modSafe<T extends number>(a: OperationIO<T>, b: Operatio
4275
4219
  * @returns A function that takes a integer and returns an integer between zero (inclusive) and `b` (exclusive).
4276
4220
  */
4277
4221
  export declare function modSafe<T extends number>(b: OperationIO<T>): (a: OperationIO<T>) => OperationIO<T>;
4278
- export type PowResult<B extends number, E extends number> = E extends Unitless ? PowResult<B, number> : E extends UnknownUnit ? never : E extends UnknownAbstractUnit ? never : E extends Exponent ? Pow<B, E> : E extends 0.5 ? Root<B, 2> : B extends Unitless ? B : number;
4279
- export type PowFunction<B extends number, E extends number> = (b: B) => PowResult<B, E>;
4280
- export type RootResult<B extends number, E extends number> = E extends Unitless ? RootResult<B, number> : E extends UnknownUnit ? never : E extends UnknownAbstractUnit ? never : E extends Exponent ? Root<B, E> : E extends 0.5 ? Pow<B, 2> : B extends Unitless ? B : number;
4281
- export type RootFunction<B extends number, E extends number> = (b: B) => RootResult<B, E>;
4222
+ type PowResult<B extends number, E extends number> = E extends Unitless ? PowResult<B, number> : E extends UnknownUnit ? never : E extends UnknownAbstractUnit ? never : E extends Exponent ? Pow<B, E> : E extends 0.5 ? Root<B, 2> : B extends Unitless ? B : number;
4223
+ type PowFunction<B extends number, E extends number> = (b: B) => PowResult<B, E>;
4224
+ type RootResult<B extends number, E extends number> = E extends Unitless ? RootResult<B, number> : E extends UnknownUnit ? never : E extends UnknownAbstractUnit ? never : E extends Exponent ? Root<B, E> : E extends 0.5 ? Pow<B, 2> : B extends Unitless ? B : number;
4225
+ type RootFunction<B extends number, E extends number> = (b: B) => RootResult<B, E>;
4282
4226
  /**
4283
4227
  * Raise a number to the power of another.
4284
4228
  *
package/dist/index.d.mts CHANGED
@@ -41,79 +41,44 @@ export type MultiplyExponents<A extends Exponent, B extends Exponent> = A extend
41
41
  * @group Exponent Functions
42
42
  */
43
43
  export 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;
44
- /**
45
- * Available for providing custom branding.
46
- */
47
- export interface Brand {
44
+ interface Brand {
48
45
  }
49
- /**
50
- * Brand with the unit meta.
51
- */
52
- export type BrandUnitMeta<UM extends UnknownUnitMeta> = Brand & {
46
+ type BrandUnitMeta<UM extends UnknownUnitMeta> = Brand & {
53
47
  __uom_types: {
54
48
  unitMeta: UM;
55
49
  };
56
50
  };
57
- /**
58
- * Brand with the unit class.
59
- */
60
- export type BrandUnitClass<UC extends UnknownUnitClass> = Brand & {
51
+ type BrandUnitClass<UC extends UnknownUnitClass> = Brand & {
61
52
  __uom_types: {
62
53
  unitClass: UC;
63
54
  };
64
55
  };
65
- /**
66
- * Brand that it is a unit class.
67
- */
68
- export type BrandUnitClassType = Brand & {
56
+ type BrandUnitClassType = Brand & {
69
57
  __uom_types: {
70
58
  unitClassType: true;
71
59
  };
72
60
  };
73
- /**
74
- * Brand with the unit keys and value.
75
- */
76
- export type BrandUnitKeyValues<K, V> = Brand & Readonly<{
61
+ type BrandUnitKeyValues<K, V> = Brand & Readonly<{
77
62
  __uom_types: {
78
63
  keys: K;
79
64
  value: V;
80
65
  };
81
66
  }>;
82
- /**
83
- * Remove all key from the object that are `never`.
84
- */
85
- export type RemoveNeverValues<T extends object> = {
67
+ type RemoveNeverValues<T extends object> = {
86
68
  [K in keyof T as [
87
69
  T[K]
88
70
  ] extends [
89
71
  never
90
72
  ] ? never : K]: T[K];
91
73
  };
92
- /**
93
- * Exclude all unit subvalues with an exponent value of zero.
94
- */
95
- export type ExcludeUnitZeroSubvalues<U extends UnitSubvalues> = {
74
+ type ExcludeUnitZeroSubvalues<U extends UnitSubvalues> = {
96
75
  [S in keyof U as S extends string ? (U[S] extends 0 ? never : S) : never]: U[S];
97
76
  };
98
- /**
99
- * Get the exponent value of the given key.
100
- */
101
- export type GetExponent<C extends UnitSubvalues, S> = S extends keyof C ? C[S] : 0;
102
- /**
103
- * Flatten a complex type such as a union or intersection of objects into a
104
- * single object.
105
- *
106
- * @internal
107
- */
108
- export type FlatternAlias<T> = {
77
+ type GetExponent<C extends UnitSubvalues, S> = S extends keyof C ? C[S] : 0;
78
+ type FlatternAlias<T> = {
109
79
  [P in keyof T]: T[P];
110
80
  } & {};
111
- /**
112
- * Make `T` exactly `T`.
113
- *
114
- * @internal
115
- */
116
- export type Exactify<T, U extends T> = T & {
81
+ type Exactify<T, U extends T> = T & {
117
82
  [K in keyof U]: K extends keyof T ? U[K] : never;
118
83
  };
119
84
  /**
@@ -201,14 +166,8 @@ export type UnknownUnitClass = UnknownUnitKeyValues & BrandUnitClassType;
201
166
  export type UnknownUnitMeta = UnknownUnitKeyValues & Readonly<{
202
167
  __uno_types__unit_meta_type: true;
203
168
  }>;
204
- /**
205
- * @internal
206
- */
207
- export type UnitKeyValues<T extends UnitSubvalues> = BrandUnitKeyValues<keyof ExcludeUnitZeroSubvalues<T> extends string ? keyof ExcludeUnitZeroSubvalues<T> : never, RemoveNeverValues<T>>;
208
- /**
209
- * @internal
210
- */
211
- export type UnknownUnitKeyValues = BrandUnitKeyValues<string, {}>;
169
+ type UnitKeyValues<T extends UnitSubvalues> = BrandUnitKeyValues<keyof ExcludeUnitZeroSubvalues<T> extends string ? keyof ExcludeUnitZeroSubvalues<T> : never, RemoveNeverValues<T>>;
170
+ type UnknownUnitKeyValues = BrandUnitKeyValues<string, {}>;
212
171
  /**
213
172
  * A mapping of subvalue of a unit its magnitude.
214
173
  *
@@ -235,24 +194,9 @@ export type InverseUnitSubvalues<T extends UnitSubvalues> = PowUnitSubvalues<T,
235
194
  * @returns `A⋅B`
236
195
  */
237
196
  export 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;
238
- /**
239
- * Multiple a Unit by a Unit, AbstractUnit, UnitConversionRate or number
240
- *
241
- * @internal
242
- */
243
- export 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;
244
- /**
245
- * Multiple an AbstractUnit by an AbstractUnit, UnitConversionRate or number
246
- *
247
- * @internal
248
- */
249
- export 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;
250
- /**
251
- * Multiple an UnitConversionRate by a UnitConversionRate or number
252
- *
253
- * @internal
254
- */
255
- export 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;
197
+ 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;
198
+ 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;
199
+ 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;
256
200
  /**
257
201
  * Multiply each of the subvalues from a unit with the corresponding once from another unit.
258
202
  *
@@ -302,14 +246,14 @@ export type Root<B extends number, E extends Exponent> = B extends Unit<infer Cl
302
246
  export type RootUnitSubvalues<B extends UnitSubvalues, E extends Exponent> = ExcludeUnitZeroSubvalues<{
303
247
  [S in keyof B]: DivideExponents<GetExponent<B, S>, E>;
304
248
  }>;
305
- export type SiUnitKeys = "Second" | "Meter" | "Kilogram" | "Mole" | "Ampere" | "Candela" | "Kelvin" | "Radian";
249
+ type SiUnitKeys = "Second" | "Meter" | "Kilogram" | "Mole" | "Ampere" | "Candela" | "Kelvin" | "Radian";
306
250
  /**
307
251
  * The {@link UnitClass} that is the base of all {@link Unit}s defined by this library.
308
252
  *
309
253
  * @group Unit Classes
310
254
  */
311
255
  export type BaseUnitClass<T extends Exactify<SiUnitConfig, T>> = UnitClass<T>;
312
- export type SiUnitConfig = Partial<Record<SiUnitKeys, Exponent>>;
256
+ type SiUnitConfig = Partial<Record<SiUnitKeys, Exponent>>;
313
257
  /**
314
258
  * @group Unit Classes
315
259
  * @category Angle (Plane)
@@ -4180,7 +4124,7 @@ export declare function cubicMetersToLiters(volume: Cubic<Meter>): Liter;
4180
4124
  * Convert {@link Liter} to {@link Cubic}<{@link Meter}>.
4181
4125
  */
4182
4126
  export declare function litersToCubicMeters(volume: Liter): Cubic<Meter>;
4183
- export type OperationIO<T extends number> = [
4127
+ type OperationIO<T extends number> = [
4184
4128
  T
4185
4129
  ] extends [
4186
4130
  UnknownUnit | UnknownAbstractUnit
@@ -4275,10 +4219,10 @@ export declare function modSafe<T extends number>(a: OperationIO<T>, b: Operatio
4275
4219
  * @returns A function that takes a integer and returns an integer between zero (inclusive) and `b` (exclusive).
4276
4220
  */
4277
4221
  export declare function modSafe<T extends number>(b: OperationIO<T>): (a: OperationIO<T>) => OperationIO<T>;
4278
- export type PowResult<B extends number, E extends number> = E extends Unitless ? PowResult<B, number> : E extends UnknownUnit ? never : E extends UnknownAbstractUnit ? never : E extends Exponent ? Pow<B, E> : E extends 0.5 ? Root<B, 2> : B extends Unitless ? B : number;
4279
- export type PowFunction<B extends number, E extends number> = (b: B) => PowResult<B, E>;
4280
- export type RootResult<B extends number, E extends number> = E extends Unitless ? RootResult<B, number> : E extends UnknownUnit ? never : E extends UnknownAbstractUnit ? never : E extends Exponent ? Root<B, E> : E extends 0.5 ? Pow<B, 2> : B extends Unitless ? B : number;
4281
- export type RootFunction<B extends number, E extends number> = (b: B) => RootResult<B, E>;
4222
+ type PowResult<B extends number, E extends number> = E extends Unitless ? PowResult<B, number> : E extends UnknownUnit ? never : E extends UnknownAbstractUnit ? never : E extends Exponent ? Pow<B, E> : E extends 0.5 ? Root<B, 2> : B extends Unitless ? B : number;
4223
+ type PowFunction<B extends number, E extends number> = (b: B) => PowResult<B, E>;
4224
+ type RootResult<B extends number, E extends number> = E extends Unitless ? RootResult<B, number> : E extends UnknownUnit ? never : E extends UnknownAbstractUnit ? never : E extends Exponent ? Root<B, E> : E extends 0.5 ? Pow<B, 2> : B extends Unitless ? B : number;
4225
+ type RootFunction<B extends number, E extends number> = (b: B) => RootResult<B, E>;
4282
4226
  /**
4283
4227
  * Raise a number to the power of another.
4284
4228
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "uom-types",
3
- "version": "5.0.0",
3
+ "version": "5.0.1",
4
4
  "description": "Typesafe units with no runtime overhead.",
5
5
  "keywords": [
6
6
  "uom",
@@ -51,7 +51,7 @@
51
51
  "scripts": {
52
52
  "build": "pnpm run build-pre && pnpm run build:js",
53
53
  "build-pre": "pnpm run generate-files",
54
- "build:js": "rimraf dist && rollup -c rollup.config.ts --configPlugin @rollup/plugin-typescript",
54
+ "build:js": "rimraf dist && rollup -c rollup.config.ts --configPlugin @rollup/plugin-typescript --configImportAttributesKey with",
55
55
  "cz": "git-cz",
56
56
  "docs": "typedoc",
57
57
  "docs:serve": "http-serve docs/generated",
@@ -79,14 +79,14 @@
79
79
  "test:js-run": "vitest run --coverage",
80
80
  "test:types": "pnpm run test:types-pre && tsd -t './dist/index.d.mts' -f 'src/**/*.test-d.ts'",
81
81
  "test:types-pre": "pnpm run build",
82
- "typecheck": "tsc -p tsconfig.build.json --noEmit"
82
+ "typecheck": "tsc -p src/tsconfig.json --noEmit"
83
83
  },
84
84
  "devDependencies": {
85
85
  "@commitlint/cli": "19.6.0",
86
86
  "@commitlint/config-conventional": "19.6.0",
87
87
  "@cspell/dict-cryptocurrencies": "5.0.3",
88
- "@eslint/compat": "1.2.3",
89
- "@rebeccastevens/eslint-config": "3.3.3",
88
+ "@eslint/compat": "1.2.4",
89
+ "@rebeccastevens/eslint-config": "3.3.4",
90
90
  "@rollup/plugin-typescript": "12.1.1",
91
91
  "@sebbo2002/semantic-release-jsr": "2.0.2",
92
92
  "@semantic-release/changelog": "6.0.3",
@@ -95,60 +95,60 @@
95
95
  "@semantic-release/github": "11.0.1",
96
96
  "@semantic-release/npm": "12.0.1",
97
97
  "@semantic-release/release-notes-generator": "14.0.1",
98
- "@stylistic/eslint-plugin": "2.11.0",
99
- "@types/node": "18.19.66",
100
- "@typescript-eslint/eslint-plugin": "8.16.0",
101
- "@typescript-eslint/parser": "8.16.0",
102
- "@vitest/coverage-v8": "2.1.6",
103
- "@vitest/eslint-plugin": "1.1.11",
98
+ "@stylistic/eslint-plugin": "2.12.1",
99
+ "@types/node": "18.19.67",
100
+ "@typescript-eslint/eslint-plugin": "8.18.0",
101
+ "@typescript-eslint/parser": "8.18.0",
102
+ "@vitest/coverage-v8": "2.1.8",
103
+ "@vitest/eslint-plugin": "1.1.16",
104
104
  "commitizen": "4.3.1",
105
105
  "cspell": "8.16.1",
106
106
  "cz-conventional-changelog": "3.3.0",
107
- "eslint": "9.15.0",
107
+ "eslint": "9.17.0",
108
108
  "eslint-config-prettier": "9.1.0",
109
109
  "eslint-flat-config-utils": "0.4.0",
110
- "eslint-import-resolver-typescript": "3.6.3",
110
+ "eslint-import-resolver-typescript": "3.7.0",
111
111
  "eslint-merge-processors": "0.1.0",
112
112
  "eslint-plugin-eslint-comments": "3.2.0",
113
- "eslint-plugin-format": "0.1.2",
113
+ "eslint-plugin-format": "0.1.3",
114
114
  "eslint-plugin-functional": "7.1.0",
115
- "eslint-plugin-import-x": "4.4.3",
116
- "eslint-plugin-jsdoc": "50.6.0",
115
+ "eslint-plugin-import-x": "4.5.0",
116
+ "eslint-plugin-jsdoc": "50.6.1",
117
117
  "eslint-plugin-jsonc": "2.18.2",
118
118
  "eslint-plugin-markdown": "5.1.0",
119
- "eslint-plugin-n": "17.14.0",
119
+ "eslint-plugin-n": "17.15.0",
120
120
  "eslint-plugin-no-only-tests": "3.3.0",
121
121
  "eslint-plugin-optimize-regex": "1.2.1",
122
122
  "eslint-plugin-prettier": "5.2.1",
123
123
  "eslint-plugin-promise": "7.2.1",
124
124
  "eslint-plugin-regexp": "2.7.0",
125
- "eslint-plugin-sonarjs": "2.0.4",
125
+ "eslint-plugin-sonarjs": "3.0.1",
126
126
  "eslint-plugin-unicorn": "56.0.1",
127
- "eslint-plugin-yml": "1.15.0",
127
+ "eslint-plugin-yml": "1.16.0",
128
128
  "http-serve": "1.0.1",
129
129
  "husky": "9.1.7",
130
130
  "jsonc-eslint-parser": "2.4.0",
131
- "knip": "5.38.1",
132
- "lint-staged": "15.2.10",
133
- "markdownlint-cli2": "0.15.0",
134
- "prettier": "3.4.1",
131
+ "knip": "5.40.0",
132
+ "lint-staged": "15.2.11",
133
+ "markdownlint-cli2": "0.16.0",
134
+ "prettier": "3.4.2",
135
135
  "rimraf": "6.0.1",
136
- "rollup": "4.27.4",
136
+ "rollup": "4.28.1",
137
137
  "rollup-plugin-deassert": "1.3.0",
138
- "rollup-plugin-dts-bundle-generator-2": "1.0.2",
138
+ "rollup-plugin-dts-bundle-generator-2": "2.0.0",
139
139
  "semantic-release": "24.2.0",
140
140
  "tsafe": "1.8.5",
141
141
  "tsc-files": "1.1.4",
142
142
  "tsd": "0.31.2",
143
143
  "tsx": "4.19.2",
144
- "typedoc": "0.26.11",
144
+ "typedoc": "0.27.4",
145
145
  "typedoc-plugin-coverage": "3.4.0",
146
146
  "typescript": "5.7.2",
147
- "vite-tsconfig-paths": "5.1.3",
148
- "vitest": "2.1.6",
147
+ "vite-tsconfig-paths": "5.1.4",
148
+ "vitest": "2.1.8",
149
149
  "yaml-eslint-parser": "1.2.3"
150
150
  },
151
- "packageManager": "pnpm@9.14.2",
151
+ "packageManager": "pnpm@9.15.0",
152
152
  "engines": {
153
153
  "node": ">=18.0.0"
154
154
  }