@digital-alchemy/hass 0.3.9 → 0.3.11

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 (60) hide show
  1. package/dist/dynamic.d.ts +15 -0
  2. package/dist/dynamic.js.map +1 -1
  3. package/dist/extensions/area.extension.d.ts +10 -0
  4. package/dist/extensions/area.extension.js +47 -0
  5. package/dist/extensions/area.extension.js.map +1 -0
  6. package/dist/extensions/backup.extension.d.ts +7 -0
  7. package/dist/extensions/{utilities.extension.js → backup.extension.js} +8 -11
  8. package/dist/extensions/backup.extension.js.map +1 -0
  9. package/dist/extensions/conversation.extension.d.ts +7 -0
  10. package/dist/extensions/conversation.extension.js +40 -0
  11. package/dist/extensions/conversation.extension.js.map +1 -0
  12. package/dist/extensions/device.extension.d.ts +6 -0
  13. package/dist/extensions/device.extension.js +37 -0
  14. package/dist/extensions/device.extension.js.map +1 -0
  15. package/dist/extensions/{entity-manager.extension.d.ts → entity.extension.d.ts} +22 -6
  16. package/dist/extensions/{entity-manager.extension.js → entity.extension.js} +121 -15
  17. package/dist/extensions/entity.extension.js.map +1 -0
  18. package/dist/extensions/floor.extension.d.ts +15 -0
  19. package/dist/extensions/floor.extension.js +49 -0
  20. package/dist/extensions/floor.extension.js.map +1 -0
  21. package/dist/extensions/index.d.ts +8 -2
  22. package/dist/extensions/index.js +8 -2
  23. package/dist/extensions/index.js.map +1 -1
  24. package/dist/extensions/label.extension.d.ts +15 -0
  25. package/dist/extensions/label.extension.js +49 -0
  26. package/dist/extensions/label.extension.js.map +1 -0
  27. package/dist/extensions/registry.extension.d.ts +8 -0
  28. package/dist/extensions/registry.extension.js +34 -0
  29. package/dist/extensions/registry.extension.js.map +1 -0
  30. package/dist/extensions/websocket-api.extension.d.ts +3 -2
  31. package/dist/extensions/websocket-api.extension.js +17 -5
  32. package/dist/extensions/websocket-api.extension.js.map +1 -1
  33. package/dist/extensions/zone.extension.d.ts +14 -0
  34. package/dist/extensions/zone.extension.js +47 -0
  35. package/dist/extensions/zone.extension.js.map +1 -0
  36. package/dist/hass.module.d.ts +16 -5
  37. package/dist/hass.module.js +16 -5
  38. package/dist/hass.module.js.map +1 -1
  39. package/dist/helpers/device.helper.d.ts +23 -0
  40. package/dist/helpers/device.helper.js +8 -0
  41. package/dist/helpers/device.helper.js.map +1 -0
  42. package/dist/helpers/entity-state.helper.d.ts +39 -0
  43. package/dist/helpers/entity-state.helper.js.map +1 -1
  44. package/dist/helpers/fetch/configuration.d.ts +32 -0
  45. package/dist/helpers/fetch/configuration.js +7 -0
  46. package/dist/helpers/fetch/configuration.js.map +1 -1
  47. package/dist/helpers/index.d.ts +2 -0
  48. package/dist/helpers/index.js +2 -0
  49. package/dist/helpers/index.js.map +1 -1
  50. package/dist/helpers/manifest.helper.d.ts +1 -0
  51. package/dist/helpers/manifest.helper.js +3 -0
  52. package/dist/helpers/manifest.helper.js.map +1 -0
  53. package/dist/helpers/registry.d.ts +152 -0
  54. package/dist/helpers/registry.js +27 -0
  55. package/dist/helpers/registry.js.map +1 -0
  56. package/dist/helpers/websocket.helper.d.ts +10 -41
  57. package/package.json +1 -1
  58. package/dist/extensions/entity-manager.extension.js.map +0 -1
  59. package/dist/extensions/utilities.extension.d.ts +0 -9
  60. package/dist/extensions/utilities.extension.js.map +0 -1
package/dist/dynamic.d.ts CHANGED
@@ -1,4 +1,19 @@
1
1
  import { PICK_ENTITY } from "./helpers";
2
+ export type TFloorId = string & {
3
+ floor: boolean;
4
+ };
5
+ export type TAreaId = string & {
6
+ area: true;
7
+ };
8
+ export type TLabelId = string & {
9
+ label: string;
10
+ };
11
+ export type TDeviceId = string & {
12
+ device: true;
13
+ };
14
+ export type TZoneId = string & {
15
+ zone: true;
16
+ };
2
17
  /**
3
18
  * ## THIS FILE IS INTENDED TO BE REPLACED
4
19
  *
@@ -1 +1 @@
1
- {"version":3,"file":"dynamic.js","sourceRoot":"","sources":["../src/dynamic.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dynamic.js","sourceRoot":"","sources":["../src/dynamic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { TServiceParams } from "@digital-alchemy/core";
2
+ import { TAreaId } from "../dynamic";
3
+ import { AreaCreate, AreaDetails } from "../helpers";
4
+ export declare function Area({ hass, context, config, logger }: TServiceParams): {
5
+ create(details: AreaCreate): Promise<void>;
6
+ current: AreaDetails[];
7
+ delete(area_id: TAreaId): Promise<void>;
8
+ list(): Promise<AreaDetails[]>;
9
+ update(details: AreaDetails): Promise<void>;
10
+ };
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Area = void 0;
4
+ function Area({ hass, context, config, logger }) {
5
+ hass.socket.onConnect(async () => {
6
+ if (!config.hass.AUTO_CONNECT_SOCKET || !config.hass.MANAGE_REGISTRY) {
7
+ return;
8
+ }
9
+ hass.area.current = await hass.area.list();
10
+ hass.socket.subscribe({
11
+ context,
12
+ event_type: "area_registry_updated",
13
+ async exec() {
14
+ hass.area.current = await hass.area.list();
15
+ logger.debug(`area registry updated`);
16
+ },
17
+ });
18
+ });
19
+ return {
20
+ async create(details) {
21
+ await hass.socket.sendMessage({
22
+ type: "config/area_registry/create",
23
+ ...details,
24
+ });
25
+ },
26
+ current: [],
27
+ async delete(area_id) {
28
+ await hass.socket.sendMessage({
29
+ area_id,
30
+ type: "config/area_registry/delete",
31
+ });
32
+ },
33
+ async list() {
34
+ return await hass.socket.sendMessage({
35
+ type: "config/area_registry/list",
36
+ });
37
+ },
38
+ async update(details) {
39
+ await hass.socket.sendMessage({
40
+ type: "config/area_registry/update",
41
+ ...details,
42
+ });
43
+ },
44
+ };
45
+ }
46
+ exports.Area = Area;
47
+ //# sourceMappingURL=area.extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"area.extension.js","sourceRoot":"","sources":["../../src/extensions/area.extension.ts"],"names":[],"mappings":";;;AAKA,SAAgB,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAkB;IACpE,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,CAAC,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YACpB,OAAO;YACP,UAAU,EAAE,uBAAuB;YACnC,KAAK,CAAC,IAAI;gBACR,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC3C,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YACxC,CAAC;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,CAAC,MAAM,CAAC,OAAmB;YAC9B,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC5B,IAAI,EAAE,6BAA6B;gBACnC,GAAG,OAAO;aACX,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,EAAmB;QAC5B,KAAK,CAAC,MAAM,CAAC,OAAgB;YAC3B,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC5B,OAAO;gBACP,IAAI,EAAE,6BAA6B;aACpC,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,IAAI;YACR,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAgB;gBAClD,IAAI,EAAE,2BAA2B;aAClC,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,OAAoB;YAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC5B,IAAI,EAAE,6BAA6B;gBACnC,GAAG,OAAO;aACX,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AA1CD,oBA0CC"}
@@ -0,0 +1,7 @@
1
+ import { TServiceParams } from "@digital-alchemy/core";
2
+ import { BackupResponse, HomeAssistantBackup } from "../helpers";
3
+ export declare function Backup({ logger, hass }: TServiceParams): {
4
+ generate: () => Promise<HomeAssistantBackup>;
5
+ list: () => Promise<BackupResponse>;
6
+ remove: (slug: string) => Promise<void>;
7
+ };
@@ -1,9 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Utilities = void 0;
3
+ exports.Backup = void 0;
4
4
  const core_1 = require("@digital-alchemy/core");
5
- const __1 = require("..");
6
- function Utilities({ logger, hass }) {
5
+ function Backup({ logger, hass }) {
7
6
  async function generate() {
8
7
  let current = await list();
9
8
  // const originalLength = current.backups.length;
@@ -12,9 +11,7 @@ function Utilities({ logger, hass }) {
12
11
  }
13
12
  else {
14
13
  logger.info({ name: generate }, "initiating new backup");
15
- hass.socket.sendMessage({
16
- type: __1.HASSIO_WS_COMMAND.generate_backup,
17
- });
14
+ hass.socket.sendMessage({ type: "backup/generate" });
18
15
  while (current.backing_up === false) {
19
16
  logger.debug({ name: generate }, "... waiting");
20
17
  await (0, core_1.sleep)(core_1.HALF * core_1.SECOND);
@@ -32,14 +29,14 @@ function Utilities({ logger, hass }) {
32
29
  async function list() {
33
30
  logger.trace({ name: list }, "send");
34
31
  return await hass.socket.sendMessage({
35
- type: __1.HASSIO_WS_COMMAND.backup_info,
32
+ type: "backup/info",
36
33
  });
37
34
  }
38
35
  async function remove(slug) {
39
36
  logger.trace({ name: remove }, "send");
40
- await hass.socket.sendMessage({ slug, type: __1.HASSIO_WS_COMMAND.remove_backup }, false);
37
+ await hass.socket.sendMessage({ slug, type: "backup/remove" }, false);
41
38
  }
42
- return { backup: { generate, list, remove } };
39
+ return { generate, list, remove };
43
40
  }
44
- exports.Utilities = Utilities;
45
- //# sourceMappingURL=utilities.extension.js.map
41
+ exports.Backup = Backup;
42
+ //# sourceMappingURL=backup.extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.extension.js","sourceRoot":"","sources":["../../src/extensions/backup.extension.ts"],"names":[],"mappings":";;;AAAA,gDAA4E;AAI5E,SAAgB,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAkB;IACrD,KAAK,UAAU,QAAQ;QACrB,IAAI,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC;QAC3B,iDAAiD;QACjD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CACT,EAAE,IAAI,EAAE,QAAQ,EAAE,EAClB,0EAA0E,CAC3E,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,uBAAuB,CAAC,CAAC;YACzD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;YACrD,OAAO,OAAO,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;gBACpC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,aAAa,CAAC,CAAC;gBAChD,MAAM,IAAA,YAAK,EAAC,WAAI,GAAG,aAAM,CAAC,CAAC;gBAC3B,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC;YACzB,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,aAAa,CAAC,CAAC;YAChD,MAAM,IAAA,YAAK,EAAC,WAAI,GAAG,aAAM,CAAC,CAAC;YAC3B,OAAO,GAAG,MAAM,IAAI,EAAE,CAAC;QACzB,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,iBAAiB,CAAC,CAAC;QACnD,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,UAAU,IAAI;QACjB,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;QACrC,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAiB;YACnD,IAAI,EAAE,aAAa;SACpB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,MAAM,CAAC,IAAY;QAChC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC;QACvC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,KAAK,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACpC,CAAC;AAxCD,wBAwCC"}
@@ -0,0 +1,7 @@
1
+ import { TServiceParams } from "@digital-alchemy/core";
2
+ import { EditAliasOptions, ToggleExpose } from "../helpers";
3
+ export declare function Conversation({ hass, logger }: TServiceParams): {
4
+ addAlias: ({ entity, alias }: EditAliasOptions) => Promise<void>;
5
+ removeAlias: ({ entity, alias }: EditAliasOptions) => Promise<void>;
6
+ setConversational: ({ entity_ids, assistants, should_expose, }: ToggleExpose) => Promise<void>;
7
+ };
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Conversation = void 0;
4
+ const helpers_1 = require("../helpers");
5
+ function Conversation({ hass, logger }) {
6
+ async function addAlias({ entity, alias }) {
7
+ const current = await hass.entity.registry.get(entity);
8
+ if (current?.aliases?.includes(alias)) {
9
+ logger.debug({ name: entity }, `already has alias {%s}`, alias);
10
+ return;
11
+ }
12
+ await hass.socket.sendMessage({
13
+ entity_id: entity,
14
+ type: helpers_1.UPDATE_REGISTRY,
15
+ });
16
+ }
17
+ async function removeAlias({ entity, alias }) {
18
+ const current = await hass.entity.registry.get(entity);
19
+ if (!current?.aliases?.includes(alias)) {
20
+ logger.debug({ name: entity }, `does not have alias {%s}`, alias);
21
+ return;
22
+ }
23
+ await hass.socket.sendMessage({ entity_id: entity, type: helpers_1.UPDATE_REGISTRY });
24
+ }
25
+ async function setConversational({ entity_ids, assistants, should_expose, }) {
26
+ await hass.socket.sendMessage({
27
+ assistants: [assistants].flat(),
28
+ entity_ids: [entity_ids].flat(),
29
+ should_expose,
30
+ type: helpers_1.UPDATE_REGISTRY,
31
+ });
32
+ }
33
+ return {
34
+ addAlias,
35
+ removeAlias,
36
+ setConversational,
37
+ };
38
+ }
39
+ exports.Conversation = Conversation;
40
+ //# sourceMappingURL=conversation.extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation.extension.js","sourceRoot":"","sources":["../../src/extensions/conversation.extension.ts"],"names":[],"mappings":";;;AAEA,wCAA6E;AAE7E,SAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAkB;IAC3D,KAAK,UAAU,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,EAAoB;QACzD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,wBAAwB,EAAE,KAAK,CAAC,CAAC;YAChE,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;YAC5B,SAAS,EAAE,MAAM;YACjB,IAAI,EAAE,yBAAe;SACtB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,EAAoB;QAC5D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACvC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,0BAA0B,EAAE,KAAK,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAe,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,KAAK,UAAU,iBAAiB,CAAC,EAC/B,UAAU,EACV,UAAU,EACV,aAAa,GACA;QACb,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;YAC5B,UAAU,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE;YAC/B,UAAU,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE;YAC/B,aAAa;YACb,IAAI,EAAE,yBAAe;SACtB,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,QAAQ;QACR,WAAW;QACX,iBAAiB;KAClB,CAAC;AACJ,CAAC;AAxCD,oCAwCC"}
@@ -0,0 +1,6 @@
1
+ import { TServiceParams } from "@digital-alchemy/core";
2
+ import { DeviceDetails } from "../helpers";
3
+ export declare function Device({ hass, config, context, logger }: TServiceParams): {
4
+ current: DeviceDetails[];
5
+ list: () => Promise<DeviceDetails[]>;
6
+ };
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Device = void 0;
4
+ function Device({ hass, config, context, logger }) {
5
+ hass.socket.onConnect(async () => {
6
+ if (!config.hass.AUTO_CONNECT_SOCKET || !config.hass.MANAGE_REGISTRY) {
7
+ return;
8
+ }
9
+ hass.device.current = await hass.device.list();
10
+ hass.socket.subscribe({
11
+ context,
12
+ event_type: "device_registry_updated",
13
+ async exec() {
14
+ hass.device.current = await hass.device.list();
15
+ logger.debug(`device registry updated`);
16
+ },
17
+ });
18
+ await SubscribeUpdates();
19
+ });
20
+ async function SubscribeUpdates() {
21
+ await hass.socket.sendMessage({
22
+ event_type: "device_registry_updated",
23
+ type: "subscribe_events",
24
+ });
25
+ }
26
+ async function list() {
27
+ return await hass.socket.sendMessage({
28
+ type: "config/device_registry/list",
29
+ });
30
+ }
31
+ return {
32
+ current: [],
33
+ list,
34
+ };
35
+ }
36
+ exports.Device = Device;
37
+ //# sourceMappingURL=device.extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device.extension.js","sourceRoot":"","sources":["../../src/extensions/device.extension.ts"],"names":[],"mappings":";;;AAIA,SAAgB,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAkB;IACtE,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,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAC/C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YACpB,OAAO;YACP,UAAU,EAAE,yBAAyB;YACrC,KAAK,CAAC,IAAI;gBACR,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC/C,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC1C,CAAC;SACF,CAAC,CAAC;QACH,MAAM,gBAAgB,EAAE,CAAC;IAC3B,CAAC,CAAC,CAAC;IAEH,KAAK,UAAU,gBAAgB;QAC7B,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;YAC5B,UAAU,EAAE,yBAAyB;YACrC,IAAI,EAAE,kBAAkB;SACzB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,IAAI;QACjB,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAkB;YACpD,IAAI,EAAE,6BAA6B;SACpC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,OAAO,EAAE,EAAqB;QAC9B,IAAI;KACL,CAAC;AACJ,CAAC;AAlCD,wBAkCC"}
@@ -1,5 +1,5 @@
1
1
  import { TBlackHole, TServiceParams } from "@digital-alchemy/core";
2
- import { ENTITY_STATE, EntityHistoryDTO, EntityHistoryResult, PICK_ENTITY } from "..";
2
+ import { EditLabelOptions, ENTITY_STATE, EntityHistoryDTO, EntityHistoryResult, EntityRegistryItem, PICK_ENTITY, TAreaId, TDeviceId, TFloorId, TLabelId } from "..";
3
3
  export declare const ENTITY_UPDATE_RECEIVER: unique symbol;
4
4
  export type ByIdProxy<ENTITY_ID extends PICK_ENTITY> = ENTITY_STATE<ENTITY_ID> & {
5
5
  entity_id: ENTITY_ID;
@@ -20,21 +20,24 @@ export type ByIdProxy<ENTITY_ID extends PICK_ENTITY> = ENTITY_STATE<ENTITY_ID> &
20
20
  */
21
21
  previous: ENTITY_STATE<ENTITY_ID>;
22
22
  };
23
- export declare function EntityManager({ logger, hass, lifecycle, internal, }: TServiceParams): {
23
+ export declare function EntityManager({ logger, hass, config, lifecycle, context, internal, }: TServiceParams): {
24
24
  /**
25
25
  * Internal library use only
26
26
  */
27
27
  [ENTITY_UPDATE_RECEIVER]: <ENTITY extends PICK_ENTITY = PICK_ENTITY>(entity_id: PICK_ENTITY, new_state: ENTITY_STATE<ENTITY>, old_state: ENTITY_STATE<ENTITY>) => void;
28
+ byArea: <DOMAIN extends "binary_sensor" | "button" | "calendar" | "light" | "scene" | "sensor" | "switch">(area: TAreaId, ...domains: DOMAIN[]) => PICK_ENTITY<DOMAIN>[];
29
+ byDevice: <DOMAIN_1 extends "binary_sensor" | "button" | "calendar" | "light" | "scene" | "sensor" | "switch">(device: TDeviceId, ...domains: DOMAIN_1[]) => PICK_ENTITY<DOMAIN_1>[];
30
+ byFloor: <DOMAIN_2 extends "binary_sensor" | "button" | "calendar" | "light" | "scene" | "sensor" | "switch">(floor: TFloorId, ...domains: DOMAIN_2[]) => PICK_ENTITY<DOMAIN_2>[];
28
31
  /**
29
32
  * Retrieves a proxy object for a specified entity. This proxy object
30
33
  * provides current values and event hooks for the entity.
31
- */
32
- byId: <ENTITY_ID extends PICK_ENTITY>(entity_id: ENTITY_ID) => ByIdProxy<ENTITY_ID>;
34
+ */ byId: <ENTITY_ID extends PICK_ENTITY>(entity_id: ENTITY_ID) => ByIdProxy<ENTITY_ID>;
35
+ byLabel: <DOMAIN_3 extends "binary_sensor" | "button" | "calendar" | "light" | "scene" | "sensor" | "switch">(label: TLabelId, ...domains: DOMAIN_3[]) => PICK_ENTITY<DOMAIN_3>[];
33
36
  /**
34
37
  * Lists all entities within a specified domain. This is useful for
35
38
  * domain-specific operations or queries.
36
39
  */
37
- findByDomain: <DOMAIN extends "binary_sensor" | "button" | "calendar" | "light" | "scene" | "sensor" | "switch">(domain: DOMAIN) => ByIdProxy<PICK_ENTITY>[];
40
+ findByDomain: <DOMAIN_4 extends "binary_sensor" | "button" | "calendar" | "light" | "scene" | "sensor" | "switch">(domain: DOMAIN_4) => ByIdProxy<PICK_ENTITY>[];
38
41
  /**
39
42
  * Retrieves the current state of a given entity. This method returns
40
43
  * raw data, offering a direct view of the entity's state at a given moment.
@@ -57,9 +60,22 @@ export declare function EntityManager({ logger, hass, lifecycle, internal, }: TS
57
60
  * synchronization with the latest state data from Home Assistant.
58
61
  */
59
62
  refresh: (recursion?: number) => Promise<void>;
63
+ /**
64
+ * Interact with the entity registry
65
+ */
66
+ registry: {
67
+ addLabel: ({ entity, label }: EditLabelOptions) => Promise<void>;
68
+ current: EntityRegistryItem<PICK_ENTITY>[];
69
+ get: <ENTITY_1 extends PICK_ENTITY>(entity_id: ENTITY_1) => Promise<EntityRegistryItem<ENTITY_1>>;
70
+ list: () => Promise<EntityRegistryItem<PICK_ENTITY>[]>;
71
+ removeLabel: ({ entity, label }: EditLabelOptions) => Promise<void>;
72
+ source: () => Promise<Record<PICK_ENTITY, {
73
+ domain: string;
74
+ }>>;
75
+ };
60
76
  };
61
77
  declare module "@digital-alchemy/core" {
62
78
  interface IsIt {
63
- entity(entity: PICK_ENTITY): entity is PICK_ENTITY;
79
+ entity(entity: string): entity is PICK_ENTITY;
64
80
  }
65
81
  }
@@ -12,8 +12,8 @@ const MAX_ATTEMPTS = 50;
12
12
  const FAILED_LOAD_DELAY = 5;
13
13
  const UNLIMITED = 0;
14
14
  const RECENT = 5;
15
- function EntityManager({ logger, hass, lifecycle, internal, }) {
16
- // # Local vars
15
+ function EntityManager({ logger, hass, config, lifecycle, context, internal, }) {
16
+ // #MARK: Local vars
17
17
  /**
18
18
  * MASTER_STATE.switch.desk_light = {entity_id,state,attributes,...}
19
19
  */
@@ -26,13 +26,12 @@ function EntityManager({ logger, hass, lifecycle, internal, }) {
26
26
  const event = new events_1.default();
27
27
  event.setMaxListeners(UNLIMITED);
28
28
  let init = false;
29
- // # Methods
30
- // ## Retrieve raw state object for entity
29
+ // #MARK: getCurrentState
31
30
  function getCurrentState(entity_id) {
32
31
  const out = internal.utils.object.get(MASTER_STATE, entity_id) ?? {};
33
32
  return out;
34
33
  }
35
- // ## Proxy version of the logic
34
+ // #MARK:proxyGetLogic
36
35
  function proxyGetLogic(entity, property) {
37
36
  if (!init) {
38
37
  return undefined;
@@ -49,7 +48,7 @@ function EntityManager({ logger, hass, lifecycle, internal, }) {
49
48
  }
50
49
  return internal.utils.object.get(current, property) || defaultValue;
51
50
  }
52
- // ## Retrieve a proxy by id
51
+ // #MARK: byId
53
52
  function byId(entity_id) {
54
53
  if (!ENTITY_PROXIES.has(entity_id)) {
55
54
  ENTITY_PROXIES.set(entity_id, new Proxy(getCurrentState(entity_id), {
@@ -102,7 +101,7 @@ function EntityManager({ logger, hass, lifecycle, internal, }) {
102
101
  }
103
102
  return ENTITY_PROXIES.get(entity_id);
104
103
  }
105
- // ## Retrieve entity history (via socket)
104
+ // #MARK: history
106
105
  async function history(payload) {
107
106
  logger.trace({ payload }, `looking up entity history`);
108
107
  const result = (await hass.socket.sendMessage({
@@ -125,15 +124,15 @@ function EntityManager({ logger, hass, lifecycle, internal, }) {
125
124
  return [key, value];
126
125
  }));
127
126
  }
128
- // ## Build a string array of all known entity ids
127
+ // #MARK: listEntities
129
128
  function listEntities() {
130
129
  return Object.keys(MASTER_STATE).flatMap(domain => Object.keys(MASTER_STATE[domain]).map(id => `${domain}.${id}`));
131
130
  }
132
- // ## Gather all entity proxies for a domain
131
+ // #MARK: findByDomain
133
132
  function findByDomain(domain) {
134
133
  return Object.keys(MASTER_STATE[domain] ?? {}).map(i => byId(`${domain}.${i}`));
135
134
  }
136
- // ## Load all entity state information from hass
135
+ // #MARK: refresh
137
136
  async function refresh(recursion = core_1.START) {
138
137
  const now = (0, dayjs_1.default)();
139
138
  if (lastRefresh) {
@@ -186,10 +185,10 @@ function EntityManager({ logger, hass, lifecycle, internal, }) {
186
185
  });
187
186
  init = true;
188
187
  }
189
- // ## is.entity definition
188
+ // #MARK: is.entity
190
189
  // Actually tie the type casting to real state
191
190
  core_1.is.entity = (entityId) => core_1.is.undefined(internal.utils.object.get(MASTER_STATE, entityId));
192
- // ## Receiver function for incoming entity updates
191
+ // #MARK: EntityUpdateReceiver
193
192
  function EntityUpdateReceiver(entity_id, new_state, old_state) {
194
193
  PREVIOUS_STATE.set(entity_id, old_state);
195
194
  if (new_state === null) {
@@ -206,16 +205,112 @@ function EntityManager({ logger, hass, lifecycle, internal, }) {
206
205
  logger.debug({ name: "onPostConfig" }, `pre populate {MASTER_STATE}`);
207
206
  await refresh();
208
207
  });
208
+ // #region Registry
209
+ async function AddLabel({ entity, label }) {
210
+ const current = await EntityGet(entity);
211
+ if (current?.labels?.includes(label)) {
212
+ logger.debug({ name: entity }, `already has label {%s}`, label);
213
+ return;
214
+ }
215
+ await hass.socket.sendMessage({
216
+ entity_id: entity,
217
+ labels: [...current.labels, label],
218
+ type: __1.UPDATE_REGISTRY,
219
+ });
220
+ }
221
+ async function EntitySource() {
222
+ return await hass.socket.sendMessage({ type: "entity/source" });
223
+ }
224
+ async function EntityList() {
225
+ return await hass.socket.sendMessage({
226
+ type: "config/entity_registry/list",
227
+ });
228
+ }
229
+ async function RemoveLabel({ entity, label }) {
230
+ const current = await EntityGet(entity);
231
+ if (!current?.labels?.includes(label)) {
232
+ logger.debug({ name: entity }, `does not have label {%s}`, label);
233
+ return;
234
+ }
235
+ logger.debug({ name: entity }, `removing label [%s]`, label);
236
+ await hass.socket.sendMessage({
237
+ entity_id: entity,
238
+ labels: current.labels.filter(i => i !== label),
239
+ type: __1.UPDATE_REGISTRY,
240
+ });
241
+ }
242
+ async function EntityGet(entity_id) {
243
+ return await hass.socket.sendMessage({
244
+ entity_id: entity_id,
245
+ type: "config/entity_registry/get",
246
+ });
247
+ }
248
+ hass.socket.onConnect(async () => {
249
+ if (!config.hass.AUTO_CONNECT_SOCKET || !config.hass.MANAGE_REGISTRY) {
250
+ return;
251
+ }
252
+ hass.entity.registry.current = await hass.entity.registry.list();
253
+ hass.socket.subscribe({
254
+ context,
255
+ event_type: "entity_registry_updated",
256
+ async exec() {
257
+ logger.debug("entity registry updated");
258
+ hass.entity.registry.current = await hass.entity.registry.list();
259
+ },
260
+ });
261
+ });
262
+ // #endregion
263
+ function byLabel(label, ...domains) {
264
+ const raw = hass.entity.registry.current.filter(i => i.labels.includes(label));
265
+ if (core_1.is.empty(domains)) {
266
+ return raw.map(i => i.entity_id);
267
+ }
268
+ return raw
269
+ .filter(entity => domains.some(domain => core_1.is.domain(entity.entity_id, domain)))
270
+ .map(i => i.entity_id);
271
+ }
272
+ function byArea(area, ...domains) {
273
+ const raw = hass.entity.registry.current.filter(i => i.area_id === area);
274
+ if (core_1.is.empty(domains)) {
275
+ return raw.map(i => i.entity_id);
276
+ }
277
+ return raw
278
+ .filter(entity => domains.some(domain => core_1.is.domain(entity.entity_id, domain)))
279
+ .map(i => i.entity_id);
280
+ }
281
+ function byDevice(device, ...domains) {
282
+ const raw = hass.entity.registry.current.filter(i => i.device_id === device);
283
+ if (core_1.is.empty(domains)) {
284
+ return raw.map(i => i.entity_id);
285
+ }
286
+ return raw
287
+ .filter(entity => domains.some(domain => core_1.is.domain(entity.entity_id, domain)))
288
+ .map(i => i.entity_id);
289
+ }
290
+ function byFloor(floor, ...domains) {
291
+ const areas = new Set(hass.area.current.filter(i => i.floor_id === floor).map(i => i.area_id));
292
+ const raw = hass.entity.registry.current.filter(i => areas.has(i.area_id));
293
+ if (core_1.is.empty(domains)) {
294
+ return raw.map(i => i.entity_id);
295
+ }
296
+ return raw
297
+ .filter(entity => domains.some(domain => core_1.is.domain(entity.entity_id, domain)))
298
+ .map(i => i.entity_id);
299
+ }
300
+ // #MARK: return object
209
301
  return {
210
302
  /**
211
303
  * Internal library use only
212
304
  */
213
305
  [exports.ENTITY_UPDATE_RECEIVER]: EntityUpdateReceiver,
306
+ byArea,
307
+ byDevice,
308
+ byFloor,
214
309
  /**
215
310
  * Retrieves a proxy object for a specified entity. This proxy object
216
311
  * provides current values and event hooks for the entity.
217
- */
218
- byId,
312
+ */ byId,
313
+ byLabel,
219
314
  /**
220
315
  * Lists all entities within a specified domain. This is useful for
221
316
  * domain-specific operations or queries.
@@ -241,7 +336,18 @@ function EntityManager({ logger, hass, lifecycle, internal, }) {
241
336
  * synchronization with the latest state data from Home Assistant.
242
337
  */
243
338
  refresh,
339
+ /**
340
+ * Interact with the entity registry
341
+ */
342
+ registry: {
343
+ addLabel: AddLabel,
344
+ current: [],
345
+ get: EntityGet,
346
+ list: EntityList,
347
+ removeLabel: RemoveLabel,
348
+ source: EntitySource,
349
+ },
244
350
  };
245
351
  }
246
352
  exports.EntityManager = EntityManager;
247
- //# sourceMappingURL=entity-manager.extension.js.map
353
+ //# sourceMappingURL=entity.extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity.extension.js","sourceRoot":"","sources":["../../src/extensions/entity.extension.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { TServiceParams } from "@digital-alchemy/core";
2
+ import { TFloorId } from "../dynamic";
3
+ import { FloorCreate, FloorDetails } from "../helpers";
4
+ export declare function Floor({ hass, config, context, logger }: TServiceParams): {
5
+ create(details: FloorCreate): Promise<void>;
6
+ current: FloorDetails[];
7
+ delete(floor_id: TFloorId): Promise<void>;
8
+ list(): Promise<FloorDetails[]>;
9
+ update(details: FloorDetails): Promise<void>;
10
+ };
11
+ declare module "@digital-alchemy/core" {
12
+ interface IsIt {
13
+ floor(floor: string): floor is TFloorId;
14
+ }
15
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Floor = void 0;
4
+ const core_1 = require("@digital-alchemy/core");
5
+ function Floor({ hass, config, context, logger }) {
6
+ hass.socket.onConnect(async () => {
7
+ if (!config.hass.AUTO_CONNECT_SOCKET || !config.hass.MANAGE_REGISTRY) {
8
+ return;
9
+ }
10
+ hass.floor.current = await hass.floor.list();
11
+ hass.socket.subscribe({
12
+ context,
13
+ event_type: "floor_registry_updated",
14
+ async exec() {
15
+ hass.floor.current = await hass.floor.list();
16
+ logger.debug(`floor registry updated`);
17
+ },
18
+ });
19
+ });
20
+ core_1.is.floor = (floor) => hass.floor.current.some(i => i.floor_id === floor);
21
+ return {
22
+ async create(details) {
23
+ await hass.socket.sendMessage({
24
+ type: "config/floor_registry/create",
25
+ ...details,
26
+ });
27
+ },
28
+ current: [],
29
+ async delete(floor_id) {
30
+ await hass.socket.sendMessage({
31
+ floor_id,
32
+ type: "config/floor_registry/delete",
33
+ });
34
+ },
35
+ async list() {
36
+ return await hass.socket.sendMessage({
37
+ type: "config/floor_registry/list",
38
+ });
39
+ },
40
+ async update(details) {
41
+ await hass.socket.sendMessage({
42
+ type: "config/floor_registry/update",
43
+ ...details,
44
+ });
45
+ },
46
+ };
47
+ }
48
+ exports.Floor = Floor;
49
+ //# sourceMappingURL=floor.extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"floor.extension.js","sourceRoot":"","sources":["../../src/extensions/floor.extension.ts"],"names":[],"mappings":";;;AAAA,gDAA2D;AAK3D,SAAgB,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAkB;IACrE,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,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YACpB,OAAO;YACP,UAAU,EAAE,wBAAwB;YACpC,KAAK,CAAC,IAAI;gBACR,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC7C,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YACzC,CAAC;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,SAAE,CAAC,KAAK,GAAG,CAAC,KAAa,EAAqB,EAAE,CAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC;IAErD,OAAO;QACL,KAAK,CAAC,MAAM,CAAC,OAAoB;YAC/B,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC5B,IAAI,EAAE,8BAA8B;gBACpC,GAAG,OAAO;aACX,CAAC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,EAAoB;QAC7B,KAAK,CAAC,MAAM,CAAC,QAAkB;YAC7B,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC5B,QAAQ;gBACR,IAAI,EAAE,8BAA8B;aACrC,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,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC5B,IAAI,EAAE,8BAA8B;gBACpC,GAAG,OAAO;aACX,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AA7CD,sBA6CC"}
@@ -1,6 +1,12 @@
1
+ export * from "./area.extension";
2
+ export * from "./backup.extension";
1
3
  export * from "./call-proxy.extension";
2
4
  export * from "./config.extension";
3
- export * from "./entity-manager.extension";
5
+ export * from "./device.extension";
6
+ export * from "./entity.extension";
4
7
  export * from "./fetch-api.extension";
5
- export * from "./utilities.extension";
8
+ export * from "./floor.extension";
9
+ export * from "./label.extension";
10
+ export * from "./registry.extension";
6
11
  export * from "./websocket-api.extension";
12
+ export * from "./zone.extension";