@digital-alchemy/hass 25.5.1 → 25.5.2

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 (82) hide show
  1. package/dist/hass.module.d.mts +13 -1
  2. package/dist/hass.module.mjs +16 -1
  3. package/dist/hass.module.mjs.map +1 -1
  4. package/dist/helpers/fetch.mjs +0 -1
  5. package/dist/helpers/fetch.mjs.map +1 -1
  6. package/dist/helpers/utility.d.mts +1 -0
  7. package/dist/helpers/utility.mjs +4 -0
  8. package/dist/helpers/utility.mjs.map +1 -1
  9. package/dist/mock_assistant/mock-assistant.module.d.mts +12 -0
  10. package/dist/services/area.service.mjs +9 -1
  11. package/dist/services/area.service.mjs.map +1 -1
  12. package/dist/services/call-proxy.service.mjs +10 -2
  13. package/dist/services/call-proxy.service.mjs.map +1 -1
  14. package/dist/services/config.service.mjs +15 -13
  15. package/dist/services/config.service.mjs.map +1 -1
  16. package/dist/services/device.service.mjs +3 -1
  17. package/dist/services/device.service.mjs.map +1 -1
  18. package/dist/services/diagnostics.service.d.mts +26 -0
  19. package/dist/services/diagnostics.service.mjs +41 -0
  20. package/dist/services/diagnostics.service.mjs.map +1 -0
  21. package/dist/services/entity.service.mjs +12 -1
  22. package/dist/services/entity.service.mjs.map +1 -1
  23. package/dist/services/fetch-api.service.mjs +8 -2
  24. package/dist/services/fetch-api.service.mjs.map +1 -1
  25. package/dist/services/floor.service.mjs +3 -1
  26. package/dist/services/floor.service.mjs.map +1 -1
  27. package/dist/services/id-by.service.mjs +2 -1
  28. package/dist/services/id-by.service.mjs.map +1 -1
  29. package/dist/services/index.d.mts +1 -0
  30. package/dist/services/index.mjs +1 -0
  31. package/dist/services/index.mjs.map +1 -1
  32. package/dist/services/label.service.mjs +3 -1
  33. package/dist/services/label.service.mjs.map +1 -1
  34. package/dist/services/reference.service.mjs +15 -4
  35. package/dist/services/reference.service.mjs.map +1 -1
  36. package/dist/services/registry.service.mjs +8 -8
  37. package/dist/services/registry.service.mjs.map +1 -1
  38. package/dist/services/websocket-api.service.mjs +10 -2
  39. package/dist/services/websocket-api.service.mjs.map +1 -1
  40. package/dist/services/zone.service.mjs +3 -1
  41. package/dist/services/zone.service.mjs.map +1 -1
  42. package/dist/testing/area.spec.mjs +141 -132
  43. package/dist/testing/area.spec.mjs.map +1 -1
  44. package/dist/testing/device.spec.mjs +17 -0
  45. package/dist/testing/device.spec.mjs.map +1 -1
  46. package/dist/testing/entity.spec.mjs +167 -0
  47. package/dist/testing/entity.spec.mjs.map +1 -1
  48. package/dist/testing/fetch.spec.d.mts +1 -0
  49. package/dist/testing/fetch.spec.mjs +45 -0
  50. package/dist/testing/fetch.spec.mjs.map +1 -0
  51. package/dist/testing/floor.spec.mjs +17 -0
  52. package/dist/testing/floor.spec.mjs.map +1 -1
  53. package/dist/testing/label.spec.mjs +17 -0
  54. package/dist/testing/label.spec.mjs.map +1 -1
  55. package/dist/testing/zone.spec.mjs +24 -5
  56. package/dist/testing/zone.spec.mjs.map +1 -1
  57. package/package.json +17 -17
  58. package/src/hass.module.mts +18 -0
  59. package/src/helpers/fetch.mts +1 -1
  60. package/src/helpers/utility.mts +5 -0
  61. package/src/services/area.service.mts +9 -0
  62. package/src/services/call-proxy.service.mts +16 -9
  63. package/src/services/config.service.mts +21 -16
  64. package/src/services/device.service.mts +3 -0
  65. package/src/services/diagnostics.service.mts +45 -0
  66. package/src/services/entity.service.mts +12 -0
  67. package/src/services/fetch-api.service.mts +11 -2
  68. package/src/services/floor.service.mts +3 -0
  69. package/src/services/id-by.service.mts +2 -1
  70. package/src/services/index.mts +1 -0
  71. package/src/services/label.service.mts +3 -0
  72. package/src/services/reference.service.mts +15 -3
  73. package/src/services/registry.service.mts +8 -8
  74. package/src/services/websocket-api.service.mts +10 -2
  75. package/src/services/zone.service.mts +3 -0
  76. package/src/testing/area.spec.mts +153 -140
  77. package/src/testing/device.spec.mts +22 -0
  78. package/src/testing/entity.spec.mts +201 -0
  79. package/src/testing/fetch.spec.mts +54 -0
  80. package/src/testing/floor.spec.mts +22 -0
  81. package/src/testing/label.spec.mts +22 -0
  82. package/src/testing/zone.spec.mts +29 -5
@@ -0,0 +1,45 @@
1
+ import { subscribe } from "node:diagnostics_channel";
2
+ import { hassTestRunner } from "../mock_assistant/index.mjs";
3
+ describe("Fetch", () => {
4
+ const BASE_URL = "http://homeassistant.local:8123";
5
+ afterEach(async () => {
6
+ await hassTestRunner.teardown();
7
+ vi.restoreAllMocks();
8
+ });
9
+ describe("API", () => {
10
+ describe("Diagnostics", () => {
11
+ it("should publish diagnostics on fetch operation", async () => {
12
+ expect.assertions(1);
13
+ hassTestRunner.configure({
14
+ hass: {
15
+ BASE_URL,
16
+ EMIT_DIAGNOSTICS: true,
17
+ },
18
+ });
19
+ await hassTestRunner.run(({ lifecycle, hass }) => {
20
+ const mockResponse = { data: "test response" };
21
+ vi.spyOn(globalThis, "fetch").mockImplementation(async () => {
22
+ return {
23
+ text: async () => JSON.stringify(mockResponse),
24
+ };
25
+ });
26
+ const spy = vi.fn();
27
+ subscribe(hass.diagnostics.fetch.fetch.name, spy);
28
+ lifecycle.onPostConfig(() => {
29
+ hass.fetch._fetcher.base_url = BASE_URL;
30
+ hass.fetch._fetcher.base_headers = { Authorization: "Bearer test_token" };
31
+ });
32
+ lifecycle.onReady(async () => {
33
+ await hass.fetch.fetch({ url: "/api/test" });
34
+ expect(spy).toHaveBeenCalledWith(expect.objectContaining({
35
+ ms: expect.any(Number),
36
+ options: expect.objectContaining({ url: "/api/test" }),
37
+ out: mockResponse,
38
+ }), hass.diagnostics.fetch.fetch.name);
39
+ });
40
+ });
41
+ });
42
+ });
43
+ });
44
+ });
45
+ //# sourceMappingURL=fetch.spec.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetch.spec.mjs","sourceRoot":"","sources":["../../src/testing/fetch.spec.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IACrB,MAAM,QAAQ,GAAG,iCAAiC,CAAC;IAEnD,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,cAAc,CAAC,QAAQ,EAAE,CAAC;QAChC,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;QACnB,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;YAC3B,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;gBAC7D,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACrB,cAAc,CAAC,SAAS,CAAC;oBACvB,IAAI,EAAE;wBACJ,QAAQ;wBACR,gBAAgB,EAAE,IAAI;qBACvB;iBACF,CAAC,CAAC;gBACH,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE;oBAC/C,MAAM,YAAY,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;oBAC/C,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE;wBAC1D,OAAO;4BACL,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;yBACxB,CAAC;oBAC3B,CAAC,CAAC,CAAC;oBAEH,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;oBACpB,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBAElD,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE;wBAC1B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;wBACxC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,GAAG,EAAE,aAAa,EAAE,mBAAmB,EAAE,CAAC;oBAC5E,CAAC,CAAC,CAAC;oBAEH,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;wBAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;wBAC7C,MAAM,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAC9B,MAAM,CAAC,gBAAgB,CAAC;4BACtB,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;4BACtB,OAAO,EAAE,MAAM,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;4BACtD,GAAG,EAAE,YAAY;yBAClB,CAAC,EACF,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAClC,CAAC;oBACJ,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { subscribe } from "node:diagnostics_channel";
1
2
  import { sleep } from "@digital-alchemy/core";
2
3
  import { FLOOR_REGISTRY_UPDATED } from "../helpers/index.mjs";
3
4
  import { hassTestRunner } from "../mock_assistant/index.mjs";
@@ -87,6 +88,22 @@ describe("Floor", () => {
87
88
  });
88
89
  });
89
90
  });
91
+ it("should publish diagnostics on floor registry update", async () => {
92
+ expect.assertions(1);
93
+ hassTestRunner.configure({ hass: { EMIT_DIAGNOSTICS: true } });
94
+ await hassTestRunner.run(({ lifecycle, hass }) => {
95
+ vi.spyOn(hass.socket, "sendMessage").mockImplementation(async () => undefined);
96
+ const spy = vi.fn();
97
+ subscribe(hass.diagnostics.floor.registry_update.name, spy);
98
+ lifecycle.onReady(async () => {
99
+ setImmediate(async () => {
100
+ hass.socket.socketEvents.emit("floor_registry_updated");
101
+ });
102
+ await sleep(100);
103
+ expect(spy).toHaveBeenCalledWith(expect.objectContaining({ ms: expect.any(Number) }), hass.diagnostics.floor.registry_update.name);
104
+ });
105
+ });
106
+ });
90
107
  });
91
108
  describe("Order of operations", () => {
92
109
  it("should wait for an update before returning when updating", async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"floor.spec.mjs","sourceRoot":"","sources":["../../src/testing/floor.spec.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"floor.spec.mjs","sourceRoot":"","sources":["../../src/testing/floor.spec.mts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { subscribe } from "node:diagnostics_channel";
1
2
  import { sleep } from "@digital-alchemy/core";
2
3
  import { LABEL_REGISTRY_UPDATED } from "../helpers/index.mjs";
3
4
  import { hassTestRunner } from "../mock_assistant/index.mjs";
@@ -87,6 +88,22 @@ describe("Label", () => {
87
88
  });
88
89
  });
89
90
  });
91
+ it("should publish diagnostics on label registry update", async () => {
92
+ expect.assertions(1);
93
+ hassTestRunner.configure({ hass: { EMIT_DIAGNOSTICS: true } });
94
+ await hassTestRunner.run(({ lifecycle, hass }) => {
95
+ vi.spyOn(hass.socket, "sendMessage").mockImplementation(async () => undefined);
96
+ const spy = vi.fn();
97
+ subscribe(hass.diagnostics.label.registry_update.name, spy);
98
+ lifecycle.onReady(async () => {
99
+ setImmediate(async () => {
100
+ hass.socket.socketEvents.emit("label_registry_updated");
101
+ });
102
+ await sleep(100);
103
+ expect(spy).toHaveBeenCalledWith(expect.objectContaining({ ms: expect.any(Number) }), hass.diagnostics.label.registry_update.name);
104
+ });
105
+ });
106
+ });
90
107
  });
91
108
  describe("Order of operations", () => {
92
109
  it("should wait for an update before returning when updating", async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"label.spec.mjs","sourceRoot":"","sources":["../../src/testing/label.spec.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"label.spec.mjs","sourceRoot":"","sources":["../../src/testing/label.spec.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAE9C,OAAO,EAAE,sBAAsB,EAAmB,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IACrB,MAAM,aAAa,GAAG;QACpB,KAAK,EAAE,QAAQ;QACf,WAAW,EAAE,MAAM;QACnB,IAAI,EAAE,WAAW;QACjB,QAAQ,EAAE,SAAS;QACnB,IAAI,EAAE,SAAS;KACc,CAAC;IAEhC,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,cAAc,CAAC,QAAQ,EAAE,CAAC;QAChC,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE;gBAC/C,MAAM,GAAG,GAAG,EAAE;qBACX,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC;qBACjC,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;gBACnD,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;oBAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;oBACxB,MAAM,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAC9B,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC,CAChE,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;QACnB,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;YAC1B,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;gBACzC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACrB,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE;oBAC/C,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;oBACpF,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;wBAC3B,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;wBACxB,MAAM,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAC9B,MAAM,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC,CAChE,CAAC;oBACJ,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;gBAC3C,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACrB,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;oBACtD,MAAM,GAAG,GAAG,EAAE;yBACX,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC;yBACjC,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC;oBAC7C,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;wBAC3B,YAAY,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;wBACvD,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;wBAEvC,MAAM,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC;4BAC/B,IAAI,EAAE,8BAA8B;4BACpC,GAAG,aAAa;yBACjB,CAAC,CAAC;oBACL,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;gBAC3C,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACrB,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;oBACtD,MAAM,GAAG,GAAG,EAAE;yBACX,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC;yBACjC,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC;oBAC7C,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;wBAC3B,YAAY,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;wBACvD,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;wBAEhD,MAAM,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC;4BAC/B,QAAQ,EAAE,SAAS;4BACnB,IAAI,EAAE,8BAA8B;yBACrC,CAAC,CAAC;oBACL,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;gBAC3C,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACrB,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;oBACtD,MAAM,GAAG,GAAG,EAAE;yBACX,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC;yBACjC,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC;oBAC7C,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;wBAC3B,YAAY,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;wBACvD,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;wBAEvC,MAAM,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC;4BAC/B,IAAI,EAAE,8BAA8B;4BACpC,GAAG,aAAa;yBACjB,CAAC,CAAC;oBACL,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;gBACnE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACrB,cAAc,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC/D,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE;oBAC/C,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC;oBAC/E,MAAM,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;oBACpB,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBAC5D,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;wBAC3B,YAAY,CAAC,KAAK,IAAI,EAAE;4BACtB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;wBAC1D,CAAC,CAAC,CAAC;wBACH,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;wBACjB,MAAM,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAC9B,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EACnD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAC5C,CAAC;oBACJ,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;YACnC,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;gBACxE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACrB,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;oBACtD,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC;oBAC/E,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;wBAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;wBAClD,IAAI,KAAK,GAAG,EAAE,CAAC;wBACf,UAAU,CAAC,GAAG,EAAE;4BACd,KAAK,IAAI,GAAG,CAAC;4BACb,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;wBACrC,CAAC,EAAE,CAAC,CAAC,CAAC;wBACN,MAAM,QAAQ,CAAC;wBACf,KAAK,IAAI,GAAG,CAAC;wBACb,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAC9B,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;gBAChD,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACrB,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE;oBAC/C,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC;oBAC/E,IAAI,OAAO,GAAG,CAAC,CAAC;oBAChB,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;oBACnD,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;wBAC3B,YAAY,CAAC,KAAK,IAAI,EAAE;4BACtB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;4BACxD,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;4BACf,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;4BACxD,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC;4BACf,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;4BACxD,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;4BAChB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;wBAC1D,CAAC,CAAC,CAAC;wBACH,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;wBACjB,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC1B,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;gBACxE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACrB,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;oBACtD,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC;oBAC/E,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;wBAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,eAA2B,CAAC,CAAC;wBAChE,IAAI,KAAK,GAAG,EAAE,CAAC;wBACf,UAAU,CAAC,GAAG,EAAE;4BACd,KAAK,IAAI,GAAG,CAAC;4BACb,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;wBACrC,CAAC,EAAE,CAAC,CAAC,CAAC;wBACN,MAAM,QAAQ,CAAC;wBACf,KAAK,IAAI,GAAG,CAAC;wBACb,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAC9B,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;gBACxE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBACrB,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;oBACtD,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC,SAAS,CAAC,CAAC;oBAC/E,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;wBAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;wBAClD,IAAI,KAAK,GAAG,EAAE,CAAC;wBACf,UAAU,CAAC,GAAG,EAAE;4BACd,KAAK,IAAI,GAAG,CAAC;4BACb,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;wBACrC,CAAC,EAAE,CAAC,CAAC,CAAC;wBACN,MAAM,QAAQ,CAAC;wBACf,KAAK,IAAI,GAAG,CAAC;wBACb,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBAC9B,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { subscribe } from "node:diagnostics_channel";
1
2
  import { sleep } from "@digital-alchemy/core";
2
3
  import { ZONE_REGISTRY_UPDATED } from "../helpers/index.mjs";
3
4
  import { hassTestRunner } from "../mock_assistant/index.mjs";
@@ -7,11 +8,13 @@ describe("Zone", () => {
7
8
  vi.restoreAllMocks();
8
9
  });
9
10
  const EXAMPLE_ZONE = {
10
- icon: "",
11
- latitude: 0,
12
- longitude: 0,
13
- name: "Test",
14
- passive: true,
11
+ icon: "mdi:map-marker",
12
+ id: "test",
13
+ latitude: 37.7749,
14
+ longitude: -122.4194,
15
+ name: "Example Zone",
16
+ passive: false,
17
+ radius: 100,
15
18
  };
16
19
  describe("Lifecycle", () => {
17
20
  it("should force values to be available before ready", async () => {
@@ -55,6 +58,22 @@ describe("Zone", () => {
55
58
  });
56
59
  });
57
60
  });
61
+ it("should publish diagnostics on zone registry update", async () => {
62
+ expect.assertions(1);
63
+ hassTestRunner.configure({ hass: { EMIT_DIAGNOSTICS: true } });
64
+ await hassTestRunner.run(({ lifecycle, hass }) => {
65
+ vi.spyOn(hass.socket, "sendMessage").mockImplementation(async () => undefined);
66
+ const spy = vi.fn();
67
+ subscribe(hass.diagnostics.zone.registry_update.name, spy);
68
+ lifecycle.onReady(async () => {
69
+ setImmediate(async () => {
70
+ hass.socket.socketEvents.emit("zone_registry_updated");
71
+ });
72
+ await sleep(100);
73
+ expect(spy).toHaveBeenCalledWith(expect.objectContaining({ ms: expect.any(Number) }), hass.diagnostics.zone.registry_update.name);
74
+ });
75
+ });
76
+ });
58
77
  });
59
78
  describe("Order of operations", () => {
60
79
  it("should debounce updates properly", async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"zone.spec.mjs","sourceRoot":"","sources":["../../src/testing/zone.spec.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zone.spec.mjs","sourceRoot":"","sources":["../../src/testing/zone.spec.mts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "name": "@digital-alchemy/hass",
4
4
  "repository": "https://github.com/Digital-Alchemy-TS/hass",
5
5
  "homepage": "https://docs.digital-alchemy.app",
6
- "version": "25.5.1",
6
+ "version": "25.5.2",
7
7
  "description": "Typescript APIs for Home Assistant. Includes rest & websocket bindings",
8
8
  "scripts": {
9
9
  "build": "rm -rf dist/; tsc",
@@ -58,42 +58,42 @@
58
58
  },
59
59
  "license": "MIT",
60
60
  "devDependencies": {
61
- "@cspell/eslint-plugin": "^9.0.1",
62
- "@digital-alchemy/core": "^25.5.1",
61
+ "@cspell/eslint-plugin": "^9.0.2",
62
+ "@digital-alchemy/core": "^25.5.2",
63
63
  "@digital-alchemy/synapse": "^25.3.1",
64
- "@digital-alchemy/type-writer": "^25.3.2",
64
+ "@digital-alchemy/type-writer": "^25.5.1",
65
65
  "@eslint/compat": "^1.2.9",
66
66
  "@eslint/eslintrc": "^3.3.1",
67
- "@eslint/js": "^9.26.0",
68
- "@faker-js/faker": "^9.7.0",
67
+ "@eslint/js": "^9.28.0",
68
+ "@faker-js/faker": "^9.8.0",
69
69
  "@types/js-yaml": "^4.0.9",
70
- "@types/node": "^22.15.17",
70
+ "@types/node": "^22.15.29",
71
71
  "@types/node-cron": "^3.0.11",
72
72
  "@types/semver": "^7.7.0",
73
73
  "@types/ws": "^8.18.1",
74
- "@typescript-eslint/eslint-plugin": "8.32.0",
75
- "@typescript-eslint/parser": "8.32.0",
76
- "@vitest/coverage-v8": "^3.1.3",
74
+ "@typescript-eslint/eslint-plugin": "8.33.0",
75
+ "@typescript-eslint/parser": "8.33.0",
76
+ "@vitest/coverage-v8": "^3.1.4",
77
77
  "dayjs": "^1.11.13",
78
78
  "dotenv": "^16.5.0",
79
- "eslint": "9.26.0",
79
+ "eslint": "9.28.0",
80
80
  "eslint-config-prettier": "10.1.5",
81
81
  "eslint-plugin-import": "^2.31.0",
82
- "eslint-plugin-jsonc": "^2.20.0",
82
+ "eslint-plugin-jsonc": "^2.20.1",
83
83
  "eslint-plugin-no-unsanitized": "^4.1.2",
84
- "eslint-plugin-prettier": "^5.4.0",
84
+ "eslint-plugin-prettier": "^5.4.1",
85
85
  "eslint-plugin-security": "^3.0.1",
86
86
  "eslint-plugin-simple-import-sort": "^12.1.1",
87
87
  "eslint-plugin-sonarjs": "^3.0.2",
88
88
  "eslint-plugin-sort-keys-fix": "^1.1.2",
89
89
  "eslint-plugin-unicorn": "^59.0.1",
90
- "node-cron": "^3.0.3",
90
+ "node-cron": "^4.1.0",
91
91
  "prettier": "^3.5.3",
92
- "semver": "^7.7.1",
92
+ "semver": "^7.7.2",
93
93
  "tsx": "^4.19.4",
94
94
  "typescript": "^5.8.3",
95
95
  "uuid": "^11.1.0",
96
- "vitest": "^3.1.3",
96
+ "vitest": "^3.1.4",
97
97
  "ws": "^8.18.2"
98
98
  },
99
99
  "peerDependencies": {
@@ -101,7 +101,7 @@
101
101
  },
102
102
  "dependencies": {
103
103
  "dayjs": "^1.11.13",
104
- "semver": "^7.7.1",
104
+ "semver": "^7.7.2",
105
105
  "type-fest": "^4.41.0",
106
106
  "uuid": "^11.1.0",
107
107
  "ws": "^8.18.2"
@@ -11,6 +11,7 @@ import {
11
11
  FetchAPI,
12
12
  FetchInternals,
13
13
  Floor,
14
+ HassDiagnosticsService,
14
15
  IDByExtension,
15
16
  Label,
16
17
  ReferenceService,
@@ -32,6 +33,18 @@ export const LIB_HASS = CreateLibrary({
32
33
  type: "string",
33
34
  },
34
35
 
36
+ /**
37
+ * Setting this to true will tell hass.diagnostics to create the related channels & start emitting
38
+ */
39
+ EMIT_DIAGNOSTICS: {
40
+ default: false,
41
+ description: [
42
+ "Enable the creation of diagnostics channels",
43
+ "Value read at bootstrap, cannot be set by env or at runtime",
44
+ ],
45
+ type: "boolean",
46
+ },
47
+
35
48
  /**
36
49
  * When adding new integrations, app will receive 1 update event for everything that changes.
37
50
  * This can result in a flood of updates where only a single one is needed at the very end.
@@ -161,6 +174,11 @@ export const LIB_HASS = CreateLibrary({
161
174
  */
162
175
  device: Device,
163
176
 
177
+ /**
178
+ *
179
+ */
180
+ diagnostics: HassDiagnosticsService,
181
+
164
182
  /**
165
183
  * retrieve and interact with home assistant entities
166
184
  */
@@ -129,7 +129,7 @@ export type FilterValueType = string | boolean | number | Date | RegExp | Record
129
129
  */
130
130
  export enum FILTER_OPERATIONS {
131
131
  // "elemMatch" functionality in mongo
132
- // eslint-disable-next-line unicorn/prevent-abbreviations
132
+
133
133
  elem = "elem",
134
134
  regex = "regex",
135
135
  in = "in",
@@ -98,3 +98,8 @@ export const PostConfigPriorities = {
98
98
  FETCH: 1,
99
99
  VALIDATE: -1,
100
100
  } as const;
101
+
102
+ export const perf = () => {
103
+ const start = performance.now();
104
+ return () => performance.now() - start;
105
+ };
@@ -7,6 +7,7 @@ import {
7
7
  EARLY_ON_READY,
8
8
  ENTITY_REGISTRY_UPDATED,
9
9
  HassAreaService,
10
+ perf,
10
11
  } from "../index.mts";
11
12
  import { ANY_ENTITY, TAreaId } from "../user.mts";
12
13
 
@@ -30,10 +31,12 @@ export function Area({
30
31
  context,
31
32
  event_type: "area_registry_updated",
32
33
  async exec() {
34
+ const ms = perf();
33
35
  await debounce(AREA_REGISTRY_UPDATED, config.hass.EVENT_DEBOUNCE_MS);
34
36
  hass.area.current = await hass.area.list();
35
37
  logger.debug(`area registry updated`);
36
38
  event.emit(AREA_REGISTRY_UPDATED);
39
+ hass.diagnostics.area?.registry_update.publish({ ms: ms() });
37
40
  },
38
41
  });
39
42
  });
@@ -44,6 +47,12 @@ export function Area({
44
47
  });
45
48
  }
46
49
 
50
+ /**
51
+ * 1. emit delete message
52
+ * 2. hass does stuff internally
53
+ * 3. hass emits update message
54
+ * 4. promise resolves
55
+ */
47
56
  async function deleteArea(area_id: TAreaId) {
48
57
  return await new Promise<void>(async done => {
49
58
  event.once(AREA_REGISTRY_UPDATED, done);
@@ -1,6 +1,11 @@
1
1
  import { TServiceParams } from "@digital-alchemy/core";
2
2
 
3
- import { ALL_SERVICE_DOMAINS, PICK_SERVICE, PICK_SERVICE_PARAMETERS } from "../helpers/index.mts";
3
+ import {
4
+ ALL_SERVICE_DOMAINS,
5
+ perf,
6
+ PICK_SERVICE,
7
+ PICK_SERVICE_PARAMETERS,
8
+ } from "../helpers/index.mts";
4
9
  import { iCallService } from "../user.mts";
5
10
 
6
11
  export function CallProxy({
@@ -49,6 +54,7 @@ export function CallProxy({
49
54
  );
50
55
  logger.trace({ name: loadServiceList, services }, `loaded domain [%s]`, value.domain);
51
56
  });
57
+ hass.diagnostics.call?.reload.publish({});
52
58
  }
53
59
 
54
60
  /**
@@ -69,19 +75,20 @@ export function CallProxy({
69
75
  const [domain, service] = serviceName.split(".");
70
76
  // User can just not await this call if they don't care about the "waitForChange"
71
77
 
78
+ const ms = perf();
72
79
  if (!return_response) {
73
- return await hass.socket.sendMessage(
74
- { domain, service, service_data, type: "call_service" },
75
- true,
76
- );
80
+ const payload = { domain, service, service_data, type: "call_service" };
81
+ const out = await hass.socket.sendMessage(payload, true);
82
+ hass.diagnostics.call?.fast.publish({ ms: ms(), payload });
83
+ return out;
77
84
  }
78
- const result = (await hass.socket.sendMessage(
79
- { domain, return_response, service, service_data, type: "call_service" },
80
- true,
81
- )) as { response: unknown };
85
+
86
+ const payload = { domain, return_response, service, service_data, type: "call_service" };
87
+ const result = (await hass.socket.sendMessage(payload, true)) as { response: unknown };
82
88
  if (!result?.response) {
83
89
  logger.warn({ result }, `{%s}.{%s} did not return a response`, domain, service);
84
90
  }
91
+ hass.diagnostics.call?.response.publish({ ms: ms(), payload, result });
85
92
  return result?.response;
86
93
  }
87
94
 
@@ -24,6 +24,9 @@ export function Configure({
24
24
  internal,
25
25
  }: TServiceParams): HassConfigService {
26
26
  const { is } = internal.utils;
27
+ let checkedServices = new Map<string, boolean>();
28
+ let services: HassServiceDTO[];
29
+
27
30
  lifecycle.onPreInit(() => {
28
31
  // HASSIO_TOKEN provided by home assistant to addons
29
32
  // SUPERVISOR_TOKEN used as alias elsewhere
@@ -70,7 +73,6 @@ export function Configure({
70
73
  }
71
74
  }, PostConfigPriorities.VALIDATE);
72
75
 
73
- let services: HassServiceDTO[];
74
76
  async function loadServiceList(recursion = START): Promise<void> {
75
77
  logger.debug({ name: loadServiceList }, `fetching service list`);
76
78
  services = await hass.fetch.listServices();
@@ -85,28 +87,31 @@ export function Configure({
85
87
  recursion,
86
88
  MAX_ATTEMPTS,
87
89
  );
90
+ hass.diagnostics.config?.load_services_failure.publish({ recursion });
88
91
  await sleep(config.hass.RETRY_INTERVAL * SECOND);
89
92
  await loadServiceList(recursion + INCREMENT);
90
- } else {
91
- event.emit(SERVICE_LIST_UPDATED, services);
92
- checkedServices = new Map();
93
+ return;
93
94
  }
95
+ event.emit(SERVICE_LIST_UPDATED, services);
96
+ checkedServices = new Map();
97
+ hass.diagnostics.config?.service_list_updated.publish({ recursion });
98
+ }
99
+
100
+ function isService<DOMAIN extends ALL_SERVICE_DOMAINS>(
101
+ domain: DOMAIN,
102
+ service: string,
103
+ ): service is Extract<keyof iCallService[DOMAIN], string> {
104
+ if (checkedServices.has(service)) {
105
+ return checkedServices.get(service);
106
+ }
107
+ const exists = services.some(i => i.domain === domain && !is.undefined(i.services[service]));
108
+ checkedServices.set(service, exists);
109
+ return exists;
94
110
  }
95
- let checkedServices = new Map<string, boolean>();
96
111
 
97
112
  return {
98
113
  getServices: () => services,
99
- isService: <DOMAIN extends ALL_SERVICE_DOMAINS>(
100
- domain: DOMAIN,
101
- service: string,
102
- ): service is Extract<keyof iCallService[DOMAIN], string> => {
103
- if (checkedServices.has(service)) {
104
- return checkedServices.get(service);
105
- }
106
- const exists = services.some(i => i.domain === domain && !is.undefined(i.services[service]));
107
- checkedServices.set(service, exists);
108
- return exists;
109
- },
114
+ isService,
110
115
  loadServiceList,
111
116
  };
112
117
  }
@@ -5,6 +5,7 @@ import {
5
5
  DeviceDetails,
6
6
  EARLY_ON_READY,
7
7
  HassDeviceService,
8
+ perf,
8
9
  } from "../helpers/index.mts";
9
10
 
10
11
  export function Device({
@@ -28,10 +29,12 @@ export function Device({
28
29
  context,
29
30
  event_type: "device_registry_updated",
30
31
  async exec() {
32
+ const ms = perf();
31
33
  await debounce(DEVICE_REGISTRY_UPDATED, config.hass.EVENT_DEBOUNCE_MS);
32
34
  hass.device.current = await hass.device.list();
33
35
  logger.debug(`device registry updated`);
34
36
  event.emit(DEVICE_REGISTRY_UPDATED);
37
+ hass.diagnostics.device?.registry_update.publish({ ms: ms() });
35
38
  },
36
39
  });
37
40
  });
@@ -0,0 +1,45 @@
1
+ import { TServiceParams } from "@digital-alchemy/core";
2
+ import { channel } from "diagnostics_channel";
3
+
4
+ function createDiagnostics<CHANNEL extends string>(context: string, channels: CHANNEL[]) {
5
+ return Object.fromEntries(channels.map(i => [i, channel(`hass:${context}:${i}`)])) as Record<
6
+ CHANNEL,
7
+ ReturnType<typeof channel>
8
+ >;
9
+ }
10
+ export function HassDiagnosticsService({ config, logger }: TServiceParams) {
11
+ if (!config.hass.EMIT_DIAGNOSTICS) {
12
+ logger.debug("skipping diagnostics channel creation");
13
+ return {};
14
+ }
15
+ logger.info("creating diagnostics channels");
16
+ return {
17
+ area: createDiagnostics("area", ["registry_update"]),
18
+ call: createDiagnostics("call", ["fast", "response", "reload"]),
19
+ config: createDiagnostics("config", ["service_list_updated", "load_services_failure"]),
20
+ device: createDiagnostics("device", ["registry_update"]),
21
+ entity: createDiagnostics("entity", [
22
+ "warn_ready",
23
+ "history_lookup",
24
+ "refresh_entities",
25
+ "entity_updated",
26
+ "registry_updated",
27
+ "entity_remove",
28
+ "entity_add",
29
+ ]),
30
+ fetch: createDiagnostics("fetch", ["fetch"]),
31
+ floor: createDiagnostics("floor", ["registry_update"]),
32
+ label: createDiagnostics("label", ["registry_update"]),
33
+ reference: createDiagnostics("reference", ["create_proxy", "get_property", "call_service"]),
34
+ websocket: createDiagnostics("websocket", [
35
+ "fire_event",
36
+ "message_received",
37
+ "missed_reply",
38
+ "send_message",
39
+ "failed_ping",
40
+ "send_ping",
41
+ "set_connection_state",
42
+ ]),
43
+ zone: createDiagnostics("zone", ["registry_update"]),
44
+ };
45
+ }