@wisemen/quantity 0.8.4 → 0.9.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 (36) hide show
  1. package/dist/exhaustive-check.d.ts +1 -0
  2. package/dist/exhaustive-check.js +4 -0
  3. package/dist/exhaustive-check.js.map +1 -0
  4. package/dist/index.d.ts +10 -10
  5. package/dist/index.js +10 -10
  6. package/dist/index.js.map +1 -1
  7. package/dist/quantities/current/tests/current.unit.test.js +1 -1
  8. package/dist/quantities/current/tests/current.unit.test.js.map +1 -1
  9. package/dist/quantities/voltage/index.d.ts +1 -0
  10. package/dist/quantities/voltage/index.js +1 -0
  11. package/dist/quantities/voltage/index.js.map +1 -1
  12. package/dist/quantity.d.ts +1 -1
  13. package/dist/quantity.js +1 -1
  14. package/dist/quantity.js.map +1 -1
  15. package/dist/rate/index.d.ts +5 -0
  16. package/dist/rate/index.js +6 -0
  17. package/dist/rate/index.js.map +1 -0
  18. package/dist/rate/rate-scale.enum.d.ts +7 -0
  19. package/dist/rate/rate-scale.enum.js +16 -0
  20. package/dist/rate/rate-scale.enum.js.map +1 -0
  21. package/dist/rate/rate.column.d.ts +14 -0
  22. package/dist/rate/rate.column.js +27 -0
  23. package/dist/rate/rate.column.js.map +1 -0
  24. package/dist/{rate.d.ts → rate/rate.d.ts} +4 -3
  25. package/dist/rate/rate.dto.d.ts +20 -0
  26. package/dist/rate/rate.dto.js +72 -0
  27. package/dist/rate/rate.dto.js.map +1 -0
  28. package/dist/rate/rate.js +49 -0
  29. package/dist/rate/rate.js.map +1 -0
  30. package/dist/rate/validators/is-rate.validator.d.ts +2 -0
  31. package/dist/rate/validators/is-rate.validator.js +13 -0
  32. package/dist/rate/validators/is-rate.validator.js.map +1 -0
  33. package/package.json +9 -8
  34. package/skills/getting-started/SKILL.md +78 -0
  35. package/dist/rate.js +0 -28
  36. package/dist/rate.js.map +0 -1
@@ -0,0 +1 @@
1
+ export declare function exhaustiveCheck(_value: never): never;
@@ -0,0 +1,4 @@
1
+ export function exhaustiveCheck(_value) {
2
+ throw new Error(`Unhandled case`);
3
+ }
4
+ //# sourceMappingURL=exhaustive-check.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exhaustive-check.js","sourceRoot":"","sources":["../lib/exhaustive-check.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAE,MAAa;IAC5C,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;AACnC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,10 +1,10 @@
1
- export * from './quantities/current/index.js';
2
- export * from './quantities/distance/index.js';
3
- export * from './quantities/duration/index.js';
4
- export * from './quantities/mass/index.js';
5
- export * from './quantities/temperature/index.js';
6
- export * from './quantities/energy/index.js';
7
- export * from './quantities/power/index.js';
8
- export * from './quantities/speed/index.js';
9
- export * from './quantities/voltage/index.js';
10
- export * from './rate.js';
1
+ export { Current, CurrentUnit, CurrentDto, CurrentDtoBuilder, CurrentUnitApiProperty, IsCurrent, CurrentColumn } from './quantities/current/index.js';
2
+ export { Distance, DistanceUnit, DistanceDto, DistanceDtoBuilder, DistanceUnitApiProperty, IsDistance, DistanceColumn } from './quantities/distance/index.js';
3
+ export { Duration, DurationUnit, DurationDto, DurationDtoBuilder, DurationUnitApiProperty, IsDuration, DurationColumn } from './quantities/duration/index.js';
4
+ export { Mass, MassUnit, MassDto, MassDtoBuilder, MassUnitApiProperty, IsMass, MassColumn } from './quantities/mass/index.js';
5
+ export { Temperature, TemperatureUnit, TemperatureDto, TemperatureDtoBuilder, TemperatureUnitApiProperty, IsTemperature, TemperatureColumn } from './quantities/temperature/index.js';
6
+ export { Energy, EnergyUnit, EnergyDto, EnergyDtoBuilder, EnergyUnitApiProperty, IsEnergy, EnergyColumn } from './quantities/energy/index.js';
7
+ export { Power, PowerUnit, PowerDto, PowerDtoBuilder, PowerUnitApiProperty, IsPower, PowerColumn } from './quantities/power/index.js';
8
+ export { Speed, SpeedUnit, SpeedDto, SpeedDtoBuilder, SpeedUnitApiProperty, IsSpeed, SpeedColumn } from './quantities/speed/index.js';
9
+ export { Voltage, VoltageUnit, VoltageDto, VoltageDtoBuilder, VoltageUnitApiProperty, IsVoltage, VoltageColumn } from './quantities/voltage/index.js';
10
+ export { Rate, RateScale, RateDto, RateDtoBuilder, RateScaleApiProperty, IsRate, RateColumn } from './rate/index.js';
package/dist/index.js CHANGED
@@ -1,11 +1,11 @@
1
- export * from './quantities/current/index.js';
2
- export * from './quantities/distance/index.js';
3
- export * from './quantities/duration/index.js';
4
- export * from './quantities/mass/index.js';
5
- export * from './quantities/temperature/index.js';
6
- export * from './quantities/energy/index.js';
7
- export * from './quantities/power/index.js';
8
- export * from './quantities/speed/index.js';
9
- export * from './quantities/voltage/index.js';
10
- export * from './rate.js';
1
+ export { Current, CurrentUnit, CurrentDto, CurrentDtoBuilder, CurrentUnitApiProperty, IsCurrent, CurrentColumn } from './quantities/current/index.js';
2
+ export { Distance, DistanceUnit, DistanceDto, DistanceDtoBuilder, DistanceUnitApiProperty, IsDistance, DistanceColumn } from './quantities/distance/index.js';
3
+ export { Duration, DurationUnit, DurationDto, DurationDtoBuilder, DurationUnitApiProperty, IsDuration, DurationColumn } from './quantities/duration/index.js';
4
+ export { Mass, MassUnit, MassDto, MassDtoBuilder, MassUnitApiProperty, IsMass, MassColumn } from './quantities/mass/index.js';
5
+ export { Temperature, TemperatureUnit, TemperatureDto, TemperatureDtoBuilder, TemperatureUnitApiProperty, IsTemperature, TemperatureColumn } from './quantities/temperature/index.js';
6
+ export { Energy, EnergyUnit, EnergyDto, EnergyDtoBuilder, EnergyUnitApiProperty, IsEnergy, EnergyColumn } from './quantities/energy/index.js';
7
+ export { Power, PowerUnit, PowerDto, PowerDtoBuilder, PowerUnitApiProperty, IsPower, PowerColumn } from './quantities/power/index.js';
8
+ export { Speed, SpeedUnit, SpeedDto, SpeedDtoBuilder, SpeedUnitApiProperty, IsSpeed, SpeedColumn } from './quantities/speed/index.js';
9
+ export { Voltage, VoltageUnit, VoltageDto, VoltageDtoBuilder, VoltageUnitApiProperty, IsVoltage, VoltageColumn } from './quantities/voltage/index.js';
10
+ export { Rate, RateScale, RateDto, RateDtoBuilder, RateScaleApiProperty, IsRate, RateColumn } from './rate/index.js';
11
11
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAA;AAC7C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,4BAA4B,CAAA;AAC1C,cAAc,mCAAmC,CAAA;AACjD,cAAc,8BAA8B,CAAA;AAC5C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,6BAA6B,CAAA;AAC3C,cAAc,+BAA+B,CAAA;AAC7C,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AACrJ,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC7J,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC7J,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAC7H,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AACrL,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAK,8BAA8B,CAAA;AAC5I,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,oBAAoB,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACrI,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,oBAAoB,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACrI,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AACrJ,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA"}
@@ -2,7 +2,7 @@ import { describe, it } from 'node:test';
2
2
  import { expect } from 'expect';
3
3
  import { Current } from '../current.js';
4
4
  import { CurrentUnit } from '../current-unit.enum.js';
5
- import { Rate } from '../../../rate.js';
5
+ import { Rate } from '../../../rate/rate.js';
6
6
  void describe('Current class', () => {
7
7
  void describe('Current calculations', () => {
8
8
  void it('adds currents', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"current.unit.test.js","sourceRoot":"","sources":["../../../../lib/quantities/current/tests/current.unit.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"current.unit.test.js","sourceRoot":"","sources":["../../../../lib/quantities/current/tests/current.unit.test.ts"],"names":[],"mappings":"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"}
@@ -2,3 +2,4 @@ export * from './voltage.js';
2
2
  export * from './voltage.dto.js';
3
3
  export * from './voltage.column.js';
4
4
  export * from './voltage-unit.enum.js';
5
+ export * from './is-voltage.validator.js';
@@ -2,4 +2,5 @@ export * from './voltage.js';
2
2
  export * from './voltage.dto.js';
3
3
  export * from './voltage.column.js';
4
4
  export * from './voltage-unit.enum.js';
5
+ export * from './is-voltage.validator.js';
5
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
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
+ {"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;AACtC,cAAc,2BAA2B,CAAA"}
@@ -1,4 +1,4 @@
1
- import { Rate } from './rate.js';
1
+ import { Rate } from './rate/rate.js';
2
2
  export type QuantityConstructor<U extends string, Q extends Quantity<U, Q>> = {
3
3
  new (quantityOrValue: Q | number, unit?: U): Q;
4
4
  };
package/dist/quantity.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import assert from 'assert';
2
- import { Rate } from './rate.js';
2
+ import { Rate } from './rate/rate.js';
3
3
  export class Quantity {
4
4
  value;
5
5
  unit;
@@ -1 +1 @@
1
- {"version":3,"file":"quantity.js","sourceRoot":"","sources":["../lib/quantity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"quantity.js","sourceRoot":"","sources":["../lib/quantity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * from './rate.js';
2
+ export * from './rate.dto.js';
3
+ export * from './rate.column.js';
4
+ export * from './rate-scale.enum.js';
5
+ export * from './validators/is-rate.validator.js';
@@ -0,0 +1,6 @@
1
+ export * from './rate.js';
2
+ export * from './rate.dto.js';
3
+ export * from './rate.column.js';
4
+ export * from './rate-scale.enum.js';
5
+ export * from './validators/is-rate.validator.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/rate/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,sBAAsB,CAAA;AACpC,cAAc,mCAAmC,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { ApiPropertyOptions } from "@nestjs/swagger";
2
+ export declare enum RateScale {
3
+ DECIMAL = "decimal",
4
+ PERCENT = "percent",
5
+ PERMILLE = "permille"
6
+ }
7
+ export declare function RateScaleApiProperty(options?: ApiPropertyOptions): PropertyDecorator;
@@ -0,0 +1,16 @@
1
+ import { ApiProperty } from "@nestjs/swagger";
2
+ export var RateScale;
3
+ (function (RateScale) {
4
+ RateScale["DECIMAL"] = "decimal";
5
+ RateScale["PERCENT"] = "percent";
6
+ RateScale["PERMILLE"] = "permille";
7
+ })(RateScale || (RateScale = {}));
8
+ export function RateScaleApiProperty(options) {
9
+ return ApiProperty({
10
+ ...options,
11
+ enum: RateScale,
12
+ enumName: 'RateScaleEnum',
13
+ example: RateScale.PERCENT
14
+ });
15
+ }
16
+ //# sourceMappingURL=rate-scale.enum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-scale.enum.js","sourceRoot":"","sources":["../../lib/rate/rate-scale.enum.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAsB,MAAM,iBAAiB,CAAC;AAElE,MAAM,CAAN,IAAY,SAIX;AAJD,WAAY,SAAS;IACnB,gCAAmB,CAAA;IACnB,gCAAmB,CAAA;IACnB,kCAAqB,CAAA;AACvB,CAAC,EAJW,SAAS,KAAT,SAAS,QAIpB;AAED,MAAM,UAAU,oBAAoB,CAAE,OAA4B;IAChE,OAAO,WAAW,CAAC;QACjB,GAAG,OAAO;QACV,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,eAAe;QACzB,OAAO,EAAE,SAAS,CAAC,OAAO;KAC3B,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { ColumnOptions, ValueTransformer } from 'typeorm';
2
+ import { Rate } from './rate.js';
3
+ export type RateColumnOptions = Omit<ColumnOptions, 'type' | 'transformer' | 'default'> & {
4
+ default?: Rate;
5
+ };
6
+ export declare function RateColumn(options?: RateColumnOptions): PropertyDecorator;
7
+ export declare class RateTypeOrmTransformer implements ValueTransformer {
8
+ constructor();
9
+ from(value: number): Rate;
10
+ from(value: number | null): Rate | null;
11
+ to(rate: Rate): number;
12
+ to(rate: Rate | null): number | null;
13
+ to(rate: Rate | null | undefined): number | null | undefined;
14
+ }
@@ -0,0 +1,27 @@
1
+ import { Column } from 'typeorm';
2
+ import { Rate } from './rate.js';
3
+ export function RateColumn(options) {
4
+ const transformer = new RateTypeOrmTransformer();
5
+ return Column({
6
+ ...options,
7
+ default: transformer.to(options?.default),
8
+ type: 'float',
9
+ transformer
10
+ });
11
+ }
12
+ export class RateTypeOrmTransformer {
13
+ constructor() { }
14
+ from(value) {
15
+ if (value === null) {
16
+ return null;
17
+ }
18
+ return Rate.fromDecimal(value);
19
+ }
20
+ to(rate) {
21
+ if (rate === undefined || rate === null) {
22
+ return rate;
23
+ }
24
+ return rate.asDecimal();
25
+ }
26
+ }
27
+ //# sourceMappingURL=rate.column.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate.column.js","sourceRoot":"","sources":["../../lib/rate/rate.column.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAmC,MAAM,SAAS,CAAA;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAKhC,MAAM,UAAU,UAAU,CACxB,OAA2B;IAE3B,MAAM,WAAW,GAAG,IAAI,sBAAsB,EAAE,CAAA;IAEhD,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,sBAAsB;IACjC,gBAAgB,CAAC;IAIjB,IAAI,CAAE,KAAoB;QACxB,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;IAChC,CAAC;IAKD,EAAE,CAAE,IAA6B;QAC/B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACxC,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,EAAE,CAAA;IACzB,CAAC;CACF"}
@@ -1,11 +1,12 @@
1
+ import { RateScale } from "./rate-scale.enum.js";
1
2
  export declare class Rate {
2
- private value;
3
- private constructor();
3
+ private readonly value;
4
+ constructor(value: number, scale: RateScale);
4
5
  static fromDecimal(decimal: number): Rate;
5
6
  static fromPercent(percent: number): Rate;
6
7
  static fromPermille(permille: number): Rate;
7
8
  asDecimal(): number;
8
9
  asPercent(): number;
9
10
  asPermille(): number;
10
- toString(): string;
11
+ toString(scale?: RateScale, fractionDigits?: number): string;
11
12
  }
@@ -0,0 +1,20 @@
1
+ import { Rate } from './rate.js';
2
+ import { RateScale } from './rate-scale.enum.js';
3
+ export declare class RateDto {
4
+ value: number;
5
+ scale: RateScale;
6
+ static from(rate: undefined): undefined;
7
+ static from(rate: null): null;
8
+ static from(rate: Rate): RateDto;
9
+ static from(rate: Rate | null): RateDto | null;
10
+ static from(rate: Rate | undefined): RateDto | undefined;
11
+ static from(rate: Rate | null | undefined): RateDto | null | undefined;
12
+ parse(): Rate;
13
+ }
14
+ export declare class RateDtoBuilder {
15
+ private readonly dto;
16
+ constructor();
17
+ withValue(value: number): this;
18
+ withScale(scale: RateScale): this;
19
+ build(): RateDto;
20
+ }
@@ -0,0 +1,72 @@
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 { ApiProperty } from '@nestjs/swagger';
11
+ import { IsNumber, IsEnum } from 'class-validator';
12
+ import { Type } from 'class-transformer';
13
+ import { Rate } from './rate.js';
14
+ import { RateScale, RateScaleApiProperty } from './rate-scale.enum.js';
15
+ import { exhaustiveCheck } from '../exhaustive-check.js';
16
+ export class RateDto {
17
+ value;
18
+ scale;
19
+ static from(rate) {
20
+ if (rate === null)
21
+ return null;
22
+ if (rate === undefined)
23
+ return undefined;
24
+ return new RateDtoBuilder()
25
+ .withValue(rate.asDecimal())
26
+ .withScale(RateScale.DECIMAL)
27
+ .build();
28
+ }
29
+ parse() {
30
+ switch (this.scale) {
31
+ case RateScale.DECIMAL:
32
+ return Rate.fromDecimal(this.value);
33
+ case RateScale.PERCENT:
34
+ return Rate.fromPercent(this.value);
35
+ case RateScale.PERMILLE:
36
+ return Rate.fromPermille(this.value);
37
+ default:
38
+ exhaustiveCheck(this.scale);
39
+ }
40
+ }
41
+ }
42
+ __decorate([
43
+ ApiProperty({ type: Number }),
44
+ Type(() => Number),
45
+ IsNumber(),
46
+ __metadata("design:type", Number)
47
+ ], RateDto.prototype, "value", void 0);
48
+ __decorate([
49
+ RateScaleApiProperty(),
50
+ IsEnum(RateScale),
51
+ __metadata("design:type", String)
52
+ ], RateDto.prototype, "scale", void 0);
53
+ export class RateDtoBuilder {
54
+ dto;
55
+ constructor() {
56
+ this.dto = new RateDto();
57
+ this.dto.value = 0;
58
+ this.dto.scale = RateScale.DECIMAL;
59
+ }
60
+ withValue(value) {
61
+ this.dto.value = value;
62
+ return this;
63
+ }
64
+ withScale(scale) {
65
+ this.dto.scale = scale;
66
+ return this;
67
+ }
68
+ build() {
69
+ return this.dto;
70
+ }
71
+ }
72
+ //# sourceMappingURL=rate.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate.dto.js","sourceRoot":"","sources":["../../lib/rate/rate.dto.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAExD,MAAM,OAAO,OAAO;IAIlB,KAAK,CAAQ;IAIb,KAAK,CAAW;IAQhB,MAAM,CAAC,IAAI,CAAE,IAA6B;QACxC,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QAC9B,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,SAAS,CAAA;QAExC,OAAO,IAAI,cAAc,EAAE;aACxB,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;aAC3B,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC;aAC5B,KAAK,EAAE,CAAA;IACZ,CAAC;IAED,KAAK;QACH,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;YACnB,KAAK,SAAS,CAAC,OAAO;gBACpB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACrC,KAAK,SAAS,CAAC,OAAO;gBACpB,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACrC,KAAK,SAAS,CAAC,QAAQ;gBACrB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACtC;gBACE,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC;CACF;AAlCC;IAHC,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC7B,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,QAAQ,EAAE;;sCACE;AAIb;IAFC,oBAAoB,EAAE;IACtB,MAAM,CAAC,SAAS,CAAC;;sCACF;AAgClB,MAAM,OAAO,cAAc;IACR,GAAG,CAAS;IAE7B;QACE,IAAI,CAAC,GAAG,GAAG,IAAI,OAAO,EAAE,CAAA;QACxB,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAA;QAClB,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC,OAAO,CAAA;IACpC,CAAC;IAED,SAAS,CAAE,KAAa;QACtB,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAA;QAEtB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,SAAS,CAAE,KAAgB;QACzB,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAA;QAEtB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,GAAG,CAAA;IACjB,CAAC;CACF"}
@@ -0,0 +1,49 @@
1
+ import { exhaustiveCheck } from "../exhaustive-check.js";
2
+ import { RateScale } from "./rate-scale.enum.js";
3
+ export class Rate {
4
+ value;
5
+ constructor(value, scale) {
6
+ switch (scale) {
7
+ case RateScale.DECIMAL:
8
+ this.value = value;
9
+ break;
10
+ case RateScale.PERCENT:
11
+ this.value = value / 100;
12
+ break;
13
+ case RateScale.PERMILLE:
14
+ this.value = value / 1000;
15
+ break;
16
+ default:
17
+ exhaustiveCheck(scale);
18
+ }
19
+ }
20
+ static fromDecimal(decimal) {
21
+ return new Rate(decimal, RateScale.DECIMAL);
22
+ }
23
+ static fromPercent(percent) {
24
+ return new Rate(percent, RateScale.PERCENT);
25
+ }
26
+ static fromPermille(permille) {
27
+ return new Rate(permille, RateScale.PERMILLE);
28
+ }
29
+ asDecimal() {
30
+ return this.value;
31
+ }
32
+ asPercent() {
33
+ return this.value * 100;
34
+ }
35
+ asPermille() {
36
+ return this.value * 1000;
37
+ }
38
+ toString(scale = RateScale.PERCENT, fractionDigits = 2) {
39
+ switch (scale) {
40
+ case RateScale.DECIMAL:
41
+ return this.asDecimal().toFixed(fractionDigits);
42
+ case RateScale.PERCENT:
43
+ return `${this.asPercent().toFixed(fractionDigits)}%`;
44
+ case RateScale.PERMILLE:
45
+ return `${this.asPermille().toFixed(fractionDigits)}‰`;
46
+ }
47
+ }
48
+ }
49
+ //# sourceMappingURL=rate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate.js","sourceRoot":"","sources":["../../lib/rate/rate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAEhD,MAAM,OAAO,IAAI;IACE,KAAK,CAAQ;IAE9B,YAAa,KAAa,EAAE,KAAgB;QAC1C,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,SAAS,CAAC,OAAO;gBACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;gBAClB,MAAK;YACP,KAAK,SAAS,CAAC,OAAO;gBACpB,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,GAAG,CAAA;gBACxB,MAAK;YACP,KAAK,SAAS,CAAC,QAAQ;gBACrB,IAAI,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAA;gBACzB,MAAK;YACP;gBACE,eAAe,CAAC,KAAK,CAAC,CAAA;QAC1B,CAAC;IACH,CAAC;IAED,MAAM,CAAC,WAAW,CAAE,OAAe;QACjC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAA;IAC7C,CAAC;IAED,MAAM,CAAC,WAAW,CAAE,OAAe;QACjC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAA;IAC7C,CAAC;IAED,MAAM,CAAC,YAAY,CAAE,QAAgB;QACnC,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAA;IAC/C,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,KAAK,GAAG,GAAG,CAAA;IACzB,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IAC1B,CAAC;IAED,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC,OAAO,EAAE,cAAc,GAAG,CAAC;QACpD,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,SAAS,CAAC,OAAO;gBACpB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;YACjD,KAAK,SAAS,CAAC,OAAO;gBACpB,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAA;YACvD,KAAK,SAAS,CAAC,QAAQ;gBACrB,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAA;QAC1D,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,2 @@
1
+ import { ValidationOptions } from 'class-validator';
2
+ export declare function IsRate(options?: ValidationOptions): PropertyDecorator;
@@ -0,0 +1,13 @@
1
+ import { applyDecorators } from '@nestjs/common';
2
+ import { Type } from 'class-transformer';
3
+ import { IsObject, ValidateNested } from 'class-validator';
4
+ import { RateDto } from '../rate.dto.js';
5
+ export function IsRate(options) {
6
+ const decorators = [
7
+ Type(() => RateDto),
8
+ ValidateNested(options),
9
+ IsObject(options)
10
+ ];
11
+ return applyDecorators(...decorators);
12
+ }
13
+ //# sourceMappingURL=is-rate.validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-rate.validator.js","sourceRoot":"","sources":["../../../lib/rate/validators/is-rate.validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAqB,MAAM,iBAAiB,CAAA;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAA;AAExC,MAAM,UAAU,MAAM,CACpB,OAA2B;IAE3B,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC;QACnB,cAAc,CAAC,OAAO,CAAC;QACvB,QAAQ,CAAC,OAAO,CAAC;KAClB,CAAA;IAED,OAAO,eAAe,CAAC,GAAG,UAAU,CAAC,CAAA;AACvC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wisemen/quantity",
3
- "version": "0.8.4",
3
+ "version": "0.9.1",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -8,14 +8,15 @@
8
8
  "types": "./dist/index.d.ts",
9
9
  "type": "module",
10
10
  "files": [
11
- "dist/"
11
+ "dist/",
12
+ "skills/"
12
13
  ],
13
14
  "peerDependencies": {
14
- "@nestjs/common": ">=11.1.17",
15
- "@nestjs/swagger": ">=11.2.6",
16
- "class-transformer": ">=0.5.1",
17
- "class-validator": ">=0.15.1",
18
- "typeorm": ">=1.0.0"
15
+ "@nestjs/common": "^11.1.19",
16
+ "@nestjs/swagger": "^11.4.2",
17
+ "class-transformer": "^0.5.1",
18
+ "class-validator": "^0.15.1",
19
+ "typeorm": "^1.0.0"
19
20
  },
20
21
  "devDependencies": {
21
22
  "eslint": "10.2.1",
@@ -23,7 +24,7 @@
23
24
  "oxlint-tsgolint": "0.20.0",
24
25
  "expect": "30.2.0",
25
26
  "@types/node": "25.3.0",
26
- "typescript": ">=4.8.4 <=5.9.3",
27
+ "typescript": "^5.9.3",
27
28
  "@wisemen/eslint-config-nestjs": "1.1.1"
28
29
  },
29
30
  "author": "Maarten Sijmkens",
@@ -0,0 +1,78 @@
1
+ ---
2
+ name: getting-started
3
+ description: |
4
+ Use when dealing with physical quantities like distance, duration, speed, power etc
5
+ Supports:
6
+ - basic arithmetic and utils
7
+ - columns with typeorm
8
+ - validation with class-validator
9
+ - openapi documentation with nestjs
10
+ ---
11
+
12
+ # Quantity
13
+
14
+ - Use `@wisemen/quantity` whenever generating or reviewing TypeScript/NestJS code that represents physical quantities such as distance, duration, speed, power, mass, energy, voltage, temperature, current.
15
+ - Prefer dedicated Quantity classes over plain numbers. Quantities are immutable; arithmetic operations must return new instances. Inspect the class' methods to discover all available operations.
16
+ - When creating database entities, use `<Quantity>Column`.
17
+ - When creating DTOs, use `<Quantity>ApiProperty`, `<Quantity>Dto`, and `Is<Quantity>` validation where applicable.
18
+
19
+ ## Usage
20
+
21
+ ### Basic arithmetic and utils
22
+
23
+ Use a <Quantity> class to define a quantity value.
24
+
25
+ ```ts
26
+ import { Distance, DistanceUnit } from "@wisemen/quantity"
27
+
28
+ const radius = new Distance(100, DistanceUnit.METER)
29
+ const innerRadius = radius.subtract(15, DistanceUnit.METER)
30
+ const clippedRadius = Distance.max(innerRadius, Distance.ZERO)
31
+ const circumference = clippedRadius.multiply(2 * Math.PI).round()
32
+ ```
33
+
34
+ ### Quantity in database entities
35
+
36
+ Use a `<Quantity>Column` decorator in a TypeORM entity property to model the field as a database column.
37
+ It is required to specify in what unit the quantity value will be stored in the database.
38
+ TypeORM's column options like `nullable` are supported.
39
+
40
+ ```ts
41
+ import { Distance, DistanceUnit, DistanceColumn } from "@wisemen/quantity"
42
+
43
+ class ExampleEntity {
44
+ @DistanceColumn(DistanceUnit.METER, { nullable: true })
45
+ distance: Distance | null
46
+ }
47
+ ```
48
+
49
+ ### Quantity in dtos (requests command, request query and response)
50
+
51
+ Use a `<Quantity>ApiProperty` decorator in a dto to document a quantity field in the nestjs open api docs.
52
+ Use a `Is<Quantity>` decorator in a dto to add quantity validation functionality for class-validator if needed.
53
+ A minimum and maximum value can be set by the `min` and `max` optional attributes in the validation options.
54
+
55
+ ```ts
56
+ import { ApiProperty } from "@nestjs/swagger";
57
+ import { Distance, DistanceDto } from "@wisemen/quantity"
58
+
59
+ class ExampleCommand {
60
+ @ApiProperty({ type: DistanceDto })
61
+ @IsDistance({ min: Distance.ZERO })
62
+ distance: DistanceDto
63
+ }
64
+ ```
65
+
66
+ ## Available quantities
67
+
68
+ - Current
69
+ - Distance
70
+ - Duration
71
+ - Mass
72
+ - Temperature
73
+ - Energy
74
+ - Power
75
+ - Speed
76
+ - Voltage
77
+
78
+ If a required quantity is unavailable, stop and tell the user it must first be added and released to `@wisemen/quantity` before continuing.
package/dist/rate.js DELETED
@@ -1,28 +0,0 @@
1
- export class Rate {
2
- value;
3
- constructor(value) {
4
- this.value = value;
5
- }
6
- static fromDecimal(decimal) {
7
- return new Rate(decimal);
8
- }
9
- static fromPercent(percent) {
10
- return new Rate(percent / 100);
11
- }
12
- static fromPermille(permille) {
13
- return new Rate(permille / 1000);
14
- }
15
- asDecimal() {
16
- return this.value;
17
- }
18
- asPercent() {
19
- return this.value * 100;
20
- }
21
- asPermille() {
22
- return this.value * 1000;
23
- }
24
- toString() {
25
- return `${this.asPercent()}%`;
26
- }
27
- }
28
- //# sourceMappingURL=rate.js.map
package/dist/rate.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"rate.js","sourceRoot":"","sources":["../lib/rate.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,IAAI;IACc;IAA7B,YAA6B,KAAa;QAAb,UAAK,GAAL,KAAK,CAAQ;IAAG,CAAC;IAE9C,MAAM,CAAC,WAAW,CAAE,OAAe;QACjC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,CAAA;IAC1B,CAAC;IAED,MAAM,CAAC,WAAW,CAAE,OAAe;QACjC,OAAO,IAAI,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,CAAA;IAChC,CAAC;IAED,MAAM,CAAC,YAAY,CAAE,QAAgB;QACnC,OAAO,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAA;IAClC,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,KAAK,GAAG,GAAG,CAAA;IACzB,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;IAC1B,CAAC;IAED,QAAQ;QACN,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,CAAA;IAC/B,CAAC;CACF"}