@digital-alchemy/hass 0.3.35 → 24.6.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 (53) hide show
  1. package/README.md +1 -1
  2. package/dist/extensions/entity.extension.d.ts +41 -11
  3. package/dist/extensions/entity.extension.js +36 -169
  4. package/dist/extensions/entity.extension.js.map +1 -1
  5. package/dist/extensions/id-by.extension.d.ts +10 -0
  6. package/dist/extensions/id-by.extension.js +67 -0
  7. package/dist/extensions/id-by.extension.js.map +1 -0
  8. package/dist/extensions/index.d.ts +2 -0
  9. package/dist/extensions/index.js +2 -0
  10. package/dist/extensions/index.js.map +1 -1
  11. package/dist/extensions/reference.extension.d.ts +24 -0
  12. package/dist/extensions/reference.extension.js +117 -0
  13. package/dist/extensions/reference.extension.js.map +1 -0
  14. package/dist/extensions/websocket-api.extension.d.ts +1 -1
  15. package/dist/extensions/websocket-api.extension.js +1 -1
  16. package/dist/hass.module.d.ts +10 -0
  17. package/dist/hass.module.js +10 -0
  18. package/dist/hass.module.js.map +1 -1
  19. package/dist/testing/id-by.spec.js +148 -0
  20. package/dist/testing/id-by.spec.js.map +1 -0
  21. package/dist/testing/ref-by.spec.js +139 -0
  22. package/dist/testing/ref-by.spec.js.map +1 -0
  23. package/package.json +10 -10
  24. package/dist/e2e/app/entities.d.ts +0 -29
  25. package/dist/e2e/app/entities.js +0 -21
  26. package/dist/e2e/app/entities.js.map +0 -1
  27. package/dist/e2e/app/main.d.ts +0 -10
  28. package/dist/e2e/app/main.js +0 -15
  29. package/dist/e2e/app/main.js.map +0 -1
  30. package/dist/e2e/area.spec.js +0 -99
  31. package/dist/e2e/area.spec.js.map +0 -1
  32. package/dist/e2e/call-proxy.spec.js +0 -57
  33. package/dist/e2e/call-proxy.spec.js.map +0 -1
  34. package/dist/e2e/device.spec.d.ts +0 -1
  35. package/dist/e2e/device.spec.js +0 -27
  36. package/dist/e2e/device.spec.js.map +0 -1
  37. package/dist/e2e/entity.spec.d.ts +0 -1
  38. package/dist/e2e/entity.spec.js +0 -328
  39. package/dist/e2e/entity.spec.js.map +0 -1
  40. package/dist/e2e/fetch.spec.d.ts +0 -1
  41. package/dist/e2e/fetch.spec.js +0 -79
  42. package/dist/e2e/fetch.spec.js.map +0 -1
  43. package/dist/e2e/floor.spec.d.ts +0 -1
  44. package/dist/e2e/floor.spec.js +0 -81
  45. package/dist/e2e/floor.spec.js.map +0 -1
  46. package/dist/e2e/label.spec.d.ts +0 -1
  47. package/dist/e2e/label.spec.js +0 -82
  48. package/dist/e2e/label.spec.js.map +0 -1
  49. package/dist/e2e/utils.d.ts +0 -2
  50. package/dist/e2e/utils.js +0 -7
  51. package/dist/e2e/utils.js.map +0 -1
  52. /package/dist/{e2e/area.spec.d.ts → testing/id-by.spec.d.ts} +0 -0
  53. /package/dist/{e2e/call-proxy.spec.d.ts → testing/ref-by.spec.d.ts} +0 -0
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ReferenceExtension = void 0;
4
+ const core_1 = require("@digital-alchemy/core");
5
+ const helpers_1 = require("../helpers");
6
+ function ReferenceExtension({ hass, logger, internal }) {
7
+ const ENTITY_PROXIES = new Map();
8
+ // #MARK:proxyGetLogic
9
+ function proxyGetLogic(entity, property) {
10
+ const valid = ["state", "attributes", "last"].some(i => property.startsWith(i));
11
+ if (!valid) {
12
+ logger.error({ entity, name: proxyGetLogic, property }, `invalid property lookup`);
13
+ return undefined;
14
+ }
15
+ const current = hass.entity.getCurrentState(entity);
16
+ const defaultValue = (property === "state" ? undefined : {});
17
+ if (!current) {
18
+ logger.error({ defaultValue, name: entity, property }, `proxyGetLogic cannot find entity`);
19
+ }
20
+ return internal.utils.object.get(current, property) || defaultValue;
21
+ }
22
+ // #MARK: byId
23
+ function byId(entity_id) {
24
+ const entity_domain = (0, helpers_1.domain)(entity_id);
25
+ if (!ENTITY_PROXIES.has(entity_id)) {
26
+ ENTITY_PROXIES.set(entity_id, new Proxy(hass.entity.getCurrentState(entity_id), {
27
+ // things that shouldn't be needed: this extract
28
+ get: (_, property) => {
29
+ if (property === "onUpdate") {
30
+ return (callback) => {
31
+ const removableCallback = async (a, b) => await internal.safeExec(async () => callback(a, b, remove));
32
+ function remove() {
33
+ hass.entity
34
+ ._entityEvents()
35
+ .removeListener(entity_id, removableCallback);
36
+ }
37
+ hass.entity._entityEvents().on(entity_id, removableCallback);
38
+ return { remove };
39
+ };
40
+ }
41
+ if (property === "removeAllListeners") {
42
+ return function () {
43
+ hass.entity._entityEvents().removeAllListeners(entity_id);
44
+ };
45
+ }
46
+ if (property === "once") {
47
+ return (callback) => hass.entity
48
+ ._entityEvents()
49
+ .once(entity_id, async (a, b) => callback(a, b));
50
+ }
51
+ if (property === "entity_id") {
52
+ return entity_id;
53
+ }
54
+ if (property === "previous") {
55
+ return hass.entity.previousState(entity_id);
56
+ }
57
+ if (property === "nextState") {
58
+ return async () => await new Promise(done => {
59
+ hass.entity
60
+ ._entityEvents()
61
+ .once(entity_id, (entity) => done(entity));
62
+ });
63
+ }
64
+ if (hass.configure.isService(entity_domain, property)) {
65
+ return async function (data = {}) {
66
+ // @ts-expect-error it's fine
67
+ return await hass.call[entity_domain][property]({
68
+ entity_id,
69
+ ...data,
70
+ });
71
+ };
72
+ }
73
+ return proxyGetLogic(entity_id, property);
74
+ },
75
+ set(_, property, value) {
76
+ if (property === "state") {
77
+ setImmediate(async () => {
78
+ logger.debug({ entity_id, state: value }, `emitting set state via rest`);
79
+ await hass.fetch.updateEntity(entity_id, {
80
+ state: value,
81
+ });
82
+ });
83
+ return true;
84
+ }
85
+ if (property === "attributes") {
86
+ if (!core_1.is.object(value)) {
87
+ logger.error(`can only provide objects as attributes`);
88
+ return false;
89
+ }
90
+ setImmediate(async () => {
91
+ logger.debug({ attributes: Object.keys(value), entity_id }, `updating attributes via rest`);
92
+ await hass.fetch.updateEntity(entity_id, {
93
+ attributes: value,
94
+ });
95
+ });
96
+ return true;
97
+ }
98
+ logger.error({ entity_id, property }, `cannot set property on entity`);
99
+ return false;
100
+ },
101
+ }));
102
+ }
103
+ return ENTITY_PROXIES.get(entity_id);
104
+ }
105
+ return {
106
+ area: (area, ...domains) => hass.idBy.area(area, ...domains).map(id => byId(id)),
107
+ device: (device, ...domains) => hass.idBy.device(device, ...domains).map(id => byId(id)),
108
+ floor: (floor, ...domains) => hass.idBy.floor(floor, ...domains).map(id => byId(id)),
109
+ id: byId,
110
+ label: (label, ...domains) => hass.idBy.label(label, ...domains).map(id => byId(id)),
111
+ platform: (platform, ...domains) => hass.idBy
112
+ .platform(platform, ...domains)
113
+ .map(id => byId(id)),
114
+ };
115
+ }
116
+ exports.ReferenceExtension = ReferenceExtension;
117
+ //# sourceMappingURL=reference.extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reference.extension.js","sourceRoot":"","sources":["../../src/extensions/reference.extension.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,7 @@ export declare function WebsocketAPI({ context, event, hass, config, internal, l
20
20
  fireEvent: (event_type: string, event_data?: object) => Promise<unknown>;
21
21
  /**
22
22
  * Set up a new websocket connection to home assistant
23
- *
23
+ *f
24
24
  * This doesn't normally need to be called by applications, the extension self manages
25
25
  */
26
26
  init: () => Promise<void>;
@@ -465,7 +465,7 @@ function WebsocketAPI({ context, event, hass, config, internal, lifecycle, logge
465
465
  fireEvent,
466
466
  /**
467
467
  * Set up a new websocket connection to home assistant
468
- *
468
+ *f
469
469
  * This doesn't normally need to be called by applications, the extension self manages
470
470
  */
471
471
  init,
@@ -1,5 +1,7 @@
1
1
  import { StringConfig } from "@digital-alchemy/core";
2
2
  import { Area, Backup, CallProxy, Configure, Device, EntityManager, FetchAPI, Floor, Label, Registry, WebsocketAPI, Zone } from "./extensions";
3
+ import { IDByExtension } from "./extensions/id-by.extension";
4
+ import { ReferenceExtension } from "./extensions/reference.extension";
3
5
  type AllowRestOptions = "prefer" | "allow" | "forbid";
4
6
  export declare const LIB_HASS: import("@digital-alchemy/core").LibraryDefinition<{
5
7
  area: typeof Area;
@@ -22,7 +24,15 @@ export declare const LIB_HASS: import("@digital-alchemy/core").LibraryDefinition
22
24
  */
23
25
  fetch: typeof FetchAPI;
24
26
  floor: typeof Floor;
27
+ /**
28
+ * Search for entity ids in a type safe way
29
+ */
30
+ idBy: typeof IDByExtension;
25
31
  label: typeof Label;
32
+ /**
33
+ * Obtain references to entities
34
+ */
35
+ refBy: typeof ReferenceExtension;
26
36
  /**
27
37
  * Interact with the home assistant registry
28
38
  */
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LIB_HASS = void 0;
4
4
  const core_1 = require("@digital-alchemy/core");
5
5
  const extensions_1 = require("./extensions");
6
+ const id_by_extension_1 = require("./extensions/id-by.extension");
7
+ const reference_extension_1 = require("./extensions/reference.extension");
6
8
  exports.LIB_HASS = (0, core_1.CreateLibrary)({
7
9
  configuration: {
8
10
  AUTO_CONNECT_SOCKET: {
@@ -111,7 +113,15 @@ exports.LIB_HASS = (0, core_1.CreateLibrary)({
111
113
  */
112
114
  fetch: extensions_1.FetchAPI,
113
115
  floor: extensions_1.Floor,
116
+ /**
117
+ * Search for entity ids in a type safe way
118
+ */
119
+ idBy: id_by_extension_1.IDByExtension,
114
120
  label: extensions_1.Label,
121
+ /**
122
+ * Obtain references to entities
123
+ */
124
+ refBy: reference_extension_1.ReferenceExtension,
115
125
  /**
116
126
  * Interact with the home assistant registry
117
127
  */
@@ -1 +1 @@
1
- {"version":3,"file":"hass.module.js","sourceRoot":"","sources":["../src/hass.module.ts"],"names":[],"mappings":";;;AAAA,gDAAoE;AAEpE,6CAasB;AAIT,QAAA,QAAQ,GAAG,IAAA,oBAAa,EAAC;IACpC,aAAa,EAAE;QACb,mBAAmB,EAAE;YACnB,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,wDAAwD;YACrE,IAAI,EAAE,SAAS;SAChB;QACD,oBAAoB,EAAE;YACpB,OAAO,EAAE,IAAI;YACb,WAAW,EACT,+DAA+D;YACjE,IAAI,EAAE,SAAS;SAChB;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,iCAAiC;YAC1C,WAAW,EAAE,gCAAgC;YAC7C,IAAI,EAAE,QAAQ;SACf;QACD,qBAAqB,EAAE;YACrB,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE;gBACX,yDAAyD;gBACzD,yCAAyC;aAC1C;YACD,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC;YACnC,IAAI,EAAE,QAAQ;SACmB;QACnC,qBAAqB,EAAE;YACrB,OAAO,EAAE,CAAC;YACV,WAAW,EACT,gHAAgH;YAClH,IAAI,EAAE,QAAQ;SACf;QACD,eAAe,EAAE;YACf,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,0BAA0B;YACvC,IAAI,EAAE,SAAS;SAChB;QACD,WAAW,EAAE;YACX,OAAO,EAAE,KAAK;YACd,WAAW,EAAE;gBACX,8CAA8C;gBAC9C,kBAAkB;aACnB;YACD,IAAI,EAAE,SAAS;SAChB;QACD,cAAc,EAAE;YACd,OAAO,EAAE,CAAC;YACV,WAAW,EACT,gEAAgE;YAClE,IAAI,EAAE,QAAQ;SACf;QACD,mBAAmB,EAAE;YACnB,OAAO,EAAE,CAAC;YACV,WAAW,EACT,uFAAuF;YACzF,IAAI,EAAE,QAAQ;SACf;QACD,6BAA6B,EAAE;YAC7B,OAAO,EAAE,GAAG;YACZ,WAAW,EACT,oJAAoJ;YACtJ,IAAI,EAAE,QAAQ;SACf;QACD,4BAA4B,EAAE;YAC5B,OAAO,EAAE,GAAG;YACZ,WAAW,EACT,kHAAkH;YACpH,IAAI,EAAE,QAAQ;SACf;QACD,KAAK,EAAE;YACL,WAAW,EAAE,4CAA4C;YACzD,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,QAAQ;SACf;QACD,cAAc,EAAE;YACd,OAAO,EAAE,IAAI;YACb,WAAW,EACT,oEAAoE;YACtE,IAAI,EAAE,SAAS;SAChB;QACD,sBAAsB,EAAE;YACtB,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,qCAAqC;YAClD,IAAI,EAAE,SAAS;SAChB;QACD,aAAa,EAAE;YACb,WAAW,EAAE,8GAA8G;YAC3H,IAAI,EAAE,QAAQ;SACf;KACF;IACD,IAAI,EAAE,MAAM;IACZ,oCAAoC;IACpC,YAAY,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;IACjC,QAAQ,EAAE;QACR,IAAI,EAAE,iBAAI;QAEV,MAAM,EAAE,mBAAM;QAEd;;WAEG;QACH,IAAI,EAAE,sBAAS;QAEf;;WAEG;QACH,SAAS,EAAE,sBAAS;QAEpB,MAAM,EAAE,mBAAM;QAEd;;WAEG;QACH,MAAM,EAAE,0BAAa;QACrB;;WAEG;QACH,KAAK,EAAE,qBAAQ;QACf,KAAK,EAAE,kBAAK;QAEZ,KAAK,EAAE,kBAAK;QAEZ;;WAEG;QACH,QAAQ,EAAE,qBAAQ;QAElB;;WAEG;QACH,MAAM,EAAE,yBAAY;QACpB,IAAI,EAAE,iBAAI;KACX;CACF,CAAC,CAAC"}
1
+ {"version":3,"file":"hass.module.js","sourceRoot":"","sources":["../src/hass.module.ts"],"names":[],"mappings":";;;AAAA,gDAAoE;AAEpE,6CAasB;AACtB,kEAA6D;AAC7D,0EAAsE;AAIzD,QAAA,QAAQ,GAAG,IAAA,oBAAa,EAAC;IACpC,aAAa,EAAE;QACb,mBAAmB,EAAE;YACnB,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,wDAAwD;YACrE,IAAI,EAAE,SAAS;SAChB;QACD,oBAAoB,EAAE;YACpB,OAAO,EAAE,IAAI;YACb,WAAW,EACT,+DAA+D;YACjE,IAAI,EAAE,SAAS;SAChB;QACD,QAAQ,EAAE;YACR,OAAO,EAAE,iCAAiC;YAC1C,WAAW,EAAE,gCAAgC;YAC7C,IAAI,EAAE,QAAQ;SACf;QACD,qBAAqB,EAAE;YACrB,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE;gBACX,yDAAyD;gBACzD,yCAAyC;aAC1C;YACD,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC;YACnC,IAAI,EAAE,QAAQ;SACmB;QACnC,qBAAqB,EAAE;YACrB,OAAO,EAAE,CAAC;YACV,WAAW,EACT,gHAAgH;YAClH,IAAI,EAAE,QAAQ;SACf;QACD,eAAe,EAAE;YACf,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,0BAA0B;YACvC,IAAI,EAAE,SAAS;SAChB;QACD,WAAW,EAAE;YACX,OAAO,EAAE,KAAK;YACd,WAAW,EAAE;gBACX,8CAA8C;gBAC9C,kBAAkB;aACnB;YACD,IAAI,EAAE,SAAS;SAChB;QACD,cAAc,EAAE;YACd,OAAO,EAAE,CAAC;YACV,WAAW,EACT,gEAAgE;YAClE,IAAI,EAAE,QAAQ;SACf;QACD,mBAAmB,EAAE;YACnB,OAAO,EAAE,CAAC;YACV,WAAW,EACT,uFAAuF;YACzF,IAAI,EAAE,QAAQ;SACf;QACD,6BAA6B,EAAE;YAC7B,OAAO,EAAE,GAAG;YACZ,WAAW,EACT,oJAAoJ;YACtJ,IAAI,EAAE,QAAQ;SACf;QACD,4BAA4B,EAAE;YAC5B,OAAO,EAAE,GAAG;YACZ,WAAW,EACT,kHAAkH;YACpH,IAAI,EAAE,QAAQ;SACf;QACD,KAAK,EAAE;YACL,WAAW,EAAE,4CAA4C;YACzD,QAAQ,EAAE,IAAI;YACd,IAAI,EAAE,QAAQ;SACf;QACD,cAAc,EAAE;YACd,OAAO,EAAE,IAAI;YACb,WAAW,EACT,oEAAoE;YACtE,IAAI,EAAE,SAAS;SAChB;QACD,sBAAsB,EAAE;YACtB,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,qCAAqC;YAClD,IAAI,EAAE,SAAS;SAChB;QACD,aAAa,EAAE;YACb,WAAW,EAAE,8GAA8G;YAC3H,IAAI,EAAE,QAAQ;SACf;KACF;IACD,IAAI,EAAE,MAAM;IACZ,oCAAoC;IACpC,YAAY,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;IACjC,QAAQ,EAAE;QACR,IAAI,EAAE,iBAAI;QAEV,MAAM,EAAE,mBAAM;QAEd;;WAEG;QACH,IAAI,EAAE,sBAAS;QAEf;;WAEG;QACH,SAAS,EAAE,sBAAS;QAEpB,MAAM,EAAE,mBAAM;QAEd;;WAEG;QACH,MAAM,EAAE,0BAAa;QAErB;;WAEG;QACH,KAAK,EAAE,qBAAQ;QACf,KAAK,EAAE,kBAAK;QAEZ;;WAEG;QACH,IAAI,EAAE,+BAAa;QAEnB,KAAK,EAAE,kBAAK;QAEZ;;WAEG;QACH,KAAK,EAAE,wCAAkB;QAEzB;;WAEG;QACH,QAAQ,EAAE,qBAAQ;QAElB;;WAEG;QACH,MAAM,EAAE,yBAAY;QACpB,IAAI,EAAE,iBAAI;KACX;CACF,CAAC,CAAC"}
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const mock_assistant_1 = require("../mock_assistant");
4
+ describe("ID By", () => {
5
+ let application;
6
+ afterEach(async () => {
7
+ if (application) {
8
+ await application.teardown();
9
+ application = undefined;
10
+ }
11
+ jest.restoreAllMocks();
12
+ });
13
+ describe("area", () => {
14
+ it("find entities by area", async () => {
15
+ expect.assertions(2);
16
+ application = (0, mock_assistant_1.CreateTestingApplication)({
17
+ Test({ lifecycle, hass }) {
18
+ lifecycle.onReady(() => {
19
+ const bedroom = hass.idBy.area("bedroom");
20
+ const kitchen = hass.idBy.area("kitchen");
21
+ expect(bedroom.length).toBe(1);
22
+ expect(kitchen.length).toBe(1);
23
+ });
24
+ },
25
+ });
26
+ await application.bootstrap((0, mock_assistant_1.SILENT_BOOT)({ hass: { MOCK_SOCKET: true } }, true));
27
+ });
28
+ it("find entities by area limiting by domain", async () => {
29
+ expect.assertions(2);
30
+ application = (0, mock_assistant_1.CreateTestingApplication)({
31
+ Test({ lifecycle, hass }) {
32
+ lifecycle.onReady(() => {
33
+ const bedroom = hass.idBy.area("bedroom", "light");
34
+ const kitchen = hass.idBy.area("kitchen", "light");
35
+ expect(bedroom.length).toBe(0);
36
+ expect(kitchen.length).toBe(0);
37
+ });
38
+ },
39
+ });
40
+ await application.bootstrap((0, mock_assistant_1.SILENT_BOOT)({ hass: { MOCK_SOCKET: true } }, true));
41
+ });
42
+ });
43
+ describe("label", () => {
44
+ it("find entities by label", async () => {
45
+ expect.assertions(1);
46
+ application = (0, mock_assistant_1.CreateTestingApplication)({
47
+ Test({ lifecycle, hass }) {
48
+ lifecycle.onReady(() => {
49
+ const synapse = hass.idBy.label("synapse");
50
+ expect(synapse.length).toBe(7);
51
+ });
52
+ },
53
+ });
54
+ await application.bootstrap((0, mock_assistant_1.SILENT_BOOT)({ hass: { MOCK_SOCKET: true } }, true));
55
+ });
56
+ it("find entities by label limiting by domain", async () => {
57
+ expect.assertions(1);
58
+ application = (0, mock_assistant_1.CreateTestingApplication)({
59
+ Test({ lifecycle, hass }) {
60
+ lifecycle.onReady(() => {
61
+ const synapse = hass.idBy.label("synapse", "light");
62
+ expect(synapse.length).toBe(0);
63
+ });
64
+ },
65
+ });
66
+ await application.bootstrap((0, mock_assistant_1.SILENT_BOOT)({ hass: { MOCK_SOCKET: true } }, true));
67
+ });
68
+ });
69
+ describe("device", () => {
70
+ it("find entities by device", async () => {
71
+ expect.assertions(1);
72
+ application = (0, mock_assistant_1.CreateTestingApplication)({
73
+ Test({ lifecycle, hass }) {
74
+ lifecycle.onReady(() => {
75
+ const synapse = hass.idBy.device("308e39cf50a9fc6c30b4110724ed1f2e");
76
+ expect(synapse.length).toBe(9);
77
+ });
78
+ },
79
+ });
80
+ await application.bootstrap((0, mock_assistant_1.SILENT_BOOT)({ hass: { MOCK_SOCKET: true } }, true));
81
+ });
82
+ it("find entities by device limiting by domain", async () => {
83
+ expect.assertions(1);
84
+ application = (0, mock_assistant_1.CreateTestingApplication)({
85
+ Test({ lifecycle, hass }) {
86
+ lifecycle.onReady(() => {
87
+ const synapse = hass.idBy.device("308e39cf50a9fc6c30b4110724ed1f2e", "light");
88
+ expect(synapse.length).toBe(0);
89
+ });
90
+ },
91
+ });
92
+ await application.bootstrap((0, mock_assistant_1.SILENT_BOOT)({ hass: { MOCK_SOCKET: true } }, true));
93
+ });
94
+ });
95
+ describe("platform", () => {
96
+ it("find entities by platform", async () => {
97
+ expect.assertions(1);
98
+ application = (0, mock_assistant_1.CreateTestingApplication)({
99
+ Test({ lifecycle, hass }) {
100
+ lifecycle.onReady(() => {
101
+ const synapse = hass.idBy.platform("synapse");
102
+ expect(synapse.length).toBe(7);
103
+ });
104
+ },
105
+ });
106
+ await application.bootstrap((0, mock_assistant_1.SILENT_BOOT)({ hass: { MOCK_SOCKET: true } }, true));
107
+ });
108
+ it("find entities by platform limiting by domain", async () => {
109
+ expect.assertions(1);
110
+ application = (0, mock_assistant_1.CreateTestingApplication)({
111
+ Test({ lifecycle, hass }) {
112
+ lifecycle.onReady(() => {
113
+ const synapse = hass.idBy.platform("synapse", "light");
114
+ expect(synapse.length).toBe(0);
115
+ });
116
+ },
117
+ });
118
+ await application.bootstrap((0, mock_assistant_1.SILENT_BOOT)({ hass: { MOCK_SOCKET: true } }, true));
119
+ });
120
+ });
121
+ describe("floor", () => {
122
+ it("find entities by floor", async () => {
123
+ expect.assertions(1);
124
+ application = (0, mock_assistant_1.CreateTestingApplication)({
125
+ Test({ lifecycle, hass }) {
126
+ lifecycle.onReady(() => {
127
+ const synapse = hass.idBy.floor("downstairs");
128
+ expect(synapse.length).toBe(2);
129
+ });
130
+ },
131
+ });
132
+ await application.bootstrap((0, mock_assistant_1.SILENT_BOOT)({ hass: { MOCK_SOCKET: true } }, true));
133
+ });
134
+ it("find entities by floor limiting by domain", async () => {
135
+ expect.assertions(1);
136
+ application = (0, mock_assistant_1.CreateTestingApplication)({
137
+ Test({ lifecycle, hass }) {
138
+ lifecycle.onReady(() => {
139
+ const synapse = hass.idBy.floor("downstairs", "light");
140
+ expect(synapse.length).toBe(0);
141
+ });
142
+ },
143
+ });
144
+ await application.bootstrap((0, mock_assistant_1.SILENT_BOOT)({ hass: { MOCK_SOCKET: true } }, true));
145
+ });
146
+ });
147
+ });
148
+ //# sourceMappingURL=id-by.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id-by.spec.js","sourceRoot":"","sources":["../../src/testing/id-by.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const mock_assistant_1 = require("../mock_assistant");
4
+ describe("ID By", () => {
5
+ let application;
6
+ afterEach(async () => {
7
+ if (application) {
8
+ await application.teardown();
9
+ application = undefined;
10
+ }
11
+ jest.restoreAllMocks();
12
+ });
13
+ describe("id", () => {
14
+ //
15
+ });
16
+ describe("label", () => {
17
+ it("load references by label", async () => {
18
+ expect.assertions(1);
19
+ application = (0, mock_assistant_1.CreateTestingApplication)({
20
+ Test({ lifecycle, hass }) {
21
+ lifecycle.onReady(() => {
22
+ const sensor = hass.refBy.id("sensor.sun_next_dawn");
23
+ expect(sensor.state).toBe("2024-05-03T03:24:45+00:00");
24
+ });
25
+ },
26
+ });
27
+ await application.bootstrap((0, mock_assistant_1.SILENT_BOOT)({ hass: { MOCK_SOCKET: true } }, true));
28
+ });
29
+ });
30
+ describe("area", () => {
31
+ it("load references by area", async () => {
32
+ expect.assertions(2);
33
+ application = (0, mock_assistant_1.CreateTestingApplication)({
34
+ Test({ lifecycle, hass }) {
35
+ lifecycle.onReady(() => {
36
+ const bedroom = hass.refBy.area("bedroom");
37
+ const kitchen = hass.refBy.area("kitchen");
38
+ expect(bedroom.length).toBe(1);
39
+ expect(kitchen.length).toBe(1);
40
+ });
41
+ },
42
+ });
43
+ await application.bootstrap((0, mock_assistant_1.SILENT_BOOT)({ hass: { MOCK_SOCKET: true } }, true));
44
+ });
45
+ it("load references by area limiting by domain", async () => {
46
+ expect.assertions(2);
47
+ application = (0, mock_assistant_1.CreateTestingApplication)({
48
+ Test({ lifecycle, hass }) {
49
+ lifecycle.onReady(() => {
50
+ const bedroom = hass.refBy.area("bedroom", "light");
51
+ const kitchen = hass.refBy.area("kitchen", "light");
52
+ expect(bedroom.length).toBe(0);
53
+ expect(kitchen.length).toBe(0);
54
+ });
55
+ },
56
+ });
57
+ await application.bootstrap((0, mock_assistant_1.SILENT_BOOT)({ hass: { MOCK_SOCKET: true } }, true));
58
+ });
59
+ });
60
+ describe("device", () => {
61
+ it("load references by device", async () => {
62
+ expect.assertions(1);
63
+ application = (0, mock_assistant_1.CreateTestingApplication)({
64
+ Test({ lifecycle, hass }) {
65
+ lifecycle.onReady(() => {
66
+ const synapse = hass.refBy.device("308e39cf50a9fc6c30b4110724ed1f2e");
67
+ expect(synapse.length).toBe(9);
68
+ });
69
+ },
70
+ });
71
+ await application.bootstrap((0, mock_assistant_1.SILENT_BOOT)({ hass: { MOCK_SOCKET: true } }, true));
72
+ });
73
+ it("load references by device limiting by domain", async () => {
74
+ expect.assertions(1);
75
+ application = (0, mock_assistant_1.CreateTestingApplication)({
76
+ Test({ lifecycle, hass }) {
77
+ lifecycle.onReady(() => {
78
+ const synapse = hass.refBy.device("308e39cf50a9fc6c30b4110724ed1f2e", "light");
79
+ expect(synapse.length).toBe(0);
80
+ });
81
+ },
82
+ });
83
+ await application.bootstrap((0, mock_assistant_1.SILENT_BOOT)({ hass: { MOCK_SOCKET: true } }, true));
84
+ });
85
+ });
86
+ describe("platform", () => {
87
+ it("load references by platform", async () => {
88
+ expect.assertions(1);
89
+ application = (0, mock_assistant_1.CreateTestingApplication)({
90
+ Test({ lifecycle, hass }) {
91
+ lifecycle.onReady(() => {
92
+ const synapse = hass.refBy.platform("synapse");
93
+ expect(synapse.length).toBe(7);
94
+ });
95
+ },
96
+ });
97
+ await application.bootstrap((0, mock_assistant_1.SILENT_BOOT)({ hass: { MOCK_SOCKET: true } }, true));
98
+ });
99
+ it("load references by platform limiting by domain", async () => {
100
+ expect.assertions(1);
101
+ application = (0, mock_assistant_1.CreateTestingApplication)({
102
+ Test({ lifecycle, hass }) {
103
+ lifecycle.onReady(() => {
104
+ const synapse = hass.refBy.platform("synapse", "light");
105
+ expect(synapse.length).toBe(0);
106
+ });
107
+ },
108
+ });
109
+ await application.bootstrap((0, mock_assistant_1.SILENT_BOOT)({ hass: { MOCK_SOCKET: true } }, true));
110
+ });
111
+ });
112
+ describe("floor", () => {
113
+ it("load references by floor", async () => {
114
+ expect.assertions(1);
115
+ application = (0, mock_assistant_1.CreateTestingApplication)({
116
+ Test({ lifecycle, hass }) {
117
+ lifecycle.onReady(() => {
118
+ const synapse = hass.refBy.floor("downstairs");
119
+ expect(synapse.length).toBe(2);
120
+ });
121
+ },
122
+ });
123
+ await application.bootstrap((0, mock_assistant_1.SILENT_BOOT)({ hass: { MOCK_SOCKET: true } }, true));
124
+ });
125
+ it("load references by floor limiting by domain", async () => {
126
+ expect.assertions(1);
127
+ application = (0, mock_assistant_1.CreateTestingApplication)({
128
+ Test({ lifecycle, hass }) {
129
+ lifecycle.onReady(() => {
130
+ const synapse = hass.refBy.floor("downstairs", "light");
131
+ expect(synapse.length).toBe(0);
132
+ });
133
+ },
134
+ });
135
+ await application.bootstrap((0, mock_assistant_1.SILENT_BOOT)({ hass: { MOCK_SOCKET: true } }, true));
136
+ });
137
+ });
138
+ });
139
+ //# sourceMappingURL=ref-by.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ref-by.spec.js","sourceRoot":"","sources":["../../src/testing/ref-by.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@digital-alchemy/hass",
3
3
  "repository": "https://github.com/Digital-Alchemy-TS/hass",
4
4
  "homepage": "https://docs.digital-alchemy.app/Hass",
5
- "version": "0.3.35",
5
+ "version": "24.06.2",
6
6
  "scripts": {
7
7
  "build": "rm -rf dist/; tsc",
8
8
  "lint": "eslint src",
@@ -29,13 +29,13 @@
29
29
  },
30
30
  "license": "MIT",
31
31
  "dependencies": {
32
- "@digital-alchemy/core": "^0.3.18",
32
+ "@digital-alchemy/core": "^24.6.1",
33
33
  "dayjs": "^1.11.11",
34
34
  "prom-client": "^15.1.2",
35
35
  "ws": "^8.17.0"
36
36
  },
37
37
  "devDependencies": {
38
- "@cspell/eslint-plugin": "^8.7.0",
38
+ "@cspell/eslint-plugin": "^8.8.4",
39
39
  "@digital-alchemy/synapse": "^0.3.8",
40
40
  "@digital-alchemy/type-writer": "^0.3.13",
41
41
  "@types/figlet": "^1.5.8",
@@ -43,11 +43,11 @@
43
43
  "@types/js-yaml": "^4.0.9",
44
44
  "@types/minimist": "^1.2.5",
45
45
  "@types/mute-stream": "^0.0.4",
46
- "@types/node": "^20.12.7",
46
+ "@types/node": "^20.14.2",
47
47
  "@types/uuid": "^9.0.8",
48
48
  "@types/ws": "^8.5.10",
49
- "@typescript-eslint/eslint-plugin": "7.8.0",
50
- "@typescript-eslint/parser": "7.8.0",
49
+ "@typescript-eslint/eslint-plugin": "7.13.0",
50
+ "@typescript-eslint/parser": "7.13.0",
51
51
  "eslint": "8.57.0",
52
52
  "eslint-config-prettier": "9.1.0",
53
53
  "eslint-plugin-import": "^2.29.1",
@@ -62,10 +62,10 @@
62
62
  "jest": "^29.7.0",
63
63
  "jest-environment-node": "^29.7.0",
64
64
  "npm-check-updates": "^16.14.20",
65
- "prettier": "^3.2.5",
66
- "ts-jest": "^29.1.2",
67
- "tsx": "^4.7.3",
68
- "type-fest": "^4.18.0",
65
+ "prettier": "^3.3.2",
66
+ "ts-jest": "^29.1.4",
67
+ "tsx": "^4.15.3",
68
+ "type-fest": "^4.20.0",
69
69
  "typescript": "^5.4.5"
70
70
  },
71
71
  "jest": {
@@ -1,29 +0,0 @@
1
- import { TServiceParams } from "@digital-alchemy/core";
2
- export declare function Entities({ synapse, context }: TServiceParams): {
3
- magicSensor: {
4
- getEntity: () => import("@digital-alchemy/hass").ByIdProxy<import("@digital-alchemy/hass").PICK_ENTITY<import("@digital-alchemy/hass").TRawDomains>>;
5
- onUpdate: (callback: import("@digital-alchemy/hass").TEntityUpdateCallback<import("@digital-alchemy/hass").PICK_ENTITY<import("@digital-alchemy/hass").TRawDomains>>) => {
6
- remove(): void;
7
- };
8
- storage: import("@digital-alchemy/synapse").TSynapseEntityStorage<import("@digital-alchemy/synapse").SensorConfiguration<object> & import("@digital-alchemy/synapse").EntityConfigCommon<object>>;
9
- icon: string & import("@digital-alchemy/synapse").SettableConfiguration<string>;
10
- name: string;
11
- attributes: object;
12
- state: string | number;
13
- unit_of_measurement: string | void;
14
- suggested_display_precision: number;
15
- last_reset: import("dayjs").Dayjs;
16
- suggested_unit_of_measurement: string;
17
- };
18
- togglesTheBinarySensor: {
19
- getEntity: () => import("@digital-alchemy/hass").ByIdProxy<import("@digital-alchemy/hass").PICK_ENTITY>;
20
- onUpdate: (callback: import("@digital-alchemy/hass").TEntityUpdateCallback<import("@digital-alchemy/hass").PICK_ENTITY>) => {
21
- remove(): void;
22
- };
23
- storage: import("@digital-alchemy/synapse").TSynapseEntityStorage<import("@digital-alchemy/synapse").BinarySensorConfiguration & import("@digital-alchemy/synapse").EntityConfigCommon<object>>;
24
- is_on: boolean;
25
- icon?: import("@digital-alchemy/synapse").SettableConfiguration<string>;
26
- name: string;
27
- attributes?: object;
28
- };
29
- };
@@ -1,21 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Entities = void 0;
4
- function Entities({ synapse, context }) {
5
- synapse.switch({ context, name: "bedroom_lamp" });
6
- synapse.switch({ context, name: "kitchen_cabinets" });
7
- synapse.switch({ context, name: "living_room_mood_lights" });
8
- synapse.switch({ context, name: "porch_light" });
9
- const magicSensor = synapse.sensor({
10
- context,
11
- name: "magic",
12
- state: "50",
13
- });
14
- const togglesTheBinarySensor = synapse.binary_sensor({
15
- context,
16
- name: "toggles",
17
- });
18
- return { magicSensor, togglesTheBinarySensor };
19
- }
20
- exports.Entities = Entities;
21
- //# sourceMappingURL=entities.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"entities.js","sourceRoot":"","sources":["../../../src/e2e/app/entities.ts"],"names":[],"mappings":";;;AAEA,SAAgB,QAAQ,CAAC,EAAE,OAAO,EAAE,OAAO,EAAkB;IAC3D,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;IAClD,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACtD,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;IACjD,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC;QACjC,OAAO;QACP,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;IACH,MAAM,sBAAsB,GAAG,OAAO,CAAC,aAAa,CAAC;QACnD,OAAO;QACP,IAAI,EAAE,SAAS;KAChB,CAAC,CAAC;IACH,OAAO,EAAE,WAAW,EAAE,sBAAsB,EAAE,CAAC;AACjD,CAAC;AAfD,4BAeC"}
@@ -1,10 +0,0 @@
1
- import { Entities } from "./entities";
2
- declare const HASS_E2E: import("@digital-alchemy/core").ApplicationDefinition<{
3
- entities: typeof Entities;
4
- }, import("@digital-alchemy/core").ModuleConfiguration>;
5
- declare module "@digital-alchemy/core" {
6
- interface LoadedModules {
7
- hass_e2e: typeof HASS_E2E;
8
- }
9
- }
10
- export {};