homey-lib 2.46.1 → 2.48.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.
Files changed (273) hide show
  1. package/assets/app/permissions.json +1 -1
  2. package/assets/app/schema.d.ts +1 -0
  3. package/assets/app/schema.json +8 -0
  4. package/assets/capability/capabilities/alarm_battery.json +1 -1
  5. package/assets/capability/capabilities/alarm_bin_full.json +1 -1
  6. package/assets/capability/capabilities/alarm_bin_missing.json +1 -1
  7. package/assets/capability/capabilities/alarm_cleaning_pad_missing.json +1 -1
  8. package/assets/capability/capabilities/alarm_co.json +1 -1
  9. package/assets/capability/capabilities/alarm_co2.json +1 -1
  10. package/assets/capability/capabilities/alarm_cold.json +1 -1
  11. package/assets/capability/capabilities/alarm_connectivity.json +1 -1
  12. package/assets/capability/capabilities/alarm_contact.json +1 -1
  13. package/assets/capability/capabilities/alarm_door_fault.json +1 -1
  14. package/assets/capability/capabilities/alarm_fire.json +1 -1
  15. package/assets/capability/capabilities/alarm_freeze_risk.json +1 -1
  16. package/assets/capability/capabilities/alarm_gas.json +1 -1
  17. package/assets/capability/capabilities/alarm_generic.json +1 -1
  18. package/assets/capability/capabilities/alarm_heat.json +1 -1
  19. package/assets/capability/capabilities/alarm_light.json +1 -1
  20. package/assets/capability/capabilities/alarm_lost.json +1 -1
  21. package/assets/capability/capabilities/alarm_moisture.json +1 -1
  22. package/assets/capability/capabilities/alarm_motion.json +1 -1
  23. package/assets/capability/capabilities/alarm_night.json +1 -1
  24. package/assets/capability/capabilities/alarm_noise.json +1 -1
  25. package/assets/capability/capabilities/alarm_occupancy.json +1 -1
  26. package/assets/capability/capabilities/alarm_open.json +1 -1
  27. package/assets/capability/capabilities/alarm_pm01.json +1 -1
  28. package/assets/capability/capabilities/alarm_pm1.json +1 -1
  29. package/assets/capability/capabilities/alarm_pm10.json +1 -1
  30. package/assets/capability/capabilities/alarm_pm25.json +1 -1
  31. package/assets/capability/capabilities/alarm_power.json +1 -1
  32. package/assets/capability/capabilities/alarm_presence.json +1 -1
  33. package/assets/capability/capabilities/alarm_problem.json +1 -1
  34. package/assets/capability/capabilities/alarm_pump_device.json +1 -1
  35. package/assets/capability/capabilities/alarm_pump_supply.json +1 -1
  36. package/assets/capability/capabilities/alarm_rain.json +1 -1
  37. package/assets/capability/capabilities/alarm_running.json +1 -1
  38. package/assets/capability/capabilities/alarm_safety.json +1 -1
  39. package/assets/capability/capabilities/alarm_smoke.json +1 -1
  40. package/assets/capability/capabilities/alarm_stuck.json +1 -1
  41. package/assets/capability/capabilities/alarm_tamper.json +1 -1
  42. package/assets/capability/capabilities/alarm_tank_empty.json +1 -1
  43. package/assets/capability/capabilities/alarm_tank_missing.json +1 -1
  44. package/assets/capability/capabilities/alarm_tank_open.json +1 -1
  45. package/assets/capability/capabilities/alarm_vibration.json +1 -1
  46. package/assets/capability/capabilities/alarm_water.json +1 -1
  47. package/assets/capability/capabilities/audio_output.json +1 -1
  48. package/assets/capability/capabilities/battery_charging_state.json +1 -1
  49. package/assets/capability/capabilities/button.json +1 -1
  50. package/assets/capability/capabilities/channel_down.json +1 -1
  51. package/assets/capability/capabilities/channel_up.json +1 -1
  52. package/assets/capability/capabilities/cooking_time.json +1 -1
  53. package/assets/capability/capabilities/dim.json +1 -1
  54. package/assets/capability/capabilities/dishwasher_program.json +1 -1
  55. package/assets/capability/capabilities/docked.json +1 -1
  56. package/assets/capability/capabilities/ev_charging_state.json +1 -1
  57. package/assets/capability/capabilities/evcharger_charging.json +1 -1
  58. package/assets/capability/capabilities/evcharger_charging_state.json +1 -1
  59. package/assets/capability/capabilities/fan_mode.json +1 -1
  60. package/assets/capability/capabilities/fan_speed.json +1 -1
  61. package/assets/capability/capabilities/garagedoor_closed.json +1 -1
  62. package/assets/capability/capabilities/heater_operation_mode.json +1 -1
  63. package/assets/capability/capabilities/homealarm_state.json +1 -1
  64. package/assets/capability/capabilities/hot_water_mode.json +1 -1
  65. package/assets/capability/capabilities/laundry_dryer_dryness.json +1 -1
  66. package/assets/capability/capabilities/laundry_washer_cycles.json +1 -1
  67. package/assets/capability/capabilities/laundry_washer_program.json +1 -1
  68. package/assets/capability/capabilities/laundry_washer_speed.json +1 -1
  69. package/assets/capability/capabilities/level_aqi.json +1 -1
  70. package/assets/capability/capabilities/level_carbon_filter.json +1 -1
  71. package/assets/capability/capabilities/level_ch2o.json +1 -1
  72. package/assets/capability/capabilities/level_co.json +1 -1
  73. package/assets/capability/capabilities/level_co2.json +1 -1
  74. package/assets/capability/capabilities/level_hepa_filter.json +1 -1
  75. package/assets/capability/capabilities/level_nox.json +1 -1
  76. package/assets/capability/capabilities/level_o3.json +1 -1
  77. package/assets/capability/capabilities/level_pm01.json +1 -1
  78. package/assets/capability/capabilities/level_pm1.json +1 -1
  79. package/assets/capability/capabilities/level_pm10.json +1 -1
  80. package/assets/capability/capabilities/level_pm25.json +1 -1
  81. package/assets/capability/capabilities/level_radon.json +1 -1
  82. package/assets/capability/capabilities/level_so2.json +1 -1
  83. package/assets/capability/capabilities/level_tvoc.json +1 -1
  84. package/assets/capability/capabilities/light_hue.json +1 -1
  85. package/assets/capability/capabilities/light_mode.json +1 -1
  86. package/assets/capability/capabilities/light_saturation.json +1 -1
  87. package/assets/capability/capabilities/light_temperature.json +1 -1
  88. package/assets/capability/capabilities/lock_mode.json +1 -1
  89. package/assets/capability/capabilities/locked.json +1 -1
  90. package/assets/capability/capabilities/measure_aqi.json +1 -1
  91. package/assets/capability/capabilities/measure_battery.json +1 -1
  92. package/assets/capability/capabilities/measure_carbon_filter.json +1 -1
  93. package/assets/capability/capabilities/measure_ch2o.json +1 -1
  94. package/assets/capability/capabilities/measure_co.json +1 -1
  95. package/assets/capability/capabilities/measure_co2.json +1 -1
  96. package/assets/capability/capabilities/measure_content_volume.json +1 -1
  97. package/assets/capability/capabilities/measure_current.json +1 -1
  98. package/assets/capability/capabilities/measure_data_rate.json +1 -1
  99. package/assets/capability/capabilities/measure_data_size.json +1 -1
  100. package/assets/capability/capabilities/measure_distance.json +1 -1
  101. package/assets/capability/capabilities/measure_frequency.json +1 -1
  102. package/assets/capability/capabilities/measure_gust_angle.json +1 -1
  103. package/assets/capability/capabilities/measure_gust_strength.json +1 -1
  104. package/assets/capability/capabilities/measure_hepa_filter.json +1 -1
  105. package/assets/capability/capabilities/measure_humidity.json +1 -1
  106. package/assets/capability/capabilities/measure_luminance.json +1 -1
  107. package/assets/capability/capabilities/measure_moisture.json +1 -1
  108. package/assets/capability/capabilities/measure_monetary.json +1 -1
  109. package/assets/capability/capabilities/measure_noise.json +1 -1
  110. package/assets/capability/capabilities/measure_nox.json +1 -1
  111. package/assets/capability/capabilities/measure_o3.json +1 -1
  112. package/assets/capability/capabilities/measure_odor.json +1 -1
  113. package/assets/capability/capabilities/measure_ph.json +1 -1
  114. package/assets/capability/capabilities/measure_pm01.json +1 -1
  115. package/assets/capability/capabilities/measure_pm1.json +1 -1
  116. package/assets/capability/capabilities/measure_pm10.json +1 -1
  117. package/assets/capability/capabilities/measure_pm25.json +1 -1
  118. package/assets/capability/capabilities/measure_power.json +1 -1
  119. package/assets/capability/capabilities/measure_pressure.json +1 -1
  120. package/assets/capability/capabilities/measure_radon.json +1 -1
  121. package/assets/capability/capabilities/measure_rain.json +1 -1
  122. package/assets/capability/capabilities/measure_rain_intensity.json +1 -1
  123. package/assets/capability/capabilities/measure_rotation.json +1 -1
  124. package/assets/capability/capabilities/measure_signal_strength.json +1 -1
  125. package/assets/capability/capabilities/measure_so2.json +1 -1
  126. package/assets/capability/capabilities/measure_speed.json +1 -1
  127. package/assets/capability/capabilities/measure_temperature.json +1 -1
  128. package/assets/capability/capabilities/measure_tvoc.json +1 -1
  129. package/assets/capability/capabilities/measure_tvoc_index.json +1 -1
  130. package/assets/capability/capabilities/measure_ultraviolet.json +1 -1
  131. package/assets/capability/capabilities/measure_voltage.json +1 -1
  132. package/assets/capability/capabilities/measure_water.json +1 -1
  133. package/assets/capability/capabilities/measure_weight.json +1 -1
  134. package/assets/capability/capabilities/measure_wind_angle.json +1 -1
  135. package/assets/capability/capabilities/measure_wind_strength.json +1 -1
  136. package/assets/capability/capabilities/media_input.json +1 -1
  137. package/assets/capability/capabilities/meter_gas.json +1 -1
  138. package/assets/capability/capabilities/meter_power.json +1 -1
  139. package/assets/capability/capabilities/meter_rain.json +1 -1
  140. package/assets/capability/capabilities/meter_water.json +1 -1
  141. package/assets/capability/capabilities/microwave_mode.json +1 -1
  142. package/assets/capability/capabilities/mower_state.json +1 -1
  143. package/assets/capability/capabilities/onoff.json +1 -1
  144. package/assets/capability/capabilities/operational_state.json +1 -1
  145. package/assets/capability/capabilities/oscillating.json +1 -1
  146. package/assets/capability/capabilities/oven_mode.json +1 -1
  147. package/assets/capability/capabilities/power_boost.json +1 -1
  148. package/assets/capability/capabilities/power_level.json +1 -1
  149. package/assets/capability/capabilities/progress.json +1 -1
  150. package/assets/capability/capabilities/pump_mode.json +1 -1
  151. package/assets/capability/capabilities/pump_setpoint.json +1 -1
  152. package/assets/capability/capabilities/refrigerator_mode.json +1 -1
  153. package/assets/capability/capabilities/speaker_album.json +1 -1
  154. package/assets/capability/capabilities/speaker_artist.json +1 -1
  155. package/assets/capability/capabilities/speaker_duration.json +1 -1
  156. package/assets/capability/capabilities/speaker_next.json +1 -1
  157. package/assets/capability/capabilities/speaker_playing.json +1 -1
  158. package/assets/capability/capabilities/speaker_position.json +1 -1
  159. package/assets/capability/capabilities/speaker_prev.json +1 -1
  160. package/assets/capability/capabilities/speaker_repeat.json +1 -1
  161. package/assets/capability/capabilities/speaker_shuffle.json +1 -1
  162. package/assets/capability/capabilities/speaker_stop.json +1 -1
  163. package/assets/capability/capabilities/speaker_track.json +1 -1
  164. package/assets/capability/capabilities/swing_mode.json +1 -1
  165. package/assets/capability/capabilities/target_humidity.json +1 -1
  166. package/assets/capability/capabilities/target_humidity_max.json +1 -1
  167. package/assets/capability/capabilities/target_humidity_min.json +1 -1
  168. package/assets/capability/capabilities/target_power.json +1 -1
  169. package/assets/capability/capabilities/target_power_mode.json +1 -1
  170. package/assets/capability/capabilities/target_temperature.json +1 -1
  171. package/assets/capability/capabilities/target_temperature_level.json +1 -1
  172. package/assets/capability/capabilities/target_temperature_max.json +1 -1
  173. package/assets/capability/capabilities/target_temperature_min.json +1 -1
  174. package/assets/capability/capabilities/thermostat_mode.json +1 -1
  175. package/assets/capability/capabilities/vacuumcleaner_job_mode.json +1 -1
  176. package/assets/capability/capabilities/vacuumcleaner_state.json +1 -1
  177. package/assets/capability/capabilities/valve_position.json +1 -1
  178. package/assets/capability/capabilities/volume_down.json +1 -1
  179. package/assets/capability/capabilities/volume_mute.json +1 -1
  180. package/assets/capability/capabilities/volume_set.json +1 -1
  181. package/assets/capability/capabilities/volume_up.json +1 -1
  182. package/assets/capability/capabilities/windowcoverings_closed.json +1 -1
  183. package/assets/capability/capabilities/windowcoverings_set.json +1 -1
  184. package/assets/capability/capabilities/windowcoverings_state.json +1 -1
  185. package/assets/capability/capabilities/windowcoverings_tilt_down.json +1 -1
  186. package/assets/capability/capabilities/windowcoverings_tilt_set.json +1 -1
  187. package/assets/capability/capabilities/windowcoverings_tilt_up.json +1 -1
  188. package/assets/device/classes/airconditioning.json +1 -1
  189. package/assets/device/classes/airfryer.json +1 -1
  190. package/assets/device/classes/airpurifier.json +1 -1
  191. package/assets/device/classes/airtreatment.json +1 -1
  192. package/assets/device/classes/amplifier.json +1 -1
  193. package/assets/device/classes/battery.json +1 -1
  194. package/assets/device/classes/bicycle.json +1 -1
  195. package/assets/device/classes/blinds.json +1 -1
  196. package/assets/device/classes/boiler.json +1 -1
  197. package/assets/device/classes/bridge.json +1 -1
  198. package/assets/device/classes/button.json +1 -1
  199. package/assets/device/classes/camera.json +1 -1
  200. package/assets/device/classes/car.json +1 -1
  201. package/assets/device/classes/coffeemachine.json +1 -1
  202. package/assets/device/classes/cooktop.json +1 -1
  203. package/assets/device/classes/curtain.json +1 -1
  204. package/assets/device/classes/dehumidifier.json +1 -1
  205. package/assets/device/classes/diffuser.json +1 -1
  206. package/assets/device/classes/dishwasher.json +1 -1
  207. package/assets/device/classes/doorbell.json +1 -1
  208. package/assets/device/classes/dryer.json +1 -1
  209. package/assets/device/classes/evcharger.json +1 -1
  210. package/assets/device/classes/fan.json +1 -1
  211. package/assets/device/classes/faucet.json +1 -1
  212. package/assets/device/classes/fireplace.json +1 -1
  213. package/assets/device/classes/freezer.json +1 -1
  214. package/assets/device/classes/fridge.json +1 -1
  215. package/assets/device/classes/fridge_and_freezer.json +1 -1
  216. package/assets/device/classes/fryer.json +1 -1
  217. package/assets/device/classes/gameconsole.json +1 -1
  218. package/assets/device/classes/garagedoor.json +1 -1
  219. package/assets/device/classes/grill.json +1 -1
  220. package/assets/device/classes/heater.json +1 -1
  221. package/assets/device/classes/heatpump.json +1 -1
  222. package/assets/device/classes/homealarm.json +1 -1
  223. package/assets/device/classes/hood.json +1 -1
  224. package/assets/device/classes/humidifier.json +1 -1
  225. package/assets/device/classes/kettle.json +1 -1
  226. package/assets/device/classes/lawnmower.json +1 -1
  227. package/assets/device/classes/light.json +1 -1
  228. package/assets/device/classes/lock.json +1 -1
  229. package/assets/device/classes/mediaplayer.json +1 -1
  230. package/assets/device/classes/microwave.json +1 -1
  231. package/assets/device/classes/mop.json +1 -1
  232. package/assets/device/classes/multicooker.json +1 -1
  233. package/assets/device/classes/networkrouter.json +1 -1
  234. package/assets/device/classes/other.json +1 -1
  235. package/assets/device/classes/oven.json +1 -1
  236. package/assets/device/classes/oven_and_microwave.json +1 -1
  237. package/assets/device/classes/petfeeder.json +1 -1
  238. package/assets/device/classes/pump.json +1 -1
  239. package/assets/device/classes/radiator.json +1 -1
  240. package/assets/device/classes/relay.json +1 -1
  241. package/assets/device/classes/remote.json +1 -1
  242. package/assets/device/classes/scooter.json +1 -1
  243. package/assets/device/classes/sensor.json +1 -1
  244. package/assets/device/classes/service.json +1 -1
  245. package/assets/device/classes/settopbox.json +1 -1
  246. package/assets/device/classes/shutterblinds.json +1 -1
  247. package/assets/device/classes/siren.json +1 -1
  248. package/assets/device/classes/smokealarm.json +1 -1
  249. package/assets/device/classes/socket.json +1 -1
  250. package/assets/device/classes/solarpanel.json +1 -1
  251. package/assets/device/classes/speaker.json +1 -1
  252. package/assets/device/classes/sprinkler.json +1 -1
  253. package/assets/device/classes/sunshade.json +2 -2
  254. package/assets/device/classes/thermostat.json +1 -1
  255. package/assets/device/classes/tv.json +1 -1
  256. package/assets/device/classes/vacuumcleaner.json +1 -1
  257. package/assets/device/classes/vehicle.json +1 -1
  258. package/assets/device/classes/washer.json +1 -1
  259. package/assets/device/classes/washer_and_dryer.json +1 -1
  260. package/assets/device/classes/waterheater.json +1 -1
  261. package/assets/device/classes/waterpurifier.json +1 -1
  262. package/assets/device/classes/watervalve.json +1 -1
  263. package/assets/device/classes/windowcoverings.json +2 -2
  264. package/lib/App/index.js +18 -18
  265. package/lib/Util/file.js +1 -1
  266. package/lib/Util/index.js +1 -1
  267. package/package.json +1 -1
  268. package/scripts/apply-locale-files.js +1 -1
  269. package/scripts/generate-locale-files.js +1 -1
  270. package/types/assets/app/schema.d.ts +1 -0
  271. package/types/lib/Util/index.d.ts +2 -2
  272. package/types/lib/Util/index.d.ts.map +1 -1
  273. package/webpack/index.js +1 -1
@@ -30,4 +30,4 @@
30
30
  "ar": "استخدم فئة الجهاز هذه لأجهزة تنقية المياه."
31
31
  },
32
32
  "minCompatibility": "12.0.0"
33
- }
33
+ }
@@ -30,4 +30,4 @@
30
30
  "ar": "استخدم فئة الجهاز هذه لصمامات المياه الميكانيكية."
31
31
  },
32
32
  "minCompatibility": "12.0.0"
33
- }
33
+ }
@@ -6,7 +6,7 @@
6
6
  "fr": "Couverture de fenêtre",
7
7
  "it": "Rivestimenti per finestre",
8
8
  "sv": "Fönsterskydd",
9
- "no": "Vindusbeskyttelse",
9
+ "no": "Vindusskjerming",
10
10
  "es": "Cobertores de ventanas",
11
11
  "da": "Vinduesdække",
12
12
  "ru": "Оконные навесы",
@@ -50,4 +50,4 @@
50
50
  "curtain",
51
51
  "shutterblinds"
52
52
  ]
53
- }
53
+ }
package/lib/App/index.js CHANGED
@@ -386,28 +386,24 @@ 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
- // Validate target_power_mode values - check canonical IDs present, no reserved prefixes
389
+ // Validate target_power_mode values - require homey, at least one non-homey, no reserved prefixes
390
390
  if (Capability.isInstanceOfId(capabilityId, 'target_power_mode') && Array.isArray(capabilityOptions.values)) {
391
- const canonicalValues = Capability.getCapability('target_power_mode').values;
392
-
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
- }
391
+ const hasHomey = capabilityOptions.values.some(v => v && typeof v === 'object' && v.id === 'homey');
392
+ if (!hasHomey) {
393
+ throw new Error(`drivers.${driver.id}.capabilitiesOptions.${capabilityId}.values must include "homey" value`);
398
394
  }
399
395
 
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));
396
+ const nonHomeyValues = capabilityOptions.values.filter(v => v && typeof v === 'object' && typeof v.id === 'string' && v.id !== 'homey');
397
+ if (nonHomeyValues.length === 0) {
398
+ throw new Error(`drivers.${driver.id}.capabilitiesOptions.${capabilityId}.values must include at least one non-homey value`);
399
+ }
402
400
 
403
401
  const RESERVED_PREFIXES = ['homey_'];
404
- const reservedValues = extraValues.filter(value =>
405
- RESERVED_PREFIXES.some(prefix => value.id.startsWith(prefix))
406
- );
407
-
408
- if (reservedValues.length) {
409
- const ids = reservedValues.map(value => value.id).join(', ');
410
- throw new Error(`drivers.${driver.id}.capabilitiesOptions.${capabilityId}.values custom values cannot use reserved prefix "homey_": ${ids}`);
402
+ for (const value of capabilityOptions.values) {
403
+ if (value && typeof value === 'object' && typeof value.id === 'string'
404
+ && RESERVED_PREFIXES.some(prefix => value.id.startsWith(prefix))) {
405
+ throw new Error(`drivers.${driver.id}.capabilitiesOptions.${capabilityId}.values custom values cannot use reserved prefix "homey_": ${value.id}`);
406
+ }
411
407
  }
412
408
  }
413
409
 
@@ -695,7 +691,11 @@ class App {
695
691
  const seenFiles = new Set();
696
692
 
697
693
  for (const [fileIndex, file] of Object.entries(update.files)) {
698
- const relativeFilePath = Util.getOTAFilePath({ appPath: '', driverId: driver.id, fileName: file.name });
694
+ if (basename(file.name) !== file.name) {
695
+ throw new Error(`drivers.${driver.id}.firmwareUpdates.updates[${updateIndex}].files[${fileIndex}] cannot include (sub)directories in the file name`);
696
+ }
697
+
698
+ const relativeFilePath = Util.getOTAFilePath({ driverId: driver.id, fileName: file.name });
699
699
  await this._ensureFileExistsCaseSensitive(relativeFilePath);
700
700
  const filePath = join(this._path, relativeFilePath);
701
701
  const isIntegrityValid = await Util.validateIntegrity(filePath, file.integrity);
package/lib/Util/file.js CHANGED
@@ -73,7 +73,7 @@ async function getIntegrity(filePath, hashName = 'sha256') {
73
73
  }
74
74
 
75
75
  function getOTAFilePath({ appPath, driverId, fileName }) {
76
- return path.join(appPath, 'drivers', driverId, 'assets', 'firmware', fileName);
76
+ return path.join(appPath || '', 'drivers', driverId, 'assets', 'firmware', fileName);
77
77
  }
78
78
 
79
79
  module.exports = {
package/lib/Util/index.js CHANGED
@@ -73,7 +73,7 @@ class Util {
73
73
  * Returns the expected file path for an OTA file based on app path, driver ID and file name.
74
74
  * NOTE: This method is only available in Node.js environments.
75
75
  * @param {object} options - File path options.
76
- * @param {string} options.appPath - Absolute path to the app.
76
+ * @param {string} [options.appPath] - Absolute path to the app. If not provided, the path is relative to the app root.
77
77
  * @param {string} options.driverId - Driver ID.
78
78
  * @param {string} options.fileName - OTA file name.
79
79
  * @returns {string} Resolves with the expected file path.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "homey-lib",
3
- "version": "2.46.1",
3
+ "version": "2.48.0",
4
4
  "description": "Shared Library for Homey",
5
5
  "types": "types/index.d.ts",
6
6
  "main": "index.js",
@@ -34,7 +34,7 @@ fs.readdirSync(INPUT_DIR).forEach(inputFile => {
34
34
  // Write updated content back to file
35
35
  fs.writeFileSync(
36
36
  sourceFilePath,
37
- JSON.stringify(originalContent, null, 2),
37
+ `${JSON.stringify(originalContent, null, 2)}\n`,
38
38
  );
39
39
  });
40
40
  }
@@ -56,7 +56,7 @@ function writeTranslations(translations, outputDir) {
56
56
  existingTranslations = JSON.parse(fs.readFileSync(filePath, 'utf8'));
57
57
  }
58
58
  translationObj = { ...existingTranslations, ...translationObj };
59
- fs.writeFileSync(filePath, JSON.stringify(translationObj, null, 2));
59
+ fs.writeFileSync(filePath, `${JSON.stringify(translationObj, null, 2)}\n`);
60
60
  }
61
61
  });
62
62
  }
@@ -504,6 +504,7 @@ export interface FlowCard {
504
504
  | {
505
505
  [k: string]: unknown;
506
506
  };
507
+ items?: "variable" | "flow_or_advanced_flow" | "user";
507
508
  [k: string]: unknown;
508
509
  }
509
510
  | {
@@ -54,13 +54,13 @@ declare class Util {
54
54
  * Returns the expected file path for an OTA file based on app path, driver ID and file name.
55
55
  * NOTE: This method is only available in Node.js environments.
56
56
  * @param {object} options - File path options.
57
- * @param {string} options.appPath - Absolute path to the app.
57
+ * @param {string} [options.appPath] - Absolute path to the app. If not provided, the path is relative to the app root.
58
58
  * @param {string} options.driverId - Driver ID.
59
59
  * @param {string} options.fileName - OTA file name.
60
60
  * @returns {string} Resolves with the expected file path.
61
61
  */
62
62
  static getOTAFilePath({ appPath, driverId, fileName }: {
63
- appPath: string;
63
+ appPath?: string;
64
64
  driverId: string;
65
65
  fileName: string;
66
66
  }): string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/Util/index.js"],"names":[],"mappings":";AAKA;IAEE;;;OAGG;IACH,yCAHW,MAAM,GACJ,MAAM,EAAE,CAIpB;IAED;;;;OAIG;IACH,gDAJW,MAAM,kBACN,MAAM,EAAE,GACN,MAAM,EAAE,CAKpB;IAED;;;;;;OAMG;IACH,8BAJW,MAAM,YACN,MAAM,GACJ,OAAO,CAAC,MAAM,CAAC,CAI3B;IAED;;;;;;OAMG;IACH,mCAJW,MAAM,aACN,MAAM,GACJ,OAAO,CAAC,OAAO,CAAC,CAI5B;IAED;;;;;OAKG;IACH,sCAHW,MAAM,GACJ,OAAO,CAAC,OAAO,UAAU,EAAE,eAAe,CAAC,CAIvD;IAED;;;;;;;;;OASG;IACH,wCANG;QAAwB,QAAQ,EAAxB,MAAM;QACW,gBAAgB,GAAjC,MAAM;QACW,WAAW,GAA5B,MAAM;QACW,SAAS,GAA1B,MAAM;KACd,GAAU,OAAO,CAAC,OAAO,UAAU,EAAE,eAAe,CAAC,CAIvD;IAED;;;;;;;;OAQG;IACH,uDALG;QAAwB,OAAO,EAAvB,MAAM;QACU,QAAQ,EAAxB,MAAM;QACU,QAAQ,EAAxB,MAAM;KACd,GAAU,MAAM,CAIlB;CAEF;;;;;;;gCAOU,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/Util/index.js"],"names":[],"mappings":";AAKA;IAEE;;;OAGG;IACH,yCAHW,MAAM,GACJ,MAAM,EAAE,CAIpB;IAED;;;;OAIG;IACH,gDAJW,MAAM,kBACN,MAAM,EAAE,GACN,MAAM,EAAE,CAKpB;IAED;;;;;;OAMG;IACH,8BAJW,MAAM,YACN,MAAM,GACJ,OAAO,CAAC,MAAM,CAAC,CAI3B;IAED;;;;;;OAMG;IACH,mCAJW,MAAM,aACN,MAAM,GACJ,OAAO,CAAC,OAAO,CAAC,CAI5B;IAED;;;;;OAKG;IACH,sCAHW,MAAM,GACJ,OAAO,CAAC,OAAO,UAAU,EAAE,eAAe,CAAC,CAIvD;IAED;;;;;;;;;OASG;IACH,wCANG;QAAwB,QAAQ,EAAxB,MAAM;QACW,gBAAgB,GAAjC,MAAM;QACW,WAAW,GAA5B,MAAM;QACW,SAAS,GAA1B,MAAM;KACd,GAAU,OAAO,CAAC,OAAO,UAAU,EAAE,eAAe,CAAC,CAIvD;IAED;;;;;;;;OAQG;IACH,uDALG;QAAyB,OAAO,GAAxB,MAAM;QACU,QAAQ,EAAxB,MAAM;QACU,QAAQ,EAAxB,MAAM;KACd,GAAU,MAAM,CAIlB;CAEF;;;;;;;gCAOU,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC"}