@digital-alchemy/hass 24.9.2 → 24.9.4
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/README.md +4 -1
- package/dist/dynamic.d.ts +1 -1
- package/dist/dynamic.js +7 -2
- package/dist/dynamic.js.map +1 -1
- package/dist/extensions/area.extension.d.ts +2 -12
- package/dist/extensions/area.extension.js +20 -26
- package/dist/extensions/area.extension.js.map +1 -1
- package/dist/extensions/backup.extension.d.ts +2 -7
- package/dist/extensions/backup.extension.js +5 -8
- package/dist/extensions/backup.extension.js.map +1 -1
- package/dist/extensions/call-proxy.extension.d.ts +1 -1
- package/dist/extensions/call-proxy.extension.js +11 -29
- package/dist/extensions/call-proxy.extension.js.map +1 -1
- package/dist/extensions/config.extension.d.ts +2 -6
- package/dist/extensions/config.extension.js +21 -25
- package/dist/extensions/config.extension.js.map +1 -1
- package/dist/extensions/conversation.extension.d.ts +2 -6
- package/dist/extensions/conversation.extension.js +5 -8
- package/dist/extensions/conversation.extension.js.map +1 -1
- package/dist/extensions/device.extension.d.ts +2 -5
- package/dist/extensions/device.extension.js +16 -22
- package/dist/extensions/device.extension.js.map +1 -1
- package/dist/extensions/entity.extension.d.ts +2 -61
- package/dist/extensions/entity.extension.js +42 -83
- package/dist/extensions/entity.extension.js.map +1 -1
- package/dist/extensions/events.extension.d.ts +3 -11
- package/dist/extensions/events.extension.js +8 -11
- package/dist/extensions/events.extension.js.map +1 -1
- package/dist/extensions/fetch-api.extension.d.ts +12 -4
- package/dist/extensions/fetch-api.extension.js +23 -35
- package/dist/extensions/fetch-api.extension.js.map +1 -1
- package/dist/extensions/floor.extension.d.ts +2 -9
- package/dist/extensions/floor.extension.js +17 -23
- package/dist/extensions/floor.extension.js.map +1 -1
- package/dist/extensions/id-by.extension.js +15 -20
- package/dist/extensions/id-by.extension.js.map +1 -1
- package/dist/extensions/index.d.ts +1 -0
- package/dist/extensions/index.js +16 -18
- package/dist/extensions/index.js.map +1 -1
- package/dist/extensions/internal.extension.d.ts +18 -0
- package/dist/extensions/internal.extension.js +102 -0
- package/dist/extensions/internal.extension.js.map +1 -0
- package/dist/extensions/label.extension.d.ts +2 -9
- package/dist/extensions/label.extension.js +17 -23
- package/dist/extensions/label.extension.js.map +1 -1
- package/dist/extensions/reference.extension.d.ts +2 -12
- package/dist/extensions/reference.extension.js +19 -25
- package/dist/extensions/reference.extension.js.map +1 -1
- package/dist/extensions/registry.extension.d.ts +2 -7
- package/dist/extensions/registry.extension.js +1 -4
- package/dist/extensions/registry.extension.js.map +1 -1
- package/dist/extensions/websocket-api.extension.d.ts +3 -78
- package/dist/extensions/websocket-api.extension.js +82 -165
- package/dist/extensions/websocket-api.extension.js.map +1 -1
- package/dist/extensions/zone.extension.d.ts +2 -7
- package/dist/extensions/zone.extension.js +15 -21
- package/dist/extensions/zone.extension.js.map +1 -1
- package/dist/hass.module.d.ts +47 -36
- package/dist/hass.module.js +70 -70
- package/dist/hass.module.js.map +1 -1
- package/dist/helpers/backup.helper.js +1 -2
- package/dist/helpers/constants.helper.js +15 -18
- package/dist/helpers/constants.helper.js.map +1 -1
- package/dist/helpers/device.helper.js +2 -5
- package/dist/helpers/device.helper.js.map +1 -1
- package/dist/helpers/entity-state.helper.d.ts +3 -8
- package/dist/helpers/entity-state.helper.js +1 -8
- package/dist/helpers/entity-state.helper.js.map +1 -1
- package/dist/helpers/features.helper.js +79 -85
- package/dist/helpers/features.helper.js.map +1 -1
- package/dist/helpers/fetch/calendar.js +1 -2
- package/dist/helpers/fetch/configuration.js +2 -5
- package/dist/helpers/fetch/configuration.js.map +1 -1
- package/dist/helpers/fetch/index.js +5 -8
- package/dist/helpers/fetch/index.js.map +1 -1
- package/dist/helpers/fetch/server-log.js +1 -2
- package/dist/helpers/fetch/server-log.js.map +1 -1
- package/dist/helpers/fetch/service-list.js +1 -2
- package/dist/helpers/fetch/weather-forecasts.js +1 -2
- package/dist/helpers/fetch/weather-forecasts.js.map +1 -1
- package/dist/helpers/fetch.helper.d.ts +162 -0
- package/dist/helpers/fetch.helper.js +161 -0
- package/dist/helpers/fetch.helper.js.map +1 -0
- package/dist/helpers/id-by.helper.js +1 -2
- package/dist/helpers/index.d.ts +2 -1
- package/dist/helpers/index.js +13 -15
- package/dist/helpers/index.js.map +1 -1
- package/dist/helpers/interfaces.helper.d.ts +228 -0
- package/dist/helpers/interfaces.helper.js +10 -0
- package/dist/helpers/interfaces.helper.js.map +1 -0
- package/dist/helpers/manifest.helper.d.ts +0 -1
- package/dist/helpers/manifest.helper.js +0 -1
- package/dist/helpers/notify.helper.d.ts +11 -3
- package/dist/helpers/notify.helper.js +1 -2
- package/dist/helpers/registry.js +7 -10
- package/dist/helpers/registry.js.map +1 -1
- package/dist/helpers/utility.helper.d.ts +6 -1
- package/dist/helpers/utility.helper.js +9 -13
- package/dist/helpers/utility.helper.js.map +1 -1
- package/dist/helpers/websocket.helper.d.ts +1 -2
- package/dist/helpers/websocket.helper.js +1 -2
- package/dist/index.js +5 -8
- package/dist/index.js.map +1 -1
- package/dist/mock_assistant/extensions/area.extension.d.ts +8 -0
- package/dist/mock_assistant/extensions/area.extension.js +51 -0
- package/dist/mock_assistant/extensions/area.extension.js.map +1 -0
- package/dist/mock_assistant/extensions/config.extension.d.ts +14 -0
- package/dist/mock_assistant/extensions/config.extension.js +29 -0
- package/dist/mock_assistant/extensions/config.extension.js.map +1 -0
- package/dist/mock_assistant/extensions/device.extension.d.ts +8 -0
- package/dist/mock_assistant/extensions/device.extension.js +33 -0
- package/dist/mock_assistant/extensions/device.extension.js.map +1 -0
- package/dist/mock_assistant/extensions/entity-registry.extension.d.ts +13 -0
- package/dist/mock_assistant/extensions/entity-registry.extension.js +28 -0
- package/dist/mock_assistant/extensions/entity-registry.extension.js.map +1 -0
- package/dist/mock_assistant/extensions/entity.extension.d.ts +30 -0
- package/dist/mock_assistant/extensions/entity.extension.js +77 -0
- package/dist/mock_assistant/extensions/entity.extension.js.map +1 -0
- package/dist/mock_assistant/extensions/events.extension.d.ts +1 -1
- package/dist/mock_assistant/extensions/events.extension.js +3 -6
- package/dist/mock_assistant/extensions/events.extension.js.map +1 -1
- package/dist/mock_assistant/extensions/fetch.extension.d.ts +1 -0
- package/dist/mock_assistant/extensions/fetch.extension.js +4 -0
- package/dist/mock_assistant/extensions/fetch.extension.js.map +1 -0
- package/dist/mock_assistant/extensions/fixtures.extension.d.ts +1 -1
- package/dist/mock_assistant/extensions/fixtures.extension.js +29 -33
- package/dist/mock_assistant/extensions/fixtures.extension.js.map +1 -1
- package/dist/mock_assistant/extensions/floor.extension.d.ts +8 -0
- package/dist/mock_assistant/extensions/floor.extension.js +51 -0
- package/dist/mock_assistant/extensions/floor.extension.js.map +1 -0
- package/dist/mock_assistant/extensions/index.d.ts +10 -0
- package/dist/mock_assistant/extensions/index.js +12 -5
- package/dist/mock_assistant/extensions/index.js.map +1 -1
- package/dist/mock_assistant/extensions/label.extension.d.ts +8 -0
- package/dist/mock_assistant/extensions/label.extension.js +51 -0
- package/dist/mock_assistant/extensions/label.extension.js.map +1 -0
- package/dist/mock_assistant/extensions/services.extension.d.ts +12 -0
- package/dist/mock_assistant/extensions/services.extension.js +20 -0
- package/dist/mock_assistant/extensions/services.extension.js.map +1 -0
- package/dist/mock_assistant/extensions/websocket-api.extension.d.ts +15 -0
- package/dist/mock_assistant/extensions/websocket-api.extension.js +68 -0
- package/dist/mock_assistant/extensions/websocket-api.extension.js.map +1 -0
- package/dist/mock_assistant/extensions/zone.extension.d.ts +8 -0
- package/dist/mock_assistant/extensions/zone.extension.js +51 -0
- package/dist/mock_assistant/extensions/zone.extension.js.map +1 -0
- package/dist/mock_assistant/helpers/fixtures.js +1 -2
- package/dist/mock_assistant/helpers/index.d.ts +0 -1
- package/dist/mock_assistant/helpers/index.js +1 -5
- package/dist/mock_assistant/helpers/index.js.map +1 -1
- package/dist/mock_assistant/index.js +3 -6
- package/dist/mock_assistant/index.js.map +1 -1
- package/dist/mock_assistant/main.js +11 -15
- package/dist/mock_assistant/main.js.map +1 -1
- package/dist/mock_assistant/mock-assistant.module.d.ts +156 -3
- package/dist/mock_assistant/mock-assistant.module.js +56 -11
- package/dist/mock_assistant/mock-assistant.module.js.map +1 -1
- package/dist/quickboot.module.js +5 -8
- package/dist/quickboot.module.js.map +1 -1
- package/dist/testing/area.spec.js +106 -194
- package/dist/testing/area.spec.js.map +1 -1
- package/dist/testing/backup.spec.js +97 -139
- package/dist/testing/backup.spec.js.map +1 -1
- package/dist/testing/config.spec.js +79 -153
- package/dist/testing/config.spec.js.map +1 -1
- package/dist/testing/device.spec.js +35 -69
- package/dist/testing/device.spec.js.map +1 -1
- package/dist/testing/entity.spec.js +94 -149
- package/dist/testing/entity.spec.js.map +1 -1
- package/dist/testing/events.spec.js +33 -57
- package/dist/testing/events.spec.js.map +1 -1
- package/dist/testing/fetch-api.spec.js +242 -427
- package/dist/testing/fetch-api.spec.js.map +1 -1
- package/dist/testing/fixtures.spec.d.ts +1 -0
- package/dist/testing/fixtures.spec.js +150 -0
- package/dist/testing/fixtures.spec.js.map +1 -0
- package/dist/testing/floor.spec.js +106 -194
- package/dist/testing/floor.spec.js.map +1 -1
- package/dist/testing/id-by.spec.js +68 -107
- package/dist/testing/id-by.spec.js.map +1 -1
- package/dist/testing/label.spec.js +106 -194
- package/dist/testing/label.spec.js.map +1 -1
- package/dist/testing/ref-by.spec.js +155 -219
- package/dist/testing/ref-by.spec.js.map +1 -1
- package/dist/testing/websocket.spec.d.ts +1 -8
- package/dist/testing/websocket.spec.js +35 -50
- package/dist/testing/websocket.spec.js.map +1 -1
- package/dist/testing/workflow.spec.js +82 -81
- package/dist/testing/workflow.spec.js.map +1 -1
- package/dist/testing/zone.spec.js +61 -113
- package/dist/testing/zone.spec.js.map +1 -1
- package/package.json +57 -41
- package/dist/helpers/metrics.helper.d.ts +0 -29
- package/dist/helpers/metrics.helper.js +0 -62
- package/dist/helpers/metrics.helper.js.map +0 -1
- package/dist/mock_assistant/helpers/utils.d.ts +0 -4
- package/dist/mock_assistant/helpers/utils.js +0 -57
- package/dist/mock_assistant/helpers/utils.js.map +0 -1
|
@@ -1,62 +1,3 @@
|
|
|
1
1
|
import { TServiceParams } from "@digital-alchemy/core";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
[DOMAIN in ALL_DOMAINS]: Record<string, ENTITY_STATE<PICK_ENTITY<DOMAIN>>>;
|
|
5
|
-
};
|
|
6
|
-
export declare function EntityManager({ logger, hass, config, lifecycle, event, context, internal, }: TServiceParams): {
|
|
7
|
-
/**
|
|
8
|
-
* Internal library use only
|
|
9
|
-
*/
|
|
10
|
-
_entityUpdateReceiver: <ENTITY extends ANY_ENTITY = import("..").TRawEntityIds>(entity_id: ENTITY, new_state: ENTITY_STATE<ENTITY>, old_state: ENTITY_STATE<ENTITY>) => void;
|
|
11
|
-
_masterState: () => Partial<TMasterState>;
|
|
12
|
-
/**
|
|
13
|
-
* Lists all entities within a specified domain. This is useful for
|
|
14
|
-
* domain-specific operations or queries.
|
|
15
|
-
*
|
|
16
|
-
* @deprecated use `hass.idBy.domain` | `hass.refBy.domain`
|
|
17
|
-
*/
|
|
18
|
-
findByDomain: <DOMAIN extends ALL_DOMAINS>(domain: DOMAIN) => import("..").ByIdProxy<PICK_ENTITY<DOMAIN>>[];
|
|
19
|
-
/**
|
|
20
|
-
* Retrieves the current state of a given entity. This method returns
|
|
21
|
-
* raw data, offering a direct view of the entity's state at a given moment.
|
|
22
|
-
*/
|
|
23
|
-
getCurrentState: <ENTITY_ID extends ANY_ENTITY>(entity_id: ENTITY_ID) => ENTITY_STATE<ENTITY_ID>;
|
|
24
|
-
/**
|
|
25
|
-
* Retrieves the historical state data of entities over a specified time
|
|
26
|
-
* period. Useful for analysis or tracking changes over time.
|
|
27
|
-
*/
|
|
28
|
-
history: <ENTITES extends ANY_ENTITY[]>(payload: Omit<EntityHistoryDTO<ENTITES>, "type">) => Promise<{
|
|
29
|
-
[k: string]: EntityHistoryResult[];
|
|
30
|
-
}>;
|
|
31
|
-
/**
|
|
32
|
-
* Provides a simple listing of all entity IDs. Useful for enumeration
|
|
33
|
-
* and quick reference to all available entities.
|
|
34
|
-
*/
|
|
35
|
-
listEntities: <DOMAIN extends ALL_DOMAINS = import("..").TRawDomains>(domain?: DOMAIN) => PICK_ENTITY<DOMAIN>[];
|
|
36
|
-
/**
|
|
37
|
-
* Returns the previous entity state (not a proxy)
|
|
38
|
-
*/
|
|
39
|
-
previousState: (entity_id: ANY_ENTITY) => ENTITY_STATE<import("..").TRawEntityIds>;
|
|
40
|
-
/**
|
|
41
|
-
* Initiates a refresh of the current entity states. Useful for ensuring
|
|
42
|
-
* synchronization with the latest state data from Home Assistant.
|
|
43
|
-
*/
|
|
44
|
-
refresh: (recursion?: number) => Promise<void>;
|
|
45
|
-
/**
|
|
46
|
-
* Interact with the entity registry
|
|
47
|
-
*/
|
|
48
|
-
registry: {
|
|
49
|
-
addLabel: ({ entity, label }: EditLabelOptions) => Promise<void>;
|
|
50
|
-
current: EntityRegistryItem<ANY_ENTITY>[];
|
|
51
|
-
get: <ENTITY extends ANY_ENTITY>(entity_id: ENTITY) => Promise<EntityRegistryItem<ENTITY>>;
|
|
52
|
-
list: () => Promise<EntityRegistryItem<import("..").TRawEntityIds>[]>;
|
|
53
|
-
registryList: () => Promise<EntityRegistryItem<import("..").TRawEntityIds>[]>;
|
|
54
|
-
removeEntity: (entity_id: ANY_ENTITY | ANY_ENTITY[]) => Promise<void>;
|
|
55
|
-
removeLabel: ({ entity, label }: EditLabelOptions) => Promise<void>;
|
|
56
|
-
source: () => Promise<Record<import("..").TRawEntityIds, {
|
|
57
|
-
domain: string;
|
|
58
|
-
}>>;
|
|
59
|
-
};
|
|
60
|
-
warnEarly: (method: string) => void;
|
|
61
|
-
};
|
|
62
|
-
export {};
|
|
2
|
+
import { HassEntityManager } from "..";
|
|
3
|
+
export declare function EntityManager({ logger, hass, config, lifecycle, event, context, internal, }: TServiceParams): HassEntityManager;
|
|
@@ -1,14 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const core_1 = require("@digital-alchemy/core");
|
|
6
|
-
const dayjs_1 = tslib_1.__importDefault(require("dayjs"));
|
|
7
|
-
const process_1 = require("process");
|
|
8
|
-
const __1 = require("..");
|
|
1
|
+
import { debounce, each, eachSeries, INCREMENT, is, SECOND, sleep, START, } from "@digital-alchemy/core";
|
|
2
|
+
import dayjs from "dayjs";
|
|
3
|
+
import { ENTITY_REGISTRY_UPDATED, } from "..";
|
|
9
4
|
const MAX_ATTEMPTS = 10;
|
|
10
5
|
const RECENT = 5;
|
|
11
|
-
function EntityManager({ logger, hass, config, lifecycle, event, context, internal, }) {
|
|
6
|
+
export function EntityManager({ logger, hass, config, lifecycle, event, context, internal, }) {
|
|
12
7
|
// #MARK: Local vars
|
|
13
8
|
/**
|
|
14
9
|
* MASTER_STATE.switch.desk_light = {entity_id,state,attributes,...}
|
|
@@ -38,8 +33,8 @@ function EntityManager({ logger, hass, config, lifecycle, event, context, intern
|
|
|
38
33
|
logger.trace({ payload }, `looking up entity history`);
|
|
39
34
|
const result = (await hass.socket.sendMessage({
|
|
40
35
|
...payload,
|
|
41
|
-
end_time: (
|
|
42
|
-
start_time: (
|
|
36
|
+
end_time: dayjs(payload.end_time).toISOString(),
|
|
37
|
+
start_time: dayjs(payload.start_time).toISOString(),
|
|
43
38
|
type: "history/history_during_period",
|
|
44
39
|
}));
|
|
45
40
|
const entities = Object.keys(result);
|
|
@@ -49,7 +44,7 @@ function EntityManager({ logger, hass, config, lifecycle, event, context, intern
|
|
|
49
44
|
const value = states.map(data => {
|
|
50
45
|
return {
|
|
51
46
|
attributes: data.a,
|
|
52
|
-
date: new Date(data.lu *
|
|
47
|
+
date: new Date(data.lu * SECOND),
|
|
53
48
|
state: data.s,
|
|
54
49
|
};
|
|
55
50
|
});
|
|
@@ -63,16 +58,12 @@ function EntityManager({ logger, hass, config, lifecycle, event, context, intern
|
|
|
63
58
|
}
|
|
64
59
|
return Object.keys(MASTER_STATE).flatMap(domain => Object.keys(MASTER_STATE[domain]).map(id => `${domain}.${id}`));
|
|
65
60
|
}
|
|
66
|
-
// #MARK: findByDomain
|
|
67
|
-
function findByDomain(domain) {
|
|
68
|
-
return Object.keys(MASTER_STATE[domain] ?? {}).map(i => hass.refBy.id(`${domain}.${i}`));
|
|
69
|
-
}
|
|
70
61
|
// #MARK: refresh
|
|
71
|
-
async function refresh(recursion =
|
|
72
|
-
const now = (
|
|
62
|
+
async function refresh(recursion = START) {
|
|
63
|
+
const now = dayjs();
|
|
73
64
|
if (lastRefresh) {
|
|
74
65
|
const diff = lastRefresh.diff(now, "ms");
|
|
75
|
-
if (diff >= RECENT *
|
|
66
|
+
if (diff >= RECENT * SECOND) {
|
|
76
67
|
logger.warn({ diff }, `multiple refreshes in close time`);
|
|
77
68
|
}
|
|
78
69
|
}
|
|
@@ -80,14 +71,14 @@ function EntityManager({ logger, hass, config, lifecycle, event, context, intern
|
|
|
80
71
|
// - Fetch list of entities
|
|
81
72
|
const states = await hass.fetch.getAllEntities();
|
|
82
73
|
// - Keep retrying until max failures reached
|
|
83
|
-
if (!
|
|
74
|
+
if (!is.array(states) || is.empty(states)) {
|
|
84
75
|
if (recursion > MAX_ATTEMPTS) {
|
|
85
76
|
logger.fatal({ name: refresh }, `failed to load service list from Home Assistant. validate configuration`);
|
|
86
|
-
|
|
77
|
+
process.exit();
|
|
87
78
|
}
|
|
88
79
|
logger.warn({ name: refresh, response: states }, "failed to retrieve entity list. retrying {%s}/[%s]", recursion, MAX_ATTEMPTS);
|
|
89
|
-
await
|
|
90
|
-
await refresh(recursion +
|
|
80
|
+
await sleep(config.hass.RETRY_INTERVAL * SECOND);
|
|
81
|
+
await refresh(recursion + INCREMENT);
|
|
91
82
|
return;
|
|
92
83
|
}
|
|
93
84
|
// - Preserve old state for comparison
|
|
@@ -99,12 +90,12 @@ function EntityManager({ logger, hass, config, lifecycle, event, context, intern
|
|
|
99
90
|
states.forEach(entity => {
|
|
100
91
|
// ? Set first, ensure data is populated
|
|
101
92
|
// `nextTick` will fire AFTER loop finishes
|
|
102
|
-
internal.utils.object.set(MASTER_STATE, entity.entity_id, entity,
|
|
93
|
+
internal.utils.object.set(MASTER_STATE, entity.entity_id, entity, is.undefined(internal.utils.object.get(oldState, entity.entity_id)));
|
|
103
94
|
if (!init) {
|
|
104
95
|
return;
|
|
105
96
|
}
|
|
106
97
|
const old = internal.utils.object.get(oldState, entity.entity_id);
|
|
107
|
-
if (
|
|
98
|
+
if (is.equal(old, entity)) {
|
|
108
99
|
// logger.trace(
|
|
109
100
|
// { entity_id: entity.entity_id, name: refresh },
|
|
110
101
|
// `no change on refresh`,
|
|
@@ -116,15 +107,15 @@ function EntityManager({ logger, hass, config, lifecycle, event, context, intern
|
|
|
116
107
|
// Attempt to not blow up the system?
|
|
117
108
|
// TODO: does this gain anything? is a debounce needed somewhere else instead?
|
|
118
109
|
setImmediate(async () => {
|
|
119
|
-
await
|
|
110
|
+
await each(emitUpdates, async (entity) => await entityUpdateReceiver(entity.entity_id, entity, internal.utils.object.get(oldState, entity.entity_id)));
|
|
120
111
|
});
|
|
121
112
|
init = true;
|
|
122
113
|
}
|
|
123
114
|
// #MARK: EntityUpdateReceiver
|
|
124
|
-
function
|
|
115
|
+
function entityUpdateReceiver(entity_id, new_state, old_state) {
|
|
125
116
|
PREVIOUS_STATE.set(entity_id, old_state);
|
|
126
117
|
if (new_state === null) {
|
|
127
|
-
logger.warn({ name:
|
|
118
|
+
logger.warn({ name: entityUpdateReceiver }, `removing deleted entity [%s] from {MASTER_STATE}`, entity_id);
|
|
128
119
|
internal.utils.object.del(MASTER_STATE, entity_id);
|
|
129
120
|
return;
|
|
130
121
|
}
|
|
@@ -132,28 +123,25 @@ function EntityManager({ logger, hass, config, lifecycle, event, context, intern
|
|
|
132
123
|
if (!hass.socket.pauseMessages) {
|
|
133
124
|
event.emit(entity_id, new_state, old_state);
|
|
134
125
|
const unique_id = hass.entity.registry.current.find(i => i.entity_id === entity_id)?.unique_id;
|
|
135
|
-
if (
|
|
126
|
+
if (is.number(unique_id) || !is.empty(unique_id)) {
|
|
136
127
|
event.emit(unique_id, new_state, old_state);
|
|
137
128
|
}
|
|
138
129
|
}
|
|
139
130
|
}
|
|
140
131
|
// #MARK: onPostConfig
|
|
141
132
|
lifecycle.onPostConfig(async function HassEntityPostConfig() {
|
|
142
|
-
if (!config.hass.AUTO_CONNECT_SOCKET) {
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
133
|
logger.debug({ name: HassEntityPostConfig }, `pre populate {MASTER_STATE}`);
|
|
146
134
|
await hass.entity.refresh();
|
|
147
135
|
});
|
|
148
136
|
async function AddLabel({ entity, label }) {
|
|
149
|
-
await
|
|
150
|
-
const current = await
|
|
137
|
+
await each([entity].flat(), async (entity) => {
|
|
138
|
+
const current = await entityGet(entity);
|
|
151
139
|
if (current?.labels?.includes(label)) {
|
|
152
140
|
logger.debug({ name: entity }, `already has label {%s}`, label);
|
|
153
141
|
return;
|
|
154
142
|
}
|
|
155
143
|
return await new Promise(async (done) => {
|
|
156
|
-
event.once(
|
|
144
|
+
event.once(ENTITY_REGISTRY_UPDATED, done);
|
|
157
145
|
await hass.socket.sendMessage({
|
|
158
146
|
entity_id: entity,
|
|
159
147
|
labels: [...current.labels, label],
|
|
@@ -164,7 +152,9 @@ function EntityManager({ logger, hass, config, lifecycle, event, context, intern
|
|
|
164
152
|
}
|
|
165
153
|
// #MARK: EntitySource
|
|
166
154
|
async function EntitySource() {
|
|
167
|
-
return await hass.socket.sendMessage({
|
|
155
|
+
return await hass.socket.sendMessage({
|
|
156
|
+
type: "entity/source",
|
|
157
|
+
});
|
|
168
158
|
}
|
|
169
159
|
// #MARK: EntityList
|
|
170
160
|
async function EntityList() {
|
|
@@ -174,14 +164,14 @@ function EntityManager({ logger, hass, config, lifecycle, event, context, intern
|
|
|
174
164
|
}
|
|
175
165
|
// #MARK: RemoveLabel
|
|
176
166
|
async function RemoveLabel({ entity, label }) {
|
|
177
|
-
const current = await
|
|
167
|
+
const current = await entityGet(entity);
|
|
178
168
|
if (!current?.labels?.includes(label)) {
|
|
179
169
|
logger.debug({ name: entity }, `does not have label {%s}`, label);
|
|
180
170
|
return;
|
|
181
171
|
}
|
|
182
172
|
logger.debug({ name: entity }, `removing label [%s]`, label);
|
|
183
173
|
return await new Promise(async (done) => {
|
|
184
|
-
event.once(
|
|
174
|
+
event.once(ENTITY_REGISTRY_UPDATED, done);
|
|
185
175
|
await hass.socket.sendMessage({
|
|
186
176
|
entity_id: entity,
|
|
187
177
|
labels: current.labels.filter(i => i !== label),
|
|
@@ -190,33 +180,30 @@ function EntityManager({ logger, hass, config, lifecycle, event, context, intern
|
|
|
190
180
|
});
|
|
191
181
|
}
|
|
192
182
|
// #MARK: EntityGet
|
|
193
|
-
async function
|
|
183
|
+
async function entityGet(entity_id) {
|
|
194
184
|
return await hass.socket.sendMessage({
|
|
195
185
|
entity_id: entity_id,
|
|
196
186
|
type: "config/entity_registry/get",
|
|
197
187
|
});
|
|
198
188
|
}
|
|
199
|
-
hass.socket.subscribe({
|
|
200
|
-
context,
|
|
201
|
-
event_type: "entity_registry_updated",
|
|
202
|
-
async exec() {
|
|
203
|
-
await (0, core_1.debounce)(__1.ENTITY_REGISTRY_UPDATED, config.hass.EVENT_DEBOUNCE_MS);
|
|
204
|
-
logger.debug("entity registry updated");
|
|
205
|
-
hass.entity.registry.current = await hass.entity.registry.list();
|
|
206
|
-
event.emit(__1.ENTITY_REGISTRY_UPDATED);
|
|
207
|
-
},
|
|
208
|
-
});
|
|
209
189
|
// #MARK: onConnect
|
|
210
190
|
hass.socket.onConnect(async () => {
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
191
|
+
hass.socket.subscribe({
|
|
192
|
+
context,
|
|
193
|
+
event_type: "entity_registry_updated",
|
|
194
|
+
async exec() {
|
|
195
|
+
await debounce(ENTITY_REGISTRY_UPDATED, config.hass.EVENT_DEBOUNCE_MS);
|
|
196
|
+
logger.debug("entity registry updated");
|
|
197
|
+
hass.entity.registry.current = await hass.entity.registry.list();
|
|
198
|
+
event.emit(ENTITY_REGISTRY_UPDATED);
|
|
199
|
+
},
|
|
200
|
+
});
|
|
214
201
|
hass.entity.registry.current = await hass.entity.registry.list();
|
|
215
202
|
});
|
|
216
203
|
// #MARK: RemoveEntity
|
|
217
204
|
async function RemoveEntity(entity_id) {
|
|
218
205
|
warnEarly("RemoveEntity");
|
|
219
|
-
await
|
|
206
|
+
await eachSeries([entity_id].flat(), async (entity_id) => {
|
|
220
207
|
logger.debug({ name: entity_id }, `removing entity`);
|
|
221
208
|
await hass.socket.sendMessage({
|
|
222
209
|
entity_id,
|
|
@@ -226,49 +213,21 @@ function EntityManager({ logger, hass, config, lifecycle, event, context, intern
|
|
|
226
213
|
}
|
|
227
214
|
// #MARK: return object
|
|
228
215
|
return {
|
|
229
|
-
|
|
230
|
-
* Internal library use only
|
|
231
|
-
*/
|
|
232
|
-
_entityUpdateReceiver: EntityUpdateReceiver,
|
|
216
|
+
_entityUpdateReceiver: entityUpdateReceiver,
|
|
233
217
|
_masterState: () => MASTER_STATE,
|
|
234
|
-
/**
|
|
235
|
-
* Lists all entities within a specified domain. This is useful for
|
|
236
|
-
* domain-specific operations or queries.
|
|
237
|
-
*
|
|
238
|
-
* @deprecated use `hass.idBy.domain` | `hass.refBy.domain`
|
|
239
|
-
*/
|
|
240
|
-
findByDomain,
|
|
241
218
|
/**
|
|
242
219
|
* Retrieves the current state of a given entity. This method returns
|
|
243
220
|
* raw data, offering a direct view of the entity's state at a given moment.
|
|
244
221
|
*/
|
|
245
222
|
getCurrentState,
|
|
246
|
-
/**
|
|
247
|
-
* Retrieves the historical state data of entities over a specified time
|
|
248
|
-
* period. Useful for analysis or tracking changes over time.
|
|
249
|
-
*/
|
|
250
223
|
history,
|
|
251
|
-
/**
|
|
252
|
-
* Provides a simple listing of all entity IDs. Useful for enumeration
|
|
253
|
-
* and quick reference to all available entities.
|
|
254
|
-
*/
|
|
255
224
|
listEntities,
|
|
256
|
-
/**
|
|
257
|
-
* Returns the previous entity state (not a proxy)
|
|
258
|
-
*/
|
|
259
225
|
previousState: (entity_id) => PREVIOUS_STATE.get(entity_id),
|
|
260
|
-
/**
|
|
261
|
-
* Initiates a refresh of the current entity states. Useful for ensuring
|
|
262
|
-
* synchronization with the latest state data from Home Assistant.
|
|
263
|
-
*/
|
|
264
226
|
refresh,
|
|
265
|
-
/**
|
|
266
|
-
* Interact with the entity registry
|
|
267
|
-
*/
|
|
268
227
|
registry: {
|
|
269
228
|
addLabel: AddLabel,
|
|
270
229
|
current: [],
|
|
271
|
-
get:
|
|
230
|
+
get: entityGet,
|
|
272
231
|
list: EntityList,
|
|
273
232
|
registryList: EntityList,
|
|
274
233
|
removeEntity: RemoveEntity,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.extension.js","sourceRoot":"","sources":["../../src/extensions/entity.extension.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"entity.extension.js","sourceRoot":"","sources":["../../src/extensions/entity.extension.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export declare function Events({ event }: TServiceParams):
|
|
4
|
-
onAreaRegistryUpdate: (callback: SimpleCallback) => import("events")<[never]>;
|
|
5
|
-
onDeviceRegistryUpdate: (callback: SimpleCallback) => import("events")<[never]>;
|
|
6
|
-
onEntityRegistryUpdate: (callback: SimpleCallback) => import("events")<[never]>;
|
|
7
|
-
onFloorRegistryUpdate: (callback: SimpleCallback) => import("events")<[never]>;
|
|
8
|
-
onLabelRegistryUpdate: (callback: SimpleCallback) => import("events")<[never]>;
|
|
9
|
-
onZoneRegistryUpdate: (callback: SimpleCallback) => import("events")<[never]>;
|
|
10
|
-
};
|
|
11
|
-
export {};
|
|
1
|
+
import { TServiceParams } from "@digital-alchemy/core";
|
|
2
|
+
import { HassEventsService } from "../helpers";
|
|
3
|
+
export declare function Events({ event }: TServiceParams): HassEventsService;
|
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.Events = Events;
|
|
4
|
-
const helpers_1 = require("../helpers");
|
|
5
|
-
function Events({ event }) {
|
|
1
|
+
import { AREA_REGISTRY_UPDATED, DEVICE_REGISTRY_UPDATED, ENTITY_REGISTRY_UPDATED, FLOOR_REGISTRY_UPDATED, LABEL_REGISTRY_UPDATED, ZONE_REGISTRY_UPDATED, } from "../helpers";
|
|
2
|
+
export function Events({ event }) {
|
|
6
3
|
return {
|
|
7
|
-
onAreaRegistryUpdate: (callback) => event.on(
|
|
8
|
-
onDeviceRegistryUpdate: (callback) => event.on(
|
|
9
|
-
onEntityRegistryUpdate: (callback) => event.on(
|
|
10
|
-
onFloorRegistryUpdate: (callback) => event.on(
|
|
11
|
-
onLabelRegistryUpdate: (callback) => event.on(
|
|
12
|
-
onZoneRegistryUpdate: (callback) => event.on(
|
|
4
|
+
onAreaRegistryUpdate: (callback) => event.on(AREA_REGISTRY_UPDATED, callback),
|
|
5
|
+
onDeviceRegistryUpdate: (callback) => event.on(DEVICE_REGISTRY_UPDATED, callback),
|
|
6
|
+
onEntityRegistryUpdate: (callback) => event.on(ENTITY_REGISTRY_UPDATED, callback),
|
|
7
|
+
onFloorRegistryUpdate: (callback) => event.on(FLOOR_REGISTRY_UPDATED, callback),
|
|
8
|
+
onLabelRegistryUpdate: (callback) => event.on(LABEL_REGISTRY_UPDATED, callback),
|
|
9
|
+
onZoneRegistryUpdate: (callback) => event.on(ZONE_REGISTRY_UPDATED, callback),
|
|
13
10
|
};
|
|
14
11
|
}
|
|
15
12
|
//# sourceMappingURL=events.extension.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.extension.js","sourceRoot":"","sources":["../../src/extensions/events.extension.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"events.extension.js","sourceRoot":"","sources":["../../src/extensions/events.extension.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EAEtB,sBAAsB,EAEtB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AAEpB,MAAM,UAAU,MAAM,CAAC,EAAE,KAAK,EAAkB;IAC9C,OAAO;QACL,oBAAoB,EAAE,CAAC,QAAwB,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,QAAQ,CAAC;QAC7F,sBAAsB,EAAE,CAAC,QAAwB,EAAE,EAAE,CACnD,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,QAAQ,CAAC;QAC7C,sBAAsB,EAAE,CAAC,QAAwB,EAAE,EAAE,CACnD,KAAK,CAAC,EAAE,CAAC,uBAAuB,EAAE,QAAQ,CAAC;QAC7C,qBAAqB,EAAE,CAAC,QAAwB,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,sBAAsB,EAAE,QAAQ,CAAC;QAC/F,qBAAqB,EAAE,CAAC,QAAwB,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,sBAAsB,EAAE,QAAQ,CAAC;QAC/F,oBAAoB,EAAE,CAAC,QAAwB,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,EAAE,QAAQ,CAAC;KAC9F,CAAC;AACJ,CAAC"}
|
|
@@ -1,11 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { TServiceParams } from "@digital-alchemy/core";
|
|
2
2
|
import { Dayjs } from "dayjs";
|
|
3
|
-
import { ALL_SERVICE_DOMAINS, ANY_ENTITY, CalendarEvent, CalendarFetchOptions, CheckConfigResult, ENTITY_STATE, HassConfig, HassServiceDTO, HomeAssistantServerLogItem, PICK_SERVICE, PICK_SERVICE_PARAMETERS } from "..";
|
|
3
|
+
import { ALL_SERVICE_DOMAINS, ANY_ENTITY, CalendarEvent, CalendarFetchOptions, CheckConfigResult, ENTITY_STATE, FetchArguments, FilteredFetchArguments, HassConfig, HassServiceDTO, HomeAssistantServerLogItem, PICK_SERVICE, PICK_SERVICE_PARAMETERS, TFetchBody } from "..";
|
|
4
4
|
type SendBody<STATE extends string | number = string, ATTRIBUTES extends object = object> = {
|
|
5
5
|
attributes?: ATTRIBUTES;
|
|
6
6
|
state?: STATE;
|
|
7
7
|
};
|
|
8
|
-
export declare function FetchAPI({ logger, lifecycle, context, hass,
|
|
8
|
+
export declare function FetchAPI({ logger, lifecycle, context, hass, config }: TServiceParams): {
|
|
9
|
+
_fetcher: {
|
|
10
|
+
base_headers: Record<string, string>;
|
|
11
|
+
base_url: string;
|
|
12
|
+
download: ({ destination, body, headers, method, ...fetchWith }: import("..").DownloadOptions) => Promise<void>;
|
|
13
|
+
exec: <T, BODY extends TFetchBody = undefined>({ body, headers, method, process, ...fetchWith }: Partial<FetchArguments<BODY>>) => Promise<T>;
|
|
14
|
+
setBaseUrl: (url: string) => string;
|
|
15
|
+
setHeaders: (headers: Record<string, string>) => Record<string, string>;
|
|
16
|
+
};
|
|
9
17
|
calendarSearch: ({ calendar, start, end, }: CalendarFetchOptions) => Promise<CalendarEvent[]>;
|
|
10
18
|
callService: <DOMAIN extends ALL_SERVICE_DOMAINS, SERVICE extends PICK_SERVICE<DOMAIN>>(serviceName: SERVICE, data: PICK_SERVICE_PARAMETERS<DOMAIN, SERVICE>) => Promise<void>;
|
|
11
19
|
checkConfig: () => Promise<CheckConfigResult>;
|
|
@@ -13,7 +21,7 @@ export declare function FetchAPI({ logger, lifecycle, context, hass, internal, c
|
|
|
13
21
|
message: string;
|
|
14
22
|
} | string>;
|
|
15
23
|
download: (destination: string, fetchWith: FilteredFetchArguments) => Promise<void>;
|
|
16
|
-
fetch: <T, BODY extends TFetchBody = undefined>(
|
|
24
|
+
fetch: <T, BODY extends TFetchBody = undefined>(options: Partial<FetchArguments<BODY>>) => Promise<T>;
|
|
17
25
|
fetchEntityCustomizations: <T extends Record<never, unknown> = Record<"local" | "global", Record<string, string>>>(entityId: ANY_ENTITY) => Promise<T>;
|
|
18
26
|
fetchEntityHistory: <ENTITY extends ANY_ENTITY = import("..").TRawEntityIds, T extends ENTITY_STATE<ENTITY> = ENTITY_STATE<ENTITY>>(entity_id: ENTITY, from: Date | Dayjs, to: Date | Dayjs, extra?: {
|
|
19
27
|
minimal_response?: "";
|
|
@@ -1,42 +1,29 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
const process_1 = require("process");
|
|
8
|
-
const semver_1 = require("semver");
|
|
9
|
-
const __1 = require("..");
|
|
10
|
-
function FetchAPI({ logger, lifecycle, context, hass, internal, config, }) {
|
|
11
|
-
const fetcher = internal.boilerplate.fetch({ context });
|
|
1
|
+
import { DOWN, is, NO_CHANGE, SECOND, UP } from "@digital-alchemy/core";
|
|
2
|
+
import dayjs from "dayjs";
|
|
3
|
+
import { lt } from "semver";
|
|
4
|
+
import { MIN_SUPPORTED_HASS_VERSION, PostConfigPriorities, } from "..";
|
|
5
|
+
export function FetchAPI({ logger, lifecycle, context, hass, config }) {
|
|
6
|
+
const fetcher = hass.internals({ context });
|
|
12
7
|
const { download: downloader } = fetcher;
|
|
13
8
|
// Load configurations
|
|
14
9
|
lifecycle.onPostConfig(() => {
|
|
15
10
|
fetcher.base_url = config.hass.BASE_URL;
|
|
16
11
|
fetcher.base_headers = { Authorization: `Bearer ${config.hass.TOKEN}` };
|
|
17
|
-
},
|
|
12
|
+
}, PostConfigPriorities.FETCH);
|
|
18
13
|
lifecycle.onBootstrap(async () => {
|
|
19
|
-
if (!config.hass.AUTO_CONNECT_SOCKET) {
|
|
20
|
-
// shorthand for is unit test right now
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
14
|
const target = await hass.fetch.getConfig();
|
|
24
|
-
if (
|
|
25
|
-
logger.fatal({ target: target.version }, "minimum supported version of home assistant: %s",
|
|
26
|
-
|
|
15
|
+
if (lt(target.version, MIN_SUPPORTED_HASS_VERSION)) {
|
|
16
|
+
logger.fatal({ target: target.version }, "minimum supported version of home assistant: %s", MIN_SUPPORTED_HASS_VERSION);
|
|
17
|
+
process.exit();
|
|
27
18
|
}
|
|
28
19
|
logger.debug(`hass version %s`, target.version);
|
|
29
20
|
});
|
|
30
|
-
async function calendarSearch({ calendar, start = (
|
|
21
|
+
async function calendarSearch({ calendar, start = dayjs(), end, }) {
|
|
31
22
|
if (Array.isArray(calendar)) {
|
|
32
23
|
const list = await Promise.all(calendar.map(async (cal) => await calendarSearch({ calendar: cal, end, start })));
|
|
33
|
-
return list
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
? core_1.NO_CHANGE
|
|
37
|
-
: a.start.isAfter(b.start)
|
|
38
|
-
? core_1.UP
|
|
39
|
-
: core_1.DOWN);
|
|
24
|
+
return list.flat().sort((a, b) =>
|
|
25
|
+
// eslint-disable-next-line sonarjs/no-nested-conditional
|
|
26
|
+
a.start.isSame(b.start) ? NO_CHANGE : a.start.isAfter(b.start) ? UP : DOWN);
|
|
40
27
|
}
|
|
41
28
|
const params = { end: end.toISOString(), start: start.toISOString() };
|
|
42
29
|
const events = await hass.fetch.fetch({
|
|
@@ -46,8 +33,8 @@ function FetchAPI({ logger, lifecycle, context, hass, internal, config, }) {
|
|
|
46
33
|
logger.trace({ name: calendarSearch, params }, `%s search found %s events`, calendar, events.length);
|
|
47
34
|
return events.map(({ start, end, ...extra }) => ({
|
|
48
35
|
...extra,
|
|
49
|
-
end: (
|
|
50
|
-
start: (
|
|
36
|
+
end: dayjs(end.dateTime),
|
|
37
|
+
start: dayjs(start.dateTime),
|
|
51
38
|
}));
|
|
52
39
|
}
|
|
53
40
|
async function callService(serviceName, data) {
|
|
@@ -83,9 +70,9 @@ function FetchAPI({ logger, lifecycle, context, hass, internal, config, }) {
|
|
|
83
70
|
async function fetchEntityHistory(entity_id, from, to, extra = {}) {
|
|
84
71
|
logger.info({
|
|
85
72
|
entity_id,
|
|
86
|
-
from: (
|
|
73
|
+
from: dayjs(from).toISOString(),
|
|
87
74
|
name: fetchEntityHistory,
|
|
88
|
-
to: (
|
|
75
|
+
to: dayjs(to).toISOString(),
|
|
89
76
|
}, `fetch entity history`);
|
|
90
77
|
const result = await hass.fetch.fetch({
|
|
91
78
|
params: {
|
|
@@ -129,8 +116,8 @@ function FetchAPI({ logger, lifecycle, context, hass, internal, config, }) {
|
|
|
129
116
|
url: `/api/error/all`,
|
|
130
117
|
});
|
|
131
118
|
return results.map(i => {
|
|
132
|
-
i.timestamp = Math.floor(i.timestamp *
|
|
133
|
-
i.first_occurred = Math.floor(i.first_occurred *
|
|
119
|
+
i.timestamp = Math.floor(i.timestamp * SECOND);
|
|
120
|
+
i.first_occurred = Math.floor(i.first_occurred * SECOND);
|
|
134
121
|
return i;
|
|
135
122
|
});
|
|
136
123
|
}
|
|
@@ -149,7 +136,7 @@ function FetchAPI({ logger, lifecycle, context, hass, internal, config, }) {
|
|
|
149
136
|
const body = {};
|
|
150
137
|
// ! ORDER MATTERS FOR APPLYING
|
|
151
138
|
// Must be applied in alphabetical order for unit test reasons
|
|
152
|
-
if (!
|
|
139
|
+
if (!is.empty(attributes)) {
|
|
153
140
|
body.attributes = attributes;
|
|
154
141
|
}
|
|
155
142
|
if (state !== undefined) {
|
|
@@ -178,12 +165,13 @@ function FetchAPI({ logger, lifecycle, context, hass, internal, config, }) {
|
|
|
178
165
|
});
|
|
179
166
|
}
|
|
180
167
|
return {
|
|
168
|
+
_fetcher: fetcher,
|
|
181
169
|
calendarSearch,
|
|
182
170
|
callService,
|
|
183
171
|
checkConfig,
|
|
184
172
|
checkCredentials,
|
|
185
173
|
download,
|
|
186
|
-
fetch: fetcher.
|
|
174
|
+
fetch: async (options) => await fetcher.exec(options),
|
|
187
175
|
fetchEntityCustomizations,
|
|
188
176
|
fetchEntityHistory,
|
|
189
177
|
fireEvent,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-api.extension.js","sourceRoot":"","sources":["../../src/extensions/fetch-api.extension.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fetch-api.extension.js","sourceRoot":"","sources":["../../src/extensions/fetch-api.extension.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,EAAkB,EAAE,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,KAAgB,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAYL,0BAA0B,EAG1B,oBAAoB,GAGrB,MAAM,IAAI,CAAC;AAOZ,MAAM,UAAU,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAkB;IACnF,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5C,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IAEzC,sBAAsB;IACtB,SAAS,CAAC,YAAY,CAAC,GAAG,EAAE;QAC1B,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QACxC,OAAO,CAAC,YAAY,GAAG,EAAE,aAAa,EAAE,UAAU,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;IAC1E,CAAC,EAAE,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAE/B,SAAS,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE;QAC/B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QAC5C,IAAI,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,0BAA0B,CAAC,EAAE,CAAC;YACnD,MAAM,CAAC,KAAK,CACV,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,EAC1B,iDAAiD,EACjD,0BAA0B,CAC3B,CAAC;YACF,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,KAAK,UAAU,cAAc,CAAC,EAC5B,QAAQ,EACR,KAAK,GAAG,KAAK,EAAE,EACf,GAAG,GACkB;QACrB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAC5B,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE,CAAC,MAAM,cAAc,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAC/E,CAAC;YACF,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC/B,yDAAyD;YACzD,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAC3E,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;QACtE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAqB;YACxD,MAAM;YACN,GAAG,EAAE,kBAAkB,kBAAkB,CAAC,QAAQ,CAAC,EAAE;SACtD,CAAC,CAAC;QACH,MAAM,CAAC,KAAK,CACV,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,EAChC,2BAA2B,EAC3B,QAAQ,EACR,MAAM,CAAC,MAAM,CACd,CAAC;QACF,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YAC/C,GAAG,KAAK;YACR,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC;YACxB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;SAC7B,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,UAAU,WAAW,CAGxB,WAAoB,EAAE,IAA8C;QACpE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YACrB,IAAI,EAAE,IAAkB;YACxB,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,iBAAiB,MAAM,IAAI,OAAO,EAAE;SAC1C,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,WAAW;QACxB,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC;QAC5C,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YAC5B,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,+BAA+B;SACrC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,QAAQ,CAAC,WAAmB,EAAE,SAAiC;QAC5E,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC;QACzC,MAAM,UAAU,CAAC;YACf,GAAG,SAAS;YACZ,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ;YAC7B,WAAW;YACX,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE;SAC1D,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,yBAAyB,CAEtC,QAAoB;QACpB,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,yBAAyB,EAAE,EAAE,MAAM,CAAC,CAAC;QAC1D,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAI;YAC/B,GAAG,EAAE,gCAAgC,kBAAkB,CAAC,QAAQ,CAAC,EAAE;SACpE,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,kBAAkB,CAI/B,SAAiB,EACjB,IAAkB,EAClB,EAAgB,EAChB,QAAmC,EAAE;QAErC,MAAM,CAAC,IAAI,CACT;YACE,SAAS;YACT,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE;YAC/B,IAAI,EAAE,kBAAkB;YACxB,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE;SAC5B,EACD,sBAAsB,CACvB,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAQ;YAC3C,MAAM,EAAE;gBACN,QAAQ,EAAE,EAAE,CAAC,WAAW,EAAE;gBAC1B,gBAAgB,EAAE,SAAS;gBAC3B,GAAG,KAAK;aACT;YACD,GAAG,EAAE,uBAAuB,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE;SACrE,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,EAAE,0BAA0B,CAAC,CAAC;YAC/E,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,UAAU,SAAS,CACtB,KAAa,EACb,IAAW;QAEX,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,cAAc,CAAC,CAAC;QAC/D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAA4B;YACjE,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,eAAe,kBAAkB,CAAC,KAAK,CAAC,EAAE;SAChD,CAAC,CAAC;QACH,IAAI,QAAQ,EAAE,OAAO,KAAK,SAAS,KAAK,SAAS,EAAE,CAAC;YAClD,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,EAAE,uCAAuC,CAAC,CAAC;QAChG,CAAC;IACH,CAAC;IAED,KAAK,UAAU,cAAc;QAC3B,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,MAAM,CAAC,CAAC;QAC/C,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAA6B;YACxD,GAAG,EAAE,aAAa;SACnB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,SAAS;QACtB,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;QAC1C,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,UAAU,OAAO;QACpB,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAA+B;YACnE,GAAG,EAAE,gBAAgB;SACtB,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACrB,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC;YAC/C,CAAC,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,GAAG,MAAM,CAAC,CAAC;YACzD,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,UAAU;QACvB,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,MAAM,CAAC,CAAC;QAC3C,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAS;YACpC,OAAO,EAAE,MAAM;YACf,GAAG,EAAE,gBAAgB;SACtB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,YAAY;QACzB,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,MAAM,CAAC,CAAC;QAC7C,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAmB,EAAE,GAAG,EAAE,eAAe,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,UAAU,YAAY,CAGzB,SAAqB,EAAE,EAAE,UAAU,EAAE,KAAK,EAA+B;QACzE,MAAM,IAAI,GAAoB,EAAE,CAAC;QACjC,+BAA+B;QAC/B,8DAA8D;QAC9D,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC/B,CAAC;QACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,CAAC;QACD,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAC7E,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YACrB,IAAI;YACJ,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,eAAe,kBAAkB,CAAC,SAAS,CAAC,EAAE;SACpD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,OAAO,CAAC,YAAoB,EAAE,OAAe,EAAE;QAC5D,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,MAAM,CAAC,CAAC;QAC5D,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YACrB,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,MAAM;YACf,GAAG,EAAE,gBAAgB,kBAAkB,CAAC,YAAY,CAAC,EAAE;SACxD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,UAAU,gBAAgB;QAC7B,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,EAAE,MAAM,CAAC,CAAC;QACjD,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;YAC5B,GAAG,EAAE,OAAO;SACb,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,OAAO;QACjB,cAAc;QACd,WAAW;QACX,WAAW;QACX,gBAAgB;QAChB,QAAQ;QACR,KAAK,EAAE,KAAK,EAA0C,OAAsC,EAAE,EAAE,CAC9F,MAAM,OAAO,CAAC,IAAI,CAAU,OAAO,CAAC;QACtC,yBAAyB;QACzB,kBAAkB;QAClB,SAAS;QACT,cAAc;QACd,SAAS;QACT,OAAO;QACP,UAAU;QACV,YAAY;QACZ,YAAY;QACZ,OAAO;KACR,CAAC;AACJ,CAAC"}
|
|
@@ -1,10 +1,3 @@
|
|
|
1
1
|
import { TServiceParams } from "@digital-alchemy/core";
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
export declare function Floor({ hass, config, context, event, logger, lifecycle, }: TServiceParams): {
|
|
5
|
-
create(details: FloorCreate): Promise<void>;
|
|
6
|
-
current: FloorDetails[];
|
|
7
|
-
delete(floor_id: TFloorId): Promise<void>;
|
|
8
|
-
list(): Promise<FloorDetails[]>;
|
|
9
|
-
update(details: FloorDetails): Promise<void>;
|
|
10
|
-
};
|
|
2
|
+
import { HassFloorService } from "../helpers";
|
|
3
|
+
export declare function Floor({ hass, config, context, event, logger, lifecycle, }: TServiceParams): HassFloorService;
|