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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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/EntryControlCC.ts"],
4
- "sourcesContent": ["import {\n\tCommandClasses,\n\ttype MaybeNotKnown,\n\ttype MessageOrCCLogEntry,\n\tMessagePriority,\n\ttype MessageRecord,\n\ttype SupervisionResult,\n\tValueMetadata,\n\ttype WithAddress,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tgetCCName,\n\tparseBitMask,\n\tsupervisedCommandSucceeded,\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 { buffer2hex, pick } from \"@zwave-js/shared/safe\";\nimport { validateArgs } from \"@zwave-js/transformers\";\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} 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\tEntryControlCommand,\n\tEntryControlDataTypes,\n\tEntryControlEventTypes,\n} from \"../lib/_Types.js\";\nimport * as ccUtils from \"../lib/utils.js\";\n\nexport const EntryControlCCValues = Object.freeze({\n\t...V.defineStaticCCValues(CommandClasses[\"Entry Control\"], {\n\t\t...V.staticProperty(\n\t\t\t\"keyCacheSize\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.UInt8,\n\t\t\t\tlabel: \"Key cache size\",\n\t\t\t\tdescription:\n\t\t\t\t\t\"Number of character that must be stored before sending\",\n\t\t\t\tmin: 1,\n\t\t\t\tmax: 32,\n\t\t\t} as const,\n\t\t),\n\n\t\t...V.staticProperty(\n\t\t\t\"keyCacheTimeout\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.UInt8,\n\t\t\t\tlabel: \"Key cache timeout\",\n\t\t\t\tunit: \"seconds\",\n\t\t\t\tdescription:\n\t\t\t\t\t\"How long the key cache must wait for additional characters\",\n\t\t\t\tmin: 1,\n\t\t\t\tmax: 10,\n\t\t\t} as const,\n\t\t),\n\n\t\t...V.staticProperty(\"supportedDataTypes\", undefined, {\n\t\t\tinternal: true,\n\t\t}),\n\t\t...V.staticProperty(\"supportedEventTypes\", undefined, {\n\t\t\tinternal: true,\n\t\t}),\n\t\t...V.staticProperty(\"supportedKeys\", undefined, {\n\t\t\tinternal: true,\n\t\t}),\n\t}),\n});\n\n@API(CommandClasses[\"Entry Control\"])\nexport class EntryControlCCAPI extends CCAPI {\n\tpublic supportsCommand(cmd: EntryControlCommand): MaybeNotKnown<boolean> {\n\t\tswitch (cmd) {\n\t\t\tcase EntryControlCommand.KeySupportedGet:\n\t\t\tcase EntryControlCommand.EventSupportedGet:\n\t\t\tcase EntryControlCommand.ConfigurationGet:\n\t\t\t\treturn this.isSinglecast();\n\t\t\tcase EntryControlCommand.ConfigurationSet:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn super.supportsCommand(cmd);\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async getSupportedKeys() {\n\t\tthis.assertSupportsCommand(\n\t\t\tEntryControlCommand,\n\t\t\tEntryControlCommand.KeySupportedGet,\n\t\t);\n\n\t\tconst cc = new EntryControlCCKeySupportedGet({\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\tEntryControlCCKeySupportedReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\treturn response?.supportedKeys;\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async getEventCapabilities() {\n\t\tthis.assertSupportsCommand(\n\t\t\tEntryControlCommand,\n\t\t\tEntryControlCommand.EventSupportedGet,\n\t\t);\n\n\t\tconst cc = new EntryControlCCEventSupportedGet({\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\tEntryControlCCEventSupportedReport\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\"supportedDataTypes\",\n\t\t\t\t\"supportedEventTypes\",\n\t\t\t\t\"minKeyCacheSize\",\n\t\t\t\t\"maxKeyCacheSize\",\n\t\t\t\t\"minKeyCacheTimeout\",\n\t\t\t\t\"maxKeyCacheTimeout\",\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 getConfiguration() {\n\t\tthis.assertSupportsCommand(\n\t\t\tEntryControlCommand,\n\t\t\tEntryControlCommand.ConfigurationGet,\n\t\t);\n\n\t\tconst cc = new EntryControlCCConfigurationGet({\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\tEntryControlCCConfigurationReport\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, [\"keyCacheSize\", \"keyCacheTimeout\"]);\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async setConfiguration(\n\t\tkeyCacheSize: number,\n\t\tkeyCacheTimeout: number,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tEntryControlCommand,\n\t\t\tEntryControlCommand.ConfigurationGet,\n\t\t);\n\n\t\tconst cc = new EntryControlCCConfigurationSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tkeyCacheSize,\n\t\t\tkeyCacheTimeout,\n\t\t});\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\tprotected override get [SET_VALUE](): SetValueImplementation {\n\t\treturn async function(this: EntryControlCCAPI, { property }, value) {\n\t\t\tif (property !== \"keyCacheSize\" && property !== \"keyCacheTimeout\") {\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\n\t\t\tlet keyCacheSize = value;\n\t\t\tlet keyCacheTimeout = 2;\n\t\t\tif (property === \"keyCacheTimeout\") {\n\t\t\t\tkeyCacheTimeout = value;\n\n\t\t\t\tconst oldKeyCacheSize = this.tryGetValueDB()?.getValue<number>(\n\t\t\t\t\tEntryControlCCValues.keyCacheSize.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\tif (oldKeyCacheSize == undefined) {\n\t\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t\t`The \"keyCacheTimeout\" property cannot be changed before the key cache size is known!`,\n\t\t\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tkeyCacheSize = oldKeyCacheSize;\n\t\t\t}\n\t\t\tconst result = await this.setConfiguration(\n\t\t\t\tkeyCacheSize,\n\t\t\t\tkeyCacheTimeout,\n\t\t\t);\n\n\t\t\t// Verify the change after a short delay, unless the command was supervised and successful\n\t\t\tif (this.isSinglecast() && !supervisedCommandSucceeded(result)) {\n\t\t\t\tthis.schedulePoll({ property }, value, { transition: \"fast\" });\n\t\t\t}\n\n\t\t\treturn result;\n\t\t};\n\t}\n\n\tprotected get [POLL_VALUE](): PollValueImplementation {\n\t\treturn async function(this: EntryControlCCAPI, { property }) {\n\t\t\tswitch (property) {\n\t\t\t\tcase \"keyCacheSize\":\n\t\t\t\tcase \"keyCacheTimeout\":\n\t\t\t\t\treturn (await this.getConfiguration())?.[property];\n\t\t\t}\n\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t};\n\t}\n}\n\n@commandClass(CommandClasses[\"Entry Control\"])\n@implementedVersion(1)\n@ccValues(EntryControlCCValues)\nexport class EntryControlCC extends CommandClass {\n\tdeclare ccCommand: EntryControlCommand;\n\n\tpublic determineRequiredCCInterviews(): readonly CommandClasses[] {\n\t\treturn [\n\t\t\t...super.determineRequiredCCInterviews(),\n\t\t\tCommandClasses.Association,\n\t\t\tCommandClasses[\"Multi Channel Association\"],\n\t\t\tCommandClasses[\"Association Group Information\"],\n\t\t];\n\t}\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[\"Entry Control\"],\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// If one Association group issues Entry Control notifications,\n\t\t// we must associate ourselves with that channel\n\t\ttry {\n\t\t\tawait ccUtils.assignLifelineIssueingCommand(\n\t\t\t\tctx,\n\t\t\t\tendpoint,\n\t\t\t\tthis.ccId,\n\t\t\t\tEntryControlCommand.Notification,\n\t\t\t);\n\t\t} catch {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: endpoint.index,\n\t\t\t\tmessage: `Configuring associations to receive ${\n\t\t\t\t\tgetCCName(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t)\n\t\t\t\t} commands failed!`,\n\t\t\t\tlevel: \"warn\",\n\t\t\t});\n\t\t}\n\n\t\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: \"requesting entry control supported keys...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\n\t\tconst supportedKeys = await api.getSupportedKeys();\n\t\tif (supportedKeys) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage:\n\t\t\t\t\t`received entry control supported keys: ${supportedKeys.toString()}`,\n\t\t\t\tdirection: \"inbound\",\n\t\t\t});\n\t\t}\n\n\t\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: \"requesting entry control supported events...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\n\t\tconst eventCapabilities = await api.getEventCapabilities();\n\t\tif (eventCapabilities) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: `received entry control supported keys:\ndata types: ${\n\t\t\t\t\teventCapabilities.supportedDataTypes\n\t\t\t\t\t\t.map((e) => EntryControlDataTypes[e])\n\t\t\t\t\t\t.toString()\n\t\t\t\t}\nevent types: ${\n\t\t\t\t\teventCapabilities.supportedEventTypes\n\t\t\t\t\t\t.map((e) => EntryControlEventTypes[e])\n\t\t\t\t\t\t.toString()\n\t\t\t\t}\nmin key cache size: ${eventCapabilities.minKeyCacheSize}\nmax key cache size: ${eventCapabilities.maxKeyCacheSize}\nmin key cache timeout: ${eventCapabilities.minKeyCacheTimeout} seconds\nmax key cache timeout: ${eventCapabilities.maxKeyCacheTimeout} seconds`,\n\t\t\t\tdirection: \"inbound\",\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\tthis.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[\"Entry Control\"],\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: \"requesting entry control configuration...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\n\t\tconst conf = await api.getConfiguration();\n\t\tif (conf) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: `received entry control configuration:\nkey cache size: ${conf.keyCacheSize}\nkey cache timeout: ${conf.keyCacheTimeout} seconds`,\n\t\t\t\tdirection: \"inbound\",\n\t\t\t});\n\t\t}\n\t}\n}\n\n// @publicAPI\nexport interface EntryControlCCNotificationOptions {\n\tsequenceNumber: number;\n\tdataType: EntryControlDataTypes;\n\teventType: EntryControlEventTypes;\n\teventData?: string | Bytes;\n}\n\n@CCCommand(EntryControlCommand.Notification)\nexport class EntryControlCCNotification extends EntryControlCC {\n\tpublic constructor(\n\t\toptions: WithAddress<EntryControlCCNotificationOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\t// TODO: Check implementation:\n\t\tthis.sequenceNumber = options.sequenceNumber;\n\t\tthis.dataType = options.dataType;\n\t\tthis.eventType = options.eventType;\n\t\tthis.eventData = options.eventData;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): EntryControlCCNotification {\n\t\tvalidatePayload(raw.payload.length >= 4);\n\t\tconst sequenceNumber = raw.payload[0];\n\t\tlet dataType: EntryControlDataTypes = raw.payload[1] & 0b11;\n\t\tconst eventType: EntryControlEventTypes = raw.payload[2];\n\t\tconst eventDataLength = raw.payload[3];\n\t\tvalidatePayload(eventDataLength >= 0 && eventDataLength <= 32);\n\t\tconst offset = 4;\n\t\tvalidatePayload(raw.payload.length >= offset + eventDataLength);\n\t\tlet eventData: string | Bytes | undefined;\n\t\tif (eventDataLength > 0) {\n\t\t\t// We shouldn't need to check this, since the specs are pretty clear which format to expect.\n\t\t\t// But as always - manufacturers don't care and send ASCII data with 0 bytes...\n\n\t\t\t// We also need to disable the strict validation for some devices to make them work\n\t\t\tconst noStrictValidation = !!ctx.getDeviceConfig?.(\n\t\t\t\tctx.sourceNodeId,\n\t\t\t)?.compat?.disableStrictEntryControlDataValidation;\n\n\t\t\teventData = Bytes.from(\n\t\t\t\traw.payload.subarray(offset, offset + eventDataLength),\n\t\t\t);\n\t\t\tswitch (dataType) {\n\t\t\t\tcase EntryControlDataTypes.Raw:\n\t\t\t\t\t// RAW 1 to 32 bytes of arbitrary binary data\n\t\t\t\t\tif (!noStrictValidation) {\n\t\t\t\t\t\tvalidatePayload(\n\t\t\t\t\t\t\teventDataLength >= 1 && eventDataLength <= 32,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase EntryControlDataTypes.ASCII:\n\t\t\t\t\t// ASCII 1 to 32 ASCII encoded characters. ASCII codes MUST be in the value range 0x00-0xF7.\n\t\t\t\t\t// The string MUST be padded with the value 0xFF to fit 16 byte blocks when sent in a notification.\n\t\t\t\t\tif (!noStrictValidation) {\n\t\t\t\t\t\tvalidatePayload(\n\t\t\t\t\t\t\teventDataLength === 16 || eventDataLength === 32,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\teventData = eventData.toString(\"ascii\");\n\t\t\t\t\tif (!noStrictValidation) {\n\t\t\t\t\t\tvalidatePayload(\n\t\t\t\t\t\t\t/^[\\u0000-\\u007f]+[\\u00ff]*$/.test(eventData),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t// Trim 0xff padding bytes\n\t\t\t\t\teventData = eventData.replace(/[\\u00ff]*$/, \"\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase EntryControlDataTypes.MD5:\n\t\t\t\t\t// MD5 16 byte binary data encoded as a MD5 hash value.\n\t\t\t\t\tif (!noStrictValidation) {\n\t\t\t\t\t\tvalidatePayload(eventDataLength === 16);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t} else {\n\t\t\tdataType = EntryControlDataTypes.None;\n\t\t}\n\n\t\treturn new EntryControlCCNotification({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsequenceNumber,\n\t\t\tdataType,\n\t\t\teventType,\n\t\t\teventData,\n\t\t});\n\t}\n\n\tpublic readonly sequenceNumber: number;\n\tpublic readonly dataType: EntryControlDataTypes;\n\tpublic readonly eventType: EntryControlEventTypes;\n\tpublic readonly eventData?: Uint8Array | string;\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\t\"sequence number\": this.sequenceNumber,\n\t\t\t\"data type\": this.dataType,\n\t\t\t\"event type\": this.eventType,\n\t\t};\n\t\tif (this.eventData) {\n\t\t\tswitch (this.eventType) {\n\t\t\t\tcase EntryControlEventTypes.CachedKeys:\n\t\t\t\tcase EntryControlEventTypes.Enter:\n\t\t\t\t\t// The event data is likely the user's PIN code, hide it from logs\n\t\t\t\t\tmessage[\"event data\"] = \"*\".repeat(this.eventData.length);\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tmessage[\"event data\"] = typeof this.eventData === \"string\"\n\t\t\t\t\t\t? this.eventData\n\t\t\t\t\t\t: buffer2hex(this.eventData);\n\t\t\t}\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 EntryControlCCKeySupportedReportOptions {\n\tsupportedKeys: number[];\n}\n\n@CCCommand(EntryControlCommand.KeySupportedReport)\nexport class EntryControlCCKeySupportedReport extends EntryControlCC {\n\tpublic constructor(\n\t\toptions: WithAddress<EntryControlCCKeySupportedReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\t// TODO: Check implementation:\n\t\tthis.supportedKeys = options.supportedKeys;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): EntryControlCCKeySupportedReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst length = raw.payload[0];\n\t\tvalidatePayload(raw.payload.length >= 1 + length);\n\t\tconst supportedKeys = parseBitMask(\n\t\t\traw.payload.subarray(1, 1 + length),\n\t\t\t0,\n\t\t);\n\n\t\treturn new EntryControlCCKeySupportedReport({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsupportedKeys,\n\t\t});\n\t}\n\n\t@ccValue(EntryControlCCValues.supportedKeys)\n\tpublic readonly supportedKeys: readonly number[];\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: { \"supported keys\": this.supportedKeys.toString() },\n\t\t};\n\t}\n}\n\n@CCCommand(EntryControlCommand.KeySupportedGet)\n@expectedCCResponse(EntryControlCCKeySupportedReport)\nexport class EntryControlCCKeySupportedGet extends EntryControlCC {}\n\n// @publicAPI\nexport interface EntryControlCCEventSupportedReportOptions {\n\tsupportedDataTypes: EntryControlDataTypes[];\n\tsupportedEventTypes: EntryControlEventTypes[];\n\tminKeyCacheSize: number;\n\tmaxKeyCacheSize: number;\n\tminKeyCacheTimeout: number;\n\tmaxKeyCacheTimeout: number;\n}\n\n@CCCommand(EntryControlCommand.EventSupportedReport)\nexport class EntryControlCCEventSupportedReport extends EntryControlCC {\n\tpublic constructor(\n\t\toptions: WithAddress<EntryControlCCEventSupportedReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\t// TODO: Check implementation:\n\t\tthis.supportedDataTypes = options.supportedDataTypes;\n\t\tthis.supportedEventTypes = options.supportedEventTypes;\n\t\tthis.minKeyCacheSize = options.minKeyCacheSize;\n\t\tthis.maxKeyCacheSize = options.maxKeyCacheSize;\n\t\tthis.minKeyCacheTimeout = options.minKeyCacheTimeout;\n\t\tthis.maxKeyCacheTimeout = options.maxKeyCacheTimeout;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): EntryControlCCEventSupportedReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst dataTypeLength = raw.payload[0] & 0b11;\n\t\tlet offset = 1;\n\t\tvalidatePayload(raw.payload.length >= offset + dataTypeLength);\n\t\tconst supportedDataTypes: EntryControlDataTypes[] = parseBitMask(\n\t\t\traw.payload.subarray(offset, offset + dataTypeLength),\n\t\t\tEntryControlDataTypes.None,\n\t\t);\n\t\toffset += dataTypeLength;\n\t\tvalidatePayload(raw.payload.length >= offset + 1);\n\t\tconst eventTypeLength = raw.payload[offset] & 0b11111;\n\t\toffset += 1;\n\t\tvalidatePayload(raw.payload.length >= offset + eventTypeLength);\n\t\tconst supportedEventTypes: EntryControlEventTypes[] = parseBitMask(\n\t\t\traw.payload.subarray(offset, offset + eventTypeLength),\n\t\t\tEntryControlEventTypes.Caching,\n\t\t);\n\t\toffset += eventTypeLength;\n\t\tvalidatePayload(raw.payload.length >= offset + 4);\n\t\tconst minKeyCacheSize = raw.payload[offset];\n\t\tvalidatePayload(\n\t\t\tminKeyCacheSize >= 1 && minKeyCacheSize <= 32,\n\t\t);\n\t\tconst maxKeyCacheSize = raw.payload[offset + 1];\n\t\tvalidatePayload(\n\t\t\tmaxKeyCacheSize >= minKeyCacheSize\n\t\t\t\t&& maxKeyCacheSize <= 32,\n\t\t);\n\t\tconst minKeyCacheTimeout = raw.payload[offset + 2];\n\t\tconst maxKeyCacheTimeout = raw.payload[offset + 3];\n\n\t\treturn new EntryControlCCEventSupportedReport({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsupportedDataTypes,\n\t\t\tsupportedEventTypes,\n\t\t\tminKeyCacheSize,\n\t\t\tmaxKeyCacheSize,\n\t\t\tminKeyCacheTimeout,\n\t\t\tmaxKeyCacheTimeout,\n\t\t});\n\t}\n\n\tpublic persistValues(ctx: PersistValuesContext): boolean {\n\t\tif (!super.persistValues(ctx)) return false;\n\n\t\t// Store min/max cache size and timeout as metadata\n\t\tconst keyCacheSizeValue = EntryControlCCValues.keyCacheSize;\n\t\tthis.setMetadata(ctx, keyCacheSizeValue, {\n\t\t\t...keyCacheSizeValue.meta,\n\t\t\tmin: this.minKeyCacheSize,\n\t\t\tmax: this.maxKeyCacheSize,\n\t\t});\n\n\t\tconst keyCacheTimeoutValue = EntryControlCCValues.keyCacheTimeout;\n\t\tthis.setMetadata(ctx, keyCacheTimeoutValue, {\n\t\t\t...keyCacheTimeoutValue.meta,\n\t\t\tmin: this.minKeyCacheTimeout,\n\t\t\tmax: this.maxKeyCacheTimeout,\n\t\t});\n\n\t\treturn true;\n\t}\n\n\t@ccValue(EntryControlCCValues.supportedDataTypes)\n\tpublic readonly supportedDataTypes: readonly EntryControlDataTypes[];\n\n\t@ccValue(EntryControlCCValues.supportedEventTypes)\n\tpublic readonly supportedEventTypes: readonly EntryControlEventTypes[];\n\n\tpublic readonly minKeyCacheSize: number;\n\tpublic readonly maxKeyCacheSize: number;\n\tpublic readonly minKeyCacheTimeout: number;\n\tpublic readonly maxKeyCacheTimeout: 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\"supported data types\": this.supportedDataTypes\n\t\t\t\t\t.map((dt) => EntryControlDataTypes[dt])\n\t\t\t\t\t.toString(),\n\t\t\t\t\"supported event types\": this.supportedEventTypes\n\t\t\t\t\t.map((et) => EntryControlEventTypes[et])\n\t\t\t\t\t.toString(),\n\t\t\t\t\"min key cache size\": this.minKeyCacheSize,\n\t\t\t\t\"max key cache size\": this.maxKeyCacheSize,\n\t\t\t\t\"min key cache timeout\": this.minKeyCacheTimeout,\n\t\t\t\t\"max key cache timeout\": this.maxKeyCacheTimeout,\n\t\t\t},\n\t\t};\n\t}\n}\n\n@CCCommand(EntryControlCommand.EventSupportedGet)\n@expectedCCResponse(EntryControlCCEventSupportedReport)\nexport class EntryControlCCEventSupportedGet extends EntryControlCC {}\n\n// @publicAPI\nexport interface EntryControlCCConfigurationReportOptions {\n\tkeyCacheSize: number;\n\tkeyCacheTimeout: number;\n}\n\n@CCCommand(EntryControlCommand.ConfigurationReport)\nexport class EntryControlCCConfigurationReport extends EntryControlCC {\n\tpublic constructor(\n\t\toptions: WithAddress<EntryControlCCConfigurationReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\t// TODO: Check implementation:\n\t\tthis.keyCacheSize = options.keyCacheSize;\n\t\tthis.keyCacheTimeout = options.keyCacheTimeout;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): EntryControlCCConfigurationReport {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst keyCacheSize = raw.payload[0];\n\t\tvalidatePayload(keyCacheSize >= 1 && keyCacheSize <= 32);\n\t\tconst keyCacheTimeout = raw.payload[1];\n\n\t\treturn new EntryControlCCConfigurationReport({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tkeyCacheSize,\n\t\t\tkeyCacheTimeout,\n\t\t});\n\t}\n\n\t@ccValue(EntryControlCCValues.keyCacheSize)\n\tpublic readonly keyCacheSize: number;\n\n\t@ccValue(EntryControlCCValues.keyCacheTimeout)\n\tpublic readonly keyCacheTimeout: 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\"key cache size\": this.keyCacheSize,\n\t\t\t\t\"key cache timeout\": this.keyCacheTimeout,\n\t\t\t},\n\t\t};\n\t}\n}\n\n@CCCommand(EntryControlCommand.ConfigurationGet)\n@expectedCCResponse(EntryControlCCConfigurationReport)\nexport class EntryControlCCConfigurationGet extends EntryControlCC {}\n\n// @publicAPI\nexport interface EntryControlCCConfigurationSetOptions {\n\tkeyCacheSize: number;\n\tkeyCacheTimeout: number;\n}\n\n@CCCommand(EntryControlCommand.ConfigurationSet)\n@useSupervision()\nexport class EntryControlCCConfigurationSet extends EntryControlCC {\n\tpublic constructor(\n\t\toptions: WithAddress<EntryControlCCConfigurationSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.keyCacheSize = options.keyCacheSize;\n\t\tthis.keyCacheTimeout = options.keyCacheTimeout;\n\t}\n\n\tpublic static from(\n\t\t_raw: CCRaw,\n\t\t_ctx: CCParsingContext,\n\t): EntryControlCCConfigurationSet {\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 EntryControlCCConfigurationSet({\n\t\t// \tnodeId: ctx.sourceNodeId,\n\t\t// });\n\t}\n\n\tpublic readonly keyCacheSize: number;\n\tpublic readonly keyCacheTimeout: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([this.keyCacheSize, this.keyCacheTimeout]);\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\"key cache size\": this.keyCacheSize,\n\t\t\t\t\"key cache timeout\": this.keyCacheTimeout,\n\t\t\t},\n\t\t};\n\t}\n}\n"],
5
- "mappings": "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",
6
- "names": ["import_safe", "EntryControlCCAPI", "EntryControlCC", "EntryControlCCNotification", "EntryControlCCKeySupportedReport", "EntryControlCCKeySupportedGet", "EntryControlCCEventSupportedReport", "EntryControlCCEventSupportedGet", "EntryControlCCConfigurationReport", "EntryControlCCConfigurationGet", "EntryControlCCConfigurationSet"]
4
+ "sourcesContent": ["import {\n\tCommandClasses,\n\ttype MaybeNotKnown,\n\ttype MessageOrCCLogEntry,\n\tMessagePriority,\n\ttype MessageRecord,\n\ttype SupervisionResult,\n\tValueMetadata,\n\ttype WithAddress,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tgetCCName,\n\tparseBitMask,\n\tsupervisedCommandSucceeded,\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 { buffer2hex, pick } from \"@zwave-js/shared/safe\";\nimport { validateArgs } from \"@zwave-js/transformers\";\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} 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\tEntryControlCommand,\n\tEntryControlDataTypes,\n\tEntryControlEventTypes,\n} from \"../lib/_Types.js\";\nimport * as ccUtils from \"../lib/utils.js\";\n\nexport const EntryControlCCValues = Object.freeze({\n\t...V.defineStaticCCValues(CommandClasses[\"Entry Control\"], {\n\t\t...V.staticProperty(\n\t\t\t\"keyCacheSize\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.UInt8,\n\t\t\t\tlabel: \"Key cache size\",\n\t\t\t\tdescription:\n\t\t\t\t\t\"Number of character that must be stored before sending\",\n\t\t\t\tmin: 1,\n\t\t\t\tmax: 32,\n\t\t\t} as const,\n\t\t),\n\n\t\t...V.staticProperty(\n\t\t\t\"keyCacheTimeout\",\n\t\t\t{\n\t\t\t\t...ValueMetadata.UInt8,\n\t\t\t\tlabel: \"Key cache timeout\",\n\t\t\t\tunit: \"seconds\",\n\t\t\t\tdescription:\n\t\t\t\t\t\"How long the key cache must wait for additional characters\",\n\t\t\t\tmin: 1,\n\t\t\t\tmax: 10,\n\t\t\t} as const,\n\t\t),\n\n\t\t...V.staticProperty(\"supportedDataTypes\", undefined, {\n\t\t\tinternal: true,\n\t\t}),\n\t\t...V.staticProperty(\"supportedEventTypes\", undefined, {\n\t\t\tinternal: true,\n\t\t}),\n\t\t...V.staticProperty(\"supportedKeys\", undefined, {\n\t\t\tinternal: true,\n\t\t}),\n\t}),\n});\n\n@API(CommandClasses[\"Entry Control\"])\nexport class EntryControlCCAPI extends CCAPI {\n\tpublic supportsCommand(cmd: EntryControlCommand): MaybeNotKnown<boolean> {\n\t\tswitch (cmd) {\n\t\t\tcase EntryControlCommand.KeySupportedGet:\n\t\t\tcase EntryControlCommand.EventSupportedGet:\n\t\t\tcase EntryControlCommand.ConfigurationGet:\n\t\t\t\treturn this.isSinglecast();\n\t\t\tcase EntryControlCommand.ConfigurationSet:\n\t\t\t\treturn true;\n\t\t}\n\t\treturn super.supportsCommand(cmd);\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async getSupportedKeys() {\n\t\tthis.assertSupportsCommand(\n\t\t\tEntryControlCommand,\n\t\t\tEntryControlCommand.KeySupportedGet,\n\t\t);\n\n\t\tconst cc = new EntryControlCCKeySupportedGet({\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\tEntryControlCCKeySupportedReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\treturn response?.supportedKeys;\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async getEventCapabilities() {\n\t\tthis.assertSupportsCommand(\n\t\t\tEntryControlCommand,\n\t\t\tEntryControlCommand.EventSupportedGet,\n\t\t);\n\n\t\tconst cc = new EntryControlCCEventSupportedGet({\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\tEntryControlCCEventSupportedReport\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\"supportedDataTypes\",\n\t\t\t\t\"supportedEventTypes\",\n\t\t\t\t\"minKeyCacheSize\",\n\t\t\t\t\"maxKeyCacheSize\",\n\t\t\t\t\"minKeyCacheTimeout\",\n\t\t\t\t\"maxKeyCacheTimeout\",\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 getConfiguration() {\n\t\tthis.assertSupportsCommand(\n\t\t\tEntryControlCommand,\n\t\t\tEntryControlCommand.ConfigurationGet,\n\t\t);\n\n\t\tconst cc = new EntryControlCCConfigurationGet({\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\tEntryControlCCConfigurationReport\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, [\"keyCacheSize\", \"keyCacheTimeout\"]);\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async setConfiguration(\n\t\tkeyCacheSize: number,\n\t\tkeyCacheTimeout: number,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tEntryControlCommand,\n\t\t\tEntryControlCommand.ConfigurationGet,\n\t\t);\n\n\t\tconst cc = new EntryControlCCConfigurationSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tkeyCacheSize,\n\t\t\tkeyCacheTimeout,\n\t\t});\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\tprotected override get [SET_VALUE](): SetValueImplementation {\n\t\treturn async function(this: EntryControlCCAPI, { property }, value) {\n\t\t\tif (property !== \"keyCacheSize\" && property !== \"keyCacheTimeout\") {\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\n\t\t\tlet keyCacheSize = value;\n\t\t\tlet keyCacheTimeout = 2;\n\t\t\tif (property === \"keyCacheTimeout\") {\n\t\t\t\tkeyCacheTimeout = value;\n\n\t\t\t\tconst oldKeyCacheSize = this.tryGetValueDB()?.getValue<number>(\n\t\t\t\t\tEntryControlCCValues.keyCacheSize.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\tif (oldKeyCacheSize == undefined) {\n\t\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t\t`The \"keyCacheTimeout\" property cannot be changed before the key cache size is known!`,\n\t\t\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tkeyCacheSize = oldKeyCacheSize;\n\t\t\t}\n\t\t\tconst result = await this.setConfiguration(\n\t\t\t\tkeyCacheSize,\n\t\t\t\tkeyCacheTimeout,\n\t\t\t);\n\n\t\t\t// Verify the change after a short delay, unless the command was supervised and successful\n\t\t\tif (this.isSinglecast() && !supervisedCommandSucceeded(result)) {\n\t\t\t\tthis.schedulePoll({ property }, value, { transition: \"fast\" });\n\t\t\t}\n\n\t\t\treturn result;\n\t\t};\n\t}\n\n\tprotected get [POLL_VALUE](): PollValueImplementation {\n\t\treturn async function(this: EntryControlCCAPI, { property }) {\n\t\t\tswitch (property) {\n\t\t\t\tcase \"keyCacheSize\":\n\t\t\t\tcase \"keyCacheTimeout\":\n\t\t\t\t\treturn (await this.getConfiguration())?.[property];\n\t\t\t}\n\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t};\n\t}\n}\n\n@commandClass(CommandClasses[\"Entry Control\"])\n@implementedVersion(1)\n@ccValues(EntryControlCCValues)\nexport class EntryControlCC extends CommandClass {\n\tdeclare ccCommand: EntryControlCommand;\n\n\tpublic determineRequiredCCInterviews(): readonly CommandClasses[] {\n\t\treturn [\n\t\t\t...super.determineRequiredCCInterviews(),\n\t\t\tCommandClasses.Association,\n\t\t\tCommandClasses[\"Multi Channel Association\"],\n\t\t\tCommandClasses[\"Association Group Information\"],\n\t\t];\n\t}\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[\"Entry Control\"],\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// If one Association group issues Entry Control notifications,\n\t\t// we must associate ourselves with that channel\n\t\ttry {\n\t\t\tawait ccUtils.assignLifelineIssueingCommand(\n\t\t\t\tctx,\n\t\t\t\tendpoint,\n\t\t\t\tthis.ccId,\n\t\t\t\tEntryControlCommand.Notification,\n\t\t\t);\n\t\t} catch {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: endpoint.index,\n\t\t\t\tmessage: `Configuring associations to receive ${\n\t\t\t\t\tgetCCName(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t)\n\t\t\t\t} commands failed!`,\n\t\t\t\tlevel: \"warn\",\n\t\t\t});\n\t\t}\n\n\t\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: \"requesting entry control supported keys...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\n\t\tconst supportedKeys = await api.getSupportedKeys();\n\t\tif (supportedKeys) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage:\n\t\t\t\t\t`received entry control supported keys: ${supportedKeys.toString()}`,\n\t\t\t\tdirection: \"inbound\",\n\t\t\t});\n\t\t}\n\n\t\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: \"requesting entry control supported events...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\n\t\tconst eventCapabilities = await api.getEventCapabilities();\n\t\tif (eventCapabilities) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: `received entry control supported keys:\ndata types: ${\n\t\t\t\t\teventCapabilities.supportedDataTypes\n\t\t\t\t\t\t.map((e) => EntryControlDataTypes[e])\n\t\t\t\t\t\t.toString()\n\t\t\t\t}\nevent types: ${\n\t\t\t\t\teventCapabilities.supportedEventTypes\n\t\t\t\t\t\t.map((e) => EntryControlEventTypes[e])\n\t\t\t\t\t\t.toString()\n\t\t\t\t}\nmin key cache size: ${eventCapabilities.minKeyCacheSize}\nmax key cache size: ${eventCapabilities.maxKeyCacheSize}\nmin key cache timeout: ${eventCapabilities.minKeyCacheTimeout} seconds\nmax key cache timeout: ${eventCapabilities.maxKeyCacheTimeout} seconds`,\n\t\t\t\tdirection: \"inbound\",\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\tthis.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[\"Entry Control\"],\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: \"requesting entry control configuration...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\n\t\tconst conf = await api.getConfiguration();\n\t\tif (conf) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: `received entry control configuration:\nkey cache size: ${conf.keyCacheSize}\nkey cache timeout: ${conf.keyCacheTimeout} seconds`,\n\t\t\t\tdirection: \"inbound\",\n\t\t\t});\n\t\t}\n\t}\n}\n\n// @publicAPI\nexport interface EntryControlCCNotificationOptions {\n\tsequenceNumber: number;\n\tdataType: EntryControlDataTypes;\n\teventType: EntryControlEventTypes;\n\teventData?: string | Bytes;\n}\n\n@CCCommand(EntryControlCommand.Notification)\nexport class EntryControlCCNotification extends EntryControlCC {\n\tpublic constructor(\n\t\toptions: WithAddress<EntryControlCCNotificationOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\t// TODO: Check implementation:\n\t\tthis.sequenceNumber = options.sequenceNumber;\n\t\tthis.dataType = options.dataType;\n\t\tthis.eventType = options.eventType;\n\t\tthis.eventData = options.eventData;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): EntryControlCCNotification {\n\t\tvalidatePayload(raw.payload.length >= 4);\n\t\tconst sequenceNumber = raw.payload[0];\n\t\tlet dataType: EntryControlDataTypes = raw.payload[1] & 0b11;\n\t\tconst eventType: EntryControlEventTypes = raw.payload[2];\n\t\tconst eventDataLength = raw.payload[3];\n\t\tvalidatePayload(eventDataLength >= 0 && eventDataLength <= 32);\n\t\tconst offset = 4;\n\t\tvalidatePayload(raw.payload.length >= offset + eventDataLength);\n\t\tlet eventData: string | Bytes | undefined;\n\t\tif (eventDataLength > 0) {\n\t\t\t// We shouldn't need to check this, since the specs are pretty clear which format to expect.\n\t\t\t// But as always - manufacturers don't care and send ASCII data with 0 bytes...\n\n\t\t\t// We also need to disable the strict validation for some devices to make them work\n\t\t\tconst noStrictValidation = !!ctx.getDeviceConfig?.(\n\t\t\t\tctx.sourceNodeId,\n\t\t\t)?.compat?.disableStrictEntryControlDataValidation;\n\n\t\t\teventData = Bytes.from(\n\t\t\t\traw.payload.subarray(offset, offset + eventDataLength),\n\t\t\t);\n\t\t\tswitch (dataType) {\n\t\t\t\tcase EntryControlDataTypes.Raw:\n\t\t\t\t\t// RAW 1 to 32 bytes of arbitrary binary data\n\t\t\t\t\tif (!noStrictValidation) {\n\t\t\t\t\t\tvalidatePayload(\n\t\t\t\t\t\t\teventDataLength >= 1 && eventDataLength <= 32,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase EntryControlDataTypes.ASCII:\n\t\t\t\t\t// ASCII 1 to 32 ASCII encoded characters. ASCII codes MUST be in the value range 0x00-0xF7.\n\t\t\t\t\t// The string MUST be padded with the value 0xFF to fit 16 byte blocks when sent in a notification.\n\t\t\t\t\tif (!noStrictValidation) {\n\t\t\t\t\t\tvalidatePayload(\n\t\t\t\t\t\t\teventDataLength === 16 || eventDataLength === 32,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\teventData = eventData.toString(\"ascii\");\n\t\t\t\t\tif (!noStrictValidation) {\n\t\t\t\t\t\tvalidatePayload(\n\t\t\t\t\t\t\t/^[\\u0000-\\u007f]+[\\u00ff]*$/.test(eventData),\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\t// Trim 0xff padding bytes\n\t\t\t\t\teventData = eventData.replace(/[\\u00ff]*$/, \"\");\n\t\t\t\t\tbreak;\n\t\t\t\tcase EntryControlDataTypes.MD5:\n\t\t\t\t\t// MD5 16 byte binary data encoded as a MD5 hash value.\n\t\t\t\t\tif (!noStrictValidation) {\n\t\t\t\t\t\tvalidatePayload(eventDataLength === 16);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t} else {\n\t\t\tdataType = EntryControlDataTypes.None;\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsequenceNumber,\n\t\t\tdataType,\n\t\t\teventType,\n\t\t\teventData,\n\t\t});\n\t}\n\n\tpublic readonly sequenceNumber: number;\n\tpublic readonly dataType: EntryControlDataTypes;\n\tpublic readonly eventType: EntryControlEventTypes;\n\tpublic readonly eventData?: Uint8Array | string;\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\t\"sequence number\": this.sequenceNumber,\n\t\t\t\"data type\": this.dataType,\n\t\t\t\"event type\": this.eventType,\n\t\t};\n\t\tif (this.eventData) {\n\t\t\tswitch (this.eventType) {\n\t\t\t\tcase EntryControlEventTypes.CachedKeys:\n\t\t\t\tcase EntryControlEventTypes.Enter:\n\t\t\t\t\t// The event data is likely the user's PIN code, hide it from logs\n\t\t\t\t\tmessage[\"event data\"] = \"*\".repeat(this.eventData.length);\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tmessage[\"event data\"] = typeof this.eventData === \"string\"\n\t\t\t\t\t\t? this.eventData\n\t\t\t\t\t\t: buffer2hex(this.eventData);\n\t\t\t}\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 EntryControlCCKeySupportedReportOptions {\n\tsupportedKeys: number[];\n}\n\n@CCCommand(EntryControlCommand.KeySupportedReport)\n@ccValueProperty(\"supportedKeys\", EntryControlCCValues.supportedKeys)\nexport class EntryControlCCKeySupportedReport extends EntryControlCC {\n\tpublic constructor(\n\t\toptions: WithAddress<EntryControlCCKeySupportedReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\t// TODO: Check implementation:\n\t\tthis.supportedKeys = options.supportedKeys;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): EntryControlCCKeySupportedReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst length = raw.payload[0];\n\t\tvalidatePayload(raw.payload.length >= 1 + length);\n\t\tconst supportedKeys = parseBitMask(\n\t\t\traw.payload.subarray(1, 1 + length),\n\t\t\t0,\n\t\t);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsupportedKeys,\n\t\t});\n\t}\n\n\tpublic readonly supportedKeys: readonly number[];\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: { \"supported keys\": this.supportedKeys.toString() },\n\t\t};\n\t}\n}\n\n@CCCommand(EntryControlCommand.KeySupportedGet)\n@expectedCCResponse(EntryControlCCKeySupportedReport)\nexport class EntryControlCCKeySupportedGet extends EntryControlCC {}\n\n// @publicAPI\nexport interface EntryControlCCEventSupportedReportOptions {\n\tsupportedDataTypes: EntryControlDataTypes[];\n\tsupportedEventTypes: EntryControlEventTypes[];\n\tminKeyCacheSize: number;\n\tmaxKeyCacheSize: number;\n\tminKeyCacheTimeout: number;\n\tmaxKeyCacheTimeout: number;\n}\n\n@CCCommand(EntryControlCommand.EventSupportedReport)\n@ccValueProperty(\"supportedDataTypes\", EntryControlCCValues.supportedDataTypes)\n@ccValueProperty(\n\t\"supportedEventTypes\",\n\tEntryControlCCValues.supportedEventTypes,\n)\nexport class EntryControlCCEventSupportedReport extends EntryControlCC {\n\tpublic constructor(\n\t\toptions: WithAddress<EntryControlCCEventSupportedReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\t// TODO: Check implementation:\n\t\tthis.supportedDataTypes = options.supportedDataTypes;\n\t\tthis.supportedEventTypes = options.supportedEventTypes;\n\t\tthis.minKeyCacheSize = options.minKeyCacheSize;\n\t\tthis.maxKeyCacheSize = options.maxKeyCacheSize;\n\t\tthis.minKeyCacheTimeout = options.minKeyCacheTimeout;\n\t\tthis.maxKeyCacheTimeout = options.maxKeyCacheTimeout;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): EntryControlCCEventSupportedReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst dataTypeLength = raw.payload[0] & 0b11;\n\t\tlet offset = 1;\n\t\tvalidatePayload(raw.payload.length >= offset + dataTypeLength);\n\t\tconst supportedDataTypes: EntryControlDataTypes[] = parseBitMask(\n\t\t\traw.payload.subarray(offset, offset + dataTypeLength),\n\t\t\tEntryControlDataTypes.None,\n\t\t);\n\t\toffset += dataTypeLength;\n\t\tvalidatePayload(raw.payload.length >= offset + 1);\n\t\tconst eventTypeLength = raw.payload[offset] & 0b11111;\n\t\toffset += 1;\n\t\tvalidatePayload(raw.payload.length >= offset + eventTypeLength);\n\t\tconst supportedEventTypes: EntryControlEventTypes[] = parseBitMask(\n\t\t\traw.payload.subarray(offset, offset + eventTypeLength),\n\t\t\tEntryControlEventTypes.Caching,\n\t\t);\n\t\toffset += eventTypeLength;\n\t\tvalidatePayload(raw.payload.length >= offset + 4);\n\t\tconst minKeyCacheSize = raw.payload[offset];\n\t\tvalidatePayload(\n\t\t\tminKeyCacheSize >= 1 && minKeyCacheSize <= 32,\n\t\t);\n\t\tconst maxKeyCacheSize = raw.payload[offset + 1];\n\t\tvalidatePayload(\n\t\t\tmaxKeyCacheSize >= minKeyCacheSize\n\t\t\t\t&& maxKeyCacheSize <= 32,\n\t\t);\n\t\tconst minKeyCacheTimeout = raw.payload[offset + 2];\n\t\tconst maxKeyCacheTimeout = raw.payload[offset + 3];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsupportedDataTypes,\n\t\t\tsupportedEventTypes,\n\t\t\tminKeyCacheSize,\n\t\t\tmaxKeyCacheSize,\n\t\t\tminKeyCacheTimeout,\n\t\t\tmaxKeyCacheTimeout,\n\t\t});\n\t}\n\n\tpublic persistValues(ctx: PersistValuesContext): boolean {\n\t\tif (!super.persistValues(ctx)) return false;\n\n\t\t// Store min/max cache size and timeout as metadata\n\t\tconst keyCacheSizeValue = EntryControlCCValues.keyCacheSize;\n\t\tthis.setMetadata(ctx, keyCacheSizeValue, {\n\t\t\t...keyCacheSizeValue.meta,\n\t\t\tmin: this.minKeyCacheSize,\n\t\t\tmax: this.maxKeyCacheSize,\n\t\t});\n\n\t\tconst keyCacheTimeoutValue = EntryControlCCValues.keyCacheTimeout;\n\t\tthis.setMetadata(ctx, keyCacheTimeoutValue, {\n\t\t\t...keyCacheTimeoutValue.meta,\n\t\t\tmin: this.minKeyCacheTimeout,\n\t\t\tmax: this.maxKeyCacheTimeout,\n\t\t});\n\n\t\treturn true;\n\t}\n\n\tpublic readonly supportedDataTypes: readonly EntryControlDataTypes[];\n\n\tpublic readonly supportedEventTypes: readonly EntryControlEventTypes[];\n\n\tpublic readonly minKeyCacheSize: number;\n\tpublic readonly maxKeyCacheSize: number;\n\tpublic readonly minKeyCacheTimeout: number;\n\tpublic readonly maxKeyCacheTimeout: 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\"supported data types\": this.supportedDataTypes\n\t\t\t\t\t.map((dt) => EntryControlDataTypes[dt])\n\t\t\t\t\t.toString(),\n\t\t\t\t\"supported event types\": this.supportedEventTypes\n\t\t\t\t\t.map((et) => EntryControlEventTypes[et])\n\t\t\t\t\t.toString(),\n\t\t\t\t\"min key cache size\": this.minKeyCacheSize,\n\t\t\t\t\"max key cache size\": this.maxKeyCacheSize,\n\t\t\t\t\"min key cache timeout\": this.minKeyCacheTimeout,\n\t\t\t\t\"max key cache timeout\": this.maxKeyCacheTimeout,\n\t\t\t},\n\t\t};\n\t}\n}\n\n@CCCommand(EntryControlCommand.EventSupportedGet)\n@expectedCCResponse(EntryControlCCEventSupportedReport)\nexport class EntryControlCCEventSupportedGet extends EntryControlCC {}\n\n// @publicAPI\nexport interface EntryControlCCConfigurationReportOptions {\n\tkeyCacheSize: number;\n\tkeyCacheTimeout: number;\n}\n\n@CCCommand(EntryControlCommand.ConfigurationReport)\n@ccValueProperty(\"keyCacheSize\", EntryControlCCValues.keyCacheSize)\n@ccValueProperty(\"keyCacheTimeout\", EntryControlCCValues.keyCacheTimeout)\nexport class EntryControlCCConfigurationReport extends EntryControlCC {\n\tpublic constructor(\n\t\toptions: WithAddress<EntryControlCCConfigurationReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\t// TODO: Check implementation:\n\t\tthis.keyCacheSize = options.keyCacheSize;\n\t\tthis.keyCacheTimeout = options.keyCacheTimeout;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): EntryControlCCConfigurationReport {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst keyCacheSize = raw.payload[0];\n\t\tvalidatePayload(keyCacheSize >= 1 && keyCacheSize <= 32);\n\t\tconst keyCacheTimeout = raw.payload[1];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tkeyCacheSize,\n\t\t\tkeyCacheTimeout,\n\t\t});\n\t}\n\n\tpublic readonly keyCacheSize: number;\n\n\tpublic readonly keyCacheTimeout: 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\"key cache size\": this.keyCacheSize,\n\t\t\t\t\"key cache timeout\": this.keyCacheTimeout,\n\t\t\t},\n\t\t};\n\t}\n}\n\n@CCCommand(EntryControlCommand.ConfigurationGet)\n@expectedCCResponse(EntryControlCCConfigurationReport)\nexport class EntryControlCCConfigurationGet extends EntryControlCC {}\n\n// @publicAPI\nexport interface EntryControlCCConfigurationSetOptions {\n\tkeyCacheSize: number;\n\tkeyCacheTimeout: number;\n}\n\n@CCCommand(EntryControlCommand.ConfigurationSet)\n@useSupervision()\nexport class EntryControlCCConfigurationSet extends EntryControlCC {\n\tpublic constructor(\n\t\toptions: WithAddress<EntryControlCCConfigurationSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.keyCacheSize = options.keyCacheSize;\n\t\tthis.keyCacheTimeout = options.keyCacheTimeout;\n\t}\n\n\tpublic static from(\n\t\t_raw: CCRaw,\n\t\t_ctx: CCParsingContext,\n\t): EntryControlCCConfigurationSet {\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 EntryControlCCConfigurationSet({\n\t\t// \tnodeId: ctx.sourceNodeId,\n\t\t// });\n\t}\n\n\tpublic readonly keyCacheSize: number;\n\tpublic readonly keyCacheTimeout: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([this.keyCacheSize, this.keyCacheTimeout]);\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\"key cache size\": this.keyCacheSize,\n\t\t\t\t\"key cache timeout\": this.keyCacheTimeout,\n\t\t\t},\n\t\t};\n\t}\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["import_safe"]
7
7
  }