@digital-alchemy/hass 0.3.21 → 0.3.22

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 (132) hide show
  1. package/dist/dynamic.d.ts +3227 -202
  2. package/dist/dynamic.js +335 -85
  3. package/dist/dynamic.js.map +1 -1
  4. package/dist/e2e/app/entities.d.ts +5 -0
  5. package/dist/e2e/app/entities.js +21 -0
  6. package/dist/e2e/app/entities.js.map +1 -0
  7. package/dist/e2e/app/main.d.ts +10 -0
  8. package/dist/e2e/app/main.js +15 -0
  9. package/dist/e2e/app/main.js.map +1 -0
  10. package/dist/e2e/area.spec.d.ts +1 -0
  11. package/dist/e2e/area.spec.js +99 -0
  12. package/dist/e2e/area.spec.js.map +1 -0
  13. package/dist/e2e/call-proxy.spec.d.ts +1 -0
  14. package/dist/e2e/call-proxy.spec.js +57 -0
  15. package/dist/e2e/call-proxy.spec.js.map +1 -0
  16. package/dist/e2e/device.spec.d.ts +1 -0
  17. package/dist/e2e/device.spec.js +27 -0
  18. package/dist/e2e/device.spec.js.map +1 -0
  19. package/dist/e2e/entity.spec.d.ts +1 -0
  20. package/dist/e2e/entity.spec.js +328 -0
  21. package/dist/e2e/entity.spec.js.map +1 -0
  22. package/dist/e2e/fetch.spec.d.ts +1 -0
  23. package/dist/e2e/fetch.spec.js +79 -0
  24. package/dist/e2e/fetch.spec.js.map +1 -0
  25. package/dist/e2e/floor.spec.d.ts +1 -0
  26. package/dist/e2e/floor.spec.js +81 -0
  27. package/dist/e2e/floor.spec.js.map +1 -0
  28. package/dist/e2e/label.spec.d.ts +1 -0
  29. package/dist/e2e/label.spec.js +82 -0
  30. package/dist/e2e/label.spec.js.map +1 -0
  31. package/dist/e2e/utils.d.ts +2 -0
  32. package/dist/e2e/utils.js +6 -0
  33. package/dist/e2e/utils.js.map +1 -0
  34. package/dist/extensions/area.extension.d.ts +5 -5
  35. package/dist/extensions/area.extension.js +60 -51
  36. package/dist/extensions/area.extension.js.map +1 -1
  37. package/dist/extensions/call-proxy.extension.d.ts +1 -1
  38. package/dist/extensions/call-proxy.extension.js +13 -26
  39. package/dist/extensions/call-proxy.extension.js.map +1 -1
  40. package/dist/extensions/conversation.extension.js +1 -1
  41. package/dist/extensions/conversation.extension.js.map +1 -1
  42. package/dist/extensions/device.extension.d.ts +1 -1
  43. package/dist/extensions/device.extension.js +2 -1
  44. package/dist/extensions/device.extension.js.map +1 -1
  45. package/dist/extensions/entity.extension.d.ts +23 -10
  46. package/dist/extensions/entity.extension.js +51 -27
  47. package/dist/extensions/entity.extension.js.map +1 -1
  48. package/dist/extensions/fetch-api.extension.d.ts +5 -4
  49. package/dist/extensions/fetch-api.extension.js +41 -30
  50. package/dist/extensions/fetch-api.extension.js.map +1 -1
  51. package/dist/extensions/floor.extension.d.ts +0 -5
  52. package/dist/extensions/floor.extension.js +1 -2
  53. package/dist/extensions/floor.extension.js.map +1 -1
  54. package/dist/extensions/label.extension.d.ts +4 -9
  55. package/dist/extensions/label.extension.js +35 -33
  56. package/dist/extensions/label.extension.js.map +1 -1
  57. package/dist/extensions/websocket-api.extension.d.ts +21 -4
  58. package/dist/extensions/websocket-api.extension.js +94 -57
  59. package/dist/extensions/websocket-api.extension.js.map +1 -1
  60. package/dist/extensions/zone.extension.d.ts +0 -6
  61. package/dist/extensions/zone.extension.js +0 -2
  62. package/dist/extensions/zone.extension.js.map +1 -1
  63. package/dist/hass.module.d.ts +10 -0
  64. package/dist/hass.module.js +13 -0
  65. package/dist/hass.module.js.map +1 -1
  66. package/dist/helpers/constants.helper.d.ts +1 -40
  67. package/dist/helpers/constants.helper.js +2 -45
  68. package/dist/helpers/constants.helper.js.map +1 -1
  69. package/dist/helpers/fetch/calendar.d.ts +1 -1
  70. package/dist/helpers/fetch/configuration.d.ts +4 -4
  71. package/dist/helpers/metrics.helper.d.ts +4 -0
  72. package/dist/helpers/metrics.helper.js +15 -7
  73. package/dist/helpers/metrics.helper.js.map +1 -1
  74. package/dist/helpers/registry.d.ts +1 -1
  75. package/dist/helpers/utility.helper.d.ts +3 -2
  76. package/dist/helpers/utility.helper.js.map +1 -1
  77. package/dist/helpers/websocket.helper.d.ts +12 -12
  78. package/dist/mock_assistant/extensions/events.extension.d.ts +6 -0
  79. package/dist/mock_assistant/extensions/events.extension.js +28 -0
  80. package/dist/mock_assistant/extensions/events.extension.js.map +1 -0
  81. package/dist/mock_assistant/extensions/fixtures.extension.d.ts +13 -0
  82. package/dist/mock_assistant/extensions/fixtures.extension.js +52 -0
  83. package/dist/mock_assistant/extensions/fixtures.extension.js.map +1 -0
  84. package/dist/mock_assistant/extensions/index.d.ts +2 -0
  85. package/dist/mock_assistant/extensions/index.js +6 -0
  86. package/dist/mock_assistant/extensions/index.js.map +1 -0
  87. package/dist/mock_assistant/helpers/fixtures.d.ts +10 -0
  88. package/dist/mock_assistant/helpers/fixtures.js +3 -0
  89. package/dist/mock_assistant/helpers/fixtures.js.map +1 -0
  90. package/dist/mock_assistant/helpers/index.d.ts +2 -0
  91. package/dist/mock_assistant/helpers/index.js +6 -0
  92. package/dist/mock_assistant/helpers/index.js.map +1 -0
  93. package/dist/mock_assistant/helpers/utils.d.ts +3 -0
  94. package/dist/mock_assistant/helpers/utils.js +31 -0
  95. package/dist/mock_assistant/helpers/utils.js.map +1 -0
  96. package/dist/mock_assistant/index.d.ts +3 -0
  97. package/dist/mock_assistant/index.js +7 -0
  98. package/dist/mock_assistant/index.js.map +1 -0
  99. package/dist/mock_assistant/main.d.ts +2 -0
  100. package/dist/mock_assistant/main.js +37 -0
  101. package/dist/mock_assistant/main.js.map +1 -0
  102. package/dist/mock_assistant/mock-assistant.module.d.ts +16 -0
  103. package/dist/mock_assistant/mock-assistant.module.js +22 -0
  104. package/dist/mock_assistant/mock-assistant.module.js.map +1 -0
  105. package/dist/testing/area.spec.d.ts +1 -0
  106. package/dist/testing/area.spec.js +224 -0
  107. package/dist/testing/area.spec.js.map +1 -0
  108. package/dist/testing/config.spec.d.ts +1 -0
  109. package/dist/testing/config.spec.js +232 -0
  110. package/dist/testing/config.spec.js.map +1 -0
  111. package/dist/testing/device.spec.d.ts +1 -0
  112. package/dist/testing/device.spec.js +81 -0
  113. package/dist/testing/device.spec.js.map +1 -0
  114. package/dist/testing/entity.spec.d.ts +1 -0
  115. package/dist/testing/entity.spec.js +29 -0
  116. package/dist/testing/entity.spec.js.map +1 -0
  117. package/dist/testing/fetch-api.spec.d.ts +1 -0
  118. package/dist/testing/fetch-api.spec.js +476 -0
  119. package/dist/testing/fetch-api.spec.js.map +1 -0
  120. package/dist/testing/floor.spec.d.ts +1 -0
  121. package/dist/testing/floor.spec.js +223 -0
  122. package/dist/testing/floor.spec.js.map +1 -0
  123. package/dist/testing/label.spec.d.ts +1 -0
  124. package/dist/testing/label.spec.js +223 -0
  125. package/dist/testing/label.spec.js.map +1 -0
  126. package/dist/testing/websocket.spec.d.ts +8 -0
  127. package/dist/testing/websocket.spec.js +71 -0
  128. package/dist/testing/websocket.spec.js.map +1 -0
  129. package/dist/testing/workflow.spec.d.ts +1 -0
  130. package/dist/testing/workflow.spec.js +164 -0
  131. package/dist/testing/workflow.spec.js.map +1 -0
  132. package/package.json +36 -9
@@ -2,46 +2,6 @@ export declare const HASS_ENTITY = "HASS_ENTITY";
2
2
  export declare const HASS_ENTITY_GROUP = "HASS_ENTITY_GROUP";
3
3
  export declare const ALL_ENTITIES_UPDATED = "ALL_ENTITIES_UPDATED";
4
4
  export declare const SOCKET_READY = "SOCKET_READY";
5
- export declare enum HASSIO_WS_COMMAND {
6
- area_list = "config/area_registry/list",
7
- auth = "auth",
8
- call_service = "call_service",
9
- device_list = "config/device_registry/list",
10
- entity_list_for_display = "config/entity_registry/list_for_display",
11
- entity_list = "config/entity_registry/list",
12
- entity_remove = "config/entity_registry/remove",
13
- registry_update = "config/entity_registry/update",
14
- get_config = "get_config",
15
- generate_backup = "backup/generate",
16
- remove_backup = "backup/remove",
17
- history_during_period = "history/history_during_period",
18
- backup_info = "backup/info",
19
- download_backup = "auth/sign_path",
20
- get_states = "get_states",
21
- fire_event = "fire_event",
22
- ping = "ping",
23
- registry_get = "config/entity_registry/get",
24
- render_template = "render_template",
25
- search_related = "search/related",
26
- subscribe_trigger = "subscribe_trigger",
27
- subscribe_events = "subscribe_events",
28
- core_update = "config/core/update",
29
- persistent_notification = "persistent_notification/get",
30
- setup_info = "integration/setup_info",
31
- system_health = "system_health/info",
32
- trace_contexts = "trace/contexts",
33
- unsubscribe_events = "unsubscribe_events",
34
- analytics = "analytics",
35
- auth_list = "config/auth/list",
36
- cloud_status = "cloud/status",
37
- current_user = "auth/current_user",
38
- get_themes = "frontend/get_themes",
39
- get_user_data = "frontend/get_user_data",
40
- lovelace_config = "lovelace/config",
41
- lovelace_resources = "lovelace/resources",
42
- network = "network",
43
- translations = "frontend/get_translations"
44
- }
45
5
  export declare enum HassSocketMessageTypes {
46
6
  auth_required = "auth_required",
47
7
  auth_ok = "auth_ok",
@@ -56,3 +16,4 @@ export declare const ENTITY_REGISTRY_UPDATED = "ENTITY_REGISTRY_UPDATED";
56
16
  export declare const AREA_REGISTRY_UPDATED = "AREA_REGISTRY_UPDATED";
57
17
  export declare const LABEL_REGISTRY_UPDATED = "LABEL_REGISTRY_UPDATED";
58
18
  export declare const FLOOR_REGISTRY_UPDATED = "FLOOR_REGISTRY_UPDATED";
19
+ export declare const DEVICE_REGISTRY_UPDATED = "DEVICE_REGISTRY_UPDATED";
@@ -1,54 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FLOOR_REGISTRY_UPDATED = exports.LABEL_REGISTRY_UPDATED = exports.AREA_REGISTRY_UPDATED = exports.ENTITY_REGISTRY_UPDATED = exports.EARLY_ON_READY = exports.HOME_ASSISTANT_MODULE_CONFIGURATION = exports.HassSocketMessageTypes = exports.HASSIO_WS_COMMAND = exports.SOCKET_READY = exports.ALL_ENTITIES_UPDATED = exports.HASS_ENTITY_GROUP = exports.HASS_ENTITY = void 0;
3
+ exports.DEVICE_REGISTRY_UPDATED = exports.FLOOR_REGISTRY_UPDATED = exports.LABEL_REGISTRY_UPDATED = exports.AREA_REGISTRY_UPDATED = exports.ENTITY_REGISTRY_UPDATED = exports.EARLY_ON_READY = exports.HOME_ASSISTANT_MODULE_CONFIGURATION = exports.HassSocketMessageTypes = exports.SOCKET_READY = exports.ALL_ENTITIES_UPDATED = exports.HASS_ENTITY_GROUP = exports.HASS_ENTITY = void 0;
4
4
  exports.HASS_ENTITY = "HASS_ENTITY";
5
5
  exports.HASS_ENTITY_GROUP = "HASS_ENTITY_GROUP";
6
6
  exports.ALL_ENTITIES_UPDATED = "ALL_ENTITIES_UPDATED";
7
7
  exports.SOCKET_READY = "SOCKET_READY";
8
- var HASSIO_WS_COMMAND;
9
- (function (HASSIO_WS_COMMAND) {
10
- // Found a use for
11
- HASSIO_WS_COMMAND["area_list"] = "config/area_registry/list";
12
- HASSIO_WS_COMMAND["auth"] = "auth";
13
- HASSIO_WS_COMMAND["call_service"] = "call_service";
14
- HASSIO_WS_COMMAND["device_list"] = "config/device_registry/list";
15
- HASSIO_WS_COMMAND["entity_list_for_display"] = "config/entity_registry/list_for_display";
16
- HASSIO_WS_COMMAND["entity_list"] = "config/entity_registry/list";
17
- HASSIO_WS_COMMAND["entity_remove"] = "config/entity_registry/remove";
18
- HASSIO_WS_COMMAND["registry_update"] = "config/entity_registry/update";
19
- HASSIO_WS_COMMAND["get_config"] = "get_config";
20
- HASSIO_WS_COMMAND["generate_backup"] = "backup/generate";
21
- HASSIO_WS_COMMAND["remove_backup"] = "backup/remove";
22
- HASSIO_WS_COMMAND["history_during_period"] = "history/history_during_period";
23
- HASSIO_WS_COMMAND["backup_info"] = "backup/info";
24
- HASSIO_WS_COMMAND["download_backup"] = "auth/sign_path";
25
- HASSIO_WS_COMMAND["get_states"] = "get_states";
26
- HASSIO_WS_COMMAND["fire_event"] = "fire_event";
27
- HASSIO_WS_COMMAND["ping"] = "ping";
28
- HASSIO_WS_COMMAND["registry_get"] = "config/entity_registry/get";
29
- HASSIO_WS_COMMAND["render_template"] = "render_template";
30
- HASSIO_WS_COMMAND["search_related"] = "search/related";
31
- HASSIO_WS_COMMAND["subscribe_trigger"] = "subscribe_trigger";
32
- HASSIO_WS_COMMAND["subscribe_events"] = "subscribe_events";
33
- // Haven't decided
34
- HASSIO_WS_COMMAND["core_update"] = "config/core/update";
35
- HASSIO_WS_COMMAND["persistent_notification"] = "persistent_notification/get";
36
- HASSIO_WS_COMMAND["setup_info"] = "integration/setup_info";
37
- HASSIO_WS_COMMAND["system_health"] = "system_health/info";
38
- HASSIO_WS_COMMAND["trace_contexts"] = "trace/contexts";
39
- HASSIO_WS_COMMAND["unsubscribe_events"] = "unsubscribe_events";
40
- // Don't see a use for in library yet
41
- HASSIO_WS_COMMAND["analytics"] = "analytics";
42
- HASSIO_WS_COMMAND["auth_list"] = "config/auth/list";
43
- HASSIO_WS_COMMAND["cloud_status"] = "cloud/status";
44
- HASSIO_WS_COMMAND["current_user"] = "auth/current_user";
45
- HASSIO_WS_COMMAND["get_themes"] = "frontend/get_themes";
46
- HASSIO_WS_COMMAND["get_user_data"] = "frontend/get_user_data";
47
- HASSIO_WS_COMMAND["lovelace_config"] = "lovelace/config";
48
- HASSIO_WS_COMMAND["lovelace_resources"] = "lovelace/resources";
49
- HASSIO_WS_COMMAND["network"] = "network";
50
- HASSIO_WS_COMMAND["translations"] = "frontend/get_translations";
51
- })(HASSIO_WS_COMMAND || (exports.HASSIO_WS_COMMAND = HASSIO_WS_COMMAND = {}));
52
8
  var HassSocketMessageTypes;
53
9
  (function (HassSocketMessageTypes) {
54
10
  HassSocketMessageTypes["auth_required"] = "auth_required";
@@ -64,4 +20,5 @@ exports.ENTITY_REGISTRY_UPDATED = "ENTITY_REGISTRY_UPDATED";
64
20
  exports.AREA_REGISTRY_UPDATED = "AREA_REGISTRY_UPDATED";
65
21
  exports.LABEL_REGISTRY_UPDATED = "LABEL_REGISTRY_UPDATED";
66
22
  exports.FLOOR_REGISTRY_UPDATED = "FLOOR_REGISTRY_UPDATED";
23
+ exports.DEVICE_REGISTRY_UPDATED = "DEVICE_REGISTRY_UPDATED";
67
24
  //# sourceMappingURL=constants.helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.helper.js","sourceRoot":"","sources":["../../src/helpers/constants.helper.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG,aAAa,CAAC;AAC5B,QAAA,iBAAiB,GAAG,mBAAmB,CAAC;AACxC,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAC9C,QAAA,YAAY,GAAG,cAAc,CAAC;AAE3C,IAAY,iBA0CX;AA1CD,WAAY,iBAAiB;IAC3B,kBAAkB;IAClB,4DAAuC,CAAA;IACvC,kCAAa,CAAA;IACb,kDAA6B,CAAA;IAC7B,gEAA2C,CAAA;IAC3C,wFAAmE,CAAA;IACnE,gEAA2C,CAAA;IAC3C,oEAA+C,CAAA;IAC/C,sEAAiD,CAAA;IACjD,8CAAyB,CAAA;IACzB,wDAAmC,CAAA;IACnC,oDAA+B,CAAA;IAC/B,4EAAuD,CAAA;IACvD,gDAA2B,CAAA;IAC3B,uDAAkC,CAAA;IAClC,8CAAyB,CAAA;IACzB,8CAAyB,CAAA;IACzB,kCAAa,CAAA;IACb,gEAA2C,CAAA;IAC3C,wDAAmC,CAAA;IACnC,sDAAiC,CAAA;IACjC,4DAAuC,CAAA;IACvC,0DAAqC,CAAA;IACrC,kBAAkB;IAClB,uDAAkC,CAAA;IAClC,4EAAuD,CAAA;IACvD,0DAAqC,CAAA;IACrC,yDAAoC,CAAA;IACpC,sDAAiC,CAAA;IACjC,8DAAyC,CAAA;IACzC,qCAAqC;IACrC,4CAAuB,CAAA;IACvB,mDAA8B,CAAA;IAC9B,kDAA6B,CAAA;IAC7B,uDAAkC,CAAA;IAClC,uDAAkC,CAAA;IAClC,6DAAwC,CAAA;IACxC,wDAAmC,CAAA;IACnC,8DAAyC,CAAA;IACzC,wCAAmB,CAAA;IACnB,+DAA0C,CAAA;AAC5C,CAAC,EA1CW,iBAAiB,iCAAjB,iBAAiB,QA0C5B;AAED,IAAY,sBAOX;AAPD,WAAY,sBAAsB;IAChC,yDAA+B,CAAA;IAC/B,6CAAmB,CAAA;IACnB,yCAAe,CAAA;IACf,2CAAiB,CAAA;IACjB,uCAAa,CAAA;IACb,uDAA6B,CAAA;AAC/B,CAAC,EAPW,sBAAsB,sCAAtB,sBAAsB,QAOjC;AAEY,QAAA,mCAAmC,GAC9C,qCAAqC,CAAC;AAE3B,QAAA,cAAc,GAAG,CAAC,CAAC;AACnB,QAAA,uBAAuB,GAAG,yBAAyB,CAAC;AACpD,QAAA,qBAAqB,GAAG,uBAAuB,CAAC;AAChD,QAAA,sBAAsB,GAAG,wBAAwB,CAAC;AAClD,QAAA,sBAAsB,GAAG,wBAAwB,CAAC"}
1
+ {"version":3,"file":"constants.helper.js","sourceRoot":"","sources":["../../src/helpers/constants.helper.ts"],"names":[],"mappings":";;;AAAa,QAAA,WAAW,GAAG,aAAa,CAAC;AAC5B,QAAA,iBAAiB,GAAG,mBAAmB,CAAC;AACxC,QAAA,oBAAoB,GAAG,sBAAsB,CAAC;AAC9C,QAAA,YAAY,GAAG,cAAc,CAAC;AAE3C,IAAY,sBAOX;AAPD,WAAY,sBAAsB;IAChC,yDAA+B,CAAA;IAC/B,6CAAmB,CAAA;IACnB,yCAAe,CAAA;IACf,2CAAiB,CAAA;IACjB,uCAAa,CAAA;IACb,uDAA6B,CAAA;AAC/B,CAAC,EAPW,sBAAsB,sCAAtB,sBAAsB,QAOjC;AAEY,QAAA,mCAAmC,GAC9C,qCAAqC,CAAC;AAE3B,QAAA,cAAc,GAAG,CAAC,CAAC;AACnB,QAAA,uBAAuB,GAAG,yBAAyB,CAAC;AACpD,QAAA,qBAAqB,GAAG,uBAAuB,CAAC;AAChD,QAAA,sBAAsB,GAAG,wBAAwB,CAAC;AAClD,QAAA,sBAAsB,GAAG,wBAAwB,CAAC;AAClD,QAAA,uBAAuB,GAAG,yBAAyB,CAAC"}
@@ -4,7 +4,7 @@ export type CalendarFetchOptions = {
4
4
  /**
5
5
  * Calendar(s) to load events for.
6
6
  */
7
- calendar: PICK_ENTITY<"calendar"> | PICK_ENTITY<"calendar">[];
7
+ calendar: PICK_ENTITY | PICK_ENTITY[];
8
8
  /**
9
9
  * The end (exclusive) of the event.
10
10
  */
@@ -37,12 +37,12 @@ export type AreaDetails = AreaCreate & {
37
37
  area_id: TAreaId;
38
38
  };
39
39
  export type AreaCreate = {
40
- floor_id: TFloorId;
40
+ floor_id?: TFloorId;
41
41
  aliases?: string[];
42
- icon: string;
43
- labels: TLabelId[];
42
+ icon?: string;
43
+ labels?: TLabelId[];
44
44
  name: string;
45
- picture: string;
45
+ picture?: string;
46
46
  };
47
47
  export interface ConfigEntry {
48
48
  entry_id: string;
@@ -23,3 +23,7 @@ export declare const SOCKET_EVENT_EXECUTION_TIME: Summary<"event" | "context" |
23
23
  * Show the current state
24
24
  */
25
25
  export declare const SOCKET_CONNECTION_STATE: Gauge<"state">;
26
+ /**
27
+ * Counter for service calls made through the call proxy
28
+ */
29
+ export declare const CALL_PROXY_SERVICE_CALL: Counter<"service" | "domain">;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SOCKET_CONNECTION_STATE = exports.SOCKET_EVENT_EXECUTION_TIME = exports.SOCKET_RECEIVED_MESSAGES = exports.SOCKET_SENT_MESSAGES = exports.SOCKET_EVENT_ERRORS = exports.SOCKET_EVENT_EXECUTION_COUNT = void 0;
3
+ exports.CALL_PROXY_SERVICE_CALL = exports.SOCKET_CONNECTION_STATE = exports.SOCKET_EVENT_EXECUTION_TIME = exports.SOCKET_RECEIVED_MESSAGES = exports.SOCKET_SENT_MESSAGES = exports.SOCKET_EVENT_ERRORS = exports.SOCKET_EVENT_EXECUTION_COUNT = void 0;
4
4
  const prom_client_1 = require("prom-client");
5
5
  /**
6
6
  * Tracks the number of times a socket event callback has been executed.
@@ -8,7 +8,7 @@ const prom_client_1 = require("prom-client");
8
8
  exports.SOCKET_EVENT_EXECUTION_COUNT = new prom_client_1.Counter({
9
9
  help: "Counts the number of times a socket event callback has been executed",
10
10
  labelNames: ["context", "label", "event"],
11
- name: "digital_alchemy_home_assistant_socket_event_callback_execution_count",
11
+ name: "digital_alchemy_hass_socket_event_callback_execution_count",
12
12
  });
13
13
  /**
14
14
  * Counts the number of errors occurred during socket event callback executions.
@@ -16,7 +16,7 @@ exports.SOCKET_EVENT_EXECUTION_COUNT = new prom_client_1.Counter({
16
16
  exports.SOCKET_EVENT_ERRORS = new prom_client_1.Counter({
17
17
  help: "Counts the number of errors during socket event callback executions",
18
18
  labelNames: ["context", "label", "event"],
19
- name: "digital_alchemy_home_assistant_socket_event_callback_errors",
19
+ name: "digital_alchemy_hass_socket_event_callback_errors",
20
20
  });
21
21
  /**
22
22
  * Counts the number of errors occurred during socket event callback executions.
@@ -24,7 +24,7 @@ exports.SOCKET_EVENT_ERRORS = new prom_client_1.Counter({
24
24
  exports.SOCKET_SENT_MESSAGES = new prom_client_1.Counter({
25
25
  help: "Counts the number of outgoing sent messages",
26
26
  labelNames: ["type"],
27
- name: "digital_alchemy_home_assistant_socket_sent_messages",
27
+ name: "digital_alchemy_hass_socket_sent_messages",
28
28
  });
29
29
  /**
30
30
  * Counts the number of errors occurred during socket event callback executions.
@@ -32,7 +32,7 @@ exports.SOCKET_SENT_MESSAGES = new prom_client_1.Counter({
32
32
  exports.SOCKET_RECEIVED_MESSAGES = new prom_client_1.Counter({
33
33
  help: "Counts the number of incoming socket messages",
34
34
  labelNames: ["type"],
35
- name: "digital_alchemy_home_assistant_socket_received_messages",
35
+ name: "digital_alchemy_hass_socket_received_messages",
36
36
  });
37
37
  /**
38
38
  * Summary for Execution Time
@@ -40,7 +40,7 @@ exports.SOCKET_RECEIVED_MESSAGES = new prom_client_1.Counter({
40
40
  exports.SOCKET_EVENT_EXECUTION_TIME = new prom_client_1.Summary({
41
41
  help: "Measures the duration of each socket event callback execution",
42
42
  labelNames: ["context", "label", "event"],
43
- name: "digital_alchemy_home_assistant_socket_event_callback_execution_time",
43
+ name: "digital_alchemy_hass_socket_event_callback_execution_time",
44
44
  percentiles: [0.5, 0.9, 0.99],
45
45
  });
46
46
  /**
@@ -49,6 +49,14 @@ exports.SOCKET_EVENT_EXECUTION_TIME = new prom_client_1.Summary({
49
49
  exports.SOCKET_CONNECTION_STATE = new prom_client_1.Gauge({
50
50
  help: "The current connection to home assistant state, observable as a metrics",
51
51
  labelNames: ["state"],
52
- name: "digital_alchemy_home_assistant_socket_connection_state",
52
+ name: "digital_alchemy_hass_socket_connection_state",
53
+ });
54
+ /**
55
+ * Counter for service calls made through the call proxy
56
+ */
57
+ exports.CALL_PROXY_SERVICE_CALL = new prom_client_1.Counter({
58
+ help: "Service calls made through the call proxy",
59
+ labelNames: ["domain", "service"],
60
+ name: "digital_alchemy_hass_call_proxy_service_call",
53
61
  });
54
62
  //# sourceMappingURL=metrics.helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.helper.js","sourceRoot":"","sources":["../../src/helpers/metrics.helper.ts"],"names":[],"mappings":";;;AAAA,6CAAsD;AAEtD;;GAEG;AACU,QAAA,4BAA4B,GAAG,IAAI,qBAAO,CAAC;IACtD,IAAI,EAAE,sEAAsE;IAC5E,UAAU,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAU;IAClD,IAAI,EAAE,sEAAsE;CAC7E,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,mBAAmB,GAAG,IAAI,qBAAO,CAAC;IAC7C,IAAI,EAAE,qEAAqE;IAC3E,UAAU,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAU;IAClD,IAAI,EAAE,6DAA6D;CACpE,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,oBAAoB,GAAG,IAAI,qBAAO,CAAC;IAC9C,IAAI,EAAE,6CAA6C;IACnD,UAAU,EAAE,CAAC,MAAM,CAAU;IAC7B,IAAI,EAAE,qDAAqD;CAC5D,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,wBAAwB,GAAG,IAAI,qBAAO,CAAC;IAClD,IAAI,EAAE,+CAA+C;IACrD,UAAU,EAAE,CAAC,MAAM,CAAU;IAC7B,IAAI,EAAE,yDAAyD;CAChE,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,2BAA2B,GAAG,IAAI,qBAAO,CAAC;IACrD,IAAI,EAAE,+DAA+D;IACrE,UAAU,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAU;IAClD,IAAI,EAAE,qEAAqE;IAC3E,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;CAC9B,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,uBAAuB,GAAG,IAAI,mBAAK,CAAC;IAC/C,IAAI,EAAE,yEAAyE;IAC/E,UAAU,EAAE,CAAC,OAAO,CAAU;IAC9B,IAAI,EAAE,wDAAwD;CAC/D,CAAC,CAAC"}
1
+ {"version":3,"file":"metrics.helper.js","sourceRoot":"","sources":["../../src/helpers/metrics.helper.ts"],"names":[],"mappings":";;;AAAA,6CAAsD;AAEtD;;GAEG;AACU,QAAA,4BAA4B,GAAG,IAAI,qBAAO,CAAC;IACtD,IAAI,EAAE,sEAAsE;IAC5E,UAAU,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAU;IAClD,IAAI,EAAE,4DAA4D;CACnE,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,mBAAmB,GAAG,IAAI,qBAAO,CAAC;IAC7C,IAAI,EAAE,qEAAqE;IAC3E,UAAU,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAU;IAClD,IAAI,EAAE,mDAAmD;CAC1D,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,oBAAoB,GAAG,IAAI,qBAAO,CAAC;IAC9C,IAAI,EAAE,6CAA6C;IACnD,UAAU,EAAE,CAAC,MAAM,CAAU;IAC7B,IAAI,EAAE,2CAA2C;CAClD,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,wBAAwB,GAAG,IAAI,qBAAO,CAAC;IAClD,IAAI,EAAE,+CAA+C;IACrD,UAAU,EAAE,CAAC,MAAM,CAAU;IAC7B,IAAI,EAAE,+CAA+C;CACtD,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,2BAA2B,GAAG,IAAI,qBAAO,CAAC;IACrD,IAAI,EAAE,+DAA+D;IACrE,UAAU,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAU;IAClD,IAAI,EAAE,2DAA2D;IACjE,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;CAC9B,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,uBAAuB,GAAG,IAAI,mBAAK,CAAC;IAC/C,IAAI,EAAE,yEAAyE;IAC/E,UAAU,EAAE,CAAC,OAAO,CAAU;IAC9B,IAAI,EAAE,8CAA8C;CACrD,CAAC,CAAC;AAEH;;GAEG;AACU,QAAA,uBAAuB,GAAG,IAAI,qBAAO,CAAC;IACjD,IAAI,EAAE,2CAA2C;IACjD,UAAU,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAU;IAC1C,IAAI,EAAE,8CAA8C;CACrD,CAAC,CAAC"}
@@ -145,7 +145,7 @@ export interface Properties {
145
145
  export type FloorCreate = {
146
146
  name: string;
147
147
  level: number;
148
- aliases: string[];
148
+ aliases?: string[];
149
149
  };
150
150
  export type FloorDetails = FloorCreate & {
151
151
  floor_id: TFloorId;
@@ -10,12 +10,12 @@ export type PICK_ENTITY<DOMAIN extends ALL_DOMAINS = ALL_DOMAINS> = {
10
10
  [key in DOMAIN]: `${key}.${keyof (typeof ENTITY_SETUP)[key] & string}`;
11
11
  }[DOMAIN];
12
12
  /**
13
- * Pick any valid entity, optionally limiting by domain
13
+ * Pick any valid service call, optionally limiting by domain
14
14
  */
15
15
  export type PICK_SERVICE<DOMAIN extends ALL_SERVICE_DOMAINS = ALL_SERVICE_DOMAINS> = {
16
16
  [key in DOMAIN]: `${key}.${keyof iCallService[key] & string}`;
17
17
  }[DOMAIN];
18
- export type PICK_SERVICE_PARAMETERS<SERVICE extends PICK_SERVICE> = Get<iCallService, SERVICE> extends (serviceParams: infer ServiceParams) => TBlackHole ? ServiceParams : never;
18
+ export type PICK_SERVICE_PARAMETERS<DOMAINS extends ALL_SERVICE_DOMAINS, SERVICE extends PICK_SERVICE<DOMAINS>> = Get<iCallService, SERVICE> extends (serviceParams: infer ServiceParams) => TBlackHole ? ServiceParams : never;
19
19
  export declare function entity_split(entity: {
20
20
  entity_id: PICK_ENTITY;
21
21
  } | PICK_ENTITY): [ALL_DOMAINS, string];
@@ -25,6 +25,7 @@ export declare function entity_split(entity: {
25
25
  export declare function domain(entity: {
26
26
  entity_id: PICK_ENTITY;
27
27
  } | PICK_ENTITY): ALL_DOMAINS;
28
+ export type ENTITY_PROP<ENTITY_ID extends PICK_ENTITY, PROP extends "state" | "attributes"> = Get<typeof ENTITY_SETUP, `${ENTITY_ID}.${PROP}`>;
28
29
  /**
29
30
  * Type definitions to match a specific entity.
30
31
  */
@@ -1 +1 @@
1
- {"version":3,"file":"utility.helper.js","sourceRoot":"","sources":["../../src/helpers/utility.helper.ts"],"names":[],"mappings":";;;AAAA,gDAAuD;AA0CvD,SAAgB,YAAY,CAC1B,MAAgD;IAEhD,IAAI,SAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;IAC5B,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAA0B,CAAC;AACpD,CAAC;AAPD,oCAOC;AACD;;GAEG;AACH,SAAgB,MAAM,CACpB,MAAgD;IAEhD,IAAI,SAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;IAC5B,CAAC;IACD,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,EAAiB,CAAC;AACrD,CAAC;AAPD,wBAOC;AAmCD,SAAE,CAAC,MAAM,GAAG,CACV,MAAc,EACd,MAAc,EACiB,EAAE;IACjC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,IAAI,KAAK,MAAM,CAAC;AACzB,CAAC,CAAC;AAUW,QAAA,oBAAoB,GAAG;IAClC,KAAK,EAAE,CAAC;IACR,QAAQ,EAAE,CAAC,CAAC;CACJ,CAAC"}
1
+ {"version":3,"file":"utility.helper.js","sourceRoot":"","sources":["../../src/helpers/utility.helper.ts"],"names":[],"mappings":";;;AAAA,gDAAuD;AA6CvD,SAAgB,YAAY,CAC1B,MAAgD;IAEhD,IAAI,SAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;IAC5B,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAA0B,CAAC;AACpD,CAAC;AAPD,oCAOC;AACD;;GAEG;AACH,SAAgB,MAAM,CACpB,MAAgD;IAEhD,IAAI,SAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACtB,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;IAC5B,CAAC;IACD,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,KAAK,EAAiB,CAAC;AACrD,CAAC;AAPD,wBAOC;AAwCD,SAAE,CAAC,MAAM,GAAG,CACV,MAAc,EACd,MAAc,EACiB,EAAE;IACjC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,IAAI,KAAK,MAAM,CAAC;AACzB,CAAC,CAAC;AAWW,QAAA,oBAAoB,GAAG;IAClC,KAAK,EAAE,CAAC;IACR,QAAQ,EAAE,CAAC,CAAC;CACJ,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { TBlackHole, TContext } from "@digital-alchemy/core";
2
2
  import { Dayjs } from "dayjs";
3
- import { HASSIO_WS_COMMAND, HassSocketMessageTypes } from "./constants.helper";
3
+ import { HassSocketMessageTypes } from "./constants.helper";
4
4
  import { EntityUpdateEvent } from "./entity-state.helper";
5
5
  import { ALL_DOMAINS, ENTITY_STATE, PICK_ENTITY } from "./utility.helper";
6
6
  export interface SignRequestResponse {
@@ -9,10 +9,10 @@ export interface SignRequestResponse {
9
9
  export interface SocketMessageDTO {
10
10
  error?: Record<string, unknown>;
11
11
  event?: EntityUpdateEvent;
12
- id: string;
12
+ id: string | number;
13
13
  message?: string;
14
14
  result?: Record<string, unknown>;
15
- type: HassSocketMessageTypes;
15
+ type: `${HassSocketMessageTypes}`;
16
16
  }
17
17
  export type SocketSubscribeOptions<EVENT extends string> = {
18
18
  event_type: EVENT;
@@ -29,7 +29,7 @@ export interface SendSocketMessageDTO {
29
29
  hidden_by?: "user";
30
30
  service?: string;
31
31
  service_data?: unknown;
32
- type: HASSIO_WS_COMMAND | `${HASSIO_WS_COMMAND}`;
32
+ type: string;
33
33
  }
34
34
  export interface UpdateEntityMessageDTO<DOMAIN extends ALL_DOMAINS = ALL_DOMAINS> {
35
35
  area_id?: string;
@@ -39,37 +39,37 @@ export interface UpdateEntityMessageDTO<DOMAIN extends ALL_DOMAINS = ALL_DOMAINS
39
39
  icon?: string;
40
40
  name: string;
41
41
  new_entity_id: PICK_ENTITY<DOMAIN>;
42
- type: HASSIO_WS_COMMAND.registry_update;
42
+ type: "config/entity_registry/update";
43
43
  }
44
44
  export interface RemoveEntityMessageDTO {
45
45
  entity_id: PICK_ENTITY;
46
- type: HASSIO_WS_COMMAND.entity_remove;
46
+ type: "config/entity_registry/remove";
47
47
  }
48
48
  export interface FindRelatedDTO {
49
49
  item_id: string;
50
50
  item_type: string;
51
- type: HASSIO_WS_COMMAND.search_related;
51
+ type: "search/related";
52
52
  }
53
53
  export interface RegistryGetDTO {
54
54
  entity_id: string;
55
- type: HASSIO_WS_COMMAND.registry_get;
55
+ type: "config/entity_registry/get";
56
56
  }
57
57
  export interface RenderTemplateDTO {
58
58
  template: string;
59
59
  timeout: number;
60
- type: HASSIO_WS_COMMAND.render_template;
60
+ type: "render_template";
61
61
  }
62
62
  export interface SubscribeTriggerDTO {
63
63
  trigger: Record<string, unknown>;
64
- type: HASSIO_WS_COMMAND.subscribe_trigger;
64
+ type: "subscribe_trigger";
65
65
  }
66
66
  export interface UnsubscribeEventsDTO {
67
67
  subscription: number;
68
- type: HASSIO_WS_COMMAND.unsubscribe_events;
68
+ type: "unsubscribe_events";
69
69
  }
70
70
  export interface SignPathDTO {
71
71
  path: string;
72
- type: HASSIO_WS_COMMAND.download_backup;
72
+ type: "auth/sign_path";
73
73
  }
74
74
  export interface RemoveBackupDTO {
75
75
  slug: string;
@@ -0,0 +1,6 @@
1
+ import { TServiceParams } from "@digital-alchemy/core";
2
+ import { ENTITY_STATE, PICK_ENTITY } from "../../helpers";
3
+ export declare function Events({ mock_assistant, hass }: TServiceParams): {
4
+ emitEntityUpdate: <ENTITY extends PICK_ENTITY>(entity: ENTITY, new_state: Partial<ENTITY_STATE<ENTITY>>) => Promise<void>;
5
+ emitEvent: (event: string, data: object) => Promise<void>;
6
+ };
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Events = void 0;
4
+ function Events({ mock_assistant, hass }) {
5
+ let id = 1000;
6
+ async function emitEvent(event, data) {
7
+ id++;
8
+ await hass.socket.onMessage({
9
+ event: {
10
+ data,
11
+ event_type: event,
12
+ },
13
+ id: id,
14
+ type: "event",
15
+ });
16
+ }
17
+ async function emitEntityUpdate(entity, new_state) {
18
+ const old_state = mock_assistant.fixtures.byId(entity);
19
+ new_state = mock_assistant.fixtures.replace(entity, new_state);
20
+ await emitEvent("state_changed", { new_state, old_state });
21
+ }
22
+ return {
23
+ emitEntityUpdate,
24
+ emitEvent,
25
+ };
26
+ }
27
+ exports.Events = Events;
28
+ //# sourceMappingURL=events.extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.extension.js","sourceRoot":"","sources":["../../../src/mock_assistant/extensions/events.extension.ts"],"names":[],"mappings":";;;AAIA,SAAgB,MAAM,CAAC,EAAE,cAAc,EAAE,IAAI,EAAkB;IAC7D,IAAI,EAAE,GAAG,IAAI,CAAC;IAEd,KAAK,UAAU,SAAS,CAAC,KAAa,EAAE,IAAY;QAClD,EAAE,EAAE,CAAC;QACL,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;YAC1B,KAAK,EAAE;gBACL,IAAI;gBACJ,UAAU,EAAE,KAAK;aACG;YACtB,EAAE,EAAE,EAAE;YACN,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,gBAAgB,CAC7B,MAAc,EACd,SAAwC;QAExC,MAAM,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvD,SAAS,GAAG,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC/D,MAAM,SAAS,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO;QACL,gBAAgB;QAChB,SAAS;KACV,CAAC;AACJ,CAAC;AA5BD,wBA4BC"}
@@ -0,0 +1,13 @@
1
+ import { TServiceParams } from "@digital-alchemy/core";
2
+ import { ENTITY_STATE, PICK_ENTITY } from "../../helpers";
3
+ import { ScannerCacheData } from "../helpers";
4
+ type StateOptions = Partial<{
5
+ [entity in PICK_ENTITY]: Partial<ENTITY_STATE<entity>>;
6
+ }>;
7
+ export declare function Fixtures({ hass, lifecycle, config, context, mock_assistant, }: TServiceParams): {
8
+ byId: (entity: PICK_ENTITY) => ENTITY_STATE<PICK_ENTITY>;
9
+ data: ScannerCacheData;
10
+ replace: <ENTITY extends PICK_ENTITY>(entity: ENTITY, new_state: Partial<ENTITY_STATE<ENTITY>>) => ENTITY_STATE<ENTITY>;
11
+ setState: (options: StateOptions) => void;
12
+ };
13
+ export {};
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Fixtures = void 0;
4
+ const core_1 = require("@digital-alchemy/core");
5
+ const fs_1 = require("fs");
6
+ const MEGA_HIGH_PRIORITY = 1000;
7
+ function Fixtures({ hass, lifecycle, config, context, mock_assistant, }) {
8
+ hass.area.list = async () => mock_assistant.fixtures.data?.areas ?? [];
9
+ hass.floor.list = async () => mock_assistant.fixtures.data?.floors ?? [];
10
+ hass.label.list = async () => mock_assistant.fixtures.data?.labels ?? [];
11
+ hass.device.list = async () => mock_assistant.fixtures.data?.devices ?? [];
12
+ hass.fetch.getAllEntities = async () => mock_assistant.fixtures.data?.entities ?? [];
13
+ hass.fetch.listServices = async () => mock_assistant.fixtures.data?.services ?? [];
14
+ lifecycle.onPreInit(() => {
15
+ const { MOCK_SOCKET } = config.hass;
16
+ const { FIXTURES_FILE } = config.mock_assistant;
17
+ if (!MOCK_SOCKET) {
18
+ // There needs to be a shared understanding that nobody is actually sending message traffic anywhere
19
+ // Otherwise the mocking is gonna cause some weirdness
20
+ throw new core_1.InternalError(context, "SOCKET_NOT_MOCKED", "Not for testing with live connections");
21
+ }
22
+ if (!(0, fs_1.existsSync)(FIXTURES_FILE)) {
23
+ throw new core_1.BootstrapException(context, "MISSING_FIXTURES_FILE", `${FIXTURES_FILE} does not exist`);
24
+ }
25
+ mock_assistant.fixtures.data = JSON.parse((0, fs_1.readFileSync)(FIXTURES_FILE, "utf8"));
26
+ }, MEGA_HIGH_PRIORITY);
27
+ function setState(options) {
28
+ lifecycle.onPreInit(() => {
29
+ const entities = Object.keys(options);
30
+ entities.forEach(i => replace(i, options[i]));
31
+ });
32
+ }
33
+ function byId(entity) {
34
+ return mock_assistant.fixtures.data.entities.find(i => i.entity_id === entity);
35
+ }
36
+ function replace(entity, new_state) {
37
+ const old_state = byId(entity);
38
+ const { data } = mock_assistant.fixtures;
39
+ data.entities = data.entities.filter(i => i.entity_id !== entity);
40
+ const updated = { ...old_state, ...new_state };
41
+ mock_assistant.fixtures.data.entities.push(updated);
42
+ return updated;
43
+ }
44
+ return {
45
+ byId,
46
+ data: undefined,
47
+ replace,
48
+ setState,
49
+ };
50
+ }
51
+ exports.Fixtures = Fixtures;
52
+ //# sourceMappingURL=fixtures.extension.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixtures.extension.js","sourceRoot":"","sources":["../../../src/mock_assistant/extensions/fixtures.extension.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from "./events.extension";
2
+ export * from "./fixtures.extension";
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./events.extension"), exports);
5
+ tslib_1.__exportStar(require("./fixtures.extension"), exports);
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mock_assistant/extensions/index.ts"],"names":[],"mappings":";;;AAAA,6DAAmC;AACnC,+DAAqC"}
@@ -0,0 +1,10 @@
1
+ import { AreaDetails, DeviceDetails, ENTITY_STATE, EntityRegistryItem, FloorDetails, HassServiceDTO as HassServiceDefinition, LabelDefinition, PICK_ENTITY } from "../../helpers";
2
+ export type ScannerCacheData = {
3
+ areas: AreaDetails[];
4
+ services: HassServiceDefinition[];
5
+ labels: LabelDefinition[];
6
+ floors: FloorDetails[];
7
+ devices: DeviceDetails[];
8
+ entities: ENTITY_STATE<PICK_ENTITY>[];
9
+ entity_registry: EntityRegistryItem<PICK_ENTITY>[];
10
+ };
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=fixtures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../../src/mock_assistant/helpers/fixtures.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export * from "./fixtures";
2
+ export * from "./utils";
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./fixtures"), exports);
5
+ tslib_1.__exportStar(require("./utils"), exports);
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mock_assistant/helpers/index.ts"],"names":[],"mappings":";;;AAAA,qDAA2B;AAC3B,kDAAwB"}
@@ -0,0 +1,3 @@
1
+ import { BootstrapOptions, PartialConfiguration, ServiceMap } from "@digital-alchemy/core";
2
+ export declare const SILENT_BOOT: (configuration?: PartialConfiguration, fixtures?: boolean) => BootstrapOptions;
3
+ export declare function CreateTestingApplication(services: ServiceMap): import("@digital-alchemy/core").ApplicationDefinition<ServiceMap, import("@digital-alchemy/core").ModuleConfiguration>;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CreateTestingApplication = exports.SILENT_BOOT = void 0;
4
+ const core_1 = require("@digital-alchemy/core");
5
+ const hass_module_1 = require("../../hass.module");
6
+ const mock_assistant_module_1 = require("../mock-assistant.module");
7
+ const SILENT_BOOT = (configuration = {}, fixtures = false) => ({
8
+ appendLibrary: fixtures ? mock_assistant_module_1.LIB_MOCK_ASSISTANT : undefined,
9
+ configuration,
10
+ // quiet time
11
+ customLogger: {
12
+ debug: () => { },
13
+ error: () => { },
14
+ fatal: () => { },
15
+ info: () => { },
16
+ trace: () => { },
17
+ warn: () => { },
18
+ },
19
+ });
20
+ exports.SILENT_BOOT = SILENT_BOOT;
21
+ function CreateTestingApplication(services) {
22
+ return (0, core_1.CreateApplication)({
23
+ configurationLoaders: [],
24
+ libraries: [hass_module_1.LIB_HASS],
25
+ // @ts-expect-error testing
26
+ name: "testing",
27
+ services,
28
+ });
29
+ }
30
+ exports.CreateTestingApplication = CreateTestingApplication;
31
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/mock_assistant/helpers/utils.ts"],"names":[],"mappings":";;;AAAA,gDAK+B;AAE/B,mDAA6C;AAC7C,oEAA8D;AAEvD,MAAM,WAAW,GAAG,CACzB,gBAAsC,EAAE,EACxC,QAAQ,GAAG,KAAK,EACE,EAAE,CAAC,CAAC;IACtB,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAC,0CAAkB,CAAC,CAAC,CAAC,SAAS;IACxD,aAAa;IACb,aAAa;IACb,YAAY,EAAE;QACZ,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;QACf,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;QACf,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;QACf,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;QACd,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;QACf,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;KACf;CACF,CAAC,CAAC;AAfU,QAAA,WAAW,eAerB;AAEH,SAAgB,wBAAwB,CAAC,QAAoB;IAC3D,OAAO,IAAA,wBAAiB,EAAC;QACvB,oBAAoB,EAAE,EAAE;QAExB,SAAS,EAAE,CAAC,sBAAQ,CAAC;QACrB,2BAA2B;QAC3B,IAAI,EAAE,SAAS;QACf,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AATD,4DASC"}
@@ -0,0 +1,3 @@
1
+ export * from "./extensions";
2
+ export * from "./helpers";
3
+ export * from "./mock-assistant.module";
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./extensions"), exports);
5
+ tslib_1.__exportStar(require("./helpers"), exports);
6
+ tslib_1.__exportStar(require("./mock-assistant.module"), exports);
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mock_assistant/index.ts"],"names":[],"mappings":";;;AAAA,uDAA6B;AAC7B,oDAA0B;AAC1B,kEAAwC"}
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const core_1 = require("@digital-alchemy/core");
5
+ const fs_1 = require("fs");
6
+ const path_1 = require("path");
7
+ const process_1 = require("process");
8
+ const __1 = require("..");
9
+ const writeFixtures = (0, core_1.CreateApplication)({
10
+ configuration: {
11
+ FIXTURES_FILE: {
12
+ default: (0, path_1.join)((0, process_1.cwd)(), "fixtures.json"),
13
+ description: [],
14
+ type: "string",
15
+ },
16
+ },
17
+ libraries: [__1.LIB_HASS],
18
+ name: "mock_assistant",
19
+ services: {
20
+ Write({ hass, lifecycle, config }) {
21
+ lifecycle.onReady(async () => {
22
+ (0, fs_1.writeFileSync)(config.mock_assistant.FIXTURES_FILE, JSON.stringify({
23
+ areas: hass.area.current,
24
+ devices: hass.device.current,
25
+ entities: hass.entity.listEntities().map(i => hass.entity.raw(i)),
26
+ entity_registry: hass.entity.registry.current,
27
+ floors: hass.floor.current,
28
+ labels: hass.label.current,
29
+ services: await hass.fetch.listServices(),
30
+ }, undefined, " "), "utf8");
31
+ (0, process_1.exit)();
32
+ });
33
+ },
34
+ },
35
+ });
36
+ setImmediate(async () => writeFixtures.bootstrap());
37
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/mock_assistant/main.ts"],"names":[],"mappings":";;;AACA,gDAA0E;AAC1E,2BAAmC;AACnC,+BAA4B;AAC5B,qCAAoC;AAEpC,0BAA8B;AAG9B,MAAM,aAAa,GAAG,IAAA,wBAAiB,EAAC;IACtC,aAAa,EAAE;QACb,aAAa,EAAE;YACb,OAAO,EAAE,IAAA,WAAI,EAAC,IAAA,aAAG,GAAE,EAAE,eAAe,CAAC;YACrC,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,QAAQ;SACf;KACF;IACD,SAAS,EAAE,CAAC,YAAQ,CAAC;IACrB,IAAI,EAAE,gBAAgB;IACtB,QAAQ,EAAE;QACR,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAkB;YAC/C,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;gBAC3B,IAAA,kBAAa,EACX,MAAM,CAAC,cAAc,CAAC,aAAa,EACnC,IAAI,CAAC,SAAS,CACZ;oBACE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;oBACxB,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;oBAC5B,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACjE,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO;oBAC7C,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;oBAC1B,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;oBAC1B,QAAQ,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;iBACtB,EACrB,SAAS,EACT,IAAI,CACL,EACD,MAAM,CACP,CAAC;gBACF,IAAA,cAAI,GAAE,CAAC;YACT,CAAC,CAAC,CAAC;QACL,CAAC;KACF;CACF,CAAC,CAAC;AACH,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC"}