@utiliread/primitives 1.0.0-125 → 1.0.0-127

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.
@@ -1,3 +1,4 @@
1
+ import "./medium";
1
2
  import "./repository";
2
3
  import type { Consumer, Device, DeviceSample, KamdraftDeviceAddress, MsisdnDeviceAddress, Place, TchlrDeviceAddress, WMBusDeviceAddress } from "./registers";
3
4
  import { Duration } from "./luxon-local";
@@ -9,7 +10,7 @@ export type { AggregateId } from "./aggregate-id";
9
10
  export type { BreakdownPeriod } from "./breakdown-rule";
10
11
  export { BreakdownRule } from "./breakdown-rule";
11
12
  export type { MeasureId } from "./measure-id";
12
- export type { Medium } from "./medium";
13
+ export { Medium } from "./medium";
13
14
  export type { Optional } from "./optional";
14
15
  export { PrecisionNumber } from "./precision-number";
15
16
  export { RegisterConvention } from "./register-convention";
@@ -1,4 +1,7 @@
1
1
  export type Medium = "none" | "heat" | "water" | "cooling" | "electricity" | "infrastructure" | "all";
2
2
  export declare namespace Medium {
3
- function isMedium(input: string | string[]): input is Medium | Medium[];
3
+ function isMedium(input: string): input is Medium;
4
+ function isMedium(input: string[]): input is Medium[];
5
+ function isMeter(medium: Medium | Medium[]): boolean;
6
+ function isFlowMeter(medium: Medium | Medium[]): boolean;
4
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@utiliread/primitives",
3
- "version": "1.0.0-125",
3
+ "version": "1.0.0-127",
4
4
  "source": "src/index.ts",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
package/src/index.ts CHANGED
@@ -1,4 +1,6 @@
1
- import "./repository"; // We need this to get the Repository namespace exported
1
+ // We need these to get their namespaces exported
2
+ import "./medium";
3
+ import "./repository";
2
4
 
3
5
  import * as registers2 from "./registers";
4
6
 
@@ -28,7 +30,7 @@ export type { AggregateId } from "./aggregate-id";
28
30
  export type { BreakdownPeriod } from "./breakdown-rule";
29
31
  export { BreakdownRule } from "./breakdown-rule";
30
32
  export type { MeasureId } from "./measure-id";
31
- export type { Medium } from "./medium";
33
+ export { Medium } from "./medium";
32
34
  export type { Optional } from "./optional";
33
35
  export { PrecisionNumber } from "./precision-number";
34
36
  export { RegisterConvention } from "./register-convention";
@@ -5,8 +5,8 @@ describe("isMedium", () => {
5
5
  it("should correctly determine if input is a medium", () => {
6
6
  expect(Medium.isMedium("heat")).to.equal(true);
7
7
  expect(Medium.isMedium("water")).to.equal(true);
8
- expect(Medium.isMedium("heat,water")).to.equal(true);
9
8
  expect(Medium.isMedium(["heat","water"])).to.equal(true);
9
+ expect(Medium.isMedium("heat,water")).to.equal(false);
10
10
  expect(Medium.isMedium("notamedium")).to.equal(false);
11
11
  });
12
12
  });
package/src/medium.ts CHANGED
@@ -8,13 +8,14 @@ export type Medium =
8
8
  | "all";
9
9
 
10
10
  export namespace Medium {
11
+ export function isMedium(input: string): input is Medium;
12
+ export function isMedium(input: string[]): input is Medium[];
11
13
  export function isMedium(
12
14
  input: string | string[],
13
15
  ): input is Medium | Medium[] {
14
16
  if (input === "none" || input === "all") {
15
17
  return true;
16
18
  }
17
- const parts = Array.isArray(input) ? input : input.split(",");
18
19
  const ALL_MEDIUMS: Medium[] = [
19
20
  "heat",
20
21
  "water",
@@ -22,6 +23,25 @@ export namespace Medium {
22
23
  "electricity",
23
24
  "infrastructure",
24
25
  ];
25
- return !parts.some((x) => !ALL_MEDIUMS.includes(<Medium>x));
26
+ return Array.isArray(input)
27
+ ? !input.some((x) => !ALL_MEDIUMS.includes(<Medium>x))
28
+ : ALL_MEDIUMS.includes(<Medium>input);
29
+ }
30
+
31
+ export function isMeter(medium: Medium | Medium[]) {
32
+ return (
33
+ medium.includes("heat") ||
34
+ medium.includes("water") ||
35
+ medium.includes("cooling") ||
36
+ medium.includes("electricity")
37
+ );
38
+ }
39
+
40
+ export function isFlowMeter(medium: Medium | Medium[]) {
41
+ return (
42
+ medium.includes("heat") ||
43
+ medium.includes("water") ||
44
+ medium.includes("cooling")
45
+ );
26
46
  }
27
47
  }