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

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 (422) hide show
  1. package/dist/esm/CodeGeneration/CodeFactory.js +245 -0
  2. package/dist/esm/CodeGeneration/CodeFactory.js.map +1 -0
  3. package/dist/esm/CodeGeneration/NodeClassFactory.js +182 -129
  4. package/dist/esm/CodeGeneration/NodeClassFactory.js.map +1 -1
  5. package/dist/esm/CodeGeneration/NodeFactory.js +245 -0
  6. package/dist/esm/CodeGeneration/NodeFactory.js.map +1 -0
  7. package/dist/esm/Converters.js +15 -1
  8. package/dist/esm/Converters.js.map +1 -1
  9. package/dist/esm/Definitions/Global/Drivers.js.map +1 -1
  10. package/dist/esm/Definitions/Global/Events.js.map +1 -1
  11. package/dist/esm/Devices/ISYDevice.js +0 -33
  12. package/dist/esm/Devices/ISYDevice.js.map +1 -1
  13. package/dist/esm/Devices/ISYDeviceNode.js +2 -2
  14. package/dist/esm/Devices/ISYDeviceNode.js.map +1 -1
  15. package/dist/esm/Devices/Insteon/Generated/AlertModuleArmed.js +49 -0
  16. package/dist/esm/Devices/Insteon/Generated/AlertModuleArmed.js.map +1 -0
  17. package/dist/esm/Devices/Insteon/Generated/AlertModuleSiren.js +54 -0
  18. package/dist/esm/Devices/Insteon/Generated/AlertModuleSiren.js.map +1 -0
  19. package/dist/esm/Devices/Insteon/Generated/BallastRelayLampSwitch.js +54 -0
  20. package/dist/esm/Devices/Insteon/Generated/BallastRelayLampSwitch.js.map +1 -0
  21. package/dist/esm/Devices/Insteon/Generated/BinaryAlarm.js +46 -0
  22. package/dist/esm/Devices/Insteon/Generated/BinaryAlarm.js.map +1 -0
  23. package/dist/esm/Devices/Insteon/Generated/BinaryControl.js +46 -0
  24. package/dist/esm/Devices/Insteon/Generated/BinaryControl.js.map +1 -0
  25. package/dist/esm/Devices/Insteon/Generated/DimmerLamp.js +75 -0
  26. package/dist/esm/Devices/Insteon/Generated/DimmerLamp.js.map +1 -0
  27. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitch.js +78 -0
  28. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitch.js.map +1 -0
  29. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitchLed.js +80 -0
  30. package/dist/esm/Devices/Insteon/Generated/DimmerLampSwitchLed.js.map +1 -0
  31. package/dist/esm/Devices/Insteon/Generated/DimmerMotorSwitch.js +74 -0
  32. package/dist/esm/Devices/Insteon/Generated/DimmerMotorSwitch.js.map +1 -0
  33. package/dist/esm/Devices/Insteon/Generated/DimmerSwitch.js +40 -0
  34. package/dist/esm/Devices/Insteon/Generated/DimmerSwitch.js.map +1 -0
  35. package/dist/esm/Devices/Insteon/Generated/DoorLock.js +45 -0
  36. package/dist/esm/Devices/Insteon/Generated/DoorLock.js.map +1 -0
  37. package/dist/esm/Devices/Insteon/Generated/Ezio2x4Input.js +42 -0
  38. package/dist/esm/Devices/Insteon/Generated/Ezio2x4Input.js.map +1 -0
  39. package/dist/esm/Devices/Insteon/Generated/Ezio2x4Output.js +47 -0
  40. package/dist/esm/Devices/Insteon/Generated/Ezio2x4Output.js.map +1 -0
  41. package/dist/esm/Devices/Insteon/Generated/EzrainInput.js +42 -0
  42. package/dist/esm/Devices/Insteon/Generated/EzrainInput.js.map +1 -0
  43. package/dist/esm/Devices/Insteon/Generated/EzrainOutput.js +49 -0
  44. package/dist/esm/Devices/Insteon/Generated/EzrainOutput.js.map +1 -0
  45. package/dist/esm/Devices/Insteon/Generated/FanLincMotor.js +53 -0
  46. package/dist/esm/Devices/Insteon/Generated/FanLincMotor.js.map +1 -0
  47. package/dist/esm/Devices/Insteon/Generated/I3KeypadFlags.js +93 -0
  48. package/dist/esm/Devices/Insteon/Generated/I3KeypadFlags.js.map +1 -0
  49. package/dist/esm/Devices/Insteon/Generated/I3PaddleFlags.js +81 -0
  50. package/dist/esm/Devices/Insteon/Generated/I3PaddleFlags.js.map +1 -0
  51. package/dist/esm/Devices/Insteon/Generated/ImeterSolo.js +49 -0
  52. package/dist/esm/Devices/Insteon/Generated/ImeterSolo.js.map +1 -0
  53. package/dist/esm/Devices/Insteon/Generated/IrLincTx.js +39 -0
  54. package/dist/esm/Devices/Insteon/Generated/IrLincTx.js.map +1 -0
  55. package/dist/esm/Devices/Insteon/Generated/KeypadButton.js +46 -0
  56. package/dist/esm/Devices/Insteon/Generated/KeypadButton.js.map +1 -0
  57. package/dist/esm/Devices/Insteon/Generated/KeypadDimmer.js +78 -0
  58. package/dist/esm/Devices/Insteon/Generated/KeypadDimmer.js.map +1 -0
  59. package/dist/esm/Devices/Insteon/Generated/KeypadRelay.js +56 -0
  60. package/dist/esm/Devices/Insteon/Generated/KeypadRelay.js.map +1 -0
  61. package/dist/esm/Devices/Insteon/Generated/OnOffControl.js +39 -0
  62. package/dist/esm/Devices/Insteon/Generated/OnOffControl.js.map +1 -0
  63. package/dist/esm/Devices/Insteon/Generated/Pir2844.js +64 -0
  64. package/dist/esm/Devices/Insteon/Generated/Pir2844.js.map +1 -0
  65. package/dist/esm/Devices/Insteon/Generated/Pir2844OnOff.js +50 -0
  66. package/dist/esm/Devices/Insteon/Generated/Pir2844OnOff.js.map +1 -0
  67. package/dist/esm/Devices/Insteon/Generated/Pir2844c.js +64 -0
  68. package/dist/esm/Devices/Insteon/Generated/Pir2844c.js.map +1 -0
  69. package/dist/esm/Devices/Insteon/Generated/RelayLamp.js +54 -0
  70. package/dist/esm/Devices/Insteon/Generated/RelayLamp.js.map +1 -0
  71. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitch.js +56 -0
  72. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitch.js.map +1 -0
  73. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitchLed.js +58 -0
  74. package/dist/esm/Devices/Insteon/Generated/RelayLampSwitchLed.js.map +1 -0
  75. package/dist/esm/Devices/Insteon/Generated/RelaySwitch.js +42 -0
  76. package/dist/esm/Devices/Insteon/Generated/RelaySwitch.js.map +1 -0
  77. package/dist/esm/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.js +44 -0
  78. package/dist/esm/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.js.map +1 -0
  79. package/dist/esm/Devices/Insteon/Generated/RemoteLinc2.js +42 -0
  80. package/dist/esm/Devices/Insteon/Generated/RemoteLinc2.js.map +1 -0
  81. package/dist/esm/Devices/Insteon/Generated/Siren.js +66 -0
  82. package/dist/esm/Devices/Insteon/Generated/Siren.js.map +1 -0
  83. package/dist/esm/Devices/Insteon/Generated/SirenAlert.js +35 -0
  84. package/dist/esm/Devices/Insteon/Generated/SirenAlert.js.map +1 -0
  85. package/dist/esm/Devices/Insteon/Generated/TempLinc.js +83 -0
  86. package/dist/esm/Devices/Insteon/Generated/TempLinc.js.map +1 -0
  87. package/dist/esm/Devices/Insteon/Generated/Thermostat.js +83 -0
  88. package/dist/esm/Devices/Insteon/Generated/Thermostat.js.map +1 -0
  89. package/dist/esm/Devices/Insteon/Generated/X10.js +49 -0
  90. package/dist/esm/Devices/Insteon/Generated/X10.js.map +1 -0
  91. package/dist/esm/Devices/Insteon/Generated/index.js +39 -0
  92. package/dist/esm/Devices/Insteon/Generated/index.js.map +1 -0
  93. package/dist/esm/Devices/Insteon/InsteonBaseDevice.js +3 -4
  94. package/dist/esm/Devices/Insteon/InsteonBaseDevice.js.map +1 -1
  95. package/dist/esm/Devices/Insteon/InsteonFanDevice.js +2 -2
  96. package/dist/esm/Devices/Insteon/InsteonFanDevice.js.map +1 -1
  97. package/dist/esm/Devices/Insteon/InsteonRelayDevice.js.map +1 -1
  98. package/dist/esm/Devices/Insteon/KeypadButton.js +11 -11
  99. package/dist/esm/Devices/Insteon/KeypadButton.js.map +1 -1
  100. package/dist/esm/Devices/Insteon/index.js +16 -29
  101. package/dist/esm/Devices/Insteon/index.js.map +1 -1
  102. package/dist/esm/Devices/Lutron/Generated/LoadShed.js +45 -0
  103. package/dist/esm/Devices/Lutron/Generated/LoadShed.js.map +1 -0
  104. package/dist/esm/Devices/NodeFactory.js +45 -8
  105. package/dist/esm/Devices/NodeFactory.js.map +1 -1
  106. package/dist/esm/Devices/Scene/index.js +2 -2
  107. package/dist/esm/Devices/Scene/index.js.map +1 -1
  108. package/dist/esm/Devices/UDI/Generated/Channel.js +42 -0
  109. package/dist/esm/Devices/UDI/Generated/Channel.js.map +1 -0
  110. package/dist/esm/Devices/UDI/Generated/Em3MainChannel.js +54 -0
  111. package/dist/esm/Devices/UDI/Generated/Em3MainChannel.js.map +1 -0
  112. package/dist/esm/Devices/UDI/Generated/Main.js +45 -0
  113. package/dist/esm/Devices/UDI/Generated/Main.js.map +1 -0
  114. package/dist/esm/Devices/UDI/Generated/PulseCounter.js +46 -0
  115. package/dist/esm/Devices/UDI/Generated/PulseCounter.js.map +1 -0
  116. package/dist/esm/Devices/UDI/Generated/Relay.js +45 -0
  117. package/dist/esm/Devices/UDI/Generated/Relay.js.map +1 -0
  118. package/dist/esm/Devices/UDI/Generated/TemperatureSensor.js +38 -0
  119. package/dist/esm/Devices/UDI/Generated/TemperatureSensor.js.map +1 -0
  120. package/dist/esm/Devices/ZWave/Generated/ColorSwitch.js +57 -0
  121. package/dist/esm/Devices/ZWave/Generated/ColorSwitch.js.map +1 -0
  122. package/dist/esm/Devices/ZWave/Generated/DimmerSwitch.js +65 -0
  123. package/dist/esm/Devices/ZWave/Generated/DimmerSwitch.js.map +1 -0
  124. package/dist/esm/Devices/ZWave/Generated/index.js +3 -0
  125. package/dist/esm/Devices/ZWave/Generated/index.js.map +1 -0
  126. package/dist/esm/Devices/ZWave/index.js +1 -0
  127. package/dist/esm/Devices/ZWave/index.js.map +1 -1
  128. package/dist/esm/Devices/index.js +9 -3
  129. package/dist/esm/Devices/index.js.map +1 -1
  130. package/dist/esm/ISY.js +14 -9
  131. package/dist/esm/ISY.js.map +1 -1
  132. package/dist/esm/ISYDevice.js +7 -1
  133. package/dist/esm/ISYDevice.js.map +1 -1
  134. package/dist/esm/ISYNode.js +13 -4
  135. package/dist/esm/ISYNode.js.map +1 -1
  136. package/dist/esm/ISYScene.js +13 -12
  137. package/dist/esm/ISYScene.js.map +1 -1
  138. package/dist/esm/Matter/Behaviors/BehaviorRegistry.js +13 -0
  139. package/dist/esm/Matter/Behaviors/BehaviorRegistry.js.map +1 -0
  140. package/dist/esm/Matter/Behaviors/Insteon/ISYOnOffBehavior.js +3 -0
  141. package/dist/esm/Matter/Behaviors/Insteon/ISYOnOffBehavior.js.map +1 -1
  142. package/dist/esm/Matter/Bridge/Server.js +65 -56
  143. package/dist/esm/Matter/Bridge/Server.js.map +1 -1
  144. package/dist/esm/Matter/Mappings/Insteon.js +28 -9
  145. package/dist/esm/Matter/Mappings/Insteon.js.map +1 -1
  146. package/dist/esm/Model/ClassDefinition.js +22 -3
  147. package/dist/esm/Model/ClassDefinition.js.map +1 -1
  148. package/dist/esm/Model/ClusterMap.js +45 -19
  149. package/dist/esm/Model/ClusterMap.js.map +1 -1
  150. package/dist/esm/Model/NodeInfo.js +1 -1
  151. package/dist/esm/Model/NodeInfo.js.map +1 -1
  152. package/dist/esm/Utils.js.map +1 -1
  153. package/dist/esm/types/CodeGeneration/CodeFactory.d.ts +75 -0
  154. package/dist/esm/types/CodeGeneration/CodeFactory.d.ts.map +1 -0
  155. package/dist/esm/types/CodeGeneration/EnumFactory.d.ts +1 -1
  156. package/dist/esm/types/CodeGeneration/NodeClassFactory.d.ts +22 -3
  157. package/dist/esm/types/CodeGeneration/NodeClassFactory.d.ts.map +1 -1
  158. package/dist/esm/types/CodeGeneration/NodeFactory.d.ts +75 -0
  159. package/dist/esm/types/CodeGeneration/NodeFactory.d.ts.map +1 -0
  160. package/dist/esm/types/Converters.d.ts +9 -3
  161. package/dist/esm/types/Converters.d.ts.map +1 -1
  162. package/dist/esm/types/Definitions/Global/Drivers.d.ts.map +1 -1
  163. package/dist/esm/types/Definitions/Global/Events.d.ts +2 -2
  164. package/dist/esm/types/Definitions/Global/Events.d.ts.map +1 -1
  165. package/dist/esm/types/Devices/DeviceMap.d.ts +1 -1
  166. package/dist/esm/types/Devices/DeviceMap.d.ts.map +1 -1
  167. package/dist/esm/types/Devices/EndpointFor.d.ts +7 -5
  168. package/dist/esm/types/Devices/EndpointFor.d.ts.map +1 -1
  169. package/dist/esm/types/Devices/ISYDevice.d.ts.map +1 -1
  170. package/dist/esm/types/Devices/ISYDeviceNode.d.ts +5 -13
  171. package/dist/esm/types/Devices/ISYDeviceNode.d.ts.map +1 -1
  172. package/dist/esm/types/Devices/Insteon/Generated/AlertModuleArmed.d.ts +76 -0
  173. package/dist/esm/types/Devices/Insteon/Generated/AlertModuleArmed.d.ts.map +1 -0
  174. package/dist/esm/types/Devices/Insteon/Generated/AlertModuleSiren.d.ts +88 -0
  175. package/dist/esm/types/Devices/Insteon/Generated/AlertModuleSiren.d.ts.map +1 -0
  176. package/dist/esm/types/Devices/Insteon/Generated/BallastRelayLampSwitch.d.ts +88 -0
  177. package/dist/esm/types/Devices/Insteon/Generated/BallastRelayLampSwitch.d.ts.map +1 -0
  178. package/dist/esm/types/Devices/Insteon/Generated/BinaryAlarm.d.ts +64 -0
  179. package/dist/esm/types/Devices/Insteon/Generated/BinaryAlarm.d.ts.map +1 -0
  180. package/dist/esm/types/Devices/Insteon/Generated/BinaryControl.d.ts +64 -0
  181. package/dist/esm/types/Devices/Insteon/Generated/BinaryControl.d.ts.map +1 -0
  182. package/dist/esm/types/Devices/Insteon/Generated/DimmerLamp.d.ts +144 -0
  183. package/dist/esm/types/Devices/Insteon/Generated/DimmerLamp.d.ts.map +1 -0
  184. package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitch.d.ts +150 -0
  185. package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitch.d.ts.map +1 -0
  186. package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitchLed.d.ts +156 -0
  187. package/dist/esm/types/Devices/Insteon/Generated/DimmerLampSwitchLed.d.ts.map +1 -0
  188. package/dist/esm/types/Devices/Insteon/Generated/DimmerMotorSwitch.d.ts +138 -0
  189. package/dist/esm/types/Devices/Insteon/Generated/DimmerMotorSwitch.d.ts.map +1 -0
  190. package/dist/esm/types/Devices/Insteon/Generated/DimmerSwitch.d.ts +51 -0
  191. package/dist/esm/types/Devices/Insteon/Generated/DimmerSwitch.d.ts.map +1 -0
  192. package/dist/esm/types/Devices/Insteon/Generated/DoorLock.d.ts +64 -0
  193. package/dist/esm/types/Devices/Insteon/Generated/DoorLock.d.ts.map +1 -0
  194. package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Input.d.ts +52 -0
  195. package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Input.d.ts.map +1 -0
  196. package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Output.d.ts +70 -0
  197. package/dist/esm/types/Devices/Insteon/Generated/Ezio2x4Output.d.ts.map +1 -0
  198. package/dist/esm/types/Devices/Insteon/Generated/EzrainInput.d.ts +52 -0
  199. package/dist/esm/types/Devices/Insteon/Generated/EzrainInput.d.ts.map +1 -0
  200. package/dist/esm/types/Devices/Insteon/Generated/EzrainOutput.d.ts +76 -0
  201. package/dist/esm/types/Devices/Insteon/Generated/EzrainOutput.d.ts.map +1 -0
  202. package/dist/esm/types/Devices/Insteon/Generated/FanLincMotor.d.ts +88 -0
  203. package/dist/esm/types/Devices/Insteon/Generated/FanLincMotor.d.ts.map +1 -0
  204. package/dist/esm/types/Devices/Insteon/Generated/I3KeypadFlags.d.ts +168 -0
  205. package/dist/esm/types/Devices/Insteon/Generated/I3KeypadFlags.d.ts.map +1 -0
  206. package/dist/esm/types/Devices/Insteon/Generated/I3PaddleFlags.d.ts +142 -0
  207. package/dist/esm/types/Devices/Insteon/Generated/I3PaddleFlags.d.ts.map +1 -0
  208. package/dist/esm/types/Devices/Insteon/Generated/ImeterSolo.d.ts +71 -0
  209. package/dist/esm/types/Devices/Insteon/Generated/ImeterSolo.d.ts.map +1 -0
  210. package/dist/esm/types/Devices/Insteon/Generated/IrLincTx.d.ts +51 -0
  211. package/dist/esm/types/Devices/Insteon/Generated/IrLincTx.d.ts.map +1 -0
  212. package/dist/esm/types/Devices/Insteon/Generated/KeypadButton.d.ts +64 -0
  213. package/dist/esm/types/Devices/Insteon/Generated/KeypadButton.d.ts.map +1 -0
  214. package/dist/esm/types/Devices/Insteon/Generated/KeypadDimmer.d.ts +150 -0
  215. package/dist/esm/types/Devices/Insteon/Generated/KeypadDimmer.d.ts.map +1 -0
  216. package/dist/esm/types/Devices/Insteon/Generated/KeypadRelay.d.ts +94 -0
  217. package/dist/esm/types/Devices/Insteon/Generated/KeypadRelay.d.ts.map +1 -0
  218. package/dist/esm/types/Devices/Insteon/Generated/OnOffControl.d.ts +44 -0
  219. package/dist/esm/types/Devices/Insteon/Generated/OnOffControl.d.ts.map +1 -0
  220. package/dist/esm/types/Devices/Insteon/Generated/Pir2844.d.ts +98 -0
  221. package/dist/esm/types/Devices/Insteon/Generated/Pir2844.d.ts.map +1 -0
  222. package/dist/esm/types/Devices/Insteon/Generated/Pir2844OnOff.d.ts +76 -0
  223. package/dist/esm/types/Devices/Insteon/Generated/Pir2844OnOff.d.ts.map +1 -0
  224. package/dist/esm/types/Devices/Insteon/Generated/Pir2844c.d.ts +98 -0
  225. package/dist/esm/types/Devices/Insteon/Generated/Pir2844c.d.ts.map +1 -0
  226. package/dist/esm/types/Devices/Insteon/Generated/RelayLamp.d.ts +88 -0
  227. package/dist/esm/types/Devices/Insteon/Generated/RelayLamp.d.ts.map +1 -0
  228. package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitch.d.ts +94 -0
  229. package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitch.d.ts.map +1 -0
  230. package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitchLed.d.ts +100 -0
  231. package/dist/esm/types/Devices/Insteon/Generated/RelayLampSwitchLed.d.ts.map +1 -0
  232. package/dist/esm/types/Devices/Insteon/Generated/RelaySwitch.d.ts +57 -0
  233. package/dist/esm/types/Devices/Insteon/Generated/RelaySwitch.d.ts.map +1 -0
  234. package/dist/esm/types/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.d.ts +63 -0
  235. package/dist/esm/types/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.d.ts.map +1 -0
  236. package/dist/esm/types/Devices/Insteon/Generated/RemoteLinc2.d.ts +52 -0
  237. package/dist/esm/types/Devices/Insteon/Generated/RemoteLinc2.d.ts.map +1 -0
  238. package/dist/esm/types/Devices/Insteon/Generated/Siren.d.ts +109 -0
  239. package/dist/esm/types/Devices/Insteon/Generated/Siren.d.ts.map +1 -0
  240. package/dist/esm/types/Devices/Insteon/Generated/SirenAlert.d.ts +37 -0
  241. package/dist/esm/types/Devices/Insteon/Generated/SirenAlert.d.ts.map +1 -0
  242. package/dist/esm/types/Devices/Insteon/Generated/TempLinc.d.ts +148 -0
  243. package/dist/esm/types/Devices/Insteon/Generated/TempLinc.d.ts.map +1 -0
  244. package/dist/esm/types/Devices/Insteon/Generated/Thermostat.d.ts +148 -0
  245. package/dist/esm/types/Devices/Insteon/Generated/Thermostat.d.ts.map +1 -0
  246. package/dist/esm/types/Devices/Insteon/Generated/X10.d.ts +76 -0
  247. package/dist/esm/types/Devices/Insteon/Generated/X10.d.ts.map +1 -0
  248. package/dist/esm/types/Devices/Insteon/Generated/index.d.ts +39 -0
  249. package/dist/esm/types/Devices/Insteon/Generated/index.d.ts.map +1 -0
  250. package/dist/esm/types/Devices/Insteon/InsteonBaseDevice.d.ts +4 -10
  251. package/dist/esm/types/Devices/Insteon/InsteonBaseDevice.d.ts.map +1 -1
  252. package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts +22 -28
  253. package/dist/esm/types/Devices/Insteon/InsteonDevice.d.ts.map +1 -1
  254. package/dist/esm/types/Devices/Insteon/InsteonFanDevice.d.ts +3 -3
  255. package/dist/esm/types/Devices/Insteon/InsteonFanDevice.d.ts.map +1 -1
  256. package/dist/esm/types/Devices/Insteon/InsteonLeakSensorDevice.d.ts +1 -1
  257. package/dist/esm/types/Devices/Insteon/InsteonLeakSensorDevice.d.ts.map +1 -1
  258. package/dist/esm/types/Devices/Insteon/InsteonRelayDevice.d.ts.map +1 -1
  259. package/dist/esm/types/Devices/Insteon/KeypadButton.d.ts +19 -19
  260. package/dist/esm/types/Devices/Insteon/KeypadButton.d.ts.map +1 -1
  261. package/dist/esm/types/Devices/Insteon/index.d.ts +6 -42
  262. package/dist/esm/types/Devices/Insteon/index.d.ts.map +1 -1
  263. package/dist/esm/types/Devices/Lutron/Generated/LoadShed.d.ts +64 -0
  264. package/dist/esm/types/Devices/Lutron/Generated/LoadShed.d.ts.map +1 -0
  265. package/dist/esm/types/Devices/NodeFactory.d.ts +18 -7
  266. package/dist/esm/types/Devices/NodeFactory.d.ts.map +1 -1
  267. package/dist/esm/types/Devices/Scene/index.d.ts +2 -1
  268. package/dist/esm/types/Devices/Scene/index.d.ts.map +1 -1
  269. package/dist/esm/types/Devices/UDI/Generated/Channel.d.ts +51 -0
  270. package/dist/esm/types/Devices/UDI/Generated/Channel.d.ts.map +1 -0
  271. package/dist/esm/types/Devices/UDI/Generated/Em3MainChannel.d.ts +72 -0
  272. package/dist/esm/types/Devices/UDI/Generated/Em3MainChannel.d.ts.map +1 -0
  273. package/dist/esm/types/Devices/UDI/Generated/Main.d.ts +59 -0
  274. package/dist/esm/types/Devices/UDI/Generated/Main.d.ts.map +1 -0
  275. package/dist/esm/types/Devices/UDI/Generated/PulseCounter.d.ts +58 -0
  276. package/dist/esm/types/Devices/UDI/Generated/PulseCounter.d.ts.map +1 -0
  277. package/dist/esm/types/Devices/UDI/Generated/Relay.d.ts +64 -0
  278. package/dist/esm/types/Devices/UDI/Generated/Relay.d.ts.map +1 -0
  279. package/dist/esm/types/Devices/UDI/Generated/TemperatureSensor.d.ts +44 -0
  280. package/dist/esm/types/Devices/UDI/Generated/TemperatureSensor.d.ts.map +1 -0
  281. package/dist/esm/types/Devices/ZWave/Generated/ColorSwitch.d.ts +90 -0
  282. package/dist/esm/types/Devices/ZWave/Generated/ColorSwitch.d.ts.map +1 -0
  283. package/dist/esm/types/Devices/ZWave/Generated/DimmerSwitch.d.ts +124 -0
  284. package/dist/esm/types/Devices/ZWave/Generated/DimmerSwitch.d.ts.map +1 -0
  285. package/dist/esm/types/Devices/ZWave/Generated/index.d.ts +3 -0
  286. package/dist/esm/types/Devices/ZWave/Generated/index.d.ts.map +1 -0
  287. package/dist/esm/types/Devices/ZWave/index.d.ts.map +1 -1
  288. package/dist/esm/types/Devices/index.d.ts +7 -21
  289. package/dist/esm/types/Devices/index.d.ts.map +1 -1
  290. package/dist/esm/types/ISY.d.ts.map +1 -1
  291. package/dist/esm/types/ISYDevice.d.ts +19 -28
  292. package/dist/esm/types/ISYDevice.d.ts.map +1 -1
  293. package/dist/esm/types/ISYNode.d.ts +25 -8
  294. package/dist/esm/types/ISYNode.d.ts.map +1 -1
  295. package/dist/esm/types/ISYScene.d.ts +5 -6
  296. package/dist/esm/types/ISYScene.d.ts.map +1 -1
  297. package/dist/esm/types/Matter/Behaviors/BehaviorRegistry.d.ts +11 -0
  298. package/dist/esm/types/Matter/Behaviors/BehaviorRegistry.d.ts.map +1 -0
  299. package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts +1 -4
  300. package/dist/esm/types/Matter/Behaviors/ISYBridgedDeviceBehavior.d.ts.map +1 -1
  301. package/dist/esm/types/Matter/Behaviors/Insteon/ISYOnOffBehavior.d.ts +5 -4
  302. package/dist/esm/types/Matter/Behaviors/Insteon/ISYOnOffBehavior.d.ts.map +1 -1
  303. package/dist/esm/types/Matter/Bridge/Server.d.ts +1 -1
  304. package/dist/esm/types/Matter/Bridge/Server.d.ts.map +1 -1
  305. package/dist/esm/types/Model/ClassDefinition.d.ts +6 -2
  306. package/dist/esm/types/Model/ClassDefinition.d.ts.map +1 -1
  307. package/dist/esm/types/Model/ClusterMap.d.ts +12 -21
  308. package/dist/esm/types/Model/ClusterMap.d.ts.map +1 -1
  309. package/dist/esm/types/Model/EnumDefinition.d.ts +1 -1
  310. package/dist/esm/types/Utils.d.ts +18 -0
  311. package/dist/esm/types/Utils.d.ts.map +1 -1
  312. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  313. package/package.json +2 -2
  314. package/src/CodeGeneration/CodeFactory.ts +341 -0
  315. package/src/CodeGeneration/NodeClassFactory.ts +362 -233
  316. package/src/Converters.ts +23 -3
  317. package/src/Definitions/Global/Drivers.ts +1 -0
  318. package/src/Definitions/Global/Events.ts +3 -3
  319. package/src/Devices/Brultech/Generated/Channel.ts +8 -6
  320. package/src/Devices/Brultech/Generated/Main.ts +9 -9
  321. package/src/Devices/DeviceMap.ts +1 -1
  322. package/src/Devices/ISYDevice.ts +8 -57
  323. package/src/Devices/ISYDeviceNode.ts +143 -166
  324. package/src/Devices/Insteon/Generated/AlertModuleArmed.ts +13 -21
  325. package/src/Devices/Insteon/Generated/AlertModuleSiren.ts +18 -29
  326. package/src/Devices/Insteon/Generated/BallastRelayLampSwitch.ts +18 -29
  327. package/src/Devices/Insteon/Generated/BinaryAlarm.ts +14 -17
  328. package/src/Devices/Insteon/Generated/BinaryControl.ts +14 -17
  329. package/src/Devices/Insteon/Generated/DimmerLamp.ts +25 -51
  330. package/src/Devices/Insteon/Generated/DimmerLampSwitch.ts +36 -64
  331. package/src/Devices/Insteon/Generated/DimmerLampSwitchLed.ts +31 -60
  332. package/src/Devices/Insteon/Generated/DimmerMotorSwitch.ts +24 -47
  333. package/src/Devices/Insteon/Generated/DimmerSwitch.ts +13 -14
  334. package/src/Devices/Insteon/Generated/DoorLock.ts +11 -15
  335. package/src/Devices/Insteon/Generated/Ezio2x4Input.ts +12 -11
  336. package/src/Devices/Insteon/Generated/Ezio2x4Output.ts +12 -18
  337. package/src/Devices/Insteon/Generated/EzrainInput.ts +12 -11
  338. package/src/Devices/Insteon/Generated/EzrainOutput.ts +13 -21
  339. package/src/Devices/Insteon/Generated/FanLincMotor.ts +15 -27
  340. package/src/Devices/Insteon/Generated/I3KeypadFlags.ts +19 -39
  341. package/src/Devices/Insteon/Generated/I3PaddleFlags.ts +17 -33
  342. package/src/Devices/Insteon/Generated/ImeterSolo.ts +11 -15
  343. package/src/Devices/Insteon/Generated/IrLincTx.ts +10 -12
  344. package/src/Devices/Insteon/Generated/{KeypadButtonAdv.ts → KeypadButton.ts} +23 -26
  345. package/src/Devices/Insteon/Generated/KeypadDimmer.ts +30 -57
  346. package/src/Devices/Insteon/Generated/KeypadRelay.ts +30 -43
  347. package/src/Devices/Insteon/Generated/OnOffControl.ts +15 -12
  348. package/src/Devices/Insteon/Generated/Pir2844.ts +15 -20
  349. package/src/Devices/Insteon/Generated/Pir2844OnOff.ts +16 -23
  350. package/src/Devices/Insteon/Generated/Pir2844c.ts +15 -20
  351. package/src/Devices/Insteon/Generated/RelayLamp.ts +29 -41
  352. package/src/Devices/Insteon/Generated/RelayLampSwitch.ts +29 -42
  353. package/src/Devices/Insteon/Generated/RelayLampSwitchLed.ts +24 -39
  354. package/src/Devices/Insteon/Generated/RelaySwitch.ts +14 -17
  355. package/src/Devices/Insteon/Generated/RelaySwitchOnlyPlusQuery.ts +15 -20
  356. package/src/Devices/Insteon/Generated/RemoteLinc2.ts +12 -11
  357. package/src/Devices/Insteon/Generated/Siren.ts +18 -29
  358. package/src/Devices/Insteon/Generated/SirenAlert.ts +11 -8
  359. package/src/Devices/Insteon/Generated/TempLinc.ts +18 -36
  360. package/src/Devices/Insteon/Generated/Thermostat.ts +18 -36
  361. package/src/Devices/Insteon/Generated/X10.ts +13 -21
  362. package/src/Devices/Insteon/Generated/index.ts +38 -0
  363. package/src/Devices/Insteon/InsteonBaseDevice.ts +5 -4
  364. package/src/Devices/Insteon/InsteonFanDevice.ts +3 -4
  365. package/src/Devices/Insteon/InsteonRelayDevice.ts +1 -0
  366. package/src/Devices/Insteon/KeypadButton.ts +31 -31
  367. package/src/Devices/Insteon/index.ts +18 -26
  368. package/src/Devices/Lutron/Generated/LoadShed.ts +11 -15
  369. package/src/Devices/NCD/Generated/Relay.ts +12 -18
  370. package/src/Devices/NodeFactory.ts +67 -13
  371. package/src/Devices/Poly/Generated/MatterBridge.ts +84 -0
  372. package/src/Devices/Scene/Generated/Scene.ts +33 -65
  373. package/src/Devices/Scene/index.ts +2 -1
  374. package/src/Devices/UDI/Generated/Channel.ts +8 -6
  375. package/src/Devices/UDI/Generated/Em3MainChannel.ts +8 -6
  376. package/src/Devices/UDI/Generated/Main.ts +9 -9
  377. package/src/Devices/UDI/Generated/PulseCounter.ts +8 -6
  378. package/src/Devices/UDI/Generated/Relay.ts +11 -15
  379. package/src/Devices/UDI/Generated/TemperatureSensor.ts +8 -6
  380. package/src/Devices/ZWave/Generated/ColorSwitch.ts +16 -24
  381. package/src/Devices/ZWave/Generated/DimmerSwitch.ts +25 -49
  382. package/src/Devices/ZWave/Generated/index.ts +2 -0
  383. package/src/Devices/ZWave/index.ts +5 -1
  384. package/src/Devices/ZigBeeLegacy/Generated/Relay.ts +12 -18
  385. package/src/Devices/ZigBeeLegacy/Generated/Thermostat.ts +17 -33
  386. package/src/Devices/index.ts +17 -12
  387. package/src/ISY.ts +9 -3
  388. package/src/ISYDevice.ts +68 -57
  389. package/src/ISYNode.ts +32 -8
  390. package/src/ISYScene.ts +31 -28
  391. package/src/Matter/Behaviors/BehaviorRegistry.ts +26 -0
  392. package/src/Matter/Behaviors/Insteon/ISYOnOffBehavior.ts +6 -0
  393. package/src/Matter/Bridge/Server.ts +39 -15
  394. package/src/Matter/Mappings/Insteon.ts +37 -20
  395. package/src/Model/ClassDefinition.ts +34 -4
  396. package/src/Model/ClusterMap.ts +73 -57
  397. package/src/Model/NodeInfo.ts +1 -1
  398. package/src/Utils.ts +38 -0
  399. package/tsconfig.json +7 -1
  400. package/src/Devices/Insteon/Generated/AlertModuleSirenAdv.ts +0 -123
  401. package/src/Devices/Insteon/Generated/BallastRelayLampSwitchAdv.ts +0 -123
  402. package/src/Devices/Insteon/Generated/BinaryAlarmAdv.ts +0 -91
  403. package/src/Devices/Insteon/Generated/BinaryControlAdv.ts +0 -91
  404. package/src/Devices/Insteon/Generated/DimmerLampSwitchAdv.ts +0 -207
  405. package/src/Devices/Insteon/Generated/DimmerLampSwitchLedAdv.ts +0 -215
  406. package/src/Devices/Insteon/Generated/DimmerMotorSwitchAdv.ts +0 -191
  407. package/src/Devices/Insteon/Generated/DimmerSwitchOnlyAdv.ts +0 -73
  408. package/src/Devices/Insteon/Generated/Ezio2x4InputAdv.ts +0 -75
  409. package/src/Devices/Insteon/Generated/EzrainInputAdv.ts +0 -75
  410. package/src/Devices/Insteon/Generated/KeypadDimmerAdv.ts +0 -207
  411. package/src/Devices/Insteon/Generated/KeypadRelayAdv.ts +0 -131
  412. package/src/Devices/Insteon/Generated/OnOffControlAdv.ts +0 -65
  413. package/src/Devices/Insteon/Generated/Pir2844Adv.ts +0 -139
  414. package/src/Devices/Insteon/Generated/Pir2844OnOffAdv.ts +0 -107
  415. package/src/Devices/Insteon/Generated/Pir2844cAdv.ts +0 -139
  416. package/src/Devices/Insteon/Generated/RelayLampOnlyAdv.ts +0 -123
  417. package/src/Devices/Insteon/Generated/RelayLampSwitchAdv.ts +0 -131
  418. package/src/Devices/Insteon/Generated/RelayLampSwitchLedAdv.ts +0 -139
  419. package/src/Devices/Insteon/Generated/RelaySwitchOnlyAdv.ts +0 -81
  420. package/src/Devices/Insteon/Generated/RelaySwitchOnlyPlusQueryAdv.ts +0 -89
  421. package/src/Devices/Insteon/Generated/RemoteLinc2Adv.ts +0 -75
  422. package/src/Devices/Insteon/Generated/SirenArm.ts +0 -55
@@ -3,9 +3,10 @@ import { factory, Statement, type Declaration } from 'typescript';
3
3
  import type { Driver } from '../Definitions/Global/Drivers.js';
4
4
  import { UnitOfMeasure } from '../Definitions/Global/UOM.js';
5
5
 
6
+ import { Family } from '../Definitions/index.js';
6
7
  import { CommandDefinition, DataTypeDefinition, DriverDefinition, NodeClassDefinition, ParameterDefinition } from '../Model/ClassDefinition.js';
7
8
  import { EnumDefinitionMap } from '../Model/EnumDefinition.js';
8
- import { Family } from '../Definitions/index.js';
9
+ import { CodeFactory } from './CodeFactory.js';
9
10
 
10
11
  // #region Type aliases (1)
11
12
 
@@ -22,7 +23,7 @@ type GeneratedNodeClass<T extends Family> = {
22
23
 
23
24
  // #region Classes (1)
24
25
 
25
- export class NodeClassFactory {
26
+ export class NodeClassFactory extends CodeFactory {
26
27
  // #region Properties (2)
27
28
 
28
29
  public static _basePath: string;
@@ -38,6 +39,8 @@ export class NodeClassFactory {
38
39
  }
39
40
  });
40
41
 
42
+ static instance: NodeClassFactory = new NodeClassFactory(ts.factory);
43
+
41
44
  // #endregion Properties (2)
42
45
 
43
46
  // #region Public Static Getters And Setters (2)
@@ -55,10 +58,20 @@ export class NodeClassFactory {
55
58
  // #region Public Static Methods (4)
56
59
 
57
60
  public static buildNodeClasses<T extends Family>(map: { [x: string]: NodeClassDefinition<T> }): GeneratedNodeClass<T>[] {
58
- return Object.values(map).map((p) => this.createNodeClass(p));
61
+ return Object.values(map)
62
+ .filter((p) => !p.equivalentTo)
63
+ .map((p) => {
64
+ try {
65
+ return NodeClassFactory.instance.createNodeClass(p);
66
+ } catch (e) {
67
+ console.error(e);
68
+ }
69
+ });
59
70
  }
60
71
 
61
- public static createNodeClass<T extends Family>(nodeClassDef: NodeClassDefinition<T>) {
72
+
73
+
74
+ public createNodeClass<T extends Family>(nodeClassDef: NodeClassDefinition<T>) {
62
75
  let path = `${NodeClassFactory.basePath}/${Family[nodeClassDef.family]}/Generated/${nodeClassDef.name}.ts`;
63
76
  let sf = ts.createSourceFile(path, '', ts.ScriptTarget.ES2023, true, ts.ScriptKind.TS);
64
77
  //@ts-expect-error
@@ -82,12 +95,7 @@ export class NodeClassFactory {
82
95
  factory.createStringLiteral('../../../Model/NodeInfo.js'),
83
96
  undefined
84
97
  ),
85
- factory.createImportDeclaration(
86
- undefined,
87
- factory.createImportClause(true, undefined, factory.createNamedImports([factory.createImportSpecifier(false, undefined, factory.createIdentifier('ISY'))])),
88
- factory.createStringLiteral('../../../ISY.js'),
89
- undefined
90
- ),
98
+ NodeClassFactory.instance.createImportDeclaration('../../../ISY.js', ['ISY']),
91
99
  factory.createImportDeclaration(
92
100
  undefined,
93
101
  factory.createImportClause(true, undefined, factory.createNamedImports([factory.createImportSpecifier(false, undefined, factory.createIdentifier('ISYNode'))])),
@@ -131,7 +139,7 @@ export class NodeClassFactory {
131
139
  undefined
132
140
  ),
133
141
  factory.createVariableStatement(
134
- [factory.createToken(ts.SyntaxKind.ExportKeyword)],
142
+ undefined,
135
143
  factory.createVariableDeclarationList(
136
144
  [factory.createVariableDeclaration(factory.createIdentifier('nodeDefId'), undefined, undefined, factory.createStringLiteral(nodeClassDef.id))],
137
145
  ts.NodeFlags.Const
@@ -195,11 +203,28 @@ export class NodeClassFactory {
195
203
  undefined,
196
204
  factory.createStringLiteral(nodeClassDef.id)
197
205
  ),
206
+ NodeClassFactory.instance.createPropertyDeclaration(
207
+ 'implements',
208
+ factory.createArrayLiteralExpression(
209
+ nodeClassDef.implementedBy ?
210
+ [NodeClassFactory.instance.createStringLiteral(nodeClassDef.id)].concat(
211
+ !nodeClassDef.implements || nodeClassDef.implements.length == 0 ? [] : nodeClassDef.implements?.map((p) => factory.createStringLiteral(p))
212
+ )
213
+ : [NodeClassFactory.instance.createStringLiteral(nodeClassDef.id)]
214
+ ),
215
+ NodeClassFactory.instance.createModifiers(ts.ModifierFlags.Static | ts.ModifierFlags.Override)
216
+ ),
198
217
  factory.createPropertyDeclaration(
199
218
  [factory.createToken(ts.SyntaxKind.DeclareKeyword), factory.createToken(ts.SyntaxKind.ReadonlyKeyword)],
200
219
  factory.createIdentifier('nodeDefId'),
201
220
  undefined,
202
- factory.createLiteralTypeNode(factory.createStringLiteral(nodeClassDef.id)),
221
+ nodeClassDef.equivalents ?
222
+ NodeClassFactory.instance.createUnionTypeNode(
223
+ ...[NodeClassFactory.instance.createLiteralTypeNode(nodeClassDef.id)].concat(
224
+ !nodeClassDef.equivalents || nodeClassDef.equivalents.length == 0 ? [] : nodeClassDef.equivalents?.map((p) => factory.createLiteralTypeNode(factory.createStringLiteral(p)))
225
+ )
226
+ )
227
+ : NodeClassFactory.instance.createLiteralTypeNode(nodeClassDef.id),
203
228
  undefined
204
229
  ),
205
230
  factory.createConstructorDeclaration(
@@ -225,13 +250,13 @@ export class NodeClassFactory {
225
250
  factory.createBlock(
226
251
  [
227
252
  factory.createExpressionStatement(factory.createCallExpression(factory.createSuper(), undefined, [factory.createIdentifier('isy'), factory.createIdentifier('nodeInfo')])),
228
- ...Object.values(nodeClassDef.drivers).map(createDriverInitializationStatement)
253
+ ...Object.values(nodeClassDef.drivers).map(p => NodeClassFactory.instance.createDriverInitializationStatement(p))
229
254
  ],
230
255
  true
231
256
  )
232
257
  ),
233
- ...Object.values(nodeClassDef.commands).map(createCommandMethodDeclaration),
234
- ...Object.values(nodeClassDef.drivers).map(createDriverGetDeclaration)
258
+ ...Object.values(nodeClassDef.commands).map(p => NodeClassFactory.instance.createCommandMethodDeclaration(p)),
259
+ ...Object.values(nodeClassDef.drivers).map(p => NodeClassFactory.instance.createDriverGetDeclaration(p))
235
260
  ]
236
261
  ),
237
262
  factory.createExpressionStatement(
@@ -239,6 +264,17 @@ export class NodeClassFactory {
239
264
  factory.createIdentifier(`${nodeClassDef.name}Node`)
240
265
  ])
241
266
  ),
267
+
268
+ ...(nodeClassDef.equivalents ?
269
+ nodeClassDef.equivalents?.map((p) =>
270
+ factory.createExpressionStatement(
271
+ factory.createCallExpression(factory.createPropertyAccessExpression(factory.createIdentifier('NodeFactory'), factory.createIdentifier('register')), undefined, [
272
+ factory.createIdentifier(`${nodeClassDef.name}Node`),
273
+ factory.createStringLiteral(p)
274
+ ])
275
+ )
276
+ )
277
+ : []),
242
278
  factory.createModuleDeclaration(
243
279
  [factory.createToken(ts.SyntaxKind.ExportKeyword)],
244
280
  factory.createIdentifier(nodeClassDef.name),
@@ -250,7 +286,7 @@ export class NodeClassFactory {
250
286
  [
251
287
  factory.createHeritageClause(ts.SyntaxKind.ExtendsKeyword, [
252
288
  factory.createExpressionWithTypeArguments(factory.createIdentifier('Omit'), [
253
- factory.createTypeReferenceNode(factory.createIdentifier('InstanceType'), [factory.createTypeQueryNode(factory.createIdentifier(`${nodeClassDef.name}Node`), undefined)]),
289
+ NodeClassFactory.instance.createTypeReferenceNode('InstanceType', NodeClassFactory.instance.factory.createTypeQueryNode(factory.createIdentifier(`${nodeClassDef.name}Node`))),
254
290
  factory.createTypeOperatorNode(
255
291
  ts.SyntaxKind.KeyOfKeyword,
256
292
  factory.createTypeReferenceNode(factory.createIdentifier('ISYDeviceNode'), [
@@ -263,8 +299,22 @@ export class NodeClassFactory {
263
299
  ])
264
300
  ])
265
301
  ],
266
- [factory.createPropertySignature(undefined, factory.createIdentifier('nodeDefId'), undefined, factory.createLiteralTypeNode(factory.createStringLiteral(nodeClassDef.id)))]
302
+ [
303
+ factory.createPropertySignature(
304
+ undefined,
305
+ factory.createIdentifier('nodeDefId'),
306
+ undefined,
307
+ nodeClassDef.equivalents ?
308
+ NodeClassFactory.instance.createUnionTypeNode(
309
+ ...[NodeClassFactory.instance.createLiteralTypeNode(nodeClassDef.id)].concat(
310
+ !nodeClassDef.equivalents || nodeClassDef.equivalents.length == 0 ? [] : nodeClassDef.equivalents?.map((p) => factory.createLiteralTypeNode(factory.createStringLiteral(p)))
311
+ )
312
+ )
313
+ : NodeClassFactory.instance.createLiteralTypeNode(nodeClassDef.id)
314
+ )
315
+ ]
267
316
  ),
317
+
268
318
  factory.createFunctionDeclaration(
269
319
  [factory.createToken(ts.SyntaxKind.ExportKeyword)],
270
320
  undefined,
@@ -286,17 +336,66 @@ export class NodeClassFactory {
286
336
  )
287
337
  ],
288
338
  factory.createTypePredicateNode(undefined, factory.createIdentifier('node'), factory.createTypeReferenceNode(factory.createIdentifier(`${nodeClassDef.name}Node`), undefined)),
289
- factory.createBlock(
290
- [
291
- factory.createReturnStatement(
292
- factory.createBinaryExpression(
293
- factory.createPropertyAccessExpression(factory.createIdentifier('node'), factory.createIdentifier('nodeDefId')),
294
- factory.createToken(ts.SyntaxKind.EqualsEqualsEqualsToken),
295
- factory.createIdentifier('nodeDefId')
296
- )
339
+ NodeClassFactory.instance.createBlock(
340
+ NodeClassFactory.instance.createReturnStatement(
341
+ factory.createCallExpression(
342
+ factory.createPropertyAccessExpression(
343
+ factory.createArrayLiteralExpression(
344
+ nodeClassDef.equivalents ?
345
+ [NodeClassFactory.instance.createStringLiteral(nodeClassDef.id)].concat(
346
+ !nodeClassDef.equivalents || nodeClassDef.equivalents.length == 0 ? [] : nodeClassDef.equivalents?.map((p) => factory.createStringLiteral(p))
347
+ )
348
+ : [NodeClassFactory.instance.createStringLiteral(nodeClassDef.id)]
349
+ ),
350
+ 'includes'
351
+ ),
352
+ undefined,
353
+ [factory.createPropertyAccessExpression(factory.createIdentifier('node'), factory.createIdentifier('nodeDefId'))]
297
354
  )
298
- ],
299
- true
355
+ )
356
+ )
357
+ ),
358
+ factory.createFunctionDeclaration(
359
+ [factory.createToken(ts.SyntaxKind.ExportKeyword)],
360
+ undefined,
361
+ factory.createIdentifier('isImplementedBy'),
362
+ undefined,
363
+ [
364
+ factory.createParameterDeclaration(
365
+ undefined,
366
+ undefined,
367
+ factory.createIdentifier('node'),
368
+ undefined,
369
+ NodeClassFactory.instance.createTypeReferenceNode(
370
+ 'ISYNode',
371
+ NodeClassFactory.instance.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword),
372
+ NodeClassFactory.instance.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword),
373
+ NodeClassFactory.instance.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword),
374
+ NodeClassFactory.instance.createKeywordTypeNode(ts.SyntaxKind.AnyKeyword)
375
+ ),
376
+ undefined
377
+ )
378
+ ],
379
+ factory.createTypePredicateNode(undefined, factory.createIdentifier('node'), factory.createTypeReferenceNode(factory.createIdentifier(`${nodeClassDef.name}Node`), undefined)),
380
+ NodeClassFactory.instance.createBlock(
381
+ true,
382
+
383
+ factory.createReturnStatement(
384
+ factory.createCallExpression(
385
+ factory.createPropertyAccessExpression(
386
+ factory.createArrayLiteralExpression(
387
+ nodeClassDef.implementedBy ?
388
+ [NodeClassFactory.instance.createStringLiteral(nodeClassDef.id)].concat(
389
+ !nodeClassDef.implementedBy || nodeClassDef.implementedBy.length == 0 ? [] : nodeClassDef.implementedBy?.map((p) => factory.createStringLiteral(p))
390
+ )
391
+ : [NodeClassFactory.instance.createStringLiteral(nodeClassDef.id)]
392
+ ),
393
+ 'includes'
394
+ ),
395
+ undefined,
396
+ [factory.createPropertyAccessExpression(factory.createIdentifier('node'), factory.createIdentifier('nodeDefId'))]
397
+ )
398
+ )
300
399
  )
301
400
  ),
302
401
  factory.createFunctionDeclaration(
@@ -343,13 +442,13 @@ export class NodeClassFactory {
343
442
  [factory.createToken(ts.SyntaxKind.ExportKeyword)],
344
443
  factory.createIdentifier('Commands'),
345
444
  undefined,
346
- factory.createTypeLiteralNode([...Object.values(nodeClassDef.commands).map(createCommandSignature)])
445
+ factory.createTypeLiteralNode([...Object.values(nodeClassDef.commands).map(NodeClassFactory.instance.createCommandSignature)])
347
446
  ),
348
447
  factory.createTypeAliasDeclaration(
349
448
  [factory.createToken(ts.SyntaxKind.ExportKeyword)],
350
449
  factory.createIdentifier('Drivers'),
351
450
  undefined,
352
- factory.createTypeLiteralNode([...Object.values(nodeClassDef.drivers).map(createDriverSignature)])
451
+ factory.createTypeLiteralNode([...Object.values(nodeClassDef.drivers).map(NodeClassFactory.instance.createDriverSignature)])
353
452
  )
354
453
  ]),
355
454
  ts.NodeFlags.Namespace
@@ -396,164 +495,237 @@ export class NodeClassFactory {
396
495
  let modules = [];
397
496
  for (const family of NodeClassDefinition.Map.keys()) {
398
497
  var t = this.generateClassesForFamily(family);
399
- modules.push(buildClassIndex(family, t));
498
+ modules.push(NodeClassFactory.buildClassIndex(family, t));
400
499
  }
401
500
  return modules;
402
501
  }
403
502
 
404
503
  public static generateClassesForFamily<T extends Family>(family: T): GeneratedNodeClass<T>[] {
405
- return this.buildNodeClasses<T>(NodeClassDefinition.Map.get(family) as { [x: string]: NodeClassDefinition<T> });
504
+ return NodeClassFactory.buildNodeClasses<T>(NodeClassDefinition.Map.get(family) as { [x: string]: NodeClassDefinition<T> });
406
505
  }
407
506
 
408
- // #endregion Public Static Methods (4)
409
- }
507
+ // #region Functions (12)
410
508
 
411
- // #endregion Classes (1)
509
+ static buildClassIndex<T extends Family>(family: T, classes: GeneratedNodeClass<T>[]) {
510
+ return {
511
+ family,
512
+ path: `/${Family[family]}/Generated/index.ts`,
513
+ statements: [...classes.map((p) => factory.createExportDeclaration(undefined, false, undefined, factory.createStringLiteral(`./${p.name}.js`), undefined))]
514
+ };
515
+ }
412
516
 
413
- // #region Functions (12)
517
+ createCommandArguments(def: CommandDefinition)
518
+ {
519
+ let c = [
520
+ factory.createStringLiteral(def.id)];
521
+ let n = [];
522
+ let r = [];
414
523
 
415
- function buildClassIndex<T extends Family>(family: T, classes: GeneratedNodeClass<T>[]) {
416
- return {
417
- family,
418
- path: `/${Family[family]}/Generated/index.ts`,
419
- statements: [...classes.map((p) => factory.createExportDeclaration(undefined, false, undefined, factory.createStringLiteral(`./${p.name}.js`), undefined))]
420
- };
421
- }
524
+ if(def.parameters)
525
+ {
526
+ for(let p in def.parameters)
527
+ {
528
+ let p2 = def.parameters[p];
529
+ if(!p2?.id || p2.id == 'value')
530
+ {
531
+ n.push(factory.createIdentifier(p2.name ?? 'value'))
532
+ }
533
+ else
534
+ {
535
+ r.push(p2);
536
+ }
537
+ }
538
+ }
539
+ let fnl = [...c,...n,
422
540
 
423
- function createCommandMethodDeclaration(def: CommandDefinition) {
424
- return factory.createMethodDeclaration(
425
- [factory.createToken(ts.SyntaxKind.AsyncKeyword)],
426
- undefined,
427
- factory.createIdentifier(def.name),
428
- undefined,
429
- undefined,
430
-
431
- def.parameters ? Object.values(def.parameters).map(createParameterDeclarationSignature) : undefined,
432
- undefined,
433
- factory.createBlock(
434
- [
435
- factory.createReturnStatement(
436
- factory.createCallExpression(factory.createPropertyAccessExpression(factory.createThis(), factory.createIdentifier('sendCommand')), undefined, [
437
- factory.createStringLiteral(def.id),
438
- ...(def.parameters ?
439
- [
440
- factory.createObjectLiteralExpression(
441
- [...Object.values(def.parameters).map((p) => factory.createPropertyAssignment(factory.createIdentifier(p.id ?? 'value'), factory.createIdentifier(p.name ?? 'value')))],
442
- false
443
- )
444
- ]
445
- : [])
446
- ])
447
- )
448
- ],
449
- true
450
- )
451
- );
452
- }
453
541
 
454
- function createCommandParameterType(def: DataTypeDefinition, parent: ParameterDefinition): ts.TypeNode {
455
- if (def.enum) {
456
- {
457
- if (EnumDefinitionMap.has(parent.classDef.family)) {
458
- var enumDef = EnumDefinitionMap.get(parent.classDef.family)[def.indexId];
542
+ ...(r.length > 0 ? [factory.createObjectLiteralExpression(
543
+ r.map((q) => factory.createPropertyAssignment(factory.createIdentifier(q.id ?? 'value'), factory.createIdentifier(q.name ?? 'value'))),
544
+ false
545
+ )] : [])
459
546
 
460
- // ?? EnumDefinitionMap[Family.Global]?[def.indexId]
461
- if (enumDef) {
462
- return factory.createTypeReferenceNode(factory.createQualifiedName(factory.createIdentifier(Family[parent.classDef.family]), factory.createIdentifier(enumDef.name)), undefined);
547
+
548
+ ];
549
+ return fnl.length > 0 ? fnl : undefined;
550
+ }
551
+
552
+ createCommandMethodDeclaration(def: CommandDefinition) {
553
+ return factory.createMethodDeclaration(
554
+ [factory.createToken(ts.SyntaxKind.AsyncKeyword)],
555
+ undefined,
556
+ factory.createIdentifier(def.name),
557
+ undefined,
558
+ undefined,
559
+
560
+ def.parameters ? Object.values(def.parameters).map(NodeClassFactory.instance.createParameterDeclarationSignature.bind(this)) : undefined,
561
+ undefined,
562
+ factory.createBlock(
563
+ [factory.createReturnStatement(
564
+ factory.createCallExpression(factory.createPropertyAccessExpression(factory.createThis(), factory.createIdentifier('sendCommand')), undefined,NodeClassFactory.instance.createCommandArguments(def))
565
+ )]
566
+ )
567
+ );
568
+ }
569
+
570
+ createCommandParameterType(def: DataTypeDefinition, parent: ParameterDefinition): ts.TypeNode {
571
+ if (def.enum) {
572
+ {
573
+ if (EnumDefinitionMap.has(parent.classDef.family)) {
574
+ var enumDef = EnumDefinitionMap.get(parent.classDef.family)[def.indexId];
575
+
576
+ // ?? EnumDefinitionMap[Family.Global]?[def.indexId]
577
+ if (enumDef) {
578
+ return factory.createTypeReferenceNode(factory.createQualifiedName(factory.createIdentifier(Family[parent.classDef.family]), factory.createIdentifier(enumDef.name)), undefined);
579
+ }
463
580
  }
464
- }
465
581
 
466
- if (def.values) {
467
- return factory.createUnionTypeNode(Object.keys(def.values).map((p) => factory.createLiteralTypeNode(factory.createNumericLiteral(p))));
468
- }
582
+ if (def.values) {
583
+ return NodeClassFactory.instance.createUnionTypeNode(...Object.keys(def.values).map((p) => factory.createLiteralTypeNode(factory.createNumericLiteral(p))));
584
+ }
469
585
 
470
- // return factory.createUnionTypeNode(
471
- // Object.values(def.values).map((p) => factory.createTypeReferenceNode(
472
- // factory.createQualifiedName(
473
- // factory.createIdentifier("UnitOfMeasure"),
474
- // factory.createIdentifier(UnitOfMeasure)
475
- // ),
476
- // undefined
477
- // )))
586
+ // return NodeClassFactory.instance.createUnionTypeNode(...
587
+ // Object.values(def.values).map((p) => factory.createTypeReferenceNode(
588
+ // factory.createQualifiedName(
589
+ // factory.createIdentifier("UnitOfMeasure"),
590
+ // factory.createIdentifier(UnitOfMeasure)
591
+ // ),
592
+ // undefined
593
+ // )))
594
+ }
478
595
  }
596
+ return factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword);
479
597
  }
480
- return factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword);
481
- }
482
598
 
483
- function createCommandSignature(def: CommandDefinition) {
484
- return factory.createPropertySignature(
485
- undefined,
486
- factory.createIdentifier(def.id),
487
- undefined,
488
- factory.createIntersectionTypeNode([
489
- factory.createParenthesizedType(
490
- factory.createFunctionTypeNode(
491
- undefined,
492
- def.parameters ? Object.values(def.parameters).map(createParameterSignature) : [],
599
+ createCommandSignature(def: CommandDefinition) {
600
+ const that = this;
601
+ return factory.createPropertySignature(
602
+ undefined,
603
+ factory.createIdentifier(def.id),
604
+ undefined,
605
+ factory.createIntersectionTypeNode([
606
+ factory.createParenthesizedType(
607
+ factory.createFunctionTypeNode(
608
+ undefined,
609
+ def.parameters ? Object.values(def.parameters).map(p => NodeClassFactory.instance.createParameterSignature(p)) : [],
493
610
 
494
- factory.createTypeReferenceNode(factory.createIdentifier('Promise'), [factory.createKeywordTypeNode(ts.SyntaxKind.BooleanKeyword)])
495
- )
496
- ),
497
- factory.createTypeLiteralNode([
498
- factory.createPropertySignature(undefined, factory.createIdentifier('label'), undefined, factory.createLiteralTypeNode(factory.createStringLiteral(def.label))),
499
- factory.createPropertySignature(undefined, factory.createIdentifier('name'), undefined, factory.createLiteralTypeNode(factory.createStringLiteral(def.name)))
611
+ factory.createTypeReferenceNode(factory.createIdentifier('Promise'), [factory.createKeywordTypeNode(ts.SyntaxKind.BooleanKeyword)])
612
+ )
613
+ ),
614
+ factory.createTypeLiteralNode([
615
+ factory.createPropertySignature(undefined, factory.createIdentifier('label'), undefined, factory.createLiteralTypeNode(factory.createStringLiteral(def.label))),
616
+ factory.createPropertySignature(undefined, factory.createIdentifier('name'), undefined, factory.createLiteralTypeNode(factory.createStringLiteral(def.name)))
617
+ ])
500
618
  ])
501
- ])
502
- );
503
- }
619
+ );
620
+ }
504
621
 
505
- function createDriverGetDeclaration(def: DriverDefinition) {
506
- return factory.createGetAccessorDeclaration(
507
- [factory.createToken(ts.SyntaxKind.PublicKeyword)],
508
- factory.createIdentifier(def.name),
509
- [],
510
- factory.createUnionTypeNode(Object.values(def.dataType).map((p) => createDriverPropertyReturnType(p, def))),
511
- factory.createBlock(
512
- [
513
- factory.createReturnStatement(
514
- factory.createPropertyAccessChain(
515
- factory.createPropertyAccessExpression(factory.createPropertyAccessExpression(factory.createThis(), factory.createIdentifier('drivers')), factory.createIdentifier(def.id)),
516
- factory.createToken(ts.SyntaxKind.QuestionDotToken),
517
- factory.createIdentifier('value')
622
+ createDriverGetDeclaration(def: DriverDefinition) {
623
+ return factory.createGetAccessorDeclaration(
624
+ [factory.createToken(ts.SyntaxKind.PublicKeyword)],
625
+ factory.createIdentifier(def.name),
626
+ [],
627
+ NodeClassFactory.instance.createUnionTypeNode(...Object.values(def.dataType).map((p) => NodeClassFactory.instance.createDriverPropertyReturnType(p, def))),
628
+ factory.createBlock(
629
+ [
630
+ factory.createReturnStatement(
631
+ factory.createPropertyAccessChain(
632
+ factory.createPropertyAccessExpression(factory.createPropertyAccessExpression(factory.createThis(), factory.createIdentifier('drivers')), factory.createIdentifier(def.id)),
633
+ factory.createToken(ts.SyntaxKind.QuestionDotToken),
634
+ factory.createIdentifier('value')
635
+ )
518
636
  )
519
- )
520
- ],
521
- true
522
- )
523
- );
524
- }
637
+ ],
638
+ true
639
+ )
640
+ );
641
+ }
642
+
643
+ createDriverInitializationStatement(def: DriverDefinition): ts.Statement {
644
+ return factory.createExpressionStatement(
645
+ factory.createBinaryExpression(
646
+ factory.createPropertyAccessExpression(factory.createPropertyAccessExpression(factory.createThis(), factory.createIdentifier('drivers')), factory.createIdentifier(def.id)),
647
+ factory.createToken(ts.SyntaxKind.EqualsToken),
648
+ factory.createCallExpression(factory.createPropertyAccessExpression(factory.createIdentifier('Driver'), factory.createIdentifier('create')), undefined, [
649
+ factory.createStringLiteral(def.id),
650
+ factory.createThis(),
651
+ factory.createAsExpression(
652
+ factory.createPropertyAccessExpression(factory.createIdentifier('nodeInfo'), factory.createIdentifier('property')),
653
+ factory.createTypeReferenceNode(factory.createIdentifier('DriverState'), undefined)
654
+ ),
655
+ factory.createObjectLiteralExpression(
656
+ [
657
+ factory.createPropertyAssignment(
658
+ factory.createIdentifier('uom'),
659
+ factory.createPropertyAccessExpression(factory.createIdentifier('UnitOfMeasure'), factory.createIdentifier(UnitOfMeasure[parseInt(Object.keys(def.dataType)[0])] ?? 'Unknown'))
660
+ ),
661
+ factory.createPropertyAssignment(factory.createIdentifier('label'), factory.createStringLiteral(def.label)),
662
+ factory.createPropertyAssignment(factory.createIdentifier('name'), factory.createStringLiteral(def.name))
663
+ ],
664
+ false
665
+ )
666
+ ])
667
+ )
668
+ );
669
+ }
670
+
671
+ createDriverPropertyReturnType(def: DataTypeDefinition, parent: DriverDefinition): ts.TypeNode {
672
+ if (def.enum) {
673
+ {
674
+ if (EnumDefinitionMap.has(parent.classDef.family)) {
675
+ var enumDef = EnumDefinitionMap.get(parent.classDef.family)[def.indexId];
676
+
677
+ // ?? EnumDefinitionMap[Family.Global]?[def.indexId]
678
+ if (enumDef) {
679
+ return factory.createTypeReferenceNode(factory.createQualifiedName(factory.createIdentifier(Family[parent.classDef.family]), factory.createIdentifier(enumDef.name)), undefined);
680
+ }
681
+ }
682
+ if (def.values) {
683
+ return NodeClassFactory.instance.createUnionTypeNode(...Object.keys(def.values).map((p) => factory.createLiteralTypeNode(factory.createNumericLiteral(p))));
684
+ }
685
+
686
+ // return NodeClassFactory.instance.createUnionTypeNode(...
687
+ // Object.values(def.values).map((p) => factory.createTypeReferenceNode(
688
+ // factory.createQualifiedName(
689
+ // factory.createIdentifier("UnitOfMeasure"),
690
+ // factory.createIdentifier(UnitOfMeasure)
691
+ // ),
692
+ // undefined
693
+ // )))
694
+ }
695
+ }
696
+ return factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword);
697
+ }
525
698
 
526
- function createDriverInitializationStatement(def: DriverDefinition): ts.Statement {
527
- return factory.createExpressionStatement(
528
- factory.createBinaryExpression(
529
- factory.createPropertyAccessExpression(factory.createPropertyAccessExpression(factory.createThis(), factory.createIdentifier('drivers')), factory.createIdentifier(def.id)),
530
- factory.createToken(ts.SyntaxKind.EqualsToken),
531
- factory.createCallExpression(factory.createPropertyAccessExpression(factory.createIdentifier('Driver'), factory.createIdentifier('create')), undefined, [
532
- factory.createStringLiteral(def.id),
533
- factory.createThis(),
534
- factory.createAsExpression(
535
- factory.createPropertyAccessExpression(factory.createIdentifier('nodeInfo'), factory.createIdentifier('property')),
536
- factory.createTypeReferenceNode(factory.createIdentifier('DriverState'), undefined)
699
+ createDriverSignature(def: DriverDefinition) {
700
+ return factory.createPropertySignature(
701
+ undefined,
702
+ factory.createIdentifier(def.id),
703
+ undefined,
704
+ factory.createTypeLiteralNode([
705
+ factory.createPropertySignature(
706
+ undefined,
707
+ factory.createIdentifier('uom'),
708
+ undefined,
709
+ def.dataType ?
710
+ NodeClassFactory.instance.createUnionTypeNode(...Object.values(def.dataType).map((p) => NodeClassFactory.instance.createTypeNodeForUOM(p.uom)))
711
+ : factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword)
537
712
  ),
538
- factory.createObjectLiteralExpression(
539
- [
540
- factory.createPropertyAssignment(
541
- factory.createIdentifier('uom'),
542
- factory.createPropertyAccessExpression(factory.createIdentifier('UnitOfMeasure'), factory.createIdentifier(UnitOfMeasure[parseInt(Object.keys(def.dataType)[0])] ?? 'Unknown'))
543
- ),
544
- factory.createPropertyAssignment(factory.createIdentifier('label'), factory.createStringLiteral(def.label)),
545
- factory.createPropertyAssignment(factory.createIdentifier('name'), factory.createStringLiteral(def.name))
546
- ],
547
- false
548
- )
713
+ factory.createPropertySignature(
714
+ undefined,
715
+ factory.createIdentifier('value'),
716
+ undefined,
717
+ def.dataType ?
718
+ NodeClassFactory.instance.createUnionTypeNode(...Object.values(def.dataType).map((p) => NodeClassFactory.instance.createDriverSignatureReturnType(p, def)))
719
+ : factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword)
720
+ ),
721
+ factory.createPropertySignature(undefined, factory.createIdentifier('label'), undefined, factory.createLiteralTypeNode(factory.createStringLiteral(def.label))),
722
+ factory.createPropertySignature(undefined, factory.createIdentifier('name'), undefined, factory.createLiteralTypeNode(factory.createStringLiteral(def.name)))
549
723
  ])
550
- )
551
- );
552
- }
724
+ );
725
+ }
553
726
 
554
- function createDriverPropertyReturnType(def: DataTypeDefinition, parent: DriverDefinition): ts.TypeNode {
555
- if (def.enum) {
556
- {
727
+ createDriverSignatureReturnType(def: DataTypeDefinition, parent: DriverDefinition): ts.TypeNode {
728
+ if (def.enum) {
557
729
  if (EnumDefinitionMap.has(parent.classDef.family)) {
558
730
  var enumDef = EnumDefinitionMap.get(parent.classDef.family)[def.indexId];
559
731
 
@@ -563,87 +735,44 @@ function createDriverPropertyReturnType(def: DataTypeDefinition, parent: DriverD
563
735
  }
564
736
  }
565
737
  if (def.values) {
566
- return factory.createUnionTypeNode(Object.keys(def.values).map((p) => factory.createLiteralTypeNode(factory.createNumericLiteral(p))));
738
+ return NodeClassFactory.instance.createUnionTypeNode(...Object.keys(def.values).map((p) => factory.createLiteralTypeNode(factory.createNumericLiteral(p))));
567
739
  }
568
-
569
- // return factory.createUnionTypeNode(
570
- // Object.values(def.values).map((p) => factory.createTypeReferenceNode(
571
- // factory.createQualifiedName(
572
- // factory.createIdentifier("UnitOfMeasure"),
573
- // factory.createIdentifier(UnitOfMeasure)
574
- // ),
575
- // undefined
576
- // )))
577
740
  }
741
+ return factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword);
578
742
  }
579
- return factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword);
580
- }
581
743
 
582
- function createDriverSignature(def: DriverDefinition) {
583
- return factory.createPropertySignature(
584
- undefined,
585
- factory.createIdentifier(def.id),
586
- undefined,
587
- factory.createTypeLiteralNode([
588
- factory.createPropertySignature(
589
- undefined,
590
- factory.createIdentifier('uom'),
591
- undefined,
592
- def.dataType ? factory.createUnionTypeNode(Object.values(def.dataType).map((p) => createTypeNodeForUOM(p.uom))) : factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword)
593
- ),
594
- factory.createPropertySignature(
595
- undefined,
596
- factory.createIdentifier('value'),
597
- undefined,
598
- def.dataType ? factory.createUnionTypeNode(Object.values(def.dataType).map((p) => createDriverSignatureReturnType(p, def))) : factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword)
599
- ),
600
- factory.createPropertySignature(undefined, factory.createIdentifier('label'), undefined, factory.createLiteralTypeNode(factory.createStringLiteral(def.label))),
601
- factory.createPropertySignature(undefined, factory.createIdentifier('name'), undefined, factory.createLiteralTypeNode(factory.createStringLiteral(def.name)))
602
- ])
603
- );
604
- }
605
-
606
- function createDriverSignatureReturnType(def: DataTypeDefinition, parent: DriverDefinition): ts.TypeNode {
607
- if (def.enum) {
608
- if (EnumDefinitionMap.has(parent.classDef.family)) {
609
- var enumDef = EnumDefinitionMap.get(parent.classDef.family)[def.indexId];
610
-
611
- // ?? EnumDefinitionMap[Family.Global]?[def.indexId]
612
- if (enumDef) {
613
- return factory.createTypeReferenceNode(factory.createQualifiedName(factory.createIdentifier(Family[parent.classDef.family]), factory.createIdentifier(enumDef.name)), undefined);
614
- }
615
- }
616
- if (def.values) {
617
- return factory.createUnionTypeNode(Object.keys(def.values).map((p) => factory.createLiteralTypeNode(factory.createNumericLiteral(p))));
618
- }
744
+ createParameterDeclarationSignature(def: ParameterDefinition) {
745
+ return factory.createParameterDeclaration(
746
+ undefined,
747
+ undefined,
748
+ factory.createIdentifier(def.name ?? 'value'),
749
+ def.optional ? factory.createToken(ts.SyntaxKind.QuestionToken) : undefined,
750
+ def.dataType ?
751
+ NodeClassFactory.instance.createUnionTypeNode(...Object.values(def.dataType).map((p) => NodeClassFactory.instance.createCommandParameterType(p, def)))
752
+ : factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword),
753
+ undefined
754
+ );
619
755
  }
620
- return factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword);
621
- }
622
756
 
623
- function createParameterDeclarationSignature(def: ParameterDefinition) {
624
- return factory.createParameterDeclaration(
625
- undefined,
626
- undefined,
627
- factory.createIdentifier(def.name ?? 'value'),
628
- def.optional ? factory.createToken(ts.SyntaxKind.QuestionToken) : undefined,
629
- def.dataType ? factory.createUnionTypeNode(Object.values(def.dataType).map((p) => createCommandParameterType(p, def))) : factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword),
630
- undefined
631
- );
632
- }
757
+ createParameterSignature(def: ParameterDefinition) {
758
+ return factory.createParameterDeclaration(
759
+ undefined,
760
+ undefined,
761
+ factory.createIdentifier(def.id ?? 'value'),
762
+ def.optional ? factory.createToken(ts.SyntaxKind.QuestionToken) : undefined,
763
+ def.dataType ?
764
+ NodeClassFactory.instance.createUnionTypeNode(...Object.values(def.dataType).map((p) => NodeClassFactory.instance.createCommandParameterType(p, def)))
765
+ : factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword),
766
+ undefined
767
+ );
768
+ }
633
769
 
634
- function createParameterSignature(def: ParameterDefinition) {
635
- return factory.createParameterDeclaration(
636
- undefined,
637
- undefined,
638
- factory.createIdentifier(def.id ?? 'value'),
639
- def.optional ? factory.createToken(ts.SyntaxKind.QuestionToken) : undefined,
640
- def.dataType ? factory.createUnionTypeNode(Object.values(def.dataType).map((p) => createCommandParameterType(p, def))) : factory.createKeywordTypeNode(ts.SyntaxKind.NumberKeyword),
641
- undefined
642
- );
643
- }
770
+ createTypeNodeForUOM(uom: number): ts.TypeNode {
771
+ return NodeClassFactory.instance.createTypeReferenceNode(UnitOfMeasure[uom] ?? 'Unknown', 'UnitOfMeasure');
772
+ }
644
773
 
645
- function createTypeNodeForUOM(uom: number): ts.TypeNode {
646
- return factory.createTypeReferenceNode(factory.createQualifiedName(factory.createIdentifier('UnitOfMeasure'), factory.createIdentifier(UnitOfMeasure[uom] ?? 'Unknown')));
774
+ // #endregion Public Static Methods (4)
647
775
  }
648
776
 
777
+ // #endregion Classes (1)
649
778
  // #endregion Functions (12)