@digital-alchemy/hass 0.3.34 → 24.6.1

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.
@@ -1,37 +1,63 @@
1
+ /// <reference types="node" />
1
2
  import { TServiceParams } from "@digital-alchemy/core";
2
- import { ByIdProxy, EditLabelOptions, ENTITY_STATE, EntityHistoryDTO, EntityHistoryResult, EntityRegistryItem, PICK_ENTITY, PICK_FROM_AREA, PICK_FROM_DEVICE, PICK_FROM_FLOOR, PICK_FROM_LABEL, TAreaId, TDeviceId, TFloorId, TLabelId, TPlatformId } from "..";
3
+ import EventEmitter from "events";
4
+ import { ByIdProxy, EditLabelOptions, ENTITY_STATE, EntityHistoryDTO, EntityHistoryResult, EntityRegistryItem, PICK_ENTITY, TAreaId, TDeviceId, TFloorId, TLabelId, TPlatformId, TRawDomains } from "..";
3
5
  export declare const ENTITY_UPDATE_RECEIVER: unique symbol;
4
- export declare function EntityManager({ logger, hass, config, lifecycle, event, context, internal: { utils }, }: TServiceParams): {
6
+ export declare function EntityManager({ logger, hass, config, lifecycle, event, context, internal, }: TServiceParams): {
7
+ _entityEvents: () => EventEmitter<[never]>;
5
8
  /**
6
9
  * Retrieve a list of entities listed as being part of a certain area
7
10
  * Tracks area updates at runtime
11
+ *
12
+ * @deprecated use `hass.idBy.area` - to be remove 2024-08
8
13
  */
9
- byArea: <AREA extends TAreaId, DOMAIN extends import("..").TRawDomains>(area: AREA, ...domains: DOMAIN[]) => PICK_FROM_AREA<AREA, DOMAIN>[];
14
+ byArea: <AREA extends TAreaId, DOMAINS extends TRawDomains = TRawDomains>(area: AREA, ...domains: DOMAINS[]) => Extract<{
15
+ _living_room: "switch.living_room_mood_lights";
16
+ _kitchen: "switch.kitchen_cabinets";
17
+ _bedroom: "switch.bedroom_lamp" | "light.bedroom_ceiling_fan";
18
+ }[`_${AREA}`], PICK_ENTITY<DOMAINS>>[];
10
19
  /**
11
20
  * Retrieve a list of entities associated with a particular device id
21
+ *
22
+ * @deprecated use `hass.idBy.device` - to be remove 2024-08
12
23
  */
13
- byDevice: <DEVICE extends TDeviceId, DOMAIN_1 extends import("..").TRawDomains>(device: DEVICE, ...domains: DOMAIN_1[]) => PICK_FROM_DEVICE<DEVICE, DOMAIN_1>[];
24
+ byDevice: <DEVICE extends TDeviceId, DOMAINS_1 extends TRawDomains = TRawDomains>(device: DEVICE, ...domains: DOMAINS_1[]) => Extract<{
25
+ _308e39cf50a9fc6c30b4110724ed1f2e: "sensor.sun_next_dawn" | "sensor.sun_next_dusk" | "sensor.sun_next_midnight" | "sensor.sun_next_noon" | "sensor.sun_next_rising" | "sensor.sun_next_setting" | "sensor.sun_solar_elevation" | "sensor.sun_solar_azimuth" | "sensor.sun_solar_rising";
26
+ _e58841e47cf86097b310316e55d6bb12: "calendar.united_states_tx";
27
+ }[`_${DEVICE}`], PICK_ENTITY<DOMAINS_1>>[];
14
28
  /**
15
29
  * Retrieve a list of entities that have areas associated with a certain floor
30
+ *
31
+ * @deprecated use `hass.idBy.floor` - to be remove 2024-08
16
32
  */
17
- byFloor: <FLOOR extends TFloorId, DOMAIN_2 extends import("..").TRawDomains>(floor: FLOOR, ...domains: DOMAIN_2[]) => PICK_FROM_FLOOR<FLOOR, DOMAIN_2>[];
33
+ byFloor: <FLOOR extends TFloorId, DOMAINS_2 extends TRawDomains = TRawDomains>(floor: FLOOR, ...domains: DOMAINS_2[]) => Extract<{
34
+ _downstairs: "switch.kitchen_cabinets" | "switch.living_room_mood_lights";
35
+ _upstairs: "switch.bedroom_lamp";
36
+ }[`_${FLOOR}`], PICK_ENTITY<DOMAINS_2>>[];
18
37
  /**
19
38
  * Retrieves a proxy object for a specified entity. This proxy object
20
39
  * provides current values and event hooks for the entity.
21
40
  */
22
- byId: <ENTITY_ID extends PICK_ENTITY>(entity_id: ENTITY_ID) => ByIdProxy<ENTITY_ID>;
41
+ byId: <ID extends PICK_ENTITY>(id: ID) => ByIdProxy<ID>;
23
42
  /**
24
43
  * Retrieve a list of entities that have a given label
44
+ *
45
+ * @deprecated use `hass.idBy.label` - to be remove 2024-08
25
46
  */
26
- byLabel: <LABEL extends TLabelId, DOMAIN_3 extends import("..").TRawDomains>(label: LABEL, ...domains: DOMAIN_3[]) => PICK_FROM_LABEL<LABEL, DOMAIN_3>[];
47
+ byLabel: <LABEL extends TLabelId, DOMAINS_3 extends TRawDomains = TRawDomains>(label: LABEL, ...domains: DOMAINS_3[]) => Extract<{
48
+ _synapse: "binary_sensor.hass_e2e_online" | "sensor.magic" | "binary_sensor.toggles" | "switch.bedroom_lamp" | "switch.kitchen_cabinets" | "switch.living_room_mood_lights" | "switch.porch_light";
49
+ _test: never;
50
+ }[`_${LABEL}`], PICK_ENTITY<DOMAINS_3>>[];
27
51
  /**
28
52
  * search out ids by platform
53
+ *
54
+ * @deprecated use `hass.idBy.platform` - to be remove 2024-08
29
55
  */
30
- byPlatform: <PLATFORM extends TPlatformId, DOMAIN_4 extends import("..").TRawDomains>(platform: PLATFORM, ...domains: DOMAIN_4[]) => PICK_ENTITY[];
56
+ byPlatform: <PLATFORM extends TPlatformId, DOMAINS_4 extends TRawDomains = TRawDomains>(platform: PLATFORM, ...domains: DOMAINS_4[]) => PICK_ENTITY[];
31
57
  /**
32
58
  * looks up entity_id reference by the unique id in the registry, and returns the entity reference
33
59
  */
34
- byUniqueId: <ID extends PICK_ENTITY>(unique_id: string) => ByIdProxy<ID>;
60
+ byUniqueId: <ID_1 extends PICK_ENTITY>(unique_id: string) => ByIdProxy<ID_1>;
35
61
  /**
36
62
  * Internal library use only
37
63
  */
@@ -40,12 +66,12 @@ export declare function EntityManager({ logger, hass, config, lifecycle, event,
40
66
  * Lists all entities within a specified domain. This is useful for
41
67
  * domain-specific operations or queries.
42
68
  */
43
- findByDomain: <DOMAIN_5 extends import("..").TRawDomains>(domain: DOMAIN_5) => ByIdProxy<PICK_ENTITY>[];
69
+ findByDomain: <DOMAIN extends TRawDomains>(domain: DOMAIN) => ByIdProxy<PICK_ENTITY>[];
44
70
  /**
45
71
  * Retrieves the current state of a given entity. This method returns
46
72
  * raw data, offering a direct view of the entity's state at a given moment.
47
73
  */
48
- getCurrentState: <ENTITY_ID_1 extends PICK_ENTITY>(entity_id: ENTITY_ID_1) => NonNullable<ENTITY_STATE<ENTITY_ID_1>>;
74
+ getCurrentState: <ENTITY_ID extends PICK_ENTITY>(entity_id: ENTITY_ID) => NonNullable<ENTITY_STATE<ENTITY_ID>>;
49
75
  /**
50
76
  * Retrieves the historical state data of entities over a specified time
51
77
  * period. Useful for analysis or tracking changes over time.
@@ -58,10 +84,14 @@ export declare function EntityManager({ logger, hass, config, lifecycle, event,
58
84
  * and quick reference to all available entities.
59
85
  */
60
86
  listEntities: () => PICK_ENTITY[];
87
+ /**
88
+ * Returns the previous entity state (not a proxy)
89
+ */
90
+ previousState: (entity_id: PICK_ENTITY) => ENTITY_STATE<PICK_ENTITY>;
61
91
  /**
62
92
  * Retrieve the raw entity data for this point in time
63
93
  */
64
- raw: (id: PICK_ENTITY) => ENTITY_STATE<PICK_ENTITY>;
94
+ raw: (entity_id: PICK_ENTITY) => ENTITY_STATE<PICK_ENTITY>;
65
95
  /**
66
96
  * Initiates a refresh of the current entity states. Useful for ensuring
67
97
  * synchronization with the latest state data from Home Assistant.
@@ -11,13 +11,12 @@ const MAX_ATTEMPTS = 10;
11
11
  const UNLIMITED = 0;
12
12
  const RECENT = 5;
13
13
  exports.ENTITY_UPDATE_RECEIVER = Symbol.for("entityUpdateReceiver");
14
- function EntityManager({ logger, hass, config, lifecycle, event, context, internal: { utils }, }) {
14
+ function EntityManager({ logger, hass, config, lifecycle, event, context, internal, }) {
15
15
  // #MARK: Local vars
16
16
  /**
17
17
  * MASTER_STATE.switch.desk_light = {entity_id,state,attributes,...}
18
18
  */
19
19
  let MASTER_STATE = {};
20
- const ENTITY_PROXIES = new Map();
21
20
  const PREVIOUS_STATE = new Map();
22
21
  let lastRefresh;
23
22
  function warnEarly(method) {
@@ -36,101 +35,9 @@ function EntityManager({ logger, hass, config, lifecycle, event, context, intern
36
35
  let init = false;
37
36
  // #MARK: getCurrentState
38
37
  function getCurrentState(entity_id) {
39
- const out = utils.object.get(MASTER_STATE, entity_id) ?? {};
38
+ const out = internal.utils.object.get(MASTER_STATE, entity_id) ?? {};
40
39
  return out;
41
40
  }
42
- // #MARK:proxyGetLogic
43
- function proxyGetLogic(entity, property) {
44
- if (!init) {
45
- return undefined;
46
- }
47
- const valid = ["state", "attributes", "last"].some(i => property.startsWith(i));
48
- if (!valid) {
49
- logger.error({ entity, name: proxyGetLogic, property }, `invalid property lookup`);
50
- return undefined;
51
- }
52
- const current = getCurrentState(entity);
53
- const defaultValue = (property === "state" ? undefined : {});
54
- if (!current) {
55
- logger.error({ defaultValue, name: entity, property }, `proxyGetLogic cannot find entity`);
56
- }
57
- return utils.object.get(current, property) || defaultValue;
58
- }
59
- // #MARK: byId
60
- function byId(entity_id) {
61
- const entity_domain = (0, __1.domain)(entity_id);
62
- if (!ENTITY_PROXIES.has(entity_id)) {
63
- ENTITY_PROXIES.set(entity_id, new Proxy(getCurrentState(entity_id), {
64
- // things that shouldn't be needed: this extract
65
- get: (_, property) => {
66
- if (property === "onUpdate") {
67
- return (callback) => {
68
- const removableCallback = (a, b) => callback(a, b, remove);
69
- function remove() {
70
- ENTITY_EVENTS.removeListener(entity_id, removableCallback);
71
- }
72
- ENTITY_EVENTS.on(entity_id, removableCallback);
73
- return { remove };
74
- };
75
- }
76
- if (property === "removeAllListeners") {
77
- return function () {
78
- ENTITY_EVENTS.removeAllListeners(entity_id);
79
- };
80
- }
81
- if (property === "once") {
82
- return (callback) => ENTITY_EVENTS.once(entity_id, async (a, b) => callback(a, b));
83
- }
84
- if (property === "entity_id") {
85
- return entity_id;
86
- }
87
- if (property === "previous") {
88
- return PREVIOUS_STATE.get(entity_id);
89
- }
90
- if (property === "nextState") {
91
- return async () => await new Promise(done => {
92
- ENTITY_EVENTS.once(entity_id, (entity) => done(entity));
93
- });
94
- }
95
- if (hass.configure.isService(entity_domain, property)) {
96
- return async function (data = {}) {
97
- // @ts-expect-error it's fine
98
- return await hass.call[entity_domain][property]({
99
- entity_id,
100
- ...data,
101
- });
102
- };
103
- }
104
- return proxyGetLogic(entity_id, property);
105
- },
106
- set(_, property, value) {
107
- if (property === "state") {
108
- setImmediate(async () => {
109
- logger.debug({ entity_id, state: value }, `emitting set state via rest`);
110
- await hass.fetch.updateEntity(entity_id, {
111
- state: value,
112
- });
113
- });
114
- return true;
115
- }
116
- if (property === "attributes") {
117
- if (!core_1.is.object(value)) {
118
- logger.error(`can only provide objects as attributes`);
119
- return false;
120
- }
121
- setImmediate(async () => {
122
- logger.debug({ attributes: Object.keys(value), entity_id }, `updating attributes via rest`);
123
- await hass.fetch.updateEntity(entity_id, { attributes: value });
124
- });
125
- return true;
126
- }
127
- logger.error({ entity_id, property }, `cannot set property on entity`);
128
- return false;
129
- },
130
- }));
131
- }
132
- return ENTITY_PROXIES.get(entity_id);
133
- }
134
41
  // #MARK: history
135
42
  async function history(payload) {
136
43
  logger.trace({ payload }, `looking up entity history`);
@@ -160,7 +67,7 @@ function EntityManager({ logger, hass, config, lifecycle, event, context, intern
160
67
  }
161
68
  // #MARK: findByDomain
162
69
  function findByDomain(domain) {
163
- return Object.keys(MASTER_STATE[domain] ?? {}).map(i => byId(`${domain}.${i}`));
70
+ return Object.keys(MASTER_STATE[domain] ?? {}).map(i => hass.refBy.id(`${domain}.${i}`));
164
71
  }
165
72
  // #MARK: refresh
166
73
  async function refresh(recursion = core_1.START) {
@@ -194,11 +101,11 @@ function EntityManager({ logger, hass, config, lifecycle, event, context, intern
194
101
  states.forEach(entity => {
195
102
  // ? Set first, ensure data is populated
196
103
  // `nextTick` will fire AFTER loop finishes
197
- utils.object.set(MASTER_STATE, entity.entity_id, entity, core_1.is.undefined(utils.object.get(oldState, entity.entity_id)));
104
+ internal.utils.object.set(MASTER_STATE, entity.entity_id, entity, core_1.is.undefined(internal.utils.object.get(oldState, entity.entity_id)));
198
105
  if (!init) {
199
106
  return;
200
107
  }
201
- const old = utils.object.get(oldState, entity.entity_id);
108
+ const old = internal.utils.object.get(oldState, entity.entity_id);
202
109
  if (core_1.is.equal(old, entity)) {
203
110
  // logger.trace(
204
111
  // { entity_id: entity.entity_id, name: refresh },
@@ -211,7 +118,7 @@ function EntityManager({ logger, hass, config, lifecycle, event, context, intern
211
118
  // Attempt to not blow up the system?
212
119
  // TODO: does this gain anything? is a debounce needed somewhere else instead?
213
120
  setImmediate(async () => {
214
- await (0, core_1.each)(emitUpdates, async (entity) => await EntityUpdateReceiver(entity.entity_id, entity, utils.object.get(oldState, entity.entity_id)));
121
+ await (0, core_1.each)(emitUpdates, async (entity) => await EntityUpdateReceiver(entity.entity_id, entity, internal.utils.object.get(oldState, entity.entity_id)));
215
122
  });
216
123
  init = true;
217
124
  }
@@ -220,10 +127,10 @@ function EntityManager({ logger, hass, config, lifecycle, event, context, intern
220
127
  PREVIOUS_STATE.set(entity_id, old_state);
221
128
  if (new_state === null) {
222
129
  logger.warn({ name: EntityUpdateReceiver }, `removing deleted entity [%s] from {MASTER_STATE}`, entity_id);
223
- utils.object.del(MASTER_STATE, entity_id);
130
+ internal.utils.object.del(MASTER_STATE, entity_id);
224
131
  return;
225
132
  }
226
- utils.object.set(MASTER_STATE, entity_id, new_state);
133
+ internal.utils.object.set(MASTER_STATE, entity_id, new_state);
227
134
  if (!hass.socket.pauseMessages) {
228
135
  ENTITY_EVENTS.emit(entity_id, new_state, old_state);
229
136
  }
@@ -237,17 +144,19 @@ function EntityManager({ logger, hass, config, lifecycle, event, context, intern
237
144
  await hass.entity.refresh();
238
145
  });
239
146
  async function AddLabel({ entity, label }) {
240
- const current = await EntityGet(entity);
241
- if (current?.labels?.includes(label)) {
242
- logger.debug({ name: entity }, `already has label {%s}`, label);
243
- return;
244
- }
245
- return await new Promise(async (done) => {
246
- event.once(__1.ENTITY_REGISTRY_UPDATED, done);
247
- await hass.socket.sendMessage({
248
- entity_id: entity,
249
- labels: [...current.labels, label],
250
- type: "config/entity_registry/update",
147
+ await (0, core_1.each)([entity].flat(), async (entity) => {
148
+ const current = await EntityGet(entity);
149
+ if (current?.labels?.includes(label)) {
150
+ logger.debug({ name: entity }, `already has label {%s}`, label);
151
+ return;
152
+ }
153
+ return await new Promise(async (done) => {
154
+ event.once(__1.ENTITY_REGISTRY_UPDATED, done);
155
+ await hass.socket.sendMessage({
156
+ entity_id: entity,
157
+ labels: [...current.labels, label],
158
+ type: "config/entity_registry/update",
159
+ });
251
160
  });
252
161
  });
253
162
  }
@@ -311,63 +220,6 @@ function EntityManager({ logger, hass, config, lifecycle, event, context, intern
311
220
  }
312
221
  return hass.entity.byId(entity.entity_id);
313
222
  }
314
- // #MARK: byLabel
315
- function byLabel(label, ...domains) {
316
- warnEarly("byLabel");
317
- const raw = hass.entity.registry.current.filter(i => i.labels.includes(label));
318
- if (core_1.is.empty(domains)) {
319
- return raw.map(i => i.entity_id);
320
- }
321
- return raw
322
- .filter(entity => domains.some(domain => core_1.is.domain(entity.entity_id, domain)))
323
- .map(i => i.entity_id);
324
- }
325
- // #MARK: byArea
326
- function byArea(area, ...domains) {
327
- warnEarly("byArea");
328
- const raw = hass.entity.registry.current.filter(i => i.area_id === area);
329
- if (core_1.is.empty(domains)) {
330
- return raw.map(i => i.entity_id);
331
- }
332
- return raw
333
- .filter(entity => domains.some(domain => core_1.is.domain(entity.entity_id, domain)))
334
- .map(i => i.entity_id);
335
- }
336
- // #MARK: byDevice
337
- function byDevice(device, ...domains) {
338
- warnEarly("byDevice");
339
- const raw = hass.entity.registry.current.filter(i => i.device_id === device);
340
- if (core_1.is.empty(domains)) {
341
- return raw.map(i => i.entity_id);
342
- }
343
- return raw
344
- .filter(entity => domains.some(domain => core_1.is.domain(entity.entity_id, domain)))
345
- .map(i => i.entity_id);
346
- }
347
- // #MARK: byFloor
348
- function byFloor(floor, ...domains) {
349
- warnEarly("byFloor");
350
- const areas = new Set(hass.area.current.filter(i => i.floor_id === floor).map(i => i.area_id));
351
- const raw = hass.entity.registry.current.filter(i => areas.has(i.area_id));
352
- if (core_1.is.empty(domains)) {
353
- return raw.map(i => i.entity_id);
354
- }
355
- return raw
356
- .filter(entity => domains.some(domain => core_1.is.domain(entity.entity_id, domain)))
357
- .map(i => i.entity_id);
358
- }
359
- // #MARK: byPlatform
360
- function byPlatform(platform, ...domains) {
361
- warnEarly("byPlatform");
362
- const raw = hass.entity.registry.current
363
- .filter(i => i.platform === platform)
364
- .filter(i => i.platform === platform)
365
- .map(i => i.entity_id);
366
- if (core_1.is.empty(domains)) {
367
- return raw;
368
- }
369
- return raw.filter(i => domains.includes((0, __1.domain)(i)));
370
- }
371
223
  // #MARK: RemoveEntity
372
224
  async function RemoveEntity(entity_id) {
373
225
  warnEarly("RemoveEntity");
@@ -381,32 +233,43 @@ function EntityManager({ logger, hass, config, lifecycle, event, context, intern
381
233
  }
382
234
  // #MARK: return object
383
235
  return {
236
+ _entityEvents: () => ENTITY_EVENTS,
384
237
  /**
385
238
  * Retrieve a list of entities listed as being part of a certain area
386
239
  * Tracks area updates at runtime
240
+ *
241
+ * @deprecated use `hass.idBy.area` - to be remove 2024-08
387
242
  */
388
- byArea,
243
+ byArea: (area, ...domains) => hass.idBy.area(area, ...domains),
389
244
  /**
390
245
  * Retrieve a list of entities associated with a particular device id
246
+ *
247
+ * @deprecated use `hass.idBy.device` - to be remove 2024-08
391
248
  */
392
- byDevice,
249
+ byDevice: (device, ...domains) => hass.idBy.device(device, ...domains),
393
250
  /**
394
251
  * Retrieve a list of entities that have areas associated with a certain floor
252
+ *
253
+ * @deprecated use `hass.idBy.floor` - to be remove 2024-08
395
254
  */
396
- byFloor,
255
+ byFloor: (floor, ...domains) => hass.idBy.floor(floor, ...domains),
397
256
  /**
398
257
  * Retrieves a proxy object for a specified entity. This proxy object
399
258
  * provides current values and event hooks for the entity.
400
259
  */
401
- byId,
260
+ byId: (id) => hass.refBy.id(id),
402
261
  /**
403
262
  * Retrieve a list of entities that have a given label
263
+ *
264
+ * @deprecated use `hass.idBy.label` - to be remove 2024-08
404
265
  */
405
- byLabel,
266
+ byLabel: (label, ...domains) => hass.idBy.label(label, ...domains),
406
267
  /**
407
268
  * search out ids by platform
269
+ *
270
+ * @deprecated use `hass.idBy.platform` - to be remove 2024-08
408
271
  */
409
- byPlatform,
272
+ byPlatform: (platform, ...domains) => hass.idBy.platform(platform, ...domains),
410
273
  /**
411
274
  * looks up entity_id reference by the unique id in the registry, and returns the entity reference
412
275
  */
@@ -435,10 +298,14 @@ function EntityManager({ logger, hass, config, lifecycle, event, context, intern
435
298
  * and quick reference to all available entities.
436
299
  */
437
300
  listEntities,
301
+ /**
302
+ * Returns the previous entity state (not a proxy)
303
+ */
304
+ previousState: (entity_id) => PREVIOUS_STATE.get(entity_id),
438
305
  /**
439
306
  * Retrieve the raw entity data for this point in time
440
307
  */
441
- raw: (id) => utils.object.get(MASTER_STATE, id),
308
+ raw: (entity_id) => internal.utils.object.get(MASTER_STATE, entity_id),
442
309
  /**
443
310
  * Initiates a refresh of the current entity states. Useful for ensuring
444
311
  * synchronization with the latest state data from Home Assistant.
@@ -1 +1 @@
1
- {"version":3,"file":"entity.extension.js","sourceRoot":"","sources":["../../src/extensions/entity.extension.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entity.extension.js","sourceRoot":"","sources":["../../src/extensions/entity.extension.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { TServiceParams } from "@digital-alchemy/core";
2
+ import { TAreaId, TDeviceId, TFloorId, TLabelId, TPlatformId } from "../dynamic";
3
+ import { PICK_FROM_AREA, PICK_FROM_DEVICE, PICK_FROM_FLOOR, PICK_FROM_LABEL } from "../helpers";
4
+ export declare function IDByExtension({ hass }: TServiceParams): {
5
+ area: <AREA extends TAreaId, DOMAIN extends import("../dynamic").TRawDomains>(area: AREA, ...domains: DOMAIN[]) => PICK_FROM_AREA<AREA, DOMAIN>[];
6
+ device: <DEVICE extends TDeviceId, DOMAIN_1 extends import("../dynamic").TRawDomains>(device: DEVICE, ...domains: DOMAIN_1[]) => PICK_FROM_DEVICE<DEVICE, DOMAIN_1>[];
7
+ floor: <FLOOR extends TFloorId, DOMAIN_2 extends import("../dynamic").TRawDomains>(floor: FLOOR, ...domains: DOMAIN_2[]) => PICK_FROM_FLOOR<FLOOR, DOMAIN_2>[];
8
+ label: <LABEL extends TLabelId, DOMAIN_3 extends import("../dynamic").TRawDomains>(label: LABEL, ...domains: DOMAIN_3[]) => PICK_FROM_LABEL<LABEL, DOMAIN_3>[];
9
+ platform: <PLATFORM extends TPlatformId, DOMAIN_4 extends import("../dynamic").TRawDomains>(platform: PLATFORM, ...domains: DOMAIN_4[]) => import("../helpers").PICK_ENTITY[];
10
+ };
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IDByExtension = void 0;
4
+ const core_1 = require("@digital-alchemy/core");
5
+ const helpers_1 = require("../helpers");
6
+ function IDByExtension({ hass }) {
7
+ // * label
8
+ function label(label, ...domains) {
9
+ hass.entity.warnEarly("label");
10
+ const raw = hass.entity.registry.current.filter(i => i.labels.includes(label));
11
+ if (core_1.is.empty(domains)) {
12
+ return raw.map(i => i.entity_id);
13
+ }
14
+ return raw
15
+ .filter(entity => domains.some(domain => core_1.is.domain(entity.entity_id, domain)))
16
+ .map(i => i.entity_id);
17
+ }
18
+ // * area
19
+ function area(area, ...domains) {
20
+ hass.entity.warnEarly("area");
21
+ const raw = hass.entity.registry.current.filter(i => i.area_id === area);
22
+ if (core_1.is.empty(domains)) {
23
+ return raw.map(i => i.entity_id);
24
+ }
25
+ return raw
26
+ .filter(entity => domains.some(domain => core_1.is.domain(entity.entity_id, domain)))
27
+ .map(i => i.entity_id);
28
+ }
29
+ // * device
30
+ function device(device, ...domains) {
31
+ hass.entity.warnEarly("device");
32
+ const raw = hass.entity.registry.current.filter(i => i.device_id === device);
33
+ if (core_1.is.empty(domains)) {
34
+ return raw.map(i => i.entity_id);
35
+ }
36
+ return raw
37
+ .filter(entity => domains.some(domain => core_1.is.domain(entity.entity_id, domain)))
38
+ .map(i => i.entity_id);
39
+ }
40
+ // * floor
41
+ function floor(floor, ...domains) {
42
+ hass.entity.warnEarly("floor");
43
+ const areas = new Set(hass.area.current.filter(i => i.floor_id === floor).map(i => i.area_id));
44
+ const raw = hass.entity.registry.current.filter(i => areas.has(i.area_id));
45
+ if (core_1.is.empty(domains)) {
46
+ return raw.map(i => i.entity_id);
47
+ }
48
+ return raw
49
+ .filter(entity => domains.some(domain => core_1.is.domain(entity.entity_id, domain)))
50
+ .map(i => i.entity_id);
51
+ }
52
+ // * platform
53
+ function platform(platform, ...domains) {
54
+ hass.entity.warnEarly("platform");
55
+ const raw = hass.entity.registry.current
56
+ .filter(i => i.platform === platform)
57
+ .filter(i => i.platform === platform)
58
+ .map(i => i.entity_id);
59
+ if (core_1.is.empty(domains)) {
60
+ return raw;
61
+ }
62
+ return raw.filter(i => domains.includes((0, helpers_1.domain)(i)));
63
+ }
64
+ return { area, device, floor, label, platform };
65
+ }
66
+ exports.IDByExtension = IDByExtension;
67
+ //# sourceMappingURL=id-by.extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id-by.extension.js","sourceRoot":"","sources":["../../src/extensions/id-by.extension.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,9 @@ export * from "./device.extension";
6
6
  export * from "./entity.extension";
7
7
  export * from "./fetch-api.extension";
8
8
  export * from "./floor.extension";
9
+ export * from "./id-by.extension";
9
10
  export * from "./label.extension";
11
+ export * from "./reference.extension";
10
12
  export * from "./registry.extension";
11
13
  export * from "./websocket-api.extension";
12
14
  export * from "./zone.extension";
@@ -9,7 +9,9 @@ tslib_1.__exportStar(require("./device.extension"), exports);
9
9
  tslib_1.__exportStar(require("./entity.extension"), exports);
10
10
  tslib_1.__exportStar(require("./fetch-api.extension"), exports);
11
11
  tslib_1.__exportStar(require("./floor.extension"), exports);
12
+ tslib_1.__exportStar(require("./id-by.extension"), exports);
12
13
  tslib_1.__exportStar(require("./label.extension"), exports);
14
+ tslib_1.__exportStar(require("./reference.extension"), exports);
13
15
  tslib_1.__exportStar(require("./registry.extension"), exports);
14
16
  tslib_1.__exportStar(require("./websocket-api.extension"), exports);
15
17
  tslib_1.__exportStar(require("./zone.extension"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/extensions/index.ts"],"names":[],"mappings":";;;AAAA,2DAAiC;AACjC,6DAAmC;AACnC,iEAAuC;AACvC,6DAAmC;AACnC,6DAAmC;AACnC,6DAAmC;AACnC,gEAAsC;AACtC,4DAAkC;AAClC,4DAAkC;AAClC,+DAAqC;AACrC,oEAA0C;AAC1C,2DAAiC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/extensions/index.ts"],"names":[],"mappings":";;;AAAA,2DAAiC;AACjC,6DAAmC;AACnC,iEAAuC;AACvC,6DAAmC;AACnC,6DAAmC;AACnC,6DAAmC;AACnC,gEAAsC;AACtC,4DAAkC;AAClC,4DAAkC;AAClC,4DAAkC;AAClC,gEAAsC;AACtC,+DAAqC;AACrC,oEAA0C;AAC1C,2DAAiC"}
@@ -0,0 +1,24 @@
1
+ import { TServiceParams } from "@digital-alchemy/core";
2
+ import { TAreaId, TDeviceId, TFloorId, TLabelId, TPlatformId, TRawDomains } from "../dynamic";
3
+ import { ByIdProxy, PICK_ENTITY } from "../helpers";
4
+ export declare function ReferenceExtension({ hass, logger, internal }: TServiceParams): {
5
+ area: <AREA extends TAreaId, DOMAINS extends TRawDomains = TRawDomains>(area: AREA, ...domains: DOMAINS[]) => ByIdProxy<Extract<{
6
+ _living_room: "switch.living_room_mood_lights";
7
+ _kitchen: "switch.kitchen_cabinets";
8
+ _bedroom: "switch.bedroom_lamp" | "light.bedroom_ceiling_fan";
9
+ }[`_${AREA}`], PICK_ENTITY<DOMAINS>>>[];
10
+ device: <DEVICE extends TDeviceId, DOMAINS_1 extends TRawDomains = TRawDomains>(device: DEVICE, ...domains: DOMAINS_1[]) => ByIdProxy<Extract<{
11
+ _308e39cf50a9fc6c30b4110724ed1f2e: "sensor.sun_next_dawn" | "sensor.sun_next_dusk" | "sensor.sun_next_midnight" | "sensor.sun_next_noon" | "sensor.sun_next_rising" | "sensor.sun_next_setting" | "sensor.sun_solar_elevation" | "sensor.sun_solar_azimuth" | "sensor.sun_solar_rising";
12
+ _e58841e47cf86097b310316e55d6bb12: "calendar.united_states_tx";
13
+ }[`_${DEVICE}`], PICK_ENTITY<DOMAINS_1>>>[];
14
+ floor: <FLOOR extends TFloorId, DOMAINS_2 extends TRawDomains = TRawDomains>(floor: FLOOR, ...domains: DOMAINS_2[]) => ByIdProxy<Extract<{
15
+ _downstairs: "switch.kitchen_cabinets" | "switch.living_room_mood_lights";
16
+ _upstairs: "switch.bedroom_lamp";
17
+ }[`_${FLOOR}`], PICK_ENTITY<DOMAINS_2>>>[];
18
+ id: <ENTITY_ID extends PICK_ENTITY>(entity_id: ENTITY_ID) => ByIdProxy<ENTITY_ID>;
19
+ label: <LABEL extends TLabelId, DOMAINS_3 extends TRawDomains = TRawDomains>(label: LABEL, ...domains: DOMAINS_3[]) => ByIdProxy<Extract<{
20
+ _synapse: "binary_sensor.hass_e2e_online" | "sensor.magic" | "binary_sensor.toggles" | "switch.bedroom_lamp" | "switch.kitchen_cabinets" | "switch.living_room_mood_lights" | "switch.porch_light";
21
+ _test: never;
22
+ }[`_${LABEL}`], PICK_ENTITY<DOMAINS_3>>>[];
23
+ platform: <PLATFORM extends TPlatformId, DOMAINS_4 extends TRawDomains = TRawDomains>(platform: PLATFORM, ...domains: DOMAINS_4[]) => ByIdProxy<PICK_ENTITY>[];
24
+ };
@@ -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 @@
1
+ export {};
@@ -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 @@
1
+ export {};
@@ -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.34",
5
+ "version": "24.06.1",
6
6
  "scripts": {
7
7
  "build": "rm -rf dist/; tsc",
8
8
  "lint": "eslint src",