@zwave-js/cc 14.0.0-beta.4 → 14.0.0-beta.5

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 (331) hide show
  1. package/build/cjs/cc/AlarmSensorCC.js +381 -266
  2. package/build/cjs/cc/AlarmSensorCC.js.map +3 -3
  3. package/build/cjs/cc/AssociationCC.js +669 -503
  4. package/build/cjs/cc/AssociationCC.js.map +3 -3
  5. package/build/cjs/cc/AssociationGroupInfoCC.js +633 -492
  6. package/build/cjs/cc/AssociationGroupInfoCC.js.map +3 -3
  7. package/build/cjs/cc/BarrierOperatorCC.js +595 -429
  8. package/build/cjs/cc/BarrierOperatorCC.js.map +3 -3
  9. package/build/cjs/cc/BasicCC.js +354 -260
  10. package/build/cjs/cc/BasicCC.js.map +3 -3
  11. package/build/cjs/cc/BatteryCC.js +427 -345
  12. package/build/cjs/cc/BatteryCC.js.map +3 -3
  13. package/build/cjs/cc/BinarySensorCC.js +391 -276
  14. package/build/cjs/cc/BinarySensorCC.js.map +3 -3
  15. package/build/cjs/cc/BinarySwitchCC.js +347 -253
  16. package/build/cjs/cc/BinarySwitchCC.js.map +3 -3
  17. package/build/cjs/cc/CRC16CC.js +160 -85
  18. package/build/cjs/cc/CRC16CC.js.map +3 -3
  19. package/build/cjs/cc/CentralSceneCC.js +459 -324
  20. package/build/cjs/cc/CentralSceneCC.js.map +3 -3
  21. package/build/cjs/cc/ClimateControlScheduleCC.js +459 -293
  22. package/build/cjs/cc/ClimateControlScheduleCC.js.map +3 -3
  23. package/build/cjs/cc/ClockCC.js +254 -150
  24. package/build/cjs/cc/ClockCC.js.map +3 -3
  25. package/build/cjs/cc/ColorSwitchCC.js +758 -610
  26. package/build/cjs/cc/ColorSwitchCC.js.map +3 -3
  27. package/build/cjs/cc/ConfigurationCC.js +1700 -1453
  28. package/build/cjs/cc/ConfigurationCC.js.map +3 -3
  29. package/build/cjs/cc/DeviceResetLocallyCC.js +125 -49
  30. package/build/cjs/cc/DeviceResetLocallyCC.js.map +3 -3
  31. package/build/cjs/cc/DoorLockCC.js +904 -777
  32. package/build/cjs/cc/DoorLockCC.js.map +3 -3
  33. package/build/cjs/cc/DoorLockLoggingCC.js +321 -206
  34. package/build/cjs/cc/DoorLockLoggingCC.js.map +3 -3
  35. package/build/cjs/cc/EnergyProductionCC.js +249 -160
  36. package/build/cjs/cc/EnergyProductionCC.js.map +3 -3
  37. package/build/cjs/cc/EntryControlCC.js +619 -458
  38. package/build/cjs/cc/EntryControlCC.js.map +3 -3
  39. package/build/cjs/cc/FirmwareUpdateMetaDataCC.js +898 -698
  40. package/build/cjs/cc/FirmwareUpdateMetaDataCC.js.map +3 -3
  41. package/build/cjs/cc/HailCC.js +57 -11
  42. package/build/cjs/cc/HailCC.js.map +2 -2
  43. package/build/cjs/cc/HumidityControlModeCC.js +359 -233
  44. package/build/cjs/cc/HumidityControlModeCC.js.map +3 -3
  45. package/build/cjs/cc/HumidityControlOperatingStateCC.js +189 -103
  46. package/build/cjs/cc/HumidityControlOperatingStateCC.js.map +3 -3
  47. package/build/cjs/cc/HumidityControlSetpointCC.js +682 -495
  48. package/build/cjs/cc/HumidityControlSetpointCC.js.map +3 -3
  49. package/build/cjs/cc/InclusionControllerCC.js +205 -114
  50. package/build/cjs/cc/InclusionControllerCC.js.map +3 -3
  51. package/build/cjs/cc/IndicatorCC.js +897 -736
  52. package/build/cjs/cc/IndicatorCC.js.map +3 -3
  53. package/build/cjs/cc/IrrigationCC.js +1651 -1405
  54. package/build/cjs/cc/IrrigationCC.js.map +3 -3
  55. package/build/cjs/cc/LanguageCC.js +268 -171
  56. package/build/cjs/cc/LanguageCC.js.map +3 -3
  57. package/build/cjs/cc/LockCC.js +254 -154
  58. package/build/cjs/cc/LockCC.js.map +3 -3
  59. package/build/cjs/cc/ManufacturerProprietaryCC.js +189 -129
  60. package/build/cjs/cc/ManufacturerProprietaryCC.js.map +2 -2
  61. package/build/cjs/cc/ManufacturerSpecificCC.js +319 -213
  62. package/build/cjs/cc/ManufacturerSpecificCC.js.map +3 -3
  63. package/build/cjs/cc/MeterCC.js +827 -707
  64. package/build/cjs/cc/MeterCC.js.map +3 -3
  65. package/build/cjs/cc/MultiChannelAssociationCC.js +612 -478
  66. package/build/cjs/cc/MultiChannelAssociationCC.js.map +3 -3
  67. package/build/cjs/cc/MultiChannelCC.js +1037 -819
  68. package/build/cjs/cc/MultiChannelCC.js.map +3 -3
  69. package/build/cjs/cc/MultiCommandCC.js +172 -97
  70. package/build/cjs/cc/MultiCommandCC.js.map +3 -3
  71. package/build/cjs/cc/MultilevelSensorCC.js +589 -449
  72. package/build/cjs/cc/MultilevelSensorCC.js.map +3 -3
  73. package/build/cjs/cc/MultilevelSwitchCC.js +587 -439
  74. package/build/cjs/cc/MultilevelSwitchCC.js.map +3 -3
  75. package/build/cjs/cc/NoOperationCC.js +89 -27
  76. package/build/cjs/cc/NoOperationCC.js.map +2 -2
  77. package/build/cjs/cc/NodeNamingCC.js +417 -277
  78. package/build/cjs/cc/NodeNamingCC.js.map +3 -3
  79. package/build/cjs/cc/NotificationCC.js +972 -818
  80. package/build/cjs/cc/NotificationCC.js.map +3 -3
  81. package/build/cjs/cc/PowerlevelCC.js +450 -303
  82. package/build/cjs/cc/PowerlevelCC.js.map +3 -3
  83. package/build/cjs/cc/ProtectionCC.js +686 -494
  84. package/build/cjs/cc/ProtectionCC.js.map +3 -3
  85. package/build/cjs/cc/SceneActivationCC.js +165 -97
  86. package/build/cjs/cc/SceneActivationCC.js.map +3 -3
  87. package/build/cjs/cc/SceneActuatorConfigurationCC.js +346 -243
  88. package/build/cjs/cc/SceneActuatorConfigurationCC.js.map +3 -3
  89. package/build/cjs/cc/SceneControllerConfigurationCC.js +401 -298
  90. package/build/cjs/cc/SceneControllerConfigurationCC.js.map +3 -3
  91. package/build/cjs/cc/ScheduleEntryLockCC.js +1552 -1272
  92. package/build/cjs/cc/ScheduleEntryLockCC.js.map +3 -3
  93. package/build/cjs/cc/Security2CC.js +1483 -1219
  94. package/build/cjs/cc/Security2CC.js.map +3 -3
  95. package/build/cjs/cc/SecurityCC.js +839 -619
  96. package/build/cjs/cc/SecurityCC.js.map +3 -3
  97. package/build/cjs/cc/SoundSwitchCC.js +707 -515
  98. package/build/cjs/cc/SoundSwitchCC.js.map +3 -3
  99. package/build/cjs/cc/SupervisionCC.js +327 -237
  100. package/build/cjs/cc/SupervisionCC.js.map +3 -3
  101. package/build/cjs/cc/ThermostatFanModeCC.js +386 -263
  102. package/build/cjs/cc/ThermostatFanModeCC.js.map +3 -3
  103. package/build/cjs/cc/ThermostatFanStateCC.js +192 -106
  104. package/build/cjs/cc/ThermostatFanStateCC.js.map +3 -3
  105. package/build/cjs/cc/ThermostatModeCC.js +425 -302
  106. package/build/cjs/cc/ThermostatModeCC.js.map +3 -3
  107. package/build/cjs/cc/ThermostatOperatingStateCC.js +188 -102
  108. package/build/cjs/cc/ThermostatOperatingStateCC.js.map +3 -3
  109. package/build/cjs/cc/ThermostatSetbackCC.js +277 -173
  110. package/build/cjs/cc/ThermostatSetbackCC.js.map +3 -3
  111. package/build/cjs/cc/ThermostatSetpointCC.js +645 -491
  112. package/build/cjs/cc/ThermostatSetpointCC.js.map +3 -3
  113. package/build/cjs/cc/TimeCC.js +515 -353
  114. package/build/cjs/cc/TimeCC.js.map +3 -3
  115. package/build/cjs/cc/TimeParametersCC.js +302 -202
  116. package/build/cjs/cc/TimeParametersCC.js.map +3 -3
  117. package/build/cjs/cc/TransportServiceCC.js +433 -315
  118. package/build/cjs/cc/TransportServiceCC.js.map +3 -3
  119. package/build/cjs/cc/UserCodeCC.js +1385 -1102
  120. package/build/cjs/cc/UserCodeCC.js.map +3 -3
  121. package/build/cjs/cc/VersionCC.js +696 -562
  122. package/build/cjs/cc/VersionCC.js.map +3 -3
  123. package/build/cjs/cc/WakeUpCC.js +499 -346
  124. package/build/cjs/cc/WakeUpCC.js.map +3 -3
  125. package/build/cjs/cc/WindowCoveringCC.js +626 -478
  126. package/build/cjs/cc/WindowCoveringCC.js.map +3 -3
  127. package/build/cjs/cc/ZWaveLongRangeCC.js +57 -10
  128. package/build/cjs/cc/ZWaveLongRangeCC.js.map +2 -2
  129. package/build/cjs/cc/ZWavePlusCC.js +233 -159
  130. package/build/cjs/cc/ZWavePlusCC.js.map +3 -3
  131. package/build/cjs/cc/ZWaveProtocolCC.js +1515 -948
  132. package/build/cjs/cc/ZWaveProtocolCC.js.map +3 -3
  133. package/build/cjs/cc/manufacturerProprietary/Decorators.d.ts +4 -4
  134. package/build/cjs/cc/manufacturerProprietary/Decorators.js.map +1 -1
  135. package/build/cjs/cc/manufacturerProprietary/FibaroCC.js +395 -274
  136. package/build/cjs/cc/manufacturerProprietary/FibaroCC.js.map +3 -3
  137. package/build/cjs/lib/CommandClassDecorators.d.ts +11 -15
  138. package/build/cjs/lib/CommandClassDecorators.js +19 -20
  139. package/build/cjs/lib/CommandClassDecorators.js.map +2 -2
  140. package/build/cjs/lib/Security2/Extension.d.ts +1 -1
  141. package/build/cjs/lib/Security2/Extension.js +217 -126
  142. package/build/cjs/lib/Security2/Extension.js.map +3 -3
  143. package/build/esm/cc/AlarmSensorCC.d.ts.map +1 -1
  144. package/build/esm/cc/AlarmSensorCC.js +389 -291
  145. package/build/esm/cc/AlarmSensorCC.js.map +1 -1
  146. package/build/esm/cc/AssociationCC.d.ts.map +1 -1
  147. package/build/esm/cc/AssociationCC.js +678 -537
  148. package/build/esm/cc/AssociationCC.js.map +1 -1
  149. package/build/esm/cc/AssociationGroupInfoCC.d.ts.map +1 -1
  150. package/build/esm/cc/AssociationGroupInfoCC.js +659 -539
  151. package/build/esm/cc/AssociationGroupInfoCC.js.map +1 -1
  152. package/build/esm/cc/BarrierOperatorCC.d.ts.map +1 -1
  153. package/build/esm/cc/BarrierOperatorCC.js +634 -493
  154. package/build/esm/cc/BarrierOperatorCC.js.map +1 -1
  155. package/build/esm/cc/BasicCC.d.ts.map +1 -1
  156. package/build/esm/cc/BasicCC.js +380 -302
  157. package/build/esm/cc/BasicCC.js.map +1 -1
  158. package/build/esm/cc/BatteryCC.d.ts.map +1 -1
  159. package/build/esm/cc/BatteryCC.js +449 -384
  160. package/build/esm/cc/BatteryCC.js.map +1 -1
  161. package/build/esm/cc/BinarySensorCC.d.ts.map +1 -1
  162. package/build/esm/cc/BinarySensorCC.js +395 -297
  163. package/build/esm/cc/BinarySensorCC.js.map +1 -1
  164. package/build/esm/cc/BinarySwitchCC.d.ts.map +1 -1
  165. package/build/esm/cc/BinarySwitchCC.js +353 -274
  166. package/build/esm/cc/BinarySwitchCC.js.map +1 -1
  167. package/build/esm/cc/CRC16CC.js +162 -98
  168. package/build/esm/cc/CRC16CC.js.map +1 -1
  169. package/build/esm/cc/CentralSceneCC.d.ts.map +1 -1
  170. package/build/esm/cc/CentralSceneCC.js +465 -351
  171. package/build/esm/cc/CentralSceneCC.js.map +1 -1
  172. package/build/esm/cc/ClimateControlScheduleCC.d.ts.map +1 -1
  173. package/build/esm/cc/ClimateControlScheduleCC.js +454 -313
  174. package/build/esm/cc/ClimateControlScheduleCC.js.map +1 -1
  175. package/build/esm/cc/ClockCC.js +248 -159
  176. package/build/esm/cc/ClockCC.js.map +1 -1
  177. package/build/esm/cc/ColorSwitchCC.d.ts.map +1 -1
  178. package/build/esm/cc/ColorSwitchCC.js +802 -677
  179. package/build/esm/cc/ColorSwitchCC.js.map +1 -1
  180. package/build/esm/cc/ConfigurationCC.js +1899 -1687
  181. package/build/esm/cc/ConfigurationCC.js.map +1 -1
  182. package/build/esm/cc/DeviceResetLocallyCC.js +124 -59
  183. package/build/esm/cc/DeviceResetLocallyCC.js.map +1 -1
  184. package/build/esm/cc/DoorLockCC.d.ts.map +1 -1
  185. package/build/esm/cc/DoorLockCC.js +951 -849
  186. package/build/esm/cc/DoorLockCC.js.map +1 -1
  187. package/build/esm/cc/DoorLockLoggingCC.d.ts.map +1 -1
  188. package/build/esm/cc/DoorLockLoggingCC.js +316 -218
  189. package/build/esm/cc/DoorLockLoggingCC.js.map +1 -1
  190. package/build/esm/cc/EnergyProductionCC.js +240 -164
  191. package/build/esm/cc/EnergyProductionCC.js.map +1 -1
  192. package/build/esm/cc/EntryControlCC.d.ts.map +1 -1
  193. package/build/esm/cc/EntryControlCC.js +629 -493
  194. package/build/esm/cc/EntryControlCC.js.map +1 -1
  195. package/build/esm/cc/FirmwareUpdateMetaDataCC.d.ts.map +1 -1
  196. package/build/esm/cc/FirmwareUpdateMetaDataCC.js +938 -769
  197. package/build/esm/cc/FirmwareUpdateMetaDataCC.js.map +1 -1
  198. package/build/esm/cc/HailCC.js +51 -12
  199. package/build/esm/cc/HailCC.js.map +1 -1
  200. package/build/esm/cc/HumidityControlModeCC.d.ts.map +1 -1
  201. package/build/esm/cc/HumidityControlModeCC.js +357 -250
  202. package/build/esm/cc/HumidityControlModeCC.js.map +1 -1
  203. package/build/esm/cc/HumidityControlOperatingStateCC.d.ts.map +1 -1
  204. package/build/esm/cc/HumidityControlOperatingStateCC.js +182 -109
  205. package/build/esm/cc/HumidityControlOperatingStateCC.js.map +1 -1
  206. package/build/esm/cc/HumidityControlSetpointCC.d.ts.map +1 -1
  207. package/build/esm/cc/HumidityControlSetpointCC.js +706 -546
  208. package/build/esm/cc/HumidityControlSetpointCC.js.map +1 -1
  209. package/build/esm/cc/InclusionControllerCC.js +197 -119
  210. package/build/esm/cc/InclusionControllerCC.js.map +1 -1
  211. package/build/esm/cc/IndicatorCC.js +973 -835
  212. package/build/esm/cc/IndicatorCC.js.map +1 -1
  213. package/build/esm/cc/IrrigationCC.d.ts.map +1 -1
  214. package/build/esm/cc/IrrigationCC.js +1697 -1496
  215. package/build/esm/cc/IrrigationCC.js.map +1 -1
  216. package/build/esm/cc/LanguageCC.d.ts.map +1 -1
  217. package/build/esm/cc/LanguageCC.js +266 -184
  218. package/build/esm/cc/LanguageCC.js.map +1 -1
  219. package/build/esm/cc/LockCC.d.ts.map +1 -1
  220. package/build/esm/cc/LockCC.js +247 -162
  221. package/build/esm/cc/LockCC.js.map +1 -1
  222. package/build/esm/cc/ManufacturerProprietaryCC.js +192 -141
  223. package/build/esm/cc/ManufacturerProprietaryCC.js.map +1 -1
  224. package/build/esm/cc/ManufacturerSpecificCC.d.ts.map +1 -1
  225. package/build/esm/cc/ManufacturerSpecificCC.js +312 -223
  226. package/build/esm/cc/ManufacturerSpecificCC.js.map +1 -1
  227. package/build/esm/cc/MeterCC.d.ts.map +1 -1
  228. package/build/esm/cc/MeterCC.js +896 -795
  229. package/build/esm/cc/MeterCC.js.map +1 -1
  230. package/build/esm/cc/MultiChannelAssociationCC.d.ts.map +1 -1
  231. package/build/esm/cc/MultiChannelAssociationCC.js +631 -518
  232. package/build/esm/cc/MultiChannelAssociationCC.js.map +1 -1
  233. package/build/esm/cc/MultiChannelCC.d.ts.map +1 -1
  234. package/build/esm/cc/MultiChannelCC.js +1106 -921
  235. package/build/esm/cc/MultiChannelCC.js.map +1 -1
  236. package/build/esm/cc/MultiCommandCC.js +166 -102
  237. package/build/esm/cc/MultiCommandCC.js.map +1 -1
  238. package/build/esm/cc/MultilevelSensorCC.d.ts.map +1 -1
  239. package/build/esm/cc/MultilevelSensorCC.js +616 -497
  240. package/build/esm/cc/MultilevelSensorCC.js.map +1 -1
  241. package/build/esm/cc/MultilevelSwitchCC.d.ts.map +1 -1
  242. package/build/esm/cc/MultilevelSwitchCC.js +621 -496
  243. package/build/esm/cc/MultilevelSwitchCC.js.map +1 -1
  244. package/build/esm/cc/NoOperationCC.js +82 -29
  245. package/build/esm/cc/NoOperationCC.js.map +1 -1
  246. package/build/esm/cc/NodeNamingCC.d.ts.map +1 -1
  247. package/build/esm/cc/NodeNamingCC.js +413 -294
  248. package/build/esm/cc/NodeNamingCC.js.map +1 -1
  249. package/build/esm/cc/NotificationCC.d.ts.map +1 -1
  250. package/build/esm/cc/NotificationCC.js +1097 -966
  251. package/build/esm/cc/NotificationCC.js.map +1 -1
  252. package/build/esm/cc/PowerlevelCC.js +437 -311
  253. package/build/esm/cc/PowerlevelCC.js.map +1 -1
  254. package/build/esm/cc/ProtectionCC.d.ts.map +1 -1
  255. package/build/esm/cc/ProtectionCC.js +704 -543
  256. package/build/esm/cc/ProtectionCC.js.map +1 -1
  257. package/build/esm/cc/SceneActivationCC.d.ts.map +1 -1
  258. package/build/esm/cc/SceneActivationCC.js +157 -100
  259. package/build/esm/cc/SceneActivationCC.js.map +1 -1
  260. package/build/esm/cc/SceneActuatorConfigurationCC.js +357 -269
  261. package/build/esm/cc/SceneActuatorConfigurationCC.js.map +1 -1
  262. package/build/esm/cc/SceneControllerConfigurationCC.js +434 -346
  263. package/build/esm/cc/SceneControllerConfigurationCC.js.map +1 -1
  264. package/build/esm/cc/ScheduleEntryLockCC.d.ts.map +1 -1
  265. package/build/esm/cc/ScheduleEntryLockCC.js +1596 -1357
  266. package/build/esm/cc/ScheduleEntryLockCC.js.map +1 -1
  267. package/build/esm/cc/Security2CC.js +1633 -1406
  268. package/build/esm/cc/Security2CC.js.map +1 -1
  269. package/build/esm/cc/SecurityCC.js +876 -687
  270. package/build/esm/cc/SecurityCC.js.map +1 -1
  271. package/build/esm/cc/SoundSwitchCC.d.ts.map +1 -1
  272. package/build/esm/cc/SoundSwitchCC.js +689 -526
  273. package/build/esm/cc/SoundSwitchCC.js.map +1 -1
  274. package/build/esm/cc/SupervisionCC.js +349 -272
  275. package/build/esm/cc/SupervisionCC.js.map +1 -1
  276. package/build/esm/cc/ThermostatFanModeCC.d.ts.map +1 -1
  277. package/build/esm/cc/ThermostatFanModeCC.js +388 -284
  278. package/build/esm/cc/ThermostatFanModeCC.js.map +1 -1
  279. package/build/esm/cc/ThermostatFanStateCC.d.ts.map +1 -1
  280. package/build/esm/cc/ThermostatFanStateCC.js +184 -111
  281. package/build/esm/cc/ThermostatFanStateCC.js.map +1 -1
  282. package/build/esm/cc/ThermostatModeCC.d.ts.map +1 -1
  283. package/build/esm/cc/ThermostatModeCC.js +435 -331
  284. package/build/esm/cc/ThermostatModeCC.js.map +1 -1
  285. package/build/esm/cc/ThermostatOperatingStateCC.d.ts.map +1 -1
  286. package/build/esm/cc/ThermostatOperatingStateCC.js +180 -107
  287. package/build/esm/cc/ThermostatOperatingStateCC.js.map +1 -1
  288. package/build/esm/cc/ThermostatSetbackCC.js +274 -185
  289. package/build/esm/cc/ThermostatSetbackCC.js.map +1 -1
  290. package/build/esm/cc/ThermostatSetpointCC.d.ts.map +1 -1
  291. package/build/esm/cc/ThermostatSetpointCC.js +674 -543
  292. package/build/esm/cc/ThermostatSetpointCC.js.map +1 -1
  293. package/build/esm/cc/TimeCC.js +499 -360
  294. package/build/esm/cc/TimeCC.js.map +1 -1
  295. package/build/esm/cc/TimeParametersCC.d.ts.map +1 -1
  296. package/build/esm/cc/TimeParametersCC.js +296 -211
  297. package/build/esm/cc/TimeParametersCC.js.map +1 -1
  298. package/build/esm/cc/TransportServiceCC.js +464 -363
  299. package/build/esm/cc/TransportServiceCC.js.map +1 -1
  300. package/build/esm/cc/UserCodeCC.d.ts.map +1 -1
  301. package/build/esm/cc/UserCodeCC.js +1443 -1205
  302. package/build/esm/cc/UserCodeCC.js.map +1 -1
  303. package/build/esm/cc/VersionCC.d.ts.map +1 -1
  304. package/build/esm/cc/VersionCC.js +744 -635
  305. package/build/esm/cc/VersionCC.js.map +1 -1
  306. package/build/esm/cc/WakeUpCC.d.ts.map +1 -1
  307. package/build/esm/cc/WakeUpCC.js +494 -364
  308. package/build/esm/cc/WakeUpCC.js.map +1 -1
  309. package/build/esm/cc/WindowCoveringCC.d.ts.map +1 -1
  310. package/build/esm/cc/WindowCoveringCC.js +655 -530
  311. package/build/esm/cc/WindowCoveringCC.js.map +1 -1
  312. package/build/esm/cc/ZWaveLongRangeCC.js +51 -11
  313. package/build/esm/cc/ZWaveLongRangeCC.js.map +1 -1
  314. package/build/esm/cc/ZWavePlusCC.d.ts.map +1 -1
  315. package/build/esm/cc/ZWavePlusCC.js +223 -162
  316. package/build/esm/cc/ZWavePlusCC.js.map +1 -1
  317. package/build/esm/cc/ZWaveProtocolCC.js +1443 -953
  318. package/build/esm/cc/ZWaveProtocolCC.js.map +1 -1
  319. package/build/esm/cc/manufacturerProprietary/Decorators.d.ts +4 -4
  320. package/build/esm/cc/manufacturerProprietary/Decorators.d.ts.map +1 -1
  321. package/build/esm/cc/manufacturerProprietary/FibaroCC.js +390 -286
  322. package/build/esm/cc/manufacturerProprietary/FibaroCC.js.map +1 -1
  323. package/build/esm/lib/CommandClassDecorators.d.ts +11 -15
  324. package/build/esm/lib/CommandClassDecorators.d.ts.map +1 -1
  325. package/build/esm/lib/CommandClassDecorators.js +24 -24
  326. package/build/esm/lib/CommandClassDecorators.js.map +1 -1
  327. package/build/esm/lib/Security2/Extension.d.ts +1 -1
  328. package/build/esm/lib/Security2/Extension.d.ts.map +1 -1
  329. package/build/esm/lib/Security2/Extension.js +207 -123
  330. package/build/esm/lib/Security2/Extension.js.map +1 -1
  331. package/package.json +6 -6
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cc/ProtectionCC.ts"],
4
- "sourcesContent": ["import {\n\tCommandClasses,\n\tMAX_NODES,\n\ttype MaybeNotKnown,\n\ttype MessageOrCCLogEntry,\n\tMessagePriority,\n\ttype MessageRecord,\n\ttype SupervisionResult,\n\tTimeout,\n\tValueMetadata,\n\ttype WithAddress,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tenumValuesToMetadataStates,\n\tparseBitMask,\n\tvalidatePayload,\n} from \"@zwave-js/core/safe\";\nimport type {\n\tCCEncodingContext,\n\tCCParsingContext,\n\tGetValueDB,\n} from \"@zwave-js/host/safe\";\nimport { Bytes } from \"@zwave-js/shared/safe\";\nimport { getEnumMemberName, pick } from \"@zwave-js/shared/safe\";\nimport { validateArgs } from \"@zwave-js/transformers\";\nimport { padStart } from \"alcalzone-shared/strings/index.js\";\nimport {\n\tCCAPI,\n\tPOLL_VALUE,\n\ttype PollValueImplementation,\n\tSET_VALUE,\n\ttype SetValueImplementation,\n\tthrowUnsupportedProperty,\n\tthrowWrongValueType,\n} from \"../lib/API.js\";\nimport {\n\ttype CCRaw,\n\tCommandClass,\n\ttype InterviewContext,\n\ttype PersistValuesContext,\n\ttype RefreshValuesContext,\n\tgetEffectiveCCVersion,\n} from \"../lib/CommandClass.js\";\nimport {\n\tAPI,\n\tCCCommand,\n\tccValue,\n\tccValues,\n\tcommandClass,\n\texpectedCCResponse,\n\timplementedVersion,\n\tuseSupervision,\n} from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport {\n\tLocalProtectionState,\n\tProtectionCommand,\n\tRFProtectionState,\n} from \"../lib/_Types.js\";\n\nexport const ProtectionCCValues = Object.freeze({\n\t...V.defineStaticCCValues(CommandClasses.Protection, {\n\t\t...V.staticProperty(\n\t\t\t\"exclusiveControlNodeId\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.UInt8,\n\t\t\t\tmin: 1,\n\t\t\t\tmax: MAX_NODES,\n\t\t\t\tlabel: \"Node ID with exclusive control\",\n\t\t\t} as const,\n\t\t\t{ minVersion: 2 } as const,\n\t\t),\n\n\t\t...V.staticPropertyWithName(\n\t\t\t\"localProtectionState\",\n\t\t\t\"local\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.Number,\n\t\t\t\tlabel: \"Local protection state\",\n\t\t\t\tstates: enumValuesToMetadataStates(LocalProtectionState),\n\t\t\t} as const,\n\t\t),\n\n\t\t...V.staticPropertyWithName(\n\t\t\t\"rfProtectionState\",\n\t\t\t\"rf\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.Number,\n\t\t\t\tlabel: \"RF protection state\",\n\t\t\t\tstates: enumValuesToMetadataStates(RFProtectionState),\n\t\t\t} as const,\n\t\t\t{ minVersion: 2 } as const,\n\t\t),\n\n\t\t...V.staticProperty(\n\t\t\t\"timeout\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.UInt8,\n\t\t\t\tlabel: \"RF protection timeout\",\n\t\t\t} as const,\n\t\t\t{ minVersion: 2 } as const,\n\t\t),\n\n\t\t...V.staticProperty(\"supportsExclusiveControl\", undefined, {\n\t\t\tinternal: true,\n\t\t}),\n\t\t...V.staticProperty(\"supportsTimeout\", undefined, {\n\t\t\tinternal: true,\n\t\t}),\n\t\t...V.staticProperty(\"supportedLocalStates\", undefined, {\n\t\t\tinternal: true,\n\t\t}),\n\t\t...V.staticProperty(\"supportedRFStates\", undefined, {\n\t\t\tinternal: true,\n\t\t}),\n\t}),\n});\n\n@API(CommandClasses.Protection)\nexport class ProtectionCCAPI extends CCAPI {\n\tpublic supportsCommand(cmd: ProtectionCommand): MaybeNotKnown<boolean> {\n\t\tswitch (cmd) {\n\t\t\tcase ProtectionCommand.Get:\n\t\t\t\treturn this.isSinglecast();\n\t\t\tcase ProtectionCommand.Set:\n\t\t\t\treturn true; // This is mandatory\n\t\t\tcase ProtectionCommand.SupportedGet:\n\t\t\t\treturn this.version >= 2 && this.isSinglecast();\n\t\t\tcase ProtectionCommand.TimeoutGet:\n\t\t\tcase ProtectionCommand.TimeoutSet: {\n\t\t\t\treturn (\n\t\t\t\t\tthis.isSinglecast()\n\t\t\t\t\t&& this.tryGetValueDB()?.getValue<boolean>(\n\t\t\t\t\t\tProtectionCCValues.supportsTimeout.endpoint(\n\t\t\t\t\t\t\tthis.endpoint.index,\n\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\t\t\tcase ProtectionCommand.ExclusiveControlGet:\n\t\t\tcase ProtectionCommand.ExclusiveControlSet: {\n\t\t\t\treturn (\n\t\t\t\t\tthis.isSinglecast()\n\t\t\t\t\t&& this.tryGetValueDB()?.getValue<boolean>(\n\t\t\t\t\t\tProtectionCCValues.supportsExclusiveControl.endpoint(\n\t\t\t\t\t\t\tthis.endpoint.index,\n\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn super.supportsCommand(cmd);\n\t}\n\n\tprotected override get [SET_VALUE](): SetValueImplementation {\n\t\treturn async function(this: ProtectionCCAPI, { property }, value) {\n\t\t\tconst valueDB = this.tryGetValueDB();\n\t\t\tif (property === \"local\") {\n\t\t\t\tif (typeof value !== \"number\") {\n\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\"number\",\n\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\t// We need to set both values together, so retrieve the other one from the value DB\n\t\t\t\tconst rf = valueDB?.getValue<RFProtectionState>(\n\t\t\t\t\tProtectionCCValues.rfProtectionState.endpoint(\n\t\t\t\t\t\tthis.endpoint.index,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t\treturn this.set(value, rf);\n\t\t\t} else if (property === \"rf\") {\n\t\t\t\tif (typeof value !== \"number\") {\n\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\"number\",\n\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\t// We need to set both values together, so retrieve the other one from the value DB\n\t\t\t\tconst local = valueDB?.getValue<LocalProtectionState>(\n\t\t\t\t\tProtectionCCValues.localProtectionState.endpoint(\n\t\t\t\t\t\tthis.endpoint.index,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t\treturn this.set(\n\t\t\t\t\tlocal ?? LocalProtectionState.Unprotected,\n\t\t\t\t\tvalue,\n\t\t\t\t);\n\t\t\t} else if (property === \"exclusiveControlNodeId\") {\n\t\t\t\tif (typeof value !== \"number\") {\n\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\"number\",\n\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn this.setExclusiveControl(value);\n\t\t\t} else {\n\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t}\n\t\t};\n\t}\n\n\tprotected get [POLL_VALUE](): PollValueImplementation {\n\t\treturn async function(this: ProtectionCCAPI, { property }) {\n\t\t\tswitch (property) {\n\t\t\t\tcase \"local\":\n\t\t\t\tcase \"rf\":\n\t\t\t\t\treturn (await this.get())?.[property];\n\t\t\t\tcase \"exclusiveControlNodeId\":\n\t\t\t\t\treturn this.getExclusiveControl();\n\t\t\t\tdefault:\n\t\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t}\n\t\t};\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async get() {\n\t\tthis.assertSupportsCommand(ProtectionCommand, ProtectionCommand.Get);\n\n\t\tconst cc = new ProtectionCCGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t});\n\t\tconst response = await this.host.sendCommand<ProtectionCCReport>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) {\n\t\t\treturn pick(response, [\"local\", \"rf\"]);\n\t\t}\n\t}\n\n\t@validateArgs({ strictEnums: true })\n\tpublic async set(\n\t\tlocal: LocalProtectionState,\n\t\trf?: RFProtectionState,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(ProtectionCommand, ProtectionCommand.Set);\n\n\t\tconst cc = new ProtectionCCSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tlocal,\n\t\t\trf,\n\t\t});\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async getSupported() {\n\t\tthis.assertSupportsCommand(\n\t\t\tProtectionCommand,\n\t\t\tProtectionCommand.SupportedGet,\n\t\t);\n\n\t\tconst cc = new ProtectionCCSupportedGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tProtectionCCSupportedReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) {\n\t\t\treturn pick(response, [\n\t\t\t\t\"supportsExclusiveControl\",\n\t\t\t\t\"supportsTimeout\",\n\t\t\t\t\"supportedLocalStates\",\n\t\t\t\t\"supportedRFStates\",\n\t\t\t]);\n\t\t}\n\t}\n\n\tpublic async getExclusiveControl(): Promise<MaybeNotKnown<number>> {\n\t\tthis.assertSupportsCommand(\n\t\t\tProtectionCommand,\n\t\t\tProtectionCommand.ExclusiveControlGet,\n\t\t);\n\n\t\tconst cc = new ProtectionCCExclusiveControlGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tProtectionCCExclusiveControlReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\treturn response?.exclusiveControlNodeId;\n\t}\n\n\t@validateArgs()\n\tpublic async setExclusiveControl(\n\t\tnodeId: number,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tProtectionCommand,\n\t\t\tProtectionCommand.ExclusiveControlSet,\n\t\t);\n\n\t\tconst cc = new ProtectionCCExclusiveControlSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\texclusiveControlNodeId: nodeId,\n\t\t});\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\tpublic async getTimeout(): Promise<MaybeNotKnown<Timeout>> {\n\t\tthis.assertSupportsCommand(\n\t\t\tProtectionCommand,\n\t\t\tProtectionCommand.TimeoutGet,\n\t\t);\n\n\t\tconst cc = new ProtectionCCTimeoutGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tProtectionCCTimeoutReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\treturn response?.timeout;\n\t}\n\n\t@validateArgs()\n\tpublic async setTimeout(\n\t\ttimeout: Timeout,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tProtectionCommand,\n\t\t\tProtectionCommand.TimeoutSet,\n\t\t);\n\n\t\tconst cc = new ProtectionCCTimeoutSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\ttimeout,\n\t\t});\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n}\n\n@commandClass(CommandClasses.Protection)\n@implementedVersion(2)\n@ccValues(ProtectionCCValues)\nexport class ProtectionCC extends CommandClass {\n\tdeclare ccCommand: ProtectionCommand;\n\n\tpublic async interview(\n\t\tctx: InterviewContext,\n\t): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\t\tconst endpoint = this.getEndpoint(ctx)!;\n\t\tconst api = CCAPI.create(\n\t\t\tCommandClasses.Protection,\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t).withOptions({\n\t\t\tpriority: MessagePriority.NodeQuery,\n\t\t});\n\n\t\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: `Interviewing ${this.ccName}...`,\n\t\t\tdirection: \"none\",\n\t\t});\n\n\t\t// We need to do some queries after a potential timeout\n\t\t// In this case, do now mark this CC as interviewed completely\n\t\tlet hadCriticalTimeout = false;\n\n\t\t// First find out what the device supports\n\t\tif (api.version >= 2) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tmessage: \"querying protection capabilities...\",\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tconst resp = await api.getSupported();\n\t\t\tif (resp) {\n\t\t\t\tconst logMessage = `received protection capabilities:\nexclusive control: ${resp.supportsExclusiveControl}\ntimeout: ${resp.supportsTimeout}\nlocal protection states: ${\n\t\t\t\t\tresp.supportedLocalStates\n\t\t\t\t\t\t.map((local) =>\n\t\t\t\t\t\t\tgetEnumMemberName(LocalProtectionState, local)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.map((str) => `\\n\u00B7 ${str}`)\n\t\t\t\t\t\t.join(\"\")\n\t\t\t\t}\nRF protection states: ${\n\t\t\t\t\tresp.supportedRFStates\n\t\t\t\t\t\t.map((local) =>\n\t\t\t\t\t\t\tgetEnumMemberName(RFProtectionState, local)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.map((str) => `\\n\u00B7 ${str}`)\n\t\t\t\t\t\t.join(\"\")\n\t\t\t\t}`;\n\t\t\t\tctx.logNode(node.id, {\n\t\t\t\t\tmessage: logMessage,\n\t\t\t\t\tdirection: \"inbound\",\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\thadCriticalTimeout = true;\n\t\t\t}\n\t\t}\n\n\t\tawait this.refreshValues(ctx);\n\n\t\t// Remember that the interview is complete\n\t\tif (!hadCriticalTimeout) this.setInterviewComplete(ctx, true);\n\t}\n\n\tpublic async refreshValues(\n\t\tctx: RefreshValuesContext,\n\t): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\t\tconst endpoint = this.getEndpoint(ctx)!;\n\t\tconst api = CCAPI.create(\n\t\t\tCommandClasses.Protection,\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t).withOptions({\n\t\t\tpriority: MessagePriority.NodeQuery,\n\t\t});\n\n\t\tconst supportsExclusiveControl = !!this.getValue(\n\t\t\tctx,\n\t\t\tProtectionCCValues.supportsExclusiveControl,\n\t\t);\n\t\tconst supportsTimeout = !!this.getValue(\n\t\t\tctx,\n\t\t\tProtectionCCValues.supportsTimeout,\n\t\t);\n\n\t\t// Query the current state\n\t\tctx.logNode(node.id, {\n\t\t\tmessage: \"querying protection status...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\t\tconst protectionResp = await api.get();\n\t\tif (protectionResp) {\n\t\t\tlet logMessage = `received protection status:\nlocal: ${getEnumMemberName(LocalProtectionState, protectionResp.local)}`;\n\t\t\tif (protectionResp.rf != undefined) {\n\t\t\t\tlogMessage += `\nrf ${getEnumMemberName(RFProtectionState, protectionResp.rf)}`;\n\t\t\t}\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tmessage: logMessage,\n\t\t\t\tdirection: \"inbound\",\n\t\t\t});\n\t\t}\n\n\t\tif (supportsTimeout) {\n\t\t\t// Query the current timeout\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tmessage: \"querying protection timeout...\",\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tconst timeout = await api.getTimeout();\n\t\t\tif (timeout) {\n\t\t\t\tctx.logNode(node.id, {\n\t\t\t\t\tmessage: `received timeout: ${timeout.toString()}`,\n\t\t\t\t\tdirection: \"inbound\",\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (supportsExclusiveControl) {\n\t\t\t// Query the current timeout\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tmessage: \"querying exclusive control node...\",\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tconst nodeId = await api.getExclusiveControl();\n\t\t\tif (nodeId != undefined) {\n\t\t\t\tctx.logNode(node.id, {\n\t\t\t\t\tmessage: (nodeId !== 0\n\t\t\t\t\t\t? `Node ${padStart(nodeId.toString(), 3, \"0\")}`\n\t\t\t\t\t\t: `no node`) + ` has exclusive control`,\n\t\t\t\t\tdirection: \"inbound\",\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\n// @publicAPI\nexport interface ProtectionCCSetOptions {\n\tlocal: LocalProtectionState;\n\trf?: RFProtectionState;\n}\n\n@CCCommand(ProtectionCommand.Set)\n@useSupervision()\nexport class ProtectionCCSet extends ProtectionCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ProtectionCCSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.local = options.local;\n\t\tthis.rf = options.rf;\n\t}\n\n\tpublic static from(_raw: CCRaw, _ctx: CCParsingContext): ProtectionCCSet {\n\t\t// TODO: Deserialize payload\n\t\tthrow new ZWaveError(\n\t\t\t`${this.name}: deserialization not implemented`,\n\t\t\tZWaveErrorCodes.Deserialization_NotImplemented,\n\t\t);\n\n\t\t// return new ProtectionCCSet({\n\t\t// \tnodeId: ctx.sourceNodeId,\n\t\t// });\n\t}\n\n\tpublic local: LocalProtectionState;\n\tpublic rf?: RFProtectionState;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.local & 0b1111,\n\t\t\t(this.rf ?? RFProtectionState.Unprotected) & 0b1111,\n\t\t]);\n\n\t\tconst ccVersion = getEffectiveCCVersion(ctx, this);\n\t\tif (\n\t\t\tccVersion < 2 && ctx.getDeviceConfig?.(\n\t\t\t\tthis.nodeId as number,\n\t\t\t)?.compat?.encodeCCsUsingTargetVersion\n\t\t) {\n\t\t\t// When forcing CC version 1, only include the local state\n\t\t\tthis.payload = this.payload.subarray(0, 1);\n\t\t}\n\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\tlocal: getEnumMemberName(LocalProtectionState, this.local),\n\t\t};\n\t\tif (this.rf != undefined) {\n\t\t\tmessage.rf = getEnumMemberName(RFProtectionState, this.rf);\n\t\t}\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage,\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface ProtectionCCReportOptions {\n\tlocal: LocalProtectionState;\n\trf?: RFProtectionState;\n}\n\n@CCCommand(ProtectionCommand.Report)\nexport class ProtectionCCReport extends ProtectionCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ProtectionCCReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\t// TODO: Check implementation:\n\t\tthis.local = options.local;\n\t\tthis.rf = options.rf;\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): ProtectionCCReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst local: LocalProtectionState = raw.payload[0] & 0b1111;\n\t\tlet rf: RFProtectionState | undefined;\n\t\tif (raw.payload.length >= 2) {\n\t\t\trf = raw.payload[1] & 0b1111;\n\t\t}\n\n\t\treturn new ProtectionCCReport({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tlocal,\n\t\t\trf,\n\t\t});\n\t}\n\n\t@ccValue(ProtectionCCValues.localProtectionState)\n\tpublic readonly local: LocalProtectionState;\n\n\t@ccValue(ProtectionCCValues.rfProtectionState)\n\tpublic readonly rf?: RFProtectionState;\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\tlocal: getEnumMemberName(LocalProtectionState, this.local),\n\t\t};\n\t\tif (this.rf != undefined) {\n\t\t\tmessage.rf = getEnumMemberName(RFProtectionState, this.rf);\n\t\t}\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage,\n\t\t};\n\t}\n}\n\n@CCCommand(ProtectionCommand.Get)\n@expectedCCResponse(ProtectionCCReport)\nexport class ProtectionCCGet extends ProtectionCC {}\n\n// @publicAPI\nexport interface ProtectionCCSupportedReportOptions {\n\tsupportsTimeout: boolean;\n\tsupportsExclusiveControl: boolean;\n\tsupportedLocalStates: LocalProtectionState[];\n\tsupportedRFStates: RFProtectionState[];\n}\n\n@CCCommand(ProtectionCommand.SupportedReport)\nexport class ProtectionCCSupportedReport extends ProtectionCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ProtectionCCSupportedReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\t// TODO: Check implementation:\n\t\tthis.supportsTimeout = options.supportsTimeout;\n\t\tthis.supportsExclusiveControl = options.supportsExclusiveControl;\n\t\tthis.supportedLocalStates = options.supportedLocalStates;\n\t\tthis.supportedRFStates = options.supportedRFStates;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ProtectionCCSupportedReport {\n\t\tvalidatePayload(raw.payload.length >= 5);\n\t\tconst supportsTimeout = !!(raw.payload[0] & 0b1);\n\t\tconst supportsExclusiveControl = !!(raw.payload[0] & 0b10);\n\t\tconst supportedLocalStates: LocalProtectionState[] = parseBitMask(\n\t\t\traw.payload.subarray(1, 3),\n\t\t\tLocalProtectionState.Unprotected,\n\t\t);\n\t\tconst supportedRFStates: RFProtectionState[] = parseBitMask(\n\t\t\traw.payload.subarray(3, 5),\n\t\t\tRFProtectionState.Unprotected,\n\t\t);\n\n\t\treturn new ProtectionCCSupportedReport({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsupportsTimeout,\n\t\t\tsupportsExclusiveControl,\n\t\t\tsupportedLocalStates,\n\t\t\tsupportedRFStates,\n\t\t});\n\t}\n\n\tpublic persistValues(ctx: PersistValuesContext): boolean {\n\t\tif (!super.persistValues(ctx)) return false;\n\n\t\t// update metadata (partially) for the local and rf values\n\t\tconst localStateValue = ProtectionCCValues.localProtectionState;\n\t\tthis.setMetadata(ctx, localStateValue, {\n\t\t\t...localStateValue.meta,\n\t\t\tstates: enumValuesToMetadataStates(\n\t\t\t\tLocalProtectionState,\n\t\t\t\tthis.supportedLocalStates,\n\t\t\t),\n\t\t});\n\n\t\tconst rfStateValue = ProtectionCCValues.rfProtectionState;\n\t\tthis.setMetadata(ctx, rfStateValue, {\n\t\t\t...rfStateValue.meta,\n\t\t\tstates: enumValuesToMetadataStates(\n\t\t\t\tRFProtectionState,\n\t\t\t\tthis.supportedRFStates,\n\t\t\t),\n\t\t});\n\n\t\treturn true;\n\t}\n\n\t@ccValue(ProtectionCCValues.supportsExclusiveControl)\n\tpublic readonly supportsExclusiveControl: boolean;\n\n\t@ccValue(ProtectionCCValues.supportsTimeout)\n\tpublic readonly supportsTimeout: boolean;\n\n\t@ccValue(ProtectionCCValues.supportedLocalStates)\n\tpublic readonly supportedLocalStates: LocalProtectionState[];\n\n\t@ccValue(ProtectionCCValues.supportedRFStates)\n\tpublic readonly supportedRFStates: RFProtectionState[];\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"supports exclusive control\": this.supportsExclusiveControl,\n\t\t\t\t\"supports timeout\": this.supportsTimeout,\n\t\t\t\t\"local protection states\": this.supportedLocalStates\n\t\t\t\t\t.map((local) =>\n\t\t\t\t\t\tgetEnumMemberName(LocalProtectionState, local)\n\t\t\t\t\t)\n\t\t\t\t\t.map((str) => `\\n\u00B7 ${str}`)\n\t\t\t\t\t.join(\"\"),\n\t\t\t\t\"RF protection states\": this.supportedRFStates\n\t\t\t\t\t.map((rf) => getEnumMemberName(RFProtectionState, rf))\n\t\t\t\t\t.map((str) => `\\n\u00B7 ${str}`)\n\t\t\t\t\t.join(\"\"),\n\t\t\t},\n\t\t};\n\t}\n}\n\n@CCCommand(ProtectionCommand.SupportedGet)\n@expectedCCResponse(ProtectionCCSupportedReport)\nexport class ProtectionCCSupportedGet extends ProtectionCC {}\n\n// @publicAPI\nexport interface ProtectionCCExclusiveControlReportOptions {\n\texclusiveControlNodeId: number;\n}\n\n@CCCommand(ProtectionCommand.ExclusiveControlReport)\nexport class ProtectionCCExclusiveControlReport extends ProtectionCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ProtectionCCExclusiveControlReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\t// TODO: Check implementation:\n\t\tthis.exclusiveControlNodeId = options.exclusiveControlNodeId;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ProtectionCCExclusiveControlReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst exclusiveControlNodeId = raw.payload[0];\n\n\t\treturn new ProtectionCCExclusiveControlReport({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\texclusiveControlNodeId,\n\t\t});\n\t}\n\n\t@ccValue(ProtectionCCValues.exclusiveControlNodeId)\n\tpublic readonly exclusiveControlNodeId: number;\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"exclusive control node id\": this.exclusiveControlNodeId,\n\t\t\t},\n\t\t};\n\t}\n}\n\n@CCCommand(ProtectionCommand.ExclusiveControlGet)\n@expectedCCResponse(ProtectionCCExclusiveControlReport)\nexport class ProtectionCCExclusiveControlGet extends ProtectionCC {}\n\n// @publicAPI\nexport interface ProtectionCCExclusiveControlSetOptions {\n\texclusiveControlNodeId: number;\n}\n\n@CCCommand(ProtectionCommand.ExclusiveControlSet)\n@expectedCCResponse(ProtectionCCReport)\n@useSupervision()\nexport class ProtectionCCExclusiveControlSet extends ProtectionCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ProtectionCCExclusiveControlSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.exclusiveControlNodeId = options.exclusiveControlNodeId;\n\t}\n\n\tpublic static from(\n\t\t_raw: CCRaw,\n\t\t_ctx: CCParsingContext,\n\t): ProtectionCCExclusiveControlSet {\n\t\t// TODO: Deserialize payload\n\t\tthrow new ZWaveError(\n\t\t\t`${this.name}: deserialization not implemented`,\n\t\t\tZWaveErrorCodes.Deserialization_NotImplemented,\n\t\t);\n\n\t\t// return new ProtectionCCExclusiveControlSet({\n\t\t// \tnodeId: ctx.sourceNodeId,\n\t\t// });\n\t}\n\n\tpublic exclusiveControlNodeId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([this.exclusiveControlNodeId]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"exclusive control node id\": this.exclusiveControlNodeId,\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface ProtectionCCTimeoutReportOptions {\n\ttimeout: Timeout;\n}\n\n@CCCommand(ProtectionCommand.TimeoutReport)\nexport class ProtectionCCTimeoutReport extends ProtectionCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ProtectionCCTimeoutReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\t// TODO: Check implementation:\n\t\tthis.timeout = options.timeout;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ProtectionCCTimeoutReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst timeout: Timeout = Timeout.parse(raw.payload[0]);\n\n\t\treturn new ProtectionCCTimeoutReport({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\ttimeout,\n\t\t});\n\t}\n\n\t@ccValue(ProtectionCCValues.timeout)\n\tpublic readonly timeout: Timeout;\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: { timeout: this.timeout.toString() },\n\t\t};\n\t}\n}\n\n@CCCommand(ProtectionCommand.TimeoutGet)\n@expectedCCResponse(ProtectionCCTimeoutReport)\nexport class ProtectionCCTimeoutGet extends ProtectionCC {}\n\n// @publicAPI\nexport interface ProtectionCCTimeoutSetOptions {\n\ttimeout: Timeout;\n}\n\n@CCCommand(ProtectionCommand.TimeoutSet)\n@expectedCCResponse(ProtectionCCReport)\n@useSupervision()\nexport class ProtectionCCTimeoutSet extends ProtectionCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ProtectionCCTimeoutSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.timeout = options.timeout;\n\t}\n\n\tpublic static from(\n\t\t_raw: CCRaw,\n\t\t_ctx: CCParsingContext,\n\t): ProtectionCCTimeoutSet {\n\t\t// TODO: Deserialize payload\n\t\tthrow new ZWaveError(\n\t\t\t`${this.name}: deserialization not implemented`,\n\t\t\tZWaveErrorCodes.Deserialization_NotImplemented,\n\t\t);\n\n\t\t// return new ProtectionCCTimeoutSet({\n\t\t// \tnodeId: ctx.sourceNodeId,\n\t\t// });\n\t}\n\n\tpublic timeout: Timeout;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([this.timeout.serialize()]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: { timeout: this.timeout.toString() },\n\t\t};\n\t}\n}\n"],
5
- "mappings": "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",
6
- "names": ["import_safe", "ProtectionCCAPI", "ProtectionCC", "ProtectionCCSet", "ProtectionCCReport", "ProtectionCCGet", "ProtectionCCSupportedReport", "ProtectionCCSupportedGet", "ProtectionCCExclusiveControlReport", "ProtectionCCExclusiveControlGet", "ProtectionCCExclusiveControlSet", "ProtectionCCTimeoutReport", "ProtectionCCTimeoutGet", "ProtectionCCTimeoutSet"]
4
+ "sourcesContent": ["import {\n\tCommandClasses,\n\tMAX_NODES,\n\ttype MaybeNotKnown,\n\ttype MessageOrCCLogEntry,\n\tMessagePriority,\n\ttype MessageRecord,\n\ttype SupervisionResult,\n\tTimeout,\n\tValueMetadata,\n\ttype WithAddress,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tenumValuesToMetadataStates,\n\tparseBitMask,\n\tvalidatePayload,\n} from \"@zwave-js/core/safe\";\nimport type {\n\tCCEncodingContext,\n\tCCParsingContext,\n\tGetValueDB,\n} from \"@zwave-js/host/safe\";\nimport { Bytes } from \"@zwave-js/shared/safe\";\nimport { getEnumMemberName, pick } from \"@zwave-js/shared/safe\";\nimport { validateArgs } from \"@zwave-js/transformers\";\nimport { padStart } from \"alcalzone-shared/strings/index.js\";\nimport {\n\tCCAPI,\n\tPOLL_VALUE,\n\ttype PollValueImplementation,\n\tSET_VALUE,\n\ttype SetValueImplementation,\n\tthrowUnsupportedProperty,\n\tthrowWrongValueType,\n} from \"../lib/API.js\";\nimport {\n\ttype CCRaw,\n\tCommandClass,\n\ttype InterviewContext,\n\ttype PersistValuesContext,\n\ttype RefreshValuesContext,\n\tgetEffectiveCCVersion,\n} from \"../lib/CommandClass.js\";\nimport {\n\tAPI,\n\tCCCommand,\n\tccValueProperty,\n\tccValues,\n\tcommandClass,\n\texpectedCCResponse,\n\timplementedVersion,\n\tuseSupervision,\n} from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport {\n\tLocalProtectionState,\n\tProtectionCommand,\n\tRFProtectionState,\n} from \"../lib/_Types.js\";\n\nexport const ProtectionCCValues = Object.freeze({\n\t...V.defineStaticCCValues(CommandClasses.Protection, {\n\t\t...V.staticProperty(\n\t\t\t\"exclusiveControlNodeId\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.UInt8,\n\t\t\t\tmin: 1,\n\t\t\t\tmax: MAX_NODES,\n\t\t\t\tlabel: \"Node ID with exclusive control\",\n\t\t\t} as const,\n\t\t\t{ minVersion: 2 } as const,\n\t\t),\n\n\t\t...V.staticPropertyWithName(\n\t\t\t\"localProtectionState\",\n\t\t\t\"local\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.Number,\n\t\t\t\tlabel: \"Local protection state\",\n\t\t\t\tstates: enumValuesToMetadataStates(LocalProtectionState),\n\t\t\t} as const,\n\t\t),\n\n\t\t...V.staticPropertyWithName(\n\t\t\t\"rfProtectionState\",\n\t\t\t\"rf\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.Number,\n\t\t\t\tlabel: \"RF protection state\",\n\t\t\t\tstates: enumValuesToMetadataStates(RFProtectionState),\n\t\t\t} as const,\n\t\t\t{ minVersion: 2 } as const,\n\t\t),\n\n\t\t...V.staticProperty(\n\t\t\t\"timeout\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.UInt8,\n\t\t\t\tlabel: \"RF protection timeout\",\n\t\t\t} as const,\n\t\t\t{ minVersion: 2 } as const,\n\t\t),\n\n\t\t...V.staticProperty(\"supportsExclusiveControl\", undefined, {\n\t\t\tinternal: true,\n\t\t}),\n\t\t...V.staticProperty(\"supportsTimeout\", undefined, {\n\t\t\tinternal: true,\n\t\t}),\n\t\t...V.staticProperty(\"supportedLocalStates\", undefined, {\n\t\t\tinternal: true,\n\t\t}),\n\t\t...V.staticProperty(\"supportedRFStates\", undefined, {\n\t\t\tinternal: true,\n\t\t}),\n\t}),\n});\n\n@API(CommandClasses.Protection)\nexport class ProtectionCCAPI extends CCAPI {\n\tpublic supportsCommand(cmd: ProtectionCommand): MaybeNotKnown<boolean> {\n\t\tswitch (cmd) {\n\t\t\tcase ProtectionCommand.Get:\n\t\t\t\treturn this.isSinglecast();\n\t\t\tcase ProtectionCommand.Set:\n\t\t\t\treturn true; // This is mandatory\n\t\t\tcase ProtectionCommand.SupportedGet:\n\t\t\t\treturn this.version >= 2 && this.isSinglecast();\n\t\t\tcase ProtectionCommand.TimeoutGet:\n\t\t\tcase ProtectionCommand.TimeoutSet: {\n\t\t\t\treturn (\n\t\t\t\t\tthis.isSinglecast()\n\t\t\t\t\t&& this.tryGetValueDB()?.getValue<boolean>(\n\t\t\t\t\t\tProtectionCCValues.supportsTimeout.endpoint(\n\t\t\t\t\t\t\tthis.endpoint.index,\n\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\t\t\tcase ProtectionCommand.ExclusiveControlGet:\n\t\t\tcase ProtectionCommand.ExclusiveControlSet: {\n\t\t\t\treturn (\n\t\t\t\t\tthis.isSinglecast()\n\t\t\t\t\t&& this.tryGetValueDB()?.getValue<boolean>(\n\t\t\t\t\t\tProtectionCCValues.supportsExclusiveControl.endpoint(\n\t\t\t\t\t\t\tthis.endpoint.index,\n\t\t\t\t\t\t),\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn super.supportsCommand(cmd);\n\t}\n\n\tprotected override get [SET_VALUE](): SetValueImplementation {\n\t\treturn async function(this: ProtectionCCAPI, { property }, value) {\n\t\t\tconst valueDB = this.tryGetValueDB();\n\t\t\tif (property === \"local\") {\n\t\t\t\tif (typeof value !== \"number\") {\n\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\"number\",\n\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\t// We need to set both values together, so retrieve the other one from the value DB\n\t\t\t\tconst rf = valueDB?.getValue<RFProtectionState>(\n\t\t\t\t\tProtectionCCValues.rfProtectionState.endpoint(\n\t\t\t\t\t\tthis.endpoint.index,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t\treturn this.set(value, rf);\n\t\t\t} else if (property === \"rf\") {\n\t\t\t\tif (typeof value !== \"number\") {\n\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\"number\",\n\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\t// We need to set both values together, so retrieve the other one from the value DB\n\t\t\t\tconst local = valueDB?.getValue<LocalProtectionState>(\n\t\t\t\t\tProtectionCCValues.localProtectionState.endpoint(\n\t\t\t\t\t\tthis.endpoint.index,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t\treturn this.set(\n\t\t\t\t\tlocal ?? LocalProtectionState.Unprotected,\n\t\t\t\t\tvalue,\n\t\t\t\t);\n\t\t\t} else if (property === \"exclusiveControlNodeId\") {\n\t\t\t\tif (typeof value !== \"number\") {\n\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\"number\",\n\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn this.setExclusiveControl(value);\n\t\t\t} else {\n\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t}\n\t\t};\n\t}\n\n\tprotected get [POLL_VALUE](): PollValueImplementation {\n\t\treturn async function(this: ProtectionCCAPI, { property }) {\n\t\t\tswitch (property) {\n\t\t\t\tcase \"local\":\n\t\t\t\tcase \"rf\":\n\t\t\t\t\treturn (await this.get())?.[property];\n\t\t\t\tcase \"exclusiveControlNodeId\":\n\t\t\t\t\treturn this.getExclusiveControl();\n\t\t\t\tdefault:\n\t\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t}\n\t\t};\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async get() {\n\t\tthis.assertSupportsCommand(ProtectionCommand, ProtectionCommand.Get);\n\n\t\tconst cc = new ProtectionCCGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t});\n\t\tconst response = await this.host.sendCommand<ProtectionCCReport>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) {\n\t\t\treturn pick(response, [\"local\", \"rf\"]);\n\t\t}\n\t}\n\n\t@validateArgs({ strictEnums: true })\n\tpublic async set(\n\t\tlocal: LocalProtectionState,\n\t\trf?: RFProtectionState,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(ProtectionCommand, ProtectionCommand.Set);\n\n\t\tconst cc = new ProtectionCCSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tlocal,\n\t\t\trf,\n\t\t});\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async getSupported() {\n\t\tthis.assertSupportsCommand(\n\t\t\tProtectionCommand,\n\t\t\tProtectionCommand.SupportedGet,\n\t\t);\n\n\t\tconst cc = new ProtectionCCSupportedGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tProtectionCCSupportedReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) {\n\t\t\treturn pick(response, [\n\t\t\t\t\"supportsExclusiveControl\",\n\t\t\t\t\"supportsTimeout\",\n\t\t\t\t\"supportedLocalStates\",\n\t\t\t\t\"supportedRFStates\",\n\t\t\t]);\n\t\t}\n\t}\n\n\tpublic async getExclusiveControl(): Promise<MaybeNotKnown<number>> {\n\t\tthis.assertSupportsCommand(\n\t\t\tProtectionCommand,\n\t\t\tProtectionCommand.ExclusiveControlGet,\n\t\t);\n\n\t\tconst cc = new ProtectionCCExclusiveControlGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tProtectionCCExclusiveControlReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\treturn response?.exclusiveControlNodeId;\n\t}\n\n\t@validateArgs()\n\tpublic async setExclusiveControl(\n\t\tnodeId: number,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tProtectionCommand,\n\t\t\tProtectionCommand.ExclusiveControlSet,\n\t\t);\n\n\t\tconst cc = new ProtectionCCExclusiveControlSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\texclusiveControlNodeId: nodeId,\n\t\t});\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\tpublic async getTimeout(): Promise<MaybeNotKnown<Timeout>> {\n\t\tthis.assertSupportsCommand(\n\t\t\tProtectionCommand,\n\t\t\tProtectionCommand.TimeoutGet,\n\t\t);\n\n\t\tconst cc = new ProtectionCCTimeoutGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tProtectionCCTimeoutReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\treturn response?.timeout;\n\t}\n\n\t@validateArgs()\n\tpublic async setTimeout(\n\t\ttimeout: Timeout,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tProtectionCommand,\n\t\t\tProtectionCommand.TimeoutSet,\n\t\t);\n\n\t\tconst cc = new ProtectionCCTimeoutSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\ttimeout,\n\t\t});\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n}\n\n@commandClass(CommandClasses.Protection)\n@implementedVersion(2)\n@ccValues(ProtectionCCValues)\nexport class ProtectionCC extends CommandClass {\n\tdeclare ccCommand: ProtectionCommand;\n\n\tpublic async interview(\n\t\tctx: InterviewContext,\n\t): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\t\tconst endpoint = this.getEndpoint(ctx)!;\n\t\tconst api = CCAPI.create(\n\t\t\tCommandClasses.Protection,\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t).withOptions({\n\t\t\tpriority: MessagePriority.NodeQuery,\n\t\t});\n\n\t\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: `Interviewing ${this.ccName}...`,\n\t\t\tdirection: \"none\",\n\t\t});\n\n\t\t// We need to do some queries after a potential timeout\n\t\t// In this case, do now mark this CC as interviewed completely\n\t\tlet hadCriticalTimeout = false;\n\n\t\t// First find out what the device supports\n\t\tif (api.version >= 2) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tmessage: \"querying protection capabilities...\",\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tconst resp = await api.getSupported();\n\t\t\tif (resp) {\n\t\t\t\tconst logMessage = `received protection capabilities:\nexclusive control: ${resp.supportsExclusiveControl}\ntimeout: ${resp.supportsTimeout}\nlocal protection states: ${\n\t\t\t\t\tresp.supportedLocalStates\n\t\t\t\t\t\t.map((local) =>\n\t\t\t\t\t\t\tgetEnumMemberName(LocalProtectionState, local)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.map((str) => `\\n\u00B7 ${str}`)\n\t\t\t\t\t\t.join(\"\")\n\t\t\t\t}\nRF protection states: ${\n\t\t\t\t\tresp.supportedRFStates\n\t\t\t\t\t\t.map((local) =>\n\t\t\t\t\t\t\tgetEnumMemberName(RFProtectionState, local)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.map((str) => `\\n\u00B7 ${str}`)\n\t\t\t\t\t\t.join(\"\")\n\t\t\t\t}`;\n\t\t\t\tctx.logNode(node.id, {\n\t\t\t\t\tmessage: logMessage,\n\t\t\t\t\tdirection: \"inbound\",\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\thadCriticalTimeout = true;\n\t\t\t}\n\t\t}\n\n\t\tawait this.refreshValues(ctx);\n\n\t\t// Remember that the interview is complete\n\t\tif (!hadCriticalTimeout) this.setInterviewComplete(ctx, true);\n\t}\n\n\tpublic async refreshValues(\n\t\tctx: RefreshValuesContext,\n\t): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\t\tconst endpoint = this.getEndpoint(ctx)!;\n\t\tconst api = CCAPI.create(\n\t\t\tCommandClasses.Protection,\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t).withOptions({\n\t\t\tpriority: MessagePriority.NodeQuery,\n\t\t});\n\n\t\tconst supportsExclusiveControl = !!this.getValue(\n\t\t\tctx,\n\t\t\tProtectionCCValues.supportsExclusiveControl,\n\t\t);\n\t\tconst supportsTimeout = !!this.getValue(\n\t\t\tctx,\n\t\t\tProtectionCCValues.supportsTimeout,\n\t\t);\n\n\t\t// Query the current state\n\t\tctx.logNode(node.id, {\n\t\t\tmessage: \"querying protection status...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\t\tconst protectionResp = await api.get();\n\t\tif (protectionResp) {\n\t\t\tlet logMessage = `received protection status:\nlocal: ${getEnumMemberName(LocalProtectionState, protectionResp.local)}`;\n\t\t\tif (protectionResp.rf != undefined) {\n\t\t\t\tlogMessage += `\nrf ${getEnumMemberName(RFProtectionState, protectionResp.rf)}`;\n\t\t\t}\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tmessage: logMessage,\n\t\t\t\tdirection: \"inbound\",\n\t\t\t});\n\t\t}\n\n\t\tif (supportsTimeout) {\n\t\t\t// Query the current timeout\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tmessage: \"querying protection timeout...\",\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tconst timeout = await api.getTimeout();\n\t\t\tif (timeout) {\n\t\t\t\tctx.logNode(node.id, {\n\t\t\t\t\tmessage: `received timeout: ${timeout.toString()}`,\n\t\t\t\t\tdirection: \"inbound\",\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (supportsExclusiveControl) {\n\t\t\t// Query the current timeout\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tmessage: \"querying exclusive control node...\",\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tconst nodeId = await api.getExclusiveControl();\n\t\t\tif (nodeId != undefined) {\n\t\t\t\tctx.logNode(node.id, {\n\t\t\t\t\tmessage: (nodeId !== 0\n\t\t\t\t\t\t? `Node ${padStart(nodeId.toString(), 3, \"0\")}`\n\t\t\t\t\t\t: `no node`) + ` has exclusive control`,\n\t\t\t\t\tdirection: \"inbound\",\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\n// @publicAPI\nexport interface ProtectionCCSetOptions {\n\tlocal: LocalProtectionState;\n\trf?: RFProtectionState;\n}\n\n@CCCommand(ProtectionCommand.Set)\n@useSupervision()\nexport class ProtectionCCSet extends ProtectionCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ProtectionCCSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.local = options.local;\n\t\tthis.rf = options.rf;\n\t}\n\n\tpublic static from(_raw: CCRaw, _ctx: CCParsingContext): ProtectionCCSet {\n\t\t// TODO: Deserialize payload\n\t\tthrow new ZWaveError(\n\t\t\t`${this.name}: deserialization not implemented`,\n\t\t\tZWaveErrorCodes.Deserialization_NotImplemented,\n\t\t);\n\n\t\t// return new ProtectionCCSet({\n\t\t// \tnodeId: ctx.sourceNodeId,\n\t\t// });\n\t}\n\n\tpublic local: LocalProtectionState;\n\tpublic rf?: RFProtectionState;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.local & 0b1111,\n\t\t\t(this.rf ?? RFProtectionState.Unprotected) & 0b1111,\n\t\t]);\n\n\t\tconst ccVersion = getEffectiveCCVersion(ctx, this);\n\t\tif (\n\t\t\tccVersion < 2 && ctx.getDeviceConfig?.(\n\t\t\t\tthis.nodeId as number,\n\t\t\t)?.compat?.encodeCCsUsingTargetVersion\n\t\t) {\n\t\t\t// When forcing CC version 1, only include the local state\n\t\t\tthis.payload = this.payload.subarray(0, 1);\n\t\t}\n\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\tlocal: getEnumMemberName(LocalProtectionState, this.local),\n\t\t};\n\t\tif (this.rf != undefined) {\n\t\t\tmessage.rf = getEnumMemberName(RFProtectionState, this.rf);\n\t\t}\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage,\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface ProtectionCCReportOptions {\n\tlocal: LocalProtectionState;\n\trf?: RFProtectionState;\n}\n\n@CCCommand(ProtectionCommand.Report)\n@ccValueProperty(\"local\", ProtectionCCValues.localProtectionState)\n@ccValueProperty(\"rf\", ProtectionCCValues.rfProtectionState)\nexport class ProtectionCCReport extends ProtectionCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ProtectionCCReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\t// TODO: Check implementation:\n\t\tthis.local = options.local;\n\t\tthis.rf = options.rf;\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): ProtectionCCReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst local: LocalProtectionState = raw.payload[0] & 0b1111;\n\t\tlet rf: RFProtectionState | undefined;\n\t\tif (raw.payload.length >= 2) {\n\t\t\trf = raw.payload[1] & 0b1111;\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tlocal,\n\t\t\trf,\n\t\t});\n\t}\n\n\tpublic readonly local: LocalProtectionState;\n\n\tpublic readonly rf?: RFProtectionState;\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\tlocal: getEnumMemberName(LocalProtectionState, this.local),\n\t\t};\n\t\tif (this.rf != undefined) {\n\t\t\tmessage.rf = getEnumMemberName(RFProtectionState, this.rf);\n\t\t}\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage,\n\t\t};\n\t}\n}\n\n@CCCommand(ProtectionCommand.Get)\n@expectedCCResponse(ProtectionCCReport)\nexport class ProtectionCCGet extends ProtectionCC {}\n\n// @publicAPI\nexport interface ProtectionCCSupportedReportOptions {\n\tsupportsTimeout: boolean;\n\tsupportsExclusiveControl: boolean;\n\tsupportedLocalStates: LocalProtectionState[];\n\tsupportedRFStates: RFProtectionState[];\n}\n\n@CCCommand(ProtectionCommand.SupportedReport)\n@ccValueProperty(\n\t\"supportsExclusiveControl\",\n\tProtectionCCValues.supportsExclusiveControl,\n)\n@ccValueProperty(\"supportsTimeout\", ProtectionCCValues.supportsTimeout)\n@ccValueProperty(\n\t\"supportedLocalStates\",\n\tProtectionCCValues.supportedLocalStates,\n)\n@ccValueProperty(\"supportedRFStates\", ProtectionCCValues.supportedRFStates)\nexport class ProtectionCCSupportedReport extends ProtectionCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ProtectionCCSupportedReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\t// TODO: Check implementation:\n\t\tthis.supportsTimeout = options.supportsTimeout;\n\t\tthis.supportsExclusiveControl = options.supportsExclusiveControl;\n\t\tthis.supportedLocalStates = options.supportedLocalStates;\n\t\tthis.supportedRFStates = options.supportedRFStates;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ProtectionCCSupportedReport {\n\t\tvalidatePayload(raw.payload.length >= 5);\n\t\tconst supportsTimeout = !!(raw.payload[0] & 0b1);\n\t\tconst supportsExclusiveControl = !!(raw.payload[0] & 0b10);\n\t\tconst supportedLocalStates: LocalProtectionState[] = parseBitMask(\n\t\t\traw.payload.subarray(1, 3),\n\t\t\tLocalProtectionState.Unprotected,\n\t\t);\n\t\tconst supportedRFStates: RFProtectionState[] = parseBitMask(\n\t\t\traw.payload.subarray(3, 5),\n\t\t\tRFProtectionState.Unprotected,\n\t\t);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsupportsTimeout,\n\t\t\tsupportsExclusiveControl,\n\t\t\tsupportedLocalStates,\n\t\t\tsupportedRFStates,\n\t\t});\n\t}\n\n\tpublic persistValues(ctx: PersistValuesContext): boolean {\n\t\tif (!super.persistValues(ctx)) return false;\n\n\t\t// update metadata (partially) for the local and rf values\n\t\tconst localStateValue = ProtectionCCValues.localProtectionState;\n\t\tthis.setMetadata(ctx, localStateValue, {\n\t\t\t...localStateValue.meta,\n\t\t\tstates: enumValuesToMetadataStates(\n\t\t\t\tLocalProtectionState,\n\t\t\t\tthis.supportedLocalStates,\n\t\t\t),\n\t\t});\n\n\t\tconst rfStateValue = ProtectionCCValues.rfProtectionState;\n\t\tthis.setMetadata(ctx, rfStateValue, {\n\t\t\t...rfStateValue.meta,\n\t\t\tstates: enumValuesToMetadataStates(\n\t\t\t\tRFProtectionState,\n\t\t\t\tthis.supportedRFStates,\n\t\t\t),\n\t\t});\n\n\t\treturn true;\n\t}\n\n\tpublic readonly supportsExclusiveControl: boolean;\n\n\tpublic readonly supportsTimeout: boolean;\n\n\tpublic readonly supportedLocalStates: LocalProtectionState[];\n\n\tpublic readonly supportedRFStates: RFProtectionState[];\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"supports exclusive control\": this.supportsExclusiveControl,\n\t\t\t\t\"supports timeout\": this.supportsTimeout,\n\t\t\t\t\"local protection states\": this.supportedLocalStates\n\t\t\t\t\t.map((local) =>\n\t\t\t\t\t\tgetEnumMemberName(LocalProtectionState, local)\n\t\t\t\t\t)\n\t\t\t\t\t.map((str) => `\\n\u00B7 ${str}`)\n\t\t\t\t\t.join(\"\"),\n\t\t\t\t\"RF protection states\": this.supportedRFStates\n\t\t\t\t\t.map((rf) => getEnumMemberName(RFProtectionState, rf))\n\t\t\t\t\t.map((str) => `\\n\u00B7 ${str}`)\n\t\t\t\t\t.join(\"\"),\n\t\t\t},\n\t\t};\n\t}\n}\n\n@CCCommand(ProtectionCommand.SupportedGet)\n@expectedCCResponse(ProtectionCCSupportedReport)\nexport class ProtectionCCSupportedGet extends ProtectionCC {}\n\n// @publicAPI\nexport interface ProtectionCCExclusiveControlReportOptions {\n\texclusiveControlNodeId: number;\n}\n\n@CCCommand(ProtectionCommand.ExclusiveControlReport)\n@ccValueProperty(\n\t\"exclusiveControlNodeId\",\n\tProtectionCCValues.exclusiveControlNodeId,\n)\nexport class ProtectionCCExclusiveControlReport extends ProtectionCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ProtectionCCExclusiveControlReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\t// TODO: Check implementation:\n\t\tthis.exclusiveControlNodeId = options.exclusiveControlNodeId;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ProtectionCCExclusiveControlReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst exclusiveControlNodeId = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\texclusiveControlNodeId,\n\t\t});\n\t}\n\n\tpublic readonly exclusiveControlNodeId: number;\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"exclusive control node id\": this.exclusiveControlNodeId,\n\t\t\t},\n\t\t};\n\t}\n}\n\n@CCCommand(ProtectionCommand.ExclusiveControlGet)\n@expectedCCResponse(ProtectionCCExclusiveControlReport)\nexport class ProtectionCCExclusiveControlGet extends ProtectionCC {}\n\n// @publicAPI\nexport interface ProtectionCCExclusiveControlSetOptions {\n\texclusiveControlNodeId: number;\n}\n\n@CCCommand(ProtectionCommand.ExclusiveControlSet)\n@expectedCCResponse(ProtectionCCReport)\n@useSupervision()\nexport class ProtectionCCExclusiveControlSet extends ProtectionCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ProtectionCCExclusiveControlSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.exclusiveControlNodeId = options.exclusiveControlNodeId;\n\t}\n\n\tpublic static from(\n\t\t_raw: CCRaw,\n\t\t_ctx: CCParsingContext,\n\t): ProtectionCCExclusiveControlSet {\n\t\t// TODO: Deserialize payload\n\t\tthrow new ZWaveError(\n\t\t\t`${this.name}: deserialization not implemented`,\n\t\t\tZWaveErrorCodes.Deserialization_NotImplemented,\n\t\t);\n\n\t\t// return new ProtectionCCExclusiveControlSet({\n\t\t// \tnodeId: ctx.sourceNodeId,\n\t\t// });\n\t}\n\n\tpublic exclusiveControlNodeId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([this.exclusiveControlNodeId]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"exclusive control node id\": this.exclusiveControlNodeId,\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface ProtectionCCTimeoutReportOptions {\n\ttimeout: Timeout;\n}\n\n@CCCommand(ProtectionCommand.TimeoutReport)\n@ccValueProperty(\"timeout\", ProtectionCCValues.timeout)\nexport class ProtectionCCTimeoutReport extends ProtectionCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ProtectionCCTimeoutReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\t// TODO: Check implementation:\n\t\tthis.timeout = options.timeout;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ProtectionCCTimeoutReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst timeout: Timeout = Timeout.parse(raw.payload[0]);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\ttimeout,\n\t\t});\n\t}\n\n\tpublic readonly timeout: Timeout;\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: { timeout: this.timeout.toString() },\n\t\t};\n\t}\n}\n\n@CCCommand(ProtectionCommand.TimeoutGet)\n@expectedCCResponse(ProtectionCCTimeoutReport)\nexport class ProtectionCCTimeoutGet extends ProtectionCC {}\n\n// @publicAPI\nexport interface ProtectionCCTimeoutSetOptions {\n\ttimeout: Timeout;\n}\n\n@CCCommand(ProtectionCommand.TimeoutSet)\n@expectedCCResponse(ProtectionCCReport)\n@useSupervision()\nexport class ProtectionCCTimeoutSet extends ProtectionCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ProtectionCCTimeoutSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.timeout = options.timeout;\n\t}\n\n\tpublic static from(\n\t\t_raw: CCRaw,\n\t\t_ctx: CCParsingContext,\n\t): ProtectionCCTimeoutSet {\n\t\t// TODO: Deserialize payload\n\t\tthrow new ZWaveError(\n\t\t\t`${this.name}: deserialization not implemented`,\n\t\t\tZWaveErrorCodes.Deserialization_NotImplemented,\n\t\t);\n\n\t\t// return new ProtectionCCTimeoutSet({\n\t\t// \tnodeId: ctx.sourceNodeId,\n\t\t// });\n\t}\n\n\tpublic timeout: Timeout;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([this.timeout.serialize()]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: { timeout: this.timeout.toString() },\n\t\t};\n\t}\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["import_safe"]
7
7
  }
@@ -31,13 +31,45 @@ var import_CommandClass = require("../lib/CommandClass.js");
31
31
  var import_CommandClassDecorators = require("../lib/CommandClassDecorators.js");
32
32
  var import_Values = require("../lib/Values.js");
33
33
  var import_Types = require("../lib/_Types.js");
34
- var __decorate = function(decorators, target, key, desc) {
35
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
36
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
37
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
38
- return c > 3 && r && Object.defineProperty(target, key, r), r;
34
+ var __esDecorate = function(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
35
+ function accept(f) {
36
+ if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected");
37
+ return f;
38
+ }
39
+ var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
40
+ var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
41
+ var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
42
+ var _, done = false;
43
+ for (var i = decorators.length - 1; i >= 0; i--) {
44
+ var context = {};
45
+ for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
46
+ for (var p in contextIn.access) context.access[p] = contextIn.access[p];
47
+ context.addInitializer = function(f) {
48
+ if (done) throw new TypeError("Cannot add initializers after decoration has completed");
49
+ extraInitializers.push(accept(f || null));
50
+ };
51
+ var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
52
+ if (kind === "accessor") {
53
+ if (result === void 0) continue;
54
+ if (result === null || typeof result !== "object") throw new TypeError("Object expected");
55
+ if (_ = accept(result.get)) descriptor.get = _;
56
+ if (_ = accept(result.set)) descriptor.set = _;
57
+ if (_ = accept(result.init)) initializers.unshift(_);
58
+ } else if (_ = accept(result)) {
59
+ if (kind === "field") initializers.unshift(_);
60
+ else descriptor[key] = _;
61
+ }
62
+ }
63
+ if (target) Object.defineProperty(target, contextIn.name, descriptor);
64
+ done = true;
65
+ };
66
+ var __runInitializers = function(thisArg, initializers, value) {
67
+ var useValue = arguments.length > 2;
68
+ for (var i = 0; i < initializers.length; i++) {
69
+ value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
70
+ }
71
+ return useValue ? value : void 0;
39
72
  };
40
- var SceneActivationCCSet_1;
41
73
  function __assertType(argName, typeName, boundHasError) {
42
74
  const { ZWaveError, ZWaveErrorCodes } = require("@zwave-js/core");
43
75
  if (boundHasError()) {
@@ -90,99 +122,135 @@ const SceneActivationCCValues = Object.freeze({
90
122
  })
91
123
  })
92
124
  });
93
- let SceneActivationCCAPI = class SceneActivationCCAPI2 extends import_API.CCAPI {
94
- supportsCommand(_cmd) {
95
- return true;
96
- }
97
- get [import_API.SET_VALUE]() {
98
- return async function({ property }, value, options) {
99
- if (property !== "sceneId") {
100
- (0, import_API.throwUnsupportedProperty)(this.ccId, property);
125
+ let SceneActivationCCAPI = (() => {
126
+ let _classDecorators = [(0, import_CommandClassDecorators.API)(import_safe.CommandClasses["Scene Activation"])];
127
+ let _classDescriptor;
128
+ let _classExtraInitializers = [];
129
+ let _classThis;
130
+ let _classSuper = import_API.CCAPI;
131
+ var SceneActivationCCAPI2 = class extends _classSuper {
132
+ static {
133
+ _classThis = this;
134
+ }
135
+ static {
136
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
137
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
138
+ SceneActivationCCAPI2 = _classThis = _classDescriptor.value;
139
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
140
+ __runInitializers(_classThis, _classExtraInitializers);
141
+ }
142
+ supportsCommand(_cmd) {
143
+ return true;
144
+ }
145
+ get [import_API.SET_VALUE]() {
146
+ return async function({ property }, value, options) {
147
+ if (property !== "sceneId") {
148
+ (0, import_API.throwUnsupportedProperty)(this.ccId, property);
149
+ }
150
+ if (typeof value !== "number") {
151
+ (0, import_API.throwWrongValueType)(this.ccId, property, "number", typeof value);
152
+ }
153
+ const duration = import_safe.Duration.from(options?.transitionDuration);
154
+ return this.set(value, duration);
155
+ };
156
+ }
157
+ /**
158
+ * Activates the Scene with the given ID
159
+ * @param duration The duration specifying how long the transition should take. Can be a Duration instance or a user-friendly duration string like `"1m17s"`.
160
+ */
161
+ async set(sceneId, dimmingDuration) {
162
+ __assertType("sceneId", "number", __assertType__number.bind(void 0, sceneId));
163
+ __assertType("dimmingDuration", void 0, __assertType__optional_su__string__2_eu.bind(void 0, dimmingDuration));
164
+ this.assertSupportsCommand(import_Types.SceneActivationCommand, import_Types.SceneActivationCommand.Set);
165
+ const cc = new SceneActivationCCSet({
166
+ nodeId: this.endpoint.nodeId,
167
+ endpointIndex: this.endpoint.index,
168
+ sceneId,
169
+ dimmingDuration
170
+ });
171
+ return this.host.sendCommand(cc, this.commandOptions);
172
+ }
173
+ };
174
+ return SceneActivationCCAPI2 = _classThis;
175
+ })();
176
+ let SceneActivationCC = (() => {
177
+ let _classDecorators = [(0, import_CommandClassDecorators.commandClass)(import_safe.CommandClasses["Scene Activation"]), (0, import_CommandClassDecorators.implementedVersion)(1), (0, import_CommandClassDecorators.ccValues)(SceneActivationCCValues)];
178
+ let _classDescriptor;
179
+ let _classExtraInitializers = [];
180
+ let _classThis;
181
+ let _classSuper = import_CommandClass.CommandClass;
182
+ var SceneActivationCC2 = class extends _classSuper {
183
+ static {
184
+ _classThis = this;
185
+ }
186
+ static {
187
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
188
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
189
+ SceneActivationCC2 = _classThis = _classDescriptor.value;
190
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
191
+ __runInitializers(_classThis, _classExtraInitializers);
192
+ }
193
+ };
194
+ return SceneActivationCC2 = _classThis;
195
+ })();
196
+ let SceneActivationCCSet = (() => {
197
+ let _classDecorators = [(0, import_CommandClassDecorators.CCCommand)(import_Types.SceneActivationCommand.Set), (0, import_CommandClassDecorators.useSupervision)(), (0, import_CommandClassDecorators.ccValueProperty)("sceneId", SceneActivationCCValues.sceneId), (0, import_CommandClassDecorators.ccValueProperty)("dimmingDuration", SceneActivationCCValues.dimmingDuration)];
198
+ let _classDescriptor;
199
+ let _classExtraInitializers = [];
200
+ let _classThis;
201
+ let _classSuper = SceneActivationCC;
202
+ var SceneActivationCCSet2 = class extends _classSuper {
203
+ static {
204
+ _classThis = this;
205
+ }
206
+ static {
207
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
208
+ __esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
209
+ SceneActivationCCSet2 = _classThis = _classDescriptor.value;
210
+ if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
211
+ __runInitializers(_classThis, _classExtraInitializers);
212
+ }
213
+ constructor(options) {
214
+ super(options);
215
+ this.sceneId = options.sceneId;
216
+ this.dimmingDuration = import_safe.Duration.from(options.dimmingDuration);
217
+ }
218
+ static from(raw, ctx) {
219
+ (0, import_safe.validatePayload)(raw.payload.length >= 1);
220
+ const sceneId = raw.payload[0];
221
+ (0, import_safe.validatePayload)(sceneId >= 1, sceneId <= 255);
222
+ let dimmingDuration;
223
+ if (raw.payload.length >= 2) {
224
+ dimmingDuration = import_safe.Duration.parseSet(raw.payload[1]);
101
225
  }
102
- if (typeof value !== "number") {
103
- (0, import_API.throwWrongValueType)(this.ccId, property, "number", typeof value);
226
+ return new this({
227
+ nodeId: ctx.sourceNodeId,
228
+ sceneId,
229
+ dimmingDuration
230
+ });
231
+ }
232
+ sceneId;
233
+ dimmingDuration;
234
+ serialize(ctx) {
235
+ this.payload = import_safe2.Bytes.from([
236
+ this.sceneId,
237
+ this.dimmingDuration?.serializeSet() ?? 255
238
+ ]);
239
+ return super.serialize(ctx);
240
+ }
241
+ toLogEntry(ctx) {
242
+ const message = { "scene id": this.sceneId };
243
+ if (this.dimmingDuration != void 0) {
244
+ message["dimming duration"] = this.dimmingDuration.toString();
104
245
  }
105
- const duration = import_safe.Duration.from(options?.transitionDuration);
106
- return this.set(value, duration);
107
- };
108
- }
109
- /**
110
- * Activates the Scene with the given ID
111
- * @param duration The duration specifying how long the transition should take. Can be a Duration instance or a user-friendly duration string like `"1m17s"`.
112
- */
113
- async set(sceneId, dimmingDuration) {
114
- __assertType("sceneId", "number", __assertType__number.bind(void 0, sceneId));
115
- __assertType("dimmingDuration", void 0, __assertType__optional_su__string__2_eu.bind(void 0, dimmingDuration));
116
- this.assertSupportsCommand(import_Types.SceneActivationCommand, import_Types.SceneActivationCommand.Set);
117
- const cc = new SceneActivationCCSet({
118
- nodeId: this.endpoint.nodeId,
119
- endpointIndex: this.endpoint.index,
120
- sceneId,
121
- dimmingDuration
122
- });
123
- return this.host.sendCommand(cc, this.commandOptions);
124
- }
125
- };
126
- SceneActivationCCAPI = __decorate([
127
- (0, import_CommandClassDecorators.API)(import_safe.CommandClasses["Scene Activation"])
128
- ], SceneActivationCCAPI);
129
- let SceneActivationCC = class SceneActivationCC2 extends import_CommandClass.CommandClass {
130
- };
131
- SceneActivationCC = __decorate([
132
- (0, import_CommandClassDecorators.commandClass)(import_safe.CommandClasses["Scene Activation"]),
133
- (0, import_CommandClassDecorators.implementedVersion)(1),
134
- (0, import_CommandClassDecorators.ccValues)(SceneActivationCCValues)
135
- ], SceneActivationCC);
136
- let SceneActivationCCSet = SceneActivationCCSet_1 = class SceneActivationCCSet2 extends SceneActivationCC {
137
- constructor(options) {
138
- super(options);
139
- this.sceneId = options.sceneId;
140
- this.dimmingDuration = import_safe.Duration.from(options.dimmingDuration);
141
- }
142
- static from(raw, ctx) {
143
- (0, import_safe.validatePayload)(raw.payload.length >= 1);
144
- const sceneId = raw.payload[0];
145
- (0, import_safe.validatePayload)(sceneId >= 1, sceneId <= 255);
146
- let dimmingDuration;
147
- if (raw.payload.length >= 2) {
148
- dimmingDuration = import_safe.Duration.parseSet(raw.payload[1]);
149
- }
150
- return new SceneActivationCCSet_1({
151
- nodeId: ctx.sourceNodeId,
152
- sceneId,
153
- dimmingDuration
154
- });
155
- }
156
- sceneId;
157
- dimmingDuration;
158
- serialize(ctx) {
159
- this.payload = import_safe2.Bytes.from([
160
- this.sceneId,
161
- this.dimmingDuration?.serializeSet() ?? 255
162
- ]);
163
- return super.serialize(ctx);
164
- }
165
- toLogEntry(ctx) {
166
- const message = { "scene id": this.sceneId };
167
- if (this.dimmingDuration != void 0) {
168
- message["dimming duration"] = this.dimmingDuration.toString();
169
- }
170
- return {
171
- ...super.toLogEntry(ctx),
172
- message
173
- };
174
- }
175
- };
176
- __decorate([
177
- (0, import_CommandClassDecorators.ccValue)(SceneActivationCCValues.sceneId)
178
- ], SceneActivationCCSet.prototype, "sceneId", void 0);
179
- __decorate([
180
- (0, import_CommandClassDecorators.ccValue)(SceneActivationCCValues.dimmingDuration)
181
- ], SceneActivationCCSet.prototype, "dimmingDuration", void 0);
182
- SceneActivationCCSet = SceneActivationCCSet_1 = __decorate([
183
- (0, import_CommandClassDecorators.CCCommand)(import_Types.SceneActivationCommand.Set),
184
- (0, import_CommandClassDecorators.useSupervision)()
185
- ], SceneActivationCCSet);
246
+ return {
247
+ ...super.toLogEntry(ctx),
248
+ message
249
+ };
250
+ }
251
+ };
252
+ return SceneActivationCCSet2 = _classThis;
253
+ })();
186
254
  // Annotate the CommonJS export names for ESM import in node:
187
255
  0 && (module.exports = {
188
256
  SceneActivationCC,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cc/SceneActivationCC.ts"],
4
- "sourcesContent": ["import type {\n\tMessageOrCCLogEntry,\n\tMessageRecord,\n\tSupervisionResult,\n\tWithAddress,\n} from \"@zwave-js/core/safe\";\nimport {\n\tCommandClasses,\n\tDuration,\n\ttype MaybeNotKnown,\n\tValueMetadata,\n\tvalidatePayload,\n} from \"@zwave-js/core/safe\";\nimport type {\n\tCCEncodingContext,\n\tCCParsingContext,\n\tGetValueDB,\n} from \"@zwave-js/host/safe\";\nimport { Bytes } from \"@zwave-js/shared/safe\";\nimport { validateArgs } from \"@zwave-js/transformers\";\nimport {\n\tCCAPI,\n\tSET_VALUE,\n\ttype SetValueImplementation,\n\tthrowUnsupportedProperty,\n\tthrowWrongValueType,\n} from \"../lib/API.js\";\nimport { type CCRaw, CommandClass } from \"../lib/CommandClass.js\";\nimport {\n\tAPI,\n\tCCCommand,\n\tccValue,\n\tccValues,\n\tcommandClass,\n\timplementedVersion,\n\tuseSupervision,\n} from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { SceneActivationCommand } from \"../lib/_Types.js\";\n\nexport const SceneActivationCCValues = Object.freeze({\n\t...V.defineStaticCCValues(CommandClasses[\"Scene Activation\"], {\n\t\t...V.staticProperty(\n\t\t\t\"sceneId\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.UInt8,\n\t\t\t\tmin: 1,\n\t\t\t\tlabel: \"Scene ID\",\n\t\t\t\tvalueChangeOptions: [\"transitionDuration\"],\n\t\t\t} as const,\n\t\t\t{ stateful: false },\n\t\t),\n\n\t\t...V.staticProperty(\n\t\t\t\"dimmingDuration\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.Duration,\n\t\t\t\tlabel: \"Dimming duration\",\n\t\t\t} as const,\n\t\t),\n\t}),\n});\n\n// @noInterview This CC is write-only\n\n@API(CommandClasses[\"Scene Activation\"])\nexport class SceneActivationCCAPI extends CCAPI {\n\tpublic supportsCommand(\n\t\t_cmd: SceneActivationCommand,\n\t): MaybeNotKnown<boolean> {\n\t\t// There is only one mandatory command\n\t\treturn true;\n\t}\n\n\tprotected override get [SET_VALUE](): SetValueImplementation {\n\t\treturn async function(\n\t\t\tthis: SceneActivationCCAPI,\n\t\t\t{ property },\n\t\t\tvalue,\n\t\t\toptions,\n\t\t) {\n\t\t\tif (property !== \"sceneId\") {\n\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t}\n\t\t\tif (typeof value !== \"number\") {\n\t\t\t\tthrowWrongValueType(\n\t\t\t\t\tthis.ccId,\n\t\t\t\t\tproperty,\n\t\t\t\t\t\"number\",\n\t\t\t\t\ttypeof value,\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst duration = Duration.from(options?.transitionDuration);\n\t\t\treturn this.set(value, duration);\n\t\t};\n\t}\n\n\t/**\n\t * Activates the Scene with the given ID\n\t * @param duration The duration specifying how long the transition should take. Can be a Duration instance or a user-friendly duration string like `\"1m17s\"`.\n\t */\n\t@validateArgs()\n\tpublic async set(\n\t\tsceneId: number,\n\t\tdimmingDuration?: Duration | string,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tSceneActivationCommand,\n\t\t\tSceneActivationCommand.Set,\n\t\t);\n\n\t\tconst cc = new SceneActivationCCSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tsceneId,\n\t\t\tdimmingDuration,\n\t\t});\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n}\n\n@commandClass(CommandClasses[\"Scene Activation\"])\n@implementedVersion(1)\n@ccValues(SceneActivationCCValues)\nexport class SceneActivationCC extends CommandClass {\n\tdeclare ccCommand: SceneActivationCommand;\n}\n\n// @publicAPI\nexport interface SceneActivationCCSetOptions {\n\tsceneId: number;\n\tdimmingDuration?: Duration | string;\n}\n\n@CCCommand(SceneActivationCommand.Set)\n@useSupervision()\nexport class SceneActivationCCSet extends SceneActivationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<SceneActivationCCSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.sceneId = options.sceneId;\n\t\tthis.dimmingDuration = Duration.from(options.dimmingDuration);\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): SceneActivationCCSet {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst sceneId = raw.payload[0];\n\t\tvalidatePayload(sceneId >= 1, sceneId <= 255);\n\n\t\t// Per the specs, dimmingDuration is required, but as always the real world is different...\n\t\tlet dimmingDuration: Duration | undefined;\n\t\tif (raw.payload.length >= 2) {\n\t\t\tdimmingDuration = Duration.parseSet(raw.payload[1]);\n\t\t}\n\n\t\treturn new SceneActivationCCSet({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsceneId,\n\t\t\tdimmingDuration,\n\t\t});\n\t}\n\n\t@ccValue(SceneActivationCCValues.sceneId)\n\tpublic sceneId: number;\n\n\t@ccValue(SceneActivationCCValues.dimmingDuration)\n\tpublic dimmingDuration: Duration | undefined;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.sceneId,\n\t\t\tthis.dimmingDuration?.serializeSet() ?? 0xff,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = { \"scene id\": this.sceneId };\n\t\tif (this.dimmingDuration != undefined) {\n\t\t\tmessage[\"dimming duration\"] = this.dimmingDuration.toString();\n\t\t}\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage,\n\t\t};\n\t}\n}\n"],
5
- "mappings": "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",
6
- "names": ["import_safe", "SceneActivationCCAPI", "SceneActivationCC", "SceneActivationCCSet"]
4
+ "sourcesContent": ["import type {\n\tMessageOrCCLogEntry,\n\tMessageRecord,\n\tSupervisionResult,\n\tWithAddress,\n} from \"@zwave-js/core/safe\";\nimport {\n\tCommandClasses,\n\tDuration,\n\ttype MaybeNotKnown,\n\tValueMetadata,\n\tvalidatePayload,\n} from \"@zwave-js/core/safe\";\nimport type {\n\tCCEncodingContext,\n\tCCParsingContext,\n\tGetValueDB,\n} from \"@zwave-js/host/safe\";\nimport { Bytes } from \"@zwave-js/shared/safe\";\nimport { validateArgs } from \"@zwave-js/transformers\";\nimport {\n\tCCAPI,\n\tSET_VALUE,\n\ttype SetValueImplementation,\n\tthrowUnsupportedProperty,\n\tthrowWrongValueType,\n} from \"../lib/API.js\";\nimport { type CCRaw, CommandClass } from \"../lib/CommandClass.js\";\nimport {\n\tAPI,\n\tCCCommand,\n\tccValueProperty,\n\tccValues,\n\tcommandClass,\n\timplementedVersion,\n\tuseSupervision,\n} from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { SceneActivationCommand } from \"../lib/_Types.js\";\n\nexport const SceneActivationCCValues = Object.freeze({\n\t...V.defineStaticCCValues(CommandClasses[\"Scene Activation\"], {\n\t\t...V.staticProperty(\n\t\t\t\"sceneId\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.UInt8,\n\t\t\t\tmin: 1,\n\t\t\t\tlabel: \"Scene ID\",\n\t\t\t\tvalueChangeOptions: [\"transitionDuration\"],\n\t\t\t} as const,\n\t\t\t{ stateful: false },\n\t\t),\n\n\t\t...V.staticProperty(\n\t\t\t\"dimmingDuration\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.Duration,\n\t\t\t\tlabel: \"Dimming duration\",\n\t\t\t} as const,\n\t\t),\n\t}),\n});\n\n// @noInterview This CC is write-only\n\n@API(CommandClasses[\"Scene Activation\"])\nexport class SceneActivationCCAPI extends CCAPI {\n\tpublic supportsCommand(\n\t\t_cmd: SceneActivationCommand,\n\t): MaybeNotKnown<boolean> {\n\t\t// There is only one mandatory command\n\t\treturn true;\n\t}\n\n\tprotected override get [SET_VALUE](): SetValueImplementation {\n\t\treturn async function(\n\t\t\tthis: SceneActivationCCAPI,\n\t\t\t{ property },\n\t\t\tvalue,\n\t\t\toptions,\n\t\t) {\n\t\t\tif (property !== \"sceneId\") {\n\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t}\n\t\t\tif (typeof value !== \"number\") {\n\t\t\t\tthrowWrongValueType(\n\t\t\t\t\tthis.ccId,\n\t\t\t\t\tproperty,\n\t\t\t\t\t\"number\",\n\t\t\t\t\ttypeof value,\n\t\t\t\t);\n\t\t\t}\n\t\t\tconst duration = Duration.from(options?.transitionDuration);\n\t\t\treturn this.set(value, duration);\n\t\t};\n\t}\n\n\t/**\n\t * Activates the Scene with the given ID\n\t * @param duration The duration specifying how long the transition should take. Can be a Duration instance or a user-friendly duration string like `\"1m17s\"`.\n\t */\n\t@validateArgs()\n\tpublic async set(\n\t\tsceneId: number,\n\t\tdimmingDuration?: Duration | string,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tSceneActivationCommand,\n\t\t\tSceneActivationCommand.Set,\n\t\t);\n\n\t\tconst cc = new SceneActivationCCSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tsceneId,\n\t\t\tdimmingDuration,\n\t\t});\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n}\n\n@commandClass(CommandClasses[\"Scene Activation\"])\n@implementedVersion(1)\n@ccValues(SceneActivationCCValues)\nexport class SceneActivationCC extends CommandClass {\n\tdeclare ccCommand: SceneActivationCommand;\n}\n\n// @publicAPI\nexport interface SceneActivationCCSetOptions {\n\tsceneId: number;\n\tdimmingDuration?: Duration | string;\n}\n\n@CCCommand(SceneActivationCommand.Set)\n@useSupervision()\n@ccValueProperty(\"sceneId\", SceneActivationCCValues.sceneId)\n@ccValueProperty(\"dimmingDuration\", SceneActivationCCValues.dimmingDuration)\nexport class SceneActivationCCSet extends SceneActivationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<SceneActivationCCSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.sceneId = options.sceneId;\n\t\tthis.dimmingDuration = Duration.from(options.dimmingDuration);\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): SceneActivationCCSet {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst sceneId = raw.payload[0];\n\t\tvalidatePayload(sceneId >= 1, sceneId <= 255);\n\n\t\t// Per the specs, dimmingDuration is required, but as always the real world is different...\n\t\tlet dimmingDuration: Duration | undefined;\n\t\tif (raw.payload.length >= 2) {\n\t\t\tdimmingDuration = Duration.parseSet(raw.payload[1]);\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsceneId,\n\t\t\tdimmingDuration,\n\t\t});\n\t}\n\n\tpublic sceneId: number;\n\n\tpublic dimmingDuration: Duration | undefined;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.sceneId,\n\t\t\tthis.dimmingDuration?.serializeSet() ?? 0xff,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = { \"scene id\": this.sceneId };\n\t\tif (this.dimmingDuration != undefined) {\n\t\t\tmessage[\"dimming duration\"] = this.dimmingDuration.toString();\n\t\t}\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage,\n\t\t};\n\t}\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["import_safe"]
7
7
  }