@digital-alchemy/hass 25.10.26-beta.0 → 25.10.27-beta.0
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/hass.module.d.mts +2 -1
- package/dist/hass.module.mjs +2 -1
- package/dist/hass.module.mjs.map +1 -1
- package/dist/helpers/addon.d.mts +20 -0
- package/dist/helpers/addon.mjs +2 -0
- package/dist/helpers/addon.mjs.map +1 -0
- package/dist/helpers/countries.d.mts +2 -0
- package/dist/helpers/countries.mjs +254 -0
- package/dist/helpers/countries.mjs.map +1 -0
- package/dist/helpers/index.d.mts +3 -0
- package/dist/helpers/index.mjs +3 -0
- package/dist/helpers/index.mjs.map +1 -1
- package/dist/helpers/interfaces.d.mts +4 -0
- package/dist/helpers/interfaces.mjs.map +1 -1
- package/dist/helpers/languages.d.mts +2 -0
- package/dist/helpers/languages.mjs +67 -0
- package/dist/helpers/languages.mjs.map +1 -0
- package/dist/mock_assistant/mock-assistant.module.d.mts +2 -0
- package/dist/services/addon.service.d.mts +3 -0
- package/dist/services/addon.service.mjs +14 -0
- package/dist/services/addon.service.mjs.map +1 -0
- package/dist/services/index.d.mts +1 -0
- package/dist/services/index.mjs +1 -0
- package/dist/services/index.mjs.map +1 -1
- package/dist/testing/addon.spec.d.mts +1 -0
- package/dist/testing/addon.spec.mjs +57 -0
- package/dist/testing/addon.spec.mjs.map +1 -0
- package/package.json +9 -9
- package/src/hass.module.mts +3 -0
- package/src/helpers/addon.mts +20 -0
- package/src/helpers/countries.mts +255 -0
- package/src/helpers/index.mts +3 -0
- package/src/helpers/interfaces.mts +5 -0
- package/src/helpers/languages.mts +67 -0
- package/src/services/addon.service.mts +18 -0
- package/src/services/index.mts +1 -0
- package/src/testing/addon.spec.mts +63 -0
package/dist/hass.module.d.mts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { Area, Backup, CallProxy, Configure, Device, EntityManager, EventsService, FetchAPI, FetchInternals, Floor, HassDiagnosticsService, HassFeatureService, IDByExtension, Label, ReferenceService, Registry, WebsocketAPI, Zone } from "./services/index.mts";
|
|
1
|
+
import { AddonService, Area, Backup, CallProxy, Configure, Device, EntityManager, EventsService, FetchAPI, FetchInternals, Floor, HassDiagnosticsService, HassFeatureService, IDByExtension, Label, ReferenceService, Registry, WebsocketAPI, Zone } from "./services/index.mts";
|
|
2
2
|
export declare const LIB_HASS: import("@digital-alchemy/core").LibraryDefinition<{
|
|
3
|
+
addon: typeof AddonService;
|
|
3
4
|
/**
|
|
4
5
|
* home assistant areas
|
|
5
6
|
*/
|
package/dist/hass.module.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CreateLibrary } from "@digital-alchemy/core";
|
|
2
|
-
import { Area, Backup, CallProxy, Configure, Device, EntityManager, EventsService, FetchAPI, FetchInternals, Floor, HassDiagnosticsService, HassFeatureService, IDByExtension, Label, ReferenceService, Registry, WebsocketAPI, Zone, } from "./services/index.mjs";
|
|
2
|
+
import { AddonService, Area, Backup, CallProxy, Configure, Device, EntityManager, EventsService, FetchAPI, FetchInternals, Floor, HassDiagnosticsService, HassFeatureService, IDByExtension, Label, ReferenceService, Registry, WebsocketAPI, Zone, } from "./services/index.mjs";
|
|
3
3
|
export const LIB_HASS = CreateLibrary({
|
|
4
4
|
configuration: {
|
|
5
5
|
/**
|
|
@@ -115,6 +115,7 @@ export const LIB_HASS = CreateLibrary({
|
|
|
115
115
|
// no internal dependency ones first
|
|
116
116
|
priorityInit: ["internals", "fetch", "socket"],
|
|
117
117
|
services: {
|
|
118
|
+
addon: AddonService,
|
|
118
119
|
/**
|
|
119
120
|
* home assistant areas
|
|
120
121
|
*/
|
package/dist/hass.module.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hass.module.mjs","sourceRoot":"","sources":["../src/hass.module.mts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hass.module.mjs","sourceRoot":"","sources":["../src/hass.module.mts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface AddonDetails {
|
|
2
|
+
name: string;
|
|
3
|
+
slug: string;
|
|
4
|
+
description: string;
|
|
5
|
+
advanced: boolean;
|
|
6
|
+
stage: string;
|
|
7
|
+
version: string;
|
|
8
|
+
version_latest: string;
|
|
9
|
+
update_available: boolean;
|
|
10
|
+
available: boolean;
|
|
11
|
+
detached: boolean;
|
|
12
|
+
homeassistant: string;
|
|
13
|
+
state: "started" | "stopped" | "error";
|
|
14
|
+
repository: string;
|
|
15
|
+
build: boolean;
|
|
16
|
+
url: string;
|
|
17
|
+
icon: boolean;
|
|
18
|
+
logo: boolean;
|
|
19
|
+
system_managed: boolean;
|
|
20
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addon.mjs","sourceRoot":"","sources":["../../src/helpers/addon.mts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const SUPPORTED_COUNTRIES: readonly ["AD", "AE", "AF", "AG", "AI", "AL", "AM", "AO", "AQ", "AR", "AS", "AT", "AU", "AW", "AX", "AZ", "BA", "BB", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BL", "BM", "BN", "BO", "BQ", "BR", "BS", "BT", "BV", "BW", "BY", "BZ", "CA", "CC", "CD", "CF", "CG", "CH", "CI", "CK", "CL", "CM", "CN", "CO", "CR", "CU", "CV", "CW", "CX", "CY", "CZ", "DE", "DJ", "DK", "DM", "DO", "DZ", "EC", "EE", "EG", "EH", "ER", "ES", "ET", "FI", "FJ", "FK", "FM", "FO", "FR", "GA", "GB", "GD", "GE", "GF", "GG", "GH", "GI", "GL", "GM", "GN", "GP", "GQ", "GR", "GS", "GT", "GU", "GW", "GY", "HK", "HM", "HN", "HR", "HT", "HU", "ID", "IE", "IL", "IM", "IN", "IO", "IQ", "IR", "IS", "IT", "JE", "JM", "JO", "JP", "KE", "KG", "KH", "KI", "KM", "KN", "KP", "KR", "KW", "KY", "KZ", "LA", "LB", "LC", "LI", "LK", "LR", "LS", "LT", "LU", "LV", "LY", "MA", "MC", "MD", "ME", "MF", "MG", "MH", "MK", "ML", "MM", "MN", "MO", "MP", "MQ", "MR", "MS", "MT", "MU", "MV", "MW", "MX", "MY", "MZ", "NA", "NC", "NE", "NF", "NG", "NI", "NL", "NO", "NP", "NR", "NU", "NZ", "OM", "PA", "PE", "PF", "PG", "PH", "PK", "PL", "PM", "PN", "PR", "PS", "PT", "PW", "PY", "QA", "RE", "RO", "RS", "RU", "RW", "SA", "SB", "SC", "SD", "SE", "SG", "SH", "SI", "SJ", "SK", "SL", "SM", "SN", "SO", "SR", "SS", "ST", "SV", "SX", "SY", "SZ", "TC", "TD", "TF", "TG", "TH", "TJ", "TK", "TL", "TM", "TN", "TO", "TR", "TT", "TV", "TW", "TZ", "UA", "UG", "UM", "US", "UY", "UZ", "VA", "VC", "VE", "VG", "VI", "VN", "VU", "WF", "WS", "YE", "YT", "ZA", "ZM", "ZW"];
|
|
2
|
+
export type SupportedCountries = (typeof SUPPORTED_COUNTRIES)[number];
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
// This is duplicated from a generated file from home assistant core
|
|
2
|
+
// Will only modify this list to match what HA supports
|
|
3
|
+
export const SUPPORTED_COUNTRIES = [
|
|
4
|
+
"AD",
|
|
5
|
+
"AE",
|
|
6
|
+
"AF",
|
|
7
|
+
"AG",
|
|
8
|
+
"AI",
|
|
9
|
+
"AL",
|
|
10
|
+
"AM",
|
|
11
|
+
"AO",
|
|
12
|
+
"AQ",
|
|
13
|
+
"AR",
|
|
14
|
+
"AS",
|
|
15
|
+
"AT",
|
|
16
|
+
"AU",
|
|
17
|
+
"AW",
|
|
18
|
+
"AX",
|
|
19
|
+
"AZ",
|
|
20
|
+
"BA",
|
|
21
|
+
"BB",
|
|
22
|
+
"BD",
|
|
23
|
+
"BE",
|
|
24
|
+
"BF",
|
|
25
|
+
"BG",
|
|
26
|
+
"BH",
|
|
27
|
+
"BI",
|
|
28
|
+
"BJ",
|
|
29
|
+
"BL",
|
|
30
|
+
"BM",
|
|
31
|
+
"BN",
|
|
32
|
+
"BO",
|
|
33
|
+
"BQ",
|
|
34
|
+
"BR",
|
|
35
|
+
"BS",
|
|
36
|
+
"BT",
|
|
37
|
+
"BV",
|
|
38
|
+
"BW",
|
|
39
|
+
"BY",
|
|
40
|
+
"BZ",
|
|
41
|
+
"CA",
|
|
42
|
+
"CC",
|
|
43
|
+
"CD",
|
|
44
|
+
"CF",
|
|
45
|
+
"CG",
|
|
46
|
+
"CH",
|
|
47
|
+
"CI",
|
|
48
|
+
"CK",
|
|
49
|
+
"CL",
|
|
50
|
+
"CM",
|
|
51
|
+
"CN",
|
|
52
|
+
"CO",
|
|
53
|
+
"CR",
|
|
54
|
+
"CU",
|
|
55
|
+
"CV",
|
|
56
|
+
"CW",
|
|
57
|
+
"CX",
|
|
58
|
+
"CY",
|
|
59
|
+
"CZ",
|
|
60
|
+
"DE",
|
|
61
|
+
"DJ",
|
|
62
|
+
"DK",
|
|
63
|
+
"DM",
|
|
64
|
+
"DO",
|
|
65
|
+
"DZ",
|
|
66
|
+
"EC",
|
|
67
|
+
"EE",
|
|
68
|
+
"EG",
|
|
69
|
+
"EH",
|
|
70
|
+
"ER",
|
|
71
|
+
"ES",
|
|
72
|
+
"ET",
|
|
73
|
+
"FI",
|
|
74
|
+
"FJ",
|
|
75
|
+
"FK",
|
|
76
|
+
"FM",
|
|
77
|
+
"FO",
|
|
78
|
+
"FR",
|
|
79
|
+
"GA",
|
|
80
|
+
"GB",
|
|
81
|
+
"GD",
|
|
82
|
+
"GE",
|
|
83
|
+
"GF",
|
|
84
|
+
"GG",
|
|
85
|
+
"GH",
|
|
86
|
+
"GI",
|
|
87
|
+
"GL",
|
|
88
|
+
"GM",
|
|
89
|
+
"GN",
|
|
90
|
+
"GP",
|
|
91
|
+
"GQ",
|
|
92
|
+
"GR",
|
|
93
|
+
"GS",
|
|
94
|
+
"GT",
|
|
95
|
+
"GU",
|
|
96
|
+
"GW",
|
|
97
|
+
"GY",
|
|
98
|
+
"HK",
|
|
99
|
+
"HM",
|
|
100
|
+
"HN",
|
|
101
|
+
"HR",
|
|
102
|
+
"HT",
|
|
103
|
+
"HU",
|
|
104
|
+
"ID",
|
|
105
|
+
"IE",
|
|
106
|
+
"IL",
|
|
107
|
+
"IM",
|
|
108
|
+
"IN",
|
|
109
|
+
"IO",
|
|
110
|
+
"IQ",
|
|
111
|
+
"IR",
|
|
112
|
+
"IS",
|
|
113
|
+
"IT",
|
|
114
|
+
"JE",
|
|
115
|
+
"JM",
|
|
116
|
+
"JO",
|
|
117
|
+
"JP",
|
|
118
|
+
"KE",
|
|
119
|
+
"KG",
|
|
120
|
+
"KH",
|
|
121
|
+
"KI",
|
|
122
|
+
"KM",
|
|
123
|
+
"KN",
|
|
124
|
+
"KP",
|
|
125
|
+
"KR",
|
|
126
|
+
"KW",
|
|
127
|
+
"KY",
|
|
128
|
+
"KZ",
|
|
129
|
+
"LA",
|
|
130
|
+
"LB",
|
|
131
|
+
"LC",
|
|
132
|
+
"LI",
|
|
133
|
+
"LK",
|
|
134
|
+
"LR",
|
|
135
|
+
"LS",
|
|
136
|
+
"LT",
|
|
137
|
+
"LU",
|
|
138
|
+
"LV",
|
|
139
|
+
"LY",
|
|
140
|
+
"MA",
|
|
141
|
+
"MC",
|
|
142
|
+
"MD",
|
|
143
|
+
"ME",
|
|
144
|
+
"MF",
|
|
145
|
+
"MG",
|
|
146
|
+
"MH",
|
|
147
|
+
"MK",
|
|
148
|
+
"ML",
|
|
149
|
+
"MM",
|
|
150
|
+
"MN",
|
|
151
|
+
"MO",
|
|
152
|
+
"MP",
|
|
153
|
+
"MQ",
|
|
154
|
+
"MR",
|
|
155
|
+
"MS",
|
|
156
|
+
"MT",
|
|
157
|
+
"MU",
|
|
158
|
+
"MV",
|
|
159
|
+
"MW",
|
|
160
|
+
"MX",
|
|
161
|
+
"MY",
|
|
162
|
+
"MZ",
|
|
163
|
+
"NA",
|
|
164
|
+
"NC",
|
|
165
|
+
"NE",
|
|
166
|
+
"NF",
|
|
167
|
+
"NG",
|
|
168
|
+
"NI",
|
|
169
|
+
"NL",
|
|
170
|
+
"NO",
|
|
171
|
+
"NP",
|
|
172
|
+
"NR",
|
|
173
|
+
"NU",
|
|
174
|
+
"NZ",
|
|
175
|
+
"OM",
|
|
176
|
+
"PA",
|
|
177
|
+
"PE",
|
|
178
|
+
"PF",
|
|
179
|
+
"PG",
|
|
180
|
+
"PH",
|
|
181
|
+
"PK",
|
|
182
|
+
"PL",
|
|
183
|
+
"PM",
|
|
184
|
+
"PN",
|
|
185
|
+
"PR",
|
|
186
|
+
"PS",
|
|
187
|
+
"PT",
|
|
188
|
+
"PW",
|
|
189
|
+
"PY",
|
|
190
|
+
"QA",
|
|
191
|
+
"RE",
|
|
192
|
+
"RO",
|
|
193
|
+
"RS",
|
|
194
|
+
"RU",
|
|
195
|
+
"RW",
|
|
196
|
+
"SA",
|
|
197
|
+
"SB",
|
|
198
|
+
"SC",
|
|
199
|
+
"SD",
|
|
200
|
+
"SE",
|
|
201
|
+
"SG",
|
|
202
|
+
"SH",
|
|
203
|
+
"SI",
|
|
204
|
+
"SJ",
|
|
205
|
+
"SK",
|
|
206
|
+
"SL",
|
|
207
|
+
"SM",
|
|
208
|
+
"SN",
|
|
209
|
+
"SO",
|
|
210
|
+
"SR",
|
|
211
|
+
"SS",
|
|
212
|
+
"ST",
|
|
213
|
+
"SV",
|
|
214
|
+
"SX",
|
|
215
|
+
"SY",
|
|
216
|
+
"SZ",
|
|
217
|
+
"TC",
|
|
218
|
+
"TD",
|
|
219
|
+
"TF",
|
|
220
|
+
"TG",
|
|
221
|
+
"TH",
|
|
222
|
+
"TJ",
|
|
223
|
+
"TK",
|
|
224
|
+
"TL",
|
|
225
|
+
"TM",
|
|
226
|
+
"TN",
|
|
227
|
+
"TO",
|
|
228
|
+
"TR",
|
|
229
|
+
"TT",
|
|
230
|
+
"TV",
|
|
231
|
+
"TW",
|
|
232
|
+
"TZ",
|
|
233
|
+
"UA",
|
|
234
|
+
"UG",
|
|
235
|
+
"UM",
|
|
236
|
+
"US",
|
|
237
|
+
"UY",
|
|
238
|
+
"UZ",
|
|
239
|
+
"VA",
|
|
240
|
+
"VC",
|
|
241
|
+
"VE",
|
|
242
|
+
"VG",
|
|
243
|
+
"VI",
|
|
244
|
+
"VN",
|
|
245
|
+
"VU",
|
|
246
|
+
"WF",
|
|
247
|
+
"WS",
|
|
248
|
+
"YE",
|
|
249
|
+
"YT",
|
|
250
|
+
"ZA",
|
|
251
|
+
"ZM",
|
|
252
|
+
"ZW",
|
|
253
|
+
];
|
|
254
|
+
//# sourceMappingURL=countries.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"countries.mjs","sourceRoot":"","sources":["../../src/helpers/countries.mts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,uDAAuD;AAEvD,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;CACI,CAAC"}
|
package/dist/helpers/index.d.mts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
export * from "./addon.mts";
|
|
1
2
|
export * from "./backup.mts";
|
|
2
3
|
export * from "./constants.mts";
|
|
4
|
+
export * from "./countries.mts";
|
|
3
5
|
export * from "./device.mts";
|
|
4
6
|
export * from "./entity-state.mts";
|
|
5
7
|
export * from "./features.mts";
|
|
@@ -7,6 +9,7 @@ export * from "./fetch.mts";
|
|
|
7
9
|
export * from "./fetch/index.mts";
|
|
8
10
|
export * from "./id-by.mts";
|
|
9
11
|
export * from "./interfaces.mts";
|
|
12
|
+
export * from "./languages.mts";
|
|
10
13
|
export * from "./notify.mts";
|
|
11
14
|
export * from "./registry.mts";
|
|
12
15
|
export * from "./supported-features.mts";
|
package/dist/helpers/index.mjs
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
export * from "./addon.mjs";
|
|
1
2
|
export * from "./backup.mjs";
|
|
2
3
|
export * from "./constants.mjs";
|
|
4
|
+
export * from "./countries.mjs";
|
|
3
5
|
export * from "./device.mjs";
|
|
4
6
|
export * from "./entity-state.mjs";
|
|
5
7
|
export * from "./features.mjs";
|
|
@@ -7,6 +9,7 @@ export * from "./fetch.mjs";
|
|
|
7
9
|
export * from "./fetch/index.mjs";
|
|
8
10
|
export * from "./id-by.mjs";
|
|
9
11
|
export * from "./interfaces.mjs";
|
|
12
|
+
export * from "./languages.mjs";
|
|
10
13
|
export * from "./notify.mjs";
|
|
11
14
|
export * from "./registry.mjs";
|
|
12
15
|
export * from "./supported-features.mjs";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/helpers/index.mts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/helpers/index.mts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC"}
|
|
@@ -2,6 +2,7 @@ import type { RemoveCallback, TBlackHole } from "@digital-alchemy/core";
|
|
|
2
2
|
import type EventEmitter from "events";
|
|
3
3
|
import type { EmptyObject } from "type-fest";
|
|
4
4
|
import type WS from "ws";
|
|
5
|
+
import type { AddonDetails } from "../index.mts";
|
|
5
6
|
import type { ALL_DOMAINS, ANY_ENTITY, HassUniqueIdMapping, iCallService, PICK_ENTITY, PICK_FROM_AREA, PICK_FROM_DEVICE, PICK_FROM_FLOOR, PICK_FROM_LABEL, PICK_FROM_PLATFORM, TAreaId, TDeviceId, TFloorId, TLabelId, TPlatformId, TRawDomains, TRawEntityIds, TUniqueId } from "../user.mts";
|
|
6
7
|
import type { BackupResponse, HomeAssistantBackup } from "./backup.mts";
|
|
7
8
|
import type { DeviceDetails } from "./device.mts";
|
|
@@ -10,6 +11,9 @@ import type { AreaCreate, AreaDetails, ConfigEntry, HassConfig, HassServiceDTO }
|
|
|
10
11
|
import type { EditAliasOptions, EditLabelOptions, EntityRegistryItem, FloorCreate, FloorDetails, LabelDefinition, LabelOptions, ManifestItem, ToggleExpose, UpdateCoreOptions, ZoneDetails, ZoneOptions } from "./registry.mts";
|
|
11
12
|
import type { ALL_SERVICE_DOMAINS, ENTITY_STATE } from "./utility.mts";
|
|
12
13
|
import type { EntityHistoryDTO, EntityHistoryResult, OnHassEventOptions, SocketSubscribeOptions } from "./websocket.mts";
|
|
14
|
+
export type HassAddonService = {
|
|
15
|
+
list: () => Promise<AddonDetails[]>;
|
|
16
|
+
};
|
|
13
17
|
export type HassAreaService = {
|
|
14
18
|
apply: (area: TAreaId, entities: ANY_ENTITY[]) => Promise<{
|
|
15
19
|
updated: ANY_ENTITY[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.mjs","sourceRoot":"","sources":["../../src/helpers/interfaces.mts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"interfaces.mjs","sourceRoot":"","sources":["../../src/helpers/interfaces.mts"],"names":[],"mappings":"AAwMA,wDAAwD;AACxD,MAAM,CAAN,IAAY,wBAMX;AAND,WAAY,wBAAwB;IAClC,6EAAW,CAAA;IACX,mFAAc,CAAA;IACd,iFAAa,CAAA;IACb,6EAAW,CAAA;IACX,6EAAW,CAAA;AACb,CAAC,EANW,wBAAwB,KAAxB,wBAAwB,QAMnC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
export const SUPPORTED_LANGUAGES = [
|
|
2
|
+
"af",
|
|
3
|
+
"ar",
|
|
4
|
+
"bg",
|
|
5
|
+
"bn",
|
|
6
|
+
"bs",
|
|
7
|
+
"ca",
|
|
8
|
+
"cs",
|
|
9
|
+
"cy",
|
|
10
|
+
"da",
|
|
11
|
+
"de",
|
|
12
|
+
"el",
|
|
13
|
+
"en",
|
|
14
|
+
"en-GB",
|
|
15
|
+
"eo",
|
|
16
|
+
"es",
|
|
17
|
+
"es-419",
|
|
18
|
+
"et",
|
|
19
|
+
"eu",
|
|
20
|
+
"fa",
|
|
21
|
+
"fi",
|
|
22
|
+
"fr",
|
|
23
|
+
"fy",
|
|
24
|
+
"ga",
|
|
25
|
+
"gl",
|
|
26
|
+
"gsw",
|
|
27
|
+
"he",
|
|
28
|
+
"hi",
|
|
29
|
+
"hr",
|
|
30
|
+
"hu",
|
|
31
|
+
"hy",
|
|
32
|
+
"id",
|
|
33
|
+
"is",
|
|
34
|
+
"it",
|
|
35
|
+
"ja",
|
|
36
|
+
"ka",
|
|
37
|
+
"ko",
|
|
38
|
+
"lb",
|
|
39
|
+
"lt",
|
|
40
|
+
"lv",
|
|
41
|
+
"mk",
|
|
42
|
+
"ml",
|
|
43
|
+
"nb",
|
|
44
|
+
"nl",
|
|
45
|
+
"nn",
|
|
46
|
+
"pl",
|
|
47
|
+
"pt",
|
|
48
|
+
"pt-BR",
|
|
49
|
+
"ro",
|
|
50
|
+
"ru",
|
|
51
|
+
"sk",
|
|
52
|
+
"sl",
|
|
53
|
+
"sq",
|
|
54
|
+
"sr",
|
|
55
|
+
"sr-Latn",
|
|
56
|
+
"sv",
|
|
57
|
+
"ta",
|
|
58
|
+
"te",
|
|
59
|
+
"th",
|
|
60
|
+
"tr",
|
|
61
|
+
"uk",
|
|
62
|
+
"ur",
|
|
63
|
+
"vi",
|
|
64
|
+
"zh-Hans",
|
|
65
|
+
"zh-Hant",
|
|
66
|
+
];
|
|
67
|
+
//# sourceMappingURL=languages.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"languages.mjs","sourceRoot":"","sources":["../../src/helpers/languages.mts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,OAAO;IACP,IAAI;IACJ,IAAI;IACJ,QAAQ;IACR,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,OAAO;IACP,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,SAAS;IACT,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,SAAS;IACT,SAAS;CACV,CAAC"}
|
|
@@ -40,6 +40,7 @@ declare module "@digital-alchemy/core" {
|
|
|
40
40
|
* Make your own
|
|
41
41
|
*/
|
|
42
42
|
export declare const createTestRunner: () => import("@digital-alchemy/core").iTestRunner<{
|
|
43
|
+
addon: typeof import("../index.mts").AddonService;
|
|
43
44
|
area: typeof import("../index.mts").Area;
|
|
44
45
|
backup: typeof import("../index.mts").Backup;
|
|
45
46
|
call: typeof import("../index.mts").CallProxy;
|
|
@@ -116,6 +117,7 @@ export declare const createTestRunner: () => import("@digital-alchemy/core").iTe
|
|
|
116
117
|
};
|
|
117
118
|
}>;
|
|
118
119
|
export declare const hassTestRunner: import("@digital-alchemy/core").iTestRunner<{
|
|
120
|
+
addon: typeof import("../index.mts").AddonService;
|
|
119
121
|
area: typeof import("../index.mts").Area;
|
|
120
122
|
backup: typeof import("../index.mts").Backup;
|
|
121
123
|
call: typeof import("../index.mts").CallProxy;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export function AddonService({ hass, logger }) {
|
|
2
|
+
async function list() {
|
|
3
|
+
logger.trace({ name: "list" }, "fetching addon list");
|
|
4
|
+
return await hass.socket.sendMessage({
|
|
5
|
+
endpoint: "/addons",
|
|
6
|
+
method: "get",
|
|
7
|
+
type: "supervisor/api",
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
return {
|
|
11
|
+
list,
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=addon.service.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addon.service.mjs","sourceRoot":"","sources":["../../src/services/addon.service.mts"],"names":[],"mappings":"AAIA,MAAM,UAAU,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAkB;IAC3D,KAAK,UAAU,IAAI;QACjB,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,qBAAqB,CAAC,CAAC;QACtD,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAiB;YACnD,QAAQ,EAAE,SAAS;YACnB,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,gBAAgB;SACvB,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,IAAI;KACL,CAAC;AACJ,CAAC"}
|
package/dist/services/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/services/index.mts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.mjs","sourceRoot":"","sources":["../../src/services/index.mts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { hassTestRunner } from "../mock_assistant/index.mjs";
|
|
2
|
+
describe("Addon Service", () => {
|
|
3
|
+
afterEach(async () => {
|
|
4
|
+
await hassTestRunner.teardown();
|
|
5
|
+
vi.restoreAllMocks();
|
|
6
|
+
});
|
|
7
|
+
describe("list", () => {
|
|
8
|
+
it("should fetch addon list via supervisor API", async () => {
|
|
9
|
+
expect.assertions(2);
|
|
10
|
+
const mockAddons = [
|
|
11
|
+
{
|
|
12
|
+
advanced: false,
|
|
13
|
+
available: true,
|
|
14
|
+
build: false,
|
|
15
|
+
description: "A test addon",
|
|
16
|
+
detached: false,
|
|
17
|
+
homeassistant: "2024.1.0",
|
|
18
|
+
icon: true,
|
|
19
|
+
logo: false,
|
|
20
|
+
name: "Test Addon",
|
|
21
|
+
repository: "test",
|
|
22
|
+
slug: "test_addon",
|
|
23
|
+
stage: "stable",
|
|
24
|
+
state: "started",
|
|
25
|
+
system_managed: false,
|
|
26
|
+
update_available: false,
|
|
27
|
+
url: "http://test.local",
|
|
28
|
+
version: "1.0.0",
|
|
29
|
+
version_latest: "1.0.0",
|
|
30
|
+
},
|
|
31
|
+
];
|
|
32
|
+
await hassTestRunner.run(({ lifecycle, hass }) => {
|
|
33
|
+
const spy = vi.spyOn(hass.socket, "sendMessage").mockImplementation(async () => mockAddons);
|
|
34
|
+
lifecycle.onReady(async () => {
|
|
35
|
+
const result = await hass.addon.list();
|
|
36
|
+
expect(spy).toHaveBeenCalledWith({
|
|
37
|
+
endpoint: "/addons",
|
|
38
|
+
method: "get",
|
|
39
|
+
type: "supervisor/api",
|
|
40
|
+
});
|
|
41
|
+
expect(result).toEqual(mockAddons);
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
it("should return empty array when no addons are available", async () => {
|
|
46
|
+
expect.assertions(1);
|
|
47
|
+
await hassTestRunner.run(({ lifecycle, hass }) => {
|
|
48
|
+
vi.spyOn(hass.socket, "sendMessage").mockImplementation(async () => []);
|
|
49
|
+
lifecycle.onReady(async () => {
|
|
50
|
+
const result = await hass.addon.list();
|
|
51
|
+
expect(result).toEqual([]);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
//# sourceMappingURL=addon.spec.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addon.spec.mjs","sourceRoot":"","sources":["../../src/testing/addon.spec.mts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,cAAc,CAAC,QAAQ,EAAE,CAAC;QAChC,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;QACpB,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM,UAAU,GAAmB;gBACjC;oBACE,QAAQ,EAAE,KAAK;oBACf,SAAS,EAAE,IAAI;oBACf,KAAK,EAAE,KAAK;oBACZ,WAAW,EAAE,cAAc;oBAC3B,QAAQ,EAAE,KAAK;oBACf,aAAa,EAAE,UAAU;oBACzB,IAAI,EAAE,IAAI;oBACV,IAAI,EAAE,KAAK;oBACX,IAAI,EAAE,YAAY;oBAClB,UAAU,EAAE,MAAM;oBAClB,IAAI,EAAE,YAAY;oBAClB,KAAK,EAAE,QAAQ;oBACf,KAAK,EAAE,SAAS;oBAChB,cAAc,EAAE,KAAK;oBACrB,gBAAgB,EAAE,KAAK;oBACvB,GAAG,EAAE,mBAAmB;oBACxB,OAAO,EAAE,OAAO;oBAChB,cAAc,EAAE,OAAO;iBACxB;aACF,CAAC;YAEF,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE;gBAC/C,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC;gBAE5F,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;oBAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;oBACvC,MAAM,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC;wBAC/B,QAAQ,EAAE,SAAS;wBACnB,MAAM,EAAE,KAAK;wBACb,IAAI,EAAE,gBAAgB;qBACvB,CAAC,CAAC;oBACH,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBACrC,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;YACtE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACrB,MAAM,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE;gBAC/C,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,kBAAkB,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;gBAExE,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;oBAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;oBACvC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBAC7B,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"name": "@digital-alchemy/hass",
|
|
4
4
|
"repository": "https://github.com/Digital-Alchemy-TS/hass",
|
|
5
5
|
"homepage": "https://docs.digital-alchemy.app",
|
|
6
|
-
"version": "25.10.
|
|
6
|
+
"version": "25.10.27-beta.0",
|
|
7
7
|
"description": "Typescript APIs for Home Assistant. Includes rest & websocket bindings",
|
|
8
8
|
"scripts": {
|
|
9
9
|
"build": "rm -rf dist/; tsc",
|
|
@@ -58,8 +58,8 @@
|
|
|
58
58
|
},
|
|
59
59
|
"license": "MIT",
|
|
60
60
|
"devDependencies": {
|
|
61
|
-
"@cspell/eslint-plugin": "^9.2.
|
|
62
|
-
"@digital-alchemy/core": "^25.
|
|
61
|
+
"@cspell/eslint-plugin": "^9.2.2",
|
|
62
|
+
"@digital-alchemy/core": "^25.10.26",
|
|
63
63
|
"@digital-alchemy/synapse": "^25.8.21",
|
|
64
64
|
"@digital-alchemy/type-writer": "^25.10.12",
|
|
65
65
|
"@eslint/compat": "^1.4.0",
|
|
@@ -67,13 +67,13 @@
|
|
|
67
67
|
"@eslint/js": "^9.38.0",
|
|
68
68
|
"@faker-js/faker": "^10.1.0",
|
|
69
69
|
"@types/js-yaml": "^4.0.9",
|
|
70
|
-
"@types/node": "^24.
|
|
70
|
+
"@types/node": "^24.9.1",
|
|
71
71
|
"@types/node-cron": "^3.0.11",
|
|
72
72
|
"@types/semver": "^7.7.1",
|
|
73
73
|
"@types/ws": "^8.18.1",
|
|
74
|
-
"@typescript-eslint/eslint-plugin": "8.46.
|
|
75
|
-
"@typescript-eslint/parser": "8.46.
|
|
76
|
-
"@vitest/coverage-v8": "^
|
|
74
|
+
"@typescript-eslint/eslint-plugin": "8.46.2",
|
|
75
|
+
"@typescript-eslint/parser": "8.46.2",
|
|
76
|
+
"@vitest/coverage-v8": "^4.0.3",
|
|
77
77
|
"dayjs": "^1.11.18",
|
|
78
78
|
"dotenv": "^17.2.3",
|
|
79
79
|
"eslint": "9.38.0",
|
|
@@ -86,14 +86,14 @@
|
|
|
86
86
|
"eslint-plugin-simple-import-sort": "^12.1.1",
|
|
87
87
|
"eslint-plugin-sonarjs": "^3.0.5",
|
|
88
88
|
"eslint-plugin-sort-keys-fix": "^1.1.2",
|
|
89
|
-
"eslint-plugin-unicorn": "^
|
|
89
|
+
"eslint-plugin-unicorn": "^62.0.0",
|
|
90
90
|
"node-cron": "^4.2.1",
|
|
91
91
|
"prettier": "^3.6.2",
|
|
92
92
|
"semver": "^7.7.3",
|
|
93
93
|
"tsx": "^4.20.6",
|
|
94
94
|
"typescript": "^5.9.3",
|
|
95
95
|
"uuid": "^13.0.0",
|
|
96
|
-
"vitest": "^
|
|
96
|
+
"vitest": "^4.0.3",
|
|
97
97
|
"ws": "^8.18.3"
|
|
98
98
|
},
|
|
99
99
|
"peerDependencies": {
|
package/src/hass.module.mts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CreateLibrary } from "@digital-alchemy/core";
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
|
+
AddonService,
|
|
4
5
|
Area,
|
|
5
6
|
Backup,
|
|
6
7
|
CallProxy,
|
|
@@ -150,6 +151,8 @@ export const LIB_HASS = CreateLibrary({
|
|
|
150
151
|
// no internal dependency ones first
|
|
151
152
|
priorityInit: ["internals", "fetch", "socket"],
|
|
152
153
|
services: {
|
|
154
|
+
addon: AddonService,
|
|
155
|
+
|
|
153
156
|
/**
|
|
154
157
|
* home assistant areas
|
|
155
158
|
*/
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface AddonDetails {
|
|
2
|
+
name: string;
|
|
3
|
+
slug: string;
|
|
4
|
+
description: string;
|
|
5
|
+
advanced: boolean;
|
|
6
|
+
stage: string;
|
|
7
|
+
version: string;
|
|
8
|
+
version_latest: string;
|
|
9
|
+
update_available: boolean;
|
|
10
|
+
available: boolean;
|
|
11
|
+
detached: boolean;
|
|
12
|
+
homeassistant: string;
|
|
13
|
+
state: "started" | "stopped" | "error";
|
|
14
|
+
repository: string;
|
|
15
|
+
build: boolean;
|
|
16
|
+
url: string;
|
|
17
|
+
icon: boolean;
|
|
18
|
+
logo: boolean;
|
|
19
|
+
system_managed: boolean;
|
|
20
|
+
}
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
// This is duplicated from a generated file from home assistant core
|
|
2
|
+
// Will only modify this list to match what HA supports
|
|
3
|
+
|
|
4
|
+
export const SUPPORTED_COUNTRIES = [
|
|
5
|
+
"AD",
|
|
6
|
+
"AE",
|
|
7
|
+
"AF",
|
|
8
|
+
"AG",
|
|
9
|
+
"AI",
|
|
10
|
+
"AL",
|
|
11
|
+
"AM",
|
|
12
|
+
"AO",
|
|
13
|
+
"AQ",
|
|
14
|
+
"AR",
|
|
15
|
+
"AS",
|
|
16
|
+
"AT",
|
|
17
|
+
"AU",
|
|
18
|
+
"AW",
|
|
19
|
+
"AX",
|
|
20
|
+
"AZ",
|
|
21
|
+
"BA",
|
|
22
|
+
"BB",
|
|
23
|
+
"BD",
|
|
24
|
+
"BE",
|
|
25
|
+
"BF",
|
|
26
|
+
"BG",
|
|
27
|
+
"BH",
|
|
28
|
+
"BI",
|
|
29
|
+
"BJ",
|
|
30
|
+
"BL",
|
|
31
|
+
"BM",
|
|
32
|
+
"BN",
|
|
33
|
+
"BO",
|
|
34
|
+
"BQ",
|
|
35
|
+
"BR",
|
|
36
|
+
"BS",
|
|
37
|
+
"BT",
|
|
38
|
+
"BV",
|
|
39
|
+
"BW",
|
|
40
|
+
"BY",
|
|
41
|
+
"BZ",
|
|
42
|
+
"CA",
|
|
43
|
+
"CC",
|
|
44
|
+
"CD",
|
|
45
|
+
"CF",
|
|
46
|
+
"CG",
|
|
47
|
+
"CH",
|
|
48
|
+
"CI",
|
|
49
|
+
"CK",
|
|
50
|
+
"CL",
|
|
51
|
+
"CM",
|
|
52
|
+
"CN",
|
|
53
|
+
"CO",
|
|
54
|
+
"CR",
|
|
55
|
+
"CU",
|
|
56
|
+
"CV",
|
|
57
|
+
"CW",
|
|
58
|
+
"CX",
|
|
59
|
+
"CY",
|
|
60
|
+
"CZ",
|
|
61
|
+
"DE",
|
|
62
|
+
"DJ",
|
|
63
|
+
"DK",
|
|
64
|
+
"DM",
|
|
65
|
+
"DO",
|
|
66
|
+
"DZ",
|
|
67
|
+
"EC",
|
|
68
|
+
"EE",
|
|
69
|
+
"EG",
|
|
70
|
+
"EH",
|
|
71
|
+
"ER",
|
|
72
|
+
"ES",
|
|
73
|
+
"ET",
|
|
74
|
+
"FI",
|
|
75
|
+
"FJ",
|
|
76
|
+
"FK",
|
|
77
|
+
"FM",
|
|
78
|
+
"FO",
|
|
79
|
+
"FR",
|
|
80
|
+
"GA",
|
|
81
|
+
"GB",
|
|
82
|
+
"GD",
|
|
83
|
+
"GE",
|
|
84
|
+
"GF",
|
|
85
|
+
"GG",
|
|
86
|
+
"GH",
|
|
87
|
+
"GI",
|
|
88
|
+
"GL",
|
|
89
|
+
"GM",
|
|
90
|
+
"GN",
|
|
91
|
+
"GP",
|
|
92
|
+
"GQ",
|
|
93
|
+
"GR",
|
|
94
|
+
"GS",
|
|
95
|
+
"GT",
|
|
96
|
+
"GU",
|
|
97
|
+
"GW",
|
|
98
|
+
"GY",
|
|
99
|
+
"HK",
|
|
100
|
+
"HM",
|
|
101
|
+
"HN",
|
|
102
|
+
"HR",
|
|
103
|
+
"HT",
|
|
104
|
+
"HU",
|
|
105
|
+
"ID",
|
|
106
|
+
"IE",
|
|
107
|
+
"IL",
|
|
108
|
+
"IM",
|
|
109
|
+
"IN",
|
|
110
|
+
"IO",
|
|
111
|
+
"IQ",
|
|
112
|
+
"IR",
|
|
113
|
+
"IS",
|
|
114
|
+
"IT",
|
|
115
|
+
"JE",
|
|
116
|
+
"JM",
|
|
117
|
+
"JO",
|
|
118
|
+
"JP",
|
|
119
|
+
"KE",
|
|
120
|
+
"KG",
|
|
121
|
+
"KH",
|
|
122
|
+
"KI",
|
|
123
|
+
"KM",
|
|
124
|
+
"KN",
|
|
125
|
+
"KP",
|
|
126
|
+
"KR",
|
|
127
|
+
"KW",
|
|
128
|
+
"KY",
|
|
129
|
+
"KZ",
|
|
130
|
+
"LA",
|
|
131
|
+
"LB",
|
|
132
|
+
"LC",
|
|
133
|
+
"LI",
|
|
134
|
+
"LK",
|
|
135
|
+
"LR",
|
|
136
|
+
"LS",
|
|
137
|
+
"LT",
|
|
138
|
+
"LU",
|
|
139
|
+
"LV",
|
|
140
|
+
"LY",
|
|
141
|
+
"MA",
|
|
142
|
+
"MC",
|
|
143
|
+
"MD",
|
|
144
|
+
"ME",
|
|
145
|
+
"MF",
|
|
146
|
+
"MG",
|
|
147
|
+
"MH",
|
|
148
|
+
"MK",
|
|
149
|
+
"ML",
|
|
150
|
+
"MM",
|
|
151
|
+
"MN",
|
|
152
|
+
"MO",
|
|
153
|
+
"MP",
|
|
154
|
+
"MQ",
|
|
155
|
+
"MR",
|
|
156
|
+
"MS",
|
|
157
|
+
"MT",
|
|
158
|
+
"MU",
|
|
159
|
+
"MV",
|
|
160
|
+
"MW",
|
|
161
|
+
"MX",
|
|
162
|
+
"MY",
|
|
163
|
+
"MZ",
|
|
164
|
+
"NA",
|
|
165
|
+
"NC",
|
|
166
|
+
"NE",
|
|
167
|
+
"NF",
|
|
168
|
+
"NG",
|
|
169
|
+
"NI",
|
|
170
|
+
"NL",
|
|
171
|
+
"NO",
|
|
172
|
+
"NP",
|
|
173
|
+
"NR",
|
|
174
|
+
"NU",
|
|
175
|
+
"NZ",
|
|
176
|
+
"OM",
|
|
177
|
+
"PA",
|
|
178
|
+
"PE",
|
|
179
|
+
"PF",
|
|
180
|
+
"PG",
|
|
181
|
+
"PH",
|
|
182
|
+
"PK",
|
|
183
|
+
"PL",
|
|
184
|
+
"PM",
|
|
185
|
+
"PN",
|
|
186
|
+
"PR",
|
|
187
|
+
"PS",
|
|
188
|
+
"PT",
|
|
189
|
+
"PW",
|
|
190
|
+
"PY",
|
|
191
|
+
"QA",
|
|
192
|
+
"RE",
|
|
193
|
+
"RO",
|
|
194
|
+
"RS",
|
|
195
|
+
"RU",
|
|
196
|
+
"RW",
|
|
197
|
+
"SA",
|
|
198
|
+
"SB",
|
|
199
|
+
"SC",
|
|
200
|
+
"SD",
|
|
201
|
+
"SE",
|
|
202
|
+
"SG",
|
|
203
|
+
"SH",
|
|
204
|
+
"SI",
|
|
205
|
+
"SJ",
|
|
206
|
+
"SK",
|
|
207
|
+
"SL",
|
|
208
|
+
"SM",
|
|
209
|
+
"SN",
|
|
210
|
+
"SO",
|
|
211
|
+
"SR",
|
|
212
|
+
"SS",
|
|
213
|
+
"ST",
|
|
214
|
+
"SV",
|
|
215
|
+
"SX",
|
|
216
|
+
"SY",
|
|
217
|
+
"SZ",
|
|
218
|
+
"TC",
|
|
219
|
+
"TD",
|
|
220
|
+
"TF",
|
|
221
|
+
"TG",
|
|
222
|
+
"TH",
|
|
223
|
+
"TJ",
|
|
224
|
+
"TK",
|
|
225
|
+
"TL",
|
|
226
|
+
"TM",
|
|
227
|
+
"TN",
|
|
228
|
+
"TO",
|
|
229
|
+
"TR",
|
|
230
|
+
"TT",
|
|
231
|
+
"TV",
|
|
232
|
+
"TW",
|
|
233
|
+
"TZ",
|
|
234
|
+
"UA",
|
|
235
|
+
"UG",
|
|
236
|
+
"UM",
|
|
237
|
+
"US",
|
|
238
|
+
"UY",
|
|
239
|
+
"UZ",
|
|
240
|
+
"VA",
|
|
241
|
+
"VC",
|
|
242
|
+
"VE",
|
|
243
|
+
"VG",
|
|
244
|
+
"VI",
|
|
245
|
+
"VN",
|
|
246
|
+
"VU",
|
|
247
|
+
"WF",
|
|
248
|
+
"WS",
|
|
249
|
+
"YE",
|
|
250
|
+
"YT",
|
|
251
|
+
"ZA",
|
|
252
|
+
"ZM",
|
|
253
|
+
"ZW",
|
|
254
|
+
] as const;
|
|
255
|
+
export type SupportedCountries = (typeof SUPPORTED_COUNTRIES)[number];
|
package/src/helpers/index.mts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
export * from "./addon.mts";
|
|
1
2
|
export * from "./backup.mts";
|
|
2
3
|
export * from "./constants.mts";
|
|
4
|
+
export * from "./countries.mts";
|
|
3
5
|
export * from "./device.mts";
|
|
4
6
|
export * from "./entity-state.mts";
|
|
5
7
|
export * from "./features.mts";
|
|
@@ -7,6 +9,7 @@ export * from "./fetch.mts";
|
|
|
7
9
|
export * from "./fetch/index.mts";
|
|
8
10
|
export * from "./id-by.mts";
|
|
9
11
|
export * from "./interfaces.mts";
|
|
12
|
+
export * from "./languages.mts";
|
|
10
13
|
export * from "./notify.mts";
|
|
11
14
|
export * from "./registry.mts";
|
|
12
15
|
export * from "./supported-features.mts";
|
|
@@ -3,6 +3,7 @@ import type EventEmitter from "events";
|
|
|
3
3
|
import type { EmptyObject } from "type-fest";
|
|
4
4
|
import type WS from "ws";
|
|
5
5
|
|
|
6
|
+
import type { AddonDetails } from "../index.mts";
|
|
6
7
|
import type {
|
|
7
8
|
ALL_DOMAINS,
|
|
8
9
|
ANY_ENTITY,
|
|
@@ -49,6 +50,10 @@ import type {
|
|
|
49
50
|
SocketSubscribeOptions,
|
|
50
51
|
} from "./websocket.mts";
|
|
51
52
|
|
|
53
|
+
export type HassAddonService = {
|
|
54
|
+
list: () => Promise<AddonDetails[]>;
|
|
55
|
+
};
|
|
56
|
+
|
|
52
57
|
export type HassAreaService = {
|
|
53
58
|
apply: (
|
|
54
59
|
area: TAreaId,
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
export const SUPPORTED_LANGUAGES = [
|
|
2
|
+
"af",
|
|
3
|
+
"ar",
|
|
4
|
+
"bg",
|
|
5
|
+
"bn",
|
|
6
|
+
"bs",
|
|
7
|
+
"ca",
|
|
8
|
+
"cs",
|
|
9
|
+
"cy",
|
|
10
|
+
"da",
|
|
11
|
+
"de",
|
|
12
|
+
"el",
|
|
13
|
+
"en",
|
|
14
|
+
"en-GB",
|
|
15
|
+
"eo",
|
|
16
|
+
"es",
|
|
17
|
+
"es-419",
|
|
18
|
+
"et",
|
|
19
|
+
"eu",
|
|
20
|
+
"fa",
|
|
21
|
+
"fi",
|
|
22
|
+
"fr",
|
|
23
|
+
"fy",
|
|
24
|
+
"ga",
|
|
25
|
+
"gl",
|
|
26
|
+
"gsw",
|
|
27
|
+
"he",
|
|
28
|
+
"hi",
|
|
29
|
+
"hr",
|
|
30
|
+
"hu",
|
|
31
|
+
"hy",
|
|
32
|
+
"id",
|
|
33
|
+
"is",
|
|
34
|
+
"it",
|
|
35
|
+
"ja",
|
|
36
|
+
"ka",
|
|
37
|
+
"ko",
|
|
38
|
+
"lb",
|
|
39
|
+
"lt",
|
|
40
|
+
"lv",
|
|
41
|
+
"mk",
|
|
42
|
+
"ml",
|
|
43
|
+
"nb",
|
|
44
|
+
"nl",
|
|
45
|
+
"nn",
|
|
46
|
+
"pl",
|
|
47
|
+
"pt",
|
|
48
|
+
"pt-BR",
|
|
49
|
+
"ro",
|
|
50
|
+
"ru",
|
|
51
|
+
"sk",
|
|
52
|
+
"sl",
|
|
53
|
+
"sq",
|
|
54
|
+
"sr",
|
|
55
|
+
"sr-Latn",
|
|
56
|
+
"sv",
|
|
57
|
+
"ta",
|
|
58
|
+
"te",
|
|
59
|
+
"th",
|
|
60
|
+
"tr",
|
|
61
|
+
"uk",
|
|
62
|
+
"ur",
|
|
63
|
+
"vi",
|
|
64
|
+
"zh-Hans",
|
|
65
|
+
"zh-Hant",
|
|
66
|
+
];
|
|
67
|
+
export type SupportedLanguages = (typeof SUPPORTED_LANGUAGES)[number];
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { TServiceParams } from "@digital-alchemy/core";
|
|
2
|
+
|
|
3
|
+
import type { AddonDetails, HassAddonService } from "../index.mts";
|
|
4
|
+
|
|
5
|
+
export function AddonService({ hass, logger }: TServiceParams): HassAddonService {
|
|
6
|
+
async function list() {
|
|
7
|
+
logger.trace({ name: "list" }, "fetching addon list");
|
|
8
|
+
return await hass.socket.sendMessage<AddonDetails[]>({
|
|
9
|
+
endpoint: "/addons",
|
|
10
|
+
method: "get",
|
|
11
|
+
type: "supervisor/api",
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
return {
|
|
16
|
+
list,
|
|
17
|
+
};
|
|
18
|
+
}
|
package/src/services/index.mts
CHANGED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { AddonDetails } from "../helpers/index.mts";
|
|
2
|
+
import { hassTestRunner } from "../mock_assistant/index.mts";
|
|
3
|
+
|
|
4
|
+
describe("Addon Service", () => {
|
|
5
|
+
afterEach(async () => {
|
|
6
|
+
await hassTestRunner.teardown();
|
|
7
|
+
vi.restoreAllMocks();
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
describe("list", () => {
|
|
11
|
+
it("should fetch addon list via supervisor API", async () => {
|
|
12
|
+
expect.assertions(2);
|
|
13
|
+
const mockAddons: AddonDetails[] = [
|
|
14
|
+
{
|
|
15
|
+
advanced: false,
|
|
16
|
+
available: true,
|
|
17
|
+
build: false,
|
|
18
|
+
description: "A test addon",
|
|
19
|
+
detached: false,
|
|
20
|
+
homeassistant: "2024.1.0",
|
|
21
|
+
icon: true,
|
|
22
|
+
logo: false,
|
|
23
|
+
name: "Test Addon",
|
|
24
|
+
repository: "test",
|
|
25
|
+
slug: "test_addon",
|
|
26
|
+
stage: "stable",
|
|
27
|
+
state: "started",
|
|
28
|
+
system_managed: false,
|
|
29
|
+
update_available: false,
|
|
30
|
+
url: "http://test.local",
|
|
31
|
+
version: "1.0.0",
|
|
32
|
+
version_latest: "1.0.0",
|
|
33
|
+
},
|
|
34
|
+
];
|
|
35
|
+
|
|
36
|
+
await hassTestRunner.run(({ lifecycle, hass }) => {
|
|
37
|
+
const spy = vi.spyOn(hass.socket, "sendMessage").mockImplementation(async () => mockAddons);
|
|
38
|
+
|
|
39
|
+
lifecycle.onReady(async () => {
|
|
40
|
+
const result = await hass.addon.list();
|
|
41
|
+
expect(spy).toHaveBeenCalledWith({
|
|
42
|
+
endpoint: "/addons",
|
|
43
|
+
method: "get",
|
|
44
|
+
type: "supervisor/api",
|
|
45
|
+
});
|
|
46
|
+
expect(result).toEqual(mockAddons);
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
it("should return empty array when no addons are available", async () => {
|
|
52
|
+
expect.assertions(1);
|
|
53
|
+
await hassTestRunner.run(({ lifecycle, hass }) => {
|
|
54
|
+
vi.spyOn(hass.socket, "sendMessage").mockImplementation(async () => []);
|
|
55
|
+
|
|
56
|
+
lifecycle.onReady(async () => {
|
|
57
|
+
const result = await hass.addon.list();
|
|
58
|
+
expect(result).toEqual([]);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
});
|