@digital-alchemy/core 0.1.0

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 (303) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +47 -0
  3. package/dist/automation/automation.module.d.ts +61 -0
  4. package/dist/automation/automation.module.js +70 -0
  5. package/dist/automation/automation.module.js.map +1 -0
  6. package/dist/automation/extensions/aggressive-scenes.extension.d.ts +22 -0
  7. package/dist/automation/extensions/aggressive-scenes.extension.js +125 -0
  8. package/dist/automation/extensions/aggressive-scenes.extension.js.map +1 -0
  9. package/dist/automation/extensions/circadian.extension.d.ts +11 -0
  10. package/dist/automation/extensions/circadian.extension.js +87 -0
  11. package/dist/automation/extensions/circadian.extension.js.map +1 -0
  12. package/dist/automation/extensions/index.d.ts +7 -0
  13. package/dist/automation/extensions/index.js +11 -0
  14. package/dist/automation/extensions/index.js.map +1 -0
  15. package/dist/automation/extensions/light-manager.extension.d.ts +26 -0
  16. package/dist/automation/extensions/light-manager.extension.js +260 -0
  17. package/dist/automation/extensions/light-manager.extension.js.map +1 -0
  18. package/dist/automation/extensions/managed-switch.extension.d.ts +3 -0
  19. package/dist/automation/extensions/managed-switch.extension.js +73 -0
  20. package/dist/automation/extensions/managed-switch.extension.js.map +1 -0
  21. package/dist/automation/extensions/room.extension.d.ts +11 -0
  22. package/dist/automation/extensions/room.extension.js +179 -0
  23. package/dist/automation/extensions/room.extension.js.map +1 -0
  24. package/dist/automation/extensions/sequence-matcher.extension.d.ts +3 -0
  25. package/dist/automation/extensions/sequence-matcher.extension.js +126 -0
  26. package/dist/automation/extensions/sequence-matcher.extension.js.map +1 -0
  27. package/dist/automation/extensions/solar-calc.extension.d.ts +20 -0
  28. package/dist/automation/extensions/solar-calc.extension.js +105 -0
  29. package/dist/automation/extensions/solar-calc.extension.js.map +1 -0
  30. package/dist/automation/helpers/events.helper.d.ts +33 -0
  31. package/dist/automation/helpers/events.helper.js +14 -0
  32. package/dist/automation/helpers/events.helper.js.map +1 -0
  33. package/dist/automation/helpers/index.d.ts +7 -0
  34. package/dist/automation/helpers/index.js +11 -0
  35. package/dist/automation/helpers/index.js.map +1 -0
  36. package/dist/automation/helpers/managed-switch.helper.d.ts +41 -0
  37. package/dist/automation/helpers/managed-switch.helper.js +3 -0
  38. package/dist/automation/helpers/managed-switch.helper.js.map +1 -0
  39. package/dist/automation/helpers/metrics.helper.d.ts +13 -0
  40. package/dist/automation/helpers/metrics.helper.js +30 -0
  41. package/dist/automation/helpers/metrics.helper.js.map +1 -0
  42. package/dist/automation/helpers/reftimes.helper.d.ts +54 -0
  43. package/dist/automation/helpers/reftimes.helper.js +33 -0
  44. package/dist/automation/helpers/reftimes.helper.js.map +1 -0
  45. package/dist/automation/helpers/scene.helper.d.ts +97 -0
  46. package/dist/automation/helpers/scene.helper.js +5 -0
  47. package/dist/automation/helpers/scene.helper.js.map +1 -0
  48. package/dist/automation/helpers/sequence.helper.d.ts +55 -0
  49. package/dist/automation/helpers/sequence.helper.js +3 -0
  50. package/dist/automation/helpers/sequence.helper.js.map +1 -0
  51. package/dist/automation/helpers/solar.helper.d.ts +3 -0
  52. package/dist/automation/helpers/solar.helper.js +262 -0
  53. package/dist/automation/helpers/solar.helper.js.map +1 -0
  54. package/dist/automation/index.d.ts +3 -0
  55. package/dist/automation/index.js +10 -0
  56. package/dist/automation/index.js.map +1 -0
  57. package/dist/boilerplate/extensions/cache.extension.d.ts +24 -0
  58. package/dist/boilerplate/extensions/cache.extension.js +96 -0
  59. package/dist/boilerplate/extensions/cache.extension.js.map +1 -0
  60. package/dist/boilerplate/extensions/configuration.extension.d.ts +23 -0
  61. package/dist/boilerplate/extensions/configuration.extension.js +98 -0
  62. package/dist/boilerplate/extensions/configuration.extension.js.map +1 -0
  63. package/dist/boilerplate/extensions/fetch.extension.d.ts +20 -0
  64. package/dist/boilerplate/extensions/fetch.extension.js +154 -0
  65. package/dist/boilerplate/extensions/fetch.extension.js.map +1 -0
  66. package/dist/boilerplate/extensions/index.d.ts +6 -0
  67. package/dist/boilerplate/extensions/index.js +10 -0
  68. package/dist/boilerplate/extensions/index.js.map +1 -0
  69. package/dist/boilerplate/extensions/logger.extension.d.ts +39 -0
  70. package/dist/boilerplate/extensions/logger.extension.js +159 -0
  71. package/dist/boilerplate/extensions/logger.extension.js.map +1 -0
  72. package/dist/boilerplate/extensions/scheduler.extension.d.ts +21 -0
  73. package/dist/boilerplate/extensions/scheduler.extension.js +117 -0
  74. package/dist/boilerplate/extensions/scheduler.extension.js.map +1 -0
  75. package/dist/boilerplate/extensions/wiring.extension.d.ts +101 -0
  76. package/dist/boilerplate/extensions/wiring.extension.js +452 -0
  77. package/dist/boilerplate/extensions/wiring.extension.js.map +1 -0
  78. package/dist/boilerplate/helpers/cache-memory.helper.d.ts +7 -0
  79. package/dist/boilerplate/helpers/cache-memory.helper.js +65 -0
  80. package/dist/boilerplate/helpers/cache-memory.helper.js.map +1 -0
  81. package/dist/boilerplate/helpers/cache-redis.helper.d.ts +7 -0
  82. package/dist/boilerplate/helpers/cache-redis.helper.js +69 -0
  83. package/dist/boilerplate/helpers/cache-redis.helper.js.map +1 -0
  84. package/dist/boilerplate/helpers/config-environment-loader.helper.d.ts +2 -0
  85. package/dist/boilerplate/helpers/config-environment-loader.helper.js +56 -0
  86. package/dist/boilerplate/helpers/config-environment-loader.helper.js.map +1 -0
  87. package/dist/boilerplate/helpers/config-file-loader.helper.d.ts +4 -0
  88. package/dist/boilerplate/helpers/config-file-loader.helper.js +87 -0
  89. package/dist/boilerplate/helpers/config-file-loader.helper.js.map +1 -0
  90. package/dist/boilerplate/helpers/config.helper.d.ts +102 -0
  91. package/dist/boilerplate/helpers/config.helper.js +32 -0
  92. package/dist/boilerplate/helpers/config.helper.js.map +1 -0
  93. package/dist/boilerplate/helpers/errors.helper.d.ts +39 -0
  94. package/dist/boilerplate/helpers/errors.helper.js +76 -0
  95. package/dist/boilerplate/helpers/errors.helper.js.map +1 -0
  96. package/dist/boilerplate/helpers/events.helper.d.ts +3 -0
  97. package/dist/boilerplate/helpers/events.helper.js +11 -0
  98. package/dist/boilerplate/helpers/events.helper.js.map +1 -0
  99. package/dist/boilerplate/helpers/fetch.helper.d.ts +170 -0
  100. package/dist/boilerplate/helpers/fetch.helper.js +173 -0
  101. package/dist/boilerplate/helpers/fetch.helper.js.map +1 -0
  102. package/dist/boilerplate/helpers/index.d.ts +12 -0
  103. package/dist/boilerplate/helpers/index.js +16 -0
  104. package/dist/boilerplate/helpers/index.js.map +1 -0
  105. package/dist/boilerplate/helpers/lifecycle.helper.d.ts +43 -0
  106. package/dist/boilerplate/helpers/lifecycle.helper.js +13 -0
  107. package/dist/boilerplate/helpers/lifecycle.helper.js.map +1 -0
  108. package/dist/boilerplate/helpers/metrics.helper.d.ts +73 -0
  109. package/dist/boilerplate/helpers/metrics.helper.js +141 -0
  110. package/dist/boilerplate/helpers/metrics.helper.js.map +1 -0
  111. package/dist/boilerplate/helpers/testing.helper.d.ts +13 -0
  112. package/dist/boilerplate/helpers/testing.helper.js +91 -0
  113. package/dist/boilerplate/helpers/testing.helper.js.map +1 -0
  114. package/dist/boilerplate/helpers/wiring.helper.d.ts +155 -0
  115. package/dist/boilerplate/helpers/wiring.helper.js +5 -0
  116. package/dist/boilerplate/helpers/wiring.helper.js.map +1 -0
  117. package/dist/boilerplate/index.d.ts +2 -0
  118. package/dist/boilerplate/index.js +6 -0
  119. package/dist/boilerplate/index.js.map +1 -0
  120. package/dist/gotify/extensions/application.extension.d.ts +13 -0
  121. package/dist/gotify/extensions/application.extension.js +52 -0
  122. package/dist/gotify/extensions/application.extension.js.map +1 -0
  123. package/dist/gotify/extensions/client.extension.d.ts +8 -0
  124. package/dist/gotify/extensions/client.extension.js +38 -0
  125. package/dist/gotify/extensions/client.extension.js.map +1 -0
  126. package/dist/gotify/extensions/fetch.extension.d.ts +2 -0
  127. package/dist/gotify/extensions/fetch.extension.js +14 -0
  128. package/dist/gotify/extensions/fetch.extension.js.map +1 -0
  129. package/dist/gotify/extensions/index.d.ts +4 -0
  130. package/dist/gotify/extensions/index.js +8 -0
  131. package/dist/gotify/extensions/index.js.map +1 -0
  132. package/dist/gotify/extensions/message.extension.d.ts +8 -0
  133. package/dist/gotify/extensions/message.extension.js +37 -0
  134. package/dist/gotify/extensions/message.extension.js.map +1 -0
  135. package/dist/gotify/gotify.module.d.ts +29 -0
  136. package/dist/gotify/gotify.module.js +33 -0
  137. package/dist/gotify/gotify.module.js.map +1 -0
  138. package/dist/gotify/helpers/api.d.ts +346 -0
  139. package/dist/gotify/helpers/api.js +14 -0
  140. package/dist/gotify/helpers/api.js.map +1 -0
  141. package/dist/gotify/helpers/events.helper.d.ts +6 -0
  142. package/dist/gotify/helpers/events.helper.js +5 -0
  143. package/dist/gotify/helpers/events.helper.js.map +1 -0
  144. package/dist/gotify/helpers/index.d.ts +2 -0
  145. package/dist/gotify/helpers/index.js +6 -0
  146. package/dist/gotify/helpers/index.js.map +1 -0
  147. package/dist/gotify/index.d.ts +3 -0
  148. package/dist/gotify/index.js +7 -0
  149. package/dist/gotify/index.js.map +1 -0
  150. package/dist/hass/dynamic.d.ts +1126 -0
  151. package/dist/hass/dynamic.js +153 -0
  152. package/dist/hass/dynamic.js.map +1 -0
  153. package/dist/hass/extensions/call-proxy.extension.d.ts +4 -0
  154. package/dist/hass/extensions/call-proxy.extension.js +88 -0
  155. package/dist/hass/extensions/call-proxy.extension.js.map +1 -0
  156. package/dist/hass/extensions/entity-manager.extension.d.ts +61 -0
  157. package/dist/hass/extensions/entity-manager.extension.js +214 -0
  158. package/dist/hass/extensions/entity-manager.extension.js.map +1 -0
  159. package/dist/hass/extensions/fetch-api.extension.d.ts +26 -0
  160. package/dist/hass/extensions/fetch-api.extension.js +166 -0
  161. package/dist/hass/extensions/fetch-api.extension.js.map +1 -0
  162. package/dist/hass/extensions/index.d.ts +5 -0
  163. package/dist/hass/extensions/index.js +9 -0
  164. package/dist/hass/extensions/index.js.map +1 -0
  165. package/dist/hass/extensions/utilities.extension.d.ts +9 -0
  166. package/dist/hass/extensions/utilities.extension.js +43 -0
  167. package/dist/hass/extensions/utilities.extension.js.map +1 -0
  168. package/dist/hass/extensions/websocket-api.extension.d.ts +39 -0
  169. package/dist/hass/extensions/websocket-api.extension.js +363 -0
  170. package/dist/hass/extensions/websocket-api.extension.js.map +1 -0
  171. package/dist/hass/hass.module.d.ts +53 -0
  172. package/dist/hass/hass.module.js +59 -0
  173. package/dist/hass/hass.module.js.map +1 -0
  174. package/dist/hass/helpers/backup.helper.d.ts +11 -0
  175. package/dist/hass/helpers/backup.helper.js +3 -0
  176. package/dist/hass/helpers/backup.helper.js.map +1 -0
  177. package/dist/hass/helpers/constants.helper.d.ts +54 -0
  178. package/dist/hass/helpers/constants.helper.js +63 -0
  179. package/dist/hass/helpers/constants.helper.js.map +1 -0
  180. package/dist/hass/helpers/entity-state.helper.d.ts +45 -0
  181. package/dist/hass/helpers/entity-state.helper.js +9 -0
  182. package/dist/hass/helpers/entity-state.helper.js.map +1 -0
  183. package/dist/hass/helpers/fetch/calendar.d.ts +54 -0
  184. package/dist/hass/helpers/fetch/calendar.js +3 -0
  185. package/dist/hass/helpers/fetch/calendar.js.map +1 -0
  186. package/dist/hass/helpers/fetch/configuration.d.ts +34 -0
  187. package/dist/hass/helpers/fetch/configuration.js +3 -0
  188. package/dist/hass/helpers/fetch/configuration.js.map +1 -0
  189. package/dist/hass/helpers/fetch/index.d.ts +4 -0
  190. package/dist/hass/helpers/fetch/index.js +8 -0
  191. package/dist/hass/helpers/fetch/index.js.map +1 -0
  192. package/dist/hass/helpers/fetch/server-log.d.ts +10 -0
  193. package/dist/hass/helpers/fetch/server-log.js +20 -0
  194. package/dist/hass/helpers/fetch/server-log.js.map +1 -0
  195. package/dist/hass/helpers/fetch/service-list.d.ts +51 -0
  196. package/dist/hass/helpers/fetch/service-list.js +3 -0
  197. package/dist/hass/helpers/fetch/service-list.js.map +1 -0
  198. package/dist/hass/helpers/index.d.ts +7 -0
  199. package/dist/hass/helpers/index.js +11 -0
  200. package/dist/hass/helpers/index.js.map +1 -0
  201. package/dist/hass/helpers/metrics.helper.d.ts +13 -0
  202. package/dist/hass/helpers/metrics.helper.js +30 -0
  203. package/dist/hass/helpers/metrics.helper.js.map +1 -0
  204. package/dist/hass/helpers/utility.helper.d.ts +57 -0
  205. package/dist/hass/helpers/utility.helper.js +34 -0
  206. package/dist/hass/helpers/utility.helper.js.map +1 -0
  207. package/dist/hass/helpers/websocket.helper.d.ts +129 -0
  208. package/dist/hass/helpers/websocket.helper.js +3 -0
  209. package/dist/hass/helpers/websocket.helper.js.map +1 -0
  210. package/dist/hass/index.d.ts +4 -0
  211. package/dist/hass/index.js +8 -0
  212. package/dist/hass/index.js.map +1 -0
  213. package/dist/index.d.ts +2 -0
  214. package/dist/index.js +8 -0
  215. package/dist/index.js.map +1 -0
  216. package/dist/nexus/entities.extension.d.ts +2 -0
  217. package/dist/nexus/entities.extension.js +51 -0
  218. package/dist/nexus/entities.extension.js.map +1 -0
  219. package/dist/nexus/main.d.ts +9 -0
  220. package/dist/nexus/main.js +28 -0
  221. package/dist/nexus/main.js.map +1 -0
  222. package/dist/synapse/extensions/binary-sensor.extension.d.ts +19 -0
  223. package/dist/synapse/extensions/binary-sensor.extension.js +84 -0
  224. package/dist/synapse/extensions/binary-sensor.extension.js.map +1 -0
  225. package/dist/synapse/extensions/button.extension.d.ts +10 -0
  226. package/dist/synapse/extensions/button.extension.js +46 -0
  227. package/dist/synapse/extensions/button.extension.js.map +1 -0
  228. package/dist/synapse/extensions/index.d.ts +6 -0
  229. package/dist/synapse/extensions/index.js +10 -0
  230. package/dist/synapse/extensions/index.js.map +1 -0
  231. package/dist/synapse/extensions/registry.extension.d.ts +21 -0
  232. package/dist/synapse/extensions/registry.extension.js +207 -0
  233. package/dist/synapse/extensions/registry.extension.js.map +1 -0
  234. package/dist/synapse/extensions/scene.extension.d.ts +9 -0
  235. package/dist/synapse/extensions/scene.extension.js +37 -0
  236. package/dist/synapse/extensions/scene.extension.js.map +1 -0
  237. package/dist/synapse/extensions/sensor.extension.d.ts +25 -0
  238. package/dist/synapse/extensions/sensor.extension.js +154 -0
  239. package/dist/synapse/extensions/sensor.extension.js.map +1 -0
  240. package/dist/synapse/extensions/switch.extension.d.ts +19 -0
  241. package/dist/synapse/extensions/switch.extension.js +95 -0
  242. package/dist/synapse/extensions/switch.extension.js.map +1 -0
  243. package/dist/synapse/helpers/device-class.helper.d.ts +323 -0
  244. package/dist/synapse/helpers/device-class.helper.js +241 -0
  245. package/dist/synapse/helpers/device-class.helper.js.map +1 -0
  246. package/dist/synapse/helpers/index.d.ts +3 -0
  247. package/dist/synapse/helpers/index.js +7 -0
  248. package/dist/synapse/helpers/index.js.map +1 -0
  249. package/dist/synapse/helpers/metrics.helper.d.ts +13 -0
  250. package/dist/synapse/helpers/metrics.helper.js +30 -0
  251. package/dist/synapse/helpers/metrics.helper.js.map +1 -0
  252. package/dist/synapse/helpers/utility.helper.d.ts +1 -0
  253. package/dist/synapse/helpers/utility.helper.js +3 -0
  254. package/dist/synapse/helpers/utility.helper.js.map +1 -0
  255. package/dist/synapse/index.d.ts +3 -0
  256. package/dist/synapse/index.js +7 -0
  257. package/dist/synapse/index.js.map +1 -0
  258. package/dist/synapse/synapse.module.d.ts +29 -0
  259. package/dist/synapse/synapse.module.js +41 -0
  260. package/dist/synapse/synapse.module.js.map +1 -0
  261. package/dist/type-writer/build.extension.d.ts +2 -0
  262. package/dist/type-writer/build.extension.js +53 -0
  263. package/dist/type-writer/build.extension.js.map +1 -0
  264. package/dist/type-writer/main.d.ts +17 -0
  265. package/dist/type-writer/main.js +36 -0
  266. package/dist/type-writer/main.js.map +1 -0
  267. package/dist/type-writer/type-writer.extension.d.ts +2 -0
  268. package/dist/type-writer/type-writer.extension.js +212 -0
  269. package/dist/type-writer/type-writer.extension.js.map +1 -0
  270. package/dist/utilities/extensions/index.d.ts +3 -0
  271. package/dist/utilities/extensions/index.js +7 -0
  272. package/dist/utilities/extensions/index.js.map +1 -0
  273. package/dist/utilities/extensions/is.extension.d.ts +38 -0
  274. package/dist/utilities/extensions/is.extension.js +104 -0
  275. package/dist/utilities/extensions/is.extension.js.map +1 -0
  276. package/dist/utilities/extensions/zcc-testing.extension.d.ts +4 -0
  277. package/dist/utilities/extensions/zcc-testing.extension.js +9 -0
  278. package/dist/utilities/extensions/zcc-testing.extension.js.map +1 -0
  279. package/dist/utilities/extensions/zcc.extension.d.ts +20 -0
  280. package/dist/utilities/extensions/zcc.extension.js +66 -0
  281. package/dist/utilities/extensions/zcc.extension.js.map +1 -0
  282. package/dist/utilities/helpers/async.helper.d.ts +2 -0
  283. package/dist/utilities/helpers/async.helper.js +26 -0
  284. package/dist/utilities/helpers/async.helper.js.map +1 -0
  285. package/dist/utilities/helpers/context.helper.d.ts +7 -0
  286. package/dist/utilities/helpers/context.helper.js +3 -0
  287. package/dist/utilities/helpers/context.helper.js.map +1 -0
  288. package/dist/utilities/helpers/cron.helper.d.ts +87 -0
  289. package/dist/utilities/helpers/cron.helper.js +92 -0
  290. package/dist/utilities/helpers/cron.helper.js.map +1 -0
  291. package/dist/utilities/helpers/extend.helper.d.ts +2 -0
  292. package/dist/utilities/helpers/extend.helper.js +68 -0
  293. package/dist/utilities/helpers/extend.helper.js.map +1 -0
  294. package/dist/utilities/helpers/index.d.ts +5 -0
  295. package/dist/utilities/helpers/index.js +9 -0
  296. package/dist/utilities/helpers/index.js.map +1 -0
  297. package/dist/utilities/helpers/utilities.helper.d.ts +63 -0
  298. package/dist/utilities/helpers/utilities.helper.js +93 -0
  299. package/dist/utilities/helpers/utilities.helper.js.map +1 -0
  300. package/dist/utilities/index.d.ts +2 -0
  301. package/dist/utilities/index.js +6 -0
  302. package/dist/utilities/index.js.map +1 -0
  303. package/package.json +101 -0
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ENTITY_SETUP = void 0;
4
+ /**
5
+ * ## THIS FILE IS INTENDED TO BE REPLACED
6
+ *
7
+ * ! IF YOU STILL SEE THIS IN YOUR `node_modules`, run `npx type-writer`
8
+ *
9
+ * The purpose it to represent the configuration of Home Assistant
10
+ *
11
+ * - entities, with their available attributes & states
12
+ * - services, and what parameters they take
13
+ *
14
+ * This information is TYPES ONLY, and is used to add type safety to
15
+ * methods exported from this library through the use of utility types that
16
+ * take advantage of this information
17
+ *
18
+ * A post-install hook will regenerate these with real values.
19
+ *
20
+ * The service definition is the switch, light, scene domains from a previously generated file.
21
+ * These are required to make typescript happy for internal library definitions
22
+ */
23
+ exports.ENTITY_SETUP = {
24
+ binary_sensor: {
25
+ is_day: {
26
+ attributes: {
27
+ friendly_name: "Is day",
28
+ },
29
+ context: {
30
+ id: "01HNZ7RV5ZRHF4R6EVTX210Z82",
31
+ parent_id: null,
32
+ user_id: null,
33
+ },
34
+ entity_id: "binary_sensor.is_day",
35
+ last_changed: "2024-02-06T12:55:00.031067+00:00",
36
+ last_updated: "2024-02-06T12:55:00.031067+00:00",
37
+ state: "on",
38
+ },
39
+ },
40
+ button: {
41
+ click_me: {
42
+ attributes: {
43
+ friendly_name: "Click me",
44
+ },
45
+ context: {
46
+ id: "01HNZ7RV5ZRHF4R6EVTX210Z83",
47
+ parent_id: null,
48
+ user_id: null,
49
+ },
50
+ entity_id: "button.click_me",
51
+ last_changed: "2024-02-06T12:55:00.031068+00:00",
52
+ },
53
+ },
54
+ calendar: {
55
+ personal: {
56
+ attributes: {
57
+ friendly_name: "Personal",
58
+ offset_reached: false,
59
+ },
60
+ context: {
61
+ id: "01HJYK0H8P96SCF35ZVZGXKRT0",
62
+ parent_id: null,
63
+ user_id: null,
64
+ },
65
+ entity_id: "calendar.personal",
66
+ last_changed: "2023-12-31T00:00:06.145302+00:00",
67
+ last_updated: "2023-12-31T00:05:06.454423+00:00",
68
+ state: "off",
69
+ },
70
+ },
71
+ light: {
72
+ womp: {
73
+ attributes: {
74
+ brightness: 255,
75
+ color_mode: "color_temp",
76
+ color_temp: 253,
77
+ color_temp_kelvin: 3952,
78
+ dynamics: "none",
79
+ friendly_name: "Womp",
80
+ hs_color: [26.835, 35.746],
81
+ max_color_temp_kelvin: 6535,
82
+ max_mireds: 500,
83
+ min_color_temp_kelvin: 2000,
84
+ min_mireds: 153,
85
+ mode: "normal",
86
+ rgb_color: [255, 204, 163],
87
+ supported_color_modes: ["color_temp", "xy"],
88
+ supported_features: 40,
89
+ xy_color: [0.424, 0.366],
90
+ },
91
+ context: {
92
+ id: "01HK0TW9610XX5C5EZWE6ZEWJ0",
93
+ parent_id: null,
94
+ user_id: "72b5dc1d14484f9bb54df2de3ab95773",
95
+ },
96
+ entity_id: "light.womp",
97
+ last_changed: "2023-12-31T16:23:21.270862+00:00",
98
+ last_updated: "2023-12-31T21:01:05.179072+00:00",
99
+ state: "on",
100
+ },
101
+ },
102
+ scene: {
103
+ bedroom_auto: {
104
+ attributes: {
105
+ friendly_name: "Bedroom Auto",
106
+ },
107
+ context: {
108
+ id: "01HK02X46S76A2C7JJMENBHF55",
109
+ parent_id: null,
110
+ user_id: "72b5dc1d14484f9bb54df2de3ab95773",
111
+ },
112
+ entity_id: "scene.bedroom_auto",
113
+ last_changed: "2023-12-31T14:02:06.428935+00:00",
114
+ last_updated: "2023-12-31T14:02:06.428935+00:00",
115
+ state: "2023-12-31T14:02:06.428760+00:00",
116
+ },
117
+ },
118
+ sensor: {
119
+ loft_current_scene: {
120
+ attributes: {
121
+ friendly_name: "Loft current scene",
122
+ managed_by: "home-automation",
123
+ scene: "high",
124
+ },
125
+ context: {
126
+ id: "01HNZE7KCPMNXAK1N6G9MWC5M4",
127
+ parent_id: null,
128
+ user_id: null,
129
+ },
130
+ entity_id: "sensor.loft_current_scene",
131
+ last_changed: "2024-02-06T14:47:55.030369+00:00",
132
+ last_updated: "2024-02-06T14:47:55.030369+00:00",
133
+ state: "High",
134
+ },
135
+ },
136
+ switch: {
137
+ guest_mode: {
138
+ attributes: {
139
+ friendly_name: "Guest mode",
140
+ },
141
+ context: {
142
+ id: "01HK1AAJ4PW4SNPBFV35EDTJME",
143
+ parent_id: null,
144
+ user_id: "72b5dc1d14484f9bb54df2de3ab95773",
145
+ },
146
+ entity_id: "switch.guest_mode",
147
+ last_changed: "2024-01-01T01:25:47.375385+00:00",
148
+ last_updated: "2024-01-01T01:31:01.142980+00:00",
149
+ state: "off",
150
+ },
151
+ },
152
+ };
153
+ //# sourceMappingURL=dynamic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamic.js","sourceRoot":"","sources":["../../src/hass/dynamic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { TServiceParams } from "../..";
2
+ import { iCallService } from "..";
3
+ export declare function CallProxy({ logger, lifecycle, context, hass, config, }: TServiceParams): iCallService;
4
+ export default CallProxy;
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CallProxy = void 0;
4
+ const process_1 = require("process");
5
+ const __1 = require("../..");
6
+ const __2 = require("..");
7
+ const FAILED_LOAD_DELAY = 5;
8
+ const MAX_ATTEMPTS = 50;
9
+ const FAILED = 1;
10
+ const NOT_A_DOMAIN = new Set(["then"]);
11
+ function CallProxy({ logger, lifecycle, context, hass, config, }) {
12
+ let domains;
13
+ let services;
14
+ /**
15
+ * Describe the current services, and build up a proxy api based on that.
16
+ *
17
+ * This API matches the api at the time the this function is run, which may be different from any generated typescript definitions from the past.
18
+ */
19
+ lifecycle.onBootstrap(async () => {
20
+ if (!config.hass.AUTO_SCAN_CALL_PROXY) {
21
+ logger.debug(`skip service populate`);
22
+ return;
23
+ }
24
+ logger.debug(`runtime populate service interfaces`);
25
+ await loadServiceList();
26
+ });
27
+ function getDomain(domain) {
28
+ if (!domains || !domains?.includes(domain)) {
29
+ if (!NOT_A_DOMAIN.has(domain)) {
30
+ logger.error({ domain }, `unknown domain`);
31
+ }
32
+ return undefined;
33
+ }
34
+ const domainItem = services.find(i => i.domain === domain);
35
+ if (!domainItem) {
36
+ throw new __1.InternalError(context, "HALLUCINATED_DOMAIN", `Cannot access call_service#${domain}. Home Assistant doesn't list it as a real domain.`);
37
+ }
38
+ return Object.fromEntries(Object.entries(domainItem.services).map(([key]) => [
39
+ key,
40
+ async (parameters) => await sendMessage(`${domain}.${key}`, {
41
+ ...parameters,
42
+ }),
43
+ ]));
44
+ }
45
+ async function loadServiceList(recursion = __1.START) {
46
+ logger.info(`fetching service list`);
47
+ services = await hass.fetch.listServices();
48
+ if (__1.is.empty(services)) {
49
+ if (recursion > MAX_ATTEMPTS) {
50
+ logger.fatal(`Failed to load service list from Home Assistant. Validate configuration`);
51
+ (0, process_1.exit)(FAILED);
52
+ }
53
+ logger.warn("failed to retrieve {service} list. Retrying {%s}/[%s]", recursion, MAX_ATTEMPTS);
54
+ await (0, __1.sleep)(FAILED_LOAD_DELAY * __1.SECOND);
55
+ await loadServiceList(recursion + __1.INCREMENT);
56
+ return;
57
+ }
58
+ domains = services.map(i => i.domain);
59
+ services.forEach(value => {
60
+ logger.trace({ services: Object.keys(value.services) }, `loaded domain [%s]`, value.domain);
61
+ });
62
+ }
63
+ /**
64
+ * Prefer sending via socket, if available.
65
+ */
66
+ async function sendMessage(serviceName, service_data) {
67
+ if (!hass.socket.getConnectionActive()) {
68
+ return await hass.fetch.callService(serviceName, service_data);
69
+ }
70
+ const [domain, service] = serviceName.split(".");
71
+ // User can just not await this call if they don't care about the "waitForChange"
72
+ return await hass.socket.sendMessage({
73
+ domain,
74
+ service,
75
+ service_data,
76
+ type: __2.HASSIO_WS_COMMAND.call_service,
77
+ }, true);
78
+ }
79
+ function buildCallProxy() {
80
+ return new Proxy({}, {
81
+ get: (_, domain) => getDomain(domain),
82
+ });
83
+ }
84
+ return buildCallProxy();
85
+ }
86
+ exports.CallProxy = CallProxy;
87
+ exports.default = CallProxy;
88
+ //# sourceMappingURL=call-proxy.extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call-proxy.extension.js","sourceRoot":"","sources":["../../../src/hass/extensions/call-proxy.extension.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import { TBlackHole, TServiceParams } from "../..";
2
+ import { ENTITY_STATE, EntityHistoryDTO, EntityHistoryResult, PICK_ENTITY } from "..";
3
+ export declare const ENTITY_UPDATE_RECEIVER: unique symbol;
4
+ export type ByIdProxy<ENTITY_ID extends PICK_ENTITY> = ENTITY_STATE<ENTITY_ID> & {
5
+ entity_id: ENTITY_ID;
6
+ /**
7
+ * Run callback
8
+ */
9
+ onUpdate: (callback: (state: NonNullable<ENTITY_STATE<ENTITY_ID>>) => TBlackHole) => void;
10
+ /**
11
+ * Run callback once, for next update
12
+ */
13
+ once: (callback: (state: NonNullable<ENTITY_STATE<ENTITY_ID>>) => TBlackHole) => void;
14
+ /**
15
+ * Will resolve with the next state of the next value. No time limit
16
+ */
17
+ nextState: () => Promise<ENTITY_STATE<ENTITY_ID>>;
18
+ };
19
+ export declare function EntityManager({ logger, hass, lifecycle }: TServiceParams): {
20
+ /**
21
+ * Internal library use only
22
+ */
23
+ [ENTITY_UPDATE_RECEIVER]: <ENTITY extends PICK_ENTITY = PICK_ENTITY>(entity_id: PICK_ENTITY, new_state: ENTITY_STATE<ENTITY>, old_state: ENTITY_STATE<ENTITY>) => void;
24
+ /**
25
+ * Retrieves a proxy object for a specified entity. This proxy object
26
+ * provides current values and event hooks for the entity.
27
+ */
28
+ byId: <ENTITY_ID extends PICK_ENTITY>(entity_id: ENTITY_ID) => ByIdProxy<ENTITY_ID>;
29
+ /**
30
+ * Lists all entities within a specified domain. This is useful for
31
+ * domain-specific operations or queries.
32
+ */
33
+ findByDomain: <DOMAIN extends "binary_sensor" | "button" | "scene" | "sensor" | "switch" | "calendar" | "light">(domain: DOMAIN) => ByIdProxy<PICK_ENTITY>[];
34
+ /**
35
+ * Retrieves the current state of a given entity. This method returns
36
+ * raw data, offering a direct view of the entity's state at a given moment.
37
+ */
38
+ getCurrentState: <ENTITY_ID_1 extends PICK_ENTITY>(entity_id: ENTITY_ID_1) => NonNullable<ENTITY_STATE<ENTITY_ID_1>>;
39
+ /**
40
+ * Retrieves the historical state data of entities over a specified time
41
+ * period. Useful for analysis or tracking changes over time.
42
+ */
43
+ history: <ENTITES extends PICK_ENTITY[]>(payload: Omit<EntityHistoryDTO<ENTITES>, "type">) => Promise<{
44
+ [k: string]: EntityHistoryResult[];
45
+ }>;
46
+ /**
47
+ * Provides a simple listing of all entity IDs. Useful for enumeration
48
+ * and quick reference to all available entities.
49
+ */
50
+ listEntities: () => PICK_ENTITY[];
51
+ /**
52
+ * Initiates a refresh of the current entity states. Useful for ensuring
53
+ * synchronization with the latest state data from Home Assistant.
54
+ */
55
+ refresh: (recursion?: number) => Promise<void>;
56
+ };
57
+ declare module "../../utilities" {
58
+ interface IsIt {
59
+ entity(entity: PICK_ENTITY): entity is PICK_ENTITY;
60
+ }
61
+ }
@@ -0,0 +1,214 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EntityManager = exports.ENTITY_UPDATE_RECEIVER = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const async_1 = require("async");
6
+ const dayjs_1 = tslib_1.__importDefault(require("dayjs"));
7
+ const node_cache_1 = require("node-cache");
8
+ const object_path_1 = require("object-path");
9
+ const __1 = require("../..");
10
+ const __2 = require("..");
11
+ exports.ENTITY_UPDATE_RECEIVER = Symbol.for("entityUpdateReceiver");
12
+ const MAX_ATTEMPTS = 50;
13
+ const FAILED_LOAD_DELAY = 5;
14
+ const UNLIMITED = 0;
15
+ const RECENT = 5;
16
+ const BOTTLENECK_UPDATES = 20;
17
+ function EntityManager({ logger, hass, lifecycle }) {
18
+ // # Local vars
19
+ /**
20
+ * MASTER_STATE.switch.desk_light = {entity_id,state,attributes,...}
21
+ */
22
+ let MASTER_STATE = {};
23
+ const ENTITY_PROXIES = new Map();
24
+ let lastRefresh;
25
+ // * Local event emitter for coordination of socket events
26
+ // Other libraries will internally take advantage of this eventemitter
27
+ const event = new node_cache_1.EventEmitter();
28
+ event.setMaxListeners(UNLIMITED);
29
+ let init = false;
30
+ // # Methods
31
+ // ## Retrieve raw state object for entity
32
+ function getCurrentState(entity_id) {
33
+ return (0, object_path_1.get)(MASTER_STATE, entity_id);
34
+ }
35
+ // ## Proxy version of the logic
36
+ function proxyGetLogic(entity, property) {
37
+ if (!init) {
38
+ return undefined;
39
+ }
40
+ const valid = ["state", "attributes", "last"].some(i => property.startsWith(i));
41
+ if (!valid) {
42
+ logger.error({ entity, property }, `invalid property lookup`);
43
+ return undefined;
44
+ }
45
+ const current = getCurrentState(entity);
46
+ const defaultValue = (property === "state" ? undefined : {});
47
+ if (!current) {
48
+ logger.error({ defaultValue, name: entity, property }, `proxyGetLogic cannot find entity`);
49
+ }
50
+ return (0, object_path_1.get)(current, property, defaultValue);
51
+ }
52
+ // ## Retrieve a proxy by id
53
+ function byId(entity_id) {
54
+ if (!ENTITY_PROXIES.has(entity_id)) {
55
+ ENTITY_PROXIES.set(entity_id, new Proxy({ entity_id }, {
56
+ // things that shouldn't be needed: this extract
57
+ get: (_, property) => {
58
+ if (property === "onUpdate") {
59
+ return (callback) => event.on(entity_id, async (a, b) => callback(a, b));
60
+ }
61
+ if (property === "once") {
62
+ return (callback) => event.once(entity_id, async (a, b) => callback(a, b));
63
+ }
64
+ if (property === "entity_id") {
65
+ return entity_id;
66
+ }
67
+ if (property === "nextState") {
68
+ return new Promise(done => {
69
+ event.once(entity_id, (entity) => done(entity));
70
+ });
71
+ }
72
+ return proxyGetLogic(entity_id, property);
73
+ },
74
+ }));
75
+ }
76
+ return ENTITY_PROXIES.get(entity_id);
77
+ }
78
+ // ## Retrieve entity history (via socket)
79
+ async function history(payload) {
80
+ logger.trace({ payload }, `looking up entity history`);
81
+ const result = (await hass.socket.sendMessage({
82
+ ...payload,
83
+ end_time: (0, dayjs_1.default)(payload.end_time).toISOString(),
84
+ start_time: (0, dayjs_1.default)(payload.start_time).toISOString(),
85
+ type: __2.HASSIO_WS_COMMAND.history_during_period,
86
+ }));
87
+ const entities = Object.keys(result);
88
+ return Object.fromEntries(entities.map((entity_id) => {
89
+ const key = entity_id;
90
+ const states = result[entity_id];
91
+ const value = states.map(data => {
92
+ return {
93
+ attributes: data.a,
94
+ date: new Date(data.lu * __1.SECOND),
95
+ state: data.s,
96
+ };
97
+ });
98
+ return [key, value];
99
+ }));
100
+ }
101
+ // ## Build a string array of all known entity ids
102
+ function listEntities() {
103
+ return Object.keys(MASTER_STATE).flatMap(domain => Object.keys(MASTER_STATE[domain]).map(id => `${domain}.${id}`));
104
+ }
105
+ // ## Gather all entity proxies for a domain
106
+ function findByDomain(domain) {
107
+ return Object.keys(MASTER_STATE[domain] ?? {}).map(i => byId(`${domain}.${i}`));
108
+ }
109
+ // ## Load all entity state information from hass
110
+ async function refresh(recursion = __1.START) {
111
+ const now = (0, dayjs_1.default)();
112
+ if (lastRefresh) {
113
+ const diff = lastRefresh.diff(now, "ms");
114
+ if (diff >= RECENT * __1.SECOND) {
115
+ logger.warn({ diff }, `multiple refreshes in close time`);
116
+ }
117
+ }
118
+ lastRefresh = now;
119
+ // - Fetch list of entities
120
+ const states = await hass.fetch.getAllEntities();
121
+ // - Keep retrying until max failures reached
122
+ if (__1.is.empty(states)) {
123
+ if (recursion > MAX_ATTEMPTS) {
124
+ logger.fatal(`failed to load service list from Home Assistant. Validate configuration`);
125
+ __1.ZCC_Testing.FailFast();
126
+ }
127
+ logger.warn("failed to retrieve entity list. Retrying {%s}/[%s]", recursion, MAX_ATTEMPTS);
128
+ await (0, __1.sleep)(FAILED_LOAD_DELAY * __1.SECOND);
129
+ await refresh(recursion + __1.INCREMENT);
130
+ return;
131
+ }
132
+ // - Preserve old state for comparison
133
+ const oldState = MASTER_STATE;
134
+ MASTER_STATE = {};
135
+ const emitUpdates = [];
136
+ // - Go through all entities, setting the state
137
+ // ~ If this is a refresh (not an initial boot), track what changed so events can be emitted
138
+ states.forEach(entity => {
139
+ // ? Set first, ensure data is populated
140
+ // `nextTick` will fire AFTER loop finishes
141
+ (0, object_path_1.set)(MASTER_STATE, entity.entity_id, entity, (0, object_path_1.get)(oldState, entity.entity_id));
142
+ if (!init) {
143
+ return;
144
+ }
145
+ const old = (0, object_path_1.get)(oldState, entity.entity_id);
146
+ if (__1.is.equal(old, entity)) {
147
+ logger.trace({ name: entity.entity_id }, `no change on refresh`);
148
+ return;
149
+ }
150
+ emitUpdates.push(entity);
151
+ });
152
+ // Attempt to not blow up the system?
153
+ // TODO: does this gain anything? is a debounce needed somewhere else instead?
154
+ setImmediate(async () => {
155
+ await (0, async_1.eachLimit)(emitUpdates, BOTTLENECK_UPDATES, async (entity) => await EntityUpdateReceiver(entity.entity_id, entity, (0, object_path_1.get)(oldState, entity.entity_id)));
156
+ });
157
+ init = true;
158
+ }
159
+ // ## is.entity definition
160
+ // Actually tie the type casting to real state
161
+ __1.is.entity = (entityId) => __1.is.undefined((0, object_path_1.get)(MASTER_STATE, entityId));
162
+ // ## Receiver function for incoming entity updates
163
+ function EntityUpdateReceiver(entity_id, new_state, old_state) {
164
+ if (new_state === null) {
165
+ logger.warn({ name: entity_id }, `removing deleted entity from {MASTER_STATE}`);
166
+ (0, object_path_1.del)(MASTER_STATE, entity_id);
167
+ return;
168
+ }
169
+ (0, object_path_1.set)(MASTER_STATE, entity_id, new_state);
170
+ event.emit(entity_id, new_state, old_state);
171
+ }
172
+ lifecycle.onPostConfig(async () => {
173
+ logger.debug(`pre populate {MASTER_STATE}`);
174
+ await refresh();
175
+ });
176
+ return {
177
+ /**
178
+ * Internal library use only
179
+ */
180
+ [exports.ENTITY_UPDATE_RECEIVER]: EntityUpdateReceiver,
181
+ /**
182
+ * Retrieves a proxy object for a specified entity. This proxy object
183
+ * provides current values and event hooks for the entity.
184
+ */
185
+ byId,
186
+ /**
187
+ * Lists all entities within a specified domain. This is useful for
188
+ * domain-specific operations or queries.
189
+ */
190
+ findByDomain,
191
+ /**
192
+ * Retrieves the current state of a given entity. This method returns
193
+ * raw data, offering a direct view of the entity's state at a given moment.
194
+ */
195
+ getCurrentState,
196
+ /**
197
+ * Retrieves the historical state data of entities over a specified time
198
+ * period. Useful for analysis or tracking changes over time.
199
+ */
200
+ history,
201
+ /**
202
+ * Provides a simple listing of all entity IDs. Useful for enumeration
203
+ * and quick reference to all available entities.
204
+ */
205
+ listEntities,
206
+ /**
207
+ * Initiates a refresh of the current entity states. Useful for ensuring
208
+ * synchronization with the latest state data from Home Assistant.
209
+ */
210
+ refresh,
211
+ };
212
+ }
213
+ exports.EntityManager = EntityManager;
214
+ //# sourceMappingURL=entity-manager.extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-manager.extension.js","sourceRoot":"","sources":["../../../src/hass/extensions/entity-manager.extension.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { FilteredFetchArguments, TFetch, TServiceParams } from "../..";
2
+ import { CalendarEvent, CalendarFetchOptions, CheckConfigResult, ENTITY_STATE, HassConfig, HassServiceDTO, HomeAssistantServerLogItem, PICK_ENTITY, PICK_SERVICE, PICK_SERVICE_PARAMETERS } from "..";
3
+ type SendBody<STATE extends string | number = string, ATTRIBUTES extends object = object> = {
4
+ attributes?: ATTRIBUTES;
5
+ state?: STATE;
6
+ };
7
+ export declare function FetchAPI({ logger, lifecycle, context, config, }: TServiceParams): {
8
+ calendarSearch: ({ calendar, start, end, }: CalendarFetchOptions) => Promise<CalendarEvent[]>;
9
+ callService: <SERVICE extends PICK_SERVICE>(serviceName: SERVICE, data: PICK_SERVICE_PARAMETERS<SERVICE>) => Promise<ENTITY_STATE<PICK_ENTITY>[]>;
10
+ checkConfig: () => Promise<CheckConfigResult>;
11
+ download: (destination: string, fetchWith: FilteredFetchArguments) => Promise<void>;
12
+ fetch: TFetch;
13
+ fetchEntityCustomizations: <T extends Record<never, unknown> = Record<"local" | "global", Record<string, string>>>(entityId: string | string[]) => Promise<T>;
14
+ fetchEntityHistory: <ENTITY extends PICK_ENTITY = PICK_ENTITY, T_1 extends ENTITY_STATE<ENTITY> = ENTITY_STATE<ENTITY>>(entity_id: ENTITY, from: Date, to: Date, extra?: {
15
+ minimal_response?: "";
16
+ }) => Promise<T_1[]>;
17
+ fireEvent: <DATA extends object = object>(event: string, data?: DATA) => Promise<void>;
18
+ getAllEntities: () => Promise<ENTITY_STATE<PICK_ENTITY>[]>;
19
+ getConfig: () => Promise<HassConfig>;
20
+ getLogs: () => Promise<HomeAssistantServerLogItem[]>;
21
+ getRawLogs: () => Promise<string>;
22
+ listServices: () => Promise<HassServiceDTO[]>;
23
+ updateEntity: <STATE extends string | number = string, ATTRIBUTES extends object = object>(entity_id: PICK_ENTITY, { attributes, state }: SendBody<STATE, ATTRIBUTES>) => Promise<void>;
24
+ webhook: (name: string, data?: object) => Promise<void>;
25
+ };
26
+ export {};