homey-lib 2.46.0 → 2.46.1
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/lib/App/index.js +12 -15
- package/package.json +1 -1
- package/types/lib/App/index.d.ts.map +1 -1
- package/webpack/index.js +1 -1
package/lib/App/index.js
CHANGED
|
@@ -386,32 +386,29 @@ class App {
|
|
|
386
386
|
// validate `appJson.drivers[].capabilitiesOptions`
|
|
387
387
|
if (driver.capabilitiesOptions) {
|
|
388
388
|
for (const [capabilityId, capabilityOptions] of Object.entries(driver.capabilitiesOptions)) {
|
|
389
|
-
//
|
|
390
|
-
if (Capability.isInstanceOfId(capabilityId, 'target_power_mode')) {
|
|
389
|
+
// Validate target_power_mode values - check canonical IDs present, no reserved prefixes
|
|
390
|
+
if (Capability.isInstanceOfId(capabilityId, 'target_power_mode') && Array.isArray(capabilityOptions.values)) {
|
|
391
391
|
const canonicalValues = Capability.getCapability('target_power_mode').values;
|
|
392
|
-
const providedValues = Array.isArray(capabilityOptions.values) ? capabilityOptions.values : [];
|
|
393
392
|
|
|
394
|
-
const
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
if (seenIds.has(value.id)) continue;
|
|
400
|
-
seenIds.add(value.id);
|
|
401
|
-
extraValues.push(value);
|
|
393
|
+
for (const canonical of canonicalValues) {
|
|
394
|
+
const provided = capabilityOptions.values.find(v => v && typeof v === 'object' && v.id === canonical.id);
|
|
395
|
+
if (!provided) {
|
|
396
|
+
throw new Error(`drivers.${driver.id}.capabilitiesOptions.${capabilityId}.values must include canonical value "${canonical.id}"`);
|
|
397
|
+
}
|
|
402
398
|
}
|
|
403
399
|
|
|
404
|
-
const
|
|
400
|
+
const canonicalIds = new Set(canonicalValues.map(v => v.id));
|
|
401
|
+
const extraValues = capabilityOptions.values.filter(v => v && typeof v === 'object' && typeof v.id === 'string' && !canonicalIds.has(v.id));
|
|
402
|
+
|
|
403
|
+
const RESERVED_PREFIXES = ['homey_'];
|
|
405
404
|
const reservedValues = extraValues.filter(value =>
|
|
406
405
|
RESERVED_PREFIXES.some(prefix => value.id.startsWith(prefix))
|
|
407
406
|
);
|
|
408
407
|
|
|
409
408
|
if (reservedValues.length) {
|
|
410
409
|
const ids = reservedValues.map(value => value.id).join(', ');
|
|
411
|
-
throw new Error(`drivers.${driver.id}.capabilitiesOptions.${capabilityId} custom values cannot use reserved
|
|
410
|
+
throw new Error(`drivers.${driver.id}.capabilitiesOptions.${capabilityId}.values custom values cannot use reserved prefix "homey_": ${ids}`);
|
|
412
411
|
}
|
|
413
|
-
|
|
414
|
-
capabilityOptions.values = [...canonicalValues, ...extraValues];
|
|
415
412
|
}
|
|
416
413
|
|
|
417
414
|
// validate target_power exclude range must include 0
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/App/index.js"],"names":[],"mappings":";AA8EA;IACE,2CAAqD;IACrD,2CAAmD;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/App/index.js"],"names":[],"mappings":";AA8EA;IACE,2CAAqD;IACrD,2CAAmD;IAmyBnD;;;OAGG;IACH,sCAHW,WAAW,GACT,IAAI,CAOhB;IA4PD;;;;;OAKG;IACH,4CALW,MAAM,QACN;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,aAClB,MAAM,GACJ,IAAI,CAkChB;IAiBD;;;OAGG;IACH,wBAHW,MAAM,GACJ,OAAO,CAQnB;IAED;;;OAGG;IACH,gCAHW,MAAM,GACJ,OAAO,CAInB;IAED;;OAEG;IACH,wBAFa,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMnC;IAED;;OAEG;IACH,yBAFa,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAcnD;IAED;;OAEG;IACH,wBAFa,MAAM,EAAE,CAIpB;IAED;;OAEG;IACH,qBAFa,MAAM,EAAE,CAKpB;IAED;;;OAGG;IACH,4BAHW,MAAM,GACJ,MAAM,CAuBlB;IAED;;;;OAIG;IACH,0BAJW,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,SAAS,WAC1C,WAAW,GACT,MAAM,GAAG,IAAI,CAyDzB;IAjvCD;;OAEG;IACH,kBAFW,MAAM,EAQhB;IALC,cAAiB;IAOnB;;;OAGG;IACH,eAHc,OAAO,EAAA,GACR,IAAI,CAKhB;IAED;;;OAGG;IACH,6BAHW;QAAE,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAC3D,OAAO,CAAC,IAAI,CAAC,CAywBzB;IAnwBC,gBAAmB;IAgxBrB;;;;OAIG;IACH,uCAJW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,UACvB;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GACZ,IAAI,CAwBhB;IAED;;;;OAIG;IACH,8BAJW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,WAC1C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,GACxC,IAAI,CAuBhB;IAED;;;OAGG;IACH,gCAHW,MAAM,GACJ,OAAO,CAAC,MAAM,EAAE,CAAC,CAY7B;IAED;;;OAGG;IACH,yCAHW,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CAOzB;IAED;;;OAGG;IACH,mCAHW,MAAM,GACJ,OAAO,CAAC,OAAO,CAAC,CAe5B;IAED;;;;;OAKG;IACH,2BALW;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,QAChC,KAAK,GAAG,QAAQ,cAChB,MAAM,GACJ,OAAO,CAAC,IAAI,CAAC,CA6BzB;IAED;;OAEG;IACH,oBAFa,OAAO,CAAC,IAAI,CAAC,CAuBzB;IAED;;;;;;OAMG;IACH,wBANW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,aACvB,MAAM,WACN,WAAW,mCACX;QAAE,YAAY,EAAE,OAAO,CAAC;QAAC,aAAa,EAAE,OAAO,CAAA;KAAE,GAC/C,IAAI,CA+EhB;IA0CD;;;;OAIG;IACH,qBAJW,MAAM,YACN,MAAM,GACJ,OAAO,CAAC,MAAM,CAAC,CAU3B;CAwJF;;;;mBAnyCa,OAAO,yBAAyB,EAAE,GAAG"}
|