@wisemen/quantity 0.10.0 → 0.11.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.
Files changed (84) hide show
  1. package/dist/quantities/current/current.column.d.ts +1 -1
  2. package/dist/quantities/current/current.column.js.map +1 -1
  3. package/dist/quantities/current/current.d.ts +4 -2
  4. package/dist/quantities/current/current.js +8 -2
  5. package/dist/quantities/current/current.js.map +1 -1
  6. package/dist/quantities/current/is-current.validator.d.ts +1 -2
  7. package/dist/quantities/current/is-current.validator.js.map +1 -1
  8. package/dist/quantities/distance/distance.column.d.ts +1 -1
  9. package/dist/quantities/distance/distance.column.js.map +1 -1
  10. package/dist/quantities/distance/distance.d.ts +12 -2
  11. package/dist/quantities/distance/distance.js +17 -2
  12. package/dist/quantities/distance/distance.js.map +1 -1
  13. package/dist/quantities/distance/is-distance.validator.d.ts +1 -2
  14. package/dist/quantities/distance/is-distance.validator.js.map +1 -1
  15. package/dist/quantities/distance/tests/distance.unit.test.js +11 -0
  16. package/dist/quantities/distance/tests/distance.unit.test.js.map +1 -1
  17. package/dist/quantities/duration/duration.column.d.ts +1 -1
  18. package/dist/quantities/duration/duration.column.js.map +1 -1
  19. package/dist/quantities/duration/duration.d.ts +10 -2
  20. package/dist/quantities/duration/duration.js +17 -2
  21. package/dist/quantities/duration/duration.js.map +1 -1
  22. package/dist/quantities/duration/is-duration.validator.d.ts +1 -2
  23. package/dist/quantities/duration/is-duration.validator.js.map +1 -1
  24. package/dist/quantities/duration/tests/duration.unit.test.js +13 -0
  25. package/dist/quantities/duration/tests/duration.unit.test.js.map +1 -1
  26. package/dist/quantities/energy/energy.column.d.ts +1 -1
  27. package/dist/quantities/energy/energy.column.js.map +1 -1
  28. package/dist/quantities/energy/energy.d.ts +12 -2
  29. package/dist/quantities/energy/energy.js +17 -2
  30. package/dist/quantities/energy/energy.js.map +1 -1
  31. package/dist/quantities/energy/is-energy.validator.d.ts +1 -2
  32. package/dist/quantities/energy/is-energy.validator.js.map +1 -1
  33. package/dist/quantities/energy/tests/energy.unit.test.js +13 -0
  34. package/dist/quantities/energy/tests/energy.unit.test.js.map +1 -1
  35. package/dist/quantities/mass/is-mass.validator.d.ts +1 -2
  36. package/dist/quantities/mass/is-mass.validator.js.map +1 -1
  37. package/dist/quantities/mass/mass.column.d.ts +1 -1
  38. package/dist/quantities/mass/mass.column.js.map +1 -1
  39. package/dist/quantities/mass/mass.d.ts +4 -2
  40. package/dist/quantities/mass/mass.js +8 -2
  41. package/dist/quantities/mass/mass.js.map +1 -1
  42. package/dist/quantities/power/is-power.validator.d.ts +1 -2
  43. package/dist/quantities/power/is-power.validator.js.map +1 -1
  44. package/dist/quantities/power/power.column.d.ts +1 -1
  45. package/dist/quantities/power/power.column.js.map +1 -1
  46. package/dist/quantities/power/power.d.ts +10 -2
  47. package/dist/quantities/power/power.js +17 -2
  48. package/dist/quantities/power/power.js.map +1 -1
  49. package/dist/quantities/power/tests/power.unit.test.js +13 -0
  50. package/dist/quantities/power/tests/power.unit.test.js.map +1 -1
  51. package/dist/quantities/speed/is-speed.validator.d.ts +1 -2
  52. package/dist/quantities/speed/is-speed.validator.js.map +1 -1
  53. package/dist/quantities/speed/speed.column.d.ts +1 -1
  54. package/dist/quantities/speed/speed.column.js.map +1 -1
  55. package/dist/quantities/speed/speed.d.ts +10 -2
  56. package/dist/quantities/speed/speed.js +17 -2
  57. package/dist/quantities/speed/speed.js.map +1 -1
  58. package/dist/quantities/speed/tests/speed.unit.test.js +12 -1
  59. package/dist/quantities/speed/tests/speed.unit.test.js.map +1 -1
  60. package/dist/quantities/temperature/is-temperature.validator.d.ts +1 -2
  61. package/dist/quantities/temperature/is-temperature.validator.js.map +1 -1
  62. package/dist/quantities/temperature/temperature.d.ts +13 -2
  63. package/dist/quantities/temperature/temperature.js +45 -2
  64. package/dist/quantities/temperature/temperature.js.map +1 -1
  65. package/dist/quantities/temperature/tests/temperature.unit.test.js +18 -1
  66. package/dist/quantities/temperature/tests/temperature.unit.test.js.map +1 -1
  67. package/dist/quantities/voltage/is-voltage.validator.d.ts +1 -2
  68. package/dist/quantities/voltage/is-voltage.validator.js.map +1 -1
  69. package/dist/quantities/voltage/voltage.column.d.ts +1 -1
  70. package/dist/quantities/voltage/voltage.column.js.map +1 -1
  71. package/dist/quantities/voltage/voltage.d.ts +4 -2
  72. package/dist/quantities/voltage/voltage.js +8 -2
  73. package/dist/quantities/voltage/voltage.js.map +1 -1
  74. package/dist/quantity.column.d.ts +3 -3
  75. package/dist/quantity.column.js.map +1 -1
  76. package/dist/quantity.d.ts +38 -15
  77. package/dist/quantity.dto.d.ts +1 -1
  78. package/dist/quantity.js +60 -36
  79. package/dist/quantity.js.map +1 -1
  80. package/dist/validators/is-quantity.decorator.d.ts +3 -3
  81. package/dist/validators/is-quantity.decorator.js.map +1 -1
  82. package/dist/validators/max-quantity.validator.d.ts +2 -2
  83. package/dist/validators/min-quantity.validator.d.ts +2 -2
  84. package/package.json +3 -3
@@ -1,4 +1,4 @@
1
1
  import { QuantityColumnOptions } from '../../quantity.column.js';
2
2
  import { CurrentUnit } from './current-unit.enum.js';
3
3
  import { Current } from './current.js';
4
- export declare function CurrentColumn(storeAsUnit: CurrentUnit, options?: QuantityColumnOptions<CurrentUnit, Current>): PropertyDecorator;
4
+ export declare function CurrentColumn(storeAsUnit: CurrentUnit, options?: QuantityColumnOptions<Current>): PropertyDecorator;
@@ -1 +1 @@
1
- {"version":3,"file":"current.column.js","sourceRoot":"","sources":["../../../lib/quantities/current/current.column.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAyB,MAAM,0BAA0B,CAAA;AAEhF,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,MAAM,UAAU,aAAa,CAC3B,WAAwB,EACxB,OAAqD;IAErD,OAAO,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;AACtD,CAAC"}
1
+ {"version":3,"file":"current.column.js","sourceRoot":"","sources":["../../../lib/quantities/current/current.column.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAyB,MAAM,0BAA0B,CAAA;AAEhF,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,MAAM,UAAU,aAAa,CAC3B,WAAwB,EACxB,OAAwC;IAExC,OAAO,cAAc,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;AACtD,CAAC"}
@@ -1,7 +1,9 @@
1
- import { Quantity } from '../../quantity.js';
1
+ import { ScalableQuantity } from '../../quantity.js';
2
2
  import { CurrentUnit } from './current-unit.enum.js';
3
3
  export declare const CURRENT_MULTIPLIERS: Record<CurrentUnit, number>;
4
- export declare class Current extends Quantity<CurrentUnit, Current> {
4
+ export declare class Current extends ScalableQuantity<CurrentUnit, Current, Current> {
5
+ protected getQuantity(): typeof Current;
6
+ protected getDelta(): typeof Current;
5
7
  protected getBaseUnit(): CurrentUnit;
6
8
  protected getUnits(): readonly CurrentUnit[];
7
9
  protected convertValueToBaseUnit(value: number, unit: CurrentUnit): number;
@@ -1,4 +1,4 @@
1
- import { Quantity } from '../../quantity.js';
1
+ import { ScalableQuantity } from '../../quantity.js';
2
2
  import { CurrentUnit } from './current-unit.enum.js';
3
3
  export const CURRENT_MULTIPLIERS = {
4
4
  [CurrentUnit.AMPERE]: 1,
@@ -27,7 +27,13 @@ export const CURRENT_MULTIPLIERS = {
27
27
  [CurrentUnit.RONNAAMPERE]: 1e27,
28
28
  [CurrentUnit.QUETTAAMPERE]: 1e30
29
29
  };
30
- export class Current extends Quantity {
30
+ export class Current extends ScalableQuantity {
31
+ getQuantity() {
32
+ return Current;
33
+ }
34
+ getDelta() {
35
+ return Current;
36
+ }
31
37
  getBaseUnit() {
32
38
  return CurrentUnit.AMPERE;
33
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"current.js","sourceRoot":"","sources":["../../../lib/quantities/current/current.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEpD,MAAM,CAAC,MAAM,mBAAmB,GAAgC;IAC9D,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;IAEvB,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,IAAI;IAC9B,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,IAAI;IAC/B,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,IAAI;IAC/B,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,IAAI;IAC/B,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,IAAI;IAC9B,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,KAAK;IAC/B,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,KAAK;IAChC,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,KAAK;IAC/B,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,KAAK;IAChC,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,KAAK;IAChC,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,KAAK;IAChC,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,KAAK;IAEjC,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,GAAG;IAC7B,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,GAAG;IAC9B,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,GAAG;IAC7B,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,GAAG;IAC7B,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,GAAG;IAC7B,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,IAAI;IAC9B,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,IAAI;IAC9B,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,IAAI;IAC7B,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,IAAI;IAC/B,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,IAAI;IAC/B,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,IAAI;IAC/B,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,IAAI;CACjC,CAAA;AAED,MAAM,OAAO,OAAQ,SAAQ,QAA8B;IAC/C,WAAW;QACnB,OAAO,WAAW,CAAC,MAAM,CAAA;IAC3B,CAAC;IAES,QAAQ;QAChB,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;IACnC,CAAC;IAES,sBAAsB,CAAE,KAAa,EAAE,IAAiB;QAChE,OAAO,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAA;IAC1C,CAAC;IAES,sBAAsB,CAAE,KAAa,EAAE,IAAiB;QAChE,OAAO,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAA;IAC1C,CAAC;IAED,MAAM,CAAC,IAAI,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA"}
1
+ {"version":3,"file":"current.js","sourceRoot":"","sources":["../../../lib/quantities/current/current.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEpD,MAAM,CAAC,MAAM,mBAAmB,GAAgC;IAC9D,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;IAEvB,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,IAAI;IAC9B,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,IAAI;IAC/B,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,IAAI;IAC/B,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,IAAI;IAC/B,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,IAAI;IAC9B,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,KAAK;IAC/B,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,KAAK;IAChC,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,KAAK;IAC/B,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,KAAK;IAChC,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,KAAK;IAChC,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,KAAK;IAChC,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,KAAK;IAEjC,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,GAAG;IAC7B,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,GAAG;IAC9B,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,GAAG;IAC7B,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,GAAG;IAC7B,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,GAAG;IAC7B,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,IAAI;IAC9B,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,IAAI;IAC9B,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,IAAI;IAC7B,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,IAAI;IAC/B,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,IAAI;IAC/B,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,IAAI;IAC/B,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,IAAI;CACjC,CAAA;AAED,MAAM,OAAO,OAAQ,SAAQ,gBAA+C;IAChE,WAAW;QACnB,OAAO,OAAO,CAAA;IAChB,CAAC;IAES,QAAQ;QAChB,OAAO,OAAO,CAAA;IAChB,CAAC;IAES,WAAW;QACnB,OAAO,WAAW,CAAC,MAAM,CAAA;IAC3B,CAAC;IAES,QAAQ;QAChB,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;IACnC,CAAC;IAES,sBAAsB,CAAE,KAAa,EAAE,IAAiB;QAChE,OAAO,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAA;IAC1C,CAAC;IAES,sBAAsB,CAAE,KAAa,EAAE,IAAiB;QAChE,OAAO,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAA;IAC1C,CAAC;IAED,MAAM,CAAC,IAAI,GAAG,IAAI,OAAO,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA"}
@@ -1,4 +1,3 @@
1
1
  import { IsQuantityOptions } from '../../validators/is-quantity.decorator.js';
2
- import { CurrentUnit } from './current-unit.enum.js';
3
2
  import { Current } from './current.js';
4
- export declare function IsCurrent(options?: IsQuantityOptions<CurrentUnit, Current>): PropertyDecorator;
3
+ export declare function IsCurrent(options?: IsQuantityOptions<Current>): PropertyDecorator;
@@ -1 +1 @@
1
- {"version":3,"file":"is-current.validator.js","sourceRoot":"","sources":["../../../lib/quantities/current/is-current.validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAqB,MAAM,2CAA2C,CAAA;AACzF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAI7C,MAAM,UAAU,SAAS,CACvB,OAAiD;IAEjD,OAAO,eAAe,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAA;AACzD,CAAC"}
1
+ {"version":3,"file":"is-current.validator.js","sourceRoot":"","sources":["../../../lib/quantities/current/is-current.validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAqB,MAAM,2CAA2C,CAAA;AACzF,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAG7C,MAAM,UAAU,SAAS,CACvB,OAAoC;IAEpC,OAAO,eAAe,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAA;AACzD,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import { QuantityColumnOptions } from '../../quantity.column.js';
2
2
  import { DistanceUnit } from './distance-unit.enum.js';
3
3
  import { Distance } from './distance.js';
4
- export declare function DistanceColumn(storeAsUnit: DistanceUnit, options?: QuantityColumnOptions<DistanceUnit, Distance>): PropertyDecorator;
4
+ export declare function DistanceColumn(storeAsUnit: DistanceUnit, options?: QuantityColumnOptions<Distance>): PropertyDecorator;
@@ -1 +1 @@
1
- {"version":3,"file":"distance.column.js","sourceRoot":"","sources":["../../../lib/quantities/distance/distance.column.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAyB,MAAM,0BAA0B,CAAA;AAEhF,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,MAAM,UAAU,cAAc,CAC5B,WAAyB,EACzB,OAAuD;IAEvD,OAAO,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;AACvD,CAAC"}
1
+ {"version":3,"file":"distance.column.js","sourceRoot":"","sources":["../../../lib/quantities/distance/distance.column.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAyB,MAAM,0BAA0B,CAAA;AAEhF,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC,MAAM,UAAU,cAAc,CAC5B,WAAyB,EACzB,OAAyC;IAEzC,OAAO,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;AACvD,CAAC"}
@@ -1,6 +1,11 @@
1
- import { Quantity } from '../../quantity.js';
1
+ import { Duration } from '../../quantities/duration/duration.js';
2
+ import { Speed } from '../../quantities/speed/speed.js';
3
+ import { Rate } from '../../rate/rate.js';
4
+ import { ScalableQuantity } from '../../quantity.js';
2
5
  import { DistanceUnit } from './distance-unit.enum.js';
3
- export declare class Distance extends Quantity<DistanceUnit, Distance> {
6
+ export declare class Distance extends ScalableQuantity<DistanceUnit, Distance, Distance> {
7
+ protected getQuantity(): typeof Distance;
8
+ protected getDelta(): typeof Distance;
4
9
  protected getBaseUnit(): DistanceUnit;
5
10
  protected getUnits(): readonly DistanceUnit[];
6
11
  protected convertValueToBaseUnit(value: number, fromUnit: DistanceUnit): number;
@@ -8,4 +13,9 @@ export declare class Distance extends Quantity<DistanceUnit, Distance> {
8
13
  get meters(): number;
9
14
  get kilometers(): number;
10
15
  static ZERO: Distance;
16
+ divide(divisor: number): Distance;
17
+ divide(rate: Rate): Distance;
18
+ divide(value: number, unit: DistanceUnit): number;
19
+ divide(quantity: Distance): number;
20
+ divide(quantity: Duration): Speed;
11
21
  }
@@ -1,4 +1,7 @@
1
- import { Quantity } from '../../quantity.js';
1
+ import { Duration } from '../../quantities/duration/duration.js';
2
+ import { SpeedUnit } from '../../quantities/speed/speed-unit.enum.js';
3
+ import { Speed } from '../../quantities/speed/speed.js';
4
+ import { ScalableQuantity } from '../../quantity.js';
2
5
  import { DistanceUnit } from './distance-unit.enum.js';
3
6
  const DISTANCE_MULTIPLIERS = {
4
7
  [DistanceUnit.METER]: 1,
@@ -15,7 +18,13 @@ const DISTANCE_MULTIPLIERS = {
15
18
  [DistanceUnit.YARD]: 0.9144,
16
19
  [DistanceUnit.MILES]: 1609.34
17
20
  };
18
- export class Distance extends Quantity {
21
+ export class Distance extends ScalableQuantity {
22
+ getQuantity() {
23
+ return Distance;
24
+ }
25
+ getDelta() {
26
+ return Distance;
27
+ }
19
28
  getBaseUnit() {
20
29
  return DistanceUnit.METER;
21
30
  }
@@ -35,5 +44,11 @@ export class Distance extends Quantity {
35
44
  return this.asNumber(DistanceUnit.KILOMETER);
36
45
  }
37
46
  static ZERO = new Distance(0, DistanceUnit.METER);
47
+ divide(divisor, unit) {
48
+ if (divisor instanceof Duration) {
49
+ return new Speed(this.valueOf() / divisor.valueOf(), SpeedUnit.METER_PER_SECOND);
50
+ }
51
+ return super.divide(divisor, unit);
52
+ }
38
53
  }
39
54
  //# sourceMappingURL=distance.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"distance.js","sourceRoot":"","sources":["../../../lib/quantities/distance/distance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEtD,MAAM,oBAAoB,GAAiC;IACzD,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;IAEvB,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,IAAI;IAC9B,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,IAAI;IAC/B,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,IAAI;IAC/B,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,IAAI;IAC/B,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,IAAI;IAE9B,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,GAAG;IAC7B,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,GAAG;IAC9B,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,GAAG;IAE7B,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM;IAC3B,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM;IAC3B,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM;IAC3B,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,OAAO;CAC9B,CAAA;AAED,MAAM,OAAO,QAAS,SAAQ,QAAgC;IAClD,WAAW;QACnB,OAAO,YAAY,CAAC,KAAK,CAAA;IAC3B,CAAC;IAES,QAAQ;QAChB,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IACpC,CAAC;IAES,sBAAsB,CAAE,KAAa,EAAE,QAAsB;QACrE,OAAO,KAAK,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAA;IAC/C,CAAC;IAES,sBAAsB,CAAE,KAAa,EAAE,MAAoB;QACnE,OAAO,KAAK,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAA;IAC7C,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;IAC1C,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;IAC9C,CAAC;IAED,MAAM,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAA"}
1
+ {"version":3,"file":"distance.js","sourceRoot":"","sources":["../../../lib/quantities/distance/distance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAA;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAA;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEtD,MAAM,oBAAoB,GAAiC;IACzD,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;IAEvB,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,IAAI;IAC9B,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,IAAI;IAC/B,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,IAAI;IAC/B,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,IAAI;IAC/B,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,IAAI;IAE9B,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,GAAG;IAC7B,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,GAAG;IAC9B,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE,GAAG;IAE7B,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM;IAC3B,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM;IAC3B,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM;IAC3B,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,OAAO;CAC9B,CAAA;AAED,MAAM,OAAO,QAAS,SAAQ,gBAAkD;IACpE,WAAW;QACnB,OAAO,QAAQ,CAAA;IACjB,CAAC;IAES,QAAQ;QAChB,OAAO,QAAQ,CAAA;IACjB,CAAC;IAES,WAAW;QACnB,OAAO,YAAY,CAAC,KAAK,CAAA;IAC3B,CAAC;IAES,QAAQ;QAChB,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IACpC,CAAC;IAES,sBAAsB,CAAE,KAAa,EAAE,QAAsB;QACrE,OAAO,KAAK,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAA;IAC/C,CAAC;IAES,sBAAsB,CAAE,KAAa,EAAE,MAAoB;QACnE,OAAO,KAAK,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAA;IAC7C,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;IAC1C,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;IAC9C,CAAC;IAED,MAAM,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAA;IAOxC,MAAM,CAAC,OAA4C,EAAE,IAAmB;QAC/E,IAAI,OAAO,YAAY,QAAQ,EAAE,CAAC;YAChC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAA;QAClF,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IACpC,CAAC"}
@@ -1,4 +1,3 @@
1
1
  import { IsQuantityOptions } from '../../validators/is-quantity.decorator.js';
2
- import { DistanceUnit } from './distance-unit.enum.js';
3
2
  import { Distance } from './distance.js';
4
- export declare function IsDistance(options?: IsQuantityOptions<DistanceUnit, Distance>): PropertyDecorator;
3
+ export declare function IsDistance(options?: IsQuantityOptions<Distance>): PropertyDecorator;
@@ -1 +1 @@
1
- {"version":3,"file":"is-distance.validator.js","sourceRoot":"","sources":["../../../lib/quantities/distance/is-distance.validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAqB,MAAM,2CAA2C,CAAA;AACzF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAI/C,MAAM,UAAU,UAAU,CACxB,OAAmD;IAEnD,OAAO,eAAe,CAAC,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAA;AAC1D,CAAC"}
1
+ {"version":3,"file":"is-distance.validator.js","sourceRoot":"","sources":["../../../lib/quantities/distance/is-distance.validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAqB,MAAM,2CAA2C,CAAA;AACzF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAG/C,MAAM,UAAU,UAAU,CACxB,OAAqC;IAErC,OAAO,eAAe,CAAC,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAA;AAC1D,CAAC"}
@@ -2,6 +2,9 @@ import { describe, it } from 'node:test';
2
2
  import { expect } from 'expect';
3
3
  import { Distance } from '../distance.js';
4
4
  import { DistanceUnit } from '../distance-unit.enum.js';
5
+ import { Duration } from '../../duration/duration.js';
6
+ import { DurationUnit } from '../../duration/duration-unit.enum.js';
7
+ import { SpeedUnit } from '../../speed/speed-unit.enum.js';
5
8
  void describe('Distance class', () => {
6
9
  void describe('Distance calculations', () => {
7
10
  void it('adds distances', () => {
@@ -26,6 +29,14 @@ void describe('Distance class', () => {
26
29
  expect(r2).toBe(4);
27
30
  expect(r3).toBe(2);
28
31
  });
32
+ void describe('cross quantity calculations', () => {
33
+ void it('divides distances by durations into speeds with converted units', () => {
34
+ const distance = new Distance(10, DistanceUnit.KILOMETER);
35
+ const duration = new Duration(2, DurationUnit.HOURS);
36
+ const speed = distance.divide(duration);
37
+ expect(speed.isEqualTo(5, SpeedUnit.KILOMETER_PER_HOUR)).toBe(true);
38
+ });
39
+ });
29
40
  });
30
41
  void describe('Distance parsing', () => {
31
42
  void it('parses distance strings', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"distance.unit.test.js","sourceRoot":"","sources":["../../../../lib/quantities/distance/tests/distance.unit.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEvD,KAAK,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IACnC,KAAK,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC1C,KAAK,EAAE,CAAC,gBAAgB,EAAE,GAAG,EAAE;YAC7B,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAC,KAAK,CAAC,CAAA;YAC/C,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAC,UAAU,CAAC,CAAA;YACpD,MAAM,CAAC,GAAa,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAE9B,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1D,CAAC,CAAC,CAAA;QAEF,KAAK,EAAE,CAAC,qBAAqB,EAAE,GAAG,EAAE;YAClC,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAC,KAAK,CAAC,CAAA;YAC/C,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAC,UAAU,CAAC,CAAA;YACpD,MAAM,CAAC,GAAa,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;YAEnC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC9D,CAAC,CAAC,CAAA;QAEF,KAAK,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;YAChC,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAA;YAC9C,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,EAAE,EAAE,YAAY,CAAC,UAAU,CAAC,CAAA;YAEpD,MAAM,EAAE,GAAa,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YACjC,MAAM,EAAE,GAAW,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;YAChC,MAAM,EAAE,GAAW,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,KAAK,CAAC,CAAA;YAErD,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC5D,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAClB,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACpB,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,KAAK,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QACrC,KAAK,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACtC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;YAErC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAC/B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;QACrD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"distance.unit.test.js","sourceRoot":"","sources":["../../../../lib/quantities/distance/tests/distance.unit.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import { QuantityColumnOptions } from '../../quantity.column.js';
2
2
  import { Duration } from './duration.js';
3
3
  import { DurationUnit } from './duration-unit.enum.js';
4
- export declare function DurationColumn(storeAsUnit: DurationUnit, options?: QuantityColumnOptions<DurationUnit, Duration>): PropertyDecorator;
4
+ export declare function DurationColumn(storeAsUnit: DurationUnit, options?: QuantityColumnOptions<Duration>): PropertyDecorator;
@@ -1 +1 @@
1
- {"version":3,"file":"duration.column.js","sourceRoot":"","sources":["../../../lib/quantities/duration/duration.column.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAyB,MAAM,0BAA0B,CAAA;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAGxC,MAAM,UAAU,cAAc,CAC5B,WAAyB,EACzB,OAAuD;IAEvD,OAAO,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;AACvD,CAAC"}
1
+ {"version":3,"file":"duration.column.js","sourceRoot":"","sources":["../../../lib/quantities/duration/duration.column.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAyB,MAAM,0BAA0B,CAAA;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAGxC,MAAM,UAAU,cAAc,CAC5B,WAAyB,EACzB,OAAyC;IAEzC,OAAO,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;AACvD,CAAC"}
@@ -1,6 +1,11 @@
1
- import { Quantity } from '../../quantity.js';
1
+ import { Distance } from '../../quantities/distance/distance.js';
2
+ import { Speed } from '../../quantities/speed/speed.js';
3
+ import { Rate } from '../../rate/rate.js';
4
+ import { ScalableQuantity } from '../../quantity.js';
2
5
  import { DurationUnit } from './duration-unit.enum.js';
3
- export declare class Duration extends Quantity<DurationUnit, Duration> {
6
+ export declare class Duration extends ScalableQuantity<DurationUnit, Duration, Duration> {
7
+ protected getQuantity(): typeof Duration;
8
+ protected getDelta(): typeof Duration;
4
9
  protected getBaseUnit(): DurationUnit;
5
10
  protected getUnits(): readonly DurationUnit[];
6
11
  protected convertValueToBaseUnit(value: number, unit: DurationUnit): number;
@@ -13,4 +18,7 @@ export declare class Duration extends Quantity<DurationUnit, Duration> {
13
18
  /** @returns number of 24hr days */
14
19
  get days(): number;
15
20
  static ZERO: Duration;
21
+ multiply(factor: number): Duration;
22
+ multiply(rate: Rate): Duration;
23
+ multiply(speed: Speed): Distance;
16
24
  }
@@ -1,4 +1,7 @@
1
- import { Quantity } from '../../quantity.js';
1
+ import { DistanceUnit } from '../../quantities/distance/distance-unit.enum.js';
2
+ import { Distance } from '../../quantities/distance/distance.js';
3
+ import { Speed } from '../../quantities/speed/speed.js';
4
+ import { ScalableQuantity } from '../../quantity.js';
2
5
  import { DurationUnit } from './duration-unit.enum.js';
3
6
  const DISTANCE_MULTIPLIERS = {
4
7
  [DurationUnit.SECONDS]: 1,
@@ -9,7 +12,13 @@ const DISTANCE_MULTIPLIERS = {
9
12
  [DurationUnit.HOURS]: 3600,
10
13
  [DurationUnit.DAYS]: 3600 * 24
11
14
  };
12
- export class Duration extends Quantity {
15
+ export class Duration extends ScalableQuantity {
16
+ getQuantity() {
17
+ return Duration;
18
+ }
19
+ getDelta() {
20
+ return Duration;
21
+ }
13
22
  getBaseUnit() {
14
23
  return DurationUnit.SECONDS;
15
24
  }
@@ -42,5 +51,11 @@ export class Duration extends Quantity {
42
51
  return this.asNumber(DurationUnit.DAYS);
43
52
  }
44
53
  static ZERO = new Duration(0, DurationUnit.SECONDS);
54
+ multiply(multiplier) {
55
+ if (multiplier instanceof Speed) {
56
+ return new Distance(this.valueOf() * multiplier.valueOf(), DistanceUnit.METER);
57
+ }
58
+ return super.multiply(multiplier);
59
+ }
45
60
  }
46
61
  //# sourceMappingURL=duration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"duration.js","sourceRoot":"","sources":["../../../lib/quantities/duration/duration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEtD,MAAM,oBAAoB,GAAiC;IACzD,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;IACzB,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,IAAI;IACjC,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,IAAI;IACjC,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,IAAI;IAChC,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE;IAC1B,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI;IAC1B,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE;CAC/B,CAAA;AAED,MAAM,OAAO,QAAS,SAAQ,QAAgC;IAClD,WAAW;QACnB,OAAO,YAAY,CAAC,OAAO,CAAA;IAC7B,CAAC;IAES,QAAQ;QAChB,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IACpC,CAAC;IAES,sBAAsB,CAAE,KAAa,EAAE,IAAkB;QACjE,OAAO,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAA;IAC3C,CAAC;IAES,sBAAsB,CAAE,KAAa,EAAE,IAAkB;QACjE,OAAO,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAA;IAC3C,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;IAChD,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,CAAA;IACjD,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;IAC5C,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;IAC5C,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;IAC1C,CAAC;IAED,mCAAmC;IACnC,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IACzC,CAAC;IAED,MAAM,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAA"}
1
+ {"version":3,"file":"duration.js","sourceRoot":"","sources":["../../../lib/quantities/duration/duration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iDAAiD,CAAA;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAA;AAChE,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAA;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEtD,MAAM,oBAAoB,GAAiC;IACzD,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;IACzB,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,IAAI;IACjC,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE,IAAI;IACjC,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,IAAI;IAChC,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE;IAC1B,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI;IAC1B,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE;CAC/B,CAAA;AAED,MAAM,OAAO,QAAS,SAAQ,gBAAkD;IACpE,WAAW;QACnB,OAAO,QAAQ,CAAA;IACjB,CAAC;IAES,QAAQ;QAChB,OAAO,QAAQ,CAAA;IACjB,CAAC;IAES,WAAW;QACnB,OAAO,YAAY,CAAC,OAAO,CAAA;IAC7B,CAAC;IAES,QAAQ;QAChB,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IACpC,CAAC;IAES,sBAAsB,CAAE,KAAa,EAAE,IAAkB;QACjE,OAAO,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAA;IAC3C,CAAC;IAES,sBAAsB,CAAE,KAAa,EAAE,IAAkB;QACjE,OAAO,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAA;IAC3C,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;IAChD,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,CAAC,CAAA;IACjD,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;IAC5C,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;IAC5C,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;IAC1C,CAAC;IAED,mCAAmC;IACnC,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;IACzC,CAAC;IAED,MAAM,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,CAAC,EAAE,YAAY,CAAC,OAAO,CAAC,CAAA;IAK1C,QAAQ,CAAC,UAAiC;QACjD,IAAI,UAAU,YAAY,KAAK,EAAE,CAAC;YAChC,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,KAAK,CAAC,CAAA;QAChF,CAAC;QACD,OAAO,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;IACnC,CAAC"}
@@ -1,4 +1,3 @@
1
1
  import { IsQuantityOptions } from '../../validators/is-quantity.decorator.js';
2
- import { DurationUnit } from './duration-unit.enum.js';
3
2
  import { Duration } from './duration.js';
4
- export declare function IsDuration(options?: IsQuantityOptions<DurationUnit, Duration>): PropertyDecorator;
3
+ export declare function IsDuration(options?: IsQuantityOptions<Duration>): PropertyDecorator;
@@ -1 +1 @@
1
- {"version":3,"file":"is-duration.validator.js","sourceRoot":"","sources":["../../../lib/quantities/duration/is-duration.validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAqB,MAAM,2CAA2C,CAAA;AACzF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAI/C,MAAM,UAAU,UAAU,CACxB,OAAmD;IAEnD,OAAO,eAAe,CAAC,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAA;AAC1D,CAAC"}
1
+ {"version":3,"file":"is-duration.validator.js","sourceRoot":"","sources":["../../../lib/quantities/duration/is-duration.validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAqB,MAAM,2CAA2C,CAAA;AACzF,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAG/C,MAAM,UAAU,UAAU,CACxB,OAAqC;IAErC,OAAO,eAAe,CAAC,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAA;AAC1D,CAAC"}
@@ -2,6 +2,9 @@ import { describe, it } from 'node:test';
2
2
  import { expect } from 'expect';
3
3
  import { Duration } from '../duration.js';
4
4
  import { DurationUnit } from '../duration-unit.enum.js';
5
+ import { DistanceUnit } from '../../distance/distance-unit.enum.js';
6
+ import { Speed } from '../../speed/speed.js';
7
+ import { SpeedUnit } from '../../speed/speed-unit.enum.js';
5
8
  describe('Duration unit tests', () => {
6
9
  describe('milliseconds', () => {
7
10
  it('reports the correct amount of seconds', () => {
@@ -34,5 +37,15 @@ describe('Duration unit tests', () => {
34
37
  expect(duration.unit).toBe(DurationUnit.DAYS);
35
38
  });
36
39
  });
40
+ describe('Duration calculations', () => {
41
+ describe('cross quantity calculations', () => {
42
+ it('multiplies durations with speeds into distances with converted units', () => {
43
+ const duration = new Duration(30, DurationUnit.MINUTES);
44
+ const speed = new Speed(72, SpeedUnit.KILOMETER_PER_HOUR);
45
+ const distance = duration.multiply(speed);
46
+ expect(distance.isEqualTo(36, DistanceUnit.KILOMETER)).toBe(true);
47
+ });
48
+ });
49
+ });
37
50
  });
38
51
  //# sourceMappingURL=duration.unit.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"duration.unit.test.js","sourceRoot":"","sources":["../../../../lib/quantities/duration/tests/duration.unit.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAEvD,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAA;YAEpD,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAC9C,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAA;YAEpD,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAA;YAEpD,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACnC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACrB,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,CAAC,EAAE,YAAY,CAAC,KAAK,CAAC,CAAA;YAEpD,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAChC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACjC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAA;YAEtC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAC9B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QAC/C,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"duration.unit.test.js","sourceRoot":"","sources":["../../../../lib/quantities/duration/tests/duration.unit.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import { QuantityColumnOptions } from '../../quantity.column.js';
2
2
  import { Energy } from './energy.js';
3
3
  import { EnergyUnit } from './energy-unit.enum.js';
4
- export declare function EnergyColumn(storeAsUnit: EnergyUnit, options?: QuantityColumnOptions<EnergyUnit, Energy>): PropertyDecorator;
4
+ export declare function EnergyColumn(storeAsUnit: EnergyUnit, options?: QuantityColumnOptions<Energy>): PropertyDecorator;
@@ -1 +1 @@
1
- {"version":3,"file":"energy.column.js","sourceRoot":"","sources":["../../../lib/quantities/energy/energy.column.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAyB,MAAM,0BAA0B,CAAA;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGpC,MAAM,UAAU,YAAY,CAC1B,WAAuB,EACvB,OAAmD;IAEnD,OAAO,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;AACrD,CAAC"}
1
+ {"version":3,"file":"energy.column.js","sourceRoot":"","sources":["../../../lib/quantities/energy/energy.column.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAyB,MAAM,0BAA0B,CAAA;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGpC,MAAM,UAAU,YAAY,CAC1B,WAAuB,EACvB,OAAuC;IAEvC,OAAO,cAAc,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;AACrD,CAAC"}
@@ -1,9 +1,19 @@
1
- import { Quantity } from '../../quantity.js';
1
+ import { Duration } from '../../quantities/duration/duration.js';
2
+ import { Power } from '../../quantities/power/power.js';
3
+ import { Rate } from '../../rate/rate.js';
4
+ import { ScalableQuantity } from '../../quantity.js';
2
5
  import { EnergyUnit } from './energy-unit.enum.js';
3
- export declare class Energy extends Quantity<EnergyUnit, Energy> {
6
+ export declare class Energy extends ScalableQuantity<EnergyUnit, Energy, Energy> {
7
+ protected getQuantity(): typeof Energy;
8
+ protected getDelta(): typeof Energy;
4
9
  protected getBaseUnit(): EnergyUnit;
5
10
  protected getUnits(): readonly EnergyUnit[];
6
11
  protected convertValueToBaseUnit(value: number, unit: EnergyUnit): number;
7
12
  protected convertBaseUnitValueTo(value: number, unit: EnergyUnit): number;
8
13
  static ZERO: Energy;
14
+ divide(divisor: number): Energy;
15
+ divide(rate: Rate): Energy;
16
+ divide(value: number, unit: EnergyUnit): number;
17
+ divide(quantity: Energy): number;
18
+ divide(quantity: Duration): Power;
9
19
  }
@@ -1,4 +1,7 @@
1
- import { Quantity } from '../../quantity.js';
1
+ import { Duration } from '../../quantities/duration/duration.js';
2
+ import { PowerUnit } from '../../quantities/power/power-unit.enum.js';
3
+ import { Power } from '../../quantities/power/power.js';
4
+ import { ScalableQuantity } from '../../quantity.js';
2
5
  import { EnergyUnit } from './energy-unit.enum.js';
3
6
  const ENERGY_MULTIPLIERS = {
4
7
  [EnergyUnit.JOULE]: 1,
@@ -41,7 +44,13 @@ const ENERGY_MULTIPLIERS = {
41
44
  [EnergyUnit.CALORIE]: 4.184,
42
45
  [EnergyUnit.KILOCALORIE]: 4184
43
46
  };
44
- export class Energy extends Quantity {
47
+ export class Energy extends ScalableQuantity {
48
+ getQuantity() {
49
+ return Energy;
50
+ }
51
+ getDelta() {
52
+ return Energy;
53
+ }
45
54
  getBaseUnit() {
46
55
  return EnergyUnit.JOULE;
47
56
  }
@@ -55,5 +64,11 @@ export class Energy extends Quantity {
55
64
  return value / ENERGY_MULTIPLIERS[unit];
56
65
  }
57
66
  static ZERO = new Energy(0, EnergyUnit.JOULE);
67
+ divide(divisor, unit) {
68
+ if (divisor instanceof Duration) {
69
+ return new Power(this.valueOf() / divisor.valueOf(), PowerUnit.WATT);
70
+ }
71
+ return super.divide(divisor, unit);
72
+ }
58
73
  }
59
74
  //# sourceMappingURL=energy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"energy.js","sourceRoot":"","sources":["../../../lib/quantities/energy/energy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"energy.js","sourceRoot":"","sources":["../../../lib/quantities/energy/energy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uCAAuC,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,2CAA2C,CAAA;AACrE,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAA;AAEvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,MAAM,kBAAkB,GAA+B;IACrD,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;IAErB,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI;IAC5B,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,IAAI;IAC7B,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,IAAI;IAC7B,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,IAAI;IAC7B,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI;IAC5B,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,KAAK;IAC7B,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,KAAK;IAC9B,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,KAAK;IAC7B,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,KAAK;IAC9B,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,KAAK;IAC9B,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,KAAK;IAC9B,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,KAAK;IAE/B,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,GAAG;IAC3B,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,GAAG;IAC5B,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,GAAG;IAC3B,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,GAAG;IAC3B,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,GAAG;IAC3B,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI;IAC5B,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI;IAC5B,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,IAAI;IAC3B,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,IAAI;IAC7B,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,IAAI;IAC7B,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,IAAI;IAC7B,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,IAAI;IAE7B,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,IAAI;IAC5B,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,IAAI,GAAG,GAAG;IACtC,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,IAAI,GAAG,GAAG;IACtC,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,IAAI,GAAG,GAAG;IACtC,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,IAAI,GAAG,IAAI;IACvC,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,IAAI,GAAG,IAAI;IACvC,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,IAAI,GAAG,IAAI;IACtC,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,IAAI,GAAG,IAAI;IACxC,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,IAAI,GAAG,IAAI;IACxC,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,IAAI,GAAG,IAAI;IACxC,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,IAAI,GAAG,IAAI;IAEzC,0CAA0C;IAC1C,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK;IAC3B,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,IAAI;CAC/B,CAAA;AAED,MAAM,OAAO,MAAO,SAAQ,gBAA4C;IAC5D,WAAW;QACnB,OAAO,MAAM,CAAA;IACf,CAAC;IAES,QAAQ;QAChB,OAAO,MAAM,CAAA;IACf,CAAC;IAES,WAAW;QACnB,OAAO,UAAU,CAAC,KAAK,CAAA;IACzB,CAAC;IAES,QAAQ;QAChB,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAClC,CAAC;IAES,sBAAsB,CAAE,KAAa,EAAE,IAAgB;QAC/D,OAAO,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAA;IACzC,CAAC;IAES,sBAAsB,CAAE,KAAa,EAAE,IAAgB;QAC/D,OAAO,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAA;IACzC,CAAC;IAED,MAAM,CAAC,IAAI,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,CAAA;IAOpC,MAAM,CAAC,OAA0C,EAAE,IAAiB;QAC3E,IAAI,OAAO,YAAY,QAAQ,EAAE,CAAC;YAChC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,IAAI,CAAC,CAAA;QACtE,CAAC;QACD,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IACpC,CAAC"}
@@ -1,4 +1,3 @@
1
1
  import { IsQuantityOptions } from '../../validators/is-quantity.decorator.js';
2
- import { EnergyUnit } from './energy-unit.enum.js';
3
2
  import { Energy } from './energy.js';
4
- export declare function IsEnergy(options?: IsQuantityOptions<EnergyUnit, Energy>): PropertyDecorator;
3
+ export declare function IsEnergy(options?: IsQuantityOptions<Energy>): PropertyDecorator;
@@ -1 +1 @@
1
- {"version":3,"file":"is-energy.validator.js","sourceRoot":"","sources":["../../../lib/quantities/energy/is-energy.validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAqB,MAAM,2CAA2C,CAAA;AACzF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAI3C,MAAM,UAAU,QAAQ,CACtB,OAA+C;IAE/C,OAAO,eAAe,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;AACxD,CAAC"}
1
+ {"version":3,"file":"is-energy.validator.js","sourceRoot":"","sources":["../../../lib/quantities/energy/is-energy.validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAqB,MAAM,2CAA2C,CAAA;AACzF,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAG3C,MAAM,UAAU,QAAQ,CACtB,OAAmC;IAEnC,OAAO,eAAe,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;AACxD,CAAC"}
@@ -2,6 +2,9 @@ import { describe, it } from 'node:test';
2
2
  import { expect } from 'expect';
3
3
  import { Energy } from '../energy.js';
4
4
  import { EnergyUnit } from '../energy-unit.enum.js';
5
+ import { Duration } from '../../duration/duration.js';
6
+ import { DurationUnit } from '../../duration/duration-unit.enum.js';
7
+ import { PowerUnit } from '../../power/power-unit.enum.js';
5
8
  void describe('Energy class', () => {
6
9
  void describe('Energy parsing', () => {
7
10
  void it('parses energy strings', () => {
@@ -34,5 +37,15 @@ void describe('Energy class', () => {
34
37
  expect(energy.asNumber(EnergyUnit.CALORIE)).toBe(1000);
35
38
  });
36
39
  });
40
+ void describe('Energy calculations', () => {
41
+ void describe('cross quantity calculations', () => {
42
+ void it('divides energies by durations into powers with converted units', () => {
43
+ const energy = new Energy(1, EnergyUnit.KILOWATT_HOUR);
44
+ const duration = new Duration(2, DurationUnit.HOURS);
45
+ const power = energy.divide(duration);
46
+ expect(power.isEqualTo(500, PowerUnit.WATT)).toBe(true);
47
+ });
48
+ });
49
+ });
37
50
  });
38
51
  //# sourceMappingURL=energy.unit.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"energy.unit.test.js","sourceRoot":"","sources":["../../../../lib/quantities/energy/tests/energy.unit.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAEnD,KAAK,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IACjC,KAAK,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QACnC,KAAK,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;YACpC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,CAAA;YAEpC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC/B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAA;QACpD,CAAC,CAAC,CAAA;QAEF,KAAK,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YACrC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAA;YAEnC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC9B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QAC9C,CAAC,CAAC,CAAA;QAEF,KAAK,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACzC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAA;YAElC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAC5B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;QAClD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,KAAK,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACtC,KAAK,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YAC1C,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;YAEhD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACvD,CAAC,CAAC,CAAA;QAEF,KAAK,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YAC9C,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAA;YAEpD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACtD,CAAC,CAAC,CAAA;QAEF,KAAK,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAChD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,CAAC,EAAE,UAAU,CAAC,WAAW,CAAC,CAAA;YAEpD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"energy.unit.test.js","sourceRoot":"","sources":["../../../../lib/quantities/energy/tests/energy.unit.test.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,3 @@
1
1
  import { IsQuantityOptions } from '../../validators/is-quantity.decorator.js';
2
- import { MassUnit } from './mass-unit.enum.js';
3
2
  import { Mass } from './mass.js';
4
- export declare function IsMass(options?: IsQuantityOptions<MassUnit, Mass>): PropertyDecorator;
3
+ export declare function IsMass(options?: IsQuantityOptions<Mass>): PropertyDecorator;
@@ -1 +1 @@
1
- {"version":3,"file":"is-mass.validator.js","sourceRoot":"","sources":["../../../lib/quantities/mass/is-mass.validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAqB,MAAM,2CAA2C,CAAA;AACzF,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAIvC,MAAM,UAAU,MAAM,CACpB,OAA2C;IAE3C,OAAO,eAAe,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;AACtD,CAAC"}
1
+ {"version":3,"file":"is-mass.validator.js","sourceRoot":"","sources":["../../../lib/quantities/mass/is-mass.validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAqB,MAAM,2CAA2C,CAAA;AACzF,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAGvC,MAAM,UAAU,MAAM,CACpB,OAAiC;IAEjC,OAAO,eAAe,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAA;AACtD,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import { QuantityColumnOptions } from '../../quantity.column.js';
2
2
  import { MassUnit } from './mass-unit.enum.js';
3
3
  import { Mass } from './mass.js';
4
- export declare function MassColumn(storeAsUnit: MassUnit, options?: QuantityColumnOptions<MassUnit, Mass>): PropertyDecorator;
4
+ export declare function MassColumn(storeAsUnit: MassUnit, options?: QuantityColumnOptions<Mass>): PropertyDecorator;
@@ -1 +1 @@
1
- {"version":3,"file":"mass.column.js","sourceRoot":"","sources":["../../../lib/quantities/mass/mass.column.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAyB,MAAM,0BAA0B,CAAA;AAEhF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,MAAM,UAAU,UAAU,CACxB,WAAqB,EACrB,OAA+C;IAE/C,OAAO,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;AACnD,CAAC"}
1
+ {"version":3,"file":"mass.column.js","sourceRoot":"","sources":["../../../lib/quantities/mass/mass.column.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAyB,MAAM,0BAA0B,CAAA;AAEhF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,MAAM,UAAU,UAAU,CACxB,WAAqB,EACrB,OAAqC;IAErC,OAAO,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;AACnD,CAAC"}
@@ -1,6 +1,8 @@
1
- import { Quantity } from '../../quantity.js';
1
+ import { ScalableQuantity } from '../../quantity.js';
2
2
  import { MassUnit } from './mass-unit.enum.js';
3
- export declare class Mass extends Quantity<MassUnit, Mass> {
3
+ export declare class Mass extends ScalableQuantity<MassUnit, Mass, Mass> {
4
+ protected getQuantity(): typeof Mass;
5
+ protected getDelta(): typeof Mass;
4
6
  protected getBaseUnit(): MassUnit;
5
7
  protected getUnits(): readonly MassUnit[];
6
8
  protected convertValueToBaseUnit(value: number, fromUnit: MassUnit): number;
@@ -1,4 +1,4 @@
1
- import { Quantity } from '../../quantity.js';
1
+ import { ScalableQuantity } from '../../quantity.js';
2
2
  import { MassUnit } from './mass-unit.enum.js';
3
3
  const MASS_MULTIPLIERS = {
4
4
  [MassUnit.KILOGRAM]: 1,
@@ -14,7 +14,13 @@ const MASS_MULTIPLIERS = {
14
14
  [MassUnit.POUND]: 0.45359237,
15
15
  [MassUnit.OUNCE]: 0.028349523125
16
16
  };
17
- export class Mass extends Quantity {
17
+ export class Mass extends ScalableQuantity {
18
+ getQuantity() {
19
+ return Mass;
20
+ }
21
+ getDelta() {
22
+ return Mass;
23
+ }
18
24
  getBaseUnit() {
19
25
  return MassUnit.KILOGRAM;
20
26
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mass.js","sourceRoot":"","sources":["../../../lib/quantities/mass/mass.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE9C,MAAM,gBAAgB,GAA6B;IACjD,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;IAEtB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI;IACrB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI;IACzB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI;IAC1B,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI;IAC1B,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI;IAC1B,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK;IAE1B,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI;IACzB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI;IAE1B,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG;IAErB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU;IAC5B,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc;CACjC,CAAA;AAED,MAAM,OAAO,IAAK,SAAQ,QAAwB;IACtC,WAAW;QACnB,OAAO,QAAQ,CAAC,QAAQ,CAAA;IAC1B,CAAC;IAES,QAAQ;QAChB,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAChC,CAAC;IAES,sBAAsB,CAAE,KAAa,EAAE,QAAkB;QACjE,OAAO,KAAK,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IAC3C,CAAC;IAES,sBAAsB,CAAE,KAAa,EAAE,MAAgB;QAC/D,OAAO,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;IACzC,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACzC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IACrC,CAAC;IAED,MAAM,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAA"}
1
+ {"version":3,"file":"mass.js","sourceRoot":"","sources":["../../../lib/quantities/mass/mass.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAE9C,MAAM,gBAAgB,GAA6B;IACjD,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;IAEtB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI;IACrB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI;IACzB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI;IAC1B,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI;IAC1B,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI;IAC1B,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK;IAE1B,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI;IACzB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI;IAE1B,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,GAAG;IAErB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,UAAU;IAC5B,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,cAAc;CACjC,CAAA;AAED,MAAM,OAAO,IAAK,SAAQ,gBAAsC;IACpD,WAAW;QACnB,OAAO,IAAI,CAAA;IACb,CAAC;IAES,QAAQ;QAChB,OAAO,IAAI,CAAA;IACb,CAAC;IAES,WAAW;QACnB,OAAO,QAAQ,CAAC,QAAQ,CAAA;IAC1B,CAAC;IAES,QAAQ;QAChB,OAAO,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAChC,CAAC;IAES,sBAAsB,CAAE,KAAa,EAAE,QAAkB;QACjE,OAAO,KAAK,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IAC3C,CAAC;IAES,sBAAsB,CAAE,KAAa,EAAE,MAAgB;QAC/D,OAAO,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;IACzC,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACzC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IACrC,CAAC;IAED,MAAM,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAA"}
@@ -1,4 +1,3 @@
1
1
  import { IsQuantityOptions } from '../../validators/is-quantity.decorator.js';
2
- import { PowerUnit } from './power-unit.enum.js';
3
2
  import { Power } from './power.js';
4
- export declare function IsPower(options?: IsQuantityOptions<PowerUnit, Power>): PropertyDecorator;
3
+ export declare function IsPower(options?: IsQuantityOptions<Power>): PropertyDecorator;
@@ -1 +1 @@
1
- {"version":3,"file":"is-power.validator.js","sourceRoot":"","sources":["../../../lib/quantities/power/is-power.validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAqB,MAAM,2CAA2C,CAAA;AACzF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAIzC,MAAM,UAAU,OAAO,CACrB,OAA6C;IAE7C,OAAO,eAAe,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;AACvD,CAAC"}
1
+ {"version":3,"file":"is-power.validator.js","sourceRoot":"","sources":["../../../lib/quantities/power/is-power.validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAqB,MAAM,2CAA2C,CAAA;AACzF,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAGzC,MAAM,UAAU,OAAO,CACrB,OAAkC;IAElC,OAAO,eAAe,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;AACvD,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import { QuantityColumnOptions } from '../../quantity.column.js';
2
2
  import { PowerUnit } from './power-unit.enum.js';
3
3
  import { Power } from './power.js';
4
- export declare function PowerColumn(storeAsUnit: PowerUnit, options?: QuantityColumnOptions<PowerUnit, Power>): PropertyDecorator;
4
+ export declare function PowerColumn(storeAsUnit: PowerUnit, options?: QuantityColumnOptions<Power>): PropertyDecorator;
@@ -1 +1 @@
1
- {"version":3,"file":"power.column.js","sourceRoot":"","sources":["../../../lib/quantities/power/power.column.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAyB,MAAM,0BAA0B,CAAA;AAEhF,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAElC,MAAM,UAAU,WAAW,CACzB,WAAsB,EACtB,OAAiD;IAEjD,OAAO,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;AACpD,CAAC"}
1
+ {"version":3,"file":"power.column.js","sourceRoot":"","sources":["../../../lib/quantities/power/power.column.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAyB,MAAM,0BAA0B,CAAA;AAEhF,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAElC,MAAM,UAAU,WAAW,CACzB,WAAsB,EACtB,OAAsC;IAEtC,OAAO,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;AACpD,CAAC"}