@utiliread/primitives 1.0.0-14 → 1.0.0-141

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 (332) hide show
  1. package/dist/aggregate-id.d.ts +1 -0
  2. package/dist/breakdown-rule.d.ts +18 -0
  3. package/dist/{esm/register-converter.spec.d.ts → breakdown-rule.spec.d.ts} +1 -1
  4. package/dist/index.d.ts +23 -0
  5. package/dist/index.js +2713 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/index.mjs +2702 -0
  8. package/dist/index.mjs.map +1 -0
  9. package/dist/measure-id.d.ts +1 -0
  10. package/dist/measures/duration.d.ts +2 -0
  11. package/dist/measures/energy.d.ts +2 -0
  12. package/dist/measures/humidity.d.ts +2 -0
  13. package/dist/measures/infocode.d.ts +2 -0
  14. package/dist/measures/mass-flow.d.ts +3 -0
  15. package/dist/measures/mass.d.ts +2 -0
  16. package/dist/measures/noise.d.ts +3 -0
  17. package/dist/measures/power.d.ts +3 -0
  18. package/dist/measures/pressure.d.ts +3 -0
  19. package/dist/measures/reactive-energy.d.ts +2 -0
  20. package/dist/measures/reactive-power.d.ts +2 -0
  21. package/dist/measures/temperature.d.ts +3 -0
  22. package/dist/measures/time.d.ts +2 -0
  23. package/dist/measures/volume-flow.d.ts +3 -0
  24. package/dist/measures/volume.d.ts +2 -0
  25. package/dist/medium.d.ts +7 -0
  26. package/dist/medium.spec.d.ts +1 -0
  27. package/dist/number-formatter.d.ts +17 -0
  28. package/dist/{esm/number-formatter.spec.d.ts → number-formatter.spec.d.ts} +1 -1
  29. package/dist/optional.d.ts +1 -0
  30. package/dist/precision-number.d.ts +15 -0
  31. package/dist/precision-number.spec.d.ts +1 -0
  32. package/dist/{esm/register-convention.d.ts → register-convention.d.ts} +14 -14
  33. package/dist/{esm/register-convention.spec.d.ts → register-convention.spec.d.ts} +1 -1
  34. package/dist/register-definition.d.ts +13 -0
  35. package/dist/register-id.d.ts +1 -0
  36. package/dist/{esm/register-library.d.ts → register-library.d.ts} +15 -12
  37. package/dist/{esm/register-library.spec.d.ts → register-library.spec.d.ts} +1 -1
  38. package/dist/{esm/register-pack.d.ts → register-pack.d.ts} +4 -4
  39. package/dist/register-utils.d.ts +3 -0
  40. package/dist/registers/acoustic-noise.d.ts +8 -0
  41. package/dist/registers/ambient-temperature.d.ts +8 -0
  42. package/dist/registers/axioma-infocode.d.ts +3 -0
  43. package/dist/registers/consumer.d.ts +9 -0
  44. package/dist/registers/cooling-energy-inlet.d.ts +4 -0
  45. package/dist/registers/cooling-energy-outlet.d.ts +4 -0
  46. package/dist/registers/cooling-energy.d.ts +4 -0
  47. package/dist/registers/cooling.d.ts +15 -0
  48. package/dist/registers/device-addresses-kamdraft.d.ts +6 -0
  49. package/dist/registers/device-addresses-msisdn.d.ts +6 -0
  50. package/dist/registers/device-addresses-tchlr.d.ts +6 -0
  51. package/dist/registers/device-addresses-wmbus.d.ts +9 -0
  52. package/dist/registers/device-date-time.d.ts +2 -0
  53. package/dist/registers/device-date.d.ts +2 -0
  54. package/dist/registers/device-nominal-diameter.d.ts +2 -0
  55. package/dist/registers/device-permanent-volume-flow.d.ts +2 -0
  56. package/dist/registers/device-registers.d.ts +2 -0
  57. package/dist/registers/device-samples.d.ts +14 -0
  58. package/dist/registers/device-software-version.d.ts +2 -0
  59. package/dist/registers/device-time.d.ts +2 -0
  60. package/dist/registers/device.d.ts +8 -0
  61. package/dist/registers/diehl-infocode.d.ts +7 -0
  62. package/dist/registers/electrical-energy.d.ts +4 -0
  63. package/dist/registers/energy-inlet.d.ts +4 -0
  64. package/dist/registers/energy-outlet.d.ts +4 -0
  65. package/dist/registers/error-operating-time.d.ts +4 -0
  66. package/dist/registers/flow-temperature-aux.d.ts +8 -0
  67. package/dist/registers/flow-temperature-inlet.d.ts +8 -0
  68. package/dist/registers/flow-temperature-outlet.d.ts +8 -0
  69. package/dist/registers/flow-temperature.d.ts +8 -0
  70. package/dist/registers/heat-energy-inlet.d.ts +10 -0
  71. package/dist/registers/heat-energy-outlet.d.ts +10 -0
  72. package/dist/registers/heat-energy.d.ts +10 -0
  73. package/dist/registers/index.d.ts +71 -0
  74. package/dist/registers/infocode.d.ts +17 -0
  75. package/dist/registers/kamstrup-module-type.d.ts +2 -0
  76. package/dist/registers/kamstrup-multical-infocode.d.ts +9 -0
  77. package/dist/registers/landis-gyr-infocode.d.ts +4 -0
  78. package/dist/registers/landis-gyr-mbus-status.d.ts +4 -0
  79. package/dist/registers/mass-flow-inlet.d.ts +8 -0
  80. package/dist/registers/mass-flow-outlet.d.ts +8 -0
  81. package/dist/registers/mass-flow.d.ts +8 -0
  82. package/dist/registers/mass-inlet.d.ts +4 -0
  83. package/dist/registers/mass-outlet.d.ts +4 -0
  84. package/dist/registers/mass.d.ts +4 -0
  85. package/dist/registers/mbus-format-string-signature.d.ts +2 -0
  86. package/dist/registers/none.d.ts +2 -0
  87. package/dist/registers/operating-time.d.ts +4 -0
  88. package/dist/registers/place.d.ts +16 -0
  89. package/dist/registers/power-inlet.d.ts +8 -0
  90. package/dist/registers/power-outlet.d.ts +8 -0
  91. package/dist/registers/power.d.ts +8 -0
  92. package/dist/registers/pressure-inlet.d.ts +8 -0
  93. package/dist/registers/pressure-outlet.d.ts +8 -0
  94. package/dist/registers/pressure.d.ts +8 -0
  95. package/dist/registers/radiator-temperature.d.ts +8 -0
  96. package/dist/registers/reactive-energy.d.ts +4 -0
  97. package/dist/registers/relative-humidity.d.ts +2 -0
  98. package/dist/registers/remaining-battery-time.d.ts +4 -0
  99. package/dist/registers/time-last-exact-overhearing-arrived.d.ts +3 -0
  100. package/dist/registers/time-last-installation-mounted.d.ts +3 -0
  101. package/dist/registers/time-last-possible-candidate-overhearing-arrived.d.ts +3 -0
  102. package/dist/registers/time-last-sampled.d.ts +3 -0
  103. package/dist/registers/time.d.ts +7 -0
  104. package/dist/registers/volume-flow-inlet.d.ts +8 -0
  105. package/dist/registers/volume-flow-outlet.d.ts +8 -0
  106. package/dist/registers/volume-flow.d.ts +8 -0
  107. package/dist/registers/volume-inlet.d.ts +4 -0
  108. package/dist/registers/volume-outlet.d.ts +4 -0
  109. package/dist/registers/volume-pulse-input-a.d.ts +4 -0
  110. package/dist/registers/volume-pulse-input-b.d.ts +4 -0
  111. package/dist/registers/volume.d.ts +4 -0
  112. package/dist/repository.d.ts +10 -0
  113. package/dist/repository.spec.d.ts +1 -0
  114. package/dist/step.d.ts +15 -0
  115. package/dist/step.spec.d.ts +1 -0
  116. package/dist/time-or-rule.d.ts +10 -0
  117. package/dist/unit-id.d.ts +1 -0
  118. package/locales/da/aggregates.json +42 -0
  119. package/locales/da/measures.json +50 -0
  120. package/locales/da/mediums.json +17 -0
  121. package/locales/da/registers.json +1150 -0
  122. package/locales/da/units.json +327 -0
  123. package/locales/en/aggregates.json +42 -0
  124. package/locales/en/measures.json +50 -0
  125. package/locales/en/mediums.json +17 -0
  126. package/locales/en/registers.json +1150 -0
  127. package/locales/en/units.json +327 -0
  128. package/package.json +35 -18
  129. package/rollup.config.mjs +31 -0
  130. package/src/aggregate-id.ts +9 -9
  131. package/src/breakdown-rule.spec.ts +61 -0
  132. package/src/breakdown-rule.ts +58 -0
  133. package/src/index.ts +58 -19
  134. package/src/measure-id.ts +17 -12
  135. package/src/measures/duration.ts +11 -0
  136. package/{dist/esm/unit-id.js → src/measures/energy.ts} +13 -11
  137. package/src/measures/humidity.ts +3 -0
  138. package/src/measures/infocode.ts +3 -0
  139. package/src/measures/mass-flow.ts +19 -0
  140. package/src/measures/mass.ts +10 -0
  141. package/src/measures/noise.ts +5 -0
  142. package/src/measures/power.ts +23 -0
  143. package/src/measures/pressure.ts +9 -0
  144. package/src/measures/reactive-energy.ts +7 -0
  145. package/src/measures/reactive-power.ts +3 -0
  146. package/src/measures/temperature.ts +9 -0
  147. package/src/measures/time.ts +3 -0
  148. package/src/measures/volume-flow.ts +25 -0
  149. package/src/measures/volume.ts +3 -0
  150. package/src/medium.spec.ts +12 -0
  151. package/src/medium.ts +47 -0
  152. package/src/number-formatter.spec.ts +549 -77
  153. package/src/number-formatter.ts +118 -50
  154. package/src/optional.ts +1 -0
  155. package/src/precision-number.spec.ts +251 -0
  156. package/src/precision-number.ts +129 -0
  157. package/src/register-convention.spec.ts +52 -43
  158. package/src/register-convention.ts +70 -61
  159. package/src/register-definition.ts +23 -17
  160. package/src/register-id.ts +288 -191
  161. package/src/register-library.spec.ts +41 -34
  162. package/src/register-library.ts +64 -41
  163. package/src/register-pack.ts +5 -5
  164. package/src/register-utils.ts +6 -6
  165. package/src/registers/acoustic-noise.ts +52 -0
  166. package/src/registers/ambient-temperature.ts +52 -0
  167. package/src/registers/axioma-infocode.ts +16 -0
  168. package/src/registers/consumer.ts +17 -0
  169. package/src/registers/cooling-energy-inlet.ts +23 -0
  170. package/src/registers/cooling-energy-outlet.ts +23 -0
  171. package/src/registers/cooling-energy.ts +23 -0
  172. package/src/registers/cooling.ts +113 -0
  173. package/src/registers/device-addresses-kamdraft.ts +14 -0
  174. package/src/registers/device-addresses-msisdn.ts +14 -0
  175. package/src/registers/device-addresses-tchlr.ts +14 -0
  176. package/src/registers/device-addresses-wmbus.ts +17 -0
  177. package/src/registers/device-date-time.ts +9 -0
  178. package/src/registers/device-date.ts +9 -0
  179. package/src/registers/device-nominal-diameter.ts +9 -0
  180. package/src/registers/device-permanent-volume-flow.ts +9 -0
  181. package/src/registers/device-registers.ts +9 -0
  182. package/src/registers/device-samples.ts +37 -0
  183. package/src/registers/device-software-version.ts +8 -0
  184. package/src/registers/device-time.ts +9 -0
  185. package/src/registers/device.ts +16 -0
  186. package/src/registers/diehl-infocode.ts +44 -0
  187. package/src/registers/electrical-energy.ts +23 -0
  188. package/src/registers/energy-inlet.ts +23 -0
  189. package/src/registers/energy-outlet.ts +23 -0
  190. package/src/registers/error-operating-time.ts +23 -0
  191. package/src/registers/flow-temperature-aux.ts +52 -0
  192. package/src/registers/flow-temperature-inlet.ts +52 -0
  193. package/src/registers/flow-temperature-outlet.ts +52 -0
  194. package/src/registers/flow-temperature.ts +52 -0
  195. package/src/registers/heat-energy-inlet.ts +65 -0
  196. package/src/registers/heat-energy-outlet.ts +65 -0
  197. package/src/registers/heat-energy.ts +65 -0
  198. package/src/registers/index.ts +71 -0
  199. package/src/registers/infocode.ts +70 -0
  200. package/src/registers/kamstrup-module-type.ts +8 -0
  201. package/src/registers/kamstrup-multical-infocode.ts +58 -0
  202. package/src/registers/landis-gyr-infocode.ts +23 -0
  203. package/src/registers/landis-gyr-mbus-status.ts +23 -0
  204. package/src/registers/mass-flow-inlet.ts +52 -0
  205. package/src/registers/mass-flow-outlet.ts +52 -0
  206. package/src/registers/mass-flow.ts +52 -0
  207. package/src/registers/mass-inlet.ts +23 -0
  208. package/src/registers/mass-outlet.ts +23 -0
  209. package/src/registers/mass.ts +23 -0
  210. package/src/registers/mbus-format-string-signature.ts +8 -0
  211. package/src/registers/none.ts +8 -0
  212. package/src/registers/operating-time.ts +23 -0
  213. package/src/registers/place.ts +31 -0
  214. package/src/registers/power-inlet.ts +52 -0
  215. package/src/registers/power-outlet.ts +52 -0
  216. package/src/registers/power.ts +52 -0
  217. package/src/registers/pressure-inlet.ts +52 -0
  218. package/src/registers/pressure-outlet.ts +52 -0
  219. package/src/registers/pressure.ts +52 -0
  220. package/src/registers/radiator-temperature.ts +52 -0
  221. package/src/registers/reactive-energy.ts +23 -0
  222. package/src/registers/relative-humidity.ts +8 -0
  223. package/src/registers/remaining-battery-time.ts +23 -0
  224. package/src/registers/time-last-exact-overhearing-arrived.ts +19 -0
  225. package/src/registers/time-last-installation-mounted.ts +19 -0
  226. package/src/registers/time-last-possible-candidate-overhearing-arrived.ts +21 -0
  227. package/src/registers/time-last-sampled.ts +19 -0
  228. package/src/registers/time.ts +45 -0
  229. package/src/registers/volume-flow-inlet.ts +52 -0
  230. package/src/registers/volume-flow-outlet.ts +52 -0
  231. package/src/registers/volume-flow.ts +52 -0
  232. package/src/registers/volume-inlet.ts +23 -0
  233. package/src/registers/volume-outlet.ts +23 -0
  234. package/src/registers/volume-pulse-input-a.ts +23 -0
  235. package/src/registers/volume-pulse-input-b.ts +23 -0
  236. package/src/registers/volume.ts +23 -0
  237. package/src/repository.spec.ts +30 -0
  238. package/src/repository.ts +26 -0
  239. package/src/step.spec.ts +37 -0
  240. package/src/step.ts +45 -0
  241. package/src/time-or-rule.ts +42 -0
  242. package/src/unit-id.ts +108 -100
  243. package/tsconfig.json +14 -14
  244. package/web-test-runner.config.mjs +7 -0
  245. package/coverage/Chrome Headless 90.0.4430.85 (Windows 10)/html/base.css +0 -224
  246. package/coverage/Chrome Headless 90.0.4430.85 (Windows 10)/html/block-navigation.js +0 -79
  247. package/coverage/Chrome Headless 90.0.4430.85 (Windows 10)/html/favicon.png +0 -0
  248. package/coverage/Chrome Headless 90.0.4430.85 (Windows 10)/html/index.html +0 -96
  249. package/coverage/Chrome Headless 90.0.4430.85 (Windows 10)/html/prettify.css +0 -1
  250. package/coverage/Chrome Headless 90.0.4430.85 (Windows 10)/html/prettify.js +0 -2
  251. package/coverage/Chrome Headless 90.0.4430.85 (Windows 10)/html/sort-arrow-sprite.png +0 -0
  252. package/coverage/Chrome Headless 90.0.4430.85 (Windows 10)/html/sorter.js +0 -170
  253. package/dist/cjs/aggregate-id.js +0 -3
  254. package/dist/cjs/aggregate-id.js.map +0 -1
  255. package/dist/cjs/consumption-type-id.js +0 -3
  256. package/dist/cjs/consumption-type-id.js.map +0 -1
  257. package/dist/cjs/index.js +0 -10
  258. package/dist/cjs/index.js.map +0 -1
  259. package/dist/cjs/measure-id.js +0 -3
  260. package/dist/cjs/measure-id.js.map +0 -1
  261. package/dist/cjs/number-formatter.js +0 -51
  262. package/dist/cjs/number-formatter.js.map +0 -1
  263. package/dist/cjs/number-formatter.spec.js +0 -77
  264. package/dist/cjs/number-formatter.spec.js.map +0 -1
  265. package/dist/cjs/register-convention.js +0 -61
  266. package/dist/cjs/register-convention.js.map +0 -1
  267. package/dist/cjs/register-convention.spec.js +0 -39
  268. package/dist/cjs/register-convention.spec.js.map +0 -1
  269. package/dist/cjs/register-converter.js +0 -31
  270. package/dist/cjs/register-converter.js.map +0 -1
  271. package/dist/cjs/register-converter.spec.js +0 -29
  272. package/dist/cjs/register-converter.spec.js.map +0 -1
  273. package/dist/cjs/register-definition.js +0 -3
  274. package/dist/cjs/register-definition.js.map +0 -1
  275. package/dist/cjs/register-id.js +0 -3
  276. package/dist/cjs/register-id.js.map +0 -1
  277. package/dist/cjs/register-library.js +0 -45
  278. package/dist/cjs/register-library.js.map +0 -1
  279. package/dist/cjs/register-library.spec.js +0 -31
  280. package/dist/cjs/register-library.spec.js.map +0 -1
  281. package/dist/cjs/register-pack.js +0 -3
  282. package/dist/cjs/register-pack.js.map +0 -1
  283. package/dist/cjs/register-utils.js +0 -8
  284. package/dist/cjs/register-utils.js.map +0 -1
  285. package/dist/cjs/unit-id.js +0 -14
  286. package/dist/cjs/unit-id.js.map +0 -1
  287. package/dist/esm/aggregate-id.d.ts +0 -1
  288. package/dist/esm/aggregate-id.js +0 -2
  289. package/dist/esm/aggregate-id.js.map +0 -1
  290. package/dist/esm/consumption-type-id.d.ts +0 -1
  291. package/dist/esm/consumption-type-id.js +0 -2
  292. package/dist/esm/consumption-type-id.js.map +0 -1
  293. package/dist/esm/index.d.ts +0 -9
  294. package/dist/esm/index.js +0 -5
  295. package/dist/esm/index.js.map +0 -1
  296. package/dist/esm/measure-id.d.ts +0 -1
  297. package/dist/esm/measure-id.js +0 -2
  298. package/dist/esm/measure-id.js.map +0 -1
  299. package/dist/esm/number-formatter.d.ts +0 -6
  300. package/dist/esm/number-formatter.js +0 -48
  301. package/dist/esm/number-formatter.js.map +0 -1
  302. package/dist/esm/number-formatter.spec.js +0 -75
  303. package/dist/esm/number-formatter.spec.js.map +0 -1
  304. package/dist/esm/register-convention.js +0 -57
  305. package/dist/esm/register-convention.js.map +0 -1
  306. package/dist/esm/register-convention.spec.js +0 -37
  307. package/dist/esm/register-convention.spec.js.map +0 -1
  308. package/dist/esm/register-converter.d.ts +0 -9
  309. package/dist/esm/register-converter.js +0 -28
  310. package/dist/esm/register-converter.js.map +0 -1
  311. package/dist/esm/register-converter.spec.js +0 -27
  312. package/dist/esm/register-converter.spec.js.map +0 -1
  313. package/dist/esm/register-definition.d.ts +0 -11
  314. package/dist/esm/register-definition.js +0 -2
  315. package/dist/esm/register-definition.js.map +0 -1
  316. package/dist/esm/register-id.d.ts +0 -1
  317. package/dist/esm/register-id.js +0 -2
  318. package/dist/esm/register-id.js.map +0 -1
  319. package/dist/esm/register-library.js +0 -42
  320. package/dist/esm/register-library.js.map +0 -1
  321. package/dist/esm/register-library.spec.js +0 -29
  322. package/dist/esm/register-library.spec.js.map +0 -1
  323. package/dist/esm/register-pack.js +0 -2
  324. package/dist/esm/register-pack.js.map +0 -1
  325. package/dist/esm/register-utils.d.ts +0 -3
  326. package/dist/esm/register-utils.js +0 -4
  327. package/dist/esm/register-utils.js.map +0 -1
  328. package/dist/esm/unit-id.d.ts +0 -2
  329. package/dist/esm/unit-id.js.map +0 -1
  330. package/karma.config.js +0 -32
  331. package/src/consumption-type-id.ts +0 -8
  332. package/tsconfig.cjs.json +0 -9
@@ -1,34 +1,41 @@
1
- import { expect } from "chai";
2
- import { RegisterDefinition } from ".";
3
- import { RegisterLibrary } from "./register-library";
4
-
5
- const volume: RegisterDefinition = {
6
- id: "volume",
7
- measure: "volume",
8
- aggregate: "instant",
9
- units: ["cubicMeter"]
10
- };
11
-
12
- describe("library", () => {
13
- beforeEach(() => {
14
- RegisterLibrary.reset();
15
- });
16
-
17
- it("should get added definition", () => {
18
- RegisterLibrary.add(volume);
19
- const definition = RegisterLibrary.get("volume");
20
- expect(definition.id).to.equal("volume");
21
- });
22
-
23
- it("should add all definitions in pack", () => {
24
- RegisterLibrary.add({
25
- someRandomKey: volume
26
- });
27
- const definition = RegisterLibrary.get("volume");
28
- expect(definition.id).to.equal("volume");
29
- });
30
-
31
- it("should throw when getting not added register", () => {
32
- expect(() => RegisterLibrary.get("volume")).to.throw();
33
- });
34
- });
1
+ import type { RegisterDefinition } from ".";
2
+ import { RegisterLibrary } from "./register-library";
3
+ import { expect } from "chai";
4
+
5
+ const volume: RegisterDefinition = {
6
+ id: "volume",
7
+ measure: "volume",
8
+ aggregate: "instant",
9
+ units: ["cubicMeter"],
10
+ };
11
+
12
+ describe("library", () => {
13
+ beforeEach(() => {
14
+ RegisterLibrary.reset();
15
+ });
16
+
17
+ it("should get added definition", () => {
18
+ RegisterLibrary.add(volume);
19
+ const definition = RegisterLibrary.get("volume");
20
+ expect(definition.id).to.equal("volume");
21
+ });
22
+
23
+ it("should add all definitions in pack", () => {
24
+ RegisterLibrary.add({
25
+ someRandomKey: volume,
26
+ });
27
+ const definition = RegisterLibrary.get("volume");
28
+ expect(definition.id).to.equal("volume");
29
+ });
30
+
31
+ it("should throw when getting not added register", () => {
32
+ expect(() => RegisterLibrary.get("volume")).to.throw();
33
+ });
34
+
35
+ it("should return all definitions when invoking all()", () => {
36
+ RegisterLibrary.add(volume);
37
+ RegisterLibrary.add(volume); // Only added once.
38
+ const all = RegisterLibrary.all();
39
+ expect(all.length).to.equal(1);
40
+ });
41
+ });
@@ -1,41 +1,64 @@
1
- import { RegisterDefinition } from "./register-definition";
2
- import { RegisterId } from "./register-id";
3
- import { RegisterPack } from "./register-pack";
4
-
5
- class Library {
6
- private definitions: Partial<{ [id in RegisterId]: RegisterDefinition }> = {};
7
- public add(...definitions: (RegisterDefinition | RegisterPack)[]) {
8
- for (const definition of definitions) {
9
- if (isDefinition(definition)) {
10
- this.definitions[definition.id] = definition;
11
- }
12
- else {
13
- for (const definitionInPack of Object.values(definition)) {
14
- this.definitions[definitionInPack.id] = definitionInPack;
15
- }
16
- }
17
- }
18
- }
19
-
20
- public tryGet(id: RegisterId) {
21
- return this.definitions[id];
22
- }
23
-
24
- public get(id: RegisterId) {
25
- const definition = this.definitions[id];
26
- if (!definition) {
27
- throw new Error(`Defintion was not loaded for register ${id}`);
28
- }
29
- return definition;
30
- }
31
-
32
- public reset() {
33
- this.definitions = {};
34
- }
35
- }
36
-
37
- function isDefinition(definitionOrPack: RegisterDefinition | RegisterPack): definitionOrPack is RegisterDefinition {
38
- return !!(definitionOrPack.id && definitionOrPack.aggregate && definitionOrPack.units);
39
- }
40
-
41
- export const RegisterLibrary = new Library();
1
+ import type { RegisterDefinition } from "./register-definition";
2
+ import type { RegisterId } from "./register-id";
3
+ import { RegisterPack } from "./register-pack";
4
+
5
+ class Library {
6
+ private definitions: Partial<{ [id in RegisterId]: RegisterDefinition }> =
7
+ {};
8
+
9
+ public add(...definitions: (RegisterDefinition | RegisterPack)[]) {
10
+ for (const definition of definitions) {
11
+ if (isDefinition(definition)) {
12
+ this.tryAdd(definition);
13
+ } else {
14
+ for (const definitionInPack of Object.values(definition)) {
15
+ this.tryAdd(definitionInPack);
16
+ }
17
+ }
18
+ }
19
+ }
20
+
21
+ private tryAdd(definition: RegisterDefinition) {
22
+ if (!this.definitions[definition.id]) {
23
+ this.definitions[definition.id] = definition;
24
+ return true;
25
+ }
26
+ return false;
27
+ }
28
+
29
+ public has(id: RegisterId) {
30
+ return !!this.definitions[id];
31
+ }
32
+
33
+ public tryGet(id: RegisterId) {
34
+ return this.definitions[id];
35
+ }
36
+
37
+ public get(id: RegisterId) {
38
+ const definition = this.definitions[id];
39
+ if (!definition) {
40
+ throw new Error(`Defintion was not loaded for register ${id}`);
41
+ }
42
+ return definition;
43
+ }
44
+
45
+ public all() {
46
+ return Object.values(this.definitions).map((x) => x!);
47
+ }
48
+
49
+ public reset() {
50
+ this.definitions = {};
51
+ }
52
+ }
53
+
54
+ function isDefinition(
55
+ definitionOrPack: RegisterDefinition | RegisterPack,
56
+ ): definitionOrPack is RegisterDefinition {
57
+ return !!(
58
+ definitionOrPack.id &&
59
+ definitionOrPack.aggregate &&
60
+ definitionOrPack.units
61
+ );
62
+ }
63
+
64
+ export const RegisterLibrary = new Library();
@@ -1,5 +1,5 @@
1
- import { RegisterDefinition } from "./register-definition";
2
-
3
- export interface RegisterPack {
4
- [key: string]: RegisterDefinition;
5
- }
1
+ import type { RegisterDefinition } from "./register-definition";
2
+
3
+ export interface RegisterPack {
4
+ [key: string]: RegisterDefinition;
5
+ }
@@ -1,6 +1,6 @@
1
- import { RegisterDefinition } from "./register-definition";
2
- import { RegisterId } from "./register-id";
3
-
4
- export function getRegisterId(register: RegisterId | RegisterDefinition) {
5
- return typeof register === "string" ? register : register.id;
6
- }
1
+ import type { RegisterDefinition } from "./register-definition";
2
+ import type { RegisterId } from "./register-id";
3
+
4
+ export function getRegisterId(register: RegisterId | RegisterDefinition) {
5
+ return typeof register === "string" ? register : register.id;
6
+ }
@@ -0,0 +1,52 @@
1
+ import { sqUnits, units } from "../measures/noise";
2
+
3
+ import type { RegisterDefinition } from "../register-definition";
4
+
5
+ export const acousticNoise: RegisterDefinition = {
6
+ id: "acousticNoise",
7
+ measure: "noise",
8
+ aggregate: "instant",
9
+ units,
10
+ };
11
+
12
+ export const minAcousticNoise: RegisterDefinition = {
13
+ id: "minAcousticNoise",
14
+ measure: "noise",
15
+ aggregate: "min",
16
+ units,
17
+ };
18
+
19
+ export const maxAcousticNoise: RegisterDefinition = {
20
+ id: "maxAcousticNoise",
21
+ measure: "noise",
22
+ aggregate: "max",
23
+ units,
24
+ };
25
+
26
+ export const avgAcousticNoise: RegisterDefinition = {
27
+ id: "avgAcousticNoise",
28
+ measure: "noise",
29
+ aggregate: "avg",
30
+ units,
31
+ };
32
+
33
+ export const sumAcousticNoise: RegisterDefinition = {
34
+ id: "sumAcousticNoise",
35
+ measure: "noise",
36
+ aggregate: "sum",
37
+ units,
38
+ };
39
+
40
+ export const cntAcousticNoise: RegisterDefinition = {
41
+ id: "cntAcousticNoise",
42
+ measure: "noise",
43
+ aggregate: "cnt",
44
+ units: ["unitless"],
45
+ };
46
+
47
+ export const ssqAcousticNoise: RegisterDefinition = {
48
+ id: "ssqAcousticNoise",
49
+ measure: "noise",
50
+ aggregate: "ssq",
51
+ units: sqUnits,
52
+ };
@@ -0,0 +1,52 @@
1
+ import { sqUnits, units } from "../measures/temperature";
2
+
3
+ import type { RegisterDefinition } from "../register-definition";
4
+
5
+ export const ambientTemperature: RegisterDefinition = {
6
+ id: "ambientTemperature",
7
+ measure: "temperature",
8
+ aggregate: "instant",
9
+ units,
10
+ };
11
+
12
+ export const minAmbientTemperature: RegisterDefinition = {
13
+ id: "minAmbientTemperature",
14
+ measure: "temperature",
15
+ aggregate: "min",
16
+ units,
17
+ };
18
+
19
+ export const maxAmbientTemperature: RegisterDefinition = {
20
+ id: "maxAmbientTemperature",
21
+ measure: "temperature",
22
+ aggregate: "max",
23
+ units,
24
+ };
25
+
26
+ export const avgAmbientTemperature: RegisterDefinition = {
27
+ id: "avgAmbientTemperature",
28
+ measure: "temperature",
29
+ aggregate: "avg",
30
+ units,
31
+ };
32
+
33
+ export const sumAmbientTemperature: RegisterDefinition = {
34
+ id: "sumAmbientTemperature",
35
+ measure: "temperature",
36
+ aggregate: "sum",
37
+ units,
38
+ };
39
+
40
+ export const cntAmbientTemperature: RegisterDefinition = {
41
+ id: "cntAmbientTemperature",
42
+ measure: "temperature",
43
+ aggregate: "cnt",
44
+ units: ["unitless"],
45
+ };
46
+
47
+ export const ssqAmbientTemperature: RegisterDefinition = {
48
+ id: "ssqAmbientTemperature",
49
+ measure: "temperature",
50
+ aggregate: "ssq",
51
+ units: sqUnits,
52
+ };
@@ -0,0 +1,16 @@
1
+ import type { RegisterDefinition } from "../register-definition";
2
+ import { units } from "../measures/infocode";
3
+
4
+ export const axiomaInfocode: RegisterDefinition = {
5
+ id: "axiomaInfocode",
6
+ measure: "none",
7
+ aggregate: "instant",
8
+ units,
9
+ };
10
+
11
+ export const axiomaInfocodeType1: RegisterDefinition = {
12
+ id: "axiomaInfocodeType1",
13
+ measure: "none",
14
+ aggregate: "instant",
15
+ units,
16
+ };
@@ -0,0 +1,17 @@
1
+ import type { RegisterDefinition } from "../register-definition";
2
+
3
+ export const consumer: RegisterDefinition = {
4
+ id: "consumer",
5
+ measure: "none",
6
+ aggregate: "instant",
7
+ units: ["unitless"],
8
+ immediate: true,
9
+ };
10
+
11
+ export interface Consumer {
12
+ id: number;
13
+ name: string;
14
+ consumerNumber: string;
15
+ emailAddress: string;
16
+ phoneNumber: string;
17
+ }
@@ -0,0 +1,23 @@
1
+ import type { RegisterDefinition } from "../register-definition";
2
+ import { units } from "../measures/energy";
3
+
4
+ export const coolingEnergyVolumeInInlet: RegisterDefinition = {
5
+ id: "coolingEnergyVolumeInInlet",
6
+ measure: "energy",
7
+ aggregate: "instant",
8
+ units,
9
+ };
10
+
11
+ export const diffCoolingEnergyVolumeInInlet: RegisterDefinition = {
12
+ id: "diffCoolingEnergyVolumeInInlet",
13
+ measure: "energy",
14
+ aggregate: "diff",
15
+ units,
16
+ };
17
+
18
+ export const cntCoolingEnergyVolumeInInlet: RegisterDefinition = {
19
+ id: "cntCoolingEnergyVolumeInInlet",
20
+ measure: "energy",
21
+ aggregate: "cnt",
22
+ units: ["unitless"],
23
+ };
@@ -0,0 +1,23 @@
1
+ import type { RegisterDefinition } from "../register-definition";
2
+ import { units } from "../measures/energy";
3
+
4
+ export const coolingEnergyVolumeInOutlet: RegisterDefinition = {
5
+ id: "coolingEnergyVolumeInOutlet",
6
+ measure: "energy",
7
+ aggregate: "instant",
8
+ units,
9
+ };
10
+
11
+ export const diffCoolingEnergyVolumeInOutlet: RegisterDefinition = {
12
+ id: "diffCoolingEnergyVolumeInOutlet",
13
+ measure: "energy",
14
+ aggregate: "diff",
15
+ units,
16
+ };
17
+
18
+ export const cntCoolingEnergyVolumeInOutlet: RegisterDefinition = {
19
+ id: "cntCoolingEnergyVolumeInOutlet",
20
+ measure: "energy",
21
+ aggregate: "cnt",
22
+ units: ["unitless"],
23
+ };
@@ -0,0 +1,23 @@
1
+ import type { RegisterDefinition } from "../register-definition";
2
+ import { units } from "../measures/energy";
3
+
4
+ export const coolingEnergy: RegisterDefinition = {
5
+ id: "coolingEnergy",
6
+ measure: "energy",
7
+ aggregate: "instant",
8
+ units,
9
+ };
10
+
11
+ export const diffCoolingEnergy: RegisterDefinition = {
12
+ id: "diffCoolingEnergy",
13
+ measure: "energy",
14
+ aggregate: "diff",
15
+ units,
16
+ };
17
+
18
+ export const cntCoolingEnergy: RegisterDefinition = {
19
+ id: "cntCoolingEnergy",
20
+ measure: "energy",
21
+ aggregate: "cnt",
22
+ units: ["unitless"],
23
+ };
@@ -0,0 +1,113 @@
1
+ import { sqUnits, units } from "../measures/temperature";
2
+
3
+ import type { RegisterDefinition } from "../register-definition";
4
+
5
+ export const inletMinusOutletFlowTemperatureDifference: RegisterDefinition = {
6
+ id: "inletMinusOutletFlowTemperatureDifference",
7
+ measure: "temperature",
8
+ aggregate: "instant",
9
+ units,
10
+ };
11
+
12
+ export const minInletMinusOutletFlowTemperatureDifference: RegisterDefinition =
13
+ {
14
+ id: "minInletMinusOutletFlowTemperatureDifference",
15
+ measure: "temperature",
16
+ aggregate: "min",
17
+ units,
18
+ };
19
+
20
+ export const maxInletMinusOutletFlowTemperatureDifference: RegisterDefinition =
21
+ {
22
+ id: "maxInletMinusOutletFlowTemperatureDifference",
23
+ measure: "temperature",
24
+ aggregate: "max",
25
+ units,
26
+ };
27
+
28
+ export const avgInletMinusOutletFlowTemperatureDifference: RegisterDefinition =
29
+ {
30
+ id: "avgInletMinusOutletFlowTemperatureDifference",
31
+ measure: "temperature",
32
+ aggregate: "avg",
33
+ units,
34
+ };
35
+
36
+ export const sumInletMinusOutletFlowTemperatureDifference: RegisterDefinition =
37
+ {
38
+ id: "sumInletMinusOutletFlowTemperatureDifference",
39
+ measure: "temperature",
40
+ aggregate: "sum",
41
+ units,
42
+ };
43
+
44
+ export const cntInletMinusOutletFlowTemperatureDifference: RegisterDefinition =
45
+ {
46
+ id: "cntInletMinusOutletFlowTemperatureDifference",
47
+ measure: "temperature",
48
+ aggregate: "cnt",
49
+ units: ["unitless"],
50
+ };
51
+
52
+ export const ssqInletMinusOutletFlowTemperatureDifference: RegisterDefinition =
53
+ {
54
+ id: "ssqInletMinusOutletFlowTemperatureDifference",
55
+ measure: "temperature",
56
+ aggregate: "ssq",
57
+ units: sqUnits,
58
+ };
59
+
60
+ export const outletMinusInletFlowTemperatureDifference: RegisterDefinition = {
61
+ id: "outletMinusInletFlowTemperatureDifference",
62
+ measure: "temperature",
63
+ aggregate: "instant",
64
+ units,
65
+ };
66
+
67
+ export const minOutletMinusInletFlowTemperatureDifference: RegisterDefinition =
68
+ {
69
+ id: "minOutletMinusInletFlowTemperatureDifference",
70
+ measure: "temperature",
71
+ aggregate: "min",
72
+ units,
73
+ };
74
+
75
+ export const maxOutletMinusInletFlowTemperatureDifference: RegisterDefinition =
76
+ {
77
+ id: "maxOutletMinusInletFlowTemperatureDifference",
78
+ measure: "temperature",
79
+ aggregate: "max",
80
+ units,
81
+ };
82
+
83
+ export const avgOutletMinusInletFlowTemperatureDifference: RegisterDefinition =
84
+ {
85
+ id: "avgOutletMinusInletFlowTemperatureDifference",
86
+ measure: "temperature",
87
+ aggregate: "avg",
88
+ units,
89
+ };
90
+
91
+ export const sumOutletMinusInletFlowTemperatureDifference: RegisterDefinition =
92
+ {
93
+ id: "sumOutletMinusInletFlowTemperatureDifference",
94
+ measure: "temperature",
95
+ aggregate: "sum",
96
+ units,
97
+ };
98
+
99
+ export const cntOutletMinusInletFlowTemperatureDifference: RegisterDefinition =
100
+ {
101
+ id: "cntOutletMinusInletFlowTemperatureDifference",
102
+ measure: "temperature",
103
+ aggregate: "cnt",
104
+ units: ["unitless"],
105
+ };
106
+
107
+ export const ssqOutletMinusInletFlowTemperatureDifference: RegisterDefinition =
108
+ {
109
+ id: "ssqOutletMinusInletFlowTemperatureDifference",
110
+ measure: "temperature",
111
+ aggregate: "ssq",
112
+ units: sqUnits,
113
+ };
@@ -0,0 +1,14 @@
1
+ import type { RegisterDefinition } from "../register-definition";
2
+
3
+ export const kamdraftDeviceAddresses: RegisterDefinition = {
4
+ id: "kamdraftDeviceAddresses",
5
+ measure: "none",
6
+ aggregate: "instant",
7
+ units: ["json"],
8
+ immediate: true,
9
+ };
10
+
11
+ export interface KamdraftDeviceAddress {
12
+ _t: "kamdraft";
13
+ serialNumber: number;
14
+ }
@@ -0,0 +1,14 @@
1
+ import type { RegisterDefinition } from "../register-definition";
2
+
3
+ export const msisdnDeviceAddresses: RegisterDefinition = {
4
+ id: "msisdnDeviceAddresses",
5
+ measure: "none",
6
+ aggregate: "instant",
7
+ units: ["json"],
8
+ immediate: true,
9
+ };
10
+
11
+ export interface MsisdnDeviceAddress {
12
+ _t: "msisdn";
13
+ msisdn: number;
14
+ }
@@ -0,0 +1,14 @@
1
+ import type { RegisterDefinition } from "../register-definition";
2
+
3
+ export const tchlrDeviceAddresses: RegisterDefinition = {
4
+ id: "tchlrDeviceAddresses",
5
+ measure: "none",
6
+ aggregate: "instant",
7
+ units: ["json"],
8
+ immediate: true,
9
+ };
10
+
11
+ export interface TchlrDeviceAddress {
12
+ _t: "tchlr";
13
+ serialNumber: number;
14
+ }
@@ -0,0 +1,17 @@
1
+ import type { RegisterDefinition } from "../register-definition";
2
+
3
+ export const wMBusDeviceAddresses: RegisterDefinition = {
4
+ id: "wMBusDeviceAddresses",
5
+ measure: "none",
6
+ aggregate: "instant",
7
+ units: ["json"],
8
+ immediate: true,
9
+ };
10
+
11
+ export interface WMBusDeviceAddress {
12
+ _t: "wmbus";
13
+ manufacturerCode: number;
14
+ serialNumber: number;
15
+ version: number;
16
+ type: number;
17
+ }
@@ -0,0 +1,9 @@
1
+ import type { RegisterDefinition } from "../register-definition";
2
+ import { units } from "../measures/time";
3
+
4
+ export const deviceDateTime: RegisterDefinition = {
5
+ id: "deviceDateTime",
6
+ measure: "time",
7
+ aggregate: "instant",
8
+ units,
9
+ };
@@ -0,0 +1,9 @@
1
+ import type { RegisterDefinition } from "../register-definition";
2
+ import { units } from "../measures/time";
3
+
4
+ export const deviceDate: RegisterDefinition = {
5
+ id: "deviceDate",
6
+ measure: "time",
7
+ aggregate: "instant",
8
+ units,
9
+ };
@@ -0,0 +1,9 @@
1
+ import type { RegisterDefinition } from "../register-definition";
2
+
3
+ export const deviceNominalDiameter: RegisterDefinition = {
4
+ id: "deviceNominalDiameter",
5
+ measure: "none",
6
+ aggregate: "instant",
7
+ units: ["unitless"],
8
+ immediate: true,
9
+ };
@@ -0,0 +1,9 @@
1
+ import type { RegisterDefinition } from "../register-definition";
2
+
3
+ export const devicePermanentVolumeFlow: RegisterDefinition = {
4
+ id: "devicePermanentVolumeFlow",
5
+ measure: "volumeFlow",
6
+ aggregate: "instant",
7
+ units: ["cubicMetersPerHour"],
8
+ immediate: true,
9
+ };
@@ -0,0 +1,9 @@
1
+ import type { RegisterDefinition } from "../register-definition";
2
+
3
+ export const deviceRegisters: RegisterDefinition = {
4
+ id: "deviceRegisters",
5
+ measure: "none",
6
+ aggregate: "instant",
7
+ units: ["json"],
8
+ immediate: true,
9
+ };