@wisemen/quantity 0.4.0 → 0.4.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 (112) hide show
  1. package/dist/index.d.ts +0 -1
  2. package/dist/index.js +0 -1
  3. package/dist/index.js.map +1 -1
  4. package/dist/quantities/current/current.column.d.ts +3 -2
  5. package/dist/quantities/current/current.column.js.map +1 -1
  6. package/dist/quantities/current/index.d.ts +1 -0
  7. package/dist/quantities/current/index.js +1 -0
  8. package/dist/quantities/current/index.js.map +1 -1
  9. package/dist/quantities/current/is-current.validator.d.ts +4 -0
  10. package/dist/quantities/current/is-current.validator.js +7 -0
  11. package/dist/quantities/current/is-current.validator.js.map +1 -0
  12. package/dist/quantities/distance/distance.column.d.ts +3 -2
  13. package/dist/quantities/distance/distance.column.js.map +1 -1
  14. package/dist/quantities/distance/distance.d.ts +0 -6
  15. package/dist/quantities/distance/distance.dto.d.ts +2 -1
  16. package/dist/quantities/distance/distance.dto.js +2 -1
  17. package/dist/quantities/distance/distance.dto.js.map +1 -1
  18. package/dist/quantities/distance/distance.js +0 -15
  19. package/dist/quantities/distance/distance.js.map +1 -1
  20. package/dist/quantities/distance/index.d.ts +1 -0
  21. package/dist/quantities/distance/index.js +1 -0
  22. package/dist/quantities/distance/index.js.map +1 -1
  23. package/dist/quantities/distance/is-distance.validator.d.ts +4 -0
  24. package/dist/quantities/distance/is-distance.validator.js +7 -0
  25. package/dist/quantities/distance/is-distance.validator.js.map +1 -0
  26. package/dist/quantities/distance/tests/distance.unit.test.js +0 -9
  27. package/dist/quantities/distance/tests/distance.unit.test.js.map +1 -1
  28. package/dist/quantities/duration/duration.column.d.ts +3 -2
  29. package/dist/quantities/duration/duration.column.js.map +1 -1
  30. package/dist/quantities/duration/index.d.ts +1 -0
  31. package/dist/quantities/duration/index.js +1 -0
  32. package/dist/quantities/duration/index.js.map +1 -1
  33. package/dist/quantities/duration/is-duration.validator.d.ts +4 -0
  34. package/dist/quantities/duration/is-duration.validator.js +7 -0
  35. package/dist/quantities/duration/is-duration.validator.js.map +1 -0
  36. package/dist/quantities/energy/energy.column.d.ts +3 -2
  37. package/dist/quantities/energy/energy.column.js.map +1 -1
  38. package/dist/quantities/energy/index.d.ts +1 -0
  39. package/dist/quantities/energy/index.js +1 -0
  40. package/dist/quantities/energy/index.js.map +1 -1
  41. package/dist/quantities/energy/is-energy.validator.d.ts +4 -0
  42. package/dist/quantities/energy/is-energy.validator.js +7 -0
  43. package/dist/quantities/energy/is-energy.validator.js.map +1 -0
  44. package/dist/quantities/mass/index.d.ts +1 -0
  45. package/dist/quantities/mass/index.js +1 -0
  46. package/dist/quantities/mass/index.js.map +1 -1
  47. package/dist/quantities/mass/is-mass.validator.d.ts +4 -0
  48. package/dist/quantities/mass/is-mass.validator.js +7 -0
  49. package/dist/quantities/mass/is-mass.validator.js.map +1 -0
  50. package/dist/quantities/mass/mass.column.d.ts +3 -2
  51. package/dist/quantities/mass/mass.column.js.map +1 -1
  52. package/dist/quantities/mass/mass.dto.d.ts +2 -1
  53. package/dist/quantities/mass/mass.dto.js +2 -1
  54. package/dist/quantities/mass/mass.dto.js.map +1 -1
  55. package/dist/quantities/power/index.d.ts +1 -0
  56. package/dist/quantities/power/index.js +1 -0
  57. package/dist/quantities/power/index.js.map +1 -1
  58. package/dist/quantities/power/is-power.validator.d.ts +4 -0
  59. package/dist/quantities/power/is-power.validator.js +7 -0
  60. package/dist/quantities/power/is-power.validator.js.map +1 -0
  61. package/dist/quantities/power/power.column.d.ts +3 -2
  62. package/dist/quantities/power/power.column.js.map +1 -1
  63. package/dist/quantities/speed/index.d.ts +1 -0
  64. package/dist/quantities/speed/index.js +1 -0
  65. package/dist/quantities/speed/index.js.map +1 -1
  66. package/dist/quantities/speed/is-speed.validator.d.ts +4 -0
  67. package/dist/quantities/speed/is-speed.validator.js +7 -0
  68. package/dist/quantities/speed/is-speed.validator.js.map +1 -0
  69. package/dist/quantities/speed/speed.column.d.ts +3 -2
  70. package/dist/quantities/speed/speed.column.js.map +1 -1
  71. package/dist/quantities/temperature/index.d.ts +1 -0
  72. package/dist/quantities/temperature/index.js +1 -0
  73. package/dist/quantities/temperature/index.js.map +1 -1
  74. package/dist/quantities/temperature/is-temperature.validator.d.ts +4 -0
  75. package/dist/quantities/temperature/is-temperature.validator.js +7 -0
  76. package/dist/quantities/temperature/is-temperature.validator.js.map +1 -0
  77. package/dist/quantity.column.d.ts +5 -1
  78. package/dist/quantity.column.js +5 -6
  79. package/dist/quantity.column.js.map +1 -1
  80. package/dist/quantity.dto.d.ts +4 -0
  81. package/dist/quantity.dto.js +3 -0
  82. package/dist/quantity.dto.js.map +1 -0
  83. package/dist/validators/is-quantity.decorator.d.ts +9 -0
  84. package/dist/validators/is-quantity.decorator.js +22 -0
  85. package/dist/validators/is-quantity.decorator.js.map +1 -0
  86. package/dist/validators/max-quantity.validator.d.ts +8 -0
  87. package/dist/validators/max-quantity.validator.js +18 -0
  88. package/dist/validators/max-quantity.validator.js.map +1 -0
  89. package/dist/validators/min-quantity.validator.d.ts +8 -0
  90. package/dist/validators/min-quantity.validator.js +18 -0
  91. package/dist/validators/min-quantity.validator.js.map +1 -0
  92. package/dist/validators/tests/is-quantity.decorator.unit.test.js +170 -0
  93. package/dist/validators/tests/is-quantity.decorator.unit.test.js.map +1 -0
  94. package/package.json +28 -23
  95. package/dist/quantities/voltage/index.d.ts +0 -4
  96. package/dist/quantities/voltage/index.js +0 -5
  97. package/dist/quantities/voltage/index.js.map +0 -1
  98. package/dist/quantities/voltage/tests/voltage.unit.test.js +0 -100
  99. package/dist/quantities/voltage/tests/voltage.unit.test.js.map +0 -1
  100. package/dist/quantities/voltage/voltage-unit.enum.d.ts +0 -7
  101. package/dist/quantities/voltage/voltage-unit.enum.js +0 -16
  102. package/dist/quantities/voltage/voltage-unit.enum.js.map +0 -1
  103. package/dist/quantities/voltage/voltage.column.d.ts +0 -3
  104. package/dist/quantities/voltage/voltage.column.js +0 -6
  105. package/dist/quantities/voltage/voltage.column.js.map +0 -1
  106. package/dist/quantities/voltage/voltage.d.ts +0 -8
  107. package/dist/quantities/voltage/voltage.dto.d.ts +0 -21
  108. package/dist/quantities/voltage/voltage.dto.js +0 -60
  109. package/dist/quantities/voltage/voltage.dto.js.map +0 -1
  110. package/dist/quantities/voltage/voltage.js +0 -20
  111. package/dist/quantities/voltage/voltage.js.map +0 -1
  112. /package/dist/{quantities/voltage/tests/voltage.unit.test.d.ts → validators/tests/is-quantity.decorator.unit.test.d.ts} +0 -0
@@ -1,6 +1,9 @@
1
1
  import { ColumnOptions, ValueTransformer } from 'typeorm';
2
2
  import { Quantity, QuantityConstructor } from './quantity.js';
3
- export declare function QuantityColumn<U extends string, Q extends Quantity<U, Q>>(QuantityConstructor: QuantityConstructor<U, Q>, storeAsUnit: U, options?: Omit<ColumnOptions, 'type' | 'transformer'>): PropertyDecorator;
3
+ export type QuantityColumnOptions<U extends string, Q extends Quantity<U, Q>> = Omit<ColumnOptions, 'type' | 'transformer' | 'default'> & {
4
+ default?: Q;
5
+ };
6
+ export declare function QuantityColumn<U extends string, Q extends Quantity<U, Q>>(QuantityConstructor: QuantityConstructor<U, Q>, storeAsUnit: U, options?: QuantityColumnOptions<U, Q>): PropertyDecorator;
4
7
  export declare class QuantityTypeOrmTransformer<U extends string, Q extends Quantity<U, Q>> implements ValueTransformer {
5
8
  private readonly QuantityConstructor;
6
9
  private readonly storedUnit;
@@ -9,4 +12,5 @@ export declare class QuantityTypeOrmTransformer<U extends string, Q extends Quan
9
12
  from(value: number | null): Q | null;
10
13
  to(quantity: Q): number;
11
14
  to(quantity: Q | null): number | null;
15
+ to(quantity: Q | null | undefined): number | null | undefined;
12
16
  }
@@ -1,9 +1,11 @@
1
1
  import { Column } from 'typeorm';
2
2
  export function QuantityColumn(QuantityConstructor, storeAsUnit, options) {
3
+ const transformer = new QuantityTypeOrmTransformer(QuantityConstructor, storeAsUnit);
3
4
  return Column({
4
5
  ...options,
6
+ default: transformer.to(options?.default),
5
7
  type: 'float',
6
- transformer: new QuantityTypeOrmTransformer(QuantityConstructor, storeAsUnit)
8
+ transformer
7
9
  });
8
10
  }
9
11
  export class QuantityTypeOrmTransformer {
@@ -20,11 +22,8 @@ export class QuantityTypeOrmTransformer {
20
22
  return new this.QuantityConstructor(value, this.storedUnit);
21
23
  }
22
24
  to(quantity) {
23
- if (quantity === null) {
24
- return null;
25
- }
26
- if (quantity === undefined) {
27
- return null;
25
+ if (quantity === undefined || quantity === null) {
26
+ return quantity;
28
27
  }
29
28
  return quantity.asNumber(this.storedUnit);
30
29
  }
@@ -1 +1 @@
1
- {"version":3,"file":"quantity.column.js","sourceRoot":"","sources":["../lib/quantity.column.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAmC,MAAM,SAAS,CAAA;AAGjE,MAAM,UAAU,cAAc,CAC5B,mBAA8C,EAC9C,WAAc,EACd,OAAqD;IAErD,OAAO,MAAM,CAAC;QACZ,GAAG,OAAO;QACV,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,IAAI,0BAA0B,CAAC,mBAAmB,EAAE,WAAW,CAAC;KAC9E,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,OAAO,0BAA0B;IAGlB;IACA;IAFnB,YACmB,mBAA8C,EAC9C,UAAa;QADb,wBAAmB,GAAnB,mBAAmB,CAA2B;QAC9C,eAAU,GAAV,UAAU,CAAG;IAC7B,CAAC;IAIJ,IAAI,CAAE,KAAoB;QACxB,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IAC7D,CAAC;IAID,EAAE,CAAE,QAA8B;QAChC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC3C,CAAC;CACF"}
1
+ {"version":3,"file":"quantity.column.js","sourceRoot":"","sources":["../lib/quantity.column.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAmC,MAAM,SAAS,CAAA;AAMjE,MAAM,UAAU,cAAc,CAC5B,mBAA8C,EAC9C,WAAc,EACd,OAAqC;IAErC,MAAM,WAAW,GAAG,IAAI,0BAA0B,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAA;IAEpF,OAAO,MAAM,CAAC;QACZ,GAAG,OAAO;QACV,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC;QACzC,IAAI,EAAE,OAAO;QACb,WAAW;KACZ,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,OAAO,0BAA0B;IAGlB;IACA;IAFnB,YACmB,mBAA8C,EAC9C,UAAa;QADb,wBAAmB,GAAnB,mBAAmB,CAA2B;QAC9C,eAAU,GAAV,UAAU,CAAG;IAC7B,CAAC;IAIJ,IAAI,CAAE,KAAoB;QACxB,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAA;IAC7D,CAAC;IAKD,EAAE,CAAE,QAA8B;QAChC,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YAChD,OAAO,QAAQ,CAAA;QACjB,CAAC;QAED,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAC3C,CAAC;CACF"}
@@ -0,0 +1,4 @@
1
+ import { Quantity } from './quantity.js';
2
+ export declare abstract class QuantityDto<Q extends Quantity<string, Q>> {
3
+ abstract parse(): Q;
4
+ }
@@ -0,0 +1,3 @@
1
+ export class QuantityDto {
2
+ }
3
+ //# sourceMappingURL=quantity.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quantity.dto.js","sourceRoot":"","sources":["../lib/quantity.dto.ts"],"names":[],"mappings":"AAEA,MAAM,OAAgB,WAAW;CAEhC"}
@@ -0,0 +1,9 @@
1
+ import { ClassConstructor } from 'class-transformer';
2
+ import { ValidationOptions } from 'class-validator';
3
+ import { Quantity } from '../quantity.js';
4
+ import { QuantityDto } from '../quantity.dto.js';
5
+ export interface IsQuantityOptions<U extends string, Q extends Quantity<U, Q>> extends ValidationOptions {
6
+ min?: Q;
7
+ max?: Q;
8
+ }
9
+ export declare function IsQuantity<U extends string, Q extends Quantity<U, Q>>(quantityClass: ClassConstructor<QuantityDto<Q>>, options?: IsQuantityOptions<U, Q>): PropertyDecorator;
@@ -0,0 +1,22 @@
1
+ import { Type } from 'class-transformer';
2
+ import { applyDecorators } from '@nestjs/common';
3
+ import { IsObject, ValidateBy, ValidateNested } from 'class-validator';
4
+ import { MinQuantityValidator } from './min-quantity.validator.js';
5
+ import { MaxQuantityValidator } from './max-quantity.validator.js';
6
+ export function IsQuantity(quantityClass, options) {
7
+ const decorators = [
8
+ Type(() => quantityClass),
9
+ ValidateNested(options),
10
+ IsObject(options)
11
+ ];
12
+ if (options?.min !== undefined) {
13
+ const validator = new MinQuantityValidator(options.min);
14
+ decorators.push(ValidateBy({ name: 'minQuantityValidator', validator }));
15
+ }
16
+ if (options?.max !== undefined) {
17
+ const validator = new MaxQuantityValidator(options.max);
18
+ decorators.push(ValidateBy({ name: 'maxQuantityValidator', validator }));
19
+ }
20
+ return applyDecorators(...decorators);
21
+ }
22
+ //# sourceMappingURL=is-quantity.decorator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-quantity.decorator.js","sourceRoot":"","sources":["../../lib/validators/is-quantity.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc,EAAqB,MAAM,iBAAiB,CAAA;AAGzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAQlE,MAAM,UAAU,UAAU,CACxB,aAA+C,EAC/C,OAAiC;IAEjC,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC;QACzB,cAAc,CAAC,OAAO,CAAC;QACvB,QAAQ,CAAC,OAAO,CAAC;KAClB,CAAA;IAED,IAAI,OAAO,EAAE,GAAG,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAEvD,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;IAC1E,CAAC;IAED,IAAI,OAAO,EAAE,GAAG,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAI,oBAAoB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAEvD,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,SAAS,EAAE,CAAC,CAAC,CAAA;IAC1E,CAAC;IAED,OAAO,eAAe,CAAC,GAAG,UAAU,CAAC,CAAA;AACvC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { ValidatorConstraintInterface, ValidationArguments } from 'class-validator';
2
+ import { Quantity } from '../quantity.js';
3
+ export declare class MaxQuantityValidator<U extends string, Q extends Quantity<U, Q>> implements ValidatorConstraintInterface {
4
+ private max;
5
+ constructor(max: Q);
6
+ validate(q: unknown, _args: ValidationArguments): boolean;
7
+ defaultMessage(args: ValidationArguments): string;
8
+ }
@@ -0,0 +1,18 @@
1
+ import { QuantityDto } from '../quantity.dto.js';
2
+ export class MaxQuantityValidator {
3
+ max;
4
+ constructor(max) {
5
+ this.max = max;
6
+ }
7
+ validate(q, _args) {
8
+ if (!(q instanceof QuantityDto)) {
9
+ return false;
10
+ }
11
+ const value = q.parse();
12
+ return this.max.isMoreThanOrEqualTo(value);
13
+ }
14
+ defaultMessage(args) {
15
+ return `${args.property} must be <= ${this.max.toString()}`;
16
+ }
17
+ }
18
+ //# sourceMappingURL=max-quantity.validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"max-quantity.validator.js","sourceRoot":"","sources":["../../lib/validators/max-quantity.validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGhD,MAAM,OAAO,oBAAoB;IAGrB;IADV,YACU,GAAM;QAAN,QAAG,GAAH,GAAG,CAAG;IACb,CAAC;IAEJ,QAAQ,CAAE,CAAU,EAAE,KAA0B;QAC9C,IAAI,CAAC,CAAC,CAAC,YAAY,WAAW,CAAC,EAAE,CAAC;YAChC,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,EAAO,CAAA;QAE5B,OAAO,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;IAC5C,CAAC;IAED,cAAc,CAAE,IAAyB;QACvC,OAAO,GAAG,IAAI,CAAC,QAAQ,eAAe,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAA;IAC7D,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ import { ValidatorConstraintInterface, ValidationArguments } from 'class-validator';
2
+ import { Quantity } from '../quantity.js';
3
+ export declare class MinQuantityValidator<U extends string, Q extends Quantity<U, Q>> implements ValidatorConstraintInterface {
4
+ private min;
5
+ constructor(min: Q);
6
+ validate(q: unknown, _args: ValidationArguments): boolean;
7
+ defaultMessage(args: ValidationArguments): string;
8
+ }
@@ -0,0 +1,18 @@
1
+ import { QuantityDto } from '../quantity.dto.js';
2
+ export class MinQuantityValidator {
3
+ min;
4
+ constructor(min) {
5
+ this.min = min;
6
+ }
7
+ validate(q, _args) {
8
+ if (!(q instanceof QuantityDto)) {
9
+ return false;
10
+ }
11
+ const value = q.parse();
12
+ return this.min.isLessThanOrEqualTo(value);
13
+ }
14
+ defaultMessage(args) {
15
+ return `${args.property} must be >= ${this.min.toString()}`;
16
+ }
17
+ }
18
+ //# sourceMappingURL=min-quantity.validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"min-quantity.validator.js","sourceRoot":"","sources":["../../lib/validators/min-quantity.validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGhD,MAAM,OAAO,oBAAoB;IAGrB;IADV,YACU,GAAM;QAAN,QAAG,GAAH,GAAG,CAAG;IACb,CAAC;IAEJ,QAAQ,CAAE,CAAU,EAAE,KAA0B;QAC9C,IAAI,CAAC,CAAC,CAAC,YAAY,WAAW,CAAC,EAAE,CAAC;YAChC,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,EAAO,CAAA;QAE5B,OAAO,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAA;IAC5C,CAAC;IAED,cAAc,CAAE,IAAyB;QACvC,OAAO,GAAG,IAAI,CAAC,QAAQ,eAAe,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAA;IAC7D,CAAC;CACF"}
@@ -0,0 +1,170 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import { describe, it } from 'node:test';
11
+ import { plainToInstance } from 'class-transformer';
12
+ import { validate } from 'class-validator';
13
+ import { expect } from 'expect';
14
+ import { Distance } from '../../quantities/distance/distance.js';
15
+ import { DistanceUnit } from '../../quantities/distance/distance-unit.enum.js';
16
+ import { DistanceDto } from '../../quantities/distance/distance.dto.js';
17
+ import { IsQuantity } from '../is-quantity.decorator.js';
18
+ describe('is quantity decorator tests', () => {
19
+ describe('min option', () => {
20
+ class MinDistanceTestDto {
21
+ distance;
22
+ }
23
+ __decorate([
24
+ IsQuantity(DistanceDto, { min: new Distance(10, DistanceUnit.METER) }),
25
+ __metadata("design:type", DistanceDto)
26
+ ], MinDistanceTestDto.prototype, "distance", void 0);
27
+ it('detects validation errors when the distance is less than the minimum', async () => {
28
+ const dto = plainToInstance(MinDistanceTestDto, { distance: {
29
+ value: 5,
30
+ unit: DistanceUnit.METER
31
+ } });
32
+ const errors = await validate(dto);
33
+ expect(errors.length).toBeGreaterThan(0);
34
+ });
35
+ it('passes a distance exactly at the minimum', async () => {
36
+ const dto = plainToInstance(MinDistanceTestDto, { distance: {
37
+ value: 10,
38
+ unit: DistanceUnit.METER
39
+ } });
40
+ const errors = await validate(dto);
41
+ expect(errors).toHaveLength(0);
42
+ });
43
+ it('passes a distance above the minimum', async () => {
44
+ const dto = plainToInstance(MinDistanceTestDto, { distance: {
45
+ value: 20,
46
+ unit: DistanceUnit.METER
47
+ } });
48
+ const errors = await validate(dto);
49
+ expect(errors).toHaveLength(0);
50
+ });
51
+ it('passes a distance above the minimum expressed in a different unit', async () => {
52
+ const dto = plainToInstance(MinDistanceTestDto, { distance: {
53
+ value: 0.02,
54
+ unit: DistanceUnit.KILOMETER
55
+ } });
56
+ const errors = await validate(dto);
57
+ expect(errors).toHaveLength(0);
58
+ });
59
+ it('detects validation errors when the distance is less than the minimum expressed in a different unit', async () => {
60
+ const dto = plainToInstance(MinDistanceTestDto, { distance: {
61
+ value: 0.005,
62
+ unit: DistanceUnit.KILOMETER
63
+ } });
64
+ const errors = await validate(dto);
65
+ expect(errors.length).toBeGreaterThan(0);
66
+ });
67
+ });
68
+ describe('max option', () => {
69
+ class MaxDistanceTestDto {
70
+ distance;
71
+ }
72
+ __decorate([
73
+ IsQuantity(DistanceDto, { max: new Distance(100, DistanceUnit.METER) }),
74
+ __metadata("design:type", DistanceDto)
75
+ ], MaxDistanceTestDto.prototype, "distance", void 0);
76
+ it('detects validation errors when the distance exceeds the maximum', async () => {
77
+ const dto = plainToInstance(MaxDistanceTestDto, { distance: {
78
+ value: 150,
79
+ unit: DistanceUnit.METER
80
+ } });
81
+ const errors = await validate(dto);
82
+ expect(errors.length).toBeGreaterThan(0);
83
+ });
84
+ it('passes a distance exactly at the maximum', async () => {
85
+ const dto = plainToInstance(MaxDistanceTestDto, { distance: {
86
+ value: 100,
87
+ unit: DistanceUnit.METER
88
+ } });
89
+ const errors = await validate(dto);
90
+ expect(errors).toHaveLength(0);
91
+ });
92
+ it('passes a distance below the maximum', async () => {
93
+ const dto = plainToInstance(MaxDistanceTestDto, { distance: {
94
+ value: 50,
95
+ unit: DistanceUnit.METER
96
+ } });
97
+ const errors = await validate(dto);
98
+ expect(errors).toHaveLength(0);
99
+ });
100
+ it('passes a distance below the maximum expressed in a different unit', async () => {
101
+ const dto = plainToInstance(MaxDistanceTestDto, { distance: {
102
+ value: 0.05,
103
+ unit: DistanceUnit.KILOMETER
104
+ } });
105
+ const errors = await validate(dto);
106
+ expect(errors).toHaveLength(0);
107
+ });
108
+ it('detects validation errors when the distance exceeds the maximum expressed in a different unit', async () => {
109
+ const dto = plainToInstance(MaxDistanceTestDto, { distance: {
110
+ value: 0.2,
111
+ unit: DistanceUnit.KILOMETER
112
+ } });
113
+ const errors = await validate(dto);
114
+ expect(errors.length).toBeGreaterThan(0);
115
+ });
116
+ });
117
+ describe('min and max options together', () => {
118
+ class MinMaxDistanceTestDto {
119
+ distance;
120
+ }
121
+ __decorate([
122
+ IsQuantity(DistanceDto, {
123
+ min: new Distance(10, DistanceUnit.METER),
124
+ max: new Distance(100, DistanceUnit.METER)
125
+ }),
126
+ __metadata("design:type", DistanceDto)
127
+ ], MinMaxDistanceTestDto.prototype, "distance", void 0);
128
+ it('detects validation errors when the distance is below the minimum', async () => {
129
+ const dto = plainToInstance(MinMaxDistanceTestDto, { distance: {
130
+ value: 5,
131
+ unit: DistanceUnit.METER
132
+ } });
133
+ const errors = await validate(dto);
134
+ expect(errors.length).toBeGreaterThan(0);
135
+ });
136
+ it('detects validation errors when the distance exceeds the maximum', async () => {
137
+ const dto = plainToInstance(MinMaxDistanceTestDto, { distance: {
138
+ value: 150,
139
+ unit: DistanceUnit.METER
140
+ } });
141
+ const errors = await validate(dto);
142
+ expect(errors.length).toBeGreaterThan(0);
143
+ });
144
+ it('passes a distance within the range', async () => {
145
+ const dto = plainToInstance(MinMaxDistanceTestDto, { distance: {
146
+ value: 50,
147
+ unit: DistanceUnit.METER
148
+ } });
149
+ const errors = await validate(dto);
150
+ expect(errors).toHaveLength(0);
151
+ });
152
+ it('passes a distance at the minimum boundary', async () => {
153
+ const dto = plainToInstance(MinMaxDistanceTestDto, { distance: {
154
+ value: 10,
155
+ unit: DistanceUnit.METER
156
+ } });
157
+ const errors = await validate(dto);
158
+ expect(errors).toHaveLength(0);
159
+ });
160
+ it('passes a distance at the maximum boundary', async () => {
161
+ const dto = plainToInstance(MinMaxDistanceTestDto, { distance: {
162
+ value: 100,
163
+ unit: DistanceUnit.METER
164
+ } });
165
+ const errors = await validate(dto);
166
+ expect(errors).toHaveLength(0);
167
+ });
168
+ });
169
+ });
170
+ //# sourceMappingURL=is-quantity.decorator.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-quantity.decorator.unit.test.js","sourceRoot":"","sources":["../../../lib/validators/tests/is-quantity.decorator.unit.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,40 +1,45 @@
1
1
  {
2
2
  "name": "@wisemen/quantity",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
+ "publishConfig": {
5
+ "access": "public"
6
+ },
4
7
  "main": "./dist/index.js",
5
8
  "types": "./dist/index.d.ts",
6
9
  "type": "module",
7
10
  "files": [
8
11
  "dist/"
9
12
  ],
10
- "scripts": {
11
- "prebuild": "rm -rf ./dist",
12
- "clean": "rm -rf ./dist",
13
- "build": "tsc",
14
- "pretest": "npm run clean && npm run build",
15
- "test": "node --test ./dist/**/*.test.js",
16
- "lint": "eslint --cache",
17
- "prerelease": "npm run build",
18
- "release": "pnpx release-it"
19
- },
20
13
  "peerDependencies": {
21
- "@nestjs/common": "^11.1.13",
22
- "@nestjs/swagger": "^11.2.6",
23
- "@wisemen/nestjs-typeorm": "^0.1.3",
24
- "class-transformer": "^0.5.1",
25
- "class-validator": "^0.14.3",
26
- "typeorm": "^0.3.28"
14
+ "@nestjs/common": ">=11.1.17",
15
+ "@nestjs/swagger": ">=11.2.6",
16
+ "class-transformer": ">=0.5.1",
17
+ "class-validator": ">=0.14.3",
18
+ "typeorm": ">=0.3.28"
27
19
  },
28
20
  "devDependencies": {
29
- "@wisemen/eslint-config-nestjs": "^0.2.8",
30
- "eslint": "^9.39.2",
31
- "expect": "^30.2.0",
32
- "typescript": "^5.9.3"
21
+ "eslint": "9.39.4",
22
+ "expect": "30.2.0",
23
+ "typescript": ">=4.8.4 <=5.9.3",
24
+ "@wisemen/eslint-config-nestjs": "0.2.12"
33
25
  },
34
26
  "author": "Maarten Sijmkens",
35
27
  "license": "GPL",
36
28
  "repository": {
37
29
  "type": "git",
38
- "url": "git@github.com:wisemen-digital/node-core.git"
30
+ "url": "https://github.com/wisemen-digital/wisemen-core",
31
+ "directory": "packages/quantity"
32
+ },
33
+ "dependencies": {
34
+ "@wisemen/nestjs-typeorm": "0.2.0"
35
+ },
36
+ "scripts": {
37
+ "clean": "rm -rf ./dist",
38
+ "build": "tsc",
39
+ "pretest": "pnpm run build",
40
+ "test": "node --test './dist/**/*.test.js'",
41
+ "lint": "eslint --cache",
42
+ "prerelease": "npm run build",
43
+ "release": "pnpx release-it"
39
44
  }
40
- }
45
+ }
@@ -1,4 +0,0 @@
1
- export * from './voltage.js';
2
- export * from './voltage.dto.js';
3
- export * from './voltage.column.js';
4
- export * from './voltage-unit.enum.js';
@@ -1,5 +0,0 @@
1
- export * from './voltage.js';
2
- export * from './voltage.dto.js';
3
- export * from './voltage.column.js';
4
- export * from './voltage-unit.enum.js';
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/quantities/voltage/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA"}
@@ -1,100 +0,0 @@
1
- import { describe, it } from 'node:test';
2
- import { expect } from 'expect';
3
- import { Voltage } from '../voltage.js';
4
- import { VoltageUnit } from '../voltage-unit.enum.js';
5
- void describe('Voltage class', () => {
6
- void describe('Voltage calculations', () => {
7
- void it('adds voltages', () => {
8
- const v1 = new Voltage(1, VoltageUnit.VOLT);
9
- const v2 = new Voltage(500, VoltageUnit.MILLIVOLT);
10
- const r = v1.add(v2);
11
- expect(r.isEqualTo(1.5, VoltageUnit.VOLT)).toBe(true);
12
- });
13
- void it('subtracts voltages', () => {
14
- const v1 = new Voltage(2, VoltageUnit.VOLT);
15
- const v2 = new Voltage(1, VoltageUnit.KILOVOLT);
16
- const r = v1.subtract(v2);
17
- expect(r.isEqualTo(-998, VoltageUnit.VOLT)).toBe(true);
18
- });
19
- void it('divides voltages', () => {
20
- const v1 = new Voltage(10, VoltageUnit.VOLT);
21
- const v2 = new Voltage(2, VoltageUnit.VOLT);
22
- const r1 = v1.divide(2);
23
- const r2 = v1.divide(v2);
24
- const r3 = v1.divide(5, VoltageUnit.VOLT);
25
- expect(r1.isEqualTo(5, VoltageUnit.VOLT)).toBe(true);
26
- expect(r2).toBe(5);
27
- expect(r3).toBe(2);
28
- });
29
- void it('multiplies voltages', () => {
30
- const v1 = new Voltage(5, VoltageUnit.VOLT);
31
- const r = v1.multiply(3);
32
- expect(r.isEqualTo(15, VoltageUnit.VOLT)).toBe(true);
33
- });
34
- });
35
- void describe('Voltage conversions', () => {
36
- void it('converts V to mV', () => {
37
- const v = new Voltage(1.5, VoltageUnit.VOLT);
38
- expect(v.isEqualTo(1500, VoltageUnit.MILLIVOLT)).toBe(true);
39
- });
40
- void it('converts mV to V', () => {
41
- const v = new Voltage(1500, VoltageUnit.MILLIVOLT);
42
- expect(v.isEqualTo(1.5, VoltageUnit.VOLT)).toBe(true);
43
- });
44
- void it('converts V to kV', () => {
45
- const v = new Voltage(2000, VoltageUnit.VOLT);
46
- expect(v.isEqualTo(2, VoltageUnit.KILOVOLT)).toBe(true);
47
- });
48
- void it('converts kV to V', () => {
49
- const v = new Voltage(2, VoltageUnit.KILOVOLT);
50
- expect(v.isEqualTo(2000, VoltageUnit.VOLT)).toBe(true);
51
- });
52
- void it('converts mV to kV', () => {
53
- const v = new Voltage(500000, VoltageUnit.MILLIVOLT);
54
- expect(v.isEqualTo(0.5, VoltageUnit.KILOVOLT)).toBe(true);
55
- });
56
- });
57
- void describe('Voltage comparisons', () => {
58
- void it('compares voltages correctly', () => {
59
- const v1 = new Voltage(1000, VoltageUnit.MILLIVOLT);
60
- const v2 = new Voltage(1, VoltageUnit.VOLT);
61
- const v3 = new Voltage(2, VoltageUnit.VOLT);
62
- expect(v1.isEqualTo(v2)).toBe(true);
63
- expect(v3.isMoreThan(v2)).toBe(true);
64
- expect(v2.isLessThan(v3)).toBe(true);
65
- expect(v2.isMoreThanOrEqualTo(v1)).toBe(true);
66
- expect(v2.isLessThanOrEqualTo(v1)).toBe(true);
67
- });
68
- });
69
- void describe('Voltage utilities', () => {
70
- void it('returns min voltage using static method', () => {
71
- const v1 = new Voltage(1, VoltageUnit.VOLT);
72
- const v2 = new Voltage(1500, VoltageUnit.MILLIVOLT);
73
- const r = Voltage.min(v1, v2);
74
- expect(r.isEqualTo(1, VoltageUnit.VOLT)).toBe(true);
75
- });
76
- void it('returns max voltage using static method', () => {
77
- const v1 = new Voltage(1, VoltageUnit.VOLT);
78
- const v2 = new Voltage(1500, VoltageUnit.MILLIVOLT);
79
- const r = Voltage.max(v1, v2);
80
- expect(r.isEqualTo(1.5, VoltageUnit.VOLT)).toBe(true);
81
- });
82
- void it('rounds voltage value', () => {
83
- const v1 = new Voltage(1.52, VoltageUnit.VOLT);
84
- const r = v1.round();
85
- expect(r.isEqualTo(2, VoltageUnit.VOLT)).toBe(true);
86
- });
87
- });
88
- void describe('Voltage formatting', () => {
89
- void it('converts to string', () => {
90
- const v = new Voltage(1.5, VoltageUnit.VOLT);
91
- expect(v.toString()).toBe('1.5V');
92
- });
93
- void it('converts to JSON', () => {
94
- const v = new Voltage(1.5, VoltageUnit.VOLT);
95
- const json = v.toJSON();
96
- expect(json).toEqual({ value: 1.5, unit: VoltageUnit.VOLT });
97
- });
98
- });
99
- });
100
- //# sourceMappingURL=voltage.unit.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"voltage.unit.test.js","sourceRoot":"","sources":["../../../../lib/quantities/voltage/tests/voltage.unit.test.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- import { ApiPropertyOptions } from '@nestjs/swagger';
2
- export declare enum VoltageUnit {
3
- VOLT = "V",
4
- MILLIVOLT = "mV",
5
- KILOVOLT = "kV"
6
- }
7
- export declare function VoltageUnitApiProperty(options?: ApiPropertyOptions): PropertyDecorator;
@@ -1,16 +0,0 @@
1
- import { ApiProperty } from '@nestjs/swagger';
2
- export var VoltageUnit;
3
- (function (VoltageUnit) {
4
- VoltageUnit["VOLT"] = "V";
5
- VoltageUnit["MILLIVOLT"] = "mV";
6
- VoltageUnit["KILOVOLT"] = "kV";
7
- })(VoltageUnit || (VoltageUnit = {}));
8
- export function VoltageUnitApiProperty(options) {
9
- return ApiProperty({
10
- ...options,
11
- enum: VoltageUnit,
12
- enumName: 'VoltageUnit',
13
- example: VoltageUnit.VOLT
14
- });
15
- }
16
- //# sourceMappingURL=voltage-unit.enum.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"voltage-unit.enum.js","sourceRoot":"","sources":["../../../lib/quantities/voltage/voltage-unit.enum.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAsB,MAAM,iBAAiB,CAAA;AAEjE,MAAM,CAAN,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,yBAAU,CAAA;IACV,+BAAgB,CAAA;IAChB,8BAAe,CAAA;AACjB,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AAED,MAAM,UAAU,sBAAsB,CAAE,OAA4B;IAClE,OAAO,WAAW,CAAC;QACjB,GAAG,OAAO;QACV,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,aAAa;QACvB,OAAO,EAAE,WAAW,CAAC,IAAI;KAC1B,CAAC,CAAA;AACJ,CAAC"}
@@ -1,3 +0,0 @@
1
- import { ColumnOptions } from 'typeorm';
2
- import { VoltageUnit } from './voltage-unit.enum.js';
3
- export declare function VoltageColumn(storeAsUnit: VoltageUnit, options?: Omit<ColumnOptions, 'type' | 'transformer'>): PropertyDecorator;
@@ -1,6 +0,0 @@
1
- import { QuantityColumn } from '../../quantity.column.js';
2
- import { Voltage } from './voltage.js';
3
- export function VoltageColumn(storeAsUnit, options) {
4
- return QuantityColumn(Voltage, storeAsUnit, options);
5
- }
6
- //# sourceMappingURL=voltage.column.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"voltage.column.js","sourceRoot":"","sources":["../../../lib/quantities/voltage/voltage.column.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAEzD,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,8 +0,0 @@
1
- import { Quantity } from '../../quantity.js';
2
- import { VoltageUnit } from './voltage-unit.enum.js';
3
- export declare class Voltage extends Quantity<VoltageUnit, Voltage> {
4
- protected baseUnit: VoltageUnit;
5
- protected convertValueToBaseUnit(value: number, fromUnit: VoltageUnit): number;
6
- protected convertBaseUnitValueTo(value: number, toUnit: VoltageUnit): number;
7
- get volts(): number;
8
- }
@@ -1,21 +0,0 @@
1
- import { VoltageUnit } from './voltage-unit.enum.js';
2
- import { Voltage } from './voltage.js';
3
- export declare class VoltageDto {
4
- value: number;
5
- unit: VoltageUnit;
6
- static from(voltage: undefined): undefined;
7
- static from(voltage: null): null;
8
- static from(voltage: Voltage): VoltageDto;
9
- static from(voltage: undefined | null): undefined | null;
10
- static from(voltage: Voltage | null): VoltageDto | null;
11
- static from(voltage: Voltage | undefined): VoltageDto | undefined;
12
- static from(voltage: Voltage | null | undefined): VoltageDto | null | undefined;
13
- parse(): Voltage;
14
- }
15
- export declare class VoltageDtoBuilder {
16
- private readonly dto;
17
- constructor();
18
- withValue(value: number): this;
19
- withUnit(unit: VoltageUnit): this;
20
- build(): VoltageDto;
21
- }