@digital-alchemy/hass 24.9.2 → 24.9.4

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 (197) hide show
  1. package/README.md +4 -1
  2. package/dist/dynamic.d.ts +1 -1
  3. package/dist/dynamic.js +7 -2
  4. package/dist/dynamic.js.map +1 -1
  5. package/dist/extensions/area.extension.d.ts +2 -12
  6. package/dist/extensions/area.extension.js +20 -26
  7. package/dist/extensions/area.extension.js.map +1 -1
  8. package/dist/extensions/backup.extension.d.ts +2 -7
  9. package/dist/extensions/backup.extension.js +5 -8
  10. package/dist/extensions/backup.extension.js.map +1 -1
  11. package/dist/extensions/call-proxy.extension.d.ts +1 -1
  12. package/dist/extensions/call-proxy.extension.js +11 -29
  13. package/dist/extensions/call-proxy.extension.js.map +1 -1
  14. package/dist/extensions/config.extension.d.ts +2 -6
  15. package/dist/extensions/config.extension.js +21 -25
  16. package/dist/extensions/config.extension.js.map +1 -1
  17. package/dist/extensions/conversation.extension.d.ts +2 -6
  18. package/dist/extensions/conversation.extension.js +5 -8
  19. package/dist/extensions/conversation.extension.js.map +1 -1
  20. package/dist/extensions/device.extension.d.ts +2 -5
  21. package/dist/extensions/device.extension.js +16 -22
  22. package/dist/extensions/device.extension.js.map +1 -1
  23. package/dist/extensions/entity.extension.d.ts +2 -61
  24. package/dist/extensions/entity.extension.js +42 -83
  25. package/dist/extensions/entity.extension.js.map +1 -1
  26. package/dist/extensions/events.extension.d.ts +3 -11
  27. package/dist/extensions/events.extension.js +8 -11
  28. package/dist/extensions/events.extension.js.map +1 -1
  29. package/dist/extensions/fetch-api.extension.d.ts +12 -4
  30. package/dist/extensions/fetch-api.extension.js +23 -35
  31. package/dist/extensions/fetch-api.extension.js.map +1 -1
  32. package/dist/extensions/floor.extension.d.ts +2 -9
  33. package/dist/extensions/floor.extension.js +17 -23
  34. package/dist/extensions/floor.extension.js.map +1 -1
  35. package/dist/extensions/id-by.extension.js +15 -20
  36. package/dist/extensions/id-by.extension.js.map +1 -1
  37. package/dist/extensions/index.d.ts +1 -0
  38. package/dist/extensions/index.js +16 -18
  39. package/dist/extensions/index.js.map +1 -1
  40. package/dist/extensions/internal.extension.d.ts +18 -0
  41. package/dist/extensions/internal.extension.js +102 -0
  42. package/dist/extensions/internal.extension.js.map +1 -0
  43. package/dist/extensions/label.extension.d.ts +2 -9
  44. package/dist/extensions/label.extension.js +17 -23
  45. package/dist/extensions/label.extension.js.map +1 -1
  46. package/dist/extensions/reference.extension.d.ts +2 -12
  47. package/dist/extensions/reference.extension.js +19 -25
  48. package/dist/extensions/reference.extension.js.map +1 -1
  49. package/dist/extensions/registry.extension.d.ts +2 -7
  50. package/dist/extensions/registry.extension.js +1 -4
  51. package/dist/extensions/registry.extension.js.map +1 -1
  52. package/dist/extensions/websocket-api.extension.d.ts +3 -78
  53. package/dist/extensions/websocket-api.extension.js +82 -165
  54. package/dist/extensions/websocket-api.extension.js.map +1 -1
  55. package/dist/extensions/zone.extension.d.ts +2 -7
  56. package/dist/extensions/zone.extension.js +15 -21
  57. package/dist/extensions/zone.extension.js.map +1 -1
  58. package/dist/hass.module.d.ts +47 -36
  59. package/dist/hass.module.js +70 -70
  60. package/dist/hass.module.js.map +1 -1
  61. package/dist/helpers/backup.helper.js +1 -2
  62. package/dist/helpers/constants.helper.js +15 -18
  63. package/dist/helpers/constants.helper.js.map +1 -1
  64. package/dist/helpers/device.helper.js +2 -5
  65. package/dist/helpers/device.helper.js.map +1 -1
  66. package/dist/helpers/entity-state.helper.d.ts +3 -8
  67. package/dist/helpers/entity-state.helper.js +1 -8
  68. package/dist/helpers/entity-state.helper.js.map +1 -1
  69. package/dist/helpers/features.helper.js +79 -85
  70. package/dist/helpers/features.helper.js.map +1 -1
  71. package/dist/helpers/fetch/calendar.js +1 -2
  72. package/dist/helpers/fetch/configuration.js +2 -5
  73. package/dist/helpers/fetch/configuration.js.map +1 -1
  74. package/dist/helpers/fetch/index.js +5 -8
  75. package/dist/helpers/fetch/index.js.map +1 -1
  76. package/dist/helpers/fetch/server-log.js +1 -2
  77. package/dist/helpers/fetch/server-log.js.map +1 -1
  78. package/dist/helpers/fetch/service-list.js +1 -2
  79. package/dist/helpers/fetch/weather-forecasts.js +1 -2
  80. package/dist/helpers/fetch/weather-forecasts.js.map +1 -1
  81. package/dist/helpers/fetch.helper.d.ts +162 -0
  82. package/dist/helpers/fetch.helper.js +161 -0
  83. package/dist/helpers/fetch.helper.js.map +1 -0
  84. package/dist/helpers/id-by.helper.js +1 -2
  85. package/dist/helpers/index.d.ts +2 -1
  86. package/dist/helpers/index.js +13 -15
  87. package/dist/helpers/index.js.map +1 -1
  88. package/dist/helpers/interfaces.helper.d.ts +228 -0
  89. package/dist/helpers/interfaces.helper.js +10 -0
  90. package/dist/helpers/interfaces.helper.js.map +1 -0
  91. package/dist/helpers/manifest.helper.d.ts +0 -1
  92. package/dist/helpers/manifest.helper.js +0 -1
  93. package/dist/helpers/notify.helper.d.ts +11 -3
  94. package/dist/helpers/notify.helper.js +1 -2
  95. package/dist/helpers/registry.js +7 -10
  96. package/dist/helpers/registry.js.map +1 -1
  97. package/dist/helpers/utility.helper.d.ts +6 -1
  98. package/dist/helpers/utility.helper.js +9 -13
  99. package/dist/helpers/utility.helper.js.map +1 -1
  100. package/dist/helpers/websocket.helper.d.ts +1 -2
  101. package/dist/helpers/websocket.helper.js +1 -2
  102. package/dist/index.js +5 -8
  103. package/dist/index.js.map +1 -1
  104. package/dist/mock_assistant/extensions/area.extension.d.ts +8 -0
  105. package/dist/mock_assistant/extensions/area.extension.js +51 -0
  106. package/dist/mock_assistant/extensions/area.extension.js.map +1 -0
  107. package/dist/mock_assistant/extensions/config.extension.d.ts +14 -0
  108. package/dist/mock_assistant/extensions/config.extension.js +29 -0
  109. package/dist/mock_assistant/extensions/config.extension.js.map +1 -0
  110. package/dist/mock_assistant/extensions/device.extension.d.ts +8 -0
  111. package/dist/mock_assistant/extensions/device.extension.js +33 -0
  112. package/dist/mock_assistant/extensions/device.extension.js.map +1 -0
  113. package/dist/mock_assistant/extensions/entity-registry.extension.d.ts +13 -0
  114. package/dist/mock_assistant/extensions/entity-registry.extension.js +28 -0
  115. package/dist/mock_assistant/extensions/entity-registry.extension.js.map +1 -0
  116. package/dist/mock_assistant/extensions/entity.extension.d.ts +30 -0
  117. package/dist/mock_assistant/extensions/entity.extension.js +77 -0
  118. package/dist/mock_assistant/extensions/entity.extension.js.map +1 -0
  119. package/dist/mock_assistant/extensions/events.extension.d.ts +1 -1
  120. package/dist/mock_assistant/extensions/events.extension.js +3 -6
  121. package/dist/mock_assistant/extensions/events.extension.js.map +1 -1
  122. package/dist/mock_assistant/extensions/fetch.extension.d.ts +1 -0
  123. package/dist/mock_assistant/extensions/fetch.extension.js +4 -0
  124. package/dist/mock_assistant/extensions/fetch.extension.js.map +1 -0
  125. package/dist/mock_assistant/extensions/fixtures.extension.d.ts +1 -1
  126. package/dist/mock_assistant/extensions/fixtures.extension.js +29 -33
  127. package/dist/mock_assistant/extensions/fixtures.extension.js.map +1 -1
  128. package/dist/mock_assistant/extensions/floor.extension.d.ts +8 -0
  129. package/dist/mock_assistant/extensions/floor.extension.js +51 -0
  130. package/dist/mock_assistant/extensions/floor.extension.js.map +1 -0
  131. package/dist/mock_assistant/extensions/index.d.ts +10 -0
  132. package/dist/mock_assistant/extensions/index.js +12 -5
  133. package/dist/mock_assistant/extensions/index.js.map +1 -1
  134. package/dist/mock_assistant/extensions/label.extension.d.ts +8 -0
  135. package/dist/mock_assistant/extensions/label.extension.js +51 -0
  136. package/dist/mock_assistant/extensions/label.extension.js.map +1 -0
  137. package/dist/mock_assistant/extensions/services.extension.d.ts +12 -0
  138. package/dist/mock_assistant/extensions/services.extension.js +20 -0
  139. package/dist/mock_assistant/extensions/services.extension.js.map +1 -0
  140. package/dist/mock_assistant/extensions/websocket-api.extension.d.ts +15 -0
  141. package/dist/mock_assistant/extensions/websocket-api.extension.js +68 -0
  142. package/dist/mock_assistant/extensions/websocket-api.extension.js.map +1 -0
  143. package/dist/mock_assistant/extensions/zone.extension.d.ts +8 -0
  144. package/dist/mock_assistant/extensions/zone.extension.js +51 -0
  145. package/dist/mock_assistant/extensions/zone.extension.js.map +1 -0
  146. package/dist/mock_assistant/helpers/fixtures.js +1 -2
  147. package/dist/mock_assistant/helpers/index.d.ts +0 -1
  148. package/dist/mock_assistant/helpers/index.js +1 -5
  149. package/dist/mock_assistant/helpers/index.js.map +1 -1
  150. package/dist/mock_assistant/index.js +3 -6
  151. package/dist/mock_assistant/index.js.map +1 -1
  152. package/dist/mock_assistant/main.js +11 -15
  153. package/dist/mock_assistant/main.js.map +1 -1
  154. package/dist/mock_assistant/mock-assistant.module.d.ts +156 -3
  155. package/dist/mock_assistant/mock-assistant.module.js +56 -11
  156. package/dist/mock_assistant/mock-assistant.module.js.map +1 -1
  157. package/dist/quickboot.module.js +5 -8
  158. package/dist/quickboot.module.js.map +1 -1
  159. package/dist/testing/area.spec.js +106 -194
  160. package/dist/testing/area.spec.js.map +1 -1
  161. package/dist/testing/backup.spec.js +97 -139
  162. package/dist/testing/backup.spec.js.map +1 -1
  163. package/dist/testing/config.spec.js +79 -153
  164. package/dist/testing/config.spec.js.map +1 -1
  165. package/dist/testing/device.spec.js +35 -69
  166. package/dist/testing/device.spec.js.map +1 -1
  167. package/dist/testing/entity.spec.js +94 -149
  168. package/dist/testing/entity.spec.js.map +1 -1
  169. package/dist/testing/events.spec.js +33 -57
  170. package/dist/testing/events.spec.js.map +1 -1
  171. package/dist/testing/fetch-api.spec.js +242 -427
  172. package/dist/testing/fetch-api.spec.js.map +1 -1
  173. package/dist/testing/fixtures.spec.d.ts +1 -0
  174. package/dist/testing/fixtures.spec.js +150 -0
  175. package/dist/testing/fixtures.spec.js.map +1 -0
  176. package/dist/testing/floor.spec.js +106 -194
  177. package/dist/testing/floor.spec.js.map +1 -1
  178. package/dist/testing/id-by.spec.js +68 -107
  179. package/dist/testing/id-by.spec.js.map +1 -1
  180. package/dist/testing/label.spec.js +106 -194
  181. package/dist/testing/label.spec.js.map +1 -1
  182. package/dist/testing/ref-by.spec.js +155 -219
  183. package/dist/testing/ref-by.spec.js.map +1 -1
  184. package/dist/testing/websocket.spec.d.ts +1 -8
  185. package/dist/testing/websocket.spec.js +35 -50
  186. package/dist/testing/websocket.spec.js.map +1 -1
  187. package/dist/testing/workflow.spec.js +82 -81
  188. package/dist/testing/workflow.spec.js.map +1 -1
  189. package/dist/testing/zone.spec.js +61 -113
  190. package/dist/testing/zone.spec.js.map +1 -1
  191. package/package.json +57 -41
  192. package/dist/helpers/metrics.helper.d.ts +0 -29
  193. package/dist/helpers/metrics.helper.js +0 -62
  194. package/dist/helpers/metrics.helper.js.map +0 -1
  195. package/dist/mock_assistant/helpers/utils.d.ts +0 -4
  196. package/dist/mock_assistant/helpers/utils.js +0 -57
  197. package/dist/mock_assistant/helpers/utils.js.map +0 -1
@@ -1,34 +1,28 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Floor = Floor;
4
- const core_1 = require("@digital-alchemy/core");
5
- const helpers_1 = require("../helpers");
6
- function Floor({ hass, config, context, event, logger, lifecycle, }) {
1
+ import { debounce } from "@digital-alchemy/core";
2
+ import { EARLY_ON_READY, FLOOR_REGISTRY_UPDATED, } from "../helpers";
3
+ export function Floor({ hass, config, context, event, logger, lifecycle, }) {
7
4
  hass.socket.onConnect(async () => {
8
- if (!config.hass.AUTO_CONNECT_SOCKET || !config.hass.MANAGE_REGISTRY) {
9
- return;
10
- }
11
5
  let loading = new Promise(async (done) => {
12
6
  hass.floor.current = await hass.floor.list();
13
7
  loading = undefined;
14
8
  done();
15
9
  });
16
- lifecycle.onReady(async () => loading && (await loading), helpers_1.EARLY_ON_READY);
17
- });
18
- hass.socket.subscribe({
19
- context,
20
- event_type: "floor_registry_updated",
21
- async exec() {
22
- await (0, core_1.debounce)(helpers_1.FLOOR_REGISTRY_UPDATED, config.hass.EVENT_DEBOUNCE_MS);
23
- hass.floor.current = await hass.floor.list();
24
- logger.debug(`floor registry updated`);
25
- event.emit(helpers_1.FLOOR_REGISTRY_UPDATED);
26
- },
10
+ lifecycle.onReady(async () => loading && (await loading), EARLY_ON_READY);
11
+ hass.socket.subscribe({
12
+ context,
13
+ event_type: "floor_registry_updated",
14
+ async exec() {
15
+ await debounce(FLOOR_REGISTRY_UPDATED, config.hass.EVENT_DEBOUNCE_MS);
16
+ hass.floor.current = await hass.floor.list();
17
+ logger.debug(`floor registry updated`);
18
+ event.emit(FLOOR_REGISTRY_UPDATED);
19
+ },
20
+ });
27
21
  });
28
22
  return {
29
23
  async create(details) {
30
24
  return await new Promise(async (done) => {
31
- event.once(helpers_1.FLOOR_REGISTRY_UPDATED, done);
25
+ event.once(FLOOR_REGISTRY_UPDATED, done);
32
26
  await hass.socket.sendMessage({
33
27
  aliases: [],
34
28
  type: "config/floor_registry/create",
@@ -39,7 +33,7 @@ function Floor({ hass, config, context, event, logger, lifecycle, }) {
39
33
  current: [],
40
34
  async delete(floor_id) {
41
35
  return await new Promise(async (done) => {
42
- event.once(helpers_1.FLOOR_REGISTRY_UPDATED, done);
36
+ event.once(FLOOR_REGISTRY_UPDATED, done);
43
37
  await hass.socket.sendMessage({
44
38
  floor_id,
45
39
  type: "config/floor_registry/delete",
@@ -53,7 +47,7 @@ function Floor({ hass, config, context, event, logger, lifecycle, }) {
53
47
  },
54
48
  async update(details) {
55
49
  return await new Promise(async (done) => {
56
- event.once(helpers_1.FLOOR_REGISTRY_UPDATED, done);
50
+ event.once(FLOOR_REGISTRY_UPDATED, done);
57
51
  await hass.socket.sendMessage({
58
52
  type: "config/floor_registry/update",
59
53
  ...details,
@@ -1 +1 @@
1
- {"version":3,"file":"floor.extension.js","sourceRoot":"","sources":["../../src/extensions/floor.extension.ts"],"names":[],"mappings":";;AAUA,sBAmEC;AA7ED,gDAAiE;AAGjE,wCAKoB;AAEpB,SAAgB,KAAK,CAAC,EACpB,IAAI,EACJ,MAAM,EACN,OAAO,EACP,KAAK,EACL,MAAM,EACN,SAAS,GACM;IACf,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;QAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YACrE,OAAO;QACT,CAAC;QACD,IAAI,OAAO,GAAG,IAAI,OAAO,CAAO,KAAK,EAAC,IAAI,EAAC,EAAE;YAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAC7C,OAAO,GAAG,SAAS,CAAC;YACpB,IAAI,EAAE,CAAC;QACT,CAAC,CAAC,CAAC;QACH,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,OAAO,IAAI,CAAC,MAAM,OAAO,CAAC,EAAE,wBAAc,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QACpB,OAAO;QACP,UAAU,EAAE,wBAAwB;QACpC,KAAK,CAAC,IAAI;YACR,MAAM,IAAA,eAAQ,EAAC,gCAAsB,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACtE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAC7C,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,gCAAsB,CAAC,CAAC;QACrC,CAAC;KACF,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,CAAC,MAAM,CAAC,OAAoB;YAC/B,OAAO,MAAM,IAAI,OAAO,CAAO,KAAK,EAAC,IAAI,EAAC,EAAE;gBAC1C,KAAK,CAAC,IAAI,CAAC,gCAAsB,EAAE,IAAI,CAAC,CAAC;gBACzC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;oBAC5B,OAAO,EAAE,EAAE;oBACX,IAAI,EAAE,8BAA8B;oBACpC,GAAG,OAAO;iBACX,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,EAAoB;QAC7B,KAAK,CAAC,MAAM,CAAC,QAAkB;YAC7B,OAAO,MAAM,IAAI,OAAO,CAAO,KAAK,EAAC,IAAI,EAAC,EAAE;gBAC1C,KAAK,CAAC,IAAI,CAAC,gCAAsB,EAAE,IAAI,CAAC,CAAC;gBACzC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;oBAC5B,QAAQ;oBACR,IAAI,EAAE,8BAA8B;iBACrC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,IAAI;YACR,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAiB;gBACnD,IAAI,EAAE,4BAA4B;aACnC,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,OAAqB;YAChC,OAAO,MAAM,IAAI,OAAO,CAAO,KAAK,EAAC,IAAI,EAAC,EAAE;gBAC1C,KAAK,CAAC,IAAI,CAAC,gCAAsB,EAAE,IAAI,CAAC,CAAC;gBACzC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;oBAC5B,IAAI,EAAE,8BAA8B;oBACpC,GAAG,OAAO;iBACX,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"floor.extension.js","sourceRoot":"","sources":["../../src/extensions/floor.extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,uBAAuB,CAAC;AAGjE,OAAO,EACL,cAAc,EACd,sBAAsB,GAIvB,MAAM,YAAY,CAAC;AAEpB,MAAM,UAAU,KAAK,CAAC,EACpB,IAAI,EACJ,MAAM,EACN,OAAO,EACP,KAAK,EACL,MAAM,EACN,SAAS,GACM;IACf,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;QAC/B,IAAI,OAAO,GAAG,IAAI,OAAO,CAAO,KAAK,EAAC,IAAI,EAAC,EAAE;YAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAC7C,OAAO,GAAG,SAAS,CAAC;YACpB,IAAI,EAAE,CAAC;QACT,CAAC,CAAC,CAAC;QACH,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,OAAO,IAAI,CAAC,MAAM,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC;QAE1E,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YACpB,OAAO;YACP,UAAU,EAAE,wBAAwB;YACpC,KAAK,CAAC,IAAI;gBACR,MAAM,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBACtE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC7C,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBACvC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACrC,CAAC;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,CAAC,MAAM,CAAC,OAAoB;YAC/B,OAAO,MAAM,IAAI,OAAO,CAAO,KAAK,EAAC,IAAI,EAAC,EAAE;gBAC1C,KAAK,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;gBACzC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;oBAC5B,OAAO,EAAE,EAAE;oBACX,IAAI,EAAE,8BAA8B;oBACpC,GAAG,OAAO;iBACX,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,EAAoB;QAC7B,KAAK,CAAC,MAAM,CAAC,QAAkB;YAC7B,OAAO,MAAM,IAAI,OAAO,CAAO,KAAK,EAAC,IAAI,EAAC,EAAE;gBAC1C,KAAK,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;gBACzC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;oBAC5B,QAAQ;oBACR,IAAI,EAAE,8BAA8B;iBACrC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,IAAI;YACR,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAiB;gBACnD,IAAI,EAAE,4BAA4B;aACnC,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,OAAqB;YAChC,OAAO,MAAM,IAAI,OAAO,CAAO,KAAK,EAAC,IAAI,EAAC,EAAE;gBAC1C,KAAK,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;gBACzC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;oBAC5B,IAAI,EAAE,8BAA8B;oBACpC,GAAG,OAAO;iBACX,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,20 +1,17 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.IDByExtension = IDByExtension;
4
- const core_1 = require("@digital-alchemy/core");
5
- const process = (raw, domains) => {
6
- if (!core_1.is.empty(domains)) {
7
- raw = raw.filter(entity => core_1.is.domain(entity, domains));
1
+ import { is } from "@digital-alchemy/core";
2
+ const check = (raw, domains) => {
3
+ if (!is.empty(domains)) {
4
+ raw = raw.filter(entity => is.domain(entity, domains));
8
5
  }
9
6
  return raw;
10
7
  };
11
- function IDByExtension({ hass, logger }) {
12
- // * label
8
+ export function IDByExtension({ hass, logger }) {
9
+ // * byDomain
13
10
  function byDomain(domain) {
14
11
  const MASTER_STATE = hass.entity._masterState();
15
12
  return Object.keys(MASTER_STATE[domain] ?? {}).map(id => `${domain}.${id}`);
16
13
  }
17
- // #MARK: byUniqueId
14
+ // * unique_id
18
15
  function unique_id(unique_id) {
19
16
  hass.entity.warnEarly("byUniqueId");
20
17
  const entity = hass.entity.registry.current.find(i => i.unique_id === unique_id);
@@ -27,7 +24,7 @@ function IDByExtension({ hass, logger }) {
27
24
  // * label
28
25
  function label(label, ...domains) {
29
26
  hass.entity.warnEarly("label");
30
- return process(hass.entity.registry.current
27
+ return check(hass.entity.registry.current
31
28
  .filter(i => i.labels.includes(label))
32
29
  .map(i => i.entity_id), domains);
33
30
  }
@@ -39,21 +36,19 @@ function IDByExtension({ hass, logger }) {
39
36
  .filter(i => i.area_id === area)
40
37
  .map(i => i.entity_id);
41
38
  // identify devices
42
- const devices = new Set(hass.device.current
43
- .filter(device => device.area_id === area)
44
- .map(i => i.id));
39
+ const devices = new Set(hass.device.current.filter(device => device.area_id === area).map(i => i.id));
45
40
  // extract entities associated with device, that have not been assigned to a room
46
41
  const fromDevice = hass.entity.registry.current
47
- .filter(entity => devices.has(entity.device_id) && core_1.is.empty(entity.area_id))
42
+ .filter(entity => devices.has(entity.device_id) && is.empty(entity.area_id))
48
43
  .map(i => i.entity_id);
49
- return process(
44
+ return check(
50
45
  // merge lists
51
- core_1.is.unique([...fromEntity, ...fromDevice]), domains);
46
+ is.unique([...fromEntity, ...fromDevice]), domains);
52
47
  }
53
48
  // * device
54
49
  function device(device, ...domains) {
55
50
  hass.entity.warnEarly("device");
56
- return process(hass.entity.registry.current
51
+ return check(hass.entity.registry.current
57
52
  .filter(i => i.device_id === device)
58
53
  .map(i => i.entity_id), domains);
59
54
  }
@@ -61,14 +56,14 @@ function IDByExtension({ hass, logger }) {
61
56
  function floor(floor, ...domains) {
62
57
  hass.entity.warnEarly("floor");
63
58
  const areas = new Set(hass.area.current.filter(i => i.floor_id === floor).map(i => i.area_id));
64
- return process(hass.entity.registry.current
59
+ return check(hass.entity.registry.current
65
60
  .filter(i => areas.has(i.area_id))
66
61
  .map(i => i.entity_id), domains);
67
62
  }
68
63
  // * platform
69
64
  function platform(platform, ...domains) {
70
65
  hass.entity.warnEarly("platform");
71
- return process(hass.entity.registry.current
66
+ return check(hass.entity.registry.current
72
67
  .filter(i => i.platform === platform)
73
68
  .map(i => i.entity_id), domains);
74
69
  }
@@ -1 +1 @@
1
- {"version":3,"file":"id-by.extension.js","sourceRoot":"","sources":["../../src/extensions/id-by.extension.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"id-by.extension.js","sourceRoot":"","sources":["../../src/extensions/id-by.extension.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ export * from "./events.extension";
8
8
  export * from "./fetch-api.extension";
9
9
  export * from "./floor.extension";
10
10
  export * from "./id-by.extension";
11
+ export * from "./internal.extension";
11
12
  export * from "./label.extension";
12
13
  export * from "./reference.extension";
13
14
  export * from "./registry.extension";
@@ -1,19 +1,17 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./area.extension"), exports);
5
- tslib_1.__exportStar(require("./backup.extension"), exports);
6
- tslib_1.__exportStar(require("./call-proxy.extension"), exports);
7
- tslib_1.__exportStar(require("./config.extension"), exports);
8
- tslib_1.__exportStar(require("./device.extension"), exports);
9
- tslib_1.__exportStar(require("./entity.extension"), exports);
10
- tslib_1.__exportStar(require("./events.extension"), exports);
11
- tslib_1.__exportStar(require("./fetch-api.extension"), exports);
12
- tslib_1.__exportStar(require("./floor.extension"), exports);
13
- tslib_1.__exportStar(require("./id-by.extension"), exports);
14
- tslib_1.__exportStar(require("./label.extension"), exports);
15
- tslib_1.__exportStar(require("./reference.extension"), exports);
16
- tslib_1.__exportStar(require("./registry.extension"), exports);
17
- tslib_1.__exportStar(require("./websocket-api.extension"), exports);
18
- tslib_1.__exportStar(require("./zone.extension"), exports);
1
+ export * from "./area.extension";
2
+ export * from "./backup.extension";
3
+ export * from "./call-proxy.extension";
4
+ export * from "./config.extension";
5
+ export * from "./device.extension";
6
+ export * from "./entity.extension";
7
+ export * from "./events.extension";
8
+ export * from "./fetch-api.extension";
9
+ export * from "./floor.extension";
10
+ export * from "./id-by.extension";
11
+ export * from "./internal.extension";
12
+ export * from "./label.extension";
13
+ export * from "./reference.extension";
14
+ export * from "./registry.extension";
15
+ export * from "./websocket-api.extension";
16
+ export * from "./zone.extension";
19
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/extensions/index.ts"],"names":[],"mappings":";;;AAAA,2DAAiC;AACjC,6DAAmC;AACnC,iEAAuC;AACvC,6DAAmC;AACnC,6DAAmC;AACnC,6DAAmC;AACnC,6DAAmC;AACnC,gEAAsC;AACtC,4DAAkC;AAClC,4DAAkC;AAClC,4DAAkC;AAClC,gEAAsC;AACtC,+DAAqC;AACrC,oEAA0C;AAC1C,2DAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/extensions/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { TServiceParams } from "@digital-alchemy/core";
2
+ import { DownloadOptions, FetchArguments, FetcherOptions, TFetchBody } from "../helpers";
3
+ export declare function FetchInternals({ logger, context: parentContext }: TServiceParams): ({ headers: base_headers, baseUrl: base_url, context: logContext }: FetcherOptions) => {
4
+ base_headers: Record<string, string>;
5
+ base_url: string;
6
+ download: ({ destination, body, headers, method, ...fetchWith }: DownloadOptions) => Promise<void>;
7
+ exec: <T, BODY extends TFetchBody = undefined>({ body, headers, method, process, ...fetchWith }: Partial<FetchArguments<BODY>>) => Promise<T>;
8
+ /**
9
+ * @deprecated set base_url directly
10
+ */
11
+ setBaseUrl: (url: string) => string;
12
+ /**
13
+ * @deprecated set base_headers directly
14
+ */
15
+ setHeaders: (headers: Record<string, string>) => Record<string, string>;
16
+ };
17
+ export type TFetch = <T, BODY extends object = object>(fetchWith: Partial<FetchArguments<BODY>>) => Promise<T>;
18
+ export type TDownload = (fetchWith: DownloadOptions) => Promise<void>;
@@ -0,0 +1,102 @@
1
+ import { FIRST, InternalError, is } from "@digital-alchemy/core";
2
+ import { createWriteStream } from "fs";
3
+ import { pipeline } from "stream";
4
+ import { promisify } from "util";
5
+ import { buildFilterString, } from "../helpers";
6
+ const streamPipeline = promisify(pipeline);
7
+ export function FetchInternals({ logger, context: parentContext }) {
8
+ return ({ headers: base_headers, baseUrl: base_url, context: logContext }) => {
9
+ const capabilities = [];
10
+ if (!is.empty(capabilities)) {
11
+ logger.trace({ capabilities, name: logContext }, `initialized fetcher`);
12
+ }
13
+ function checkForHttpErrors(maybeError) {
14
+ if (is.object(maybeError) &&
15
+ maybeError !== null &&
16
+ is.number(maybeError.statusCode) &&
17
+ is.string(maybeError.error)) {
18
+ // Log the error if needed
19
+ logger.error({ error: maybeError, name: logContext }, maybeError.message);
20
+ // Throw a FetchRequestError
21
+ // throw new FetchRequestError(maybeError);
22
+ throw new InternalError(logContext || parentContext, maybeError.error, maybeError.message);
23
+ }
24
+ return maybeError;
25
+ }
26
+ // #MARK: fetchHandleResponse
27
+ async function fetchHandleResponse(process, response) {
28
+ if (process === false || process === "raw") {
29
+ return response;
30
+ }
31
+ const text = await response.text();
32
+ if (process === "text") {
33
+ return text;
34
+ }
35
+ if (!["{", "["].includes(text.charAt(FIRST))) {
36
+ if (["OK"].includes(text)) {
37
+ logger.debug({ name: logContext, text }, "full response text");
38
+ }
39
+ else {
40
+ // It's probably a coding error error, and not something a user did.
41
+ // Will try to keep the array up to date if any other edge cases pop up
42
+ logger.warn({ name: logContext, text }, `unexpected api Response`);
43
+ }
44
+ return text;
45
+ }
46
+ const parsed = JSON.parse(text);
47
+ return checkForHttpErrors(parsed);
48
+ }
49
+ function fetchCreateUrl({ rawUrl, url, ...fetchWith }) {
50
+ let out = url || "";
51
+ if (!rawUrl) {
52
+ const base = fetchWith.baseUrl || fetchWrapper.base_url;
53
+ out = base + url;
54
+ }
55
+ if (!is.empty(fetchWith.params)) {
56
+ out = `${out}?${buildFilterString(fetchWith)}`;
57
+ }
58
+ return out;
59
+ }
60
+ // #MARK: execFetch
61
+ async function exec({ body, headers = {}, method = "get", process, ...fetchWith }) {
62
+ const contentType = is.object(body) ? { "Content-Type": "application/json" } : {};
63
+ const result = await global.fetch(fetchCreateUrl(fetchWith), {
64
+ body: is.object(body) ? JSON.stringify(body) : body,
65
+ headers: {
66
+ ...contentType,
67
+ ...fetchWrapper.base_headers,
68
+ ...headers,
69
+ },
70
+ method,
71
+ });
72
+ return await fetchHandleResponse(process, result);
73
+ }
74
+ async function download({ destination, body, headers = {}, method = "get", ...fetchWith }) {
75
+ const url = await fetchCreateUrl(fetchWith);
76
+ const response = await fetch(url, {
77
+ body: is.object(body) ? JSON.stringify(body) : body,
78
+ headers: { ...fetchWrapper.base_headers, ...headers },
79
+ method,
80
+ });
81
+ const stream = createWriteStream(destination);
82
+ await streamPipeline(response.body, stream);
83
+ }
84
+ // #MARK: return object
85
+ const fetchWrapper = {
86
+ base_headers,
87
+ base_url,
88
+ download,
89
+ exec,
90
+ /**
91
+ * @deprecated set base_url directly
92
+ */
93
+ setBaseUrl: (url) => (fetchWrapper.base_url = url),
94
+ /**
95
+ * @deprecated set base_headers directly
96
+ */
97
+ setHeaders: (headers) => (fetchWrapper.base_headers = headers),
98
+ };
99
+ return fetchWrapper;
100
+ };
101
+ }
102
+ //# sourceMappingURL=internal.extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.extension.js","sourceRoot":"","sources":["../../src/extensions/internal.extension.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,3 @@
1
1
  import { TServiceParams } from "@digital-alchemy/core";
2
- import { TLabelId } from "../dynamic";
3
- import { LabelDefinition, LabelOptions } from "../helpers";
4
- export declare function Label({ hass, config, logger, lifecycle, event, context, }: TServiceParams): {
5
- create: (details: LabelOptions) => Promise<void>;
6
- current: LabelDefinition[];
7
- delete: (label_id: TLabelId) => Promise<void>;
8
- list: () => Promise<LabelDefinition[]>;
9
- update: (details: LabelDefinition) => Promise<void>;
10
- };
2
+ import { HassLabelService } from "../helpers";
3
+ export declare function Label({ hass, config, logger, lifecycle, event, context, }: TServiceParams): HassLabelService;
@@ -1,33 +1,27 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Label = Label;
4
- const core_1 = require("@digital-alchemy/core");
5
- const helpers_1 = require("../helpers");
6
- function Label({ hass, config, logger, lifecycle, event, context, }) {
1
+ import { debounce } from "@digital-alchemy/core";
2
+ import { EARLY_ON_READY, LABEL_REGISTRY_UPDATED, } from "../helpers";
3
+ export function Label({ hass, config, logger, lifecycle, event, context, }) {
7
4
  hass.socket.onConnect(async () => {
8
- if (!config.hass.AUTO_CONNECT_SOCKET || !config.hass.MANAGE_REGISTRY) {
9
- return;
10
- }
11
5
  let loading = new Promise(async (done) => {
12
6
  hass.label.current = await hass.label.list();
13
7
  loading = undefined;
14
8
  done();
15
9
  });
16
- lifecycle.onReady(async () => loading && (await loading), helpers_1.EARLY_ON_READY);
17
- });
18
- hass.socket.subscribe({
19
- context,
20
- event_type: "label_registry_updated",
21
- async exec() {
22
- await (0, core_1.debounce)(helpers_1.LABEL_REGISTRY_UPDATED, config.hass.EVENT_DEBOUNCE_MS);
23
- hass.label.current = await hass.label.list();
24
- logger.debug(`label registry updated`);
25
- event.emit(helpers_1.LABEL_REGISTRY_UPDATED);
26
- },
10
+ lifecycle.onReady(async () => loading && (await loading), EARLY_ON_READY);
11
+ hass.socket.subscribe({
12
+ context,
13
+ event_type: "label_registry_updated",
14
+ async exec() {
15
+ await debounce(LABEL_REGISTRY_UPDATED, config.hass.EVENT_DEBOUNCE_MS);
16
+ hass.label.current = await hass.label.list();
17
+ logger.debug(`label registry updated`);
18
+ event.emit(LABEL_REGISTRY_UPDATED);
19
+ },
20
+ });
27
21
  });
28
22
  async function create(details) {
29
23
  return await new Promise(async (done) => {
30
- event.once(helpers_1.LABEL_REGISTRY_UPDATED, done);
24
+ event.once(LABEL_REGISTRY_UPDATED, done);
31
25
  await hass.socket.sendMessage({
32
26
  type: "config/label_registry/create",
33
27
  ...details,
@@ -36,7 +30,7 @@ function Label({ hass, config, logger, lifecycle, event, context, }) {
36
30
  }
37
31
  async function deleteLabel(label_id) {
38
32
  return await new Promise(async (done) => {
39
- event.once(helpers_1.LABEL_REGISTRY_UPDATED, done);
33
+ event.once(LABEL_REGISTRY_UPDATED, done);
40
34
  await hass.socket.sendMessage({
41
35
  label_id,
42
36
  type: "config/label_registry/delete",
@@ -50,7 +44,7 @@ function Label({ hass, config, logger, lifecycle, event, context, }) {
50
44
  }
51
45
  async function update(details) {
52
46
  return await new Promise(async (done) => {
53
- event.once(helpers_1.LABEL_REGISTRY_UPDATED, done);
47
+ event.once(LABEL_REGISTRY_UPDATED, done);
54
48
  await hass.socket.sendMessage({
55
49
  type: "config/label_registry/update",
56
50
  ...details,
@@ -1 +1 @@
1
- {"version":3,"file":"label.extension.js","sourceRoot":"","sources":["../../src/extensions/label.extension.ts"],"names":[],"mappings":";;AAUA,sBA0EC;AApFD,gDAAiE;AAGjE,wCAKoB;AAEpB,SAAgB,KAAK,CAAC,EACpB,IAAI,EACJ,MAAM,EACN,MAAM,EACN,SAAS,EACT,KAAK,EACL,OAAO,GACQ;IACf,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;QAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YACrE,OAAO;QACT,CAAC;QACD,IAAI,OAAO,GAAG,IAAI,OAAO,CAAO,KAAK,EAAC,IAAI,EAAC,EAAE;YAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAC7C,OAAO,GAAG,SAAS,CAAC;YACpB,IAAI,EAAE,CAAC;QACT,CAAC,CAAC,CAAC;QACH,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,OAAO,IAAI,CAAC,MAAM,OAAO,CAAC,EAAE,wBAAc,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;QACpB,OAAO;QACP,UAAU,EAAE,wBAAwB;QACpC,KAAK,CAAC,IAAI;YACR,MAAM,IAAA,eAAQ,EAAC,gCAAsB,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;YACtE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAC7C,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,gCAAsB,CAAC,CAAC;QACrC,CAAC;KACF,CAAC,CAAC;IAEH,KAAK,UAAU,MAAM,CAAC,OAAqB;QACzC,OAAO,MAAM,IAAI,OAAO,CAAO,KAAK,EAAC,IAAI,EAAC,EAAE;YAC1C,KAAK,CAAC,IAAI,CAAC,gCAAsB,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC5B,IAAI,EAAE,8BAA8B;gBACpC,GAAG,OAAO;aACX,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,WAAW,CAAC,QAAkB;QAC3C,OAAO,MAAM,IAAI,OAAO,CAAO,KAAK,EAAC,IAAI,EAAC,EAAE;YAC1C,KAAK,CAAC,IAAI,CAAC,gCAAsB,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC5B,QAAQ;gBACR,IAAI,EAAE,8BAA8B;aACrC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,IAAI;QACjB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAoB;YACtD,IAAI,EAAE,4BAA4B;SACnC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,MAAM,CAAC,OAAwB;QAC5C,OAAO,MAAM,IAAI,OAAO,CAAO,KAAK,EAAC,IAAI,EAAC,EAAE;YAC1C,KAAK,CAAC,IAAI,CAAC,gCAAsB,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC5B,IAAI,EAAE,8BAA8B;gBACpC,GAAG,OAAO;aACX,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,MAAM;QACN,OAAO,EAAE,EAAuB;QAChC,MAAM,EAAE,WAAW;QACnB,IAAI;QACJ,MAAM;KACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"label.extension.js","sourceRoot":"","sources":["../../src/extensions/label.extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,uBAAuB,CAAC;AAGjE,OAAO,EACL,cAAc,EAEd,sBAAsB,GAGvB,MAAM,YAAY,CAAC;AAEpB,MAAM,UAAU,KAAK,CAAC,EACpB,IAAI,EACJ,MAAM,EACN,MAAM,EACN,SAAS,EACT,KAAK,EACL,OAAO,GACQ;IACf,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE;QAC/B,IAAI,OAAO,GAAG,IAAI,OAAO,CAAO,KAAK,EAAC,IAAI,EAAC,EAAE;YAC3C,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAC7C,OAAO,GAAG,SAAS,CAAC;YACpB,IAAI,EAAE,CAAC;QACT,CAAC,CAAC,CAAC;QACH,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,OAAO,IAAI,CAAC,MAAM,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC;QAE1E,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YACpB,OAAO;YACP,UAAU,EAAE,wBAAwB;YACpC,KAAK,CAAC,IAAI;gBACR,MAAM,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBACtE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC7C,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;gBACvC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACrC,CAAC;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,KAAK,UAAU,MAAM,CAAC,OAAqB;QACzC,OAAO,MAAM,IAAI,OAAO,CAAO,KAAK,EAAC,IAAI,EAAC,EAAE;YAC1C,KAAK,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC5B,IAAI,EAAE,8BAA8B;gBACpC,GAAG,OAAO;aACX,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,WAAW,CAAC,QAAkB;QAC3C,OAAO,MAAM,IAAI,OAAO,CAAO,KAAK,EAAC,IAAI,EAAC,EAAE;YAC1C,KAAK,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC5B,QAAQ;gBACR,IAAI,EAAE,8BAA8B;aACrC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,IAAI;QACjB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAoB;YACtD,IAAI,EAAE,4BAA4B;SACnC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,MAAM,CAAC,OAAwB;QAC5C,OAAO,MAAM,IAAI,OAAO,CAAO,KAAK,EAAC,IAAI,EAAC,EAAE;YAC1C,KAAK,CAAC,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC5B,IAAI,EAAE,8BAA8B;gBACpC,GAAG,OAAO;aACX,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,MAAM;QACN,OAAO,EAAE,EAAuB;QAChC,MAAM,EAAE,WAAW;QACnB,IAAI;QACJ,MAAM;KACP,CAAC;AACJ,CAAC"}
@@ -1,13 +1,3 @@
1
1
  import { TServiceParams } from "@digital-alchemy/core";
2
- import { TAreaId, TDeviceId, TFloorId, TLabelId, TPlatformId, TRawDomains, TUniqueId, TUniqueIDMapping } from "../dynamic";
3
- import { ANY_ENTITY, ByIdProxy, PICK_ENTITY, PICK_FROM_AREA, PICK_FROM_DEVICE, PICK_FROM_FLOOR, PICK_FROM_LABEL, PICK_FROM_PLATFORM } from "../helpers";
4
- export declare function ReferenceExtension({ hass, logger, internal, event, }: TServiceParams): {
5
- area: <AREA extends TAreaId, DOMAINS extends TRawDomains = TRawDomains>(area: AREA, ...domains: DOMAINS[]) => ByIdProxy<PICK_FROM_AREA<AREA, DOMAINS>>[];
6
- device: <DEVICE extends TDeviceId, DOMAINS extends TRawDomains = TRawDomains>(device: DEVICE, ...domains: DOMAINS[]) => ByIdProxy<PICK_FROM_DEVICE<DEVICE, DOMAINS>>[];
7
- domain: <DOMAIN extends TRawDomains = TRawDomains>(domain: DOMAIN) => ByIdProxy<PICK_ENTITY<DOMAIN>>[];
8
- floor: <FLOOR extends TFloorId, DOMAINS extends TRawDomains = TRawDomains>(floor: FLOOR, ...domains: DOMAINS[]) => ByIdProxy<PICK_FROM_FLOOR<FLOOR, DOMAINS>>[];
9
- id: <ENTITY_ID extends ANY_ENTITY>(entity_id: ENTITY_ID) => ByIdProxy<ENTITY_ID>;
10
- label: <LABEL extends TLabelId, DOMAINS extends TRawDomains = TRawDomains>(label: LABEL, ...domains: DOMAINS[]) => ByIdProxy<PICK_FROM_LABEL<LABEL, DOMAINS>>[];
11
- platform: <PLATFORM extends TPlatformId, DOMAINS extends TRawDomains = TRawDomains>(platform: PLATFORM, ...domains: DOMAINS[]) => ByIdProxy<PICK_FROM_PLATFORM<PLATFORM, DOMAINS>>[];
12
- unique_id: <UNIQUE_ID extends TUniqueId, ENTITY_ID extends Extract<TUniqueIDMapping[UNIQUE_ID], ANY_ENTITY> = Extract<TUniqueIDMapping[UNIQUE_ID], import("..").TRawEntityIds>>(unique_id: UNIQUE_ID) => ByIdProxy<ENTITY_ID>;
13
- };
2
+ import { HassReferenceService } from "../helpers";
3
+ export declare function ReferenceExtension({ hass, logger, internal, event, }: TServiceParams): HassReferenceService;
@@ -1,13 +1,8 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ReferenceExtension = ReferenceExtension;
4
- const tslib_1 = require("tslib");
5
- const core_1 = require("@digital-alchemy/core");
6
- const dayjs_1 = tslib_1.__importDefault(require("dayjs"));
7
- const validator_1 = require("validator");
8
- const __1 = require("..");
9
- const helpers_1 = require("../helpers");
10
- function ReferenceExtension({ hass, logger, internal, event, }) {
1
+ import { DOWN, is, NONE, sleep, UP } from "@digital-alchemy/core";
2
+ import dayjs from "dayjs";
3
+ import { SERVICE_LIST_UPDATED } from "..";
4
+ import { domain, } from "../helpers";
5
+ export function ReferenceExtension({ hass, logger, internal, event, }) {
11
6
  const ENTITY_PROXIES = new Map();
12
7
  // #MARK:proxyGetLogic
13
8
  function proxyGetLogic(entity, property) {
@@ -22,10 +17,10 @@ function ReferenceExtension({ hass, logger, internal, event, }) {
22
17
  }
23
18
  if (property.startsWith("last")) {
24
19
  const value = internal.utils.object.get(current, property);
25
- return (0, dayjs_1.default)(value);
20
+ return dayjs(value);
26
21
  }
27
22
  if (property === "state") {
28
- if ((0, helpers_1.domain)(entity) === "sensor" && (0, validator_1.isNumeric)(current.state)) {
23
+ if (domain(entity) === "sensor" && is.number(Number(current.state))) {
29
24
  return Number(current.state);
30
25
  }
31
26
  return current.state;
@@ -34,12 +29,12 @@ function ReferenceExtension({ hass, logger, internal, event, }) {
34
29
  }
35
30
  // #MARK: byId
36
31
  function byId(entity_id) {
37
- const entity_domain = (0, helpers_1.domain)(entity_id);
32
+ const entity_domain = domain(entity_id);
38
33
  if (!ENTITY_PROXIES.has(entity_id)) {
39
34
  const { ...thing } = hass.entity.getCurrentState(entity_id);
40
35
  let loaded = false;
41
36
  function keys() {
42
- const entityDomain = (0, helpers_1.domain)(entity_id);
37
+ const entityDomain = domain(entity_id);
43
38
  return [
44
39
  "attributes",
45
40
  "entity_id",
@@ -56,7 +51,7 @@ function ReferenceExtension({ hass, logger, internal, event, }) {
56
51
  .getServices()
57
52
  .filter(({ domain }) => domain === entityDomain)
58
53
  .flatMap(i => Object.keys(i.services))
59
- .sort((a, b) => (a > b ? core_1.UP : core_1.DOWN)),
54
+ .sort((a, b) => (a > b ? UP : DOWN)),
60
55
  ];
61
56
  }
62
57
  function appendKeys(force = false) {
@@ -69,15 +64,16 @@ function ReferenceExtension({ hass, logger, internal, event, }) {
69
64
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
70
65
  // @ts-ignore
71
66
  keys().forEach(i => (thing[i] ??= () => { }));
72
- if (!core_1.is.empty(hass.configure.getServices())) {
67
+ if (!is.empty(hass.configure.getServices())) {
73
68
  loaded = true;
74
69
  }
75
70
  }
76
- event.on(__1.SERVICE_LIST_UPDATED, () => appendKeys(true));
71
+ event.on(SERVICE_LIST_UPDATED, () => appendKeys(true));
77
72
  ENTITY_PROXIES.set(entity_id,
78
73
  // just because you can't do generics properly....
79
74
  new Proxy(thing, {
80
75
  // things that shouldn't be needed: this extract
76
+ // eslint-disable-next-line sonarjs/function-return-type
81
77
  get: (_, property) => {
82
78
  switch (property) {
83
79
  // * onUpdate
@@ -125,8 +121,8 @@ function ReferenceExtension({ hass, logger, internal, event, }) {
125
121
  }
126
122
  };
127
123
  event.once(entity_id, complete);
128
- if (core_1.is.number(timeout) && timeout > core_1.NONE) {
129
- await (0, core_1.sleep)(timeout);
124
+ if (is.number(timeout) && timeout > NONE) {
125
+ await sleep(timeout);
130
126
  if (done) {
131
127
  logger.debug({ entity_id, name: "nextState", timeout }, "timed out");
132
128
  done(undefined);
@@ -155,8 +151,8 @@ function ReferenceExtension({ hass, logger, internal, event, }) {
155
151
  }
156
152
  };
157
153
  event.on(entity_id, complete);
158
- if (core_1.is.number(timeout) && timeout > core_1.NONE) {
159
- await (0, core_1.sleep)(timeout);
154
+ if (is.number(timeout) && timeout > NONE) {
155
+ await sleep(timeout);
160
156
  if (done) {
161
157
  logger.debug({ entity_id, name: "waitForState", timeout }, "timed out");
162
158
  done(undefined);
@@ -199,7 +195,7 @@ function ReferenceExtension({ hass, logger, internal, event, }) {
199
195
  }
200
196
  // * attributes
201
197
  if (property === "attributes") {
202
- if (!core_1.is.object(value)) {
198
+ if (!is.object(value)) {
203
199
  logger.error(`can only provide objects as attributes`);
204
200
  return false;
205
201
  }
@@ -225,9 +221,7 @@ function ReferenceExtension({ hass, logger, internal, event, }) {
225
221
  floor: (floor, ...domains) => hass.idBy.floor(floor, ...domains).map(id => byId(id)),
226
222
  id: byId,
227
223
  label: (label, ...domains) => hass.idBy.label(label, ...domains).map(id => byId(id)),
228
- platform: (platform, ...domains) => hass.idBy
229
- .platform(platform, ...domains)
230
- .map(id => byId(id)),
224
+ platform: (platform, ...domains) => hass.idBy.platform(platform, ...domains).map(id => byId(id)),
231
225
  unique_id: (unique_id) => {
232
226
  const id = hass.idBy.unique_id(unique_id);
233
227
  if (!id) {