@utiliread/primitives 1.0.0-14 → 1.0.0-140

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 +2706 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/index.mjs +2695 -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 +6 -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 +15 -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 +1146 -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 +1146 -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 +287 -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 +37 -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 +66 -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,61 +1,70 @@
1
- import { RegisterDefinition } from ".";
2
- import { AggregateId } from "./aggregate-id";
3
- import { RegisterId } from "./register-id";
4
- import { getRegisterId } from "./register-utils";
5
-
6
- export const aggregatePrefixes: { [aggregateId in AggregateId]: string } = {
7
- instant: "",
8
- diff: "diff",
9
- min: "min",
10
- max: "max",
11
- avg: "avg",
12
- sum: "sum",
13
- cnt: "cnt",
14
- ssq: "ssq",
15
- };
16
-
17
- class Convention {
18
- public getAggregate(register: RegisterId | RegisterDefinition) {
19
- const registerId = getRegisterId(register);
20
- // Brute force all prefixes - if none of them, then it must be instant.
21
- for (const aggregateString of Object.keys(aggregatePrefixes)) {
22
- const aggregate = <AggregateId>aggregateString;
23
- const prefix = aggregatePrefixes[aggregate];
24
- if (prefix.length && isPrefix(registerId, prefix)) {
25
- // Not instant - it was any of the others.
26
- return aggregate;
27
- }
28
- }
29
- return "instant";
30
- }
31
-
32
- toInstant(register: RegisterId | RegisterDefinition) {
33
- const registerId = getRegisterId(register);
34
- for (const prefix of Object.values(aggregatePrefixes)) {
35
- if (prefix.length && isPrefix(registerId, prefix)) {
36
- const tail = registerId.substr(prefix.length);
37
- return <RegisterId>(tail[0].toLowerCase() + tail.substr(1));
38
- }
39
- }
40
- return registerId;
41
- }
42
-
43
- toAggregate(register: RegisterId | RegisterDefinition, aggregate: AggregateId) {
44
- const instantRegisterId = this.toInstant(register);
45
- if (aggregate === "instant") {
46
- return instantRegisterId;
47
- }
48
- const prefix = aggregatePrefixes[aggregate];
49
- return <RegisterId>(prefix + instantRegisterId[0].toUpperCase() + instantRegisterId.substr(1));
50
- }
51
- }
52
-
53
- export function isPrefix(registerId: RegisterId, prefix: string) {
54
- return registerId.startsWith(prefix) && isUppercase(registerId[prefix.length]);
55
- }
56
-
57
- function isUppercase(input: string) {
58
- return input.toUpperCase() === input;
59
- }
60
-
61
- export const RegisterConvention = new Convention();
1
+ import type { RegisterDefinition } from "./register-definition";
2
+ import { AggregateId } from "./aggregate-id";
3
+ import type { RegisterId } from "./register-id";
4
+ import { getRegisterId } from "./register-utils";
5
+
6
+ export const aggregatePrefixes: { [aggregateId in AggregateId]: string } = {
7
+ instant: "",
8
+ diff: "diff",
9
+ min: "min",
10
+ max: "max",
11
+ avg: "avg",
12
+ sum: "sum",
13
+ cnt: "cnt",
14
+ ssq: "ssq",
15
+ };
16
+
17
+ class Convention {
18
+ public getAggregate(register: RegisterId | RegisterDefinition) {
19
+ const registerId = getRegisterId(register);
20
+ // Brute force all prefixes - if none of them, then it must be instant.
21
+ for (const aggregateString of Object.keys(aggregatePrefixes)) {
22
+ const aggregate = <AggregateId>aggregateString;
23
+ const prefix = aggregatePrefixes[aggregate];
24
+ if (prefix.length && isPrefix(registerId, prefix)) {
25
+ // Not instant - it was any of the others.
26
+ return aggregate;
27
+ }
28
+ }
29
+ return "instant";
30
+ }
31
+
32
+ toInstant(register: RegisterId | RegisterDefinition) {
33
+ const registerId = getRegisterId(register);
34
+ for (const prefix of Object.values(aggregatePrefixes)) {
35
+ if (prefix.length && isPrefix(registerId, prefix)) {
36
+ const tail = registerId.substr(prefix.length);
37
+ return <RegisterId>(tail[0].toLowerCase() + tail.substr(1));
38
+ }
39
+ }
40
+ return registerId;
41
+ }
42
+
43
+ toAggregate(
44
+ register: RegisterId | RegisterDefinition,
45
+ aggregate: AggregateId,
46
+ ) {
47
+ const instantRegisterId = this.toInstant(register);
48
+ if (aggregate === "instant") {
49
+ return instantRegisterId;
50
+ }
51
+ const prefix = aggregatePrefixes[aggregate];
52
+ return <RegisterId>(
53
+ (prefix +
54
+ instantRegisterId[0].toUpperCase() +
55
+ instantRegisterId.substr(1))
56
+ );
57
+ }
58
+ }
59
+
60
+ export function isPrefix(registerId: RegisterId, prefix: string) {
61
+ return (
62
+ registerId.startsWith(prefix) && isUppercase(registerId[prefix.length])
63
+ );
64
+ }
65
+
66
+ function isUppercase(input: string) {
67
+ return input.toUpperCase() === input;
68
+ }
69
+
70
+ export const RegisterConvention = new Convention();
@@ -1,17 +1,23 @@
1
- import { UnitId } from ".";
2
- import { AggregateId } from "./aggregate-id";
3
- import { MeasureId } from "./measure-id";
4
- import { RegisterId } from "./register-id";
5
-
6
- export interface RegisterDefinition {
7
- /// The id of the register
8
- id: RegisterId;
9
- /// The register measure
10
- measure: MeasureId;
11
- /// The aggregate of the register
12
- aggregate: AggregateId;
13
- /// The possible register units
14
- units: ReadonlyArray<UnitId>;
15
- /// Whether the register can only be resolved by "present value".
16
- immediate?: true;
17
- }
1
+ import type { AggregateId } from "./aggregate-id";
2
+ import type { MeasureId } from "./measure-id";
3
+ import type { RegisterId } from "./register-id";
4
+ import type { UnitId } from "./unit-id";
5
+
6
+ export interface RegisterDefinition {
7
+ /// The id of the register
8
+ id: RegisterId;
9
+ /// The register measure
10
+ measure: MeasureId;
11
+ /// The aggregate of the register
12
+ aggregate: AggregateId;
13
+ /// The possible register units
14
+ units: ReadonlyArray<UnitId>;
15
+ /// Whether the register can only be resolved by "present value".
16
+ immediate?: true;
17
+ /// An optional concise register name.
18
+ /// Only used for custom registers as locales exist for standard registers.
19
+ name?: string;
20
+ /// An optional register description.
21
+ /// Only used for custom registers as locales exist for standard registers.
22
+ description?: string;
23
+ }
@@ -1,191 +1,287 @@
1
- export type RegisterId =
2
- "none" |
3
-
4
- "heatEnergy" |
5
- "diffHeatEnergy" |
6
-
7
- "heatEnergyVolumeInInlet" |
8
- "diffHeatEnergyVolumeInInlet" |
9
-
10
- "heatEnergyVolumeInOutlet" |
11
- "diffHeatEnergyVolumeInOutlet" |
12
-
13
- "coolingEnergy" |
14
- "diffCoolingEnergy" |
15
-
16
- "coolingEnergyVolumeInInlet" |
17
- "diffCoolingEnergyVolumeInInlet" |
18
-
19
- "coolingEnergyVolumeInOutlet" |
20
- "diffCoolingEnergyVolumeInOutlet" |
21
-
22
- "electricalEnergy" |
23
- "diffElectricalEnergy" |
24
-
25
- "reactiveEnergy" |
26
- "diffReactiveEnergy" |
27
-
28
- "volume" |
29
- "diffVolume" |
30
-
31
- "inletVolume" |
32
- "diffInletVolume" |
33
-
34
- "outletVolume" |
35
- "diffOutletVolume" |
36
-
37
- "pulseInputAVolume" |
38
- "diffPulseInputAVolume" |
39
-
40
- "pulseInputBVolume" |
41
- "diffPulseInputBVolume" |
42
-
43
- "mass" |
44
- "diffMass" |
45
-
46
- "inletMass" |
47
- "diffInletMass" |
48
-
49
- "outletMass" |
50
- "diffOutletMass" |
51
-
52
- "power" |
53
- "maxPower" |
54
- "minPower" |
55
- "avgPower" |
56
-
57
- "inletPower" |
58
- "maxInletPower" |
59
- "minInletPower" |
60
- "avgInletPower" |
61
-
62
- "outletPower" |
63
- "maxOutletPower" |
64
- "minOutletPower" |
65
- "avgOutletPower" |
66
-
67
- "volumeFlow" |
68
- "maxVolumeFlow" |
69
- "minVolumeFlow" |
70
- "avgVolumeFlow" |
71
-
72
- "inletVolumeFlow" |
73
- "maxInletVolumeFlow" |
74
- "minInletVolumeFlow" |
75
- "avgInletVolumeFlow" |
76
-
77
- "outletVolumeFlow" |
78
- "maxOutletVolumeFlow" |
79
- "minOutletVolumeFlow" |
80
- "avgOutletVolumeFlow" |
81
-
82
- "massFlow" |
83
- "maxMassFlow" |
84
- "minMassFlow" |
85
- "avgMassFlow" |
86
-
87
- "inletMassFlow" |
88
- "maxInletMassFlow" |
89
- "minInletMassFlow" |
90
- "avgInletMassFlow" |
91
-
92
- "outletMassFlow" |
93
- "maxOutletMassFlow" |
94
- "minOutletMassFlow" |
95
- "avgOutletMassFlow" |
96
-
97
- "flowTemperature" |
98
- "maxFlowTemperature" |
99
- "minFlowTemperature" |
100
- "avgFlowTemperature" |
101
-
102
- "inletFlowTemperature" |
103
- "maxInletFlowTemperature" |
104
- "minInletFlowTemperature" |
105
- "avgInletFlowTemperature" |
106
-
107
- "outletFlowTemperature" |
108
- "maxOutletFlowTemperature" |
109
- "minOutletFlowTemperature" |
110
- "avgOutletFlowTemperature" |
111
-
112
- "inletMinusOutletFlowTemperatureDifference" |
113
- "maxInletMinusOutletFlowTemperatureDifference" |
114
- "minInletMinusOutletFlowTemperatureDifference" |
115
- "avgInletMinusOutletFlowTemperatureDifference" |
116
-
117
- "outletMinusInletFlowTemperatureDifference" |
118
- "maxOutletMinusInletFlowTemperatureDifference" |
119
- "minOutletMinusInletFlowTemperatureDifference" |
120
- "avgOutletMinusInletFlowTemperatureDifference" |
121
-
122
- "ambientTemperature" |
123
- "maxAmbientTemperature" |
124
- "minAmbientTemperature" |
125
- "avgAmbientTemperature" |
126
-
127
- "radiatorTemperature" |
128
- "maxRadiatorTemperature" |
129
- "minRadiatorTemperature" |
130
- "avgRadiatorTemperature" |
131
-
132
- "relativeHumidity" |
133
-
134
- "kamstrupE8Inlet" |
135
- "diffKamstrupE8Inlet" |
136
- "kamstrupE9Outlet" |
137
- "diffKamstrupE9Outlet" |
138
-
139
- "operatingTime" |
140
- "diffOperatingTime" |
141
-
142
- "remainingBatteryTime" |
143
- "diffRemainingBatteryTime" |
144
-
145
- "deviceDate" |
146
- "deviceTime" |
147
- "deviceDateTime" |
148
-
149
- "timeSinceLastExactOverhearingArrived" |
150
- "timeAtLastExactOverhearingArrived" |
151
-
152
- "timeSinceLastPossibleCandidateOverhearingArrived" |
153
- "timeAtLastPossibleCandidateOverhearingArrived" |
154
-
155
- "timeSinceLastSampled" |
156
- "timeAtLastSampled" |
157
-
158
- "timeSinceLastInstallationMounted" |
159
- "timeAtLastInstallationMounted" |
160
-
161
- "basetime" |
162
-
163
- "device" |
164
- "wMBusDeviceAddresses" |
165
- "kamdraftDeviceAddresses" |
166
- "tchlrDeviceAddresses" |
167
- "kamdaDeviceAddresses" |
168
- "msisdnDeviceAddresses" |
169
- "deviceRegisters" |
170
- "consumptionZone" |
171
-
172
- "mBusFormatStringSignature" |
173
-
174
- "kamstrupMulticalInfocodeType1" |
175
- "kamstrupMulticalInfocodeType2" |
176
- "kamstrupMulticalInfocodeType3" |
177
- "kamstrupMulticalInfocodeType4" |
178
- "kamstrupMulticalInfocode" |
179
- "kamstrupModuleType" |
180
-
181
- "diehlInfocodeType1" |
182
- "diehlInfocode" |
183
-
184
- "landisGyrMBusStatusType1" |
185
- "landisGyrMBusStatusType2" |
186
- "landisGyrMBusStatus" |
187
- "landisGyrInfocodeType1" |
188
- "landisGyrInfocodeType2" |
189
- "landisGyrInfocode" |
190
-
191
- "infocode";
1
+ export type RegisterId =
2
+ | "none"
3
+ | "heatEnergy"
4
+ | "diffHeatEnergy"
5
+ | "cntHeatEnergy"
6
+ | "heatEnergyVolumeInInlet"
7
+ | "diffHeatEnergyVolumeInInlet"
8
+ | "cntHeatEnergyVolumeInInlet"
9
+ | "heatEnergyVolumeInOutlet"
10
+ | "diffHeatEnergyVolumeInOutlet"
11
+ | "cntHeatEnergyVolumeInOutlet"
12
+ | "coolingEnergy"
13
+ | "diffCoolingEnergy"
14
+ | "cntCoolingEnergy"
15
+ | "coolingEnergyVolumeInInlet"
16
+ | "diffCoolingEnergyVolumeInInlet"
17
+ | "cntCoolingEnergyVolumeInInlet"
18
+ | "coolingEnergyVolumeInOutlet"
19
+ | "diffCoolingEnergyVolumeInOutlet"
20
+ | "cntCoolingEnergyVolumeInOutlet"
21
+ | "electricalEnergy"
22
+ | "diffElectricalEnergy"
23
+ | "cntElectricalEnergy"
24
+ | "reactiveEnergy"
25
+ | "diffReactiveEnergy"
26
+ | "cntReactiveEnergy"
27
+ | "heatEnergyTariff1"
28
+ | "diffHeatEnergyTariff1"
29
+ | "cntHeatEnergyTariff1"
30
+ | "heatEnergyTariff1VolumeInInlet"
31
+ | "diffHeatEnergyTariff1VolumeInInlet"
32
+ | "cntHeatEnergyTariff1VolumeInInlet"
33
+ | "heatEnergyTariff1VolumeInOutlet"
34
+ | "diffHeatEnergyTariff1VolumeInOutlet"
35
+ | "cntHeatEnergyTariff1VolumeInOutlet"
36
+ | "heatEnergyTariff2"
37
+ | "diffHeatEnergyTariff2"
38
+ | "cntHeatEnergyTariff2"
39
+ | "heatEnergyTariff2VolumeInInlet"
40
+ | "diffHeatEnergyTariff2VolumeInInlet"
41
+ | "cntHeatEnergyTariff2VolumeInInlet"
42
+ | "heatEnergyTariff2VolumeInOutlet"
43
+ | "diffHeatEnergyTariff2VolumeInOutlet"
44
+ | "cntHeatEnergyTariff2VolumeInOutlet"
45
+ | "volume"
46
+ | "diffVolume"
47
+ | "cntVolume"
48
+ | "inletVolume"
49
+ | "diffInletVolume"
50
+ | "cntInletVolume"
51
+ | "outletVolume"
52
+ | "diffOutletVolume"
53
+ | "cntOutletVolume"
54
+ | "pulseInputAVolume"
55
+ | "diffPulseInputAVolume"
56
+ | "cntPulseInputAVolume"
57
+ | "pulseInputBVolume"
58
+ | "diffPulseInputBVolume"
59
+ | "cntPulseInputBVolume"
60
+ | "mass"
61
+ | "diffMass"
62
+ | "cntMass"
63
+ | "inletMass"
64
+ | "diffInletMass"
65
+ | "cntInletMass"
66
+ | "outletMass"
67
+ | "diffOutletMass"
68
+ | "cntOutletMass"
69
+ | "pressure"
70
+ | "maxPressure"
71
+ | "minPressure"
72
+ | "avgPressure"
73
+ | "sumPressure"
74
+ | "cntPressure"
75
+ | "ssqPressure"
76
+ | "inletPressure"
77
+ | "maxInletPressure"
78
+ | "minInletPressure"
79
+ | "avgInletPressure"
80
+ | "sumInletPressure"
81
+ | "cntInletPressure"
82
+ | "ssqInletPressure"
83
+ | "outletPressure"
84
+ | "maxOutletPressure"
85
+ | "minOutletPressure"
86
+ | "avgOutletPressure"
87
+ | "sumOutletPressure"
88
+ | "cntOutletPressure"
89
+ | "ssqOutletPressure"
90
+ | "power"
91
+ | "maxPower"
92
+ | "minPower"
93
+ | "avgPower"
94
+ | "sumPower"
95
+ | "cntPower"
96
+ | "ssqPower"
97
+ | "inletPower"
98
+ | "maxInletPower"
99
+ | "minInletPower"
100
+ | "avgInletPower"
101
+ | "sumInletPower"
102
+ | "cntInletPower"
103
+ | "ssqInletPower"
104
+ | "outletPower"
105
+ | "maxOutletPower"
106
+ | "minOutletPower"
107
+ | "avgOutletPower"
108
+ | "sumOutletPower"
109
+ | "cntOutletPower"
110
+ | "ssqOutletPower"
111
+ | "volumeFlow"
112
+ | "maxVolumeFlow"
113
+ | "minVolumeFlow"
114
+ | "avgVolumeFlow"
115
+ | "sumVolumeFlow"
116
+ | "cntVolumeFlow"
117
+ | "ssqVolumeFlow"
118
+ | "inletVolumeFlow"
119
+ | "maxInletVolumeFlow"
120
+ | "minInletVolumeFlow"
121
+ | "avgInletVolumeFlow"
122
+ | "sumInletVolumeFlow"
123
+ | "cntInletVolumeFlow"
124
+ | "ssqInletVolumeFlow"
125
+ | "outletVolumeFlow"
126
+ | "maxOutletVolumeFlow"
127
+ | "minOutletVolumeFlow"
128
+ | "avgOutletVolumeFlow"
129
+ | "sumOutletVolumeFlow"
130
+ | "cntOutletVolumeFlow"
131
+ | "ssqOutletVolumeFlow"
132
+ | "massFlow"
133
+ | "maxMassFlow"
134
+ | "minMassFlow"
135
+ | "avgMassFlow"
136
+ | "sumMassFlow"
137
+ | "cntMassFlow"
138
+ | "ssqMassFlow"
139
+ | "inletMassFlow"
140
+ | "maxInletMassFlow"
141
+ | "minInletMassFlow"
142
+ | "avgInletMassFlow"
143
+ | "sumInletMassFlow"
144
+ | "cntInletMassFlow"
145
+ | "ssqInletMassFlow"
146
+ | "outletMassFlow"
147
+ | "maxOutletMassFlow"
148
+ | "minOutletMassFlow"
149
+ | "avgOutletMassFlow"
150
+ | "sumOutletMassFlow"
151
+ | "cntOutletMassFlow"
152
+ | "ssqOutletMassFlow"
153
+ | "flowTemperature"
154
+ | "maxFlowTemperature"
155
+ | "minFlowTemperature"
156
+ | "avgFlowTemperature"
157
+ | "sumFlowTemperature"
158
+ | "cntFlowTemperature"
159
+ | "ssqFlowTemperature"
160
+ | "inletFlowTemperature"
161
+ | "maxInletFlowTemperature"
162
+ | "minInletFlowTemperature"
163
+ | "avgInletFlowTemperature"
164
+ | "sumInletFlowTemperature"
165
+ | "cntInletFlowTemperature"
166
+ | "ssqInletFlowTemperature"
167
+ | "outletFlowTemperature"
168
+ | "maxOutletFlowTemperature"
169
+ | "minOutletFlowTemperature"
170
+ | "avgOutletFlowTemperature"
171
+ | "sumOutletFlowTemperature"
172
+ | "cntOutletFlowTemperature"
173
+ | "ssqOutletFlowTemperature"
174
+ | "inletMinusOutletFlowTemperatureDifference"
175
+ | "maxInletMinusOutletFlowTemperatureDifference"
176
+ | "minInletMinusOutletFlowTemperatureDifference"
177
+ | "avgInletMinusOutletFlowTemperatureDifference"
178
+ | "sumInletMinusOutletFlowTemperatureDifference"
179
+ | "cntInletMinusOutletFlowTemperatureDifference"
180
+ | "ssqInletMinusOutletFlowTemperatureDifference"
181
+ | "outletMinusInletFlowTemperatureDifference"
182
+ | "maxOutletMinusInletFlowTemperatureDifference"
183
+ | "minOutletMinusInletFlowTemperatureDifference"
184
+ | "avgOutletMinusInletFlowTemperatureDifference"
185
+ | "sumOutletMinusInletFlowTemperatureDifference"
186
+ | "cntOutletMinusInletFlowTemperatureDifference"
187
+ | "ssqOutletMinusInletFlowTemperatureDifference"
188
+ | "ambientTemperature"
189
+ | "maxAmbientTemperature"
190
+ | "minAmbientTemperature"
191
+ | "avgAmbientTemperature"
192
+ | "sumAmbientTemperature"
193
+ | "cntAmbientTemperature"
194
+ | "ssqAmbientTemperature"
195
+ | "radiatorTemperature"
196
+ | "maxRadiatorTemperature"
197
+ | "minRadiatorTemperature"
198
+ | "avgRadiatorTemperature"
199
+ | "sumRadiatorTemperature"
200
+ | "cntRadiatorTemperature"
201
+ | "ssqRadiatorTemperature"
202
+ | "auxFlowTemperature"
203
+ | "maxAuxFlowTemperature"
204
+ | "minAuxFlowTemperature"
205
+ | "avgAuxFlowTemperature"
206
+ | "sumAuxFlowTemperature"
207
+ | "cntAuxFlowTemperature"
208
+ | "ssqAuxFlowTemperature"
209
+ | "acousticNoise"
210
+ | "maxAcousticNoise"
211
+ | "minAcousticNoise"
212
+ | "avgAcousticNoise"
213
+ | "sumAcousticNoise"
214
+ | "cntAcousticNoise"
215
+ | "ssqAcousticNoise"
216
+ | "relativeHumidity"
217
+ | "kamstrupE8Inlet"
218
+ | "diffKamstrupE8Inlet"
219
+ | "cntKamstrupE8Inlet"
220
+ | "kamstrupE9Outlet"
221
+ | "diffKamstrupE9Outlet"
222
+ | "cntKamstrupE9Outlet"
223
+ | "operatingTime"
224
+ | "diffOperatingTime"
225
+ | "cntOperatingTime"
226
+ | "errorOperatingTime"
227
+ | "diffErrorOperatingTime"
228
+ | "cntErrorOperatingTime"
229
+ | "remainingBatteryTime"
230
+ | "diffRemainingBatteryTime"
231
+ | "cntRemainingBatteryTime"
232
+ | "deviceDate"
233
+ | "deviceTime"
234
+ | "deviceDateTime"
235
+ | "timeSinceLastExactOverhearingArrived"
236
+ | "timeAtLastExactOverhearingArrived"
237
+ | "timeSinceLastPossibleCandidateOverhearingArrived"
238
+ | "timeAtLastPossibleCandidateOverhearingArrived"
239
+ | "timeSinceLastSampled"
240
+ | "timeAtLastSampled"
241
+ | "timeSinceLastInstallationMounted"
242
+ | "timeAtLastInstallationMounted"
243
+ | "basetime"
244
+ | "instantTime"
245
+ | "periodStartTime"
246
+ | "periodEndTime"
247
+ | "instantOrPeriodStartTime"
248
+ | "instantOrPeriodEndTime"
249
+ | "device"
250
+ | "wMBusDeviceAddresses"
251
+ | "kamdraftDeviceAddresses"
252
+ | "tchlrDeviceAddresses"
253
+ | "msisdnDeviceAddresses"
254
+ | "deviceRegisters"
255
+ | "devicePermanentVolumeFlow"
256
+ | "deviceNominalDiameter"
257
+ | "place"
258
+ | "lastPlace"
259
+ | "mBusFormatStringSignature"
260
+ | "deviceSoftwareVersion"
261
+ | "legacyDeviceSamples"
262
+ | "deviceSamplesOnLastMount"
263
+ | "deviceSamplesOnLastUnmount"
264
+ | "consumer"
265
+ | "kamstrupMulticalInfocodeType1"
266
+ | "kamstrupMulticalInfocodeType2"
267
+ | "kamstrupMulticalInfocodeType3"
268
+ | "kamstrupMulticalInfocodeType4"
269
+ | "kamstrupMulticalInfocodeType5"
270
+ | "kamstrupMulticalInfocodeType6"
271
+ | "kamstrupMulticalInfocodeType7"
272
+ | "kamstrupMulticalInfocode"
273
+ | "kamstrupModuleType"
274
+ | "diehlInfocodeType1"
275
+ | "diehlInfocodeType2"
276
+ | "diehlInfocodeType3"
277
+ | "diehlInfocodeType4"
278
+ | "diehlInfocode"
279
+ | "landisGyrMBusStatusType1"
280
+ | "landisGyrMBusStatusType2"
281
+ | "landisGyrMBusStatus"
282
+ | "landisGyrInfocodeType1"
283
+ | "landisGyrInfocodeType2"
284
+ | "landisGyrInfocode"
285
+ | "axiomaInfocodeType1"
286
+ | "axiomaInfocode"
287
+ | "infocode";