isy-nodejs 1.0.2-alpha.3 → 1.0.2-alpha.4

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 (417) hide show
  1. package/dist/esm/CodeGeneration/NodeClassFactory.js +76 -33
  2. package/dist/esm/CodeGeneration/NodeClassFactory.js.map +1 -1
  3. package/dist/esm/CodeGeneration/NodeFactory.js +245 -0
  4. package/dist/esm/CodeGeneration/NodeFactory.js.map +1 -0
  5. package/dist/esm/Converters.js +15 -1
  6. package/dist/esm/Converters.js.map +1 -1
  7. package/dist/esm/Definitions/Global/Drivers.js.map +1 -1
  8. package/dist/esm/Definitions/Global/Events.js.map +1 -1
  9. package/dist/esm/Devices/ISYDevice.js +0 -33
  10. package/dist/esm/Devices/ISYDevice.js.map +1 -1
  11. package/dist/esm/Devices/ISYDeviceNode.js +2 -2
  12. package/dist/esm/Devices/ISYDeviceNode.js.map +1 -1
  13. package/dist/esm/Devices/Insteon/Generated/AlertModuleArmed.js +49 -0
  14. package/dist/esm/Devices/Insteon/Generated/AlertModuleArmed.js.map +1 -0
  15. package/dist/esm/Devices/Insteon/Generated/AlertModuleSiren.js +54 -0
  16. package/dist/esm/Devices/Insteon/Generated/AlertModuleSiren.js.map +1 -0
  17. package/dist/esm/Devices/Insteon/Generated/BallastRelayLampSwitch.js +54 -0
  18. package/dist/esm/Devices/Insteon/Generated/BallastRelayLampSwitch.js.map +1 -0
  19. package/dist/esm/Devices/Insteon/Generated/BinaryAlarm.js +46 -0
  20. package/dist/esm/Devices/Insteon/Generated/BinaryAlarm.js.map +1 -0
  21. package/dist/esm/Devices/Insteon/Generated/BinaryControl.js +46 -0
  22. package/dist/esm/Devices/Insteon/Generated/BinaryControl.js.map +1 -0
  23. package/dist/esm/Devices/Insteon/Generated/DimmerLamp.js +75 -0
  24. package/dist/esm/Devices/Insteon/Generated/DimmerLamp.js.map +1 -0
  25. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitch.js +78 -0
  26. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitch.js.map +1 -0
  27. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitchLed.js +80 -0
  28. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitchLed.js.map +1 -0
  29. package/dist/esm/Devices/Insteon/Generated/DimmerMotorSwitch.js +74 -0
  30. package/dist/esm/Devices/Insteon/Generated/DimmerMotorSwitch.js.map +1 -0
  31. package/dist/esm/Devices/Insteon/Generated/DimmerSwitch.js +40 -0
  32. package/dist/esm/Devices/Insteon/Generated/DimmerSwitch.js.map +1 -0
  33. package/dist/esm/Devices/Insteon/Generated/DoorLock.js +45 -0
  34. package/dist/esm/Devices/Insteon/Generated/DoorLock.js.map +1 -0
  35. package/dist/esm/Devices/Insteon/Generated/Ezio2x4Input.js +42 -0
  36. package/dist/esm/Devices/Insteon/Generated/Ezio2x4Input.js.map +1 -0
  37. package/dist/esm/Devices/Insteon/Generated/Ezio2x4Output.js +47 -0
  38. package/dist/esm/Devices/Insteon/Generated/Ezio2x4Output.js.map +1 -0
  39. package/dist/esm/Devices/Insteon/Generated/EzrainInput.js +42 -0
  40. package/dist/esm/Devices/Insteon/Generated/EzrainInput.js.map +1 -0
  41. package/dist/esm/Devices/Insteon/Generated/EzrainOutput.js +49 -0
  42. package/dist/esm/Devices/Insteon/Generated/EzrainOutput.js.map +1 -0
  43. package/dist/esm/Devices/Insteon/Generated/FanLincMotor.js +53 -0
  44. package/dist/esm/Devices/Insteon/Generated/FanLincMotor.js.map +1 -0
  45. package/dist/esm/Devices/Insteon/Generated/I3KeypadFlags.js +93 -0
  46. package/dist/esm/Devices/Insteon/Generated/I3KeypadFlags.js.map +1 -0
  47. package/dist/esm/Devices/Insteon/Generated/I3PaddleFlags.js +81 -0
  48. package/dist/esm/Devices/Insteon/Generated/I3PaddleFlags.js.map +1 -0
  49. package/dist/esm/Devices/Insteon/Generated/ImeterSolo.js +49 -0
  50. package/dist/esm/Devices/Insteon/Generated/ImeterSolo.js.map +1 -0
  51. package/dist/esm/Devices/Insteon/Generated/IrLincTx.js +39 -0
  52. package/dist/esm/Devices/Insteon/Generated/IrLincTx.js.map +1 -0
  53. package/dist/esm/Devices/Insteon/Generated/KeypadButton.js +46 -0
  54. package/dist/esm/Devices/Insteon/Generated/KeypadButton.js.map +1 -0
  55. package/dist/esm/Devices/Insteon/Generated/KeypadDimmer.js +78 -0
  56. package/dist/esm/Devices/Insteon/Generated/KeypadDimmer.js.map +1 -0
  57. package/dist/esm/Devices/Insteon/Generated/KeypadRelay.js +56 -0
  58. package/dist/esm/Devices/Insteon/Generated/KeypadRelay.js.map +1 -0
  59. package/dist/esm/Devices/Insteon/Generated/OnOffControl.js +39 -0
  60. package/dist/esm/Devices/Insteon/Generated/OnOffControl.js.map +1 -0
  61. package/dist/esm/Devices/Insteon/Generated/Pir2844.js +64 -0
  62. package/dist/esm/Devices/Insteon/Generated/Pir2844.js.map +1 -0
  63. package/dist/esm/Devices/Insteon/Generated/Pir2844OnOff.js +50 -0
  64. package/dist/esm/Devices/Insteon/Generated/Pir2844OnOff.js.map +1 -0
  65. package/dist/esm/Devices/Insteon/Generated/Pir2844c.js +64 -0
  66. package/dist/esm/Devices/Insteon/Generated/Pir2844c.js.map +1 -0
  67. package/dist/esm/Devices/Insteon/Generated/RelayLamp.js +54 -0
  68. package/dist/esm/Devices/Insteon/Generated/RelayLamp.js.map +1 -0
  69. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitch.js +56 -0
  70. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitch.js.map +1 -0
  71. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitchLed.js +58 -0
  72. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitchLed.js.map +1 -0
  73. package/dist/esm/Devices/Insteon/Generated/RelaySwitch.js +42 -0
  74. package/dist/esm/Devices/Insteon/Generated/RelaySwitch.js.map +1 -0
  75. package/dist/esm/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.js +44 -0
  76. package/dist/esm/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.js.map +1 -0
  77. package/dist/esm/Devices/Insteon/Generated/RemoteLinc2.js +42 -0
  78. package/dist/esm/Devices/Insteon/Generated/RemoteLinc2.js.map +1 -0
  79. package/dist/esm/Devices/Insteon/Generated/Siren.js +66 -0
  80. package/dist/esm/Devices/Insteon/Generated/Siren.js.map +1 -0
  81. package/dist/esm/Devices/Insteon/Generated/SirenAlert.js +35 -0
  82. package/dist/esm/Devices/Insteon/Generated/SirenAlert.js.map +1 -0
  83. package/dist/esm/Devices/Insteon/Generated/TempLinc.js +83 -0
  84. package/dist/esm/Devices/Insteon/Generated/TempLinc.js.map +1 -0
  85. package/dist/esm/Devices/Insteon/Generated/Thermostat.js +83 -0
  86. package/dist/esm/Devices/Insteon/Generated/Thermostat.js.map +1 -0
  87. package/dist/esm/Devices/Insteon/Generated/X10.js +49 -0
  88. package/dist/esm/Devices/Insteon/Generated/X10.js.map +1 -0
  89. package/dist/esm/Devices/Insteon/Generated/index.js +39 -0
  90. package/dist/esm/Devices/Insteon/Generated/index.js.map +1 -0
  91. package/dist/esm/Devices/Insteon/InsteonBaseDevice.js +3 -4
  92. package/dist/esm/Devices/Insteon/InsteonBaseDevice.js.map +1 -1
  93. package/dist/esm/Devices/Insteon/InsteonFanDevice.js +2 -2
  94. package/dist/esm/Devices/Insteon/InsteonFanDevice.js.map +1 -1
  95. package/dist/esm/Devices/Insteon/InsteonRelayDevice.js.map +1 -1
  96. package/dist/esm/Devices/Insteon/KeypadButton.js +11 -11
  97. package/dist/esm/Devices/Insteon/KeypadButton.js.map +1 -1
  98. package/dist/esm/Devices/Insteon/index.js +16 -29
  99. package/dist/esm/Devices/Insteon/index.js.map +1 -1
  100. package/dist/esm/Devices/Lutron/Generated/LoadShed.js +45 -0
  101. package/dist/esm/Devices/Lutron/Generated/LoadShed.js.map +1 -0
  102. package/dist/esm/Devices/NodeFactory.js +45 -8
  103. package/dist/esm/Devices/NodeFactory.js.map +1 -1
  104. package/dist/esm/Devices/Scene/index.js +2 -2
  105. package/dist/esm/Devices/Scene/index.js.map +1 -1
  106. package/dist/esm/Devices/UDI/Generated/Channel.js +42 -0
  107. package/dist/esm/Devices/UDI/Generated/Channel.js.map +1 -0
  108. package/dist/esm/Devices/UDI/Generated/Em3MainChannel.js +54 -0
  109. package/dist/esm/Devices/UDI/Generated/Em3MainChannel.js.map +1 -0
  110. package/dist/esm/Devices/UDI/Generated/Main.js +45 -0
  111. package/dist/esm/Devices/UDI/Generated/Main.js.map +1 -0
  112. package/dist/esm/Devices/UDI/Generated/PulseCounter.js +46 -0
  113. package/dist/esm/Devices/UDI/Generated/PulseCounter.js.map +1 -0
  114. package/dist/esm/Devices/UDI/Generated/Relay.js +45 -0
  115. package/dist/esm/Devices/UDI/Generated/Relay.js.map +1 -0
  116. package/dist/esm/Devices/UDI/Generated/TemperatureSensor.js +38 -0
  117. package/dist/esm/Devices/UDI/Generated/TemperatureSensor.js.map +1 -0
  118. package/dist/esm/Devices/ZWave/Generated/ColorSwitch.js +57 -0
  119. package/dist/esm/Devices/ZWave/Generated/ColorSwitch.js.map +1 -0
  120. package/dist/esm/Devices/ZWave/Generated/DimmerSwitch.js +65 -0
  121. package/dist/esm/Devices/ZWave/Generated/DimmerSwitch.js.map +1 -0
  122. package/dist/esm/Devices/ZWave/Generated/index.js +3 -0
  123. package/dist/esm/Devices/ZWave/Generated/index.js.map +1 -0
  124. package/dist/esm/Devices/ZWave/index.js +1 -0
  125. package/dist/esm/Devices/ZWave/index.js.map +1 -1
  126. package/dist/esm/Devices/index.js +9 -3
  127. package/dist/esm/Devices/index.js.map +1 -1
  128. package/dist/esm/ISY.js +13 -8
  129. package/dist/esm/ISY.js.map +1 -1
  130. package/dist/esm/ISYDevice.js +7 -1
  131. package/dist/esm/ISYDevice.js.map +1 -1
  132. package/dist/esm/ISYNode.js +13 -4
  133. package/dist/esm/ISYNode.js.map +1 -1
  134. package/dist/esm/ISYScene.js +13 -12
  135. package/dist/esm/ISYScene.js.map +1 -1
  136. package/dist/esm/Matter/Behaviors/BehaviorRegistry.js +13 -0
  137. package/dist/esm/Matter/Behaviors/BehaviorRegistry.js.map +1 -0
  138. package/dist/esm/Matter/Behaviors/Insteon/ISYOnOffBehavior.js +3 -0
  139. package/dist/esm/Matter/Behaviors/Insteon/ISYOnOffBehavior.js.map +1 -1
  140. package/dist/esm/Matter/Bridge/Server.js +65 -56
  141. package/dist/esm/Matter/Bridge/Server.js.map +1 -1
  142. package/dist/esm/Matter/Mappings/Insteon.js +28 -10
  143. package/dist/esm/Matter/Mappings/Insteon.js.map +1 -1
  144. package/dist/esm/Model/ClassDefinition.js +22 -3
  145. package/dist/esm/Model/ClassDefinition.js.map +1 -1
  146. package/dist/esm/Model/ClusterMap.js +45 -19
  147. package/dist/esm/Model/ClusterMap.js.map +1 -1
  148. package/dist/esm/Model/NodeInfo.js +1 -1
  149. package/dist/esm/Model/NodeInfo.js.map +1 -1
  150. package/dist/esm/Utils.js.map +1 -1
  151. package/dist/esm/types/CodeGeneration/NodeClassFactory.d.ts +6 -3
  152. package/dist/esm/types/CodeGeneration/NodeClassFactory.d.ts.map +1 -1
  153. package/dist/esm/types/CodeGeneration/NodeFactory.d.ts +75 -0
  154. package/dist/esm/types/CodeGeneration/NodeFactory.d.ts.map +1 -0
  155. package/dist/esm/types/Converters.d.ts +9 -3
  156. package/dist/esm/types/Converters.d.ts.map +1 -1
  157. package/dist/esm/types/Definitions/Global/Drivers.d.ts.map +1 -1
  158. package/dist/esm/types/Definitions/Global/Events.d.ts +2 -2
  159. package/dist/esm/types/Definitions/Global/Events.d.ts.map +1 -1
  160. package/dist/esm/types/Devices/DeviceMap.d.ts +1 -1
  161. package/dist/esm/types/Devices/DeviceMap.d.ts.map +1 -1
  162. package/dist/esm/types/Devices/EndpointFor.d.ts +7 -5
  163. package/dist/esm/types/Devices/EndpointFor.d.ts.map +1 -1
  164. package/dist/esm/types/Devices/ISYDevice.d.ts.map +1 -1
  165. package/dist/esm/types/Devices/ISYDeviceNode.d.ts +5 -13
  166. package/dist/esm/types/Devices/ISYDeviceNode.d.ts.map +1 -1
  167. package/dist/esm/types/Devices/Insteon/Generated/AlertModuleArmed.d.ts +76 -0
  168. package/dist/esm/types/Devices/Insteon/Generated/AlertModuleArmed.d.ts.map +1 -0
  169. package/dist/esm/types/Devices/Insteon/Generated/AlertModuleSiren.d.ts +88 -0
  170. package/dist/esm/types/Devices/Insteon/Generated/AlertModuleSiren.d.ts.map +1 -0
  171. package/dist/esm/types/Devices/Insteon/Generated/BallastRelayLampSwitch.d.ts +88 -0
  172. package/dist/esm/types/Devices/Insteon/Generated/BallastRelayLampSwitch.d.ts.map +1 -0
  173. package/dist/esm/types/Devices/Insteon/Generated/BinaryAlarm.d.ts +64 -0
  174. package/dist/esm/types/Devices/Insteon/Generated/BinaryAlarm.d.ts.map +1 -0
  175. package/dist/esm/types/Devices/Insteon/Generated/BinaryControl.d.ts +64 -0
  176. package/dist/esm/types/Devices/Insteon/Generated/BinaryControl.d.ts.map +1 -0
  177. package/dist/esm/types/Devices/Insteon/Generated/DimmerLamp.d.ts +144 -0
  178. package/dist/esm/types/Devices/Insteon/Generated/DimmerLamp.d.ts.map +1 -0
  179. package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitch.d.ts +150 -0
  180. package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitch.d.ts.map +1 -0
  181. package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitchLed.d.ts +156 -0
  182. package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitchLed.d.ts.map +1 -0
  183. package/dist/esm/types/Devices/Insteon/Generated/DimmerMotorSwitch.d.ts +138 -0
  184. package/dist/esm/types/Devices/Insteon/Generated/DimmerMotorSwitch.d.ts.map +1 -0
  185. package/dist/esm/types/Devices/Insteon/Generated/DimmerSwitch.d.ts +51 -0
  186. package/dist/esm/types/Devices/Insteon/Generated/DimmerSwitch.d.ts.map +1 -0
  187. package/dist/esm/types/Devices/Insteon/Generated/DoorLock.d.ts +64 -0
  188. package/dist/esm/types/Devices/Insteon/Generated/DoorLock.d.ts.map +1 -0
  189. package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Input.d.ts +52 -0
  190. package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Input.d.ts.map +1 -0
  191. package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Output.d.ts +70 -0
  192. package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Output.d.ts.map +1 -0
  193. package/dist/esm/types/Devices/Insteon/Generated/EzrainInput.d.ts +52 -0
  194. package/dist/esm/types/Devices/Insteon/Generated/EzrainInput.d.ts.map +1 -0
  195. package/dist/esm/types/Devices/Insteon/Generated/EzrainOutput.d.ts +76 -0
  196. package/dist/esm/types/Devices/Insteon/Generated/EzrainOutput.d.ts.map +1 -0
  197. package/dist/esm/types/Devices/Insteon/Generated/FanLincMotor.d.ts +88 -0
  198. package/dist/esm/types/Devices/Insteon/Generated/FanLincMotor.d.ts.map +1 -0
  199. package/dist/esm/types/Devices/Insteon/Generated/I3KeypadFlags.d.ts +168 -0
  200. package/dist/esm/types/Devices/Insteon/Generated/I3KeypadFlags.d.ts.map +1 -0
  201. package/dist/esm/types/Devices/Insteon/Generated/I3PaddleFlags.d.ts +142 -0
  202. package/dist/esm/types/Devices/Insteon/Generated/I3PaddleFlags.d.ts.map +1 -0
  203. package/dist/esm/types/Devices/Insteon/Generated/ImeterSolo.d.ts +71 -0
  204. package/dist/esm/types/Devices/Insteon/Generated/ImeterSolo.d.ts.map +1 -0
  205. package/dist/esm/types/Devices/Insteon/Generated/IrLincTx.d.ts +51 -0
  206. package/dist/esm/types/Devices/Insteon/Generated/IrLincTx.d.ts.map +1 -0
  207. package/dist/esm/types/Devices/Insteon/Generated/KeypadButton.d.ts +64 -0
  208. package/dist/esm/types/Devices/Insteon/Generated/KeypadButton.d.ts.map +1 -0
  209. package/dist/esm/types/Devices/Insteon/Generated/KeypadDimmer.d.ts +150 -0
  210. package/dist/esm/types/Devices/Insteon/Generated/KeypadDimmer.d.ts.map +1 -0
  211. package/dist/esm/types/Devices/Insteon/Generated/KeypadRelay.d.ts +94 -0
  212. package/dist/esm/types/Devices/Insteon/Generated/KeypadRelay.d.ts.map +1 -0
  213. package/dist/esm/types/Devices/Insteon/Generated/OnOffControl.d.ts +44 -0
  214. package/dist/esm/types/Devices/Insteon/Generated/OnOffControl.d.ts.map +1 -0
  215. package/dist/esm/types/Devices/Insteon/Generated/Pir2844.d.ts +98 -0
  216. package/dist/esm/types/Devices/Insteon/Generated/Pir2844.d.ts.map +1 -0
  217. package/dist/esm/types/Devices/Insteon/Generated/Pir2844OnOff.d.ts +76 -0
  218. package/dist/esm/types/Devices/Insteon/Generated/Pir2844OnOff.d.ts.map +1 -0
  219. package/dist/esm/types/Devices/Insteon/Generated/Pir2844c.d.ts +98 -0
  220. package/dist/esm/types/Devices/Insteon/Generated/Pir2844c.d.ts.map +1 -0
  221. package/dist/esm/types/Devices/Insteon/Generated/RelayLamp.d.ts +88 -0
  222. package/dist/esm/types/Devices/Insteon/Generated/RelayLamp.d.ts.map +1 -0
  223. package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitch.d.ts +94 -0
  224. package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitch.d.ts.map +1 -0
  225. package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitchLed.d.ts +100 -0
  226. package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitchLed.d.ts.map +1 -0
  227. package/dist/esm/types/Devices/Insteon/Generated/RelaySwitch.d.ts +57 -0
  228. package/dist/esm/types/Devices/Insteon/Generated/RelaySwitch.d.ts.map +1 -0
  229. package/dist/esm/types/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.d.ts +63 -0
  230. package/dist/esm/types/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.d.ts.map +1 -0
  231. package/dist/esm/types/Devices/Insteon/Generated/RemoteLinc2.d.ts +52 -0
  232. package/dist/esm/types/Devices/Insteon/Generated/RemoteLinc2.d.ts.map +1 -0
  233. package/dist/esm/types/Devices/Insteon/Generated/Siren.d.ts +109 -0
  234. package/dist/esm/types/Devices/Insteon/Generated/Siren.d.ts.map +1 -0
  235. package/dist/esm/types/Devices/Insteon/Generated/SirenAlert.d.ts +37 -0
  236. package/dist/esm/types/Devices/Insteon/Generated/SirenAlert.d.ts.map +1 -0
  237. package/dist/esm/types/Devices/Insteon/Generated/TempLinc.d.ts +148 -0
  238. package/dist/esm/types/Devices/Insteon/Generated/TempLinc.d.ts.map +1 -0
  239. package/dist/esm/types/Devices/Insteon/Generated/Thermostat.d.ts +148 -0
  240. package/dist/esm/types/Devices/Insteon/Generated/Thermostat.d.ts.map +1 -0
  241. package/dist/esm/types/Devices/Insteon/Generated/X10.d.ts +76 -0
  242. package/dist/esm/types/Devices/Insteon/Generated/X10.d.ts.map +1 -0
  243. package/dist/esm/types/Devices/Insteon/Generated/index.d.ts +39 -0
  244. package/dist/esm/types/Devices/Insteon/Generated/index.d.ts.map +1 -0
  245. package/dist/esm/types/Devices/Insteon/InsteonBaseDevice.d.ts +4 -10
  246. package/dist/esm/types/Devices/Insteon/InsteonBaseDevice.d.ts.map +1 -1
  247. package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts +22 -28
  248. package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts.map +1 -1
  249. package/dist/esm/types/Devices/Insteon/InsteonFanDevice.d.ts +3 -3
  250. package/dist/esm/types/Devices/Insteon/InsteonFanDevice.d.ts.map +1 -1
  251. package/dist/esm/types/Devices/Insteon/InsteonLeakSensorDevice.d.ts +1 -1
  252. package/dist/esm/types/Devices/Insteon/InsteonLeakSensorDevice.d.ts.map +1 -1
  253. package/dist/esm/types/Devices/Insteon/InsteonRelayDevice.d.ts.map +1 -1
  254. package/dist/esm/types/Devices/Insteon/KeypadButton.d.ts +19 -19
  255. package/dist/esm/types/Devices/Insteon/KeypadButton.d.ts.map +1 -1
  256. package/dist/esm/types/Devices/Insteon/index.d.ts +6 -42
  257. package/dist/esm/types/Devices/Insteon/index.d.ts.map +1 -1
  258. package/dist/esm/types/Devices/Lutron/Generated/LoadShed.d.ts +64 -0
  259. package/dist/esm/types/Devices/Lutron/Generated/LoadShed.d.ts.map +1 -0
  260. package/dist/esm/types/Devices/NodeFactory.d.ts +18 -7
  261. package/dist/esm/types/Devices/NodeFactory.d.ts.map +1 -1
  262. package/dist/esm/types/Devices/Scene/index.d.ts +2 -1
  263. package/dist/esm/types/Devices/Scene/index.d.ts.map +1 -1
  264. package/dist/esm/types/Devices/UDI/Generated/Channel.d.ts +51 -0
  265. package/dist/esm/types/Devices/UDI/Generated/Channel.d.ts.map +1 -0
  266. package/dist/esm/types/Devices/UDI/Generated/Em3MainChannel.d.ts +72 -0
  267. package/dist/esm/types/Devices/UDI/Generated/Em3MainChannel.d.ts.map +1 -0
  268. package/dist/esm/types/Devices/UDI/Generated/Main.d.ts +59 -0
  269. package/dist/esm/types/Devices/UDI/Generated/Main.d.ts.map +1 -0
  270. package/dist/esm/types/Devices/UDI/Generated/PulseCounter.d.ts +58 -0
  271. package/dist/esm/types/Devices/UDI/Generated/PulseCounter.d.ts.map +1 -0
  272. package/dist/esm/types/Devices/UDI/Generated/Relay.d.ts +64 -0
  273. package/dist/esm/types/Devices/UDI/Generated/Relay.d.ts.map +1 -0
  274. package/dist/esm/types/Devices/UDI/Generated/TemperatureSensor.d.ts +44 -0
  275. package/dist/esm/types/Devices/UDI/Generated/TemperatureSensor.d.ts.map +1 -0
  276. package/dist/esm/types/Devices/ZWave/Generated/ColorSwitch.d.ts +90 -0
  277. package/dist/esm/types/Devices/ZWave/Generated/ColorSwitch.d.ts.map +1 -0
  278. package/dist/esm/types/Devices/ZWave/Generated/DimmerSwitch.d.ts +124 -0
  279. package/dist/esm/types/Devices/ZWave/Generated/DimmerSwitch.d.ts.map +1 -0
  280. package/dist/esm/types/Devices/ZWave/Generated/index.d.ts +3 -0
  281. package/dist/esm/types/Devices/ZWave/Generated/index.d.ts.map +1 -0
  282. package/dist/esm/types/Devices/ZWave/index.d.ts.map +1 -1
  283. package/dist/esm/types/Devices/index.d.ts +7 -21
  284. package/dist/esm/types/Devices/index.d.ts.map +1 -1
  285. package/dist/esm/types/ISY.d.ts.map +1 -1
  286. package/dist/esm/types/ISYDevice.d.ts +19 -28
  287. package/dist/esm/types/ISYDevice.d.ts.map +1 -1
  288. package/dist/esm/types/ISYNode.d.ts +25 -8
  289. package/dist/esm/types/ISYNode.d.ts.map +1 -1
  290. package/dist/esm/types/ISYScene.d.ts +5 -6
  291. package/dist/esm/types/ISYScene.d.ts.map +1 -1
  292. package/dist/esm/types/Matter/Behaviors/BehaviorRegistry.d.ts +11 -0
  293. package/dist/esm/types/Matter/Behaviors/BehaviorRegistry.d.ts.map +1 -0
  294. package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts +1 -4
  295. package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts.map +1 -1
  296. package/dist/esm/types/Matter/Behaviors/Insteon/ISYOnOffBehavior.d.ts +5 -4
  297. package/dist/esm/types/Matter/Behaviors/Insteon/ISYOnOffBehavior.d.ts.map +1 -1
  298. package/dist/esm/types/Matter/Bridge/Server.d.ts +1 -1
  299. package/dist/esm/types/Matter/Bridge/Server.d.ts.map +1 -1
  300. package/dist/esm/types/Model/ClassDefinition.d.ts +6 -2
  301. package/dist/esm/types/Model/ClassDefinition.d.ts.map +1 -1
  302. package/dist/esm/types/Model/ClusterMap.d.ts +12 -21
  303. package/dist/esm/types/Model/ClusterMap.d.ts.map +1 -1
  304. package/dist/esm/types/Model/EnumDefinition.d.ts +1 -1
  305. package/dist/esm/types/Utils.d.ts +18 -0
  306. package/dist/esm/types/Utils.d.ts.map +1 -1
  307. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  308. package/package.json +2 -2
  309. package/src/CodeGeneration/NodeClassFactory.ts +144 -39
  310. package/src/CodeGeneration/NodeFactory.ts +341 -0
  311. package/src/Converters.ts +23 -3
  312. package/src/Definitions/Global/Drivers.ts +1 -0
  313. package/src/Definitions/Global/Events.ts +3 -3
  314. package/src/Devices/Brultech/Generated/Channel.ts +8 -6
  315. package/src/Devices/Brultech/Generated/Main.ts +9 -9
  316. package/src/Devices/DeviceMap.ts +1 -1
  317. package/src/Devices/ISYDevice.ts +8 -57
  318. package/src/Devices/ISYDeviceNode.ts +143 -166
  319. package/src/Devices/Insteon/Generated/AlertModuleArmed.ts +13 -21
  320. package/src/Devices/Insteon/Generated/AlertModuleSiren.ts +18 -29
  321. package/src/Devices/Insteon/Generated/BallastRelayLampSwitch.ts +18 -29
  322. package/src/Devices/Insteon/Generated/BinaryAlarm.ts +14 -17
  323. package/src/Devices/Insteon/Generated/BinaryControl.ts +14 -17
  324. package/src/Devices/Insteon/Generated/DimmerLamp.ts +25 -51
  325. package/src/Devices/Insteon/Generated/DimmerLampSwitch.ts +36 -64
  326. package/src/Devices/Insteon/Generated/DimmerLampSwitchLed.ts +31 -60
  327. package/src/Devices/Insteon/Generated/DimmerMotorSwitch.ts +24 -47
  328. package/src/Devices/Insteon/Generated/DimmerSwitch.ts +13 -14
  329. package/src/Devices/Insteon/Generated/DoorLock.ts +11 -15
  330. package/src/Devices/Insteon/Generated/Ezio2x4Input.ts +12 -11
  331. package/src/Devices/Insteon/Generated/Ezio2x4Output.ts +12 -18
  332. package/src/Devices/Insteon/Generated/EzrainInput.ts +12 -11
  333. package/src/Devices/Insteon/Generated/EzrainOutput.ts +20 -28
  334. package/src/Devices/Insteon/Generated/FanLincMotor.ts +15 -27
  335. package/src/Devices/Insteon/Generated/I3KeypadFlags.ts +19 -39
  336. package/src/Devices/Insteon/Generated/I3PaddleFlags.ts +17 -33
  337. package/src/Devices/Insteon/Generated/ImeterSolo.ts +11 -15
  338. package/src/Devices/Insteon/Generated/IrLincTx.ts +10 -12
  339. package/src/Devices/Insteon/Generated/{KeypadButtonAdv.ts → KeypadButton.ts} +23 -26
  340. package/src/Devices/Insteon/Generated/KeypadDimmer.ts +30 -57
  341. package/src/Devices/Insteon/Generated/KeypadRelay.ts +30 -43
  342. package/src/Devices/Insteon/Generated/OnOffControl.ts +15 -12
  343. package/src/Devices/Insteon/Generated/Pir2844.ts +15 -20
  344. package/src/Devices/Insteon/Generated/Pir2844OnOff.ts +16 -23
  345. package/src/Devices/Insteon/Generated/Pir2844c.ts +15 -20
  346. package/src/Devices/Insteon/Generated/RelayLamp.ts +29 -41
  347. package/src/Devices/Insteon/Generated/RelayLampSwitch.ts +29 -42
  348. package/src/Devices/Insteon/Generated/RelayLampSwitchLed.ts +24 -39
  349. package/src/Devices/Insteon/Generated/RelaySwitch.ts +14 -17
  350. package/src/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.ts +15 -20
  351. package/src/Devices/Insteon/Generated/RemoteLinc2.ts +12 -11
  352. package/src/Devices/Insteon/Generated/Siren.ts +18 -29
  353. package/src/Devices/Insteon/Generated/SirenAlert.ts +11 -8
  354. package/src/Devices/Insteon/Generated/TempLinc.ts +18 -36
  355. package/src/Devices/Insteon/Generated/Thermostat.ts +18 -36
  356. package/src/Devices/Insteon/Generated/X10.ts +13 -21
  357. package/src/Devices/Insteon/Generated/index.ts +38 -0
  358. package/src/Devices/Insteon/InsteonBaseDevice.ts +5 -4
  359. package/src/Devices/Insteon/InsteonFanDevice.ts +3 -4
  360. package/src/Devices/Insteon/InsteonRelayDevice.ts +1 -0
  361. package/src/Devices/Insteon/KeypadButton.ts +31 -31
  362. package/src/Devices/Insteon/index.ts +18 -26
  363. package/src/Devices/Lutron/Generated/LoadShed.ts +11 -15
  364. package/src/Devices/NCD/Generated/Relay.ts +12 -18
  365. package/src/Devices/NodeFactory.ts +67 -13
  366. package/src/Devices/Poly/Generated/MatterBridge.ts +84 -0
  367. package/src/Devices/Scene/Generated/Scene.ts +33 -65
  368. package/src/Devices/Scene/index.ts +2 -1
  369. package/src/Devices/UDI/Generated/Channel.ts +8 -6
  370. package/src/Devices/UDI/Generated/Em3MainChannel.ts +8 -6
  371. package/src/Devices/UDI/Generated/Main.ts +9 -9
  372. package/src/Devices/UDI/Generated/PulseCounter.ts +8 -6
  373. package/src/Devices/UDI/Generated/Relay.ts +11 -15
  374. package/src/Devices/UDI/Generated/TemperatureSensor.ts +8 -6
  375. package/src/Devices/ZWave/Generated/ColorSwitch.ts +16 -24
  376. package/src/Devices/ZWave/Generated/DimmerSwitch.ts +25 -49
  377. package/src/Devices/ZWave/Generated/index.ts +2 -0
  378. package/src/Devices/ZWave/index.ts +5 -1
  379. package/src/Devices/ZigBeeLegacy/Generated/Relay.ts +12 -18
  380. package/src/Devices/ZigBeeLegacy/Generated/Thermostat.ts +17 -33
  381. package/src/Devices/index.ts +17 -12
  382. package/src/ISY.ts +8 -2
  383. package/src/ISYDevice.ts +68 -57
  384. package/src/ISYNode.ts +32 -8
  385. package/src/ISYScene.ts +31 -28
  386. package/src/Matter/Behaviors/BehaviorRegistry.ts +26 -0
  387. package/src/Matter/Behaviors/Insteon/ISYOnOffBehavior.ts +6 -0
  388. package/src/Matter/Bridge/Server.ts +39 -15
  389. package/src/Matter/Mappings/Insteon.ts +39 -14
  390. package/src/Model/ClassDefinition.ts +34 -4
  391. package/src/Model/ClusterMap.ts +73 -57
  392. package/src/Model/NodeInfo.ts +1 -1
  393. package/src/Utils.ts +38 -0
  394. package/tsconfig.json +7 -1
  395. package/src/Devices/Insteon/Generated/AlertModuleSirenAdv.ts +0 -123
  396. package/src/Devices/Insteon/Generated/BallastRelayLampSwitchAdv.ts +0 -123
  397. package/src/Devices/Insteon/Generated/BinaryAlarmAdv.ts +0 -91
  398. package/src/Devices/Insteon/Generated/BinaryControlAdv.ts +0 -91
  399. package/src/Devices/Insteon/Generated/DimmerLampSwitchAdv.ts +0 -207
  400. package/src/Devices/Insteon/Generated/DimmerLampSwitchLedAdv.ts +0 -215
  401. package/src/Devices/Insteon/Generated/DimmerMotorSwitchAdv.ts +0 -191
  402. package/src/Devices/Insteon/Generated/DimmerSwitchOnlyAdv.ts +0 -73
  403. package/src/Devices/Insteon/Generated/Ezio2x4InputAdv.ts +0 -75
  404. package/src/Devices/Insteon/Generated/EzrainInputAdv.ts +0 -75
  405. package/src/Devices/Insteon/Generated/KeypadDimmerAdv.ts +0 -207
  406. package/src/Devices/Insteon/Generated/KeypadRelayAdv.ts +0 -131
  407. package/src/Devices/Insteon/Generated/OnOffControlAdv.ts +0 -65
  408. package/src/Devices/Insteon/Generated/Pir2844Adv.ts +0 -139
  409. package/src/Devices/Insteon/Generated/Pir2844OnOffAdv.ts +0 -107
  410. package/src/Devices/Insteon/Generated/Pir2844cAdv.ts +0 -139
  411. package/src/Devices/Insteon/Generated/RelayLampOnlyAdv.ts +0 -123
  412. package/src/Devices/Insteon/Generated/RelayLampSwitchAdv.ts +0 -131
  413. package/src/Devices/Insteon/Generated/RelayLampSwitchLedAdv.ts +0 -139
  414. package/src/Devices/Insteon/Generated/RelaySwitchOnlyAdv.ts +0 -81
  415. package/src/Devices/Insteon/Generated/RelaySwitchOnlyPlusQueryAdv.ts +0 -89
  416. package/src/Devices/Insteon/Generated/RemoteLinc2Adv.ts +0 -75
  417. package/src/Devices/Insteon/Generated/SirenArm.ts +0 -55
@@ -0,0 +1,341 @@
1
+ import ts, { ModifierFlags, type ModifierSyntaxKind, type PunctuationSyntaxKind } from 'typescript';
2
+
3
+ type ParameterType<F> = F extends (arg0: infer P) => any ? P : never;
4
+
5
+ type TokenSyntaxKind = ParameterType<(typeof ts.factory)['createToken']>;
6
+
7
+ export const SyntaxKind = ts.SyntaxKind;
8
+
9
+ export type SyntaxKind = ts.SyntaxKind;
10
+
11
+ export class CodeFactory {
12
+ protected factory: ts.NodeFactory;
13
+
14
+ constructor(factory: ts.NodeFactory) {
15
+ this.factory = factory;
16
+ }
17
+
18
+ private createIdentifier(name?: string): ts.Identifier | undefined {
19
+ return name ? ts.factory.createIdentifier(name) : undefined;
20
+ }
21
+
22
+ createImportClause(isTypeOnly: boolean, name?: string, ...namedBindings: ts.NamedImportBindings[]): ts.ImportClause {
23
+ return ts.factory.createImportClause(isTypeOnly, this.createIdentifier(name), namedBindings.length ? namedBindings[0] : undefined);
24
+ }
25
+
26
+ createAssertClause(elements: ts.NodeArray<ts.AssertEntry>, multiLine?: boolean): ts.AssertClause {
27
+ return ts.factory.createAssertClause(elements, multiLine);
28
+ }
29
+
30
+ createAssertEntry(name: string, value: ts.Expression): ts.AssertEntry {
31
+ return ts.factory.createAssertEntry(this.createIdentifier(name)!, value);
32
+ }
33
+
34
+ createImportTypeAssertionContainer(clause: ts.AssertClause, multiLine?: boolean): ts.ImportTypeAssertionContainer {
35
+ return ts.factory.createImportTypeAssertionContainer(clause, multiLine);
36
+ }
37
+
38
+ createImportAttributes(elements: ts.NodeArray<ts.ImportAttribute>, multiLine?: boolean): ts.ImportAttributes {
39
+ return ts.factory.createImportAttributes(elements, multiLine);
40
+ }
41
+
42
+ createImportAttribute(name: string, value: ts.Expression): ts.ImportAttribute {
43
+ return ts.factory.createImportAttribute(this.createIdentifier(name)!, value);
44
+ }
45
+
46
+ createNamespaceImport(name: string): ts.NamespaceImport {
47
+ return ts.factory.createNamespaceImport(this.createIdentifier(name)!);
48
+ }
49
+
50
+ createNamespaceExport(name: string): ts.NamespaceExport {
51
+ return ts.factory.createNamespaceExport(this.createIdentifier(name)!);
52
+ }
53
+
54
+ createNamedImports(...elements: ts.ImportSpecifier[]): ts.NamedImports {
55
+ return ts.factory.createNamedImports(elements);
56
+ }
57
+
58
+ updateImportClause(node: ts.ImportClause, isTypeOnly: boolean, name?: string, ...namedBindings: ts.NamedImportBindings[]): ts.ImportClause {
59
+ return ts.factory.updateImportClause(node, isTypeOnly, this.createIdentifier(name), namedBindings.length ? namedBindings[0] : undefined);
60
+ }
61
+
62
+ updateAssertClause(node: ts.AssertClause, elements: ts.NodeArray<ts.AssertEntry>, multiLine?: boolean): ts.AssertClause {
63
+ return ts.factory.updateAssertClause(node, elements, multiLine);
64
+ }
65
+
66
+ updateAssertEntry(node: ts.AssertEntry, name: string, value: ts.Expression): ts.AssertEntry {
67
+ return ts.factory.updateAssertEntry(node, this.createIdentifier(name)!, value);
68
+ }
69
+
70
+ updateImportTypeAssertionContainer(node: ts.ImportTypeAssertionContainer, clause: ts.AssertClause, multiLine?: boolean): ts.ImportTypeAssertionContainer {
71
+ return ts.factory.updateImportTypeAssertionContainer(node, clause, multiLine);
72
+ }
73
+
74
+ updateImportAttributes(node: ts.ImportAttributes, elements: ts.NodeArray<ts.ImportAttribute>, multiLine?: boolean): ts.ImportAttributes {
75
+ return ts.factory.updateImportAttributes(node, elements, multiLine);
76
+ }
77
+
78
+ updateImportAttribute(node: ts.ImportAttribute, name: string, value: ts.Expression): ts.ImportAttribute {
79
+ return ts.factory.updateImportAttribute(node, this.createIdentifier(name)!, value);
80
+ }
81
+
82
+ updateNamespaceImport(node: ts.NamespaceImport, name: string): ts.NamespaceImport {
83
+ return ts.factory.updateNamespaceImport(node, this.createIdentifier(name)!);
84
+ }
85
+
86
+ updateNamespaceExport(node: ts.NamespaceExport, name: string): ts.NamespaceExport {
87
+ return ts.factory.updateNamespaceExport(node, this.createIdentifier(name)!);
88
+ }
89
+
90
+ updateNamedImports(node: ts.NamedImports, ...elements: ts.ImportSpecifier[]): ts.NamedImports {
91
+ return ts.factory.updateNamedImports(node, elements);
92
+ }
93
+
94
+ // Additional methods to cover common usages in NodeClassFactory.ts
95
+
96
+ createImportDeclaration(moduleSpecifier: string, namedImports: string[], isTypeOnly = false, importAttributes?: ts.ImportAttributes, ...modifierFlags: ModifierFlags[]): ts.ImportDeclaration {
97
+ return ts.factory.createImportDeclaration(
98
+ this.createModifiers(...modifierFlags),
99
+ this.createImportClause(isTypeOnly, undefined, ts.factory.createNamedImports(namedImports.map((name) => ts.factory.createImportSpecifier(false, undefined, this.createIdentifier(name)!)))),
100
+ ts.factory.createStringLiteral(moduleSpecifier),
101
+ importAttributes
102
+ );
103
+ }
104
+
105
+ createVariableStatement(name: string, initializer: ts.Expression, isConst = true): ts.VariableStatement {
106
+ return ts.factory.createVariableStatement(
107
+ [ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)],
108
+ ts.factory.createVariableDeclarationList(
109
+ [ts.factory.createVariableDeclaration(this.createIdentifier(name)!, undefined, undefined, initializer)],
110
+ isConst ? ts.NodeFlags.Const : ts.NodeFlags.None
111
+ )
112
+ );
113
+ }
114
+
115
+ createTypeAliasDeclaration(name: string, type: ts.TypeNode): ts.TypeAliasDeclaration {
116
+ return ts.factory.createTypeAliasDeclaration(undefined, this.createIdentifier(name)!, undefined, type);
117
+ }
118
+
119
+ createClassDeclaration(name: string, members: ts.ClassElement[], heritageClauses?: ts.HeritageClause[]): ts.ClassDeclaration {
120
+ return ts.factory.createClassDeclaration(this.createModifiers(ts.ModifierFlags.Export), this.createIdentifier(name)!, undefined, heritageClauses, members);
121
+ }
122
+
123
+ and<T>(...flags: T[]): T {
124
+ if (flags.length === 0) {
125
+ return 0 as T;
126
+ }
127
+
128
+ return flags.reduce((acc: number, flag) => acc & (flag as number), flags[0] as number) as T;
129
+ }
130
+
131
+ or<T>(...flags: T[]): T {
132
+ if (flags.length === 0) {
133
+ return 0 as T;
134
+ }
135
+
136
+ return flags.reduce((acc: number, flag) => acc | (flag as number), flags[0] as number) as T;
137
+ }
138
+
139
+ createModifiers(...flags: ts.ModifierFlags[]): ts.Modifier[] {
140
+ return ts.factory.createModifiersFromModifierFlags(this.or(...flags));
141
+ }
142
+
143
+ createMethodDeclaration(name: string, parameters: ts.ParameterDeclaration[], body: ts.Block, isAsync = false): ts.MethodDeclaration {
144
+ return ts.factory.createMethodDeclaration(
145
+ isAsync ? this.createModifiers(ts.ModifierFlags.Async) : undefined,
146
+ undefined,
147
+ this.createIdentifier(name)!,
148
+ undefined,
149
+ undefined,
150
+ parameters,
151
+ undefined,
152
+ body
153
+ );
154
+ }
155
+
156
+ createPropertyDeclaration(name: string, initializer: ts.Expression, modifiers: ts.Modifier[] = []): ts.PropertyDeclaration {
157
+ return ts.factory.createPropertyDeclaration(modifiers, this.createIdentifier(name)!, undefined, undefined, initializer);
158
+ }
159
+
160
+ createConstructorDeclaration(parameters: ts.ParameterDeclaration[], body: ts.Block): ts.ConstructorDeclaration {
161
+ return ts.factory.createConstructorDeclaration(undefined, parameters, body);
162
+ }
163
+
164
+ createFunctionDeclaration(name: string, parameters: ts.ParameterDeclaration[], body: ts.Block, returnType?: ts.TypeNode): ts.FunctionDeclaration {
165
+ return ts.factory.createFunctionDeclaration([this.createModifier(ts.SyntaxKind.ExportKeyword)], undefined, this.createIdentifier(name)!, undefined, parameters, returnType, body);
166
+ }
167
+ createModifier(ExportKeyword: ts.ModifierSyntaxKind): ts.ModifierLike {
168
+ return ts.factory.createModifier(ExportKeyword);
169
+ }
170
+
171
+ createModuleDeclaration(name: string, body: ts.ModuleBlock, ...modifierFlags: ModifierFlags[]): ts.ModuleDeclaration {
172
+ return ts.factory.createModuleDeclaration(this.createModifiers(...modifierFlags), this.createIdentifier(name)!, body, ts.NodeFlags.Namespace);
173
+ }
174
+
175
+ createToken<T extends ModifierSyntaxKind>(kind: T): ts.ModifierLike;
176
+ createToken<T extends PunctuationSyntaxKind>(kind: T): ts.PunctuationToken<T>;
177
+ createToken<T extends TokenSyntaxKind>(kind: T): ts.Token<T> {
178
+ return ts.factory.createToken(kind);
179
+ }
180
+
181
+ createPropertySignature(name: string, type: ts.TypeNode, optional = false, ...modifiers: ModifierFlags[]): ts.PropertySignature {
182
+ return ts.factory.createPropertySignature(this.createModifiers(...modifiers), this.createIdentifier(name)!, optional ? this.createToken(ts.SyntaxKind.QuestionToken) : undefined, type);
183
+ }
184
+ createTypeReferenceNode(typeName: string, qualifier: string): ts.TypeReferenceNode;
185
+ createTypeReferenceNode(typeName: string, ...typeArguments: ts.TypeNode[]): ts.TypeReferenceNode;
186
+ createTypeReferenceNode(typeName: string, qualifier?: string | ts.TypeNode, ...typeArguments: ts.TypeNode[]): ts.TypeReferenceNode {
187
+ if (typeof qualifier === 'string') {
188
+ return ts.factory.createTypeReferenceNode(ts.factory.createQualifiedName(this.createIdentifier(qualifier), this.createIdentifier(typeName)!), typeArguments);
189
+ } else {
190
+ return ts.factory.createTypeReferenceNode(this.createIdentifier(typeName)!, [qualifier, ...typeArguments]);
191
+ }
192
+ }
193
+
194
+ typesEqual(a: ts.TypeNode, b: ts.TypeNode): boolean {
195
+ if (ts.isLiteralTypeNode(a) && ts.isLiteralTypeNode(b)) {
196
+ if (ts.isNumericLiteral(a.literal) && ts.isNumericLiteral(b.literal)) {
197
+ return a.literal.text === b.literal.text;
198
+ } else if (ts.isStringLiteral(a.literal) && ts.isStringLiteral(b.literal)) {
199
+ return a.literal.text === b.literal.text;
200
+ } else if (ts.isBigIntLiteral(a.literal) && ts.isBigIntLiteral(b.literal)) {
201
+ return a.literal.text === b.literal.text;
202
+ }
203
+ }
204
+
205
+ if (ts.isTypeReferenceNode(a) && ts.isTypeReferenceNode(b)) {
206
+ if (ts.isIdentifier(a.typeName) && ts.isIdentifier(b.typeName)) {
207
+ return a.typeName.text === b.typeName.text;
208
+ }
209
+ }
210
+ return false;
211
+ }
212
+
213
+ createUnionTypeNode(...types: ts.TypeNode[]): ts.UnionTypeNode {
214
+ let t = [types[0]];
215
+ for (let i = 1; i < types.length; i++) {
216
+ if (types[i].kind !== ts.SyntaxKind.NeverKeyword) {
217
+ if (types[i].kind === ts.SyntaxKind.UnionType) {
218
+ types.push(...(types[i] as ts.UnionTypeNode).types);
219
+ } else if (!t.some((x) => this.typesEqual(x, types[i]))) t.push(types[i]);
220
+ }
221
+ }
222
+ return ts.factory.createUnionTypeNode(types);
223
+ }
224
+
225
+ createIntersectionTypeNode(types: ts.TypeNode[]): ts.IntersectionTypeNode {
226
+ return ts.factory.createIntersectionTypeNode(types);
227
+ }
228
+
229
+ createTypeLiteralNode(members: ts.TypeElement[]): ts.TypeLiteralNode {
230
+ return ts.factory.createTypeLiteralNode(members);
231
+ }
232
+
233
+ createFunctionTypeNode(type: ts.TypeNode, typeParameters: readonly ts.TypeParameterDeclaration[], ...parameters: ts.ParameterDeclaration[]): ts.FunctionTypeNode {
234
+ return ts.factory.createFunctionTypeNode(typeParameters, parameters, type);
235
+ }
236
+
237
+ createParameter(name: string, type: ts.TypeNode, initializer?: ts.Expression, optional = false): ts.ParameterDeclaration {
238
+ return ts.factory.createParameterDeclaration(undefined, undefined, this.createIdentifier(name)!, optional ? this.createToken(ts.SyntaxKind.QuestionToken) : undefined, type, initializer);
239
+ }
240
+
241
+ createExpressionStatement(expression: ts.Expression): ts.ExpressionStatement {
242
+ return ts.factory.createExpressionStatement(expression);
243
+ }
244
+
245
+ createCallExpression(expression: ts.Expression, typeArguments: ts.TypeNode[] | undefined, argumentsArray: ts.Expression[]): ts.CallExpression {
246
+ return ts.factory.createCallExpression(expression, typeArguments, argumentsArray);
247
+ }
248
+
249
+ createReturnStatement(expression?: ts.Expression): ts.ReturnStatement {
250
+ return ts.factory.createReturnStatement(expression);
251
+ }
252
+
253
+ createNewExpression(expression: ts.Expression, typeArguments: ts.TypeNode[] | undefined, argumentsArray: ts.Expression[]): ts.NewExpression {
254
+ return ts.factory.createNewExpression(expression, typeArguments, argumentsArray);
255
+ }
256
+
257
+ createObjectLiteral(properties: ts.ObjectLiteralElementLike[], multiLine?: boolean): ts.ObjectLiteralExpression {
258
+ return ts.factory.createObjectLiteralExpression(properties, multiLine);
259
+ }
260
+
261
+ createPropertyAssignment(name: string, initializer: ts.Expression): ts.PropertyAssignment {
262
+ return ts.factory.createPropertyAssignment(this.createIdentifier(name)!, initializer);
263
+ }
264
+
265
+ createQualifiedName(left: ts.EntityName, right: string): ts.QualifiedName {
266
+ return ts.factory.createQualifiedName(left, this.createIdentifier(right)!);
267
+ }
268
+
269
+ createLiteralTypeNode(literal: string | number): ts.LiteralTypeNode {
270
+ if (typeof literal === 'number') {
271
+ return ts.factory.createLiteralTypeNode(this.createNumericLiteral(literal as number));
272
+ }
273
+
274
+ return ts.factory.createLiteralTypeNode(this.createStringLiteral(literal));
275
+ }
276
+
277
+ createNumericLiteral(value: number): ts.NumericLiteral {
278
+ return ts.factory.createNumericLiteral(value.toString());
279
+ }
280
+
281
+ createStringLiteral(text: string): ts.StringLiteral {
282
+ return ts.factory.createStringLiteral(text);
283
+ }
284
+
285
+ createKeywordTypeNode(kind: ts.KeywordTypeSyntaxKind): ts.KeywordTypeNode {
286
+ return ts.factory.createKeywordTypeNode(kind);
287
+ }
288
+
289
+ createTypePredicateNode(parameterName: ts.Identifier, type: ts.TypeNode): ts.TypePredicateNode {
290
+ return ts.factory.createTypePredicateNode(undefined, parameterName, type);
291
+ }
292
+
293
+ createBinaryExpression(left: ts.Expression, operator: ts.BinaryOperator, right: ts.Expression): ts.BinaryExpression {
294
+ return ts.factory.createBinaryExpression(left, operator, right);
295
+ }
296
+
297
+ createPropertyAccessExpression(expression: ts.Expression, name: string): ts.PropertyAccessExpression {
298
+ return ts.factory.createPropertyAccessExpression(expression, this.createIdentifier(name)!);
299
+ }
300
+
301
+ createHeritageClause(token: ts.SyntaxKind.ExtendsKeyword | ts.SyntaxKind.ImplementsKeyword, types: ts.ExpressionWithTypeArguments[]): ts.HeritageClause {
302
+ return ts.factory.createHeritageClause(token, types);
303
+ }
304
+
305
+ createExpressionWithTypeArguments(expression: ts.Expression, typeArguments?: ts.TypeNode[]): ts.ExpressionWithTypeArguments {
306
+ return ts.factory.createExpressionWithTypeArguments(expression, typeArguments);
307
+ }
308
+ createBlock(multiLine: boolean, ...statements: ts.Statement[]): ts.Block;
309
+ createBlock(...statements: ts.Statement[]);
310
+ createBlock(multiLine: boolean | ts.Statement, ...statements: ts.Statement[]): ts.Block {
311
+ if(typeof multiLine === 'boolean') {
312
+ return ts.factory.createBlock(statements, multiLine);
313
+ }
314
+ return ts.factory.createBlock([multiLine, ...statements]);
315
+
316
+ }
317
+
318
+ createModuleBlock(statements: ts.Statement[]): ts.ModuleBlock {
319
+ return ts.factory.createModuleBlock(statements);
320
+ }
321
+
322
+ createInterfaceDeclaration(name: string, members: ts.TypeElement[], heritageClauses?: ts.HeritageClause[]): ts.InterfaceDeclaration {
323
+ return ts.factory.createInterfaceDeclaration([ts.factory.createModifier(ts.SyntaxKind.ExportKeyword)], this.createIdentifier(name)!, undefined, heritageClauses, members);
324
+ }
325
+
326
+ createTypeOperatorNode(operator: ts.SyntaxKind.KeyOfKeyword | ts.SyntaxKind.ReadonlyKeyword | ts.SyntaxKind.UniqueKeyword, type: ts.TypeNode): ts.TypeOperatorNode {
327
+ return ts.factory.createTypeOperatorNode(operator, type);
328
+ }
329
+
330
+ createTypeQueryNode(exprName: ts.EntityName): ts.TypeQueryNode {
331
+ return ts.factory.createTypeQueryNode(exprName);
332
+ }
333
+
334
+ createAsExpression(expression: ts.Expression, type: ts.TypeNode): ts.AsExpression {
335
+ return ts.factory.createAsExpression(expression, type);
336
+ }
337
+
338
+ createPropertyAccessChain(name: string, useQuestionDot: boolean = true, expression: ts.Expression): ts.PropertyAccessChain {
339
+ return ts.factory.createPropertyAccessChain(expression, useQuestionDot ? this.createToken(ts.SyntaxKind.QuestionDotToken) : undefined, this.createIdentifier(name)!);
340
+ }
341
+ }
package/src/Converters.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { UnitOfMeasure } from './Definitions/Global/UOM.js';
2
- import { type Paths, type StringKeys } from './Utils.js';
2
+ import { type Leaves, type Paths, type PathsWithLimit, type StringKeys } from './Utils.js';
3
3
 
4
4
  let BooleanPercentage: Converter<boolean, number>;
5
5
  let NullConverter: Converter<any, any>;
@@ -57,7 +57,7 @@ function registerConverters() {
57
57
  }
58
58
  }
59
59
 
60
- export function registerConverter(
60
+ function registerConverter(
61
61
  from: keyof typeof StandardConverters | keyof typeof Converter.Matter | Paths<typeof StandardConverters> | Paths<typeof Converter.Matter> | string,
62
62
  to: keyof typeof StandardConverters | keyof typeof Converter.Matter | string,
63
63
  converter: Converter<any, any>
@@ -89,6 +89,18 @@ export namespace Converter {
89
89
  : value
90
90
  }
91
91
 
92
+ },
93
+ Percent: {
94
+ LightingLevel: {
95
+ from: (value) =>
96
+ value === 1 ? 0
97
+ : value === 254 ? 100
98
+ : Math.round(value / 254 * 100),
99
+ to: (value) =>
100
+ value === 0 ? 1
101
+ : value === 100 ? 254
102
+ : Math.round(value / 100 * 254)
103
+ }
92
104
  }
93
105
  };
94
106
 
@@ -96,6 +108,8 @@ export namespace Converter {
96
108
 
97
109
  export type StandardConverters = `${StringKeys<typeof StandardConverters>}.${StringKeys<typeof StandardConverters>}`;
98
110
 
111
+ //export type StandardConvertersList = PathsWithLimit<typeof StandardConverters, 1>;
112
+
99
113
  export type MatterISYConvertibleTypes = `${StringKeys<(typeof Matter)[`${keyof typeof Matter}`]>}`;
100
114
 
101
115
  export type ISYMatterConvertibleTypes = `${StringKeys<typeof Matter>}`;
@@ -105,7 +119,7 @@ export namespace Converter {
105
119
  export type KnownConverters = StandardConverters | MatterConverters;
106
120
  const cache: { [x: string]: Converter<any, any> } = {};
107
121
  export function get(label: KnownConverters): Converter<any, any>;
108
- export function get(from: UnitOfMeasure, to: UnitOfMeasure);
122
+ export function get(from: UnitOfMeasure, to: UnitOfMeasure): Converter<any,any>
109
123
  export function get(from: ConverterTypes, to: ConverterTypes);
110
124
  export function get(from: UnitOfMeasure, to: UnitOfMeasure);
111
125
  export function get(from: MatterISYConvertibleTypes, to: ISYMatterConvertibleTypes);
@@ -141,6 +155,12 @@ export namespace Converter {
141
155
  }
142
156
  return null;
143
157
  }
158
+
159
+
160
+ export function register<F,T>(from: UnitOfMeasure, to: UnitOfMeasure, converter: Converter<F, T>) {
161
+ registerConverter(UnitOfMeasure[from], UnitOfMeasure[to], converter);
162
+ }
163
+
144
164
  }
145
165
 
146
166
  registerConverters();
@@ -365,6 +365,7 @@ export namespace Driver {
365
365
  };
366
366
  };
367
367
 
368
+
368
369
  export type For<D extends string, T, S extends boolean = false> = T extends Signature<infer U, infer V, infer SU, infer N, infer L> ? StatelessOrStateful<D, U, V, N, L, S> : never;
369
370
 
370
371
  export type ForAll<T, S extends boolean = false> = {
@@ -1,4 +1,4 @@
1
- import type { UnionToIntersection } from '@matter/general';
1
+ import type { Merge, UnionToIntersection } from '@matter/general';
2
2
  import type { AnyMxRecord } from 'dns';
3
3
  import EventEmitter, { on } from 'events';
4
4
  import type { EventType } from '../../Events/EventType.js';
@@ -60,14 +60,14 @@ export namespace Event {
60
60
 
61
61
  export function createEmitter<N extends ISYNode<any, D, C, E>, E extends ISYNode.EventSignatures, D extends ISYNode.DriverSignatures, C extends ISYNode.CommandSignatures>(
62
62
  node: N
63
- ): FunctionSigFor<E, NodeEventEmitter<N>> & Omit<NodeEventEmitter<N>, 'on'> {
63
+ ): Merge<NodeEventEmitter<N>,FunctionSigFor<E, NodeEventEmitter<N>>> {
64
64
  var f = new NodeEventEmitter(node);
65
65
  for (let evt in node.drivers) {
66
66
 
67
67
  //f[`on${ev.name}`] = f.on.bind(f, ev.name);
68
68
  }
69
69
 
70
- return f as unknown as FunctionSigFor<E, NodeEventEmitter<N>> & Omit<NodeEventEmitter<N>, 'on'>;
70
+ return f as any;
71
71
  }
72
72
 
73
73
  export class ISYEvent<TAction, TEventType extends EventType> {
@@ -3,7 +3,7 @@
3
3
  import { UnitOfMeasure } from "../../../Definitions/Global/UOM.js";
4
4
  import { Family } from "../../../Definitions/Global/Families.js";
5
5
  import type { NodeInfo } from "../../../Model/NodeInfo.js";
6
- import type { ISY } from "../../../ISY.js";
6
+ import { ISY } from "../../../ISY.js";
7
7
  import type { ISYNode } from "../../../ISYNode.js";
8
8
  import { Base } from "../index.js";
9
9
  import { ISYDeviceNode } from "../../ISYDeviceNode.js";
@@ -12,14 +12,15 @@ import { Brultech } from "../../../Definitions/index.js";
12
12
  import type { DriverState } from "../../../Model/DriverState.js";
13
13
  import { NodeFactory } from "../../NodeFactory.js";
14
14
 
15
- export const nodeDefId = "BTChannel";
15
+ const nodeDefId = "BTChannel";
16
16
 
17
17
  type Commands = Channel.Commands;
18
18
  type Drivers = Channel.Drivers;
19
19
 
20
20
  export class ChannelNode extends Base<Drivers, Commands> implements Channel.Interface {
21
- public readonly commands = {};
22
- static nodeDefId = "BTChannel";
21
+ public override readonly commands = {};
22
+ static override nodeDefId = "BTChannel";
23
+ static override implements = ["BTChannel"];
23
24
  declare readonly nodeDefId: "BTChannel";
24
25
  constructor (isy: ISY, nodeInfo: NodeInfo) {
25
26
  super(isy, nodeInfo);
@@ -44,8 +45,9 @@ export namespace Channel {
44
45
  export interface Interface extends Omit<InstanceType<typeof ChannelNode>, keyof ISYDeviceNode<any, any, any, any>> {
45
46
  nodeDefId: "BTChannel";
46
47
  }
47
- export function is(node: ISYNode<any, any, any, any>): node is ChannelNode {
48
- return node.nodeDefId === nodeDefId;
48
+ export function is(node: ISYNode<any, any, any, any>): node is ChannelNode { return ["BTChannel"].includes(node.nodeDefId); }
49
+ export function isImplementedBy(node: ISYNode<any, any, any, any>): node is ChannelNode {
50
+ return ["BTChannel", "BTMain"].includes(node.nodeDefId);
49
51
  }
50
52
  export function create(isy: ISY, nodeInfo: NodeInfo) {
51
53
  return new ChannelNode(isy, nodeInfo);
@@ -3,7 +3,7 @@
3
3
  import { UnitOfMeasure } from "../../../Definitions/Global/UOM.js";
4
4
  import { Family } from "../../../Definitions/Global/Families.js";
5
5
  import type { NodeInfo } from "../../../Model/NodeInfo.js";
6
- import type { ISY } from "../../../ISY.js";
6
+ import { ISY } from "../../../ISY.js";
7
7
  import type { ISYNode } from "../../../ISYNode.js";
8
8
  import { Base } from "../index.js";
9
9
  import { ISYDeviceNode } from "../../ISYDeviceNode.js";
@@ -12,16 +12,17 @@ import { Brultech } from "../../../Definitions/index.js";
12
12
  import type { DriverState } from "../../../Model/DriverState.js";
13
13
  import { NodeFactory } from "../../NodeFactory.js";
14
14
 
15
- export const nodeDefId = "BTMain";
15
+ const nodeDefId = "BTMain";
16
16
 
17
17
  type Commands = Main.Commands;
18
18
  type Drivers = Main.Drivers;
19
19
 
20
20
  export class MainNode extends Base<Drivers, Commands> implements Main.Interface {
21
- public readonly commands = {
21
+ public override readonly commands = {
22
22
  QUERY: this.query
23
23
  };
24
- static nodeDefId = "BTMain";
24
+ static override nodeDefId = "BTMain";
25
+ static override implements = ["BTMain"];
25
26
  declare readonly nodeDefId: "BTMain";
26
27
  constructor (isy: ISY, nodeInfo: NodeInfo) {
27
28
  super(isy, nodeInfo);
@@ -32,9 +33,7 @@ export class MainNode extends Base<Drivers, Commands> implements Main.Interface
32
33
  this.drivers.PPW = Driver.create("PPW", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Watt, label: "Polarized Power", name: "polarizedPower" });
33
34
  this.drivers.ERR = Driver.create("ERR", this, nodeInfo.property as DriverState, { uom: UnitOfMeasure.Index, label: "Responding", name: "responding" });
34
35
  }
35
- async query() {
36
- return this.sendCommand("QUERY");
37
- }
36
+ async query() { return this.sendCommand("QUERY"); }
38
37
  public get status(): number {
39
38
  return this.drivers.ST?.value;
40
39
  }
@@ -61,8 +60,9 @@ export namespace Main {
61
60
  export interface Interface extends Omit<InstanceType<typeof MainNode>, keyof ISYDeviceNode<any, any, any, any>> {
62
61
  nodeDefId: "BTMain";
63
62
  }
64
- export function is(node: ISYNode<any, any, any, any>): node is MainNode {
65
- return node.nodeDefId === nodeDefId;
63
+ export function is(node: ISYNode<any, any, any, any>): node is MainNode { return ["BTMain"].includes(node.nodeDefId); }
64
+ export function isImplementedBy(node: ISYNode<any, any, any, any>): node is MainNode {
65
+ return ["BTMain"].includes(node.nodeDefId);
66
66
  }
67
67
  export function create(isy: ISY, nodeInfo: NodeInfo) {
68
68
  return new MainNode(isy, nodeInfo);
@@ -12,7 +12,7 @@ import type { getCategory } from '../Utils.js';
12
12
 
13
13
  type s<T extends Family> = ISYDevice<T,any,any,any>;
14
14
 
15
- type DeviceNames<T extends Family> = `${T extends Family.Insteon | Family.ZWave | Family.ZigBee ? Devices<T>[keyof Devices<T>]["name"] : ""}`;
15
+ type DeviceNames<T extends Family> = `${T extends Family.Insteon | Family.ZWave | Family.ZigBee ? Devices<T>[keyof Devices<T>]["constructor"]["name"] : ""}`;
16
16
  type x = DeviceNames<Family.Insteon>
17
17
  export interface DeviceDef<T extends Family>
18
18
  {
@@ -1,10 +1,7 @@
1
-
2
1
  import { ClusterBehavior } from '@project-chip/matter.js/behavior/cluster';
3
2
  import type { Endpoint, EndpointType, MutableEndpoint } from '@project-chip/matter.js/endpoint';
4
3
  import type { SupportedBehaviors } from '@project-chip/matter.js/endpoint/properties';
5
- import 'winston'
6
-
7
-
4
+ import 'winston';
8
5
 
9
6
  // export const ISYBinaryStateDevice = <K extends Family,D extends DriverSignatures, T extends Constructor<ISYDeviceNode<K,Driver.ToSignatures<'ST'>,any,any>>>(Base: T) => {
10
7
  // return class extends Base implements ISYBinaryStateDevice{
@@ -39,24 +36,19 @@ import 'winston'
39
36
  // };
40
37
  // };
41
38
 
42
- export interface ISYBinaryStateDevice
43
- {
44
- get state(): Promise<boolean>;
45
-
39
+ export interface ISYBinaryStateDevice {
40
+ get state(): Promise<boolean>;
46
41
  }
47
42
 
48
- export interface ISYLevelDevice
49
- {
43
+ export interface ISYLevelDevice {
50
44
  get level(): number;
51
45
  }
52
46
 
53
-
54
47
  // export const ISYUpdateableBinaryStateDevice = <K extends Family, T extends Constructor<ISYDeviceNode<K,any,any,string>>>(
55
48
  // Base: T
56
49
  // ) => {
57
50
  // return class extends Base implements ISYDevice<K,Driver.ToSignatures<'ST'>, any & {'DON': (...args) => boolean, 'DOF': (...args) => boolean}> {
58
51
 
59
-
60
52
  // get state(): Promise<boolean> {
61
53
  // return Promise.resolve(this.drivers > 0);
62
54
  // //return this.readProperty('ST').then(p => p.value > 0);
@@ -88,54 +80,13 @@ export interface ISYLevelDevice
88
80
  // };
89
81
  // };
90
82
 
91
-
92
- export interface MapsToEndpointType<T extends EndpointType> {
83
+ export interface MapsToEndpointType<T extends EndpointType> {
93
84
  initialize(endpoint: Endpoint<T>): void;
94
-
95
85
  }
96
86
 
97
87
  type BehaviorList<T extends ClusterBehavior> = SupportedBehaviors & T;
98
88
 
99
- export interface MapsToEndpoint<T extends ClusterBehavior>
100
- {//@ts-ignore
101
- initialize<K extends MutableEndpoint.With<EndpointType.Empty,BehaviorList<T>>>(endpoint: Endpoint<K>): void;
102
-
89
+ export interface MapsToEndpoint<T extends ClusterBehavior> {
90
+ //@ts-ignore
91
+ initialize<K extends MutableEndpoint.With<EndpointType.Empty, BehaviorList<T>>>(endpoint: Endpoint<K>): void;
103
92
  }
104
-
105
- // export const ISYLevelDevice = <T extends Constructor<ISYDeviceNode<any,any,any,any>>>(base: T) =>
106
- // class extends base {
107
- // get level(): number {
108
- // return super.drivers.ST?.value;
109
- // }
110
- // };
111
-
112
- // tslint:disable-next-line: variable-name
113
-
114
- // export const ISYUpdateableLevelDevice = <T extends Constructor<ISYDeviceNode<any,any,any>>>(base: T) =>
115
- // class extends base {
116
- // get level(): number {
117
- // return this.local.ST;
118
- // }
119
-
120
- // public async updateLevel(level: number): Promise<any> {
121
- // if (level != this.local.ST && level !== (this.pending.ST ?? this.local.ST)) {
122
-
123
- // this.pending.ST = level;
124
- // if (level > 0) {
125
- // return this.sendCommand(
126
- // Commands.On,
127
- // this.convertTo(level, this.uom.ST)
128
- // ).then((p) => {
129
- // //this.local.ST = this.pending.ST; *Wait to receive propertu update from subscription
130
- // this.pending.ST = null;
131
- // });
132
- // } else {
133
- // return this.sendCommand(Commands.Off).then((p) => {
134
- // //this.local.ST = this.pending.ST; *Wait to receive propertu update from subscription
135
- // this.pending.ST = null;
136
- // });
137
- // }
138
- // }
139
- // return Promise.resolve();
140
- // }
141
- // };