homey-lib 2.45.1 → 2.45.3
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/assets/capability/capabilities/cooking_time.json +1 -0
- package/assets/capability/capabilities/target_power_mode.json +4 -4
- package/lib/App/index.js +25 -2
- package/package.json +1 -1
- package/webpack/index.js +1 -1
- package/.github/workflows/apply_locales.yml +0 -57
- package/.github/workflows/deploy.yml +0 -181
- package/.github/workflows/generate_locales.yml +0 -60
- package/.github/workflows/static.yml +0 -43
- package/.github/workflows/test.yml +0 -51
- package/.idea/misc.xml +0 -6
- package/.idea/modules.xml +0 -8
- package/.idea/node-homey-lib.iml +0 -12
- package/.idea/vcs.xml +0 -6
- package/test/fixtures/mock-app.js +0 -137
- package/test/validate-base-manifest.js +0 -685
- package/test/validate-capabilities.js +0 -109
- package/test/validate-driver-manifest.js +0 -835
- package/test/validate-files.js +0 -267
|
@@ -103,7 +103,7 @@
|
|
|
103
103
|
"es": "\"Homey\" significa que Homey controla la potencia objetivo del dispositivo. \"Automático\" significa que el dispositivo controla su propia potencia.",
|
|
104
104
|
"da": "\"Homey\" betyder, at Homey styrer enhedens måleffekt. \"Automatisk\" betyder, at enheden styrer sin egen effekt.",
|
|
105
105
|
"ru": "Режим «Homey» означает, что Homey управляет целевой мощностью устройства. Режим «Автоматический» означает, что устройство само управляет своей мощностью.",
|
|
106
|
-
"pl": "
|
|
106
|
+
"pl": "„Homey” oznacza, że Homey steruje mocą docelową urządzenia. „Automatyczny” oznacza, że urządzenie samodzielnie steruje mocą.",
|
|
107
107
|
"ko": "\"Homey\"는 Homey가 제품의 충전전력 제한을 제어한다는 의미예요. \"자동\"은 제품이 자체적으로 충전전력 제한을 제어한다는 의미이고요.",
|
|
108
108
|
"ar": "\"Homey\" يعني أن Homey يتحكم في الطاقة المستهدفة للجهاز. أما \"تلقائي\" يعني أن الجهاز يتحكم في طاقته بنفسه."
|
|
109
109
|
},
|
|
@@ -145,7 +145,7 @@
|
|
|
145
145
|
"es": "\"Homey\" significa que Homey controla la potencia objetivo del dispositivo. \"Automático\" significa que el dispositivo controla su propia potencia.",
|
|
146
146
|
"da": "\"Homey\" betyder, at Homey styrer enhedens måleffekt. \"Automatisk\" betyder, at enheden styrer sin egen effekt.",
|
|
147
147
|
"ru": "Режим «Homey» означает, что Homey управляет целевой мощностью устройства. Режим «Автоматический» означает, что устройство само управляет своей мощностью.",
|
|
148
|
-
"pl": "
|
|
148
|
+
"pl": "„Homey” oznacza, że Homey steruje mocą docelową urządzenia. „Automatyczny” oznacza, że urządzenie samodzielnie steruje mocą.",
|
|
149
149
|
"ko": "\"Homey\"는 Homey가 제품의 충전전력 제한을 제어한다는 의미예요. \"자동\"은 제품이 자체적으로 충전전력 제한을 제어한다는 의미이고요.",
|
|
150
150
|
"ar": "\"Homey\" يعني أن Homey يتحكم في الطاقة المستهدفة للجهاز. أما \"تلقائي\" يعني أن الجهاز يتحكم في طاقته بنفسه."
|
|
151
151
|
},
|
|
@@ -167,7 +167,7 @@
|
|
|
167
167
|
"de": "Zielleistungsmodus setzen auf",
|
|
168
168
|
"fr": "Définir le mode de puissance cible sur",
|
|
169
169
|
"it": "Imposta la modalità potenza target su",
|
|
170
|
-
"sv": "Ställ in måleffektläge
|
|
170
|
+
"sv": "Ställ in måleffektläge till",
|
|
171
171
|
"no": "Sett ønsket effekt-modus til",
|
|
172
172
|
"es": "Establecer el modo de potencia objetivo en",
|
|
173
173
|
"da": "Indstil måleffekttilstand til",
|
|
@@ -187,7 +187,7 @@
|
|
|
187
187
|
"es": "Si deseas controlar la potencia objetivo de este dispositivo a través de Homey, selecciona \"Homey\". Si, en cambio, prefieres que el dispositivo determine su propia potencia objetivo, selecciona \"Automático\".",
|
|
188
188
|
"da": "For at styre måleffekten for denne enhed via Homey skal du vælge \"Homey\". For at lade enheden bestemme sin egen måleffekt skal du vælge \"Automatisk\".",
|
|
189
189
|
"ru": "Чтобы управлять целевой мощностью этого устройства через Homey, выберите «Homey». Чтобы устройство само определяло целевую мощность, выберите режим «Автоматический».",
|
|
190
|
-
"pl": "Aby sterować mocą docelową tego urządzenia przez Homey, wybierz
|
|
190
|
+
"pl": "Aby sterować mocą docelową tego urządzenia przez Homey, wybierz „Homey”. Aby urządzenie samo określało moc docelową, wybierz „Automatyczny”.",
|
|
191
191
|
"ko": "이 제품의 충전전력 제한을 Homey를 통해 제어하려면 \"Homey\"를 선택하세요. 제품이 자체적으로 충전전력 제한을 결정할 수 있게 하려면 \"자동\"을 선택하세요.",
|
|
192
192
|
"ar": "للتحكم في الطاقة المستهدفة لهذا الجهاز عبر Homey، اختر \"Homey\". ولترك الجهاز يحدد الطاقة المستهدفة بنفسه، اختر \"تلقائي\"."
|
|
193
193
|
},
|
package/lib/App/index.js
CHANGED
|
@@ -371,9 +371,32 @@ class App {
|
|
|
371
371
|
// validate `appJson.drivers[].capabilitiesOptions`
|
|
372
372
|
if (driver.capabilitiesOptions) {
|
|
373
373
|
for (const [capabilityId, capabilityOptions] of Object.entries(driver.capabilitiesOptions)) {
|
|
374
|
-
//
|
|
374
|
+
// Merge canonical + extra values for target_power_mode - canonical always present, extras appended
|
|
375
375
|
if (Capability.isInstanceOfId(capabilityId, 'target_power_mode')) {
|
|
376
|
-
|
|
376
|
+
const canonicalValues = Capability.getCapability('target_power_mode').values;
|
|
377
|
+
const providedValues = Array.isArray(capabilityOptions.values) ? capabilityOptions.values : [];
|
|
378
|
+
|
|
379
|
+
const seenIds = new Set(canonicalValues.map(canonical => canonical.id));
|
|
380
|
+
const extraValues = [];
|
|
381
|
+
|
|
382
|
+
for (const value of providedValues) {
|
|
383
|
+
if (!value || typeof value !== 'object' || typeof value.id !== 'string') continue;
|
|
384
|
+
if (seenIds.has(value.id)) continue;
|
|
385
|
+
seenIds.add(value.id);
|
|
386
|
+
extraValues.push(value);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
const RESERVED_PREFIXES = ['homey_', 'device_'];
|
|
390
|
+
const reservedValues = extraValues.filter(value =>
|
|
391
|
+
RESERVED_PREFIXES.some(prefix => value.id.startsWith(prefix))
|
|
392
|
+
);
|
|
393
|
+
|
|
394
|
+
if (reservedValues.length) {
|
|
395
|
+
const ids = reservedValues.map(value => value.id).join(', ');
|
|
396
|
+
throw new Error(`drivers.${driver.id}.capabilitiesOptions.${capabilityId} custom values cannot use reserved prefixes "homey_" or "device_": ${ids}`);
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
capabilityOptions.values = [...canonicalValues, ...extraValues];
|
|
377
400
|
}
|
|
378
401
|
|
|
379
402
|
// validate target_power exclude range must include 0
|