@digital-alchemy/hass 0.3.21 → 0.3.23
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.
- package/dist/dynamic.d.ts +3227 -202
- package/dist/dynamic.js +335 -85
- package/dist/dynamic.js.map +1 -1
- package/dist/e2e/app/entities.d.ts +5 -0
- package/dist/e2e/app/entities.js +21 -0
- package/dist/e2e/app/entities.js.map +1 -0
- package/dist/e2e/app/main.d.ts +10 -0
- package/dist/e2e/app/main.js +15 -0
- package/dist/e2e/app/main.js.map +1 -0
- package/dist/e2e/area.spec.d.ts +1 -0
- package/dist/e2e/area.spec.js +99 -0
- package/dist/e2e/area.spec.js.map +1 -0
- package/dist/e2e/call-proxy.spec.d.ts +1 -0
- package/dist/e2e/call-proxy.spec.js +57 -0
- package/dist/e2e/call-proxy.spec.js.map +1 -0
- package/dist/e2e/device.spec.d.ts +1 -0
- package/dist/e2e/device.spec.js +27 -0
- package/dist/e2e/device.spec.js.map +1 -0
- package/dist/e2e/entity.spec.d.ts +1 -0
- package/dist/e2e/entity.spec.js +328 -0
- package/dist/e2e/entity.spec.js.map +1 -0
- package/dist/e2e/fetch.spec.d.ts +1 -0
- package/dist/e2e/fetch.spec.js +79 -0
- package/dist/e2e/fetch.spec.js.map +1 -0
- package/dist/e2e/floor.spec.d.ts +1 -0
- package/dist/e2e/floor.spec.js +81 -0
- package/dist/e2e/floor.spec.js.map +1 -0
- package/dist/e2e/label.spec.d.ts +1 -0
- package/dist/e2e/label.spec.js +82 -0
- package/dist/e2e/label.spec.js.map +1 -0
- package/dist/e2e/utils.d.ts +2 -0
- package/dist/e2e/utils.js +7 -0
- package/dist/e2e/utils.js.map +1 -0
- package/dist/extensions/area.extension.d.ts +5 -5
- package/dist/extensions/area.extension.js +60 -51
- package/dist/extensions/area.extension.js.map +1 -1
- package/dist/extensions/call-proxy.extension.d.ts +1 -1
- package/dist/extensions/call-proxy.extension.js +13 -26
- package/dist/extensions/call-proxy.extension.js.map +1 -1
- package/dist/extensions/conversation.extension.js +1 -1
- package/dist/extensions/conversation.extension.js.map +1 -1
- package/dist/extensions/device.extension.d.ts +1 -1
- package/dist/extensions/device.extension.js +2 -1
- package/dist/extensions/device.extension.js.map +1 -1
- package/dist/extensions/entity.extension.d.ts +23 -10
- package/dist/extensions/entity.extension.js +51 -27
- package/dist/extensions/entity.extension.js.map +1 -1
- package/dist/extensions/fetch-api.extension.d.ts +5 -4
- package/dist/extensions/fetch-api.extension.js +41 -30
- package/dist/extensions/fetch-api.extension.js.map +1 -1
- package/dist/extensions/floor.extension.d.ts +0 -5
- package/dist/extensions/floor.extension.js +1 -2
- package/dist/extensions/floor.extension.js.map +1 -1
- package/dist/extensions/label.extension.d.ts +4 -9
- package/dist/extensions/label.extension.js +35 -33
- package/dist/extensions/label.extension.js.map +1 -1
- package/dist/extensions/websocket-api.extension.d.ts +21 -4
- package/dist/extensions/websocket-api.extension.js +94 -57
- package/dist/extensions/websocket-api.extension.js.map +1 -1
- package/dist/extensions/zone.extension.d.ts +0 -6
- package/dist/extensions/zone.extension.js +0 -2
- package/dist/extensions/zone.extension.js.map +1 -1
- package/dist/hass.module.d.ts +10 -0
- package/dist/hass.module.js +13 -0
- package/dist/hass.module.js.map +1 -1
- package/dist/helpers/constants.helper.d.ts +1 -40
- package/dist/helpers/constants.helper.js +2 -45
- package/dist/helpers/constants.helper.js.map +1 -1
- package/dist/helpers/fetch/calendar.d.ts +1 -1
- package/dist/helpers/fetch/configuration.d.ts +4 -4
- package/dist/helpers/metrics.helper.d.ts +4 -0
- package/dist/helpers/metrics.helper.js +15 -7
- package/dist/helpers/metrics.helper.js.map +1 -1
- package/dist/helpers/registry.d.ts +1 -1
- package/dist/helpers/utility.helper.d.ts +3 -2
- package/dist/helpers/utility.helper.js.map +1 -1
- package/dist/helpers/websocket.helper.d.ts +12 -12
- package/dist/mock_assistant/extensions/events.extension.d.ts +6 -0
- package/dist/mock_assistant/extensions/events.extension.js +32 -0
- package/dist/mock_assistant/extensions/events.extension.js.map +1 -0
- package/dist/mock_assistant/extensions/fixtures.extension.d.ts +13 -0
- package/dist/mock_assistant/extensions/fixtures.extension.js +57 -0
- package/dist/mock_assistant/extensions/fixtures.extension.js.map +1 -0
- package/dist/mock_assistant/extensions/index.d.ts +2 -0
- package/dist/mock_assistant/extensions/index.js +6 -0
- package/dist/mock_assistant/extensions/index.js.map +1 -0
- package/dist/mock_assistant/helpers/fixtures.d.ts +11 -0
- package/dist/mock_assistant/helpers/fixtures.js +3 -0
- package/dist/mock_assistant/helpers/fixtures.js.map +1 -0
- package/dist/mock_assistant/helpers/index.d.ts +2 -0
- package/dist/mock_assistant/helpers/index.js +6 -0
- package/dist/mock_assistant/helpers/index.js.map +1 -0
- package/dist/mock_assistant/helpers/utils.d.ts +4 -0
- package/dist/mock_assistant/helpers/utils.js +49 -0
- package/dist/mock_assistant/helpers/utils.js.map +1 -0
- package/dist/mock_assistant/index.d.ts +3 -0
- package/dist/mock_assistant/index.js +7 -0
- package/dist/mock_assistant/index.js.map +1 -0
- package/dist/mock_assistant/main.d.ts +2 -0
- package/dist/mock_assistant/main.js +38 -0
- package/dist/mock_assistant/main.js.map +1 -0
- package/dist/mock_assistant/mock-assistant.module.d.ts +16 -0
- package/dist/mock_assistant/mock-assistant.module.js +22 -0
- package/dist/mock_assistant/mock-assistant.module.js.map +1 -0
- package/dist/testing/area.spec.d.ts +1 -0
- package/dist/testing/area.spec.js +224 -0
- package/dist/testing/area.spec.js.map +1 -0
- package/dist/testing/config.spec.d.ts +1 -0
- package/dist/testing/config.spec.js +232 -0
- package/dist/testing/config.spec.js.map +1 -0
- package/dist/testing/device.spec.d.ts +1 -0
- package/dist/testing/device.spec.js +81 -0
- package/dist/testing/device.spec.js.map +1 -0
- package/dist/testing/entity.spec.d.ts +1 -0
- package/dist/testing/entity.spec.js +29 -0
- package/dist/testing/entity.spec.js.map +1 -0
- package/dist/testing/fetch-api.spec.d.ts +1 -0
- package/dist/testing/fetch-api.spec.js +476 -0
- package/dist/testing/fetch-api.spec.js.map +1 -0
- package/dist/testing/floor.spec.d.ts +1 -0
- package/dist/testing/floor.spec.js +223 -0
- package/dist/testing/floor.spec.js.map +1 -0
- package/dist/testing/label.spec.d.ts +1 -0
- package/dist/testing/label.spec.js +223 -0
- package/dist/testing/label.spec.js.map +1 -0
- package/dist/testing/websocket.spec.d.ts +8 -0
- package/dist/testing/websocket.spec.js +71 -0
- package/dist/testing/websocket.spec.js.map +1 -0
- package/dist/testing/workflow.spec.d.ts +1 -0
- package/dist/testing/workflow.spec.js +119 -0
- package/dist/testing/workflow.spec.js.map +1 -0
- 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.
|
|
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,
|
|
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"}
|
|
@@ -37,12 +37,12 @@ export type AreaDetails = AreaCreate & {
|
|
|
37
37
|
area_id: TAreaId;
|
|
38
38
|
};
|
|
39
39
|
export type AreaCreate = {
|
|
40
|
-
floor_id
|
|
40
|
+
floor_id?: TFloorId;
|
|
41
41
|
aliases?: string[];
|
|
42
|
-
icon
|
|
43
|
-
labels
|
|
42
|
+
icon?: string;
|
|
43
|
+
labels?: TLabelId[];
|
|
44
44
|
name: string;
|
|
45
|
-
picture
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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: "
|
|
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,
|
|
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"}
|
|
@@ -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
|
|
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
|
|
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;
|
|
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 {
|
|
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:
|
|
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:
|
|
42
|
+
type: "config/entity_registry/update";
|
|
43
43
|
}
|
|
44
44
|
export interface RemoveEntityMessageDTO {
|
|
45
45
|
entity_id: PICK_ENTITY;
|
|
46
|
-
type:
|
|
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:
|
|
51
|
+
type: "search/related";
|
|
52
52
|
}
|
|
53
53
|
export interface RegistryGetDTO {
|
|
54
54
|
entity_id: string;
|
|
55
|
-
type:
|
|
55
|
+
type: "config/entity_registry/get";
|
|
56
56
|
}
|
|
57
57
|
export interface RenderTemplateDTO {
|
|
58
58
|
template: string;
|
|
59
59
|
timeout: number;
|
|
60
|
-
type:
|
|
60
|
+
type: "render_template";
|
|
61
61
|
}
|
|
62
62
|
export interface SubscribeTriggerDTO {
|
|
63
63
|
trigger: Record<string, unknown>;
|
|
64
|
-
type:
|
|
64
|
+
type: "subscribe_trigger";
|
|
65
65
|
}
|
|
66
66
|
export interface UnsubscribeEventsDTO {
|
|
67
67
|
subscription: number;
|
|
68
|
-
type:
|
|
68
|
+
type: "unsubscribe_events";
|
|
69
69
|
}
|
|
70
70
|
export interface SignPathDTO {
|
|
71
71
|
path: string;
|
|
72
|
-
type:
|
|
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,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Events = void 0;
|
|
4
|
+
const core_1 = require("@digital-alchemy/core");
|
|
5
|
+
const SUPER_SHORT = 1;
|
|
6
|
+
function Events({ mock_assistant, hass }) {
|
|
7
|
+
let id = 1000;
|
|
8
|
+
async function emitEvent(event, data) {
|
|
9
|
+
id++;
|
|
10
|
+
await hass.socket.onMessage({
|
|
11
|
+
event: {
|
|
12
|
+
data,
|
|
13
|
+
event_type: event,
|
|
14
|
+
},
|
|
15
|
+
id: id,
|
|
16
|
+
type: "event",
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
async function emitEntityUpdate(entity, new_state) {
|
|
20
|
+
const old_state = mock_assistant.fixtures.byId(entity);
|
|
21
|
+
new_state = mock_assistant.fixtures.replace(entity, new_state);
|
|
22
|
+
await emitEvent("state_changed", { new_state, old_state });
|
|
23
|
+
// help ensure all the async flows settle
|
|
24
|
+
await (0, core_1.sleep)(SUPER_SHORT);
|
|
25
|
+
}
|
|
26
|
+
return {
|
|
27
|
+
emitEntityUpdate,
|
|
28
|
+
emitEvent,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
exports.Events = Events;
|
|
32
|
+
//# 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":";;;AAAA,gDAA8D;AAI9D,MAAM,WAAW,GAAG,CAAC,CAAC;AAEtB,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;QAC3D,yCAAyC;QACzC,MAAM,IAAA,YAAK,EAAC,WAAW,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO;QACL,gBAAgB;QAChB,SAAS;KACV,CAAC;AACJ,CAAC;AA9BD,wBA8BC"}
|
|
@@ -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, internal, 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,57 @@
|
|
|
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, internal, 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
|
+
hass.fetch.getConfig = async () => mock_assistant.fixtures.data?.config;
|
|
15
|
+
lifecycle.onPreInit(() => {
|
|
16
|
+
const { MOCK_SOCKET } = config.hass;
|
|
17
|
+
const { FIXTURES_FILE } = config.mock_assistant;
|
|
18
|
+
if (!MOCK_SOCKET) {
|
|
19
|
+
// There needs to be a shared understanding that nobody is actually sending message traffic anywhere
|
|
20
|
+
// Otherwise the mocking is gonna cause some weirdness
|
|
21
|
+
throw new core_1.InternalError(context, "SOCKET_NOT_MOCKED", "Not for testing with live connections");
|
|
22
|
+
}
|
|
23
|
+
if (!(0, fs_1.existsSync)(FIXTURES_FILE)) {
|
|
24
|
+
throw new core_1.BootstrapException(context, "MISSING_FIXTURES_FILE", `${FIXTURES_FILE} does not exist`);
|
|
25
|
+
}
|
|
26
|
+
if (core_1.is.empty(config.hass.TOKEN)) {
|
|
27
|
+
// prevents throwing errors
|
|
28
|
+
internal.boilerplate.configuration.set("hass", "TOKEN", "--");
|
|
29
|
+
}
|
|
30
|
+
mock_assistant.fixtures.data = JSON.parse((0, fs_1.readFileSync)(FIXTURES_FILE, "utf8"));
|
|
31
|
+
}, MEGA_HIGH_PRIORITY);
|
|
32
|
+
function setState(options) {
|
|
33
|
+
lifecycle.onPreInit(() => {
|
|
34
|
+
const entities = Object.keys(options);
|
|
35
|
+
entities.forEach(i => replace(i, options[i]));
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
function byId(entity) {
|
|
39
|
+
return mock_assistant.fixtures.data.entities.find(i => i.entity_id === entity);
|
|
40
|
+
}
|
|
41
|
+
function replace(entity, new_state) {
|
|
42
|
+
const old_state = byId(entity);
|
|
43
|
+
const { data } = mock_assistant.fixtures;
|
|
44
|
+
data.entities = data.entities.filter(i => i.entity_id !== entity);
|
|
45
|
+
const updated = { ...old_state, ...new_state };
|
|
46
|
+
mock_assistant.fixtures.data.entities.push(updated);
|
|
47
|
+
return updated;
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
byId,
|
|
51
|
+
data: undefined,
|
|
52
|
+
replace,
|
|
53
|
+
setState,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
exports.Fixtures = Fixtures;
|
|
57
|
+
//# 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,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,11 @@
|
|
|
1
|
+
import { AreaDetails, DeviceDetails, ENTITY_STATE, EntityRegistryItem, FloorDetails, HassConfig, HassServiceDTO as HassServiceDefinition, LabelDefinition, PICK_ENTITY } from "../../helpers";
|
|
2
|
+
export type ScannerCacheData = {
|
|
3
|
+
areas: AreaDetails[];
|
|
4
|
+
config: HassConfig;
|
|
5
|
+
devices: DeviceDetails[];
|
|
6
|
+
entities: ENTITY_STATE<PICK_ENTITY>[];
|
|
7
|
+
entity_registry: EntityRegistryItem<PICK_ENTITY>[];
|
|
8
|
+
floors: FloorDetails[];
|
|
9
|
+
labels: LabelDefinition[];
|
|
10
|
+
services: HassServiceDefinition[];
|
|
11
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../../src/mock_assistant/helpers/fixtures.ts"],"names":[],"mappings":""}
|
|
@@ -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,4 @@
|
|
|
1
|
+
import { ApplicationDefinition, BootstrapOptions, PartialConfiguration, ServiceFunction, ServiceMap } from "@digital-alchemy/core";
|
|
2
|
+
export declare const SILENT_BOOT: (configuration?: PartialConfiguration, fixtures?: boolean) => BootstrapOptions;
|
|
3
|
+
export declare function CreateTestingApplication(services: ServiceMap): ApplicationDefinition<ServiceMap, import("@digital-alchemy/core").ModuleConfiguration>;
|
|
4
|
+
export declare const CreateTestRunner: <S extends ServiceMap, C extends import("@digital-alchemy/core").ModuleConfiguration>(UNIT_TESTING_APP: ApplicationDefinition<S, C>) => (setup: ServiceFunction, Test: ServiceFunction) => Promise<void>;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CreateTestRunner = 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
|
+
const CreateTestRunner = (UNIT_TESTING_APP) => {
|
|
32
|
+
// setup runs at construction
|
|
33
|
+
// test runs at ready
|
|
34
|
+
return async function (setup, Test) {
|
|
35
|
+
function test(params) {
|
|
36
|
+
params.lifecycle.onReady(async () => await Test(params));
|
|
37
|
+
}
|
|
38
|
+
return await UNIT_TESTING_APP.bootstrap({
|
|
39
|
+
appendLibrary: mock_assistant_module_1.LIB_MOCK_ASSISTANT,
|
|
40
|
+
appendService: core_1.is.function(setup) ? { setup, test } : { test },
|
|
41
|
+
configuration: {
|
|
42
|
+
boilerplate: { LOG_LEVEL: "error" },
|
|
43
|
+
hass: { MOCK_SOCKET: true },
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
exports.CreateTestRunner = CreateTestRunner;
|
|
49
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/mock_assistant/helpers/utils.ts"],"names":[],"mappings":";;;AAAA,gDAU+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;AAEM,MAAM,gBAAgB,GAAG,CAI9B,gBAA6C,EAC7C,EAAE;IACF,6BAA6B;IAC7B,qBAAqB;IACrB,OAAO,KAAK,WAAW,KAAsB,EAAE,IAAqB;QAClE,SAAS,IAAI,CAAC,MAAsB;YAClC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,MAAM,gBAAgB,CAAC,SAAS,CAAC;YACtC,aAAa,EAAE,0CAAkB;YACjC,aAAa,EAAE,SAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE;YAC9D,aAAa,EAAE;gBACb,WAAW,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE;gBACnC,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE;aAC5B;SACF,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC,CAAC;AArBW,QAAA,gBAAgB,oBAqB3B"}
|
|
@@ -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"}
|