homey-lib 2.50.1 → 2.50.2
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 +22 -8
- 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
|
@@ -149,6 +149,8 @@ class App {
|
|
|
149
149
|
throw new Error('Invalid compatibility');
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
+
const appCompatibilityMinVersion = semver.minVersion(appJson.compatibility);
|
|
153
|
+
|
|
152
154
|
if (appJson.esm === true && semver.lt(semver.coerce(appJson.compatibility), '12.0.1')) {
|
|
153
155
|
throw new Error('ESM apps require a compatibility of at least >=12.0.1');
|
|
154
156
|
}
|
|
@@ -220,19 +222,15 @@ class App {
|
|
|
220
222
|
|
|
221
223
|
// validate sdk v3 apps have compatibility of at least >=5.0.0
|
|
222
224
|
if (appJson.sdk === 3) {
|
|
223
|
-
// lowest version that satisfies the compatibility
|
|
224
|
-
const minVersion = semver.minVersion(appJson.compatibility);
|
|
225
|
-
|
|
226
225
|
// lowest version must be greater than or equal to 5.0.0 for sdk v3 apps
|
|
227
|
-
if (!semver.gt(
|
|
226
|
+
if (!semver.gt(appCompatibilityMinVersion, '4.2.0')) {
|
|
228
227
|
throw new Error(`Invalid compatibility (${appJson.compatibility}), SDK version 3 apps must have a compatibility of at least >=5.0.0`);
|
|
229
228
|
}
|
|
230
229
|
}
|
|
231
230
|
|
|
232
231
|
// validate that Python apps target compatibility of at least >=13.0.0
|
|
233
232
|
if (appJson.runtime === 'python') {
|
|
234
|
-
|
|
235
|
-
if (!semver.gte(minVersion, '13.0.0')) {
|
|
233
|
+
if (!semver.gte(appCompatibilityMinVersion, '13.0.0')) {
|
|
236
234
|
throw new Error(`Invalid compatibility (${appJson.compatibility}), Python apps must have a compatibility of at least >=13.0.0`);
|
|
237
235
|
}
|
|
238
236
|
}
|
|
@@ -242,6 +240,14 @@ class App {
|
|
|
242
240
|
throw new Error(`Invalid sdk (${appJson.sdk}), Python apps must use sdk version 3`);
|
|
243
241
|
}
|
|
244
242
|
|
|
243
|
+
if (appJson.capabilities) {
|
|
244
|
+
for (const [capabilityId, capability] of Object.entries(appJson.capabilities)) {
|
|
245
|
+
if (capability.titleShort !== undefined && semver.lt(appCompatibilityMinVersion, '13.2.1')) {
|
|
246
|
+
throw new Error(`capabilities.${capabilityId}.titleShort requires a compatibility of at least >=13.2.1`);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
|
|
245
251
|
App.validatePythonVersion(appJson);
|
|
246
252
|
|
|
247
253
|
// Validate that Python apps have cross-platform venvs
|
|
@@ -353,7 +359,7 @@ class App {
|
|
|
353
359
|
throw new Error(`drivers.${driver.id} invalid driver class: ${driver.class}`);
|
|
354
360
|
}
|
|
355
361
|
|
|
356
|
-
if (allowedClasses[driver.class].minCompatibility && semver.lt(
|
|
362
|
+
if (allowedClasses[driver.class].minCompatibility && semver.lt(appCompatibilityMinVersion, allowedClasses[driver.class].minCompatibility)) {
|
|
357
363
|
// Compatibility must be greater than or equal to the minimum required compatibility
|
|
358
364
|
throw new Error(`drivers.${driver.id} driver class: ${driver.class} is not available for compatibility ${appJson.compatibility}, requires minimum: ${allowedClasses[driver.class].minCompatibility}`);
|
|
359
365
|
}
|
|
@@ -368,7 +374,7 @@ class App {
|
|
|
368
374
|
throw new Error(`drivers.${driver.id} invalid capability: ${capability}`);
|
|
369
375
|
}
|
|
370
376
|
|
|
371
|
-
if (isSystemCapability && !isAppCapability && allowedCapabilities[capabilityId].minCompatibility && semver.lt(
|
|
377
|
+
if (isSystemCapability && !isAppCapability && allowedCapabilities[capabilityId].minCompatibility && semver.lt(appCompatibilityMinVersion, allowedCapabilities[capabilityId].minCompatibility)) {
|
|
372
378
|
// Compatibility must be greater than or equal to the minimum required compatibility
|
|
373
379
|
throw new Error(`drivers.${driver.id} capability: ${capabilityId} is not available for compatibility ${appJson.compatibility}, requires minimum: ${allowedCapabilities[capabilityId].minCompatibility}`);
|
|
374
380
|
}
|
|
@@ -386,6 +392,14 @@ class App {
|
|
|
386
392
|
// validate `appJson.drivers[].capabilitiesOptions`
|
|
387
393
|
if (driver.capabilitiesOptions) {
|
|
388
394
|
for (const [capabilityId, capabilityOptions] of Object.entries(driver.capabilitiesOptions)) {
|
|
395
|
+
if (capabilityOptions === null || typeof capabilityOptions !== 'object' || Array.isArray(capabilityOptions)) {
|
|
396
|
+
throw new Error(`drivers.${driver.id}.capabilitiesOptions.${capabilityId} must be an object`);
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
if (capabilityOptions.titleShort !== undefined && semver.lt(appCompatibilityMinVersion, '13.2.1')) {
|
|
400
|
+
throw new Error(`drivers.${driver.id}.capabilitiesOptions.${capabilityId}.titleShort requires a compatibility of at least >=13.2.1`);
|
|
401
|
+
}
|
|
402
|
+
|
|
389
403
|
// Validate target_power_mode values - require homey, at least one non-homey, no reserved prefixes
|
|
390
404
|
if (Capability.isInstanceOfId(capabilityId, 'target_power_mode') && Array.isArray(capabilityOptions.values)) {
|
|
391
405
|
const hasHomey = capabilityOptions.values.some(v => v && typeof v === 'object' && v.id === 'homey');
|
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;IAy2BnD;;;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;IAvzCD;;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,CA+0BzB;IAz0BC,gBAAmB;IAs1BrB;;;;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;;;;mBAz2Ca,OAAO,yBAAyB,EAAE,GAAG"}
|