@digital-alchemy/hass 24.10.1 → 24.11.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 (38) hide show
  1. package/dist/dynamic.d.ts +3 -1
  2. package/dist/extensions/events.extension.d.ts +1 -1
  3. package/dist/extensions/events.extension.js +26 -7
  4. package/dist/extensions/events.extension.js.map +1 -1
  5. package/dist/extensions/internal.extension.js +1 -1
  6. package/dist/extensions/internal.extension.js.map +1 -1
  7. package/dist/extensions/reference.extension.d.ts +51 -1
  8. package/dist/extensions/reference.extension.js +293 -181
  9. package/dist/extensions/reference.extension.js.map +1 -1
  10. package/dist/extensions/websocket-api.extension.js +4 -3
  11. package/dist/extensions/websocket-api.extension.js.map +1 -1
  12. package/dist/hass.module.d.ts +3 -3
  13. package/dist/hass.module.js +3 -3
  14. package/dist/hass.module.js.map +1 -1
  15. package/dist/helpers/entity-state.helper.d.ts +11 -7
  16. package/dist/helpers/interfaces.helper.d.ts +10 -10
  17. package/dist/helpers/interfaces.helper.js.map +1 -1
  18. package/dist/helpers/utility.helper.d.ts +5 -0
  19. package/dist/helpers/utility.helper.js +5 -0
  20. package/dist/helpers/utility.helper.js.map +1 -1
  21. package/dist/mock_assistant/mock-assistant.module.d.ts +4 -4
  22. package/dist/mock_assistant/mock-assistant.module.js +7 -0
  23. package/dist/mock_assistant/mock-assistant.module.js.map +1 -1
  24. package/dist/testing/fetch-api.spec.js +13 -13
  25. package/dist/testing/fetch-api.spec.js.map +1 -1
  26. package/package.json +27 -28
  27. package/scripts/test.sh +1 -1
  28. package/src/dynamic.ts +82 -77
  29. package/src/extensions/events.extension.ts +26 -10
  30. package/src/extensions/internal.extension.ts +1 -1
  31. package/src/extensions/reference.extension.ts +323 -201
  32. package/src/extensions/websocket-api.extension.ts +4 -3
  33. package/src/hass.module.ts +4 -4
  34. package/src/helpers/entity-state.helper.ts +11 -6
  35. package/src/helpers/interfaces.helper.ts +10 -9
  36. package/src/helpers/utility.helper.ts +8 -0
  37. package/src/mock_assistant/mock-assistant.module.ts +7 -0
  38. package/src/testing/fetch-api.spec.ts +13 -13
package/src/dynamic.ts CHANGED
@@ -6,6 +6,8 @@
6
6
  /* eslint-disable @typescript-eslint/no-empty-object-type */
7
7
 
8
8
  // @ts-nocheck
9
+ import { RequireAtLeastOne } from "type-fest";
10
+
9
11
  import {
10
12
  AndroidNotificationData,
11
13
  AppleNotificationData,
@@ -3991,83 +3993,86 @@ export type iCallService = {
3991
3993
  *
3992
3994
  * > Speaks something using text-to-speech on a media player.
3993
3995
  */
3994
- speak(service_data?: {
3995
- /**
3996
- * ## Cache
3997
- *
3998
- * > Stores this message locally so that when the text is requested again, the output can be produced more quickly.
3999
- *
4000
- * ### Default
4001
- *
4002
- * > ```json
4003
- * > true
4004
- * > ```
4005
- */
4006
- cache?: boolean;
4007
- /**
4008
- * ## Language
4009
- *
4010
- * > Language to use for speech generation.
4011
- *
4012
- * ### Example
4013
- *
4014
- * > ```json
4015
- * > {
4016
- * > "language": "ru"
4017
- * > }
4018
- * > ```
4019
- */
4020
- language?: string;
4021
- /**
4022
- * ## Media player entity
4023
- *
4024
- * > Media players to play the message.
4025
- */
4026
- media_player_entity_id: PICK_ENTITY<"media_player"> | PICK_ENTITY<"media_player">[];
4027
- /**
4028
- * ## Message
4029
- *
4030
- * > The text you want to convert into speech so that you can listen to it on your device.
4031
- *
4032
- * ### Example
4033
- *
4034
- * > ```json
4035
- * > {
4036
- * > "message": "My name is hanna"
4037
- * > }
4038
- * > ```
4039
- */
4040
- message: string;
4041
- /**
4042
- * ## Options
4043
- *
4044
- * > A dictionary containing integration-specific options.
4045
- *
4046
- * ### Example
4047
- *
4048
- * > ```json
4049
- * > {
4050
- * > "options": "platform specific"
4051
- * > }
4052
- * > ```
4053
- *
4054
- * ## Selector
4055
- *
4056
- * > ```yaml
4057
- * > object: null
4058
- * > ```
4059
- */
4060
- options?: unknown;
4061
- /**
4062
- * Assisted definition
4063
- * > ```yaml
4064
- * > entity:
4065
- * > - domain:
4066
- * > - tts
4067
- * > ```
4068
- */
4069
- entity_id: PICK_ENTITY<"tts"> | PICK_ENTITY<"tts">[];
4070
- }): Promise<void>;
3996
+ speak(
3997
+ service_data?: {
3998
+ /**
3999
+ * ## Cache
4000
+ *
4001
+ * > Stores this message locally so that when the text is requested again, the output can be produced more quickly.
4002
+ *
4003
+ * ### Default
4004
+ *
4005
+ * > ```json
4006
+ * > true
4007
+ * > ```
4008
+ */
4009
+ cache?: boolean;
4010
+ /**
4011
+ * ## Language
4012
+ *
4013
+ * > Language to use for speech generation.
4014
+ *
4015
+ * ### Example
4016
+ *
4017
+ * > ```json
4018
+ * > {
4019
+ * > "language": "ru"
4020
+ * > }
4021
+ * > ```
4022
+ */
4023
+ language?: string;
4024
+ /**
4025
+ * ## Media player entity
4026
+ *
4027
+ * > Media players to play the message.
4028
+ */
4029
+ media_player_entity_id: PICK_ENTITY<"media_player"> | PICK_ENTITY<"media_player">[];
4030
+ /**
4031
+ * ## Message
4032
+ *
4033
+ * > The text you want to convert into speech so that you can listen to it on your device.
4034
+ *
4035
+ * ### Example
4036
+ *
4037
+ * > ```json
4038
+ * > {
4039
+ * > "message": "My name is hanna"
4040
+ * > }
4041
+ * > ```
4042
+ */
4043
+ message: string;
4044
+ /**
4045
+ * ## Options
4046
+ *
4047
+ * > A dictionary containing integration-specific options.
4048
+ *
4049
+ * ### Example
4050
+ *
4051
+ * > ```json
4052
+ * > {
4053
+ * > "options": "platform specific"
4054
+ * > }
4055
+ * > ```
4056
+ *
4057
+ * ## Selector
4058
+ *
4059
+ * > ```yaml
4060
+ * > object: null
4061
+ * > ```
4062
+ */
4063
+ options?: unknown;
4064
+ } & RequireAtLeastOne<{
4065
+ /**
4066
+ * Assisted definition
4067
+ * > ```yaml
4068
+ * > entity:
4069
+ * > - domain:
4070
+ * > - tts
4071
+ * > ```
4072
+ */
4073
+ entity_id: PICK_ENTITY<"tts"> | PICK_ENTITY<"tts">[];
4074
+ }>,
4075
+ ): Promise<void>;
4071
4076
  };
4072
4077
  // # MARK: zone
4073
4078
  zone: {
@@ -1,4 +1,4 @@
1
- import { TServiceParams } from "@digital-alchemy/core";
1
+ import { is, TServiceParams } from "@digital-alchemy/core";
2
2
 
3
3
  import {
4
4
  AREA_REGISTRY_UPDATED,
@@ -11,15 +11,31 @@ import {
11
11
  ZONE_REGISTRY_UPDATED,
12
12
  } from "../helpers";
13
13
 
14
- export function Events({ event }: TServiceParams): HassEventsService {
14
+ export function EventsService({ event }: TServiceParams): HassEventsService {
15
15
  return {
16
- onAreaRegistryUpdate: (callback: SimpleCallback) => event.on(AREA_REGISTRY_UPDATED, callback),
17
- onDeviceRegistryUpdate: (callback: SimpleCallback) =>
18
- event.on(DEVICE_REGISTRY_UPDATED, callback),
19
- onEntityRegistryUpdate: (callback: SimpleCallback) =>
20
- event.on(ENTITY_REGISTRY_UPDATED, callback),
21
- onFloorRegistryUpdate: (callback: SimpleCallback) => event.on(FLOOR_REGISTRY_UPDATED, callback),
22
- onLabelRegistryUpdate: (callback: SimpleCallback) => event.on(LABEL_REGISTRY_UPDATED, callback),
23
- onZoneRegistryUpdate: (callback: SimpleCallback) => event.on(ZONE_REGISTRY_UPDATED, callback),
16
+ onAreaRegistryUpdate: (callback: SimpleCallback) => {
17
+ event.on(AREA_REGISTRY_UPDATED, callback);
18
+ return is.removeFn(() => event.removeListener(AREA_REGISTRY_UPDATED, callback));
19
+ },
20
+ onDeviceRegistryUpdate: (callback: SimpleCallback) => {
21
+ event.on(DEVICE_REGISTRY_UPDATED, callback);
22
+ return is.removeFn(() => event.removeListener(DEVICE_REGISTRY_UPDATED, callback));
23
+ },
24
+ onEntityRegistryUpdate: (callback: SimpleCallback) => {
25
+ event.on(ENTITY_REGISTRY_UPDATED, callback);
26
+ return is.removeFn(() => event.removeListener(ENTITY_REGISTRY_UPDATED, callback));
27
+ },
28
+ onFloorRegistryUpdate: (callback: SimpleCallback) => {
29
+ event.on(FLOOR_REGISTRY_UPDATED, callback);
30
+ return is.removeFn(() => event.removeListener(FLOOR_REGISTRY_UPDATED, callback));
31
+ },
32
+ onLabelRegistryUpdate: (callback: SimpleCallback) => {
33
+ event.on(LABEL_REGISTRY_UPDATED, callback);
34
+ return is.removeFn(() => event.removeListener(LABEL_REGISTRY_UPDATED, callback));
35
+ },
36
+ onZoneRegistryUpdate: (callback: SimpleCallback) => {
37
+ event.on(ZONE_REGISTRY_UPDATED, callback);
38
+ return is.removeFn(() => event.removeListener(ZONE_REGISTRY_UPDATED, callback));
39
+ },
24
40
  };
25
41
  }
@@ -89,7 +89,7 @@ export function FetchInternals({ logger, context: parentContext }: TServiceParam
89
89
  ...fetchWith
90
90
  }: Partial<FetchArguments<BODY>>) {
91
91
  const contentType = is.object(body) ? { "Content-Type": "application/json" } : {};
92
- const result = await global.fetch(fetchCreateUrl(fetchWith), {
92
+ const result = await globalThis.fetch(fetchCreateUrl(fetchWith), {
93
93
  body: is.object(body) ? JSON.stringify(body) : body,
94
94
  headers: {
95
95
  ...contentType,