iobroker.iot 3.6.0 → 4.0.2

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 (254) hide show
  1. package/README.md +8 -4
  2. package/admin/assets/index-5zouxn2w.js +680 -0
  3. package/admin/index_m.html +1 -1
  4. package/admin/rules/assets/{index-BRdNnGcA.js → index-DwYdaT5M.js} +80 -81
  5. package/admin/rules/customRuleBlocks.js +2 -2
  6. package/{lib → build-backend/lib}/AlexaSmartHomeV3/Alexa/AlexaResponse.js +101 -95
  7. package/build-backend/lib/AlexaSmartHomeV3/Alexa/AlexaResponse.js.map +1 -0
  8. package/{lib → build-backend/lib}/AlexaSmartHomeV3/Alexa/Capabilities/Base.js +22 -36
  9. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/Base.js.map +1 -0
  10. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/BrightnessController.js +19 -0
  11. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/BrightnessController.js.map +1 -0
  12. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/ColorController.js +14 -0
  13. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/ColorController.js.map +1 -0
  14. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/ColorTemperatureController.js +19 -0
  15. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/ColorTemperatureController.js.map +1 -0
  16. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/ContactSensor.js +16 -0
  17. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/ContactSensor.js.map +1 -0
  18. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/LockController.js +14 -0
  19. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/LockController.js.map +1 -0
  20. package/{lib → build-backend/lib}/AlexaSmartHomeV3/Alexa/Capabilities/ModeController.js +27 -28
  21. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/ModeController.js.map +1 -0
  22. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/MotionSensor.js +14 -0
  23. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/MotionSensor.js.map +1 -0
  24. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/PercentageController.js +14 -0
  25. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/PercentageController.js.map +1 -0
  26. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/PowerController.js +19 -0
  27. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/PowerController.js.map +1 -0
  28. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/Speaker.js +25 -0
  29. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/Speaker.js.map +1 -0
  30. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/TemperatureSensor.js +14 -0
  31. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/TemperatureSensor.js.map +1 -0
  32. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/ThermostatController.js +37 -0
  33. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/ThermostatController.js.map +1 -0
  34. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/index.js +32 -0
  35. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Capabilities/index.js.map +1 -0
  36. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Directives/Base.js +29 -0
  37. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Directives/Base.js.map +1 -0
  38. package/{lib → build-backend/lib}/AlexaSmartHomeV3/Alexa/Directives/ChangeReport.js +34 -27
  39. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Directives/ChangeReport.js.map +1 -0
  40. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Directives/Discovery.js +39 -0
  41. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Directives/Discovery.js.map +1 -0
  42. package/{lib → build-backend/lib}/AlexaSmartHomeV3/Alexa/Directives/ReportState.js +19 -22
  43. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Directives/ReportState.js.map +1 -0
  44. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Directives/index.js +14 -0
  45. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Directives/index.js.map +1 -0
  46. package/build-backend/lib/AlexaSmartHomeV3/Alexa/ModeValues/Base.js +36 -0
  47. package/build-backend/lib/AlexaSmartHomeV3/Alexa/ModeValues/Base.js.map +1 -0
  48. package/build-backend/lib/AlexaSmartHomeV3/Alexa/ModeValues/Closed.js +57 -0
  49. package/build-backend/lib/AlexaSmartHomeV3/Alexa/ModeValues/Closed.js.map +1 -0
  50. package/build-backend/lib/AlexaSmartHomeV3/Alexa/ModeValues/Open.js +57 -0
  51. package/build-backend/lib/AlexaSmartHomeV3/Alexa/ModeValues/Open.js.map +1 -0
  52. package/build-backend/lib/AlexaSmartHomeV3/Alexa/ModeValues/index.js +12 -0
  53. package/build-backend/lib/AlexaSmartHomeV3/Alexa/ModeValues/index.js.map +1 -0
  54. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/AdjustableProperty.js +16 -0
  55. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/AdjustableProperty.js.map +1 -0
  56. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Base.js +127 -0
  57. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Base.js.map +1 -0
  58. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Brightness.js +18 -0
  59. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Brightness.js.map +1 -0
  60. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Color.js +38 -0
  61. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Color.js.map +1 -0
  62. package/{lib → build-backend/lib}/AlexaSmartHomeV3/Alexa/Properties/ColorTemperatureInKelvin.js +20 -29
  63. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/ColorTemperatureInKelvin.js.map +1 -0
  64. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/DetectionState.js +23 -0
  65. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/DetectionState.js.map +1 -0
  66. package/{lib → build-backend/lib}/AlexaSmartHomeV3/Alexa/Properties/LockState.js +9 -12
  67. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/LockState.js.map +1 -0
  68. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Mode.js +34 -0
  69. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Mode.js.map +1 -0
  70. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Muted.js +19 -0
  71. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Muted.js.map +1 -0
  72. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Percentage.js +18 -0
  73. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Percentage.js.map +1 -0
  74. package/{lib → build-backend/lib}/AlexaSmartHomeV3/Alexa/Properties/PowerState.js +9 -9
  75. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/PowerState.js.map +1 -0
  76. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/TargetSetpoint.js +31 -0
  77. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/TargetSetpoint.js.map +1 -0
  78. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Temperature.js +22 -0
  79. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Temperature.js.map +1 -0
  80. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/ThermostatMode.js +49 -0
  81. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/ThermostatMode.js.map +1 -0
  82. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Volume.js +21 -0
  83. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/Volume.js.map +1 -0
  84. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/index.js +38 -0
  85. package/build-backend/lib/AlexaSmartHomeV3/Alexa/Properties/index.js.map +1 -0
  86. package/build-backend/lib/AlexaSmartHomeV3/Controls/AdjustableControl.js +20 -0
  87. package/build-backend/lib/AlexaSmartHomeV3/Controls/AdjustableControl.js.map +1 -0
  88. package/build-backend/lib/AlexaSmartHomeV3/Controls/AdjustablePercentageControl.js +26 -0
  89. package/build-backend/lib/AlexaSmartHomeV3/Controls/AdjustablePercentageControl.js.map +1 -0
  90. package/build-backend/lib/AlexaSmartHomeV3/Controls/AirCondition.js +148 -0
  91. package/build-backend/lib/AlexaSmartHomeV3/Controls/AirCondition.js.map +1 -0
  92. package/build-backend/lib/AlexaSmartHomeV3/Controls/Blind.js +13 -0
  93. package/build-backend/lib/AlexaSmartHomeV3/Controls/Blind.js.map +1 -0
  94. package/build-backend/lib/AlexaSmartHomeV3/Controls/ContactSensor.js +17 -0
  95. package/build-backend/lib/AlexaSmartHomeV3/Controls/ContactSensor.js.map +1 -0
  96. package/{lib → build-backend/lib}/AlexaSmartHomeV3/Controls/Control.js +73 -104
  97. package/build-backend/lib/AlexaSmartHomeV3/Controls/Control.js.map +1 -0
  98. package/build-backend/lib/AlexaSmartHomeV3/Controls/Ct.js +182 -0
  99. package/build-backend/lib/AlexaSmartHomeV3/Controls/Ct.js.map +1 -0
  100. package/build-backend/lib/AlexaSmartHomeV3/Controls/Dimmer.js +127 -0
  101. package/build-backend/lib/AlexaSmartHomeV3/Controls/Dimmer.js.map +1 -0
  102. package/build-backend/lib/AlexaSmartHomeV3/Controls/Door.js +10 -0
  103. package/build-backend/lib/AlexaSmartHomeV3/Controls/Door.js.map +1 -0
  104. package/build-backend/lib/AlexaSmartHomeV3/Controls/Gate.js +38 -0
  105. package/build-backend/lib/AlexaSmartHomeV3/Controls/Gate.js.map +1 -0
  106. package/build-backend/lib/AlexaSmartHomeV3/Controls/Hue.js +208 -0
  107. package/build-backend/lib/AlexaSmartHomeV3/Controls/Hue.js.map +1 -0
  108. package/{lib → build-backend/lib}/AlexaSmartHomeV3/Controls/Light.js +15 -22
  109. package/build-backend/lib/AlexaSmartHomeV3/Controls/Light.js.map +1 -0
  110. package/build-backend/lib/AlexaSmartHomeV3/Controls/Lock.js +35 -0
  111. package/build-backend/lib/AlexaSmartHomeV3/Controls/Lock.js.map +1 -0
  112. package/build-backend/lib/AlexaSmartHomeV3/Controls/Motion.js +17 -0
  113. package/build-backend/lib/AlexaSmartHomeV3/Controls/Motion.js.map +1 -0
  114. package/build-backend/lib/AlexaSmartHomeV3/Controls/ReadOnlyDetector.js +26 -0
  115. package/build-backend/lib/AlexaSmartHomeV3/Controls/ReadOnlyDetector.js.map +1 -0
  116. package/build-backend/lib/AlexaSmartHomeV3/Controls/Slider.js +10 -0
  117. package/build-backend/lib/AlexaSmartHomeV3/Controls/Slider.js.map +1 -0
  118. package/build-backend/lib/AlexaSmartHomeV3/Controls/Socket.js +21 -0
  119. package/build-backend/lib/AlexaSmartHomeV3/Controls/Socket.js.map +1 -0
  120. package/build-backend/lib/AlexaSmartHomeV3/Controls/Temperature.js +21 -0
  121. package/build-backend/lib/AlexaSmartHomeV3/Controls/Temperature.js.map +1 -0
  122. package/build-backend/lib/AlexaSmartHomeV3/Controls/Thermostat.js +85 -0
  123. package/build-backend/lib/AlexaSmartHomeV3/Controls/Thermostat.js.map +1 -0
  124. package/build-backend/lib/AlexaSmartHomeV3/Controls/VacuumCleaner.js +27 -0
  125. package/build-backend/lib/AlexaSmartHomeV3/Controls/VacuumCleaner.js.map +1 -0
  126. package/build-backend/lib/AlexaSmartHomeV3/Controls/Volume.js +116 -0
  127. package/build-backend/lib/AlexaSmartHomeV3/Controls/Volume.js.map +1 -0
  128. package/build-backend/lib/AlexaSmartHomeV3/Controls/VolumeGroup.js +10 -0
  129. package/build-backend/lib/AlexaSmartHomeV3/Controls/VolumeGroup.js.map +1 -0
  130. package/build-backend/lib/AlexaSmartHomeV3/Controls/Window.js +10 -0
  131. package/build-backend/lib/AlexaSmartHomeV3/Controls/Window.js.map +1 -0
  132. package/build-backend/lib/AlexaSmartHomeV3/Controls/index.js +121 -0
  133. package/build-backend/lib/AlexaSmartHomeV3/Controls/index.js.map +1 -0
  134. package/{lib → build-backend/lib}/AlexaSmartHomeV3/Device.js +29 -30
  135. package/build-backend/lib/AlexaSmartHomeV3/Device.js.map +1 -0
  136. package/build-backend/lib/AlexaSmartHomeV3/DeviceManager.js +392 -0
  137. package/build-backend/lib/AlexaSmartHomeV3/DeviceManager.js.map +1 -0
  138. package/build-backend/lib/AlexaSmartHomeV3/Exceptions/AlexaV3Exception.js +10 -0
  139. package/build-backend/lib/AlexaSmartHomeV3/Exceptions/AlexaV3Exception.js.map +1 -0
  140. package/build-backend/lib/AlexaSmartHomeV3/Exceptions/HourlyDeviceRateLimitExceeded.js +10 -0
  141. package/build-backend/lib/AlexaSmartHomeV3/Exceptions/HourlyDeviceRateLimitExceeded.js.map +1 -0
  142. package/build-backend/lib/AlexaSmartHomeV3/Exceptions/OverallDailyRateLimitExceeded.js +10 -0
  143. package/build-backend/lib/AlexaSmartHomeV3/Exceptions/OverallDailyRateLimitExceeded.js.map +1 -0
  144. package/{lib → build-backend/lib}/AlexaSmartHomeV3/Helpers/AdapterProvider.js +12 -21
  145. package/build-backend/lib/AlexaSmartHomeV3/Helpers/AdapterProvider.js.map +1 -0
  146. package/build-backend/lib/AlexaSmartHomeV3/Helpers/FileHelper.js +53 -0
  147. package/build-backend/lib/AlexaSmartHomeV3/Helpers/FileHelper.js.map +1 -0
  148. package/{lib → build-backend/lib}/AlexaSmartHomeV3/Helpers/IotProxy.js +9 -26
  149. package/build-backend/lib/AlexaSmartHomeV3/Helpers/IotProxy.js.map +1 -0
  150. package/build-backend/lib/AlexaSmartHomeV3/Helpers/Logger.js +93 -0
  151. package/build-backend/lib/AlexaSmartHomeV3/Helpers/Logger.js.map +1 -0
  152. package/build-backend/lib/AlexaSmartHomeV3/Helpers/RateLimiter.js +112 -0
  153. package/build-backend/lib/AlexaSmartHomeV3/Helpers/RateLimiter.js.map +1 -0
  154. package/build-backend/lib/AlexaSmartHomeV3/Helpers/Utils.js +625 -0
  155. package/build-backend/lib/AlexaSmartHomeV3/Helpers/Utils.js.map +1 -0
  156. package/build-backend/lib/Utils.js +96 -0
  157. package/build-backend/lib/Utils.js.map +1 -0
  158. package/build-backend/lib/adminCommonSocket.js +715 -0
  159. package/build-backend/lib/adminCommonSocket.js.map +1 -0
  160. package/build-backend/lib/alexaCustom.js +542 -0
  161. package/build-backend/lib/alexaCustom.js.map +1 -0
  162. package/{lib → build-backend/lib}/alexaSmartHomeV2.js +4 -8
  163. package/{lib → build-backend/lib}/alexaSmartHomeV3.js +25 -45
  164. package/build-backend/lib/alexaSmartHomeV3.js.map +1 -0
  165. package/{lib → build-backend/lib}/alisa.js +41 -44
  166. package/{lib → build-backend/lib}/devices.js +11 -8
  167. package/build-backend/lib/devices.js.map +1 -0
  168. package/{lib → build-backend/lib}/functions.js +11 -8
  169. package/build-backend/lib/functions.js.map +1 -0
  170. package/{lib → build-backend/lib}/googleHome.js +25 -26
  171. package/{lib → build-backend/lib}/notifications.js +15 -22
  172. package/build-backend/lib/notifications.js.map +1 -0
  173. package/{lib → build-backend/lib}/remote.js +615 -636
  174. package/build-backend/lib/remote.js.map +1 -0
  175. package/{lib → build-backend/lib}/rooms.js +11 -8
  176. package/build-backend/lib/rooms.js.map +1 -0
  177. package/{lib → build-backend/lib}/texts.js +6 -4
  178. package/build-backend/lib/texts.js.map +1 -0
  179. package/build-backend/lib/translate.js +21 -0
  180. package/build-backend/lib/translate.js.map +1 -0
  181. package/{lib → build-backend/lib}/visuApp.js +45 -65
  182. package/build-backend/lib/visuApp.js.map +1 -0
  183. package/build-backend/main.js +1361 -0
  184. package/build-backend/main.js.map +1 -0
  185. package/io-package.json +14 -14
  186. package/package.json +18 -15
  187. package/admin/assets/index-DCbOB3g_.js +0 -681
  188. package/lib/AlexaSmartHomeV3/Alexa/Capabilities/BrightnessController.js +0 -15
  189. package/lib/AlexaSmartHomeV3/Alexa/Capabilities/ColorController.js +0 -10
  190. package/lib/AlexaSmartHomeV3/Alexa/Capabilities/ColorTemperatureController.js +0 -15
  191. package/lib/AlexaSmartHomeV3/Alexa/Capabilities/ContactSensor.js +0 -10
  192. package/lib/AlexaSmartHomeV3/Alexa/Capabilities/LockController.js +0 -10
  193. package/lib/AlexaSmartHomeV3/Alexa/Capabilities/MotionSensor.js +0 -10
  194. package/lib/AlexaSmartHomeV3/Alexa/Capabilities/PercentageController.js +0 -10
  195. package/lib/AlexaSmartHomeV3/Alexa/Capabilities/PowerController.js +0 -15
  196. package/lib/AlexaSmartHomeV3/Alexa/Capabilities/Speaker.js +0 -20
  197. package/lib/AlexaSmartHomeV3/Alexa/Capabilities/TemperatureSensor.js +0 -10
  198. package/lib/AlexaSmartHomeV3/Alexa/Capabilities/ThermostatController.js +0 -34
  199. package/lib/AlexaSmartHomeV3/Alexa/Capabilities/index.js +0 -14
  200. package/lib/AlexaSmartHomeV3/Alexa/Directives/Base.js +0 -27
  201. package/lib/AlexaSmartHomeV3/Alexa/Directives/Discovery.js +0 -39
  202. package/lib/AlexaSmartHomeV3/Alexa/Directives/index.js +0 -13
  203. package/lib/AlexaSmartHomeV3/Alexa/ModeValues/Base.js +0 -38
  204. package/lib/AlexaSmartHomeV3/Alexa/ModeValues/Closed.js +0 -55
  205. package/lib/AlexaSmartHomeV3/Alexa/ModeValues/Open.js +0 -56
  206. package/lib/AlexaSmartHomeV3/Alexa/ModeValues/index.js +0 -14
  207. package/lib/AlexaSmartHomeV3/Alexa/Properties/AdjustableProperty.js +0 -11
  208. package/lib/AlexaSmartHomeV3/Alexa/Properties/Base.js +0 -108
  209. package/lib/AlexaSmartHomeV3/Alexa/Properties/Brightness.js +0 -14
  210. package/lib/AlexaSmartHomeV3/Alexa/Properties/Color.js +0 -40
  211. package/lib/AlexaSmartHomeV3/Alexa/Properties/DetectionState.js +0 -22
  212. package/lib/AlexaSmartHomeV3/Alexa/Properties/Mode.js +0 -32
  213. package/lib/AlexaSmartHomeV3/Alexa/Properties/Muted.js +0 -17
  214. package/lib/AlexaSmartHomeV3/Alexa/Properties/Percentage.js +0 -14
  215. package/lib/AlexaSmartHomeV3/Alexa/Properties/TargetSetpoint.js +0 -28
  216. package/lib/AlexaSmartHomeV3/Alexa/Properties/Temperature.js +0 -20
  217. package/lib/AlexaSmartHomeV3/Alexa/Properties/ThermostatMode.js +0 -52
  218. package/lib/AlexaSmartHomeV3/Alexa/Properties/Volume.js +0 -19
  219. package/lib/AlexaSmartHomeV3/Alexa/Properties/index.js +0 -14
  220. package/lib/AlexaSmartHomeV3/Controls/AdjustableControl.js +0 -22
  221. package/lib/AlexaSmartHomeV3/Controls/AdjustablePercentageControl.js +0 -28
  222. package/lib/AlexaSmartHomeV3/Controls/AirCondition.js +0 -144
  223. package/lib/AlexaSmartHomeV3/Controls/Blind.js +0 -12
  224. package/lib/AlexaSmartHomeV3/Controls/ContactSensor.js +0 -17
  225. package/lib/AlexaSmartHomeV3/Controls/Ct.js +0 -172
  226. package/lib/AlexaSmartHomeV3/Controls/Dimmer.js +0 -124
  227. package/lib/AlexaSmartHomeV3/Controls/Door.js +0 -9
  228. package/lib/AlexaSmartHomeV3/Controls/Gate.js +0 -42
  229. package/lib/AlexaSmartHomeV3/Controls/Hue.js +0 -207
  230. package/lib/AlexaSmartHomeV3/Controls/Lock.js +0 -36
  231. package/lib/AlexaSmartHomeV3/Controls/Motion.js +0 -17
  232. package/lib/AlexaSmartHomeV3/Controls/ReadOnlyDetector.js +0 -25
  233. package/lib/AlexaSmartHomeV3/Controls/Slider.js +0 -10
  234. package/lib/AlexaSmartHomeV3/Controls/Socket.js +0 -21
  235. package/lib/AlexaSmartHomeV3/Controls/Temperature.js +0 -22
  236. package/lib/AlexaSmartHomeV3/Controls/Thermostat.js +0 -86
  237. package/lib/AlexaSmartHomeV3/Controls/VacuumCleaner.js +0 -28
  238. package/lib/AlexaSmartHomeV3/Controls/Volume.js +0 -109
  239. package/lib/AlexaSmartHomeV3/Controls/VolumeGroup.js +0 -9
  240. package/lib/AlexaSmartHomeV3/Controls/Window.js +0 -9
  241. package/lib/AlexaSmartHomeV3/Controls/index.js +0 -14
  242. package/lib/AlexaSmartHomeV3/DeviceManager.js +0 -415
  243. package/lib/AlexaSmartHomeV3/Exceptions/AlexaV3Exception.js +0 -8
  244. package/lib/AlexaSmartHomeV3/Exceptions/HourlyDeviceRateLimitExceeded.js +0 -5
  245. package/lib/AlexaSmartHomeV3/Exceptions/OverallDailyRateLimitExceeded.js +0 -5
  246. package/lib/AlexaSmartHomeV3/Helpers/FileHelper.js +0 -70
  247. package/lib/AlexaSmartHomeV3/Helpers/Logger.js +0 -95
  248. package/lib/AlexaSmartHomeV3/Helpers/RateLimiter.js +0 -82
  249. package/lib/AlexaSmartHomeV3/Helpers/Utils.js +0 -583
  250. package/lib/Utils.js +0 -608
  251. package/lib/adminCommonSocket.js +0 -781
  252. package/lib/alexaCustom.js +0 -622
  253. package/lib/translate.js +0 -19
  254. package/main.js +0 -1454
@@ -0,0 +1,715 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.COMMANDS_PERMISSIONS = void 0;
7
+ exports.getEasyMode = getEasyMode;
8
+ exports.getAdapterInstances = getAdapterInstances;
9
+ exports.getAdapters = getAdapters;
10
+ exports.getCompactInstances = getCompactInstances;
11
+ exports.getCompactSystemRepositories = getCompactSystemRepositories;
12
+ exports.getCompactAdapters = getCompactAdapters;
13
+ exports.sendTo = sendTo;
14
+ exports.stopGB = stopGB;
15
+ exports.updateLicenses = updateLicenses;
16
+ exports.getIsEasyModeStrict = getIsEasyModeStrict;
17
+ exports.getCompactInstalled = getCompactInstalled;
18
+ exports.getCompactSystemConfig = getCompactSystemConfig;
19
+ exports.getCompactRepository = getCompactRepository;
20
+ exports.getCompactHosts = getCompactHosts;
21
+ exports.readLogs = readLogs;
22
+ exports.getRatings = getRatings;
23
+ exports.listPermissions = listPermissions;
24
+ exports.getHostByIp = getHostByIp;
25
+ exports.getListOfAllAdapters = getListOfAllAdapters;
26
+ exports.getAllObjects = getAllObjects;
27
+ const node_path_1 = require("node:path");
28
+ const node_fs_1 = require("node:fs");
29
+ const axios_1 = __importDefault(require("axios"));
30
+ const ALLOW_CACHE = [
31
+ 'getRepository',
32
+ 'getInstalled',
33
+ 'getInstalledAdapter',
34
+ 'getVersion',
35
+ 'getDiagData',
36
+ 'getLocationOnDisk',
37
+ 'getDevList',
38
+ 'getLogs',
39
+ 'getHostInfo',
40
+ ];
41
+ exports.COMMANDS_PERMISSIONS = {
42
+ getObject: { type: 'object', operation: 'read' },
43
+ getObjects: { type: 'object', operation: 'list' },
44
+ getObjectView: { type: 'object', operation: 'list' },
45
+ setObject: { type: 'object', operation: 'write' },
46
+ requireLog: { type: 'object', operation: 'write' }, // just mapping to some command
47
+ delObject: { type: 'object', operation: 'delete' },
48
+ extendObject: { type: 'object', operation: 'write' },
49
+ getHostByIp: { type: 'object', operation: 'list' },
50
+ subscribeObjects: { type: 'object', operation: 'read' },
51
+ unsubscribeObjects: { type: 'object', operation: 'read' },
52
+ getStates: { type: 'state', operation: 'list' },
53
+ getState: { type: 'state', operation: 'read' },
54
+ setState: { type: 'state', operation: 'write' },
55
+ delState: { type: 'state', operation: 'delete' },
56
+ createState: { type: 'state', operation: 'create' },
57
+ subscribe: { type: 'state', operation: 'read' },
58
+ unsubscribe: { type: 'state', operation: 'read' },
59
+ getStateHistory: { type: 'state', operation: 'read' },
60
+ getVersion: { type: '', operation: '' },
61
+ getAdapterName: { type: '', operation: '' },
62
+ addUser: { type: 'users', operation: 'create' },
63
+ delUser: { type: 'users', operation: 'delete' },
64
+ addGroup: { type: 'users', operation: 'create' },
65
+ delGroup: { type: 'users', operation: 'delete' },
66
+ changePassword: { type: 'users', operation: 'write' },
67
+ httpGet: { type: 'other', operation: 'http' },
68
+ cmdExec: { type: 'other', operation: 'execute' },
69
+ sendTo: { type: 'other', operation: 'sendto' },
70
+ sendToHost: { type: 'other', operation: 'sendto' },
71
+ readLogs: { type: 'other', operation: 'execute' },
72
+ readDir: { type: 'file', operation: 'list' },
73
+ createFile: { type: 'file', operation: 'create' },
74
+ writeFile: { type: 'file', operation: 'write' },
75
+ readFile: { type: 'file', operation: 'read' },
76
+ fileExists: { type: 'file', operation: 'read' },
77
+ deleteFile: { type: 'file', operation: 'delete' },
78
+ readFile64: { type: 'file', operation: 'read' },
79
+ writeFile64: { type: 'file', operation: 'write' },
80
+ unlink: { type: 'file', operation: 'delete' },
81
+ renameFile: { type: 'file', operation: 'write' },
82
+ rename: { type: 'file', operation: 'write' },
83
+ mkdir: { type: 'file', operation: 'write' },
84
+ chmodFile: { type: 'file', operation: 'write' },
85
+ chownFile: { type: 'file', operation: 'write' },
86
+ subscribeFiles: { type: 'file', operation: 'read' },
87
+ unsubscribeFiles: { type: 'file', operation: 'read' },
88
+ authEnabled: { type: '', operation: '' },
89
+ disconnect: { type: '', operation: '' },
90
+ listPermissions: { type: '', operation: '' },
91
+ getUserPermissions: { type: 'object', operation: 'read' },
92
+ };
93
+ const cache = {};
94
+ let cacheGB = null;
95
+ function fixAdminUI(obj) {
96
+ if (obj?.common) {
97
+ if (!obj.common.adminUI) {
98
+ if (obj.common.noConfig) {
99
+ obj.common.adminUI ||= { config: 'none' };
100
+ obj.common.adminUI.config = 'none';
101
+ }
102
+ else if (obj.common.jsonConfig) {
103
+ obj.common.adminUI ||= { config: 'json' };
104
+ obj.common.adminUI.config = 'json';
105
+ }
106
+ else if (obj.common.materialize) {
107
+ obj.common.adminUI ||= { config: 'materialize' };
108
+ obj.common.adminUI.config = 'materialize';
109
+ }
110
+ else {
111
+ obj.common.adminUI ||= { config: 'html' };
112
+ obj.common.adminUI.config = 'html';
113
+ }
114
+ if (obj.common.jsonCustom) {
115
+ obj.common.adminUI ||= { config: 'html' };
116
+ obj.common.adminUI.custom = 'json';
117
+ }
118
+ else if (obj.common.supportCustoms) {
119
+ obj.common.adminUI ||= { config: 'html' };
120
+ obj.common.adminUI.custom = 'json';
121
+ }
122
+ if (obj.common.materializeTab && obj.common.adminTab) {
123
+ obj.common.adminUI ||= { config: 'html' };
124
+ obj.common.adminUI.tab = 'materialize';
125
+ }
126
+ else if (obj.common.adminTab) {
127
+ obj.common.adminUI ||= { config: 'html' };
128
+ obj.common.adminUI.tab = 'html';
129
+ }
130
+ if (obj.common.adminUI) {
131
+ console.warn(`Please add to "${obj._id.replace(/\.\d+$/, '')}" common.adminUI=${JSON.stringify(obj.common.adminUI)}`);
132
+ }
133
+ }
134
+ else {
135
+ let changed = false;
136
+ if (obj.common.materializeTab && obj.common.adminTab) {
137
+ if (obj.common.adminUI.tab !== 'materialize') {
138
+ obj.common.adminUI.tab = 'materialize';
139
+ changed = true;
140
+ }
141
+ }
142
+ else if (obj.common.adminTab) {
143
+ if (obj.common.adminUI.tab !== 'html' && obj.common.adminUI.tab !== 'materialize') {
144
+ obj.common.adminUI.tab = 'html';
145
+ changed = true;
146
+ }
147
+ }
148
+ if (obj.common.jsonCustom || obj.common.supportCustoms) {
149
+ if (obj.common.adminUI.custom !== 'json') {
150
+ obj.common.adminUI.custom = 'json';
151
+ changed = true;
152
+ }
153
+ }
154
+ if (obj.common.noConfig) {
155
+ if (obj.common.adminUI.config !== 'none') {
156
+ obj.common.adminUI.config = 'none';
157
+ changed = true;
158
+ }
159
+ }
160
+ else if (obj.common.jsonConfig) {
161
+ if (obj.common.adminUI.config !== 'json') {
162
+ obj.common.adminUI.config = 'json';
163
+ changed = true;
164
+ }
165
+ obj.common.adminUI.config = 'json';
166
+ }
167
+ else if (obj.common.materialize) {
168
+ if (obj.common.adminUI.config !== 'materialize') {
169
+ if (!obj.common.adminUI.config) {
170
+ obj.common.adminUI.config = 'materialize';
171
+ changed = true;
172
+ }
173
+ }
174
+ }
175
+ else if (!obj.common.adminUI.config) {
176
+ obj.common.adminUI.config = 'html';
177
+ changed = true;
178
+ }
179
+ if (changed) {
180
+ console.warn(`Please modify "${obj._id.replace(/\.\d+$/, '')}" common.adminUI=${JSON.stringify(obj.common.adminUI)}`);
181
+ }
182
+ }
183
+ }
184
+ }
185
+ async function _readInstanceConfig(adapter, id, user, isTab, configs) {
186
+ const obj = await adapter.getForeignObjectAsync(`system.adapter.${id}`, { user });
187
+ if (obj?.common) {
188
+ const instance = id.split('.').pop();
189
+ const config = {
190
+ id,
191
+ title: obj.common.titleLang || obj.common.title,
192
+ desc: obj.common.desc,
193
+ color: obj.common.color,
194
+ url: `/adapter/${obj.common.name}/${isTab ? 'tab' : 'index'}${!isTab && obj.common.materialize ? '_m' : ''}.html${instance ? `?${instance}` : ''}`,
195
+ icon: obj.common.icon,
196
+ materialize: obj.common.adminUI?.config === 'materialize',
197
+ jsonConfig: obj.common.adminUI?.config === 'json',
198
+ };
199
+ if (isTab) {
200
+ config.tab = true;
201
+ }
202
+ else {
203
+ config.config = true;
204
+ }
205
+ /*if (typeof config.title === 'object') {
206
+ config.title = config.title[adapter.systemConfig.language] || config.title.en;
207
+ }
208
+ if (typeof config.desc === 'object') {
209
+ config.desc = config.desc[adapter.systemConfig.language] || config.desc.en;
210
+ }*/
211
+ configs.push(config);
212
+ }
213
+ }
214
+ async function getEasyMode(adapter, adminObj) {
215
+ const adapterConfig = adminObj?.native;
216
+ const configs = [];
217
+ if (adapterConfig?.accessLimit) {
218
+ adapterConfig.accessAllowedConfigs ||= [];
219
+ adapterConfig.accessAllowedTabs ||= [];
220
+ for (let a = 0; a < adapterConfig.accessAllowedConfigs.length; a++) {
221
+ await _readInstanceConfig(adapter, adapterConfig.accessAllowedConfigs[a], 'system.user.admin', false, configs);
222
+ }
223
+ return { strict: true, configs };
224
+ }
225
+ const doc = await adapter.getObjectViewAsync('system', 'instance', {
226
+ startkey: 'system.adapter.',
227
+ endkey: 'system.adapter.\u9999',
228
+ }, { user: 'system.user.admin' });
229
+ if (doc?.rows.length) {
230
+ for (let i = 0; i < doc.rows.length; i++) {
231
+ const obj = doc.rows[i].value;
232
+ if (obj.common.noConfig && !obj.common.adminTab) {
233
+ continue;
234
+ }
235
+ if (!obj.common.enabled) {
236
+ continue;
237
+ }
238
+ if (!obj.common.noConfig) {
239
+ await _readInstanceConfig(adapter, obj._id.substring('system.adapter.'.length), 'system.user.admin', false, configs);
240
+ }
241
+ }
242
+ }
243
+ return { strict: false, configs };
244
+ }
245
+ function getAdapterInstances(adapter, adapterName) {
246
+ return adapter
247
+ .getObjectViewAsync('system', 'instance', {
248
+ startkey: `system.adapter.${adapterName ? `${adapterName}.` : ''}`,
249
+ endkey: `system.adapter.${adapterName ? `${adapterName}.` : ''}\u9999`,
250
+ })
251
+ .then(doc => doc.rows
252
+ .map(item => {
253
+ const obj = item.value;
254
+ if (obj.common) {
255
+ delete obj.common.news;
256
+ }
257
+ fixAdminUI(obj);
258
+ return obj;
259
+ })
260
+ .filter(obj => obj && (!adapterName || obj.common?.name === adapterName)));
261
+ }
262
+ function getAdapters(adapter, adapterName) {
263
+ return adapter
264
+ .getObjectViewAsync('system', 'adapter', {
265
+ startkey: `system.adapter.${adapterName || ''}`,
266
+ endkey: `system.adapter.${adapterName || '\u9999'}`,
267
+ })
268
+ .then(doc => doc.rows
269
+ .filter(obj => obj && (!adapterName || obj.value.common?.name === adapterName))
270
+ .map(item => {
271
+ const obj = item.value;
272
+ if (obj.common) {
273
+ delete obj.common.news;
274
+ delete obj.native;
275
+ }
276
+ fixAdminUI(obj);
277
+ return obj;
278
+ }));
279
+ }
280
+ function getCompactInstances(adapter) {
281
+ return adapter
282
+ .getObjectViewAsync('system', 'instance', { startkey: `system.adapter.`, endkey: `system.adapter.\u9999` })
283
+ .then(doc => {
284
+ // calculate
285
+ const result = {};
286
+ doc.rows.forEach(item => {
287
+ const obj = item.value;
288
+ result[item.id] = {
289
+ adminTab: obj.common.adminTab,
290
+ name: obj.common.name,
291
+ icon: obj.common.icon,
292
+ enabled: obj.common.enabled,
293
+ };
294
+ });
295
+ return result;
296
+ });
297
+ }
298
+ function getCompactSystemRepositories(adapter) {
299
+ return adapter.getForeignObjectAsync('system.repositories').then(obj => {
300
+ obj?.native?.repositories &&
301
+ Object.keys(obj.native.repositories).forEach(name => {
302
+ if (obj.native.repositories[name].json) {
303
+ // limit information to _repoInfo
304
+ obj.native.repositories[name].json = {
305
+ _repoInfo: obj.native.repositories[name].json._repoInfo,
306
+ };
307
+ }
308
+ });
309
+ return obj;
310
+ });
311
+ }
312
+ function getCompactAdapters(adapter) {
313
+ return adapter
314
+ .getObjectViewAsync('system', 'adapter', { startkey: `system.adapter.`, endkey: `system.adapter.\u9999` })
315
+ .then(doc => {
316
+ // calculate
317
+ const result = {};
318
+ doc.rows.forEach(item => {
319
+ const obj = item.value;
320
+ if (obj?.common?.name) {
321
+ result[obj.common.name] = { icon: obj.common.icon, v: obj.common.version };
322
+ if (obj.common.ignoreVersion) {
323
+ result[obj.common.name].iv = obj.common.ignoreVersion;
324
+ }
325
+ }
326
+ });
327
+ return result;
328
+ });
329
+ }
330
+ function sendToHost(adapter, host, command, message) {
331
+ return new Promise(resolve => {
332
+ if (!message && ALLOW_CACHE.includes(command) && cache[`${host}_${command}`]) {
333
+ if (Date.now() - cache[`${host}_${command}`].ts < 500) {
334
+ resolve(JSON.parse(cache[`${host}_${command}`].res));
335
+ }
336
+ else {
337
+ delete cache[`${host}_${command}`];
338
+ }
339
+ }
340
+ void adapter.getForeignStateAsync(`${host}.alive`).then(state => {
341
+ if (state?.val) {
342
+ adapter.sendToHost(host, command, message, res => {
343
+ if (!message && ALLOW_CACHE.includes(command)) {
344
+ cache[`${host}_${command}`] = { ts: Date.now(), res: JSON.stringify(res) };
345
+ cacheGB =
346
+ cacheGB ||
347
+ setInterval(() => {
348
+ const commands = Object.keys(cache);
349
+ commands.forEach(cmd => {
350
+ if (Date.now() - cache[cmd].ts > 500) {
351
+ delete cache[cmd];
352
+ }
353
+ });
354
+ if (!commands.length) {
355
+ if (cacheGB) {
356
+ clearInterval(cacheGB);
357
+ cacheGB = null;
358
+ }
359
+ }
360
+ }, 2000);
361
+ }
362
+ resolve(res);
363
+ });
364
+ }
365
+ else {
366
+ resolve({});
367
+ }
368
+ });
369
+ });
370
+ }
371
+ function sendTo(adapter, adapterInstance, command, message) {
372
+ return adapter.sendToAsync(adapterInstance, command, message);
373
+ }
374
+ function stopGB() {
375
+ if (cacheGB) {
376
+ clearInterval(cacheGB);
377
+ cacheGB = null;
378
+ }
379
+ const commands = Object.keys(cache);
380
+ commands.forEach(cmd => delete cache[cmd]);
381
+ }
382
+ function updateLicenses(adapter, login, password, adminObj) {
383
+ return new Promise((resolve, reject) => {
384
+ let timeout = setTimeout(() => {
385
+ if (timeout) {
386
+ timeout = null;
387
+ reject(new Error('updateLicenses timeout'));
388
+ }
389
+ }, 7000);
390
+ void sendToHost(adapter, adminObj?.common.host || adapter.common.host, 'updateLicenses', {
391
+ login,
392
+ password,
393
+ }).then(result => {
394
+ if (timeout) {
395
+ clearTimeout(timeout);
396
+ timeout = null;
397
+ result?.error ? reject(new Error(result.error)) : resolve(result?.result);
398
+ }
399
+ });
400
+ });
401
+ }
402
+ function getIsEasyModeStrict(_adapter, adminObj) {
403
+ return Promise.resolve(!!adminObj?.native?.accessLimit);
404
+ }
405
+ function getCompactInstalled(adapter, host) {
406
+ return sendToHost(adapter, host, 'getInstalled', null).then(data => {
407
+ const result = {};
408
+ Object.keys(data).forEach(name => (result[name] = { version: data[name].version }));
409
+ return result;
410
+ });
411
+ }
412
+ function getCompactSystemConfig(adapter) {
413
+ return adapter.getForeignObjectAsync('system.config').then(obj => {
414
+ obj ||= {};
415
+ const secret = obj.native?.secret;
416
+ delete obj.native;
417
+ if (secret) {
418
+ obj.native = { secret };
419
+ }
420
+ return obj;
421
+ });
422
+ }
423
+ function getCompactRepository(adapter, host) {
424
+ return sendToHost(adapter, host, 'getRepository', null).then(data => {
425
+ // Extract only version and icon
426
+ const result = {};
427
+ if (data) {
428
+ Object.keys(data).forEach(name => (result[name] = {
429
+ version: data[name].version,
430
+ icon: data[name].extIcon,
431
+ }));
432
+ }
433
+ return result;
434
+ });
435
+ }
436
+ function getCompactHosts(adapter) {
437
+ return adapter
438
+ .getObjectViewAsync('system', 'host', { startkey: 'system.host.', endkey: 'system.host.\u9999' })
439
+ .then(doc => {
440
+ const result = [];
441
+ doc.rows.map(item => {
442
+ const host = item.value;
443
+ if (host) {
444
+ host.common ||= {};
445
+ result.push({
446
+ _id: host._id,
447
+ common: {
448
+ name: host.common.name,
449
+ icon: host.common.icon,
450
+ color: host.common.color,
451
+ installedVersion: host.common.installedVersion,
452
+ },
453
+ native: {
454
+ hardware: {
455
+ networkInterfaces: host.native?.hardware?.networkInterfaces || undefined,
456
+ },
457
+ },
458
+ });
459
+ }
460
+ });
461
+ return result;
462
+ });
463
+ }
464
+ function readLogs(adapter, host) {
465
+ return new Promise((resolve, reject) => {
466
+ let timeout = setTimeout(() => {
467
+ if (timeout) {
468
+ timeout = null;
469
+ const list = [];
470
+ // deliver a file list
471
+ try {
472
+ const config = adapter.systemConfig;
473
+ // detect file log
474
+ if (config?.log?.transport) {
475
+ for (const transport in config.log.transport) {
476
+ if (Object.prototype.hasOwnProperty.call(config.log.transport, transport) &&
477
+ config.log.transport[transport].type === 'file') {
478
+ let filename = config.log.transport[transport].filename || 'log/';
479
+ const parts = filename.replace(/\\/g, '/').split('/');
480
+ parts.pop();
481
+ filename = parts.join('/');
482
+ if (filename[0] !== '/' && !filename.match(/^\W:/)) {
483
+ const _filename = (0, node_path_1.normalize)(`${__dirname}/../../../`) + filename;
484
+ if (!(0, node_fs_1.existsSync)(_filename)) {
485
+ filename = (0, node_path_1.normalize)(`${__dirname}/../../`) + filename;
486
+ }
487
+ else {
488
+ filename = _filename;
489
+ }
490
+ }
491
+ if ((0, node_fs_1.existsSync)(filename)) {
492
+ const files = (0, node_fs_1.readdirSync)(filename);
493
+ for (let f = 0; f < files.length; f++) {
494
+ try {
495
+ if (!files[f].endsWith('-audit.json')) {
496
+ const stat = (0, node_fs_1.lstatSync)(`${filename}/${files[f]}`);
497
+ if (!stat.isDirectory()) {
498
+ list.push({
499
+ fileName: `log/${transport}/${files[f]}`,
500
+ size: stat.size,
501
+ });
502
+ }
503
+ }
504
+ }
505
+ catch {
506
+ // push unchecked
507
+ // result.list.push('log/' + transport + '/' + files[f]);
508
+ adapter.log.error(`Cannot check file: ${filename}/${files[f]}`);
509
+ }
510
+ }
511
+ }
512
+ }
513
+ }
514
+ }
515
+ else {
516
+ reject(new Error('no file loggers'));
517
+ return;
518
+ }
519
+ }
520
+ catch (e) {
521
+ adapter.log.error(e);
522
+ reject(new Error(e.toString()));
523
+ }
524
+ resolve(list);
525
+ }
526
+ }, 500);
527
+ void sendToHost(adapter, host, 'getLogFiles', null).then(result => {
528
+ if (timeout) {
529
+ clearTimeout(timeout);
530
+ timeout = null;
531
+ result.error ? reject(new Error(result.error)) : resolve(result.list);
532
+ }
533
+ });
534
+ });
535
+ }
536
+ let ratingsCached = {};
537
+ let ratingTimeout = null;
538
+ function getRatings(adapter, forceUpdate, autoUpdate) {
539
+ if (!forceUpdate && ratingsCached) {
540
+ return Promise.resolve(ratingsCached);
541
+ }
542
+ return adapter.getForeignObjectAsync('system.meta.uuid').then(obj => (0, axios_1.default)(`https://rating.iobroker.net/rating?uuid=${obj.native.uuid}`).then(response => {
543
+ const body = response.data;
544
+ if (body) {
545
+ if (typeof body !== 'object') {
546
+ try {
547
+ ratingsCached = JSON.parse(body);
548
+ }
549
+ catch (e) {
550
+ adapter.log.error(`Cannot parse ratings: ${e}`);
551
+ }
552
+ }
553
+ else if (body) {
554
+ ratingsCached = body;
555
+ }
556
+ if (!ratingsCached || typeof ratingsCached !== 'object' || Array.isArray(ratingsCached)) {
557
+ ratingsCached = {};
558
+ }
559
+ ratingsCached.uuid = obj.native.uuid;
560
+ return ratingsCached;
561
+ }
562
+ if (ratingTimeout) {
563
+ clearTimeout(ratingTimeout);
564
+ ratingTimeout = null;
565
+ }
566
+ if (autoUpdate) {
567
+ ratingTimeout = setTimeout(() => {
568
+ ratingTimeout = null;
569
+ void getRatings(adapter, forceUpdate, true).then(() => adapter.log.info('Adapter rating updated'));
570
+ }, 24 * 3_600_000);
571
+ }
572
+ return ratingsCached;
573
+ }));
574
+ }
575
+ function listPermissions(_adapter) {
576
+ return Promise.resolve(exports.COMMANDS_PERMISSIONS);
577
+ }
578
+ function getHostByIp(adapter, ip) {
579
+ return adapter.getObjectViewAsync('system', 'host', {}).then(data => {
580
+ if (data?.rows?.length) {
581
+ for (let i = 0; i < data.rows.length; i++) {
582
+ const obj = data.rows[i].value;
583
+ // if we requested specific name
584
+ if (obj.common.hostname === ip) {
585
+ return { ip, obj };
586
+ }
587
+ else if (obj.native.hardware && obj.native.hardware.networkInterfaces) {
588
+ // try to find this IP in the list
589
+ const net = obj.native.hardware.networkInterfaces;
590
+ for (const eth in net) {
591
+ if (!Object.prototype.hasOwnProperty.call(net, eth)) {
592
+ continue;
593
+ }
594
+ for (let j = 0; j < net[eth].length; j++) {
595
+ if (net[eth][j].address === ip) {
596
+ return { ip, obj };
597
+ }
598
+ }
599
+ }
600
+ }
601
+ }
602
+ }
603
+ return { ip, obj: null };
604
+ });
605
+ }
606
+ async function getListOfAllAdapters(adapter) {
607
+ // read all instances
608
+ const instances = await adapter.getObjectViewAsync('system', 'instance', {});
609
+ const adapters = await adapter.getObjectViewAsync('system', 'adapter', {});
610
+ // TODO: ignore disabled web adapters
611
+ const objects = {};
612
+ const list = [];
613
+ const mapInstance = {};
614
+ for (let r = 0; r < instances.rows.length; r++) {
615
+ mapInstance[instances.rows[r].id] = instances.rows[r].value;
616
+ objects[instances.rows[r].id] = instances.rows[r].value;
617
+ }
618
+ for (let a = 0; a < adapters.rows.length; a++) {
619
+ const obj = adapters.rows[a].value;
620
+ objects[adapters.rows[a].id] = adapters.rows[a].value;
621
+ let found;
622
+ if (instances?.rows) {
623
+ found = [];
624
+ // find if any instance of this adapter exists and started
625
+ for (let i = 0; i < instances.rows.length; i++) {
626
+ let id = instances.rows[i].id;
627
+ const ids = id.split('.');
628
+ ids.pop();
629
+ id = ids.join('.');
630
+ if (id === obj._id && instances.rows[i].value.common?.enabled) {
631
+ found.push(instances.rows[i].id);
632
+ }
633
+ }
634
+ }
635
+ }
636
+ const config = adapter.config;
637
+ if (config.remoteWebInstance &&
638
+ objects[`system.adapter.${config.remoteWebInstance}`]?.common?.enabled &&
639
+ objects[`system.adapter.vis-2.0`]?.common?.enabled) {
640
+ list.push({
641
+ link: 'vis-2/index.html',
642
+ // @ts-expect-error fix later
643
+ name: objects[`system.adapter.vis-2.0`].common.welcomeScreen?.[0]?.name || 'vis 2 runtime',
644
+ // @ts-expect-error fix later
645
+ color: objects[`system.adapter.vis-2.0`].common.welcomeScreen?.[0]?.color || '#ffe9c8',
646
+ order: 0,
647
+ });
648
+ list.push({
649
+ link: 'vis-2/edit.html',
650
+ // @ts-expect-error fix later
651
+ name: objects[`system.adapter.vis-2.0`].common.welcomeScreenPro?.[0]?.name || 'vis 2 editor',
652
+ // @ts-expect-error fix later
653
+ color: objects[`system.adapter.vis-2.0`].common.welcomeScreenPro?.[0]?.color || '#c8ffe1',
654
+ order: 1,
655
+ });
656
+ }
657
+ const common = config.remoteAdminInstance
658
+ ? objects[`system.adapter.${config.remoteAdminInstance}`].common
659
+ : undefined;
660
+ if (common?.enabled) {
661
+ list.push({
662
+ link: 'admin/index.html',
663
+ // @ts-expect-error fix later
664
+ name: common.welcomeScreenPro?.[0]?.name || 'Admin',
665
+ // @ts-expect-error fix later
666
+ color: common.welcomeScreenPro?.[0]?.color || 'pink',
667
+ order: 5,
668
+ });
669
+ }
670
+ return list;
671
+ }
672
+ let objectsTs = null;
673
+ let cachedObjects = null;
674
+ async function getAllObjects(adapter) {
675
+ const now = Date.now();
676
+ if (cachedObjects && objectsTs && now - objectsTs < 20000) {
677
+ return cachedObjects;
678
+ }
679
+ const res = await adapter.getObjectListAsync({ include_docs: true });
680
+ const objects = {};
681
+ if (res) {
682
+ const rows = res.rows;
683
+ for (let i = 0; i < rows.length; i++) {
684
+ objects[rows[i].doc._id] = rows[i].doc;
685
+ }
686
+ }
687
+ adapter.log.info(`[REMOTE] received all objects in ${Date.now() - now}`);
688
+ objectsTs = Date.now();
689
+ cachedObjects = objects;
690
+ return objects;
691
+ }
692
+ exports.default = {
693
+ stopGB,
694
+ getListOfAllAdapters,
695
+ getHostByIp,
696
+ getEasyMode,
697
+ getAdapterInstances,
698
+ getIsEasyModeStrict,
699
+ getAdapters,
700
+ updateLicenses,
701
+ getCompactInstances,
702
+ getCompactSystemRepositories,
703
+ getCompactAdapters,
704
+ getCompactInstalled,
705
+ getCompactSystemConfig,
706
+ getCompactRepository,
707
+ getCompactHosts,
708
+ readLogs,
709
+ getRatings,
710
+ listPermissions,
711
+ sendToHost,
712
+ sendTo,
713
+ getAllObjects,
714
+ };
715
+ //# sourceMappingURL=adminCommonSocket.js.map