@digital-alchemy/hass 24.8.1 → 24.9.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.
Files changed (33) hide show
  1. package/dist/dynamic.d.ts +5 -4
  2. package/dist/extensions/area.extension.js +1 -1
  3. package/dist/extensions/call-proxy.extension.js +10 -0
  4. package/dist/extensions/call-proxy.extension.js.map +1 -1
  5. package/dist/extensions/config.extension.d.ts +2 -1
  6. package/dist/extensions/config.extension.js +7 -2
  7. package/dist/extensions/config.extension.js.map +1 -1
  8. package/dist/extensions/device.extension.js +1 -1
  9. package/dist/extensions/entity.extension.js +1 -1
  10. package/dist/extensions/floor.extension.js +1 -1
  11. package/dist/extensions/id-by.extension.js +14 -2
  12. package/dist/extensions/id-by.extension.js.map +1 -1
  13. package/dist/extensions/label.extension.js +1 -1
  14. package/dist/extensions/reference.extension.d.ts +1 -1
  15. package/dist/extensions/reference.extension.js +47 -1
  16. package/dist/extensions/reference.extension.js.map +1 -1
  17. package/dist/extensions/zone.extension.js +1 -1
  18. package/dist/hass.module.d.ts +1 -1
  19. package/dist/hass.module.js +2 -2
  20. package/dist/helpers/notify.helper.d.ts +76 -25
  21. package/dist/testing/area.spec.js +1 -1
  22. package/dist/testing/device.spec.js +1 -1
  23. package/dist/testing/entity.spec.js +2 -2
  24. package/dist/testing/floor.spec.js +1 -1
  25. package/dist/testing/id-by.spec.js +22 -3
  26. package/dist/testing/id-by.spec.js.map +1 -1
  27. package/dist/testing/label.spec.js +1 -1
  28. package/dist/testing/ref-by.spec.js +311 -226
  29. package/dist/testing/ref-by.spec.js.map +1 -1
  30. package/dist/testing/workflow.spec.js +63 -0
  31. package/dist/testing/workflow.spec.js.map +1 -1
  32. package/dist/testing/zone.spec.js +1 -1
  33. package/package.json +29 -5
package/dist/dynamic.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { ActionableNotification, AndroidActionableNotification, AppleActionableNotification, PICK_ENTITY } from "./helpers";
1
+ import { AndroidNotificationData, AppleNotificationData, NotificationData, PICK_ENTITY } from "./helpers";
2
2
  type PICK_FROM_PLATFORM<ID extends TPlatformId, DOMAIN extends TRawDomains = TRawDomains> = Extract<REGISTRY_SETUP["platform"][`_${ID}`], PICK_ENTITY<DOMAIN>>;
3
3
  export type ENTITY_SETUP = {
4
4
  "button.example": {
@@ -2326,7 +2326,7 @@ export type iCallService = {
2326
2326
  * > object: null
2327
2327
  * > ```
2328
2328
  */
2329
- data?: ActionableNotification & (AndroidActionableNotification | AppleActionableNotification);
2329
+ data?: NotificationData & (AndroidNotificationData | AppleNotificationData);
2330
2330
  /**
2331
2331
  * ## message
2332
2332
  *
@@ -2395,7 +2395,7 @@ export type iCallService = {
2395
2395
  * > object: null
2396
2396
  * > ```
2397
2397
  */
2398
- data?: ActionableNotification & (AndroidActionableNotification | AppleActionableNotification);
2398
+ data?: NotificationData & (AndroidNotificationData | AppleNotificationData);
2399
2399
  /**
2400
2400
  * ## Message
2401
2401
  *
@@ -3700,6 +3700,7 @@ export type iCallService = {
3700
3700
  };
3701
3701
  export type REGISTRY_SETUP = {
3702
3702
  area: {
3703
+ _test: "switch.living_room_mood_lights";
3703
3704
  _living_room: "switch.living_room_mood_lights";
3704
3705
  _kitchen: "switch.kitchen_cabinets";
3705
3706
  _bedroom: "switch.bedroom_lamp" | "light.bedroom_ceiling_fan";
@@ -3725,7 +3726,7 @@ export type REGISTRY_SETUP = {
3725
3726
  _e58841e47cf86097b310316e55d6bb12: "calendar.united_states_tx";
3726
3727
  };
3727
3728
  };
3728
- export type TAreaId = "living_room" | "kitchen" | "bedroom";
3729
+ export type TAreaId = "living_room" | "kitchen" | "bedroom" | "test";
3729
3730
  export type TDeviceId = "308e39cf50a9fc6c30b4110724ed1f2e" | "e58841e47cf86097b310316e55d6bb12";
3730
3731
  export type TFloorId = "downstairs" | "upstairs";
3731
3732
  export type TLabelId = "synapse" | "test";
@@ -19,7 +19,7 @@ function Area({ hass, context, config, logger, event, lifecycle, }) {
19
19
  context,
20
20
  event_type: "area_registry_updated",
21
21
  async exec() {
22
- await (0, core_1.throttle)(helpers_1.AREA_REGISTRY_UPDATED, config.hass.EVENT_THROTTLE_MS);
22
+ await (0, core_1.debounce)(helpers_1.AREA_REGISTRY_UPDATED, config.hass.EVENT_DEBOUNCE_MS);
23
23
  hass.area.current = await hass.area.list();
24
24
  logger.debug(`area registry updated`);
25
25
  event.emit(helpers_1.AREA_REGISTRY_UPDATED);
@@ -78,6 +78,16 @@ function CallProxy({ logger, lifecycle, internal, hass, config, }) {
78
78
  }
79
79
  return rawProxy[domain];
80
80
  },
81
+ has(_, property) {
82
+ return property in rawProxy;
83
+ },
84
+ ownKeys() {
85
+ return Object.keys(rawProxy);
86
+ },
87
+ set() {
88
+ // lol, no
89
+ return false;
90
+ },
81
91
  });
82
92
  }
83
93
  return buildCallProxy();
@@ -1 +1 @@
1
- {"version":3,"file":"call-proxy.extension.js","sourceRoot":"","sources":["../../src/extensions/call-proxy.extension.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"call-proxy.extension.js","sourceRoot":"","sources":["../../src/extensions/call-proxy.extension.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { TServiceParams } from "@digital-alchemy/core";
2
2
  import { ALL_SERVICE_DOMAINS, HassServiceDTO, iCallService } from "..";
3
- export declare function Configure({ logger, lifecycle, hass, config, internal, }: TServiceParams): {
3
+ export declare const SERVICE_LIST_UPDATED = "SERVICE_LIST_UPDATED";
4
+ export declare function Configure({ logger, lifecycle, event, hass, config, internal, }: TServiceParams): {
4
5
  getServices: () => HassServiceDTO[];
5
6
  isService: <DOMAIN extends ALL_SERVICE_DOMAINS>(domain: DOMAIN, service: string) => service is Extract<keyof iCallService[DOMAIN], string>;
6
7
  loadServiceList: (recursion?: number) => Promise<void>;
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SERVICE_LIST_UPDATED = void 0;
3
4
  exports.Configure = Configure;
4
5
  /* eslint-disable @typescript-eslint/no-magic-numbers */
5
6
  const core_1 = require("@digital-alchemy/core");
@@ -7,7 +8,8 @@ const process_1 = require("process");
7
8
  const __1 = require("..");
8
9
  const MAX_ATTEMPTS = 50;
9
10
  const FAILED = 1;
10
- function Configure({ logger, lifecycle, hass, config, internal, }) {
11
+ exports.SERVICE_LIST_UPDATED = "SERVICE_LIST_UPDATED";
12
+ function Configure({ logger, lifecycle, event, hass, config, internal, }) {
11
13
  lifecycle.onPreInit(() => {
12
14
  // HASSIO_TOKEN provided by home assistant to addons
13
15
  // SUPERVISOR_TOKEN used as alias elsewhere
@@ -63,7 +65,10 @@ function Configure({ logger, lifecycle, hass, config, internal, }) {
63
65
  await (0, core_1.sleep)(config.hass.RETRY_INTERVAL * core_1.SECOND);
64
66
  await loadServiceList(recursion + core_1.INCREMENT);
65
67
  }
66
- checkedServices = new Map();
68
+ else {
69
+ event.emit(exports.SERVICE_LIST_UPDATED, services);
70
+ checkedServices = new Map();
71
+ }
67
72
  }
68
73
  let checkedServices = new Map();
69
74
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"config.extension.js","sourceRoot":"","sources":["../../src/extensions/config.extension.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.extension.js","sourceRoot":"","sources":["../../src/extensions/config.extension.ts"],"names":[],"mappings":";;;AAwBA,8BAqGC;AA7HD,wDAAwD;AACxD,gDAQ+B;AAC/B,qCAAoC;AAEpC,0BAKY;AAEZ,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,MAAM,GAAG,CAAC,CAAC;AAEJ,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAE3D,SAAgB,SAAS,CAAC,EACxB,MAAM,EACN,SAAS,EACT,KAAK,EACL,IAAI,EACJ,MAAM,EACN,QAAQ,GACO;IACf,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE;QACvB,oDAAoD;QACpD,2CAA2C;QAC3C,MAAM,KAAK,GAAG,aAAG,CAAC,YAAY,IAAI,aAAG,CAAC,gBAAgB,CAAC;QACvD,IAAI,SAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QACD,MAAM,CAAC,KAAK,CACV,EAAE,IAAI,EAAE,WAAW,EAAE,EACrB,yCAAyC,CAC1C,CAAC;QACF,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,CACpC,MAAM,EACN,UAAU;QACV,4BAA4B;QAC5B,aAAG,CAAC,WAAW,IAAI,wBAAwB,CAC5C,CAAC;QACF,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH;;;;OAIG;IACH,SAAS,CAAC,YAAY,CAAC,KAAK,IAAI,EAAE;QAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACxC,OAAO;QACT,CAAC;QACD,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAC5E,MAAM,IAAA,gBAAS,GAAE,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,wBAAwB,CAAC,CAAC;QAChE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YACnD,IAAI,SAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtB,aAAa;gBACb,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;gBACtD,IAAA,cAAI,EAAC,CAAC,CAAC,CAAC;YACV,CAAC;YACD,cAAc;YACd,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YACvD,IAAA,cAAI,EAAC,CAAC,CAAC,CAAC;QACV,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,iBAAiB;YACjB,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,wBAAwB,CAAC,CAAC;YACxE,IAAA,cAAI,EAAC,CAAC,CAAC,CAAC;QACV,CAAC;IACH,CAAC,EAAE,wBAAoB,CAAC,QAAQ,CAAC,CAAC;IAElC,IAAI,QAA0B,CAAC;IAC/B,KAAK,UAAU,eAAe,CAAC,SAAS,GAAG,YAAK;QAC9C,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,uBAAuB,CAAC,CAAC;QACjE,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAC3C,IAAI,SAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvB,IAAI,SAAS,GAAG,YAAY,EAAE,CAAC;gBAC7B,MAAM,CAAC,KAAK,CACV,EAAE,IAAI,EAAE,eAAe,EAAE,EACzB,iDAAiD,CAClD,CAAC;gBACF,IAAA,cAAI,EAAC,MAAM,CAAC,CAAC;YACf,CAAC;YACD,MAAM,CAAC,IAAI,CACT,EAAE,IAAI,EAAE,eAAe,EAAE,EACzB,uDAAuD,EACvD,SAAS,EACT,YAAY,CACb,CAAC;YACF,MAAM,IAAA,YAAK,EAAC,MAAM,CAAC,IAAI,CAAC,cAAc,GAAG,aAAM,CAAC,CAAC;YACjD,MAAM,eAAe,CAAC,SAAS,GAAG,gBAAS,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,4BAAoB,EAAE,QAAQ,CAAC,CAAC;YAC3C,eAAe,GAAG,IAAI,GAAG,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,IAAI,eAAe,GAAG,IAAI,GAAG,EAAmB,CAAC;IAEjD,OAAO;QACL,WAAW,EAAE,GAAG,EAAE,CAAC,QAAQ;QAC3B,SAAS,EAAE,CACT,MAAc,EACd,OAAe,EACyC,EAAE;YAC1D,IAAI,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjC,OAAO,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACtC,CAAC;YACD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAC1B,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,SAAE,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAC/D,CAAC;YACF,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACrC,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,eAAe;KAChB,CAAC;AACJ,CAAC"}
@@ -20,7 +20,7 @@ function Device({ hass, config, context, logger, lifecycle, event, }) {
20
20
  context,
21
21
  event_type: "device_registry_updated",
22
22
  async exec() {
23
- await (0, core_1.throttle)(helpers_1.DEVICE_REGISTRY_UPDATED, config.hass.EVENT_THROTTLE_MS);
23
+ await (0, core_1.debounce)(helpers_1.DEVICE_REGISTRY_UPDATED, config.hass.EVENT_DEBOUNCE_MS);
24
24
  hass.device.current = await hass.device.list();
25
25
  logger.debug(`device registry updated`);
26
26
  event.emit(helpers_1.DEVICE_REGISTRY_UPDATED);
@@ -200,7 +200,7 @@ function EntityManager({ logger, hass, config, lifecycle, event, context, intern
200
200
  context,
201
201
  event_type: "entity_registry_updated",
202
202
  async exec() {
203
- await (0, core_1.throttle)(__1.ENTITY_REGISTRY_UPDATED, config.hass.EVENT_THROTTLE_MS);
203
+ await (0, core_1.debounce)(__1.ENTITY_REGISTRY_UPDATED, config.hass.EVENT_DEBOUNCE_MS);
204
204
  logger.debug("entity registry updated");
205
205
  hass.entity.registry.current = await hass.entity.registry.list();
206
206
  event.emit(__1.ENTITY_REGISTRY_UPDATED);
@@ -19,7 +19,7 @@ function Floor({ hass, config, context, event, logger, lifecycle, }) {
19
19
  context,
20
20
  event_type: "floor_registry_updated",
21
21
  async exec() {
22
- await (0, core_1.throttle)(helpers_1.FLOOR_REGISTRY_UPDATED, config.hass.EVENT_THROTTLE_MS);
22
+ await (0, core_1.debounce)(helpers_1.FLOOR_REGISTRY_UPDATED, config.hass.EVENT_DEBOUNCE_MS);
23
23
  hass.floor.current = await hass.floor.list();
24
24
  logger.debug(`floor registry updated`);
25
25
  event.emit(helpers_1.FLOOR_REGISTRY_UPDATED);
@@ -34,9 +34,21 @@ function IDByExtension({ hass, logger }) {
34
34
  // * area
35
35
  function area(area, ...domains) {
36
36
  hass.entity.warnEarly("area");
37
- return process(hass.entity.registry.current
37
+ // find entities are associated with the area directly
38
+ const fromEntity = hass.entity.registry.current
38
39
  .filter(i => i.area_id === area)
39
- .map(i => i.entity_id), domains);
40
+ .map(i => i.entity_id);
41
+ // identify devices
42
+ const devices = new Set(hass.device.current
43
+ .filter(device => device.area_id === area)
44
+ .map(i => i.id));
45
+ // extract entities associated with device, that have not been assigned to a room
46
+ const fromDevice = hass.entity.registry.current
47
+ .filter(entity => devices.has(entity.device_id) && core_1.is.empty(entity.area_id))
48
+ .map(i => i.entity_id);
49
+ return process(
50
+ // merge lists
51
+ core_1.is.unique([...fromEntity, ...fromDevice]), domains);
40
52
  }
41
53
  // * device
42
54
  function device(device, ...domains) {
@@ -1 +1 @@
1
- {"version":3,"file":"id-by.extension.js","sourceRoot":"","sources":["../../src/extensions/id-by.extension.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"id-by.extension.js","sourceRoot":"","sources":["../../src/extensions/id-by.extension.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,7 @@ function Label({ hass, config, logger, lifecycle, event, context, }) {
19
19
  context,
20
20
  event_type: "label_registry_updated",
21
21
  async exec() {
22
- await (0, core_1.throttle)(helpers_1.LABEL_REGISTRY_UPDATED, config.hass.EVENT_THROTTLE_MS);
22
+ await (0, core_1.debounce)(helpers_1.LABEL_REGISTRY_UPDATED, config.hass.EVENT_DEBOUNCE_MS);
23
23
  hass.label.current = await hass.label.list();
24
24
  logger.debug(`label registry updated`);
25
25
  event.emit(helpers_1.LABEL_REGISTRY_UPDATED);
@@ -9,5 +9,5 @@ export declare function ReferenceExtension({ hass, logger, internal, event, }: T
9
9
  id: <ENTITY_ID extends ANY_ENTITY>(entity_id: ENTITY_ID) => ByIdProxy<ENTITY_ID>;
10
10
  label: <LABEL extends TLabelId, DOMAINS extends TRawDomains = TRawDomains>(label: LABEL, ...domains: DOMAINS[]) => ByIdProxy<PICK_FROM_LABEL<LABEL, DOMAINS>>[];
11
11
  platform: <PLATFORM extends TPlatformId, DOMAINS extends TRawDomains = TRawDomains>(platform: PLATFORM, ...domains: DOMAINS[]) => ByIdProxy<PICK_FROM_PLATFORM<PLATFORM, DOMAINS>>[];
12
- unique_id: <UNIQUE_ID extends TUniqueId, ENTITY_ID extends Extract<TUniqueIDMapping[UNIQUE_ID], ANY_ENTITY> = Extract<TUniqueIDMapping[UNIQUE_ID], import("../dynamic").TRawEntityIds>>(unique_id: UNIQUE_ID) => ByIdProxy<ENTITY_ID>;
12
+ unique_id: <UNIQUE_ID extends TUniqueId, ENTITY_ID extends Extract<TUniqueIDMapping[UNIQUE_ID], ANY_ENTITY> = Extract<TUniqueIDMapping[UNIQUE_ID], import("..").TRawEntityIds>>(unique_id: UNIQUE_ID) => ByIdProxy<ENTITY_ID>;
13
13
  };
@@ -5,6 +5,7 @@ const tslib_1 = require("tslib");
5
5
  const core_1 = require("@digital-alchemy/core");
6
6
  const dayjs_1 = tslib_1.__importDefault(require("dayjs"));
7
7
  const validator_1 = require("validator");
8
+ const __1 = require("..");
8
9
  const helpers_1 = require("../helpers");
9
10
  function ReferenceExtension({ hass, logger, internal, event, }) {
10
11
  const ENTITY_PROXIES = new Map();
@@ -35,7 +36,44 @@ function ReferenceExtension({ hass, logger, internal, event, }) {
35
36
  function byId(entity_id) {
36
37
  const entity_domain = (0, helpers_1.domain)(entity_id);
37
38
  if (!ENTITY_PROXIES.has(entity_id)) {
38
- const thing = hass.entity.getCurrentState(entity_id);
39
+ const { ...thing } = hass.entity.getCurrentState(entity_id);
40
+ let loaded = false;
41
+ function keys() {
42
+ const entityDomain = (0, helpers_1.domain)(entity_id);
43
+ return [
44
+ "attributes",
45
+ "entity_id",
46
+ "history",
47
+ "last",
48
+ "nextState",
49
+ "once",
50
+ "onUpdate",
51
+ "previous",
52
+ "removeAllListeners",
53
+ "state",
54
+ "waitForState",
55
+ ...hass.configure
56
+ .getServices()
57
+ .filter(({ domain }) => domain === entityDomain)
58
+ .flatMap(i => Object.keys(i.services))
59
+ .sort((a, b) => (a > b ? core_1.UP : core_1.DOWN)),
60
+ ];
61
+ }
62
+ function appendKeys(force = false) {
63
+ if (loaded && !force) {
64
+ return;
65
+ }
66
+ // Not gonna build types for this, and ts-expect-error fails in jest
67
+ // This is a weird hack for an obscure feature, so sue me
68
+ //
69
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
70
+ // @ts-ignore
71
+ keys().forEach(i => (thing[i] ??= () => { }));
72
+ if (!core_1.is.empty(hass.configure.getServices())) {
73
+ loaded = true;
74
+ }
75
+ }
76
+ event.on(__1.SERVICE_LIST_UPDATED, () => appendKeys(true));
39
77
  ENTITY_PROXIES.set(entity_id,
40
78
  // just because you can't do generics properly....
41
79
  new Proxy(thing, {
@@ -140,6 +178,14 @@ function ReferenceExtension({ hass, logger, internal, event, }) {
140
178
  }
141
179
  return proxyGetLogic(entity_id, property);
142
180
  },
181
+ has(_, property) {
182
+ appendKeys();
183
+ return property in thing;
184
+ },
185
+ ownKeys() {
186
+ appendKeys();
187
+ return Object.keys(thing);
188
+ },
143
189
  set(_, property, value) {
144
190
  // * state
145
191
  if (property === "state") {
@@ -1 +1 @@
1
- {"version":3,"file":"reference.extension.js","sourceRoot":"","sources":["../../src/extensions/reference.extension.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reference.extension.js","sourceRoot":"","sources":["../../src/extensions/reference.extension.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,7 @@ function Zone({ config, hass, event, logger, context, lifecycle, }) {
19
19
  context,
20
20
  event_type: "zone_registry_updated",
21
21
  async exec() {
22
- await (0, core_1.throttle)(helpers_1.ZONE_REGISTRY_UPDATED, config.hass.EVENT_THROTTLE_MS);
22
+ await (0, core_1.debounce)(helpers_1.ZONE_REGISTRY_UPDATED, config.hass.EVENT_DEBOUNCE_MS);
23
23
  hass.zone.current = await hass.zone.list();
24
24
  logger.debug(`zone registry updated`);
25
25
  event.emit(helpers_1.ZONE_REGISTRY_UPDATED);
@@ -81,7 +81,7 @@ export declare const LIB_HASS: import("@digital-alchemy/core").LibraryDefinition
81
81
  type: "string";
82
82
  };
83
83
  CALL_PROXY_ALLOW_REST: StringConfig<AllowRestOptions>;
84
- EVENT_THROTTLE_MS: {
84
+ EVENT_DEBOUNCE_MS: {
85
85
  default: number;
86
86
  description: string;
87
87
  type: "number";
@@ -31,9 +31,9 @@ exports.LIB_HASS = (0, core_1.CreateLibrary)({
31
31
  enum: ["prefer", "forbid", "allow"],
32
32
  type: "string",
33
33
  },
34
- EVENT_THROTTLE_MS: {
34
+ EVENT_DEBOUNCE_MS: {
35
35
  default: 50,
36
- description: "Throttle reactions to registry changes",
36
+ description: "Debounce reactions to registry changes",
37
37
  type: "number",
38
38
  },
39
39
  EXPECT_RESPONSE_AFTER: {
@@ -1,4 +1,4 @@
1
- export type AppleActionableNotificationPush = {
1
+ export type AppleNotificationPush = {
2
2
  /**
3
3
  * **iOS | MacOS**
4
4
  *
@@ -28,7 +28,70 @@ export type AppleActionableNotificationPush = {
28
28
  */
29
29
  presentation_options?: ["alert" | "badge" | "sound"];
30
30
  };
31
- export type AppleActionableNotification = {
31
+ export type NotificationAction = {
32
+ /**
33
+ * Key passed back in events.
34
+ * When set to `REPLY`, you will be prompted for text to send with the event.
35
+ */
36
+ action: "REPLY" | "URI" | string;
37
+ /**
38
+ * Shown on the action button to the user.
39
+ */
40
+ title: string;
41
+ /**
42
+ * The URI to open when selected.
43
+ * Android requires setting the action string to `URI` to use this key. [More Info](https://companion.home-assistant.io/docs/notifications/actionable-notifications/#uri-values).
44
+ */
45
+ uri?: string;
46
+ };
47
+ export type AndroidNotificationActionOptions = {};
48
+ export type AppleNotificationActionOptions = {
49
+ /**
50
+ * **iOS | MacOS**
51
+ *
52
+ * Set to `foreground` to launch the app when tapped. Defaults to background which just fires the event.
53
+ * This is automatically set to foreground when providing a uri.
54
+ */
55
+ activationMode?: "foreground" | "background";
56
+ /**
57
+ * **iOS | MacOS**
58
+ *
59
+ * Set to `true` to require a password to fire the event.
60
+ */
61
+ authenticationRequired?: boolean;
62
+ /**
63
+ * **iOS | MacOS**
64
+ *
65
+ * Set to `true` to color the actions title red.
66
+ */
67
+ destructive?: boolean;
68
+ /**
69
+ * **iOS | MacOS**
70
+ *
71
+ * Set to `textInput` to prompt for text to return with the event. This also occurs when setting the action to `REPLY`.
72
+ */
73
+ behavior?: "textInput";
74
+ /**
75
+ * **iOS | MacOS**
76
+ *
77
+ * Title to use for text input for actions that prompt.
78
+ */
79
+ textInputButtonTitle?: string;
80
+ /**
81
+ * **iOS | MacOS**
82
+ *
83
+ * Placeholder to use for text input for actions that prompt.
84
+ */
85
+ textInputPlaceholder?: string;
86
+ /**
87
+ * **iOS | MacOS**
88
+ *
89
+ * The icon to use for the notification.
90
+ * * [More info](https://companion.home-assistant.io/docs/notifications/actionable-notifications#icon-values)
91
+ */
92
+ icon?: string;
93
+ };
94
+ export type AppleNotificationData = {
32
95
  /**
33
96
  * **iOS | MacOS**
34
97
  *
@@ -43,9 +106,13 @@ export type AppleActionableNotification = {
43
106
  * [More info](https://companion.home-assistant.io/docs/notifications/notifications-basic#subtitle--subject)
44
107
  */
45
108
  subtitle?: string;
46
- push?: AppleActionableNotificationPush;
109
+ push?: AppleNotificationPush;
110
+ /**
111
+ * iOS Supports ~10 actions.
112
+ */
113
+ actions: Array<NotificationAction & AppleNotificationActionOptions>;
47
114
  };
48
- export type AndroidActionableNotification = {
115
+ export type AndroidNotificationData = {
49
116
  /**
50
117
  * **Android**
51
118
  *
@@ -179,28 +246,12 @@ export type AndroidActionableNotification = {
179
246
  * [More info](https://companion.home-assistant.io/docs/notifications/notifications-basic#android-auto-visibility)
180
247
  */
181
248
  car_ui?: boolean;
249
+ /**
250
+ * Android Supports 3 actions.
251
+ */
252
+ actions: Array<NotificationAction & AndroidNotificationActionOptions>;
182
253
  };
183
- export type ActionableNotification = {
184
- /**
185
- * Android allows 3 actions.
186
- * iOS allows around 10 actions.
187
- */
188
- actions?: {
189
- /**
190
- * Key passed back in events.
191
- * When set to `REPLY`, you will be prompted for text to send with the event.
192
- */
193
- action: "REPLY" | "URI" | string;
194
- /**
195
- * Shown on the action button to the user.
196
- */
197
- title: string;
198
- /**
199
- * The URI to open when selected.
200
- * Android requires setting the action string to `URI` to use this key. [More Info](https://companion.home-assistant.io/docs/notifications/actionable-notifications/#uri-values).
201
- */
202
- uri?: string;
203
- }[];
254
+ export type NotificationData = {
204
255
  /**
205
256
  * The group to which the notification belongs.
206
257
  * [More info](https://companion.home-assistant.io/docs/notifications/notifications-basic#grouping)
@@ -88,7 +88,7 @@ describe("Area", () => {
88
88
  },
89
89
  }));
90
90
  });
91
- it("should throttle updates properly", async () => {
91
+ it("should debounce updates properly", async () => {
92
92
  expect.assertions(1);
93
93
  application = (0, mock_assistant_1.CreateTestingApplication)({
94
94
  Test({ lifecycle, hass }) {
@@ -52,7 +52,7 @@ describe("Device", () => {
52
52
  }));
53
53
  });
54
54
  });
55
- it("should throttle updates properly", async () => {
55
+ it("should debounce updates properly", async () => {
56
56
  expect.assertions(1);
57
57
  application = (0, utils_1.CreateTestingApplication)({
58
58
  Test({ lifecycle, hass }) {
@@ -13,7 +13,7 @@ describe("Entity", () => {
13
13
  });
14
14
  describe("API", () => {
15
15
  describe("Updates", () => {
16
- it("should throttle updates properly", async () => {
16
+ it("should debounce updates properly", async () => {
17
17
  expect.assertions(1);
18
18
  application = (0, mock_assistant_1.CreateTestingApplication)({
19
19
  Test({ lifecycle, hass }) {
@@ -41,7 +41,7 @@ describe("Entity", () => {
41
41
  hass: {
42
42
  AUTO_CONNECT_SOCKET: false,
43
43
  AUTO_SCAN_CALL_PROXY: false,
44
- EVENT_THROTTLE_MS: 10,
44
+ EVENT_DEBOUNCE_MS: 10,
45
45
  },
46
46
  }));
47
47
  });
@@ -164,7 +164,7 @@ describe("Floor", () => {
164
164
  },
165
165
  }));
166
166
  });
167
- it("should throttle updates properly", async () => {
167
+ it("should debounce updates properly", async () => {
168
168
  expect.assertions(1);
169
169
  application = (0, utils_1.CreateTestingApplication)({
170
170
  Test({ lifecycle, hass }) {
@@ -18,13 +18,32 @@ describe("ID By", () => {
18
18
  lifecycle.onReady(() => {
19
19
  const bedroom = hass.idBy.area("bedroom");
20
20
  const kitchen = hass.idBy.area("kitchen");
21
- expect(bedroom.length).toBe(1);
21
+ expect(bedroom.length).toBe(2);
22
22
  expect(kitchen.length).toBe(1);
23
23
  });
24
24
  },
25
25
  });
26
26
  await application.bootstrap((0, mock_assistant_1.SILENT_BOOT)({ hass: { MOCK_SOCKET: true } }, true));
27
27
  });
28
+ it("finds entities only related by device", async () => {
29
+ expect.assertions(1);
30
+ application = (0, mock_assistant_1.CreateTestingApplication)({
31
+ Test({ lifecycle, hass }) {
32
+ lifecycle.onReady(() => {
33
+ // merges 1 from direct area, 2 via device
34
+ // ignores 2 from the device assigned to another area
35
+ const list = hass.idBy.area("test");
36
+ const expected = [
37
+ "sensor.sun_next_dusk",
38
+ "climate.hallway_thermostat",
39
+ "binary_sensor.garage_door",
40
+ ];
41
+ expect(expected.every(expected => list.includes(expected))).toBe(true);
42
+ });
43
+ },
44
+ });
45
+ await application.bootstrap((0, mock_assistant_1.SILENT_BOOT)({ hass: { MOCK_SOCKET: true } }, true));
46
+ });
28
47
  it("find entities by area limiting by domain", async () => {
29
48
  expect.assertions(2);
30
49
  application = (0, mock_assistant_1.CreateTestingApplication)({
@@ -32,7 +51,7 @@ describe("ID By", () => {
32
51
  lifecycle.onReady(() => {
33
52
  const bedroom = hass.idBy.area("bedroom", "light");
34
53
  const kitchen = hass.idBy.area("kitchen", "light");
35
- expect(bedroom.length).toBe(0);
54
+ expect(bedroom.length).toBe(1);
36
55
  expect(kitchen.length).toBe(0);
37
56
  });
38
57
  },
@@ -125,7 +144,7 @@ describe("ID By", () => {
125
144
  Test({ lifecycle, hass }) {
126
145
  lifecycle.onReady(() => {
127
146
  const synapse = hass.idBy.floor("downstairs");
128
- expect(synapse.length).toBe(2);
147
+ expect(synapse.length).toBe(3);
129
148
  });
130
149
  },
131
150
  });