@utiliread/primitives 1.0.0-51 → 1.0.0-54

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 (129) hide show
  1. package/dist/cjs/aggregate-id.js +3 -0
  2. package/dist/cjs/aggregate-id.js.map +1 -0
  3. package/dist/cjs/consumption-type-id.js +3 -0
  4. package/dist/cjs/consumption-type-id.js.map +1 -0
  5. package/dist/cjs/index.js +20 -0
  6. package/dist/cjs/index.js.map +1 -0
  7. package/dist/cjs/measure-id.js +3 -0
  8. package/dist/cjs/measure-id.js.map +1 -0
  9. package/dist/cjs/number-formatter.js +78 -0
  10. package/dist/cjs/number-formatter.js.map +1 -0
  11. package/dist/cjs/number-formatter.spec.js +94 -0
  12. package/dist/cjs/number-formatter.spec.js.map +1 -0
  13. package/dist/cjs/optional.js +3 -0
  14. package/dist/cjs/optional.js.map +1 -0
  15. package/dist/cjs/precision-number.js +36 -0
  16. package/dist/cjs/precision-number.js.map +1 -0
  17. package/dist/cjs/precision-number.spec.js +27 -0
  18. package/dist/cjs/precision-number.spec.js.map +1 -0
  19. package/dist/cjs/register-convention.js +56 -0
  20. package/dist/cjs/register-convention.js.map +1 -0
  21. package/dist/cjs/register-convention.spec.js +39 -0
  22. package/dist/cjs/register-convention.spec.js.map +1 -0
  23. package/dist/cjs/register-definition.js +3 -0
  24. package/dist/cjs/register-definition.js.map +1 -0
  25. package/dist/cjs/register-id.js +3 -0
  26. package/dist/cjs/register-id.js.map +1 -0
  27. package/dist/cjs/register-library.js +51 -0
  28. package/dist/cjs/register-library.js.map +1 -0
  29. package/dist/cjs/register-library.spec.js +37 -0
  30. package/dist/cjs/register-library.spec.js.map +1 -0
  31. package/dist/cjs/register-pack.js +3 -0
  32. package/dist/cjs/register-pack.js.map +1 -0
  33. package/dist/cjs/register-utils.js +8 -0
  34. package/dist/cjs/register-utils.js.map +1 -0
  35. package/dist/cjs/repository.js +26 -0
  36. package/dist/cjs/repository.js.map +1 -0
  37. package/dist/cjs/repository.spec.js +21 -0
  38. package/dist/cjs/repository.spec.js.map +1 -0
  39. package/dist/cjs/step.js +41 -0
  40. package/dist/cjs/step.js.map +1 -0
  41. package/dist/cjs/step.spec.js +29 -0
  42. package/dist/cjs/step.spec.js.map +1 -0
  43. package/dist/cjs/time-or-rule.js +18 -0
  44. package/dist/cjs/time-or-rule.js.map +1 -0
  45. package/dist/cjs/unit-id.js +14 -0
  46. package/dist/cjs/unit-id.js.map +1 -0
  47. package/dist/esm/aggregate-id.d.ts +1 -0
  48. package/dist/esm/aggregate-id.js +2 -0
  49. package/dist/esm/aggregate-id.js.map +1 -0
  50. package/dist/esm/consumption-type-id.d.ts +1 -0
  51. package/dist/esm/consumption-type-id.js +2 -0
  52. package/dist/esm/consumption-type-id.js.map +1 -0
  53. package/dist/esm/index.d.ts +16 -0
  54. package/dist/esm/index.js +9 -0
  55. package/dist/esm/index.js.map +1 -0
  56. package/dist/esm/measure-id.d.ts +1 -0
  57. package/dist/esm/measure-id.js +2 -0
  58. package/dist/esm/measure-id.js.map +1 -0
  59. package/dist/esm/number-formatter.d.ts +17 -0
  60. package/dist/esm/number-formatter.js +75 -0
  61. package/dist/esm/number-formatter.js.map +1 -0
  62. package/dist/esm/number-formatter.spec.d.ts +1 -0
  63. package/dist/esm/number-formatter.spec.js +92 -0
  64. package/dist/esm/number-formatter.spec.js.map +1 -0
  65. package/dist/esm/optional.d.ts +1 -0
  66. package/dist/esm/optional.js +2 -0
  67. package/dist/esm/optional.js.map +1 -0
  68. package/dist/esm/precision-number.d.ts +11 -0
  69. package/dist/esm/precision-number.js +32 -0
  70. package/dist/esm/precision-number.js.map +1 -0
  71. package/dist/esm/precision-number.spec.d.ts +1 -0
  72. package/dist/esm/precision-number.spec.js +25 -0
  73. package/dist/esm/precision-number.spec.js.map +1 -0
  74. package/dist/esm/register-convention.d.ts +14 -0
  75. package/dist/esm/register-convention.js +52 -0
  76. package/dist/esm/register-convention.js.map +1 -0
  77. package/dist/esm/register-convention.spec.d.ts +1 -0
  78. package/dist/esm/register-convention.spec.js +37 -0
  79. package/dist/esm/register-convention.spec.js.map +1 -0
  80. package/dist/esm/register-definition.d.ts +13 -0
  81. package/dist/esm/register-definition.js +2 -0
  82. package/dist/esm/register-definition.js.map +1 -0
  83. package/dist/esm/register-id.d.ts +1 -0
  84. package/dist/esm/register-id.js +2 -0
  85. package/dist/esm/register-id.js.map +1 -0
  86. package/dist/esm/register-library.d.ts +15 -0
  87. package/dist/esm/register-library.js +48 -0
  88. package/dist/esm/register-library.js.map +1 -0
  89. package/dist/esm/register-library.spec.d.ts +1 -0
  90. package/dist/esm/register-library.spec.js +35 -0
  91. package/dist/esm/register-library.spec.js.map +1 -0
  92. package/dist/esm/register-pack.d.ts +4 -0
  93. package/dist/esm/register-pack.js +2 -0
  94. package/dist/esm/register-pack.js.map +1 -0
  95. package/dist/esm/register-utils.d.ts +3 -0
  96. package/dist/esm/register-utils.js +4 -0
  97. package/dist/esm/register-utils.js.map +1 -0
  98. package/dist/esm/repository.d.ts +9 -0
  99. package/dist/esm/repository.js +22 -0
  100. package/dist/esm/repository.js.map +1 -0
  101. package/dist/esm/repository.spec.d.ts +1 -0
  102. package/dist/esm/repository.spec.js +19 -0
  103. package/dist/esm/repository.spec.js.map +1 -0
  104. package/dist/esm/step.d.ts +15 -0
  105. package/dist/esm/step.js +38 -0
  106. package/dist/esm/step.js.map +1 -0
  107. package/dist/esm/step.spec.d.ts +1 -0
  108. package/dist/esm/step.spec.js +27 -0
  109. package/dist/esm/step.spec.js.map +1 -0
  110. package/dist/esm/time-or-rule.d.ts +2 -0
  111. package/dist/esm/time-or-rule.js +17 -0
  112. package/dist/esm/time-or-rule.js.map +1 -0
  113. package/dist/esm/unit-id.d.ts +2 -0
  114. package/dist/esm/unit-id.js +11 -0
  115. package/dist/esm/unit-id.js.map +1 -0
  116. package/karma.config.js +1 -1
  117. package/package.json +5 -9
  118. package/src/index.ts +1 -1
  119. package/src/repository.ts +6 -8
  120. package/src/step.ts +1 -1
  121. package/tsconfig.cjs.json +8 -0
  122. package/tsconfig.json +6 -3
  123. package/dist/index.d.ts +0 -83
  124. package/dist/index.d.ts.map +0 -1
  125. package/dist/index.js +0 -255
  126. package/dist/index.js.map +0 -1
  127. package/dist/index.mjs +0 -243
  128. package/dist/index.mjs.map +0 -1
  129. package/tsconfig.test.json +0 -7
package/dist/index.d.ts DELETED
@@ -1,83 +0,0 @@
1
- import { DateTime } from "luxon";
2
- export type ConsumptionTypeId = "none" | "heat" | "water" | "cooling" | "electricity" | "infrastructure" | "all";
3
- export type RegisterId = "none" | "heatEnergy" | "diffHeatEnergy" | "heatEnergyVolumeInInlet" | "diffHeatEnergyVolumeInInlet" | "heatEnergyVolumeInOutlet" | "diffHeatEnergyVolumeInOutlet" | "coolingEnergy" | "diffCoolingEnergy" | "coolingEnergyVolumeInInlet" | "diffCoolingEnergyVolumeInInlet" | "coolingEnergyVolumeInOutlet" | "diffCoolingEnergyVolumeInOutlet" | "electricalEnergy" | "diffElectricalEnergy" | "reactiveEnergy" | "diffReactiveEnergy" | "volume" | "diffVolume" | "inletVolume" | "diffInletVolume" | "outletVolume" | "diffOutletVolume" | "pulseInputAVolume" | "diffPulseInputAVolume" | "pulseInputBVolume" | "diffPulseInputBVolume" | "mass" | "diffMass" | "inletMass" | "diffInletMass" | "outletMass" | "diffOutletMass" | "power" | "maxPower" | "minPower" | "avgPower" | "inletPower" | "maxInletPower" | "minInletPower" | "avgInletPower" | "outletPower" | "maxOutletPower" | "minOutletPower" | "avgOutletPower" | "volumeFlow" | "maxVolumeFlow" | "minVolumeFlow" | "avgVolumeFlow" | "inletVolumeFlow" | "maxInletVolumeFlow" | "minInletVolumeFlow" | "avgInletVolumeFlow" | "outletVolumeFlow" | "maxOutletVolumeFlow" | "minOutletVolumeFlow" | "avgOutletVolumeFlow" | "massFlow" | "maxMassFlow" | "minMassFlow" | "avgMassFlow" | "inletMassFlow" | "maxInletMassFlow" | "minInletMassFlow" | "avgInletMassFlow" | "outletMassFlow" | "maxOutletMassFlow" | "minOutletMassFlow" | "avgOutletMassFlow" | "flowTemperature" | "maxFlowTemperature" | "minFlowTemperature" | "avgFlowTemperature" | "inletFlowTemperature" | "maxInletFlowTemperature" | "minInletFlowTemperature" | "avgInletFlowTemperature" | "outletFlowTemperature" | "maxOutletFlowTemperature" | "minOutletFlowTemperature" | "avgOutletFlowTemperature" | "inletMinusOutletFlowTemperatureDifference" | "maxInletMinusOutletFlowTemperatureDifference" | "minInletMinusOutletFlowTemperatureDifference" | "avgInletMinusOutletFlowTemperatureDifference" | "outletMinusInletFlowTemperatureDifference" | "maxOutletMinusInletFlowTemperatureDifference" | "minOutletMinusInletFlowTemperatureDifference" | "avgOutletMinusInletFlowTemperatureDifference" | "ambientTemperature" | "maxAmbientTemperature" | "minAmbientTemperature" | "avgAmbientTemperature" | "radiatorTemperature" | "maxRadiatorTemperature" | "minRadiatorTemperature" | "avgRadiatorTemperature" | "relativeHumidity" | "kamstrupE8Inlet" | "diffKamstrupE8Inlet" | "kamstrupE9Outlet" | "diffKamstrupE9Outlet" | "operatingTime" | "diffOperatingTime" | "remainingBatteryTime" | "diffRemainingBatteryTime" | "deviceDate" | "deviceTime" | "deviceDateTime" | "timeSinceLastExactOverhearingArrived" | "timeAtLastExactOverhearingArrived" | "timeSinceLastPossibleCandidateOverhearingArrived" | "timeAtLastPossibleCandidateOverhearingArrived" | "timeSinceLastSampled" | "timeAtLastSampled" | "timeSinceLastInstallationMounted" | "timeAtLastInstallationMounted" | "basetime" | "instantTime" | "periodStartTime" | "periodEndTime" | "instantOrPeriodStartTime" | "instantOrPeriodEndTime" | "device" | "wMBusDeviceAddresses" | "kamdraftDeviceAddresses" | "tchlrDeviceAddresses" | "kamdaDeviceAddresses" | "msisdnDeviceAddresses" | "deviceRegisters" | "consumptionZone" | "mBusFormatStringSignature" | "deviceSoftwareVersion" | "kamstrupMulticalInfocodeType1" | "kamstrupMulticalInfocodeType2" | "kamstrupMulticalInfocodeType3" | "kamstrupMulticalInfocodeType4" | "kamstrupMulticalInfocode" | "kamstrupModuleType" | "diehlInfocodeType1" | "diehlInfocode" | "landisGyrMBusStatusType1" | "landisGyrMBusStatusType2" | "landisGyrMBusStatus" | "landisGyrInfocodeType1" | "landisGyrInfocodeType2" | "landisGyrInfocode" | "infocode";
4
- export type UnitId = "unitless" | "milliWattHour" | "wattHour" | "kiloWattHour" | "megaWattHour" | "gigaWattHour" | "calorie" | "kiloCalorie" | "megaCalorie" | "joule" | "kiloJoule" | "megaJoule" | "gigaJoule" | "liter" | "cubicMeter" | "fluidOunce" | "gallon" | "gram" | "kiloGram" | "tonne" | "ounce" | "pound" | "ton" | "second" | "minute" | "hour" | "day" | "week" | "month" | "year" | "milliWatt" | "watt" | "kiloWatt" | "megaWatt" | "gigaWatt" | "joulesPerSecond" | "joulesPerMinute" | "joulesPerHour" | "litersPerSecond" | "litersPerMinute" | "litersPerHour" | "cubicMetersPerSecond" | "cubicMetersPerMinute" | "cubicMetersPerHour" | "fluidOuncesPerSecond" | "fluidOuncesPerMinute" | "fluidOuncesPerHour" | "gallonsPerSecond" | "gallonsPerMinute" | "gallonsPerHour" | "gramsPerSecond" | "gramsPerMinute" | "gramsPerHour" | "kiloGramsPerSecond" | "kiloGramsPerMinute" | "kiloGramsPerHour" | "celcius" | "kelvin" | "fahrenheit" | "var" | "kiloVar" | "megaVar" | "varHour" | "kiloVarHour" | "megaVarHour" | "percentage" | "literCelcius" | "cubicMeterCelcius";
5
- export type AggregateId = "instant" | "diff" | "min" | "max" | "avg" | "sum" | "cnt" | "ssq";
6
- export type MeasureId = "none" | "duration" | "energy" | "humidity" | "mass" | "massFlow" | "power" | "reactiveEnergy" | "reactivePower" | "temperature" | "time" | "volume" | "volumeFlow";
7
- export interface RegisterDefinition {
8
- id: RegisterId;
9
- measure: MeasureId;
10
- aggregate: AggregateId;
11
- units: ReadonlyArray<UnitId>;
12
- immediate?: true;
13
- name?: string;
14
- description?: string;
15
- }
16
- interface RegisterPack {
17
- [key: string]: RegisterDefinition;
18
- }
19
- declare class Library {
20
- add(...definitions: (RegisterDefinition | RegisterPack)[]): void;
21
- has(id: RegisterId): boolean;
22
- tryGet(id: RegisterId): RegisterDefinition | undefined;
23
- get(id: RegisterId): RegisterDefinition;
24
- all(): RegisterDefinition[];
25
- reset(): void;
26
- }
27
- export const RegisterLibrary: Library;
28
- export const invariantDecimalSeparator: string;
29
- export const localeDecimalSeparator: string;
30
- interface Parts {
31
- invariantPrecisionString: string;
32
- invariantCoefficientString: string;
33
- exponent: number;
34
- noOfCoefficientDecimals: number;
35
- }
36
- declare class Formatter {
37
- toPrecision(value: number, precision: number): string;
38
- toLocalePrecision(value: number, precision: number): string;
39
- toFixed(value: number, precision: number): string;
40
- toLocaleFixed(value: number, precision: number): string;
41
- getParts(value: number, precision: number): Parts;
42
- }
43
- export const NumberFormatter: Formatter;
44
- declare class Convention {
45
- getAggregate(register: RegisterId | RegisterDefinition): AggregateId;
46
- toInstant(register: RegisterId | RegisterDefinition): RegisterId;
47
- toAggregate(register: RegisterId | RegisterDefinition, aggregate: AggregateId): RegisterId;
48
- }
49
- export const RegisterConvention: Convention;
50
- export type Step = "hour" | "day" | "week" | "month" | "year";
51
- export enum DayOfWeek {
52
- Monday = 1,
53
- Tuesday = 2,
54
- Wednesday = 3,
55
- Thursday = 4,
56
- Friday = 5,
57
- Saturday = 6,
58
- Sunday = 7
59
- }
60
- export type TimeOrRule = Date | DateTime | string;
61
- export class PrecisionNumber {
62
- value: number;
63
- precision: number;
64
- constructor(value: number, precision: number);
65
- static parse(input: string): PrecisionNumber;
66
- toString(): string;
67
- toFixed(): string;
68
- toPrecision(): string;
69
- toLocaleFixed(): string;
70
- toLocalePrecision(): string;
71
- }
72
- export type Repository = "some/repo";
73
- export function Repository(repo: string): Repository;
74
- export function Repository(team: string, name: string): Repository;
75
- namespace Repository {
76
- function split(repo: Repository): {
77
- team: string;
78
- name: string;
79
- };
80
- }
81
- export type Optional<T, K extends keyof T> = Pick<Partial<T>, K> & Omit<T, K>;
82
-
83
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"mappings":";AAAA,gCACI,MAAM,GACN,MAAM,GACN,OAAO,GACP,SAAS,GACT,aAAa,GACb,gBAAgB,GAChB,KAAK,CAAC;ACPV,yBACI,MAAM,GAEN,YAAY,GACZ,gBAAgB,GAEhB,yBAAyB,GACzB,6BAA6B,GAE7B,0BAA0B,GAC1B,8BAA8B,GAE9B,eAAe,GACf,mBAAmB,GAEnB,4BAA4B,GAC5B,gCAAgC,GAEhC,6BAA6B,GAC7B,iCAAiC,GAEjC,kBAAkB,GAClB,sBAAsB,GAEtB,gBAAgB,GAChB,oBAAoB,GAEpB,QAAQ,GACR,YAAY,GAEZ,aAAa,GACb,iBAAiB,GAEjB,cAAc,GACd,kBAAkB,GAElB,mBAAmB,GACnB,uBAAuB,GAEvB,mBAAmB,GACnB,uBAAuB,GAEvB,MAAM,GACN,UAAU,GAEV,WAAW,GACX,eAAe,GAEf,YAAY,GACZ,gBAAgB,GAEhB,OAAO,GACP,UAAU,GACV,UAAU,GACV,UAAU,GAEV,YAAY,GACZ,eAAe,GACf,eAAe,GACf,eAAe,GAEf,aAAa,GACb,gBAAgB,GAChB,gBAAgB,GAChB,gBAAgB,GAEhB,YAAY,GACZ,eAAe,GACf,eAAe,GACf,eAAe,GAEf,iBAAiB,GACjB,oBAAoB,GACpB,oBAAoB,GACpB,oBAAoB,GAEpB,kBAAkB,GAClB,qBAAqB,GACrB,qBAAqB,GACrB,qBAAqB,GAErB,UAAU,GACV,aAAa,GACb,aAAa,GACb,aAAa,GAEb,eAAe,GACf,kBAAkB,GAClB,kBAAkB,GAClB,kBAAkB,GAElB,gBAAgB,GAChB,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,GAEnB,iBAAiB,GACjB,oBAAoB,GACpB,oBAAoB,GACpB,oBAAoB,GAEpB,sBAAsB,GACtB,yBAAyB,GACzB,yBAAyB,GACzB,yBAAyB,GAEzB,uBAAuB,GACvB,0BAA0B,GAC1B,0BAA0B,GAC1B,0BAA0B,GAE1B,2CAA2C,GAC3C,8CAA8C,GAC9C,8CAA8C,GAC9C,8CAA8C,GAE9C,2CAA2C,GAC3C,8CAA8C,GAC9C,8CAA8C,GAC9C,8CAA8C,GAE9C,oBAAoB,GACpB,uBAAuB,GACvB,uBAAuB,GACvB,uBAAuB,GAEvB,qBAAqB,GACrB,wBAAwB,GACxB,wBAAwB,GACxB,wBAAwB,GAExB,kBAAkB,GAElB,iBAAiB,GACjB,qBAAqB,GACrB,kBAAkB,GAClB,sBAAsB,GAEtB,eAAe,GACf,mBAAmB,GAEnB,sBAAsB,GACtB,0BAA0B,GAE1B,YAAY,GACZ,YAAY,GACZ,gBAAgB,GAEhB,sCAAsC,GACtC,mCAAmC,GAEnC,kDAAkD,GAClD,+CAA+C,GAE/C,sBAAsB,GACtB,mBAAmB,GAEnB,kCAAkC,GAClC,+BAA+B,GAE/B,UAAU,GACV,aAAa,GACb,iBAAiB,GACjB,eAAe,GACf,0BAA0B,GAC1B,wBAAwB,GAExB,QAAQ,GACR,sBAAsB,GACtB,yBAAyB,GACzB,sBAAsB,GACtB,sBAAsB,GACtB,uBAAuB,GACvB,iBAAiB,GACjB,iBAAiB,GAEjB,2BAA2B,GAC3B,uBAAuB,GAEvB,+BAA+B,GAC/B,+BAA+B,GAC/B,+BAA+B,GAC/B,+BAA+B,GAC/B,0BAA0B,GAC1B,oBAAoB,GAEpB,oBAAoB,GACpB,eAAe,GAEf,0BAA0B,GAC1B,0BAA0B,GAC1B,qBAAqB,GACrB,wBAAwB,GACxB,wBAAwB,GACxB,mBAAmB,GAEnB,UAAU,CAAC;ACpMf,qBACI,UAAU,GAEV,eAAe,GACf,UAAU,GACV,cAAc,GACd,cAAc,GACd,cAAc,GACd,SAAS,GACT,aAAa,GACb,aAAa,GAEb,OAAO,GACP,WAAW,GACX,WAAW,GACX,WAAW,GAEX,OAAO,GACP,YAAY,GAEZ,YAAY,GACZ,QAAQ,GAER,MAAM,GACN,UAAU,GACV,OAAO,GAEP,OAAO,GACP,OAAO,GACP,KAAK,GAEL,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,KAAK,GACL,MAAM,GACN,OAAO,GACP,MAAM,GAEN,WAAW,GACX,MAAM,GACN,UAAU,GACV,UAAU,GACV,UAAU,GAEV,iBAAiB,GACjB,iBAAiB,GACjB,eAAe,GAEf,iBAAiB,GACjB,iBAAiB,GACjB,eAAe,GAEf,sBAAsB,GACtB,sBAAsB,GACtB,oBAAoB,GAEpB,sBAAsB,GACtB,sBAAsB,GACtB,oBAAoB,GAEpB,kBAAkB,GAClB,kBAAkB,GAClB,gBAAgB,GAEhB,gBAAgB,GAChB,gBAAgB,GAChB,cAAc,GAEd,oBAAoB,GACpB,oBAAoB,GACpB,kBAAkB,GAElB,SAAS,GACT,QAAQ,GACR,YAAY,GAEZ,KAAK,GACL,SAAS,GACT,SAAS,GAET,SAAS,GACT,aAAa,GACb,aAAa,GAEb,YAAY,GAEZ,cAAc,GACd,mBAAmB,CAAC;ACxFxB,0BACI,SAAS,GACT,MAAM,GACN,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,CAAC;ACRV,wBACI,MAAM,GACN,UAAU,GACV,QAAQ,GACR,UAAU,GACV,MAAM,GACN,UAAU,GACV,OAAO,GACP,gBAAgB,GAChB,eAAe,GACf,aAAa,GACb,MAAM,GACN,QAAQ,GACR,YAAY,CAAC;ACRjB;IAEI,EAAE,EAAE,UAAU,CAAC;IAEf,OAAO,EAAE,SAAS,CAAC;IAEnB,SAAS,EAAE,WAAW,CAAC;IAEvB,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAE7B,SAAS,CAAC,EAAE,IAAI,CAAC;IAGjB,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;ACpBD;IACI,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAAC;CACrC;ACAD;IAEW,GAAG,CAAC,GAAG,WAAW,EAAE,CAAC,kBAAkB,GAAG,YAAY,CAAC,EAAE;IAqBzD,GAAG,CAAC,EAAE,EAAE,UAAU;IAIlB,MAAM,CAAC,EAAE,EAAE,UAAU;IAIrB,GAAG,CAAC,EAAE,EAAE,UAAU;IAQlB,GAAG;IAIH,KAAK;CAGf;AAMD,OAAO,MAAM,wBAA+B,CAAC;ACxD7C,OAAO,MAAM,iCAA+C,CAAC;AAC7D,OAAO,MAAM,8BAAkD,CAAC;AAEhE;IACI,wBAAwB,EAAE,MAAM,CAAC;IACjC,0BAA0B,EAAE,MAAM,CAAC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,uBAAuB,EAAE,MAAM,CAAC;CACnC;AAED;IACW,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAsB5C,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAKlD,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAYxC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;IAK9C,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK;CA8B3D;AAED,OAAO,MAAM,0BAAiC,CAAC;AEvE/C;IACW,YAAY,CAAC,QAAQ,EAAE,UAAU,GAAG,kBAAkB;IAc7D,SAAS,CAAC,QAAQ,EAAE,UAAU,GAAG,kBAAkB;IAWnD,WAAW,CAAC,QAAQ,EAAE,UAAU,GAAG,kBAAkB,EAAE,SAAS,EAAE,WAAW;CAQhF;AAUD,OAAO,MAAM,8BAAqC,CAAC;AC1DnD,mBAAmB,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAE9D;IACI,MAAM,IAAI;IACV,OAAO,IAAI;IACX,SAAS,IAAI;IACb,QAAQ,IAAI;IACZ,MAAM,IAAI;IACV,QAAQ,IAAI;IACZ,MAAM,IAAI;CACb;ACVD,yBAAyB,IAAI,GAAG,QAAQ,GAAG,MAAM,CAAC;ACClD;IACuB,KAAK,EAAE,MAAM;IAAS,SAAS,EAAE,MAAM;gBAAvC,KAAK,EAAE,MAAM,EAAS,SAAS,EAAE,MAAM;IAG1D,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM;IAS1B,QAAQ;IAIR,OAAO;IAIP,WAAW;IAIX,aAAa;IAIb,iBAAiB;CAGpB;AClCD,yBAAkB,WAAW,CAAC;AAE9B,2BAAoB,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;AAC9C,2BAAoB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,CAAC;AAW5D,UAAU,UAAU,CAAC;IACjB,SAAgB,KAAK,CAAC,IAAI,EAAE,UAAU;;;MAMrC;CACJ;ACvBD,qBAAqB,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC","sources":["src/src/consumption-type-id.ts","src/src/register-id.ts","src/src/unit-id.ts","src/src/aggregate-id.ts","src/src/measure-id.ts","src/src/register-definition.ts","src/src/register-pack.ts","src/src/register-library.ts","src/src/number-formatter.ts","src/src/register-utils.ts","src/src/register-convention.ts","src/src/step.ts","src/src/time-or-rule.ts","src/src/precision-number.ts","src/src/repository.ts","src/src/optional.ts","src/src/index.ts","src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"import type { ConsumptionTypeId } from \"./consumption-type-id\";\nimport type { RegisterId } from \"./register-id\";\nimport type { UnitId } from \"./unit-id\";\nimport { RegisterLibrary } from \"./register-library\";\nimport type { RegisterDefinition } from \"./register-definition\";\nimport { NumberFormatter, invariantDecimalSeparator, localeDecimalSeparator } from \"./number-formatter\";\nimport { RegisterConvention } from \"./register-convention\";\nimport type { AggregateId } from \"./aggregate-id\";\nimport type { MeasureId } from \"./measure-id\";\nimport { Step, DayOfWeek } from \"./step\";\nimport { TimeOrRule } from \"./time-or-rule\";\nimport { PrecisionNumber } from \"./precision-number\";\nimport \"./repository\"; // We need this to get the Repository namespace exported\nimport type { Repository } from \"./repository\";\nimport type { Optional } from \"./optional\";\n\nexport {\n AggregateId,\n ConsumptionTypeId,\n DayOfWeek,\n MeasureId,\n NumberFormatter,\n PrecisionNumber,\n RegisterConvention,\n RegisterDefinition,\n RegisterId,\n RegisterLibrary,\n Repository,\n Step,\n TimeOrRule,\n UnitId,\n invariantDecimalSeparator,\n localeDecimalSeparator,\n Optional,\n};\n"],"names":[],"version":3,"file":"index.d.ts.map"}
package/dist/index.js DELETED
@@ -1,255 +0,0 @@
1
- var $8zHUo$luxon = require("luxon");
2
-
3
- function $parcel$export(e, n, v, s) {
4
- Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});
5
- }
6
-
7
- $parcel$export(module.exports, "DayOfWeek", () => $cb7e566ab9617245$export$7ed5ca4f8b987938);
8
- $parcel$export(module.exports, "NumberFormatter", () => $c1d0d16ee535ee41$export$cc77c4ff7e8673c5);
9
- $parcel$export(module.exports, "PrecisionNumber", () => $fc0db0cc74508f5f$export$60b023dc4cb7008e);
10
- $parcel$export(module.exports, "RegisterConvention", () => $9801131ab15e9b55$export$8cc0a4f27499ddb4);
11
- $parcel$export(module.exports, "RegisterLibrary", () => $f4899d1a2a2d1203$export$472902705794cfbb);
12
- $parcel$export(module.exports, "Step", () => $cb7e566ab9617245$exports.Step);
13
- $parcel$export(module.exports, "TimeOrRule", () => $ed463131b45acd37$exports.TimeOrRule);
14
- $parcel$export(module.exports, "invariantDecimalSeparator", () => $c1d0d16ee535ee41$export$18a249acfd29a1c5);
15
- $parcel$export(module.exports, "localeDecimalSeparator", () => $c1d0d16ee535ee41$export$c146a453a9d3226d);
16
- class $f4899d1a2a2d1203$var$Library {
17
- definitions = {};
18
- add(...definitions) {
19
- for (const definition of definitions){
20
- if ($f4899d1a2a2d1203$var$isDefinition(definition)) this.tryAdd(definition);
21
- else for (const definitionInPack of Object.values(definition))this.tryAdd(definitionInPack);
22
- }
23
- }
24
- tryAdd(definition) {
25
- if (!this.definitions[definition.id]) {
26
- this.definitions[definition.id] = definition;
27
- return true;
28
- }
29
- return false;
30
- }
31
- has(id) {
32
- return !!this.definitions[id];
33
- }
34
- tryGet(id) {
35
- return this.definitions[id];
36
- }
37
- get(id) {
38
- const definition = this.definitions[id];
39
- if (!definition) throw new Error(`Defintion was not loaded for register ${id}`);
40
- return definition;
41
- }
42
- all() {
43
- return Object.values(this.definitions).map((x)=>x
44
- );
45
- }
46
- reset() {
47
- this.definitions = {};
48
- }
49
- }
50
- function $f4899d1a2a2d1203$var$isDefinition(definitionOrPack) {
51
- return !!(definitionOrPack.id && definitionOrPack.aggregate && definitionOrPack.units);
52
- }
53
- const $f4899d1a2a2d1203$export$472902705794cfbb = new $f4899d1a2a2d1203$var$Library();
54
-
55
-
56
- const $c1d0d16ee535ee41$export$18a249acfd29a1c5 = 0.1.toString()[1];
57
- const $c1d0d16ee535ee41$export$c146a453a9d3226d = 0.1.toLocaleString()[1];
58
- class $c1d0d16ee535ee41$var$Formatter {
59
- toPrecision(value, precision) {
60
- if (value === 0) // (0).toPrecision(1) == "0"
61
- // (0).toPrecision(2) == "0.0"
62
- // (0).toPrecision(3) == "0.00"
63
- // However, we want:
64
- // Formatter.toPrecision(0, 0) == "0"
65
- // Formatter.toPrecision(0, 1) == "0.0"
66
- // Formatter.toPrecision(0, 2) == "0.00"
67
- return value.toPrecision(precision + 1);
68
- const absValue = Math.abs(value);
69
- if (absValue < 1) return value.toPrecision(precision);
70
- const noOfIntegerDigits = Math.round(absValue).toString().length;
71
- return precision >= noOfIntegerDigits ? value.toFixed(precision - noOfIntegerDigits) : value.toPrecision(precision);
72
- }
73
- toLocalePrecision(value, precision) {
74
- return this.toPrecision(value, precision).replace($c1d0d16ee535ee41$export$18a249acfd29a1c5, $c1d0d16ee535ee41$export$c146a453a9d3226d);
75
- }
76
- toFixed(value, precision) {
77
- const parts = this.getParts(value, precision);
78
- if (parts.noOfCoefficientDecimals < parts.exponent) {
79
- const number = parts.invariantCoefficientString.replace($c1d0d16ee535ee41$export$18a249acfd29a1c5, "");
80
- const zeros = parts.exponent - parts.noOfCoefficientDecimals;
81
- return `${number}${"0".repeat(zeros)}`;
82
- } else return parts.invariantPrecisionString;
83
- }
84
- toLocaleFixed(value, precision) {
85
- return this.toFixed(value, precision).replace($c1d0d16ee535ee41$export$18a249acfd29a1c5, $c1d0d16ee535ee41$export$c146a453a9d3226d);
86
- }
87
- getParts(value, precision) {
88
- const precisionString = this.toPrecision(value, precision);
89
- if (precisionString.indexOf("e") >= 0) {
90
- const match = /(.*)e([\+-]\d+)$/.exec(precisionString);
91
- const coefficientString = match[1];
92
- const exponent = parseInt(match[2]);
93
- const decimalSeparatorIndex = coefficientString.indexOf($c1d0d16ee535ee41$export$18a249acfd29a1c5);
94
- const noOfCoefficientDecimals = decimalSeparatorIndex >= 0 ? coefficientString.length - decimalSeparatorIndex - 1 : 0;
95
- return {
96
- invariantPrecisionString: precisionString,
97
- invariantCoefficientString: coefficientString,
98
- exponent: exponent,
99
- noOfCoefficientDecimals: noOfCoefficientDecimals
100
- };
101
- } else {
102
- const decimalSeparatorIndex = precisionString.indexOf($c1d0d16ee535ee41$export$18a249acfd29a1c5);
103
- const noOfCoefficientDecimals = decimalSeparatorIndex >= 0 ? precisionString.length - decimalSeparatorIndex - 1 : 0;
104
- return {
105
- invariantPrecisionString: precisionString,
106
- invariantCoefficientString: precisionString,
107
- exponent: 0,
108
- noOfCoefficientDecimals: noOfCoefficientDecimals
109
- };
110
- }
111
- }
112
- }
113
- const $c1d0d16ee535ee41$export$cc77c4ff7e8673c5 = new $c1d0d16ee535ee41$var$Formatter();
114
-
115
-
116
- function $09dae2b18586a1cd$export$61f06221716a39a5(register) {
117
- return typeof register === "string" ? register : register.id;
118
- }
119
-
120
-
121
- const $9801131ab15e9b55$export$9d2f36f54a76c3c0 = {
122
- instant: "",
123
- diff: "diff",
124
- min: "min",
125
- max: "max",
126
- avg: "avg",
127
- sum: "sum",
128
- cnt: "cnt",
129
- ssq: "ssq"
130
- };
131
- class $9801131ab15e9b55$var$Convention {
132
- getAggregate(register) {
133
- const registerId = $09dae2b18586a1cd$export$61f06221716a39a5(register);
134
- // Brute force all prefixes - if none of them, then it must be instant.
135
- for (const aggregateString of Object.keys($9801131ab15e9b55$export$9d2f36f54a76c3c0)){
136
- const aggregate = aggregateString;
137
- const prefix = $9801131ab15e9b55$export$9d2f36f54a76c3c0[aggregate];
138
- if (prefix.length && $9801131ab15e9b55$export$ea93bfe3a74b70f3(registerId, prefix)) // Not instant - it was any of the others.
139
- return aggregate;
140
- }
141
- return "instant";
142
- }
143
- toInstant(register) {
144
- const registerId = $09dae2b18586a1cd$export$61f06221716a39a5(register);
145
- for (const prefix of Object.values($9801131ab15e9b55$export$9d2f36f54a76c3c0))if (prefix.length && $9801131ab15e9b55$export$ea93bfe3a74b70f3(registerId, prefix)) {
146
- const tail = registerId.substr(prefix.length);
147
- return tail[0].toLowerCase() + tail.substr(1);
148
- }
149
- return registerId;
150
- }
151
- toAggregate(register, aggregate) {
152
- const instantRegisterId = this.toInstant(register);
153
- if (aggregate === "instant") return instantRegisterId;
154
- const prefix = $9801131ab15e9b55$export$9d2f36f54a76c3c0[aggregate];
155
- return prefix + instantRegisterId[0].toUpperCase() + instantRegisterId.substr(1);
156
- }
157
- }
158
- function $9801131ab15e9b55$export$ea93bfe3a74b70f3(registerId, prefix) {
159
- return registerId.startsWith(prefix) && $9801131ab15e9b55$var$isUppercase(registerId[prefix.length]);
160
- }
161
- function $9801131ab15e9b55$var$isUppercase(input) {
162
- return input.toUpperCase() === input;
163
- }
164
- const $9801131ab15e9b55$export$8cc0a4f27499ddb4 = new $9801131ab15e9b55$var$Convention();
165
-
166
-
167
-
168
- let $cb7e566ab9617245$export$7ed5ca4f8b987938;
169
- (function($cb7e566ab9617245$export$7ed5ca4f8b987938) {
170
- $cb7e566ab9617245$export$7ed5ca4f8b987938[$cb7e566ab9617245$export$7ed5ca4f8b987938["Monday"] = 1] = "Monday";
171
- $cb7e566ab9617245$export$7ed5ca4f8b987938[$cb7e566ab9617245$export$7ed5ca4f8b987938["Tuesday"] = 2] = "Tuesday";
172
- $cb7e566ab9617245$export$7ed5ca4f8b987938[$cb7e566ab9617245$export$7ed5ca4f8b987938["Wednesday"] = 3] = "Wednesday";
173
- $cb7e566ab9617245$export$7ed5ca4f8b987938[$cb7e566ab9617245$export$7ed5ca4f8b987938["Thursday"] = 4] = "Thursday";
174
- $cb7e566ab9617245$export$7ed5ca4f8b987938[$cb7e566ab9617245$export$7ed5ca4f8b987938["Friday"] = 5] = "Friday";
175
- $cb7e566ab9617245$export$7ed5ca4f8b987938[$cb7e566ab9617245$export$7ed5ca4f8b987938["Saturday"] = 6] = "Saturday";
176
- $cb7e566ab9617245$export$7ed5ca4f8b987938[$cb7e566ab9617245$export$7ed5ca4f8b987938["Sunday"] = 7] = "Sunday";
177
- })($cb7e566ab9617245$export$7ed5ca4f8b987938 || ($cb7e566ab9617245$export$7ed5ca4f8b987938 = {}));
178
- let $cb7e566ab9617245$var$Step;
179
- (function(Step) {
180
- function startOf(dateTime, step, firstDayOfWeek) {
181
- if (step === "week") {
182
- const value = dateTime.startOf("day").set({
183
- weekday: firstDayOfWeek ?? $cb7e566ab9617245$export$7ed5ca4f8b987938.Monday
184
- });
185
- return value > dateTime ? value.minus({
186
- days: 7
187
- }) : value;
188
- } else return dateTime.startOf(step);
189
- }
190
- Step.startOf = startOf;
191
- function asDuration(step, amount = 1) {
192
- switch(step){
193
- case "hour":
194
- return $8zHUo$luxon.Duration.fromObject({
195
- hours: amount
196
- });
197
- case "day":
198
- return $8zHUo$luxon.Duration.fromObject({
199
- days: amount
200
- });
201
- case "week":
202
- return $8zHUo$luxon.Duration.fromObject({
203
- days: 7 * amount
204
- });
205
- case "month":
206
- return $8zHUo$luxon.Duration.fromObject({
207
- months: amount
208
- });
209
- case "year":
210
- return $8zHUo$luxon.Duration.fromObject({
211
- years: amount
212
- });
213
- }
214
- }
215
- Step.asDuration = asDuration;
216
- })($cb7e566ab9617245$var$Step || ($cb7e566ab9617245$var$Step = {}));
217
-
218
-
219
-
220
-
221
-
222
-
223
- class $fc0db0cc74508f5f$export$60b023dc4cb7008e {
224
- constructor(value, precision){
225
- this.value = value;
226
- this.precision = precision;
227
- }
228
- static parse(input) {
229
- let normalized = input.trim().replace(",", ".").replace($c1d0d16ee535ee41$export$c146a453a9d3226d, $c1d0d16ee535ee41$export$18a249acfd29a1c5);
230
- if (normalized.endsWith($c1d0d16ee535ee41$export$18a249acfd29a1c5)) normalized += "0";
231
- const precision = normalized.replace(".", "").replace("+", "").replace("-", "").length;
232
- return new $fc0db0cc74508f5f$export$60b023dc4cb7008e(parseFloat(normalized), precision);
233
- }
234
- toString() {
235
- return this.value.toString();
236
- }
237
- toFixed() {
238
- return $c1d0d16ee535ee41$export$cc77c4ff7e8673c5.toFixed(this.value, this.precision);
239
- }
240
- toPrecision() {
241
- return $c1d0d16ee535ee41$export$cc77c4ff7e8673c5.toPrecision(this.value, this.precision);
242
- }
243
- toLocaleFixed() {
244
- return $c1d0d16ee535ee41$export$cc77c4ff7e8673c5.toLocaleFixed(this.value, this.precision);
245
- }
246
- toLocalePrecision() {
247
- return $c1d0d16ee535ee41$export$cc77c4ff7e8673c5.toLocalePrecision(this.value, this.precision);
248
- }
249
- }
250
-
251
-
252
-
253
-
254
-
255
- //# sourceMappingURL=index.js.map
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"mappings":"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","sources":["src/index.ts","src/register-library.ts","src/number-formatter.ts","src/register-convention.ts","src/register-utils.ts","src/step.ts","src/time-or-rule.ts","src/precision-number.ts"],"sourcesContent":["import type { ConsumptionTypeId } from \"./consumption-type-id\";\nimport type { RegisterId } from \"./register-id\";\nimport type { UnitId } from \"./unit-id\";\nimport { RegisterLibrary } from \"./register-library\";\nimport type { RegisterDefinition } from \"./register-definition\";\nimport { NumberFormatter, invariantDecimalSeparator, localeDecimalSeparator } from \"./number-formatter\";\nimport { RegisterConvention } from \"./register-convention\";\nimport type { AggregateId } from \"./aggregate-id\";\nimport type { MeasureId } from \"./measure-id\";\nimport { Step, DayOfWeek } from \"./step\";\nimport { TimeOrRule } from \"./time-or-rule\";\nimport { PrecisionNumber } from \"./precision-number\";\nimport \"./repository\"; // We need this to get the Repository namespace exported\nimport type { Repository } from \"./repository\";\nimport type { Optional } from \"./optional\";\n\nexport {\n AggregateId,\n ConsumptionTypeId,\n DayOfWeek,\n MeasureId,\n NumberFormatter,\n PrecisionNumber,\n RegisterConvention,\n RegisterDefinition,\n RegisterId,\n RegisterLibrary,\n Repository,\n Step,\n TimeOrRule,\n UnitId,\n invariantDecimalSeparator,\n localeDecimalSeparator,\n Optional,\n};\n","import { RegisterDefinition } from \"./register-definition\";\nimport { RegisterId } from \"./register-id\";\nimport { RegisterPack } from \"./register-pack\";\n\nclass Library {\n private definitions: Partial<{ [id in RegisterId]: RegisterDefinition }> = {};\n public add(...definitions: (RegisterDefinition | RegisterPack)[]) {\n for (const definition of definitions) {\n if (isDefinition(definition)) {\n this.tryAdd(definition);\n }\n else {\n for (const definitionInPack of Object.values(definition)) {\n this.tryAdd(definitionInPack);\n }\n }\n }\n }\n\n private tryAdd(definition: RegisterDefinition) {\n if (!this.definitions[definition.id]) {\n this.definitions[definition.id] = definition;\n return true;\n }\n return false;\n }\n\n public has(id: RegisterId) {\n return !!this.definitions[id];\n }\n\n public tryGet(id: RegisterId) {\n return this.definitions[id];\n }\n\n public get(id: RegisterId) {\n const definition = this.definitions[id];\n if (!definition) {\n throw new Error(`Defintion was not loaded for register ${id}`);\n }\n return definition;\n }\n\n public all() {\n return Object.values(this.definitions).map(x => x!);\n }\n\n public reset() {\n this.definitions = {};\n }\n}\n\nfunction isDefinition(definitionOrPack: RegisterDefinition | RegisterPack): definitionOrPack is RegisterDefinition {\n return !!(definitionOrPack.id && definitionOrPack.aggregate && definitionOrPack.units);\n}\n\nexport const RegisterLibrary = new Library();\r\n","export const invariantDecimalSeparator = (0.1).toString()[1];\nexport const localeDecimalSeparator = (0.1).toLocaleString()[1];\n\nexport interface Parts {\n invariantPrecisionString: string;\n invariantCoefficientString: string;\n exponent: number;\n noOfCoefficientDecimals: number;\n}\n\nclass Formatter {\n public toPrecision(value: number, precision: number) {\n if (value === 0) {\n // (0).toPrecision(1) == \"0\"\n // (0).toPrecision(2) == \"0.0\"\n // (0).toPrecision(3) == \"0.00\"\n // However, we want:\n // Formatter.toPrecision(0, 0) == \"0\"\n // Formatter.toPrecision(0, 1) == \"0.0\"\n // Formatter.toPrecision(0, 2) == \"0.00\"\n return value.toPrecision(precision + 1);\n }\n const absValue = Math.abs(value);\n if (absValue < 1) {\n return value.toPrecision(precision);\n }\n\n const noOfIntegerDigits = Math.round(absValue).toString().length;\n return precision >= noOfIntegerDigits\n ? value.toFixed(precision - noOfIntegerDigits)\n : value.toPrecision(precision);\n }\n\n public toLocalePrecision(value: number, precision: number) {\n return this.toPrecision(value, precision)\n .replace(invariantDecimalSeparator, localeDecimalSeparator);\n }\n\n public toFixed(value: number, precision: number) {\n const parts = this.getParts(value, precision);\n if (parts.noOfCoefficientDecimals < parts.exponent) {\n const number = parts.invariantCoefficientString.replace(invariantDecimalSeparator, \"\");\n const zeros = parts.exponent - parts.noOfCoefficientDecimals;\n return `${number}${\"0\".repeat(zeros)}`;\n }\n else {\n return parts.invariantPrecisionString;\n }\n }\n\n public toLocaleFixed(value: number, precision: number) {\n return this.toFixed(value, precision)\n .replace(invariantDecimalSeparator, localeDecimalSeparator);\n }\n\n public getParts(value: number, precision: number): Parts {\n const precisionString = this.toPrecision(value, precision);\n if (precisionString.indexOf(\"e\") >= 0) {\n const match = /(.*)e([\\+-]\\d+)$/.exec(precisionString)!;\n const coefficientString = match[1];\n const exponent = parseInt(match[2]);\n const decimalSeparatorIndex = coefficientString.indexOf(invariantDecimalSeparator);\n const noOfCoefficientDecimals = decimalSeparatorIndex >= 0\n ? coefficientString.length - decimalSeparatorIndex - 1\n : 0;\n return {\n invariantPrecisionString: precisionString,\n invariantCoefficientString: coefficientString,\n exponent,\n noOfCoefficientDecimals,\n };\n }\n else {\n const decimalSeparatorIndex = precisionString.indexOf(invariantDecimalSeparator);\n const noOfCoefficientDecimals = decimalSeparatorIndex >= 0\n ? precisionString.length - decimalSeparatorIndex - 1\n : 0;\n return {\n invariantPrecisionString: precisionString,\n invariantCoefficientString: precisionString,\n exponent: 0,\n noOfCoefficientDecimals,\n };\n }\n }\n}\n\nexport const NumberFormatter = new Formatter();\n","import { RegisterDefinition } from \".\";\nimport { AggregateId } from \"./aggregate-id\";\nimport { RegisterId } from \"./register-id\";\nimport { getRegisterId } from \"./register-utils\";\n\nexport const aggregatePrefixes: { [aggregateId in AggregateId]: string } = {\n instant: \"\",\n diff: \"diff\",\n min: \"min\",\n max: \"max\",\n avg: \"avg\",\n sum: \"sum\",\n cnt: \"cnt\",\n ssq: \"ssq\",\n};\n\nclass Convention {\n public getAggregate(register: RegisterId | RegisterDefinition) {\n const registerId = getRegisterId(register);\n // Brute force all prefixes - if none of them, then it must be instant.\n for (const aggregateString of Object.keys(aggregatePrefixes)) {\n const aggregate = <AggregateId>aggregateString;\n const prefix = aggregatePrefixes[aggregate];\n if (prefix.length && isPrefix(registerId, prefix)) {\n // Not instant - it was any of the others.\n return aggregate;\n }\n }\n return \"instant\";\n }\n\n toInstant(register: RegisterId | RegisterDefinition) {\n const registerId = getRegisterId(register);\n for (const prefix of Object.values(aggregatePrefixes)) {\n if (prefix.length && isPrefix(registerId, prefix)) {\n const tail = registerId.substr(prefix.length);\n return <RegisterId>(tail[0].toLowerCase() + tail.substr(1));\n }\n }\n return registerId;\n }\n\n toAggregate(register: RegisterId | RegisterDefinition, aggregate: AggregateId) {\n const instantRegisterId = this.toInstant(register);\n if (aggregate === \"instant\") {\n return instantRegisterId;\n }\n const prefix = aggregatePrefixes[aggregate];\n return <RegisterId>(prefix + instantRegisterId[0].toUpperCase() + instantRegisterId.substr(1));\n }\n}\n\nexport function isPrefix(registerId: RegisterId, prefix: string) {\n return registerId.startsWith(prefix) && isUppercase(registerId[prefix.length]);\n}\n\nfunction isUppercase(input: string) {\n return input.toUpperCase() === input;\n}\n\nexport const RegisterConvention = new Convention();\r\n","import { RegisterDefinition } from \"./register-definition\";\nimport { RegisterId } from \"./register-id\";\n\nexport function getRegisterId(register: RegisterId | RegisterDefinition) {\n return typeof register === \"string\" ? register : register.id;\n}\r\n","import { DateTime, Duration } from \"luxon\";\n\nexport type Step = \"hour\" | \"day\" | \"week\" | \"month\" | \"year\";\n\nexport enum DayOfWeek {\n Monday = 1,\n Tuesday = 2,\n Wednesday = 3,\n Thursday = 4,\n Friday = 5,\n Saturday = 6,\n Sunday = 7,\n};\n\nnamespace Step {\n export function startOf(dateTime: DateTime, step: Step, firstDayOfWeek?: DayOfWeek): DateTime {\n if (step === \"week\") {\n const value = dateTime.startOf(\"day\").set({ weekday: firstDayOfWeek ?? DayOfWeek.Monday });\n return value > dateTime\n ? value.minus({ days: 7 })\n : value;\n }\n else {\n return dateTime.startOf(step);\n }\n }\n\n export function asDuration(step: Step, amount = 1): Duration {\n switch (step) {\n case \"hour\": return Duration.fromObject({ hours: amount });\n case \"day\": return Duration.fromObject({ days: amount });\n case \"week\": return Duration.fromObject({ days: 7 * amount });\n case \"month\": return Duration.fromObject({ months: amount });\n case \"year\": return Duration.fromObject({ years: amount });\n }\n }\n}\n","import { DateTime } from \"luxon\";\n\nexport type TimeOrRule = Date | DateTime | string;\n\nnamespace TimeOrRule {\n export function isTime(input: TimeOrRule): input is Date | DateTime {\n return typeof input !== \"string\";\n }\n\n export function isRule(input: TimeOrRule): input is string {\n return typeof input === \"string\";\n }\n\n export function asJSON(input: TimeOrRule) {\n return isRule(input) ? input : input.toJSON();\n }\n}\n","import { invariantDecimalSeparator } from \".\";\nimport { localeDecimalSeparator, NumberFormatter } from \"./number-formatter\";\n\nexport class PrecisionNumber {\n constructor(public value: number, public precision: number) {\n }\n\n static parse(input: string) {\n let normalized = input.trim().replace(\",\", \".\").replace(localeDecimalSeparator, invariantDecimalSeparator);\n if (normalized.endsWith(invariantDecimalSeparator)) {\n normalized += \"0\";\n }\n const precision = normalized.replace(\".\", \"\").replace(\"+\", \"\").replace(\"-\", \"\").length;\n return new PrecisionNumber(parseFloat(normalized), precision);\n }\n\n toString() {\n return this.value.toString();\n }\n\n toFixed() {\n return NumberFormatter.toFixed(this.value, this.precision);\n }\n\n toPrecision() {\n return NumberFormatter.toPrecision(this.value, this.precision);\n }\n\n toLocaleFixed() {\n return NumberFormatter.toLocaleFixed(this.value, this.precision);\n }\n\n toLocalePrecision() {\n return NumberFormatter.toLocalePrecision(this.value, this.precision);\n }\n}\n"],"names":[],"version":3,"file":"index.js.map"}
package/dist/index.mjs DELETED
@@ -1,243 +0,0 @@
1
- import {Duration as $hgUW1$Duration} from "luxon";
2
-
3
- class $2bc946b609f83430$var$Library {
4
- definitions = {};
5
- add(...definitions) {
6
- for (const definition of definitions){
7
- if ($2bc946b609f83430$var$isDefinition(definition)) this.tryAdd(definition);
8
- else for (const definitionInPack of Object.values(definition))this.tryAdd(definitionInPack);
9
- }
10
- }
11
- tryAdd(definition) {
12
- if (!this.definitions[definition.id]) {
13
- this.definitions[definition.id] = definition;
14
- return true;
15
- }
16
- return false;
17
- }
18
- has(id) {
19
- return !!this.definitions[id];
20
- }
21
- tryGet(id) {
22
- return this.definitions[id];
23
- }
24
- get(id) {
25
- const definition = this.definitions[id];
26
- if (!definition) throw new Error(`Defintion was not loaded for register ${id}`);
27
- return definition;
28
- }
29
- all() {
30
- return Object.values(this.definitions).map((x)=>x
31
- );
32
- }
33
- reset() {
34
- this.definitions = {};
35
- }
36
- }
37
- function $2bc946b609f83430$var$isDefinition(definitionOrPack) {
38
- return !!(definitionOrPack.id && definitionOrPack.aggregate && definitionOrPack.units);
39
- }
40
- const $2bc946b609f83430$export$472902705794cfbb = new $2bc946b609f83430$var$Library();
41
-
42
-
43
- const $a27da276f4185ebf$export$18a249acfd29a1c5 = 0.1.toString()[1];
44
- const $a27da276f4185ebf$export$c146a453a9d3226d = 0.1.toLocaleString()[1];
45
- class $a27da276f4185ebf$var$Formatter {
46
- toPrecision(value, precision) {
47
- if (value === 0) // (0).toPrecision(1) == "0"
48
- // (0).toPrecision(2) == "0.0"
49
- // (0).toPrecision(3) == "0.00"
50
- // However, we want:
51
- // Formatter.toPrecision(0, 0) == "0"
52
- // Formatter.toPrecision(0, 1) == "0.0"
53
- // Formatter.toPrecision(0, 2) == "0.00"
54
- return value.toPrecision(precision + 1);
55
- const absValue = Math.abs(value);
56
- if (absValue < 1) return value.toPrecision(precision);
57
- const noOfIntegerDigits = Math.round(absValue).toString().length;
58
- return precision >= noOfIntegerDigits ? value.toFixed(precision - noOfIntegerDigits) : value.toPrecision(precision);
59
- }
60
- toLocalePrecision(value, precision) {
61
- return this.toPrecision(value, precision).replace($a27da276f4185ebf$export$18a249acfd29a1c5, $a27da276f4185ebf$export$c146a453a9d3226d);
62
- }
63
- toFixed(value, precision) {
64
- const parts = this.getParts(value, precision);
65
- if (parts.noOfCoefficientDecimals < parts.exponent) {
66
- const number = parts.invariantCoefficientString.replace($a27da276f4185ebf$export$18a249acfd29a1c5, "");
67
- const zeros = parts.exponent - parts.noOfCoefficientDecimals;
68
- return `${number}${"0".repeat(zeros)}`;
69
- } else return parts.invariantPrecisionString;
70
- }
71
- toLocaleFixed(value, precision) {
72
- return this.toFixed(value, precision).replace($a27da276f4185ebf$export$18a249acfd29a1c5, $a27da276f4185ebf$export$c146a453a9d3226d);
73
- }
74
- getParts(value, precision) {
75
- const precisionString = this.toPrecision(value, precision);
76
- if (precisionString.indexOf("e") >= 0) {
77
- const match = /(.*)e([\+-]\d+)$/.exec(precisionString);
78
- const coefficientString = match[1];
79
- const exponent = parseInt(match[2]);
80
- const decimalSeparatorIndex = coefficientString.indexOf($a27da276f4185ebf$export$18a249acfd29a1c5);
81
- const noOfCoefficientDecimals = decimalSeparatorIndex >= 0 ? coefficientString.length - decimalSeparatorIndex - 1 : 0;
82
- return {
83
- invariantPrecisionString: precisionString,
84
- invariantCoefficientString: coefficientString,
85
- exponent: exponent,
86
- noOfCoefficientDecimals: noOfCoefficientDecimals
87
- };
88
- } else {
89
- const decimalSeparatorIndex = precisionString.indexOf($a27da276f4185ebf$export$18a249acfd29a1c5);
90
- const noOfCoefficientDecimals = decimalSeparatorIndex >= 0 ? precisionString.length - decimalSeparatorIndex - 1 : 0;
91
- return {
92
- invariantPrecisionString: precisionString,
93
- invariantCoefficientString: precisionString,
94
- exponent: 0,
95
- noOfCoefficientDecimals: noOfCoefficientDecimals
96
- };
97
- }
98
- }
99
- }
100
- const $a27da276f4185ebf$export$cc77c4ff7e8673c5 = new $a27da276f4185ebf$var$Formatter();
101
-
102
-
103
- function $c2861bc7f0e1f73a$export$61f06221716a39a5(register) {
104
- return typeof register === "string" ? register : register.id;
105
- }
106
-
107
-
108
- const $e341043498f0791b$export$9d2f36f54a76c3c0 = {
109
- instant: "",
110
- diff: "diff",
111
- min: "min",
112
- max: "max",
113
- avg: "avg",
114
- sum: "sum",
115
- cnt: "cnt",
116
- ssq: "ssq"
117
- };
118
- class $e341043498f0791b$var$Convention {
119
- getAggregate(register) {
120
- const registerId = $c2861bc7f0e1f73a$export$61f06221716a39a5(register);
121
- // Brute force all prefixes - if none of them, then it must be instant.
122
- for (const aggregateString of Object.keys($e341043498f0791b$export$9d2f36f54a76c3c0)){
123
- const aggregate = aggregateString;
124
- const prefix = $e341043498f0791b$export$9d2f36f54a76c3c0[aggregate];
125
- if (prefix.length && $e341043498f0791b$export$ea93bfe3a74b70f3(registerId, prefix)) // Not instant - it was any of the others.
126
- return aggregate;
127
- }
128
- return "instant";
129
- }
130
- toInstant(register) {
131
- const registerId = $c2861bc7f0e1f73a$export$61f06221716a39a5(register);
132
- for (const prefix of Object.values($e341043498f0791b$export$9d2f36f54a76c3c0))if (prefix.length && $e341043498f0791b$export$ea93bfe3a74b70f3(registerId, prefix)) {
133
- const tail = registerId.substr(prefix.length);
134
- return tail[0].toLowerCase() + tail.substr(1);
135
- }
136
- return registerId;
137
- }
138
- toAggregate(register, aggregate) {
139
- const instantRegisterId = this.toInstant(register);
140
- if (aggregate === "instant") return instantRegisterId;
141
- const prefix = $e341043498f0791b$export$9d2f36f54a76c3c0[aggregate];
142
- return prefix + instantRegisterId[0].toUpperCase() + instantRegisterId.substr(1);
143
- }
144
- }
145
- function $e341043498f0791b$export$ea93bfe3a74b70f3(registerId, prefix) {
146
- return registerId.startsWith(prefix) && $e341043498f0791b$var$isUppercase(registerId[prefix.length]);
147
- }
148
- function $e341043498f0791b$var$isUppercase(input) {
149
- return input.toUpperCase() === input;
150
- }
151
- const $e341043498f0791b$export$8cc0a4f27499ddb4 = new $e341043498f0791b$var$Convention();
152
-
153
-
154
-
155
- let $3742b95f8d2fe1ca$export$7ed5ca4f8b987938;
156
- (function($3742b95f8d2fe1ca$export$7ed5ca4f8b987938) {
157
- $3742b95f8d2fe1ca$export$7ed5ca4f8b987938[$3742b95f8d2fe1ca$export$7ed5ca4f8b987938["Monday"] = 1] = "Monday";
158
- $3742b95f8d2fe1ca$export$7ed5ca4f8b987938[$3742b95f8d2fe1ca$export$7ed5ca4f8b987938["Tuesday"] = 2] = "Tuesday";
159
- $3742b95f8d2fe1ca$export$7ed5ca4f8b987938[$3742b95f8d2fe1ca$export$7ed5ca4f8b987938["Wednesday"] = 3] = "Wednesday";
160
- $3742b95f8d2fe1ca$export$7ed5ca4f8b987938[$3742b95f8d2fe1ca$export$7ed5ca4f8b987938["Thursday"] = 4] = "Thursday";
161
- $3742b95f8d2fe1ca$export$7ed5ca4f8b987938[$3742b95f8d2fe1ca$export$7ed5ca4f8b987938["Friday"] = 5] = "Friday";
162
- $3742b95f8d2fe1ca$export$7ed5ca4f8b987938[$3742b95f8d2fe1ca$export$7ed5ca4f8b987938["Saturday"] = 6] = "Saturday";
163
- $3742b95f8d2fe1ca$export$7ed5ca4f8b987938[$3742b95f8d2fe1ca$export$7ed5ca4f8b987938["Sunday"] = 7] = "Sunday";
164
- })($3742b95f8d2fe1ca$export$7ed5ca4f8b987938 || ($3742b95f8d2fe1ca$export$7ed5ca4f8b987938 = {}));
165
- let $3742b95f8d2fe1ca$var$Step;
166
- (function(Step) {
167
- function startOf(dateTime, step, firstDayOfWeek) {
168
- if (step === "week") {
169
- const value = dateTime.startOf("day").set({
170
- weekday: firstDayOfWeek ?? $3742b95f8d2fe1ca$export$7ed5ca4f8b987938.Monday
171
- });
172
- return value > dateTime ? value.minus({
173
- days: 7
174
- }) : value;
175
- } else return dateTime.startOf(step);
176
- }
177
- Step.startOf = startOf;
178
- function asDuration(step, amount = 1) {
179
- switch(step){
180
- case "hour":
181
- return $hgUW1$Duration.fromObject({
182
- hours: amount
183
- });
184
- case "day":
185
- return $hgUW1$Duration.fromObject({
186
- days: amount
187
- });
188
- case "week":
189
- return $hgUW1$Duration.fromObject({
190
- days: 7 * amount
191
- });
192
- case "month":
193
- return $hgUW1$Duration.fromObject({
194
- months: amount
195
- });
196
- case "year":
197
- return $hgUW1$Duration.fromObject({
198
- years: amount
199
- });
200
- }
201
- }
202
- Step.asDuration = asDuration;
203
- })($3742b95f8d2fe1ca$var$Step || ($3742b95f8d2fe1ca$var$Step = {}));
204
-
205
-
206
-
207
-
208
-
209
-
210
- class $47133f938ce44539$export$60b023dc4cb7008e {
211
- constructor(value, precision){
212
- this.value = value;
213
- this.precision = precision;
214
- }
215
- static parse(input) {
216
- let normalized = input.trim().replace(",", ".").replace($a27da276f4185ebf$export$c146a453a9d3226d, $a27da276f4185ebf$export$18a249acfd29a1c5);
217
- if (normalized.endsWith($a27da276f4185ebf$export$18a249acfd29a1c5)) normalized += "0";
218
- const precision = normalized.replace(".", "").replace("+", "").replace("-", "").length;
219
- return new $47133f938ce44539$export$60b023dc4cb7008e(parseFloat(normalized), precision);
220
- }
221
- toString() {
222
- return this.value.toString();
223
- }
224
- toFixed() {
225
- return $a27da276f4185ebf$export$cc77c4ff7e8673c5.toFixed(this.value, this.precision);
226
- }
227
- toPrecision() {
228
- return $a27da276f4185ebf$export$cc77c4ff7e8673c5.toPrecision(this.value, this.precision);
229
- }
230
- toLocaleFixed() {
231
- return $a27da276f4185ebf$export$cc77c4ff7e8673c5.toLocaleFixed(this.value, this.precision);
232
- }
233
- toLocalePrecision() {
234
- return $a27da276f4185ebf$export$cc77c4ff7e8673c5.toLocalePrecision(this.value, this.precision);
235
- }
236
- }
237
-
238
-
239
-
240
-
241
-
242
- export {$3742b95f8d2fe1ca$export$7ed5ca4f8b987938 as DayOfWeek, $a27da276f4185ebf$export$cc77c4ff7e8673c5 as NumberFormatter, $47133f938ce44539$export$60b023dc4cb7008e as PrecisionNumber, $e341043498f0791b$export$8cc0a4f27499ddb4 as RegisterConvention, $2bc946b609f83430$export$472902705794cfbb as RegisterLibrary, $a27da276f4185ebf$export$18a249acfd29a1c5 as invariantDecimalSeparator, $a27da276f4185ebf$export$c146a453a9d3226d as localeDecimalSeparator};
243
- //# sourceMappingURL=index.mjs.map