@zwave-js/cc 9.3.1-0-pr-4662-79458fb

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 (297) hide show
  1. package/build/cc/AlarmSensorCC.d.ts +54 -0
  2. package/build/cc/AlarmSensorCC.d.ts.map +1 -0
  3. package/build/cc/AlarmSensorCC.js +378 -0
  4. package/build/cc/AlarmSensorCC.js.map +1 -0
  5. package/build/cc/AssociationCC.d.ts +123 -0
  6. package/build/cc/AssociationCC.d.ts.map +1 -0
  7. package/build/cc/AssociationCC.js +615 -0
  8. package/build/cc/AssociationCC.js.map +1 -0
  9. package/build/cc/AssociationGroupInfoCC.d.ts +97 -0
  10. package/build/cc/AssociationGroupInfoCC.d.ts.map +1 -0
  11. package/build/cc/AssociationGroupInfoCC.js +530 -0
  12. package/build/cc/AssociationGroupInfoCC.js.map +1 -0
  13. package/build/cc/BarrierOperatorCC.d.ts +75 -0
  14. package/build/cc/BarrierOperatorCC.d.ts.map +1 -0
  15. package/build/cc/BarrierOperatorCC.js +492 -0
  16. package/build/cc/BarrierOperatorCC.js.map +1 -0
  17. package/build/cc/BasicCC.d.ts +51 -0
  18. package/build/cc/BasicCC.d.ts.map +1 -0
  19. package/build/cc/BasicCC.js +344 -0
  20. package/build/cc/BasicCC.js.map +1 -0
  21. package/build/cc/BatteryCC.d.ts +56 -0
  22. package/build/cc/BatteryCC.d.ts.map +1 -0
  23. package/build/cc/BatteryCC.js +417 -0
  24. package/build/cc/BatteryCC.js.map +1 -0
  25. package/build/cc/BinarySensorCC.d.ts +52 -0
  26. package/build/cc/BinarySensorCC.d.ts.map +1 -0
  27. package/build/cc/BinarySensorCC.js +321 -0
  28. package/build/cc/BinarySensorCC.js.map +1 -0
  29. package/build/cc/BinarySwitchCC.d.ts +55 -0
  30. package/build/cc/BinarySwitchCC.d.ts.map +1 -0
  31. package/build/cc/BinarySwitchCC.js +327 -0
  32. package/build/cc/BinarySwitchCC.js.map +1 -0
  33. package/build/cc/CRC16CC.d.ts +28 -0
  34. package/build/cc/CRC16CC.d.ts.map +1 -0
  35. package/build/cc/CRC16CC.js +109 -0
  36. package/build/cc/CRC16CC.js.map +1 -0
  37. package/build/cc/CentralSceneCC.d.ts +69 -0
  38. package/build/cc/CentralSceneCC.d.ts.map +1 -0
  39. package/build/cc/CentralSceneCC.js +443 -0
  40. package/build/cc/CentralSceneCC.js.map +1 -0
  41. package/build/cc/ClimateControlScheduleCC.d.ts +78 -0
  42. package/build/cc/ClimateControlScheduleCC.d.ts.map +1 -0
  43. package/build/cc/ClimateControlScheduleCC.js +417 -0
  44. package/build/cc/ClimateControlScheduleCC.js.map +1 -0
  45. package/build/cc/ClockCC.d.ts +40 -0
  46. package/build/cc/ClockCC.d.ts.map +1 -0
  47. package/build/cc/ClockCC.js +185 -0
  48. package/build/cc/ClockCC.js.map +1 -0
  49. package/build/cc/ColorSwitchCC.d.ts +98 -0
  50. package/build/cc/ColorSwitchCC.d.ts.map +1 -0
  51. package/build/cc/ColorSwitchCC.js +1045 -0
  52. package/build/cc/ColorSwitchCC.js.map +1 -0
  53. package/build/cc/ConfigurationCC.d.ts +315 -0
  54. package/build/cc/ConfigurationCC.d.ts.map +1 -0
  55. package/build/cc/ConfigurationCC.js +2257 -0
  56. package/build/cc/ConfigurationCC.js.map +1 -0
  57. package/build/cc/DeviceResetLocallyCC.d.ts +9 -0
  58. package/build/cc/DeviceResetLocallyCC.d.ts.map +1 -0
  59. package/build/cc/DeviceResetLocallyCC.js +28 -0
  60. package/build/cc/DeviceResetLocallyCC.js.map +1 -0
  61. package/build/cc/DoorLockCC.d.ts +116 -0
  62. package/build/cc/DoorLockCC.d.ts.map +1 -0
  63. package/build/cc/DoorLockCC.js +1112 -0
  64. package/build/cc/DoorLockCC.js.map +1 -0
  65. package/build/cc/DoorLockLoggingCC.d.ts +41 -0
  66. package/build/cc/DoorLockLoggingCC.d.ts.map +1 -0
  67. package/build/cc/DoorLockLoggingCC.js +288 -0
  68. package/build/cc/DoorLockLoggingCC.js.map +1 -0
  69. package/build/cc/EntryControlCC.d.ts +71 -0
  70. package/build/cc/EntryControlCC.d.ts.map +1 -0
  71. package/build/cc/EntryControlCC.js +492 -0
  72. package/build/cc/EntryControlCC.js.map +1 -0
  73. package/build/cc/FirmwareUpdateMetaDataCC.d.ts +148 -0
  74. package/build/cc/FirmwareUpdateMetaDataCC.d.ts.map +1 -0
  75. package/build/cc/FirmwareUpdateMetaDataCC.js +727 -0
  76. package/build/cc/FirmwareUpdateMetaDataCC.js.map +1 -0
  77. package/build/cc/HailCC.d.ts +6 -0
  78. package/build/cc/HailCC.d.ts.map +1 -0
  79. package/build/cc/HailCC.js +23 -0
  80. package/build/cc/HailCC.js.map +1 -0
  81. package/build/cc/HumidityControlModeCC.d.ts +47 -0
  82. package/build/cc/HumidityControlModeCC.d.ts.map +1 -0
  83. package/build/cc/HumidityControlModeCC.js +288 -0
  84. package/build/cc/HumidityControlModeCC.js.map +1 -0
  85. package/build/cc/HumidityControlOperatingStateCC.d.ts +24 -0
  86. package/build/cc/HumidityControlOperatingStateCC.d.ts.map +1 -0
  87. package/build/cc/HumidityControlOperatingStateCC.js +129 -0
  88. package/build/cc/HumidityControlOperatingStateCC.js.map +1 -0
  89. package/build/cc/HumidityControlSetpointCC.d.ts +103 -0
  90. package/build/cc/HumidityControlSetpointCC.d.ts.map +1 -0
  91. package/build/cc/HumidityControlSetpointCC.js +626 -0
  92. package/build/cc/HumidityControlSetpointCC.js.map +1 -0
  93. package/build/cc/IndicatorCC.d.ts +88 -0
  94. package/build/cc/IndicatorCC.d.ts.map +1 -0
  95. package/build/cc/IndicatorCC.js +758 -0
  96. package/build/cc/IndicatorCC.js.map +1 -0
  97. package/build/cc/IrrigationCC.d.ts +278 -0
  98. package/build/cc/IrrigationCC.d.ts.map +1 -0
  99. package/build/cc/IrrigationCC.js +2062 -0
  100. package/build/cc/IrrigationCC.js.map +1 -0
  101. package/build/cc/LanguageCC.d.ts +41 -0
  102. package/build/cc/LanguageCC.d.ts.map +1 -0
  103. package/build/cc/LanguageCC.js +220 -0
  104. package/build/cc/LanguageCC.js.map +1 -0
  105. package/build/cc/LockCC.d.ts +41 -0
  106. package/build/cc/LockCC.d.ts.map +1 -0
  107. package/build/cc/LockCC.js +185 -0
  108. package/build/cc/LockCC.js.map +1 -0
  109. package/build/cc/ManufacturerProprietaryCC.d.ts +31 -0
  110. package/build/cc/ManufacturerProprietaryCC.d.ts.map +1 -0
  111. package/build/cc/ManufacturerProprietaryCC.js +275 -0
  112. package/build/cc/ManufacturerProprietaryCC.js.map +1 -0
  113. package/build/cc/ManufacturerSpecificCC.d.ts +59 -0
  114. package/build/cc/ManufacturerSpecificCC.d.ts.map +1 -0
  115. package/build/cc/ManufacturerSpecificCC.js +285 -0
  116. package/build/cc/ManufacturerSpecificCC.js.map +1 -0
  117. package/build/cc/MeterCC.d.ts +100 -0
  118. package/build/cc/MeterCC.d.ts.map +1 -0
  119. package/build/cc/MeterCC.js +820 -0
  120. package/build/cc/MeterCC.js.map +1 -0
  121. package/build/cc/MultiChannelAssociationCC.d.ts +127 -0
  122. package/build/cc/MultiChannelAssociationCC.d.ts.map +1 -0
  123. package/build/cc/MultiChannelAssociationCC.js +883 -0
  124. package/build/cc/MultiChannelAssociationCC.js.map +1 -0
  125. package/build/cc/MultiChannelCC.d.ts +164 -0
  126. package/build/cc/MultiChannelCC.d.ts.map +1 -0
  127. package/build/cc/MultiChannelCC.js +1004 -0
  128. package/build/cc/MultiChannelCC.js.map +1 -0
  129. package/build/cc/MultiCommandCC.d.ts +28 -0
  130. package/build/cc/MultiCommandCC.d.ts.map +1 -0
  131. package/build/cc/MultiCommandCC.js +137 -0
  132. package/build/cc/MultiCommandCC.js.map +1 -0
  133. package/build/cc/MultilevelSensorCC.d.ts +83 -0
  134. package/build/cc/MultilevelSensorCC.d.ts.map +1 -0
  135. package/build/cc/MultilevelSensorCC.js +633 -0
  136. package/build/cc/MultilevelSensorCC.js.map +1 -0
  137. package/build/cc/MultilevelSwitchCC.d.ts +86 -0
  138. package/build/cc/MultilevelSwitchCC.d.ts.map +1 -0
  139. package/build/cc/MultilevelSwitchCC.js +774 -0
  140. package/build/cc/MultilevelSwitchCC.js.map +1 -0
  141. package/build/cc/NoOperationCC.d.ts +17 -0
  142. package/build/cc/NoOperationCC.d.ts.map +1 -0
  143. package/build/cc/NoOperationCC.js +50 -0
  144. package/build/cc/NoOperationCC.js.map +1 -0
  145. package/build/cc/NodeNamingCC.d.ts +57 -0
  146. package/build/cc/NodeNamingCC.d.ts.map +1 -0
  147. package/build/cc/NodeNamingCC.js +313 -0
  148. package/build/cc/NodeNamingCC.js.map +1 -0
  149. package/build/cc/NotificationCC.d.ts +127 -0
  150. package/build/cc/NotificationCC.d.ts.map +1 -0
  151. package/build/cc/NotificationCC.js +1193 -0
  152. package/build/cc/NotificationCC.js.map +1 -0
  153. package/build/cc/PowerlevelCC.d.ts +63 -0
  154. package/build/cc/PowerlevelCC.d.ts.map +1 -0
  155. package/build/cc/PowerlevelCC.js +262 -0
  156. package/build/cc/PowerlevelCC.js.map +1 -0
  157. package/build/cc/ProtectionCC.d.ts +94 -0
  158. package/build/cc/ProtectionCC.d.ts.map +1 -0
  159. package/build/cc/ProtectionCC.js +630 -0
  160. package/build/cc/ProtectionCC.js.map +1 -0
  161. package/build/cc/SceneActivationCC.d.ts +34 -0
  162. package/build/cc/SceneActivationCC.d.ts.map +1 -0
  163. package/build/cc/SceneActivationCC.js +170 -0
  164. package/build/cc/SceneActivationCC.js.map +1 -0
  165. package/build/cc/SceneActuatorConfigurationCC.d.ts +52 -0
  166. package/build/cc/SceneActuatorConfigurationCC.d.ts.map +1 -0
  167. package/build/cc/SceneActuatorConfigurationCC.js +368 -0
  168. package/build/cc/SceneActuatorConfigurationCC.js.map +1 -0
  169. package/build/cc/SceneControllerConfigurationCC.d.ts +61 -0
  170. package/build/cc/SceneControllerConfigurationCC.d.ts.map +1 -0
  171. package/build/cc/SceneControllerConfigurationCC.js +444 -0
  172. package/build/cc/SceneControllerConfigurationCC.js.map +1 -0
  173. package/build/cc/Security2CC.d.ts +213 -0
  174. package/build/cc/Security2CC.d.ts.map +1 -0
  175. package/build/cc/Security2CC.js +1124 -0
  176. package/build/cc/Security2CC.js.map +1 -0
  177. package/build/cc/SecurityCC.d.ts +109 -0
  178. package/build/cc/SecurityCC.d.ts.map +1 -0
  179. package/build/cc/SecurityCC.js +609 -0
  180. package/build/cc/SecurityCC.js.map +1 -0
  181. package/build/cc/SoundSwitchCC.d.ts +87 -0
  182. package/build/cc/SoundSwitchCC.d.ts.map +1 -0
  183. package/build/cc/SoundSwitchCC.js +548 -0
  184. package/build/cc/SoundSwitchCC.js.map +1 -0
  185. package/build/cc/SupervisionCC.d.ts +63 -0
  186. package/build/cc/SupervisionCC.d.ts.map +1 -0
  187. package/build/cc/SupervisionCC.js +239 -0
  188. package/build/cc/SupervisionCC.js.map +1 -0
  189. package/build/cc/ThermostatFanModeCC.d.ts +53 -0
  190. package/build/cc/ThermostatFanModeCC.d.ts.map +1 -0
  191. package/build/cc/ThermostatFanModeCC.js +359 -0
  192. package/build/cc/ThermostatFanModeCC.js.map +1 -0
  193. package/build/cc/ThermostatFanStateCC.d.ts +24 -0
  194. package/build/cc/ThermostatFanStateCC.d.ts.map +1 -0
  195. package/build/cc/ThermostatFanStateCC.js +131 -0
  196. package/build/cc/ThermostatFanStateCC.js.map +1 -0
  197. package/build/cc/ThermostatModeCC.d.ts +58 -0
  198. package/build/cc/ThermostatModeCC.d.ts.map +1 -0
  199. package/build/cc/ThermostatModeCC.js +370 -0
  200. package/build/cc/ThermostatModeCC.js.map +1 -0
  201. package/build/cc/ThermostatOperatingStateCC.d.ts +24 -0
  202. package/build/cc/ThermostatOperatingStateCC.d.ts.map +1 -0
  203. package/build/cc/ThermostatOperatingStateCC.js +127 -0
  204. package/build/cc/ThermostatOperatingStateCC.js.map +1 -0
  205. package/build/cc/ThermostatSetbackCC.d.ts +42 -0
  206. package/build/cc/ThermostatSetbackCC.d.ts.map +1 -0
  207. package/build/cc/ThermostatSetbackCC.js +237 -0
  208. package/build/cc/ThermostatSetbackCC.js.map +1 -0
  209. package/build/cc/ThermostatSetpointCC.d.ts +98 -0
  210. package/build/cc/ThermostatSetpointCC.d.ts.map +1 -0
  211. package/build/cc/ThermostatSetpointCC.js +707 -0
  212. package/build/cc/ThermostatSetpointCC.js.map +1 -0
  213. package/build/cc/TimeCC.d.ts +78 -0
  214. package/build/cc/TimeCC.d.ts.map +1 -0
  215. package/build/cc/TimeCC.js +373 -0
  216. package/build/cc/TimeCC.js.map +1 -0
  217. package/build/cc/TimeParametersCC.d.ts +40 -0
  218. package/build/cc/TimeParametersCC.d.ts.map +1 -0
  219. package/build/cc/TimeParametersCC.js +275 -0
  220. package/build/cc/TimeParametersCC.js.map +1 -0
  221. package/build/cc/TransportServiceCC.d.ts +101 -0
  222. package/build/cc/TransportServiceCC.d.ts.map +1 -0
  223. package/build/cc/TransportServiceCC.js +404 -0
  224. package/build/cc/TransportServiceCC.js.map +1 -0
  225. package/build/cc/UserCodeCC.d.ts +219 -0
  226. package/build/cc/UserCodeCC.d.ts.map +1 -0
  227. package/build/cc/UserCodeCC.js +1526 -0
  228. package/build/cc/UserCodeCC.js.map +1 -0
  229. package/build/cc/VersionCC.d.ts +91 -0
  230. package/build/cc/VersionCC.d.ts.map +1 -0
  231. package/build/cc/VersionCC.js +654 -0
  232. package/build/cc/VersionCC.js.map +1 -0
  233. package/build/cc/WakeUpCC.d.ts +67 -0
  234. package/build/cc/WakeUpCC.d.ts.map +1 -0
  235. package/build/cc/WakeUpCC.js +425 -0
  236. package/build/cc/WakeUpCC.js.map +1 -0
  237. package/build/cc/ZWavePlusCC.d.ts +40 -0
  238. package/build/cc/ZWavePlusCC.d.ts.map +1 -0
  239. package/build/cc/ZWavePlusCC.js +269 -0
  240. package/build/cc/ZWavePlusCC.js.map +1 -0
  241. package/build/cc/index.d.ts +64 -0
  242. package/build/cc/index.d.ts.map +1 -0
  243. package/build/cc/index.js +496 -0
  244. package/build/cc/index.js.map +1 -0
  245. package/build/cc/manufacturerProprietary/FibaroCC.d.ts +62 -0
  246. package/build/cc/manufacturerProprietary/FibaroCC.d.ts.map +1 -0
  247. package/build/cc/manufacturerProprietary/FibaroCC.js +247 -0
  248. package/build/cc/manufacturerProprietary/FibaroCC.js.map +1 -0
  249. package/build/index.d.ts +11 -0
  250. package/build/index.d.ts.map +1 -0
  251. package/build/index.js +48 -0
  252. package/build/index.js.map +1 -0
  253. package/build/index_safe.d.ts +4 -0
  254. package/build/index_safe.d.ts.map +1 -0
  255. package/build/index_safe.js +30 -0
  256. package/build/index_safe.js.map +1 -0
  257. package/build/lib/API.d.ts +176 -0
  258. package/build/lib/API.d.ts.map +1 -0
  259. package/build/lib/API.js +325 -0
  260. package/build/lib/API.js.map +1 -0
  261. package/build/lib/CommandClass.d.ts +341 -0
  262. package/build/lib/CommandClass.d.ts.map +1 -0
  263. package/build/lib/CommandClass.js +1088 -0
  264. package/build/lib/CommandClass.js.map +1 -0
  265. package/build/lib/EncapsulatingCommandClass.d.ts +35 -0
  266. package/build/lib/EncapsulatingCommandClass.d.ts.map +1 -0
  267. package/build/lib/EncapsulatingCommandClass.js +53 -0
  268. package/build/lib/EncapsulatingCommandClass.js.map +1 -0
  269. package/build/lib/ICommandClassContainer.d.ts +9 -0
  270. package/build/lib/ICommandClassContainer.d.ts.map +1 -0
  271. package/build/lib/ICommandClassContainer.js +12 -0
  272. package/build/lib/ICommandClassContainer.js.map +1 -0
  273. package/build/lib/NotificationEventPayload.d.ts +11 -0
  274. package/build/lib/NotificationEventPayload.d.ts.map +1 -0
  275. package/build/lib/NotificationEventPayload.js +11 -0
  276. package/build/lib/NotificationEventPayload.js.map +1 -0
  277. package/build/lib/Security2/Extension.d.ts +87 -0
  278. package/build/lib/Security2/Extension.d.ts.map +1 -0
  279. package/build/lib/Security2/Extension.js +235 -0
  280. package/build/lib/Security2/Extension.js.map +1 -0
  281. package/build/lib/Security2/shared.d.ts +31 -0
  282. package/build/lib/Security2/shared.d.ts.map +1 -0
  283. package/build/lib/Security2/shared.js +37 -0
  284. package/build/lib/Security2/shared.js.map +1 -0
  285. package/build/lib/_Types.d.ts +1446 -0
  286. package/build/lib/_Types.d.ts.map +1 -0
  287. package/build/lib/_Types.js +1334 -0
  288. package/build/lib/_Types.js.map +1 -0
  289. package/build/lib/serializers.d.ts +24 -0
  290. package/build/lib/serializers.d.ts.map +1 -0
  291. package/build/lib/serializers.js +66 -0
  292. package/build/lib/serializers.js.map +1 -0
  293. package/build/lib/utils.d.ts +13 -0
  294. package/build/lib/utils.d.ts.map +1 -0
  295. package/build/lib/utils.js +675 -0
  296. package/build/lib/utils.js.map +1 -0
  297. package/package.json +77 -0
@@ -0,0 +1,609 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.SecurityCCCommandsSupportedGet = exports.SecurityCCCommandsSupportedReport = exports.SecurityCCNetworkKeySet = exports.SecurityCCNetworkKeyVerify = exports.SecurityCCSchemeInherit = exports.SecurityCCSchemeGet = exports.SecurityCCSchemeReport = exports.SecurityCCCommandEncapsulationNonceGet = exports.SecurityCCCommandEncapsulation = exports.SecurityCCNonceGet = exports.SecurityCCNonceReport = exports.SecurityCC = exports.SecurityCCAPI = void 0;
10
+ const core_1 = require("@zwave-js/core");
11
+ const serial_1 = require("@zwave-js/serial");
12
+ const safe_1 = require("@zwave-js/shared/safe");
13
+ const crypto_1 = require("crypto");
14
+ const API_1 = require("../lib/API");
15
+ const CommandClass_1 = require("../lib/CommandClass");
16
+ const _Types_1 = require("../lib/_Types");
17
+ const Security2CC_1 = require("./Security2CC");
18
+ // @noSetValueAPI This is an encapsulation CC
19
+ function getAuthenticationData(senderNonce, receiverNonce, ccCommand, sendingNodeId, receivingNodeId, encryptedPayload) {
20
+ return Buffer.concat([
21
+ senderNonce,
22
+ receiverNonce,
23
+ Buffer.from([
24
+ ccCommand,
25
+ sendingNodeId,
26
+ receivingNodeId,
27
+ encryptedPayload.length,
28
+ ]),
29
+ encryptedPayload,
30
+ ]);
31
+ }
32
+ function throwNoNonce(reason) {
33
+ let message = `Security CC requires a nonce to be sent!`;
34
+ if (reason)
35
+ message += ` Reason: ${reason}`;
36
+ throw new core_1.ZWaveError(message, core_1.ZWaveErrorCodes.SecurityCC_NoNonce);
37
+ }
38
+ const HALF_NONCE_SIZE = 8;
39
+ // TODO: Ignore commands if received via multicast
40
+ // @noValidateArgs - Encapsulation CCs are used internally and too frequently that we
41
+ // want to pay the cost of validating each call
42
+ let SecurityCCAPI = class SecurityCCAPI extends API_1.PhysicalCCAPI {
43
+ supportsCommand(_cmd) {
44
+ // All commands are mandatory
45
+ return true;
46
+ }
47
+ async sendEncapsulated(encapsulated, requestNextNonce = false) {
48
+ if (requestNextNonce) {
49
+ this.assertSupportsCommand(_Types_1.SecurityCommand, _Types_1.SecurityCommand.CommandEncapsulation);
50
+ }
51
+ else {
52
+ this.assertSupportsCommand(_Types_1.SecurityCommand, _Types_1.SecurityCommand.CommandEncapsulationNonceGet);
53
+ }
54
+ const cc = new (requestNextNonce
55
+ ? SecurityCCCommandEncapsulationNonceGet
56
+ : SecurityCCCommandEncapsulation)(this.applHost, {
57
+ nodeId: this.endpoint.nodeId,
58
+ encapsulated,
59
+ });
60
+ await this.applHost.sendCommand(cc, this.commandOptions);
61
+ }
62
+ /**
63
+ * Requests a new nonce for Security CC encapsulation which is not directly linked to a specific command.
64
+ */
65
+ async getNonce() {
66
+ this.assertSupportsCommand(_Types_1.SecurityCommand, _Types_1.SecurityCommand.NonceGet);
67
+ const cc = new SecurityCCNonceGet(this.applHost, {
68
+ nodeId: this.endpoint.nodeId,
69
+ endpoint: this.endpoint.index,
70
+ });
71
+ const response = await this.applHost.sendCommand(cc, {
72
+ ...this.commandOptions,
73
+ // Nonce requests must be handled immediately
74
+ priority: core_1.MessagePriority.Nonce,
75
+ // Only try getting a nonce once
76
+ maxSendAttempts: 1,
77
+ });
78
+ if (!response)
79
+ return;
80
+ const nonce = response.nonce;
81
+ const secMan = this.applHost.securityManager;
82
+ secMan.setNonce({
83
+ issuer: this.endpoint.nodeId,
84
+ nonceId: secMan.getNonceId(nonce),
85
+ }, { nonce, receiver: this.applHost.ownNodeId }, { free: true });
86
+ return nonce;
87
+ }
88
+ /**
89
+ * Responds to a NonceGet request. The message is sent without any retransmission etc.
90
+ * The return value indicates whether a nonce was successfully sent
91
+ */
92
+ async sendNonce() {
93
+ this.assertSupportsCommand(_Types_1.SecurityCommand, _Types_1.SecurityCommand.NonceReport);
94
+ if (!this.applHost.securityManager) {
95
+ throw new core_1.ZWaveError(`Nonces can only be sent if secure communication is set up!`, core_1.ZWaveErrorCodes.Driver_NoSecurity);
96
+ }
97
+ const nonce = this.applHost.securityManager.generateNonce(this.endpoint.nodeId, HALF_NONCE_SIZE);
98
+ const nonceId = this.applHost.securityManager.getNonceId(nonce);
99
+ const cc = new SecurityCCNonceReport(this.applHost, {
100
+ nodeId: this.endpoint.nodeId,
101
+ endpoint: this.endpoint.index,
102
+ nonce,
103
+ });
104
+ try {
105
+ await this.applHost.sendCommand(cc, {
106
+ ...this.commandOptions,
107
+ // Seems we need these options or some nodes won't accept the nonce
108
+ transmitOptions: core_1.TransmitOptions.ACK | core_1.TransmitOptions.AutoRoute,
109
+ // Only try sending a nonce once
110
+ maxSendAttempts: 1,
111
+ // Nonce requests must be handled immediately
112
+ priority: core_1.MessagePriority.Nonce,
113
+ // We don't want failures causing us to treat the node as asleep or dead
114
+ changeNodeStatusOnMissingACK: false,
115
+ });
116
+ }
117
+ catch (e) {
118
+ if ((0, core_1.isTransmissionError)(e)) {
119
+ // The nonce could not be sent, invalidate it
120
+ this.applHost.securityManager.deleteNonce(nonceId);
121
+ return false;
122
+ }
123
+ else {
124
+ // Pass other errors through
125
+ throw e;
126
+ }
127
+ }
128
+ return true;
129
+ }
130
+ async getSecurityScheme() {
131
+ this.assertSupportsCommand(_Types_1.SecurityCommand, _Types_1.SecurityCommand.SchemeGet);
132
+ const cc = new SecurityCCSchemeGet(this.applHost, {
133
+ nodeId: this.endpoint.nodeId,
134
+ endpoint: this.endpoint.index,
135
+ });
136
+ await this.applHost.sendCommand(cc, this.commandOptions);
137
+ // There is only one scheme, so we hardcode it
138
+ return [0];
139
+ }
140
+ async inheritSecurityScheme() {
141
+ this.assertSupportsCommand(_Types_1.SecurityCommand, _Types_1.SecurityCommand.SchemeInherit);
142
+ const cc = new SecurityCCSchemeInherit(this.applHost, {
143
+ nodeId: this.endpoint.nodeId,
144
+ endpoint: this.endpoint.index,
145
+ });
146
+ await this.applHost.sendCommand(cc, this.commandOptions);
147
+ // There is only one scheme, so we don't return anything here
148
+ }
149
+ async setNetworkKey(networkKey) {
150
+ this.assertSupportsCommand(_Types_1.SecurityCommand, _Types_1.SecurityCommand.NetworkKeySet);
151
+ const keySet = new SecurityCCNetworkKeySet(this.applHost, {
152
+ nodeId: this.endpoint.nodeId,
153
+ endpoint: this.endpoint.index,
154
+ networkKey,
155
+ });
156
+ const cc = new SecurityCCCommandEncapsulation(this.applHost, {
157
+ nodeId: this.endpoint.nodeId,
158
+ endpoint: this.endpoint.index,
159
+ encapsulated: keySet,
160
+ alternativeNetworkKey: Buffer.alloc(16, 0),
161
+ });
162
+ await this.applHost.sendCommand(cc, this.commandOptions);
163
+ }
164
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
165
+ async getSupportedCommands() {
166
+ this.assertSupportsCommand(_Types_1.SecurityCommand, _Types_1.SecurityCommand.CommandsSupportedGet);
167
+ const cc = new SecurityCCCommandsSupportedGet(this.applHost, {
168
+ nodeId: this.endpoint.nodeId,
169
+ endpoint: this.endpoint.index,
170
+ });
171
+ const response = await this.applHost.sendCommand(cc, this.commandOptions);
172
+ if (response) {
173
+ return (0, safe_1.pick)(response, ["supportedCCs", "controlledCCs"]);
174
+ }
175
+ }
176
+ };
177
+ SecurityCCAPI = __decorate([
178
+ (0, CommandClass_1.API)(core_1.CommandClasses.Security)
179
+ ], SecurityCCAPI);
180
+ exports.SecurityCCAPI = SecurityCCAPI;
181
+ let SecurityCC = class SecurityCC extends CommandClass_1.CommandClass {
182
+ async interview(applHost) {
183
+ const node = this.getNode(applHost);
184
+ const endpoint = this.getEndpoint(applHost);
185
+ const api = API_1.CCAPI.create(core_1.CommandClasses.Security, applHost, endpoint).withOptions({
186
+ priority: core_1.MessagePriority.NodeQuery,
187
+ });
188
+ applHost.controllerLog.logNode(node.id, {
189
+ message: "Querying securely supported commands (S0)...",
190
+ direction: "outbound",
191
+ });
192
+ const resp = await api.getSupportedCommands();
193
+ if (!resp) {
194
+ if (node.hasSecurityClass(core_1.SecurityClass.S0_Legacy) === true) {
195
+ applHost.controllerLog.logNode(node.id, {
196
+ endpoint: this.endpointIndex,
197
+ message: "Querying securely supported commands (S0) timed out",
198
+ level: "warn",
199
+ });
200
+ // TODO: Abort interview?
201
+ }
202
+ else {
203
+ // We didn't know if the node was secure and it didn't respond,
204
+ // assume that it doesn't have the S0 security class
205
+ applHost.controllerLog.logNode(node.id, `The node was not granted the S0 security class. Continuing interview non-securely.`);
206
+ node.setSecurityClass(core_1.SecurityClass.S0_Legacy, false);
207
+ }
208
+ return;
209
+ }
210
+ const logLines = [
211
+ "received secure commands (S0)",
212
+ "supported CCs:",
213
+ ];
214
+ for (const cc of resp.supportedCCs) {
215
+ logLines.push(`· ${(0, core_1.getCCName)(cc)}`);
216
+ }
217
+ logLines.push("controlled CCs:");
218
+ for (const cc of resp.controlledCCs) {
219
+ logLines.push(`· ${(0, core_1.getCCName)(cc)}`);
220
+ }
221
+ applHost.controllerLog.logNode(node.id, {
222
+ message: logLines.join("\n"),
223
+ direction: "inbound",
224
+ });
225
+ // Remember which commands are supported securely
226
+ for (const cc of resp.supportedCCs) {
227
+ endpoint.addCC(cc, {
228
+ isSupported: true,
229
+ secure: true,
230
+ });
231
+ }
232
+ for (const cc of resp.controlledCCs) {
233
+ endpoint.addCC(cc, {
234
+ isControlled: true,
235
+ secure: true,
236
+ });
237
+ }
238
+ // We know for sure that the node is included securely
239
+ if (node.hasSecurityClass(core_1.SecurityClass.S0_Legacy) !== true) {
240
+ node.setSecurityClass(core_1.SecurityClass.S0_Legacy, true);
241
+ applHost.controllerLog.logNode(node.id, `The node was granted the S0 security class`);
242
+ }
243
+ // Remember that the interview is complete
244
+ this.setInterviewComplete(applHost, true);
245
+ }
246
+ /** Tests if a command should be sent secure and thus requires encapsulation */
247
+ static requiresEncapsulation(cc) {
248
+ return (cc.secure &&
249
+ // Already encapsulated (SecurityCCCommandEncapsulationNonceGet is a subclass)
250
+ !(cc instanceof Security2CC_1.Security2CC) &&
251
+ !(cc instanceof SecurityCCCommandEncapsulation) &&
252
+ // Cannot be sent encapsulated
253
+ !(cc instanceof SecurityCCNonceGet) &&
254
+ !(cc instanceof SecurityCCNonceReport) &&
255
+ !(cc instanceof SecurityCCSchemeGet) &&
256
+ !(cc instanceof SecurityCCSchemeReport));
257
+ }
258
+ /** Encapsulates a command that should be sent encrypted */
259
+ static encapsulate(host, cc) {
260
+ // TODO: When to return a SecurityCCCommandEncapsulationNonceGet?
261
+ return new SecurityCCCommandEncapsulation(host, {
262
+ nodeId: cc.nodeId,
263
+ encapsulated: cc,
264
+ });
265
+ }
266
+ };
267
+ SecurityCC = __decorate([
268
+ (0, CommandClass_1.commandClass)(core_1.CommandClasses.Security),
269
+ (0, CommandClass_1.implementedVersion)(1)
270
+ ], SecurityCC);
271
+ exports.SecurityCC = SecurityCC;
272
+ let SecurityCCNonceReport = class SecurityCCNonceReport extends SecurityCC {
273
+ constructor(host, options) {
274
+ super(host, options);
275
+ if ((0, serial_1.gotDeserializationOptions)(options)) {
276
+ core_1.validatePayload.withReason("Invalid nonce length")(this.payload.length === HALF_NONCE_SIZE);
277
+ this.nonce = this.payload;
278
+ }
279
+ else {
280
+ if (options.nonce.length !== HALF_NONCE_SIZE) {
281
+ throw new core_1.ZWaveError(`Nonce must have length ${HALF_NONCE_SIZE}!`, core_1.ZWaveErrorCodes.Argument_Invalid);
282
+ }
283
+ this.nonce = options.nonce;
284
+ }
285
+ }
286
+ serialize() {
287
+ this.payload = this.nonce;
288
+ return super.serialize();
289
+ }
290
+ toLogEntry(applHost) {
291
+ return {
292
+ ...super.toLogEntry(applHost),
293
+ message: { nonce: (0, safe_1.buffer2hex)(this.nonce) },
294
+ };
295
+ }
296
+ };
297
+ SecurityCCNonceReport = __decorate([
298
+ (0, CommandClass_1.CCCommand)(_Types_1.SecurityCommand.NonceReport)
299
+ ], SecurityCCNonceReport);
300
+ exports.SecurityCCNonceReport = SecurityCCNonceReport;
301
+ let SecurityCCNonceGet = class SecurityCCNonceGet extends SecurityCC {
302
+ };
303
+ SecurityCCNonceGet = __decorate([
304
+ (0, CommandClass_1.CCCommand)(_Types_1.SecurityCommand.NonceGet),
305
+ (0, CommandClass_1.expectedCCResponse)(SecurityCCNonceReport)
306
+ ], SecurityCCNonceGet);
307
+ exports.SecurityCCNonceGet = SecurityCCNonceGet;
308
+ function getCCResponseForCommandEncapsulation(sent) {
309
+ if (sent.encapsulated.expectsCCResponse()) {
310
+ return SecurityCCCommandEncapsulation;
311
+ }
312
+ }
313
+ let SecurityCCCommandEncapsulation = class SecurityCCCommandEncapsulation extends SecurityCC {
314
+ constructor(host, options) {
315
+ super(host, options);
316
+ const verb = (0, serial_1.gotDeserializationOptions)(options) ? "decoded" : "sent";
317
+ if (!this.host.ownNodeId) {
318
+ throw new core_1.ZWaveError(`Secure commands (S0) can only be ${verb} when the controller's node id is known!`, core_1.ZWaveErrorCodes.Driver_NotReady);
319
+ }
320
+ else if (!this.host.securityManager) {
321
+ throw new core_1.ZWaveError(`Secure commands (S0) can only be ${verb} when the network key for the applHost is set`, core_1.ZWaveErrorCodes.Driver_NoSecurity);
322
+ }
323
+ if ((0, serial_1.gotDeserializationOptions)(options)) {
324
+ // HALF_NONCE_SIZE bytes iv, 1 byte frame control, at least 1 CC byte, 1 byte nonce id, 8 bytes auth code
325
+ (0, core_1.validatePayload)(this.payload.length >= HALF_NONCE_SIZE + 1 + 1 + 1 + 8);
326
+ const iv = this.payload.slice(0, HALF_NONCE_SIZE);
327
+ const encryptedPayload = this.payload.slice(HALF_NONCE_SIZE, -9);
328
+ const nonceId = this.payload[this.payload.length - 9];
329
+ const authCode = this.payload.slice(-8);
330
+ // Retrieve the used nonce from the nonce store
331
+ const nonce = this.host.securityManager.getNonce(nonceId);
332
+ // Only accept the message if the nonce hasn't expired
333
+ core_1.validatePayload.withReason(`Nonce ${(0, safe_1.num2hex)(nonceId)} expired, cannot decode security encapsulated command.`)(!!nonce);
334
+ // and mark the nonce as used
335
+ this.host.securityManager.deleteNonce(nonceId);
336
+ this.authKey = this.host.securityManager.authKey;
337
+ this.encryptionKey = this.host.securityManager.encryptionKey;
338
+ // Validate the encrypted data
339
+ const authData = getAuthenticationData(iv, nonce, this.ccCommand, this.nodeId, this.host.ownNodeId, encryptedPayload);
340
+ const expectedAuthCode = (0, core_1.computeMAC)(authData, this.authKey);
341
+ // Only accept messages with a correct auth code
342
+ core_1.validatePayload.withReason("Invalid auth code, won't accept security encapsulated command.")(authCode.equals(expectedAuthCode));
343
+ // Decrypt the encapsulated CC
344
+ const frameControlAndDecryptedCC = (0, core_1.decryptAES128OFB)(encryptedPayload, this.encryptionKey, Buffer.concat([iv, nonce]));
345
+ const frameControl = frameControlAndDecryptedCC[0];
346
+ this.sequenceCounter = frameControl & 0b1111;
347
+ this.sequenced = !!(frameControl & 16);
348
+ this.secondFrame = !!(frameControl & 32);
349
+ this.decryptedCCBytes = frameControlAndDecryptedCC.slice(1);
350
+ }
351
+ else {
352
+ this.encapsulated = options.encapsulated;
353
+ options.encapsulated.encapsulatingCC = this;
354
+ if (options.alternativeNetworkKey) {
355
+ this.authKey = (0, core_1.generateAuthKey)(options.alternativeNetworkKey);
356
+ this.encryptionKey = (0, core_1.generateEncryptionKey)(options.alternativeNetworkKey);
357
+ }
358
+ else {
359
+ this.authKey = this.host.securityManager.authKey;
360
+ this.encryptionKey = this.host.securityManager.encryptionKey;
361
+ }
362
+ }
363
+ }
364
+ get nonceId() {
365
+ if (!this.nonce)
366
+ return undefined;
367
+ return this.host.securityManager.getNonceId(this.nonce);
368
+ }
369
+ getPartialCCSessionId() {
370
+ if (this.sequenced) {
371
+ return {
372
+ // Treat Encapsulation and EncapsulationNonceGet as one
373
+ ccCommand: undefined,
374
+ sequence: this.sequenceCounter,
375
+ };
376
+ }
377
+ else {
378
+ return {
379
+ // Treat Encapsulation and EncapsulationNonceGet as one
380
+ ccCommand: undefined,
381
+ };
382
+ }
383
+ }
384
+ expectMoreMessages() {
385
+ return !!this.sequenced && !this.secondFrame;
386
+ }
387
+ mergePartialCCs(applHost, partials) {
388
+ // Concat the CC buffers
389
+ this.decryptedCCBytes = Buffer.concat([...partials, this].map((cc) => cc.decryptedCCBytes));
390
+ // make sure this contains a complete CC command that's worth splitting
391
+ (0, core_1.validatePayload)(this.decryptedCCBytes.length >= 2);
392
+ // and deserialize the CC
393
+ this.encapsulated = CommandClass_1.CommandClass.from(this.host, {
394
+ data: this.decryptedCCBytes,
395
+ fromEncapsulation: true,
396
+ encapCC: this,
397
+ });
398
+ }
399
+ serialize() {
400
+ if (!this.nonce)
401
+ throwNoNonce();
402
+ if (this.nonce.length !== HALF_NONCE_SIZE)
403
+ throwNoNonce("Invalid nonce size");
404
+ const serializedCC = this.encapsulated.serialize();
405
+ const plaintext = Buffer.concat([
406
+ Buffer.from([0]),
407
+ serializedCC,
408
+ ]);
409
+ // Encrypt the payload
410
+ const senderNonce = (0, crypto_1.randomBytes)(HALF_NONCE_SIZE);
411
+ const iv = Buffer.concat([senderNonce, this.nonce]);
412
+ const ciphertext = (0, core_1.encryptAES128OFB)(plaintext, this.encryptionKey, iv);
413
+ // And generate the auth code
414
+ const authData = getAuthenticationData(senderNonce, this.nonce, this.ccCommand, this.host.ownNodeId, this.nodeId, ciphertext);
415
+ const authCode = (0, core_1.computeMAC)(authData, this.authKey);
416
+ this.payload = Buffer.concat([
417
+ senderNonce,
418
+ ciphertext,
419
+ Buffer.from([this.nonceId]),
420
+ authCode,
421
+ ]);
422
+ return super.serialize();
423
+ }
424
+ computeEncapsulationOverhead() {
425
+ // Security CC adds 8 bytes IV, 1 byte frame control, 1 byte nonce ID, 8 bytes MAC
426
+ return super.computeEncapsulationOverhead() + 18;
427
+ }
428
+ toLogEntry(applHost) {
429
+ const message = {};
430
+ if (this.nonceId != undefined) {
431
+ message["nonce id"] = this.nonceId;
432
+ }
433
+ if (this.sequenced != undefined) {
434
+ message.sequenced = this.sequenced;
435
+ if (this.sequenced) {
436
+ if (this.secondFrame != undefined) {
437
+ message["second frame"] = this.secondFrame;
438
+ }
439
+ if (this.sequenceCounter != undefined) {
440
+ message["sequence counter"] = this.sequenceCounter;
441
+ }
442
+ }
443
+ }
444
+ return {
445
+ ...super.toLogEntry(applHost),
446
+ message,
447
+ };
448
+ }
449
+ };
450
+ SecurityCCCommandEncapsulation = __decorate([
451
+ (0, CommandClass_1.CCCommand)(_Types_1.SecurityCommand.CommandEncapsulation),
452
+ (0, CommandClass_1.expectedCCResponse)(getCCResponseForCommandEncapsulation, () => "checkEncapsulated")
453
+ ], SecurityCCCommandEncapsulation);
454
+ exports.SecurityCCCommandEncapsulation = SecurityCCCommandEncapsulation;
455
+ // This is the same message, but with another CC command
456
+ let SecurityCCCommandEncapsulationNonceGet = class SecurityCCCommandEncapsulationNonceGet extends SecurityCCCommandEncapsulation {
457
+ };
458
+ SecurityCCCommandEncapsulationNonceGet = __decorate([
459
+ (0, CommandClass_1.CCCommand)(_Types_1.SecurityCommand.CommandEncapsulationNonceGet)
460
+ ], SecurityCCCommandEncapsulationNonceGet);
461
+ exports.SecurityCCCommandEncapsulationNonceGet = SecurityCCCommandEncapsulationNonceGet;
462
+ let SecurityCCSchemeReport = class SecurityCCSchemeReport extends SecurityCC {
463
+ constructor(host, options) {
464
+ super(host, options);
465
+ (0, core_1.validatePayload)(this.payload.length >= 1,
466
+ // Since it is unlikely that any more schemes will be added to S0, we hardcode the default scheme here (bit 0 = 0)
467
+ (this.payload[0] & 0b1) === 0);
468
+ }
469
+ };
470
+ SecurityCCSchemeReport = __decorate([
471
+ (0, CommandClass_1.CCCommand)(_Types_1.SecurityCommand.SchemeReport)
472
+ ], SecurityCCSchemeReport);
473
+ exports.SecurityCCSchemeReport = SecurityCCSchemeReport;
474
+ let SecurityCCSchemeGet = class SecurityCCSchemeGet extends SecurityCC {
475
+ constructor(host, options) {
476
+ super(host, options);
477
+ // Don't care, we won't get sent this and we have no options
478
+ }
479
+ serialize() {
480
+ // Since it is unlikely that any more schemes will be added to S0, we hardcode the default scheme here (bit 0 = 0)
481
+ this.payload = Buffer.from([0]);
482
+ return super.serialize();
483
+ }
484
+ toLogEntry(applHost) {
485
+ return {
486
+ ...super.toLogEntry(applHost),
487
+ // Hide the default payload line
488
+ message: undefined,
489
+ };
490
+ }
491
+ };
492
+ SecurityCCSchemeGet = __decorate([
493
+ (0, CommandClass_1.CCCommand)(_Types_1.SecurityCommand.SchemeGet),
494
+ (0, CommandClass_1.expectedCCResponse)(SecurityCCSchemeReport)
495
+ ], SecurityCCSchemeGet);
496
+ exports.SecurityCCSchemeGet = SecurityCCSchemeGet;
497
+ let SecurityCCSchemeInherit = class SecurityCCSchemeInherit extends SecurityCC {
498
+ constructor(host, options) {
499
+ super(host, options);
500
+ // Don't care, we won't get sent this and we have no options
501
+ }
502
+ serialize() {
503
+ // Since it is unlikely that any more schemes will be added to S0, we hardcode the default scheme here (bit 0 = 0)
504
+ this.payload = Buffer.from([0]);
505
+ return super.serialize();
506
+ }
507
+ toLogEntry(applHost) {
508
+ return {
509
+ ...super.toLogEntry(applHost),
510
+ // Hide the default payload line
511
+ message: undefined,
512
+ };
513
+ }
514
+ };
515
+ SecurityCCSchemeInherit = __decorate([
516
+ (0, CommandClass_1.CCCommand)(_Types_1.SecurityCommand.SchemeInherit),
517
+ (0, CommandClass_1.expectedCCResponse)(SecurityCCSchemeReport)
518
+ ], SecurityCCSchemeInherit);
519
+ exports.SecurityCCSchemeInherit = SecurityCCSchemeInherit;
520
+ let SecurityCCNetworkKeyVerify = class SecurityCCNetworkKeyVerify extends SecurityCC {
521
+ };
522
+ SecurityCCNetworkKeyVerify = __decorate([
523
+ (0, CommandClass_1.CCCommand)(_Types_1.SecurityCommand.NetworkKeyVerify)
524
+ ], SecurityCCNetworkKeyVerify);
525
+ exports.SecurityCCNetworkKeyVerify = SecurityCCNetworkKeyVerify;
526
+ let SecurityCCNetworkKeySet = class SecurityCCNetworkKeySet extends SecurityCC {
527
+ constructor(host, options) {
528
+ super(host, options);
529
+ if ((0, serial_1.gotDeserializationOptions)(options)) {
530
+ // TODO: Deserialize payload
531
+ throw new core_1.ZWaveError(`${this.constructor.name}: deserialization not implemented`, core_1.ZWaveErrorCodes.Deserialization_NotImplemented);
532
+ }
533
+ else {
534
+ if (options.networkKey.length !== 16) {
535
+ throw new core_1.ZWaveError(`The network key must have length 16!`, core_1.ZWaveErrorCodes.Argument_Invalid);
536
+ }
537
+ this.networkKey = options.networkKey;
538
+ }
539
+ }
540
+ serialize() {
541
+ this.payload = this.networkKey;
542
+ return super.serialize();
543
+ }
544
+ };
545
+ SecurityCCNetworkKeySet = __decorate([
546
+ (0, CommandClass_1.CCCommand)(_Types_1.SecurityCommand.NetworkKeySet),
547
+ (0, CommandClass_1.expectedCCResponse)(SecurityCCNetworkKeyVerify)
548
+ ], SecurityCCNetworkKeySet);
549
+ exports.SecurityCCNetworkKeySet = SecurityCCNetworkKeySet;
550
+ let SecurityCCCommandsSupportedReport = class SecurityCCCommandsSupportedReport extends SecurityCC {
551
+ constructor(host, options) {
552
+ super(host, options);
553
+ (0, core_1.validatePayload)(this.payload.length >= 1);
554
+ this.reportsToFollow = this.payload[0];
555
+ const list = (0, core_1.parseCCList)(this.payload.slice(1));
556
+ this._supportedCCs = list.supportedCCs;
557
+ this._controlledCCs = list.controlledCCs;
558
+ }
559
+ getPartialCCSessionId() {
560
+ // Nothing special we can distinguish sessions with
561
+ return {};
562
+ }
563
+ expectMoreMessages() {
564
+ return this.reportsToFollow > 0;
565
+ }
566
+ get supportedCCs() {
567
+ return this._supportedCCs;
568
+ }
569
+ get controlledCCs() {
570
+ return this._controlledCCs;
571
+ }
572
+ mergePartialCCs(applHost, partials) {
573
+ // Concat the lists of CCs
574
+ this._supportedCCs = [...partials, this]
575
+ .map((report) => report._supportedCCs)
576
+ .reduce((prev, cur) => prev.concat(...cur), []);
577
+ this._controlledCCs = [...partials, this]
578
+ .map((report) => report._controlledCCs)
579
+ .reduce((prev, cur) => prev.concat(...cur), []);
580
+ }
581
+ toLogEntry(applHost) {
582
+ return {
583
+ ...super.toLogEntry(applHost),
584
+ message: {
585
+ reportsToFollow: this.reportsToFollow,
586
+ supportedCCs: this._supportedCCs
587
+ .map((cc) => (0, core_1.getCCName)(cc))
588
+ .map((cc) => `\n· ${cc}`)
589
+ .join(""),
590
+ controlledCCs: this._controlledCCs
591
+ .map((cc) => (0, core_1.getCCName)(cc))
592
+ .map((cc) => `\n· ${cc}`)
593
+ .join(""),
594
+ },
595
+ };
596
+ }
597
+ };
598
+ SecurityCCCommandsSupportedReport = __decorate([
599
+ (0, CommandClass_1.CCCommand)(_Types_1.SecurityCommand.CommandsSupportedReport)
600
+ ], SecurityCCCommandsSupportedReport);
601
+ exports.SecurityCCCommandsSupportedReport = SecurityCCCommandsSupportedReport;
602
+ let SecurityCCCommandsSupportedGet = class SecurityCCCommandsSupportedGet extends SecurityCC {
603
+ };
604
+ SecurityCCCommandsSupportedGet = __decorate([
605
+ (0, CommandClass_1.CCCommand)(_Types_1.SecurityCommand.CommandsSupportedGet),
606
+ (0, CommandClass_1.expectedCCResponse)(SecurityCCCommandsSupportedReport)
607
+ ], SecurityCCCommandsSupportedGet);
608
+ exports.SecurityCCCommandsSupportedGet = SecurityCCCommandsSupportedGet;
609
+ //# sourceMappingURL=SecurityCC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SecurityCC.js","sourceRoot":"","sources":["../../src/cc/SecurityCC.ts"],"names":[],"mappings":"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"}