@fastybird/smart-panel-backend 1.1.0-alpha.6 → 1.1.0-alpha.61

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 (494) hide show
  1. package/dist/app.module.js +2 -1
  2. package/dist/app.module.js.map +1 -1
  3. package/dist/common/utils/cancellable-exec.utils.d.ts +5 -0
  4. package/dist/common/utils/cancellable-exec.utils.js +34 -0
  5. package/dist/common/utils/cancellable-exec.utils.js.map +1 -0
  6. package/dist/common/utils/remote-access-observation.utils.d.ts +11 -0
  7. package/dist/common/utils/remote-access-observation.utils.js +89 -0
  8. package/dist/common/utils/remote-access-observation.utils.js.map +1 -0
  9. package/dist/dataSource.js +1 -0
  10. package/dist/dataSource.js.map +1 -1
  11. package/dist/migrations/1000000000026-AddHardwareInputCategories.d.ts +7 -0
  12. package/dist/migrations/1000000000026-AddHardwareInputCategories.js +364 -0
  13. package/dist/migrations/1000000000026-AddHardwareInputCategories.js.map +1 -0
  14. package/dist/modules/auth/auth.module.js +4 -0
  15. package/dist/modules/auth/auth.module.js.map +1 -1
  16. package/dist/modules/auth/guards/auth.guard.js +8 -21
  17. package/dist/modules/auth/guards/auth.guard.js.map +1 -1
  18. package/dist/modules/auth/services/token-metadata.service.d.ts +42 -0
  19. package/dist/modules/auth/services/token-metadata.service.js +202 -0
  20. package/dist/modules/auth/services/token-metadata.service.js.map +1 -0
  21. package/dist/modules/auth/services/token-usage.service.d.ts +22 -0
  22. package/dist/modules/auth/services/token-usage.service.js +93 -0
  23. package/dist/modules/auth/services/token-usage.service.js.map +1 -0
  24. package/dist/modules/auth/services/tokens.service.d.ts +10 -3
  25. package/dist/modules/auth/services/tokens.service.js +26 -10
  26. package/dist/modules/auth/services/tokens.service.js.map +1 -1
  27. package/dist/modules/devices/controllers/channels.controller.d.ts +5 -1
  28. package/dist/modules/devices/controllers/channels.controller.js +34 -2
  29. package/dist/modules/devices/controllers/channels.controller.js.map +1 -1
  30. package/dist/modules/devices/controllers/channels.properties.controller.js +5 -0
  31. package/dist/modules/devices/controllers/channels.properties.controller.js.map +1 -1
  32. package/dist/modules/devices/controllers/devices.channels.controller.d.ts +5 -1
  33. package/dist/modules/devices/controllers/devices.channels.controller.js +38 -2
  34. package/dist/modules/devices/controllers/devices.channels.controller.js.map +1 -1
  35. package/dist/modules/devices/controllers/devices.channels.properties.controller.js +5 -0
  36. package/dist/modules/devices/controllers/devices.channels.properties.controller.js.map +1 -1
  37. package/dist/modules/devices/devices.constants.d.ts +6 -0
  38. package/dist/modules/devices/devices.constants.js +6 -0
  39. package/dist/modules/devices/devices.constants.js.map +1 -1
  40. package/dist/modules/devices/devices.module.js +18 -0
  41. package/dist/modules/devices/devices.module.js.map +1 -1
  42. package/dist/modules/devices/devices.openapi.d.ts +3 -1
  43. package/dist/modules/devices/devices.openapi.js +7 -0
  44. package/dist/modules/devices/devices.openapi.js.map +1 -1
  45. package/dist/modules/devices/dto/channel-input-occurrence.dto.d.ts +10 -0
  46. package/dist/modules/devices/dto/channel-input-occurrence.dto.js +99 -0
  47. package/dist/modules/devices/dto/channel-input-occurrence.dto.js.map +1 -0
  48. package/dist/modules/devices/dto/property-command.dto.js +2 -8
  49. package/dist/modules/devices/dto/property-command.dto.js.map +1 -1
  50. package/dist/modules/devices/models/channel-input-capabilities.model.d.ts +20 -0
  51. package/dist/modules/devices/models/channel-input-capabilities.model.js +111 -0
  52. package/dist/modules/devices/models/channel-input-capabilities.model.js.map +1 -0
  53. package/dist/modules/devices/models/channel-input-occurrence.model.d.ts +22 -0
  54. package/dist/modules/devices/models/channel-input-occurrence.model.js +154 -0
  55. package/dist/modules/devices/models/channel-input-occurrence.model.js.map +1 -0
  56. package/dist/modules/devices/services/channel-input-deduplication.service.d.ts +17 -0
  57. package/dist/modules/devices/services/channel-input-deduplication.service.js +88 -0
  58. package/dist/modules/devices/services/channel-input-deduplication.service.js.map +1 -0
  59. package/dist/modules/devices/services/channel-input-occurrences.service.d.ts +21 -0
  60. package/dist/modules/devices/services/channel-input-occurrences.service.js +163 -0
  61. package/dist/modules/devices/services/channel-input-occurrences.service.js.map +1 -0
  62. package/dist/modules/devices/services/channels.properties.service.d.ts +10 -1
  63. package/dist/modules/devices/services/channels.properties.service.js +108 -44
  64. package/dist/modules/devices/services/channels.properties.service.js.map +1 -1
  65. package/dist/modules/devices/services/channels.service.d.ts +1 -0
  66. package/dist/modules/devices/services/channels.service.js +10 -0
  67. package/dist/modules/devices/services/channels.service.js.map +1 -1
  68. package/dist/modules/devices/services/command-latency-trace-collector.service.d.ts +101 -0
  69. package/dist/modules/devices/services/command-latency-trace-collector.service.js +451 -0
  70. package/dist/modules/devices/services/command-latency-trace-collector.service.js.map +1 -0
  71. package/dist/modules/devices/services/device-command-graph.service.d.ts +18 -0
  72. package/dist/modules/devices/services/device-command-graph.service.js +92 -0
  73. package/dist/modules/devices/services/device-command-graph.service.js.map +1 -0
  74. package/dist/modules/devices/services/devices.service.d.ts +2 -0
  75. package/dist/modules/devices/services/devices.service.js +41 -31
  76. package/dist/modules/devices/services/devices.service.js.map +1 -1
  77. package/dist/modules/devices/services/platform.registry.service.d.ts +2 -2
  78. package/dist/modules/devices/services/platform.registry.service.js.map +1 -1
  79. package/dist/modules/devices/services/property-command-dispatch.service.d.ts +7 -3
  80. package/dist/modules/devices/services/property-command-dispatch.service.js +38 -25
  81. package/dist/modules/devices/services/property-command-dispatch.service.js.map +1 -1
  82. package/dist/modules/devices/services/property-command-window.service.d.ts +2 -1
  83. package/dist/modules/devices/services/property-command-window.service.js +6 -0
  84. package/dist/modules/devices/services/property-command-window.service.js.map +1 -1
  85. package/dist/modules/devices/services/property-command.service.d.ts +9 -5
  86. package/dist/modules/devices/services/property-command.service.js +54 -21
  87. package/dist/modules/devices/services/property-command.service.js.map +1 -1
  88. package/dist/modules/devices/services/property-metadata.service.d.ts +38 -0
  89. package/dist/modules/devices/services/property-metadata.service.js +210 -0
  90. package/dist/modules/devices/services/property-metadata.service.js.map +1 -0
  91. package/dist/modules/devices/services/property-value-lock.service.d.ts +4 -1
  92. package/dist/modules/devices/services/property-value-lock.service.js +16 -2
  93. package/dist/modules/devices/services/property-value-lock.service.js.map +1 -1
  94. package/dist/modules/devices/services/property-value.service.d.ts +2 -0
  95. package/dist/modules/devices/services/property-value.service.js +25 -5
  96. package/dist/modules/devices/services/property-value.service.js.map +1 -1
  97. package/dist/modules/devices/utils/device-graph-query.utils.d.ts +3 -0
  98. package/dist/modules/devices/utils/device-graph-query.utils.js +23 -0
  99. package/dist/modules/devices/utils/device-graph-query.utils.js.map +1 -0
  100. package/dist/modules/devices/utils/schema.utils.js +1 -1
  101. package/dist/modules/devices/utils/schema.utils.js.map +1 -1
  102. package/dist/modules/devices/validators/channel-exists-constraint.validator.d.ts +1 -3
  103. package/dist/modules/devices/validators/channel-exists-constraint.validator.js +3 -14
  104. package/dist/modules/devices/validators/channel-exists-constraint.validator.js.map +1 -1
  105. package/dist/modules/devices/validators/channel-property-exists-constraint.validator.d.ts +1 -3
  106. package/dist/modules/devices/validators/channel-property-exists-constraint.validator.js +3 -14
  107. package/dist/modules/devices/validators/channel-property-exists-constraint.validator.js.map +1 -1
  108. package/dist/modules/devices/validators/device-exists-constraint.validator.js +1 -2
  109. package/dist/modules/devices/validators/device-exists-constraint.validator.js.map +1 -1
  110. package/dist/modules/devices/validators/property-command-target-constraint.validator.d.ts +9 -0
  111. package/dist/modules/devices/validators/property-command-target-constraint.validator.js +58 -0
  112. package/dist/modules/devices/validators/property-command-target-constraint.validator.js.map +1 -0
  113. package/dist/modules/mdns/services/mdns.service.js +3 -1
  114. package/dist/modules/mdns/services/mdns.service.js.map +1 -1
  115. package/dist/modules/platform/platforms/abstract.platform.d.ts +2 -1
  116. package/dist/modules/platform/platforms/abstract.platform.js +2 -1
  117. package/dist/modules/platform/platforms/abstract.platform.js.map +1 -1
  118. package/dist/modules/platform/platforms/raspberry.platform.js +5 -10
  119. package/dist/modules/platform/platforms/raspberry.platform.js.map +1 -1
  120. package/dist/modules/platform/utils/linux-network-interface.utils.d.ts +3 -0
  121. package/dist/modules/platform/utils/linux-network-interface.utils.js +48 -0
  122. package/dist/modules/platform/utils/linux-network-interface.utils.js.map +1 -0
  123. package/dist/modules/remote-access/controllers/remote-access.controller.js +11 -6
  124. package/dist/modules/remote-access/controllers/remote-access.controller.js.map +1 -1
  125. package/dist/modules/remote-access/models/provider.model.d.ts +3 -0
  126. package/dist/modules/remote-access/models/provider.model.js +23 -0
  127. package/dist/modules/remote-access/models/provider.model.js.map +1 -1
  128. package/dist/modules/remote-access/models/status.model.d.ts +2 -0
  129. package/dist/modules/remote-access/models/status.model.js +18 -1
  130. package/dist/modules/remote-access/models/status.model.js.map +1 -1
  131. package/dist/modules/remote-access/models/urls.model.d.ts +2 -0
  132. package/dist/modules/remote-access/models/urls.model.js +17 -0
  133. package/dist/modules/remote-access/models/urls.model.js.map +1 -1
  134. package/dist/modules/remote-access/platforms/remote-access-provider.platform.d.ts +18 -1
  135. package/dist/modules/remote-access/remote-access.constants.d.ts +2 -1
  136. package/dist/modules/remote-access/remote-access.constants.js +2 -1
  137. package/dist/modules/remote-access/remote-access.constants.js.map +1 -1
  138. package/dist/modules/remote-access/services/remote-access-proxy-contribution.service.d.ts +1 -0
  139. package/dist/modules/remote-access/services/remote-access-proxy-contribution.service.js +4 -1
  140. package/dist/modules/remote-access/services/remote-access-proxy-contribution.service.js.map +1 -1
  141. package/dist/modules/remote-access/services/remote-access-status.service.d.ts +40 -8
  142. package/dist/modules/remote-access/services/remote-access-status.service.js +314 -65
  143. package/dist/modules/remote-access/services/remote-access-status.service.js.map +1 -1
  144. package/dist/modules/remote-access/services/remote-access-url.service.d.ts +2 -2
  145. package/dist/modules/remote-access/services/remote-access-url.service.js +4 -2
  146. package/dist/modules/remote-access/services/remote-access-url.service.js.map +1 -1
  147. package/dist/modules/spaces/services/module-reset.service.d.ts +5 -1
  148. package/dist/modules/spaces/services/module-reset.service.js +10 -2
  149. package/dist/modules/spaces/services/module-reset.service.js.map +1 -1
  150. package/dist/modules/spaces/services/space-activity.service.d.ts +14 -0
  151. package/dist/modules/spaces/services/space-activity.service.js +56 -0
  152. package/dist/modules/spaces/services/space-activity.service.js.map +1 -0
  153. package/dist/modules/spaces/spaces.module.js +5 -0
  154. package/dist/modules/spaces/spaces.module.js.map +1 -1
  155. package/dist/modules/spaces/subscribers/space-activity.subscriber.d.ts +17 -0
  156. package/dist/modules/spaces/subscribers/space-activity.subscriber.js +89 -0
  157. package/dist/modules/spaces/subscribers/space-activity.subscriber.js.map +1 -0
  158. package/dist/modules/storage/services/storage-write-buffer.d.ts +17 -0
  159. package/dist/modules/storage/services/storage-write-buffer.js +67 -0
  160. package/dist/modules/storage/services/storage-write-buffer.js.map +1 -0
  161. package/dist/modules/storage/services/storage.service.d.ts +9 -2
  162. package/dist/modules/storage/services/storage.service.js +54 -1
  163. package/dist/modules/storage/services/storage.service.js.map +1 -1
  164. package/dist/modules/system/scripts/update-worker.sh +1168 -61
  165. package/dist/modules/system/services/privileged-worker.service.d.ts +10 -0
  166. package/dist/modules/system/services/privileged-worker.service.js +241 -32
  167. package/dist/modules/system/services/privileged-worker.service.js.map +1 -1
  168. package/dist/modules/system/services/system.service.d.ts +2 -0
  169. package/dist/modules/system/services/system.service.js +22 -1
  170. package/dist/modules/system/services/system.service.js.map +1 -1
  171. package/dist/modules/system/services/update-executor.service.d.ts +20 -2
  172. package/dist/modules/system/services/update-executor.service.js +272 -26
  173. package/dist/modules/system/services/update-executor.service.js.map +1 -1
  174. package/dist/modules/websocket/gateway/websocket.gateway.d.ts +4 -1
  175. package/dist/modules/websocket/gateway/websocket.gateway.js +29 -5
  176. package/dist/modules/websocket/gateway/websocket.gateway.js.map +1 -1
  177. package/dist/modules/websocket/services/command-acknowledgement-trace.service.d.ts +143 -0
  178. package/dist/modules/websocket/services/command-acknowledgement-trace.service.js +523 -0
  179. package/dist/modules/websocket/services/command-acknowledgement-trace.service.js.map +1 -0
  180. package/dist/modules/websocket/services/ws-auth.service.js +12 -35
  181. package/dist/modules/websocket/services/ws-auth.service.js.map +1 -1
  182. package/dist/modules/websocket/websocket.module.js +9 -1
  183. package/dist/modules/websocket/websocket.module.js.map +1 -1
  184. package/dist/plugins/devices-home-assistant/devices-home-assistant.openapi.d.ts +2 -2
  185. package/dist/plugins/devices-home-assistant/devices-home-assistant.plugin.d.ts +6 -1
  186. package/dist/plugins/devices-home-assistant/devices-home-assistant.plugin.js +16 -1
  187. package/dist/plugins/devices-home-assistant/devices-home-assistant.plugin.js.map +1 -1
  188. package/dist/plugins/devices-home-assistant/dto/mapping-preview.dto.d.ts +1 -0
  189. package/dist/plugins/devices-home-assistant/dto/mapping-preview.dto.js +11 -0
  190. package/dist/plugins/devices-home-assistant/dto/mapping-preview.dto.js.map +1 -1
  191. package/dist/plugins/devices-home-assistant/mappers/button.entity.mapper.service.d.ts +19 -0
  192. package/dist/plugins/devices-home-assistant/mappers/button.entity.mapper.service.js +51 -0
  193. package/dist/plugins/devices-home-assistant/mappers/button.entity.mapper.service.js.map +1 -0
  194. package/dist/plugins/devices-home-assistant/mappings/definitions/entity-mappings.yaml +56 -7
  195. package/dist/plugins/devices-home-assistant/models/mapping-preview.model.d.ts +1 -0
  196. package/dist/plugins/devices-home-assistant/models/mapping-preview.model.js +11 -0
  197. package/dist/plugins/devices-home-assistant/models/mapping-preview.model.js.map +1 -1
  198. package/dist/plugins/devices-home-assistant/services/device-adoption.service.js +17 -0
  199. package/dist/plugins/devices-home-assistant/services/device-adoption.service.js.map +1 -1
  200. package/dist/plugins/devices-home-assistant/services/ha-mdns-discoverer.service.js +3 -1
  201. package/dist/plugins/devices-home-assistant/services/ha-mdns-discoverer.service.js.map +1 -1
  202. package/dist/plugins/devices-home-assistant/services/home-assistant-raw-event.service.d.ts +27 -0
  203. package/dist/plugins/devices-home-assistant/services/home-assistant-raw-event.service.js +271 -0
  204. package/dist/plugins/devices-home-assistant/services/home-assistant-raw-event.service.js.map +1 -0
  205. package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.d.ts +2 -2
  206. package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.js +33 -14
  207. package/dist/plugins/devices-home-assistant/services/home-assistant.ws.service.js.map +1 -1
  208. package/dist/plugins/devices-home-assistant/services/mapping-preview.service.js +24 -4
  209. package/dist/plugins/devices-home-assistant/services/mapping-preview.service.js.map +1 -1
  210. package/dist/plugins/devices-home-assistant/services/state-changed.event.service.d.ts +4 -1
  211. package/dist/plugins/devices-home-assistant/services/state-changed.event.service.js +82 -2
  212. package/dist/plugins/devices-home-assistant/services/state-changed.event.service.js.map +1 -1
  213. package/dist/plugins/devices-home-assistant/services/wizard.service.js +1 -0
  214. package/dist/plugins/devices-home-assistant/services/wizard.service.js.map +1 -1
  215. package/dist/plugins/devices-home-assistant/utils/ha-event.utils.d.ts +2 -0
  216. package/dist/plugins/devices-home-assistant/utils/ha-event.utils.js +50 -0
  217. package/dist/plugins/devices-home-assistant/utils/ha-event.utils.js.map +1 -0
  218. package/dist/plugins/devices-homekit/listeners/homekit-event.listener.d.ts +4 -1
  219. package/dist/plugins/devices-homekit/listeners/homekit-event.listener.js +34 -4
  220. package/dist/plugins/devices-homekit/listeners/homekit-event.listener.js.map +1 -1
  221. package/dist/plugins/devices-homekit/mappers/base.mapper.js +3 -2
  222. package/dist/plugins/devices-homekit/mappers/base.mapper.js.map +1 -1
  223. package/dist/plugins/devices-homekit/mappers/button.mapper.d.ts +15 -0
  224. package/dist/plugins/devices-homekit/mappers/button.mapper.js +143 -0
  225. package/dist/plugins/devices-homekit/mappers/button.mapper.js.map +1 -0
  226. package/dist/plugins/devices-homekit/mappers/characteristic-write.d.ts +2 -0
  227. package/dist/plugins/devices-homekit/mappers/characteristic-write.js +17 -0
  228. package/dist/plugins/devices-homekit/mappers/characteristic-write.js.map +1 -0
  229. package/dist/plugins/devices-homekit/mappers/homekit-mapper.interface.d.ts +9 -1
  230. package/dist/plugins/devices-homekit/mappers/thermostat-coordinator.js +13 -12
  231. package/dist/plugins/devices-homekit/mappers/thermostat-coordinator.js.map +1 -1
  232. package/dist/plugins/devices-homekit/services/homekit-bridge.service.js +2 -0
  233. package/dist/plugins/devices-homekit/services/homekit-bridge.service.js.map +1 -1
  234. package/dist/plugins/devices-homekit/services/homekit-mapper-registry.service.d.ts +5 -1
  235. package/dist/plugins/devices-homekit/services/homekit-mapper-registry.service.js +42 -0
  236. package/dist/plugins/devices-homekit/services/homekit-mapper-registry.service.js.map +1 -1
  237. package/dist/plugins/devices-homekit/utils/ciao-receive-guard.d.ts +1 -0
  238. package/dist/plugins/devices-homekit/utils/ciao-receive-guard.js +36 -0
  239. package/dist/plugins/devices-homekit/utils/ciao-receive-guard.js.map +1 -0
  240. package/dist/plugins/devices-homey/mappings/definitions/channels.yaml +50 -0
  241. package/dist/plugins/devices-homey/mappings/definitions/devices.yaml +18 -0
  242. package/dist/plugins/devices-homey/mappings/definitions/properties.yaml +55 -0
  243. package/dist/plugins/devices-homey/mappings/device-support.js +10 -0
  244. package/dist/plugins/devices-homey/mappings/device-support.js.map +1 -1
  245. package/dist/plugins/devices-homey/mappings/mapping-loader.service.d.ts +1 -0
  246. package/dist/plugins/devices-homey/mappings/mapping-loader.service.js +66 -8
  247. package/dist/plugins/devices-homey/mappings/mapping-loader.service.js.map +1 -1
  248. package/dist/plugins/devices-homey/models/inventory.model.d.ts +2 -1
  249. package/dist/plugins/devices-homey/models/inventory.model.js +1 -0
  250. package/dist/plugins/devices-homey/models/inventory.model.js.map +1 -1
  251. package/dist/plugins/devices-homey/models/mapping-preview.model.d.ts +1 -0
  252. package/dist/plugins/devices-homey/models/mapping-preview.model.js +1 -0
  253. package/dist/plugins/devices-homey/models/mapping-preview.model.js.map +1 -1
  254. package/dist/plugins/devices-homey/services/homey-mapping-preview.service.js +7 -0
  255. package/dist/plugins/devices-homey/services/homey-mapping-preview.service.js.map +1 -1
  256. package/dist/plugins/devices-homey/services/homey-synchronizer.service.d.ts +3 -1
  257. package/dist/plugins/devices-homey/services/homey-synchronizer.service.js +37 -6
  258. package/dist/plugins/devices-homey/services/homey-synchronizer.service.js.map +1 -1
  259. package/dist/plugins/devices-reterminal/services/reterminal-button.service.d.ts +7 -3
  260. package/dist/plugins/devices-reterminal/services/reterminal-button.service.js +63 -17
  261. package/dist/plugins/devices-reterminal/services/reterminal-button.service.js.map +1 -1
  262. package/dist/plugins/devices-shelly-ng/delegates/delegates-manager.service.d.ts +25 -3
  263. package/dist/plugins/devices-shelly-ng/delegates/delegates-manager.service.js +607 -48
  264. package/dist/plugins/devices-shelly-ng/delegates/delegates-manager.service.js.map +1 -1
  265. package/dist/plugins/devices-shelly-ng/delegates/shelly-device.delegate.d.ts +6 -0
  266. package/dist/plugins/devices-shelly-ng/delegates/shelly-device.delegate.js +51 -2
  267. package/dist/plugins/devices-shelly-ng/delegates/shelly-device.delegate.js.map +1 -1
  268. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.constants.js +3 -2
  269. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.constants.js.map +1 -1
  270. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.plugin.js +2 -0
  271. package/dist/plugins/devices-shelly-ng/devices-shelly-ng.plugin.js.map +1 -1
  272. package/dist/plugins/devices-shelly-ng/mappings/definitions/inputs.yaml +80 -0
  273. package/dist/plugins/devices-shelly-ng/mappings/mapping-loader.service.js +7 -1
  274. package/dist/plugins/devices-shelly-ng/mappings/mapping-loader.service.js.map +1 -1
  275. package/dist/plugins/devices-shelly-ng/mappings/mapping.types.d.ts +6 -3
  276. package/dist/plugins/devices-shelly-ng/mappings/schema/mapping-schema.json +5 -0
  277. package/dist/plugins/devices-shelly-ng/services/device-manager.service.js +153 -8
  278. package/dist/plugins/devices-shelly-ng/services/device-manager.service.js.map +1 -1
  279. package/dist/plugins/devices-shelly-ng/services/poll-placement-diagnostics.service.d.ts +51 -0
  280. package/dist/plugins/devices-shelly-ng/services/poll-placement-diagnostics.service.js +549 -0
  281. package/dist/plugins/devices-shelly-ng/services/poll-placement-diagnostics.service.js.map +1 -0
  282. package/dist/plugins/devices-shelly-ng/services/shelly-ng.service.d.ts +6 -1
  283. package/dist/plugins/devices-shelly-ng/services/shelly-ng.service.js +84 -14
  284. package/dist/plugins/devices-shelly-ng/services/shelly-ng.service.js.map +1 -1
  285. package/dist/plugins/devices-shelly-ng/services/shelly-rpc-client.service.js +3 -0
  286. package/dist/plugins/devices-shelly-ng/services/shelly-rpc-client.service.js.map +1 -1
  287. package/dist/plugins/devices-shelly-ng/services/shelly-ws-server.service.d.ts +1 -0
  288. package/dist/plugins/devices-shelly-ng/services/shelly-ws-server.service.js +13 -1
  289. package/dist/plugins/devices-shelly-ng/services/shelly-ws-server.service.js.map +1 -1
  290. package/dist/plugins/devices-shelly-v1/devices-shelly-v1.constants.d.ts +2 -0
  291. package/dist/plugins/devices-shelly-v1/devices-shelly-v1.constants.js +66 -4
  292. package/dist/plugins/devices-shelly-v1/devices-shelly-v1.constants.js.map +1 -1
  293. package/dist/plugins/devices-shelly-v1/devices-shelly-v1.plugin.js +2 -0
  294. package/dist/plugins/devices-shelly-v1/devices-shelly-v1.plugin.js.map +1 -1
  295. package/dist/plugins/devices-shelly-v1/platforms/shelly-v1.device.platform.js +7 -0
  296. package/dist/plugins/devices-shelly-v1/platforms/shelly-v1.device.platform.js.map +1 -1
  297. package/dist/plugins/devices-shelly-v1/services/device-mapper.service.d.ts +3 -1
  298. package/dist/plugins/devices-shelly-v1/services/device-mapper.service.js +20 -2
  299. package/dist/plugins/devices-shelly-v1/services/device-mapper.service.js.map +1 -1
  300. package/dist/plugins/devices-shelly-v1/services/shelly-v1-input-tracker.service.d.ts +16 -0
  301. package/dist/plugins/devices-shelly-v1/services/shelly-v1-input-tracker.service.js +107 -0
  302. package/dist/plugins/devices-shelly-v1/services/shelly-v1-input-tracker.service.js.map +1 -0
  303. package/dist/plugins/devices-shelly-v1/services/shelly-v1.service.d.ts +7 -1
  304. package/dist/plugins/devices-shelly-v1/services/shelly-v1.service.js +98 -3
  305. package/dist/plugins/devices-shelly-v1/services/shelly-v1.service.js.map +1 -1
  306. package/dist/plugins/devices-third-party/controllers/third-party-inputs.controller.d.ts +17 -0
  307. package/dist/plugins/devices-third-party/controllers/third-party-inputs.controller.js +205 -0
  308. package/dist/plugins/devices-third-party/controllers/third-party-inputs.controller.js.map +1 -0
  309. package/dist/plugins/devices-third-party/devices-third-party.openapi.d.ts +1 -1
  310. package/dist/plugins/devices-third-party/devices-third-party.plugin.js +2 -1
  311. package/dist/plugins/devices-third-party/devices-third-party.plugin.js.map +1 -1
  312. package/dist/plugins/devices-third-party/dto/report-input-occurrence-response.dto.d.ts +5 -0
  313. package/dist/plugins/devices-third-party/dto/report-input-occurrence-response.dto.js +50 -0
  314. package/dist/plugins/devices-third-party/dto/report-input-occurrence-response.dto.js.map +1 -0
  315. package/dist/plugins/devices-third-party/dto/report-input-occurrence.dto.d.ts +8 -0
  316. package/dist/plugins/devices-third-party/dto/report-input-occurrence.dto.js +81 -0
  317. package/dist/plugins/devices-third-party/dto/report-input-occurrence.dto.js.map +1 -0
  318. package/dist/plugins/devices-third-party/platforms/third-party-device.platform.js +19 -4
  319. package/dist/plugins/devices-third-party/platforms/third-party-device.platform.js.map +1 -1
  320. package/dist/plugins/devices-virtual/listeners/virtual-projection.listener.d.ts +2 -0
  321. package/dist/plugins/devices-virtual/listeners/virtual-projection.listener.js +57 -0
  322. package/dist/plugins/devices-virtual/listeners/virtual-projection.listener.js.map +1 -1
  323. package/dist/plugins/devices-virtual/platforms/virtual-device.platform.d.ts +3 -8
  324. package/dist/plugins/devices-virtual/platforms/virtual-device.platform.js +6 -31
  325. package/dist/plugins/devices-virtual/platforms/virtual-device.platform.js.map +1 -1
  326. package/dist/plugins/devices-wled/services/wled-mdns-discoverer.service.js +3 -1
  327. package/dist/plugins/devices-wled/services/wled-mdns-discoverer.service.js.map +1 -1
  328. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.constants.d.ts +3 -0
  329. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.constants.js +41 -5
  330. package/dist/plugins/devices-zigbee2mqtt/devices-zigbee2mqtt.constants.js.map +1 -1
  331. package/dist/plugins/devices-zigbee2mqtt/interfaces/zigbee2mqtt.interface.d.ts +7 -1
  332. package/dist/plugins/devices-zigbee2mqtt/mappings/config-driven.converter.js +16 -15
  333. package/dist/plugins/devices-zigbee2mqtt/mappings/config-driven.converter.js.map +1 -1
  334. package/dist/plugins/devices-zigbee2mqtt/mappings/definitions/remotes.yaml +505 -74
  335. package/dist/plugins/devices-zigbee2mqtt/mappings/schema/mapping-schema.json +3 -3
  336. package/dist/plugins/devices-zigbee2mqtt/mappings/transformers/transformer.types.d.ts +1 -1
  337. package/dist/plugins/devices-zigbee2mqtt/services/base-client-adapter.d.ts +8 -2
  338. package/dist/plugins/devices-zigbee2mqtt/services/base-client-adapter.js +6 -5
  339. package/dist/plugins/devices-zigbee2mqtt/services/base-client-adapter.js.map +1 -1
  340. package/dist/plugins/devices-zigbee2mqtt/services/device-adoption.service.js +18 -11
  341. package/dist/plugins/devices-zigbee2mqtt/services/device-adoption.service.js.map +1 -1
  342. package/dist/plugins/devices-zigbee2mqtt/services/device-mapper.service.d.ts +9 -3
  343. package/dist/plugins/devices-zigbee2mqtt/services/device-mapper.service.js +166 -3
  344. package/dist/plugins/devices-zigbee2mqtt/services/device-mapper.service.js.map +1 -1
  345. package/dist/plugins/devices-zigbee2mqtt/services/mqtt-client-adapter.service.js +5 -2
  346. package/dist/plugins/devices-zigbee2mqtt/services/mqtt-client-adapter.service.js.map +1 -1
  347. package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt.service.d.ts +1 -0
  348. package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt.service.js +44 -4
  349. package/dist/plugins/devices-zigbee2mqtt/services/zigbee2mqtt.service.js.map +1 -1
  350. package/dist/plugins/influx-v1/services/influx-v1-managed.service.js +2 -2
  351. package/dist/plugins/influx-v1/services/influx-v1-managed.service.js.map +1 -1
  352. package/dist/plugins/influx-v2/services/influx-v2-managed.service.js +2 -2
  353. package/dist/plugins/influx-v2/services/influx-v2-managed.service.js.map +1 -1
  354. package/dist/plugins/memory-storage/services/memory-storage-managed.service.js +2 -2
  355. package/dist/plugins/memory-storage/services/memory-storage-managed.service.js.map +1 -1
  356. package/dist/plugins/remote-access-cloudflare-tunnel/controllers/setup.controller.d.ts +6 -4
  357. package/dist/plugins/remote-access-cloudflare-tunnel/controllers/setup.controller.js +28 -16
  358. package/dist/plugins/remote-access-cloudflare-tunnel/controllers/setup.controller.js.map +1 -1
  359. package/dist/plugins/remote-access-cloudflare-tunnel/controllers/status.controller.d.ts +4 -6
  360. package/dist/plugins/remote-access-cloudflare-tunnel/controllers/status.controller.js +18 -17
  361. package/dist/plugins/remote-access-cloudflare-tunnel/controllers/status.controller.js.map +1 -1
  362. package/dist/plugins/remote-access-cloudflare-tunnel/models/status.model.d.ts +2 -0
  363. package/dist/plugins/remote-access-cloudflare-tunnel/models/status.model.js +17 -0
  364. package/dist/plugins/remote-access-cloudflare-tunnel/models/status.model.js.map +1 -1
  365. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.constants.d.ts +1 -0
  366. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.constants.js +2 -1
  367. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.constants.js.map +1 -1
  368. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.plugin.js +1 -1
  369. package/dist/plugins/remote-access-cloudflare-tunnel/remote-access-cloudflare-tunnel.plugin.js.map +1 -1
  370. package/dist/plugins/remote-access-cloudflare-tunnel/scripts/cloudflared-setup.sh +1 -1
  371. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-managed.service.d.ts +21 -2
  372. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-managed.service.js +132 -56
  373. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-managed.service.js.map +1 -1
  374. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-provider.service.d.ts +13 -1
  375. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-provider.service.js +8 -2
  376. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-provider.service.js.map +1 -1
  377. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-setup.service.js +1 -0
  378. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflare-tunnel-setup.service.js.map +1 -1
  379. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-cli.service.d.ts +1 -1
  380. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-cli.service.js +12 -24
  381. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-cli.service.js.map +1 -1
  382. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-metrics.service.d.ts +1 -1
  383. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-metrics.service.js +5 -2
  384. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-metrics.service.js.map +1 -1
  385. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-process.service.d.ts +4 -3
  386. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-process.service.js +109 -49
  387. package/dist/plugins/remote-access-cloudflare-tunnel/services/cloudflared-process.service.js.map +1 -1
  388. package/dist/plugins/remote-access-tailscale/controllers/setup.controller.d.ts +11 -6
  389. package/dist/plugins/remote-access-tailscale/controllers/setup.controller.js +115 -25
  390. package/dist/plugins/remote-access-tailscale/controllers/setup.controller.js.map +1 -1
  391. package/dist/plugins/remote-access-tailscale/controllers/status.controller.d.ts +6 -5
  392. package/dist/plugins/remote-access-tailscale/controllers/status.controller.js +26 -16
  393. package/dist/plugins/remote-access-tailscale/controllers/status.controller.js.map +1 -1
  394. package/dist/plugins/remote-access-tailscale/models/status.model.d.ts +16 -0
  395. package/dist/plugins/remote-access-tailscale/models/status.model.js +100 -1
  396. package/dist/plugins/remote-access-tailscale/models/status.model.js.map +1 -1
  397. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.constants.d.ts +3 -0
  398. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.constants.js +4 -1
  399. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.constants.js.map +1 -1
  400. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.exceptions.d.ts +17 -1
  401. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.exceptions.js +33 -1
  402. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.exceptions.js.map +1 -1
  403. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.openapi.d.ts +2 -2
  404. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.openapi.js +1 -0
  405. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.openapi.js.map +1 -1
  406. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.plugin.js +3 -1
  407. package/dist/plugins/remote-access-tailscale/remote-access-tailscale.plugin.js.map +1 -1
  408. package/dist/plugins/remote-access-tailscale/scripts/tailscale-setup.sh +37 -4
  409. package/dist/plugins/remote-access-tailscale/services/tailscale-cli.service.d.ts +9 -4
  410. package/dist/plugins/remote-access-tailscale/services/tailscale-cli.service.js +63 -15
  411. package/dist/plugins/remote-access-tailscale/services/tailscale-cli.service.js.map +1 -1
  412. package/dist/plugins/remote-access-tailscale/services/tailscale-login.service.d.ts +8 -3
  413. package/dist/plugins/remote-access-tailscale/services/tailscale-login.service.js +175 -151
  414. package/dist/plugins/remote-access-tailscale/services/tailscale-login.service.js.map +1 -1
  415. package/dist/plugins/remote-access-tailscale/services/tailscale-node-managed.service.d.ts +55 -7
  416. package/dist/plugins/remote-access-tailscale/services/tailscale-node-managed.service.js +551 -109
  417. package/dist/plugins/remote-access-tailscale/services/tailscale-node-managed.service.js.map +1 -1
  418. package/dist/plugins/remote-access-tailscale/services/tailscale-operation-coordinator.service.d.ts +33 -0
  419. package/dist/plugins/remote-access-tailscale/services/tailscale-operation-coordinator.service.js +167 -0
  420. package/dist/plugins/remote-access-tailscale/services/tailscale-operation-coordinator.service.js.map +1 -0
  421. package/dist/plugins/remote-access-tailscale/services/tailscale-provider.service.d.ts +13 -1
  422. package/dist/plugins/remote-access-tailscale/services/tailscale-provider.service.js +8 -2
  423. package/dist/plugins/remote-access-tailscale/services/tailscale-provider.service.js.map +1 -1
  424. package/dist/plugins/remote-access-tailscale/services/tailscale-serve.service.d.ts +1 -1
  425. package/dist/plugins/remote-access-tailscale/services/tailscale-serve.service.js +7 -6
  426. package/dist/plugins/remote-access-tailscale/services/tailscale-serve.service.js.map +1 -1
  427. package/dist/plugins/remote-access-tailscale/services/tailscale-setup.service.d.ts +1 -3
  428. package/dist/plugins/remote-access-tailscale/services/tailscale-setup.service.js +11 -11
  429. package/dist/plugins/remote-access-tailscale/services/tailscale-setup.service.js.map +1 -1
  430. package/dist/plugins/remote-access-tailscale/utils/tailscale-control.utils.d.ts +5 -0
  431. package/dist/plugins/remote-access-tailscale/utils/tailscale-control.utils.js +36 -0
  432. package/dist/plugins/remote-access-tailscale/utils/tailscale-control.utils.js.map +1 -0
  433. package/dist/plugins/simulator/controllers/simulator.controller.d.ts +8 -2
  434. package/dist/plugins/simulator/controllers/simulator.controller.js +102 -2
  435. package/dist/plugins/simulator/controllers/simulator.controller.js.map +1 -1
  436. package/dist/plugins/simulator/dto/simulate-occurrence.dto.d.ts +12 -0
  437. package/dist/plugins/simulator/dto/simulate-occurrence.dto.js +122 -0
  438. package/dist/plugins/simulator/dto/simulate-occurrence.dto.js.map +1 -0
  439. package/dist/plugins/simulator/models/simulator-response.model.d.ts +12 -0
  440. package/dist/plugins/simulator/models/simulator-response.model.js +84 -1
  441. package/dist/plugins/simulator/models/simulator-response.model.js.map +1 -1
  442. package/dist/plugins/simulator/scenarios/definitions/small-apartment.yaml +78 -0
  443. package/dist/plugins/simulator/services/scenario-executor.service.js +3 -1
  444. package/dist/plugins/simulator/services/scenario-executor.service.js.map +1 -1
  445. package/dist/plugins/simulator/services/simulation.service.js +10 -1
  446. package/dist/plugins/simulator/services/simulation.service.js.map +1 -1
  447. package/dist/plugins/simulator/simulator.openapi.d.ts +3 -2
  448. package/dist/plugins/simulator/simulator.openapi.js +5 -0
  449. package/dist/plugins/simulator/simulator.openapi.js.map +1 -1
  450. package/dist/plugins/simulator/simulators/device-simulator.interface.d.ts +2 -0
  451. package/dist/plugins/simulator/simulators/device-simulator.interface.js +83 -0
  452. package/dist/plugins/simulator/simulators/device-simulator.interface.js.map +1 -1
  453. package/dist/plugins/simulator/simulators/index.d.ts +1 -0
  454. package/dist/plugins/simulator/simulators/index.js +1 -0
  455. package/dist/plugins/simulator/simulators/index.js.map +1 -1
  456. package/dist/plugins/simulator/simulators/input-controller.simulator.d.ts +10 -0
  457. package/dist/plugins/simulator/simulators/input-controller.simulator.js +57 -0
  458. package/dist/plugins/simulator/simulators/input-controller.simulator.js.map +1 -0
  459. package/dist/plugins/simulator/simulators/lighting.simulator.js +1 -0
  460. package/dist/plugins/simulator/simulators/lighting.simulator.js.map +1 -1
  461. package/dist/plugins/spaces-home-control/listeners/space-activity.listener.d.ts +6 -7
  462. package/dist/plugins/spaces-home-control/listeners/space-activity.listener.js +19 -44
  463. package/dist/plugins/spaces-home-control/listeners/space-activity.listener.js.map +1 -1
  464. package/dist/plugins/spaces-home-control/listeners/space-climate-state.listener.d.ts +4 -4
  465. package/dist/plugins/spaces-home-control/listeners/space-climate-state.listener.js +9 -22
  466. package/dist/plugins/spaces-home-control/listeners/space-climate-state.listener.js.map +1 -1
  467. package/dist/plugins/spaces-home-control/listeners/space-lighting-state.listener.d.ts +4 -4
  468. package/dist/plugins/spaces-home-control/listeners/space-lighting-state.listener.js +9 -22
  469. package/dist/plugins/spaces-home-control/listeners/space-lighting-state.listener.js.map +1 -1
  470. package/dist/plugins/spaces-home-control/listeners/space-sensor-state.listener.d.ts +4 -4
  471. package/dist/plugins/spaces-home-control/listeners/space-sensor-state.listener.js +9 -22
  472. package/dist/plugins/spaces-home-control/listeners/space-sensor-state.listener.js.map +1 -1
  473. package/dist/plugins/spaces-home-control/services/space-climate-state.service.d.ts +3 -5
  474. package/dist/plugins/spaces-home-control/services/space-climate-state.service.js +9 -12
  475. package/dist/plugins/spaces-home-control/services/space-climate-state.service.js.map +1 -1
  476. package/dist/plugins/spaces-home-control/services/space-lighting-state.service.d.ts +3 -5
  477. package/dist/plugins/spaces-home-control/services/space-lighting-state.service.js +7 -10
  478. package/dist/plugins/spaces-home-control/services/space-lighting-state.service.js.map +1 -1
  479. package/dist/plugins/spaces-home-control/services/space-sensor-state.service.d.ts +3 -5
  480. package/dist/plugins/spaces-home-control/services/space-sensor-state.service.js +7 -10
  481. package/dist/plugins/spaces-home-control/services/space-sensor-state.service.js.map +1 -1
  482. package/dist/plugins/spaces-home-control/services/space-state-read.service.d.ts +47 -0
  483. package/dist/plugins/spaces-home-control/services/space-state-read.service.js +262 -0
  484. package/dist/plugins/spaces-home-control/services/space-state-read.service.js.map +1 -0
  485. package/dist/plugins/spaces-home-control/spaces-home-control.plugin.js +4 -0
  486. package/dist/plugins/spaces-home-control/spaces-home-control.plugin.js.map +1 -1
  487. package/dist/spec/channels.d.ts +51 -1
  488. package/dist/spec/channels.js +64 -1
  489. package/dist/spec/channels.js.map +1 -1
  490. package/dist/spec/devices.d.ts +155 -2
  491. package/dist/spec/devices.js +161 -2
  492. package/dist/spec/devices.js.map +1 -1
  493. package/dist/tsconfig.build.tsbuildinfo +1 -1
  494. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"urls.model.js","sourceRoot":"","sources":["../../../../src/modules/remote-access/models/urls.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAAiD;AACjD,qDAAgF;AAEhF,6CAA6F;AAE7F,4EAA+E;AAE/E,qDAA6D;AAQtD,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;CA0CjC,CAAA;AA1CY,sDAAqB;AAQjC;IAPC,IAAA,qBAAW,EAAC;QACZ,WAAW,EAAE,kDAAkD;QAC/D,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,uBAAuB;KAChC,CAAC;IACD,IAAA,0BAAM,GAAE;IACR,IAAA,0BAAQ,GAAE;;uDACM;AAWjB;IATC,IAAA,qBAAW,EAAC;QACZ,WAAW,EAAE,4FAA4F;QACzG,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACzB,OAAO,EAAE,EAAE;KACX,CAAC;IACD,IAAA,0BAAM,GAAE;IACR,IAAA,yBAAO,GAAE;IACT,IAAA,0BAAQ,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;yDACJ;AAWrB;IATC,IAAA,qBAAW,EAAC;QACZ,WAAW,EAAE,8FAA8F;QAC3G,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,EAAE,IAAI,EAAE,IAAA,uBAAa,EAAC,0CAAyB,CAAC,EAAE;KACzD,CAAC;IACD,IAAA,0BAAM,GAAE;IACR,IAAA,yBAAO,GAAE;IACT,IAAA,gCAAc,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC9B,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,0CAAyB,CAAC;;uDACA;AAWtC;IATC,IAAA,6BAAmB,EAAC;QACpB,WAAW,EAAE,qGAAqG;QAClH,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,IAAI;KACb,CAAC;IACD,IAAA,0BAAM,GAAE;IACR,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;sDACY;gCAzCX,qBAAqB;IADjC,IAAA,mBAAS,EAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC;GACrC,qBAAqB,CA0CjC;AAMM,IAAM,6BAA6B,GAAnC,MAAM,6BAA8B,SAAQ,6CAA+C;CAOjG,CAAA;AAPY,sEAA6B;AAMjC;IALP,IAAA,qBAAW,EAAC;QACZ,WAAW,EAAE,6CAA6C;QAC1D,IAAI,EAAE,GAAG,EAAE,CAAC,qBAAqB;KACjC,CAAC;IACD,IAAA,0BAAM,GAAE;8BACK,qBAAqB;2DAAC;wCANxB,6BAA6B;IADzC,IAAA,mBAAS,EAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE,CAAC;GACpC,6BAA6B,CAOzC"}
1
+ {"version":3,"file":"urls.model.js","sourceRoot":"","sources":["../../../../src/modules/remote-access/models/urls.model.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yDAAiD;AACjD,qDAA4F;AAE5F,6CAA6F;AAE7F,4EAA+E;AAE/E,qDAA6D;AAQtD,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;CAyDjC,CAAA;AAzDY,sDAAqB;AAIjC;IAHC,IAAA,qBAAW,EAAC,EAAE,WAAW,EAAE,8CAA8C,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC5F,IAAA,0BAAM,GAAE;IACR,IAAA,0BAAQ,GAAE;;oDACG;AAUd;IARC,IAAA,qBAAW,EAAC;QACZ,WAAW,EAAE,2DAA2D;QACxE,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,CAAC;KACV,CAAC;IACD,IAAA,0BAAM,GAAE;IACR,IAAA,uBAAK,GAAE;IACP,IAAA,qBAAG,EAAC,CAAC,CAAC;;uDACU;AASjB;IAPC,IAAA,qBAAW,EAAC;QACZ,WAAW,EAAE,kDAAkD;QAC/D,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,uBAAuB;KAChC,CAAC;IACD,IAAA,0BAAM,GAAE;IACR,IAAA,0BAAQ,GAAE;;uDACM;AAWjB;IATC,IAAA,qBAAW,EAAC;QACZ,WAAW,EAAE,4FAA4F;QACzG,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QACzB,OAAO,EAAE,EAAE;KACX,CAAC;IACD,IAAA,0BAAM,GAAE;IACR,IAAA,yBAAO,GAAE;IACT,IAAA,0BAAQ,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;yDACJ;AAWrB;IATC,IAAA,qBAAW,EAAC;QACZ,WAAW,EAAE,8FAA8F;QAC3G,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,EAAE,IAAI,EAAE,IAAA,uBAAa,EAAC,0CAAyB,CAAC,EAAE;KACzD,CAAC;IACD,IAAA,0BAAM,GAAE;IACR,IAAA,yBAAO,GAAE;IACT,IAAA,gCAAc,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC9B,IAAA,wBAAI,EAAC,GAAG,EAAE,CAAC,0CAAyB,CAAC;;uDACA;AAWtC;IATC,IAAA,6BAAmB,EAAC;QACpB,WAAW,EAAE,qGAAqG;QAClH,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI;QACd,OAAO,EAAE,IAAI;KACb,CAAC;IACD,IAAA,0BAAM,GAAE;IACR,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;sDACY;gCAxDX,qBAAqB;IADjC,IAAA,mBAAS,EAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC;GACrC,qBAAqB,CAyDjC;AAMM,IAAM,6BAA6B,GAAnC,MAAM,6BAA8B,SAAQ,6CAA+C;CAOjG,CAAA;AAPY,sEAA6B;AAMjC;IALP,IAAA,qBAAW,EAAC;QACZ,WAAW,EAAE,6CAA6C;QAC1D,IAAI,EAAE,GAAG,EAAE,CAAC,qBAAqB;KACjC,CAAC;IACD,IAAA,0BAAM,GAAE;8BACK,qBAAqB;2DAAC;wCANxB,6BAA6B;IADzC,IAAA,mBAAS,EAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE,CAAC;GACpC,6BAA6B,CAOzC"}
@@ -30,9 +30,26 @@ export interface RemoteAccessProviderCapabilities {
30
30
  ssh: boolean;
31
31
  }
32
32
  export type RemoteAccessProviderKind = 'mesh' | 'tunnel' | 'vpn' | 'external';
33
+ export interface RemoteAccessStatusReadOptions {
34
+ signal?: AbortSignal;
35
+ fresh?: boolean;
36
+ }
37
+ export interface RemoteAccessSnapshotVersion {
38
+ epoch: string;
39
+ revision: number;
40
+ }
41
+ export interface RemoteAccessAcceptedProviderStatus extends RemoteAccessProviderStatus, RemoteAccessSnapshotVersion {
42
+ enabled: boolean;
43
+ }
44
+ export interface RemoteAccessProviderSnapshot<T = unknown> {
45
+ status: RemoteAccessProviderStatus;
46
+ metadata?: T;
47
+ }
33
48
  export interface IRemoteAccessProvider {
34
49
  readonly type: string;
35
50
  readonly kind: RemoteAccessProviderKind;
36
51
  readonly capabilities: RemoteAccessProviderCapabilities;
37
- getStatus(): Promise<RemoteAccessProviderStatus>;
52
+ getStatus(options?: RemoteAccessStatusReadOptions): Promise<RemoteAccessProviderStatus>;
53
+ getSnapshot?(options?: RemoteAccessStatusReadOptions): Promise<RemoteAccessProviderSnapshot>;
54
+ awaitObservationIdle?(): Promise<void>;
38
55
  }
@@ -2,9 +2,10 @@ export declare const REMOTE_ACCESS_MODULE_PREFIX = "remote-access";
2
2
  export declare const REMOTE_ACCESS_MODULE_NAME = "remote-access-module";
3
3
  export declare const REMOTE_ACCESS_MODULE_API_TAG_NAME = "Remote access module";
4
4
  export declare const REMOTE_ACCESS_MODULE_API_TAG_DESCRIPTION = "Endpoints for the internal/external URL registry, remote-access provider status and posture advisories.";
5
- export declare const REMOTE_ACCESS_PROVIDER_STATUS_TIMEOUT_MS = 5000;
5
+ export declare const REMOTE_ACCESS_PROVIDER_STATUS_TIMEOUT_MS = 7000;
6
6
  export declare const REMOTE_ACCESS_CONFIG_READ_RETRY_INTERVAL_MS = 30000;
7
7
  export declare enum EventType {
8
+ PROVIDER_OBSERVATION = "RemoteAccessModule.Provider.Observation",
8
9
  PROVIDER_STATUS = "RemoteAccessModule.Provider.Status",
9
10
  URLS_CHANGED = "RemoteAccessModule.Urls.Changed",
10
11
  SETUP_PROGRESS = "RemoteAccessModule.Setup.Progress"
@@ -5,10 +5,11 @@ exports.REMOTE_ACCESS_MODULE_PREFIX = 'remote-access';
5
5
  exports.REMOTE_ACCESS_MODULE_NAME = 'remote-access-module';
6
6
  exports.REMOTE_ACCESS_MODULE_API_TAG_NAME = 'Remote access module';
7
7
  exports.REMOTE_ACCESS_MODULE_API_TAG_DESCRIPTION = 'Endpoints for the internal/external URL registry, remote-access provider status and posture advisories.';
8
- exports.REMOTE_ACCESS_PROVIDER_STATUS_TIMEOUT_MS = 5000;
8
+ exports.REMOTE_ACCESS_PROVIDER_STATUS_TIMEOUT_MS = 7000;
9
9
  exports.REMOTE_ACCESS_CONFIG_READ_RETRY_INTERVAL_MS = 30_000;
10
10
  var EventType;
11
11
  (function (EventType) {
12
+ EventType["PROVIDER_OBSERVATION"] = "RemoteAccessModule.Provider.Observation";
12
13
  EventType["PROVIDER_STATUS"] = "RemoteAccessModule.Provider.Status";
13
14
  EventType["URLS_CHANGED"] = "RemoteAccessModule.Urls.Changed";
14
15
  EventType["SETUP_PROGRESS"] = "RemoteAccessModule.Setup.Progress";
@@ -1 +1 @@
1
- {"version":3,"file":"remote-access.constants.js","sourceRoot":"","sources":["../../../src/modules/remote-access/remote-access.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,2BAA2B,GAAG,eAAe,CAAC;AAE9C,QAAA,yBAAyB,GAAG,sBAAsB,CAAC;AAEnD,QAAA,iCAAiC,GAAG,sBAAsB,CAAC;AAE3D,QAAA,wCAAwC,GACpD,yGAAyG,CAAC;AAU9F,QAAA,wCAAwC,GAAG,IAAI,CAAC;AAWhD,QAAA,2CAA2C,GAAG,MAAM,CAAC;AAElE,IAAY,SAKX;AALD,WAAY,SAAS;IACpB,mEAAsD,CAAA;IACtD,6DAAgD,CAAA;IAEhD,iEAAoD,CAAA;AACrD,CAAC,EALW,SAAS,yBAAT,SAAS,QAKpB"}
1
+ {"version":3,"file":"remote-access.constants.js","sourceRoot":"","sources":["../../../src/modules/remote-access/remote-access.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,2BAA2B,GAAG,eAAe,CAAC;AAE9C,QAAA,yBAAyB,GAAG,sBAAsB,CAAC;AAEnD,QAAA,iCAAiC,GAAG,sBAAsB,CAAC;AAE3D,QAAA,wCAAwC,GACpD,yGAAyG,CAAC;AAG9F,QAAA,wCAAwC,GAAG,IAAI,CAAC;AAWhD,QAAA,2CAA2C,GAAG,MAAM,CAAC;AAElE,IAAY,SAQX;AARD,WAAY,SAAS;IAEpB,6EAAgE,CAAA;IAEhE,mEAAsD,CAAA;IACtD,6DAAgD,CAAA;IAEhD,iEAAoD,CAAA;AACrD,CAAC,EARW,SAAS,yBAAT,SAAS,QAQpB"}
@@ -13,6 +13,7 @@ export declare class RemoteAccessProxyContributionService implements OnModuleIni
13
13
  private readonly logger;
14
14
  private readonly warnedRejectedEntries;
15
15
  private cachedAddresses;
16
+ private cachedRevision;
16
17
  private lastConfigErrorMessage;
17
18
  private configReadFailedAt;
18
19
  constructor(trustedProxyRegistry: TrustedProxyRegistryService, configService: ConfigService, statusService: RemoteAccessStatusService);
@@ -28,6 +28,7 @@ let RemoteAccessProxyContributionService = class RemoteAccessProxyContributionSe
28
28
  this.logger = (0, logger_1.createExtensionLogger)(remote_access_constants_1.REMOTE_ACCESS_MODULE_NAME, 'RemoteAccessProxyContributionService');
29
29
  this.warnedRejectedEntries = new Set();
30
30
  this.cachedAddresses = null;
31
+ this.cachedRevision = null;
31
32
  this.lastConfigErrorMessage = null;
32
33
  this.configReadFailedAt = null;
33
34
  }
@@ -54,8 +55,10 @@ let RemoteAccessProxyContributionService = class RemoteAccessProxyContributionSe
54
55
  this.cachedAddresses = null;
55
56
  }
56
57
  computeAddresses() {
57
- if (this.cachedAddresses === null || this.isFailedReadDueForRetry()) {
58
+ const revision = this.statusService.getVersion().revision;
59
+ if (this.cachedAddresses === null || this.cachedRevision !== revision || this.isFailedReadDueForRetry()) {
58
60
  this.cachedAddresses = this.recomputeAddresses();
61
+ this.cachedRevision = revision;
59
62
  }
60
63
  return this.cachedAddresses;
61
64
  }
@@ -1 +1 @@
1
- {"version":3,"file":"remote-access-proxy-contribution.service.js","sourceRoot":"","sources":["../../../../src/modules/remote-access/services/remote-access-proxy-contribution.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remote-access-proxy-contribution.service.js","sourceRoot":"","sources":["../../../../src/modules/remote-access/services/remote-access-proxy-contribution.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA0D;AAC1D,yDAAgD;AAEhD,mDAA+D;AAC/D,sGAAgG;AAChG,mEAA0E;AAC1E,oEAA6E;AAC7E,yEAAqE;AAErE,wEAIoC;AAEpC,iFAA2E;AAK3E,MAAM,kCAAkC,GAAG,GAAG,CAAC;AAgDxC,IAAM,oCAAoC,GAA1C,MAAM,oCAAoC;IAgChD,YACkB,oBAAiD,EACjD,aAA4B,EAC5B,aAAwC;QAFxC,yBAAoB,GAApB,oBAAoB,CAA6B;QACjD,kBAAa,GAAb,aAAa,CAAe;QAC5B,kBAAa,GAAb,aAAa,CAA2B;QAlCzC,WAAM,GAAG,IAAA,8BAAqB,EAAC,mDAAyB,EAAE,sCAAsC,CAAC,CAAC;QAUlG,0BAAqB,GAAG,IAAI,GAAG,EAAU,CAAC;QAKnD,oBAAe,GAAoB,IAAI,CAAC;QACxC,mBAAc,GAAkB,IAAI,CAAC;QAMrC,2BAAsB,GAAkB,IAAI,CAAC;QAO7C,uBAAkB,GAAkB,IAAI,CAAC;IAM9C,CAAC;IAEJ,YAAY;QACX,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;YAClC,EAAE,EAAE,mDAAyB;YAC7B,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE;SACxC,CAAC,CAAC;IACJ,CAAC;IAGD,gBAAgB;QACf,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAGD,eAAe,CAAC,KAAyB;QAExC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7E,IAAI,CAAC,UAAU,EAAE,CAAC;YAElB,OAAO;QACR,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,mDAAyB,EAAE,CAAC;YAC3E,OAAO;QACR,CAAC;QAED,IAAI,CAAC,UAAU,EAAE,CAAC;IACnB,CAAC;IAEO,UAAU;QACjB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC7B,CAAC;IAEO,gBAAgB;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;QAC1D,IAAI,IAAI,CAAC,eAAe,KAAK,IAAI,IAAI,IAAI,CAAC,cAAc,KAAK,QAAQ,IAAI,IAAI,CAAC,uBAAuB,EAAE,EAAE,CAAC;YACzG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACjD,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;QAChC,CAAC;QAED,OAAO,IAAI,CAAC,eAAe,CAAC;IAC7B,CAAC;IASO,uBAAuB;QAC9B,OAAO,CACN,IAAI,CAAC,kBAAkB,KAAK,IAAI;YAChC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,kBAAkB,IAAI,qEAA2C,CACnF,CAAC;IACH,CAAC;IAEO,kBAAkB;QACzB,IAAI,MAA+B,CAAC;QAEpC,IAAI,CAAC;YACJ,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAA0B,mDAAyB,CAAC,CAAC;QACjG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;YAMzG,IAAI,IAAI,CAAC,sBAAsB,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC;gBACjD,IAAI,CAAC,sBAAsB,GAAG,GAAG,CAAC,OAAO,CAAC;gBAE1C,IAAI,CAAC,MAAM,CAAC,IAAI,CACf,oJAAoJ,GAAG,CAAC,OAAO,EAAE,CACjK,CAAC;YACH,CAAC;YAKD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAErC,OAAO,EAAE,CAAC;QACX,CAAC;QAED,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACnC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAM/B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO,EAAE,CAAC;QACX,CAAC;QAED,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,IAAI,MAAM,CAAC,qBAAqB,EAAE,CAAC;YAClC,SAAS,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC;QAC1C,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,EAAE,CAAC;YAC7D,IAAI,MAAM,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;gBAClC,SAAS;YACV,CAAC;YAED,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC3C,IAAI,IAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,EAAE,CAAC;oBAChD,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACvB,CAAC;qBAAM,CAAC;oBACP,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC5C,CAAC;YACF,CAAC;QACF,CAAC;QAED,OAAO,SAAS,CAAC;IAClB,CAAC;IASO,8BAA8B,CAAC,KAAa;QACnD,OAAO,IAAA,yCAAwB,EAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAChE,CAAC;IAEO,iBAAiB,CAAC,YAAoB,EAAE,KAAa;QAG5D,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;QAElD,IAAI,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACzC,OAAO;QACR,CAAC;QAED,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,IAAI,kCAAkC,EAAE,CAAC;YAO3E,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBACpD,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBAC7C,MAAM;YACP,CAAC;QACF,CAAC;QAED,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEpC,IAAI,CAAC,MAAM,CAAC,IAAI,CACf,aAAa,YAAY,wCAAwC,KAAK,4HAA4H,CAClM,CAAC;IACH,CAAC;CACD,CAAA;AAnMY,oFAAoC;AA8ChD;IADC,IAAA,uBAAO,EAAC,mCAAS,CAAC,eAAe,CAAC;;;;4EAGlC;AAGD;IADC,IAAA,uBAAO,EAAC,4BAAe,CAAC,cAAc,CAAC;;;;2EAcvC;+CAhEW,oCAAoC;IADhD,IAAA,mBAAU,GAAE;qCAkC4B,4DAA2B;QAClC,8BAAa;QACb,wDAAyB;GAnC9C,oCAAoC,CAmMhD"}
@@ -1,22 +1,54 @@
1
+ import { EventEmitter2 } from '@nestjs/event-emitter';
1
2
  import { ConfigService } from '../../config/services/config.service';
2
3
  import { RemoteAccessProviderModel } from '../models/provider.model';
3
- import { RemoteAccessProviderStatus } from '../platforms/remote-access-provider.platform';
4
+ import { RemoteAccessAcceptedProviderStatus, RemoteAccessProviderSnapshot, RemoteAccessProviderStatus, RemoteAccessSnapshotVersion, RemoteAccessStatusReadOptions } from '../platforms/remote-access-provider.platform';
4
5
  import { RemoteAccessProviderRegistryService } from './remote-access-provider-registry.service';
5
6
  export declare class RemoteAccessStatusService {
6
7
  private readonly registry;
7
8
  private readonly configService;
9
+ private readonly eventEmitter?;
8
10
  private readonly logger;
11
+ private readonly epoch;
12
+ private revision;
9
13
  private readonly cache;
14
+ private readonly detailSnapshots;
15
+ private readonly generations;
16
+ private readonly observations;
17
+ private readonly configRefreshes;
18
+ private readonly configRefreshWorkers;
10
19
  private readonly warnedTypeMismatches;
11
- constructor(registry: RemoteAccessProviderRegistryService, configService: ConfigService);
20
+ constructor(registry: RemoteAccessProviderRegistryService, configService: ConfigService, eventEmitter?: EventEmitter2);
12
21
  hasProvider(type: string): boolean;
13
- onProviderStatus(status: RemoteAccessProviderStatus): void;
14
- getCachedStatuses(): RemoteAccessProviderStatus[];
15
- getAggregatedStatuses(): Promise<RemoteAccessProviderModel[]>;
16
- getProviderStatus(type: string): Promise<RemoteAccessProviderModel>;
22
+ getVersion(): RemoteAccessSnapshotVersion;
23
+ onProviderStatus(observation: RemoteAccessProviderStatus | RemoteAccessProviderSnapshot): void;
24
+ onConfigUpdated(event: {
25
+ source: string;
26
+ type: 'module' | 'plugin';
27
+ }): void;
28
+ getCachedStatuses(): RemoteAccessAcceptedProviderStatus[];
29
+ getCachedProviderStatus(type: string): RemoteAccessAcceptedProviderStatus | undefined;
30
+ getCachedProviderModels(): RemoteAccessProviderModel[];
31
+ getAggregatedStatuses(options?: RemoteAccessStatusReadOptions): Promise<RemoteAccessProviderModel[]>;
32
+ getProviderStatus(type: string, options?: RemoteAccessStatusReadOptions): Promise<RemoteAccessProviderModel>;
33
+ getCachedProviderSnapshot<T = unknown>(type: string): {
34
+ status: RemoteAccessProviderModel;
35
+ metadata?: T;
36
+ } | undefined;
37
+ getProviderSnapshot<T = unknown>(type: string, options?: RemoteAccessStatusReadOptions): Promise<{
38
+ status: RemoteAccessProviderModel;
39
+ metadata?: T;
40
+ }>;
17
41
  private isProviderEnabled;
18
42
  private pollProvider;
43
+ private scheduleConfigRefresh;
44
+ private startConfigRefreshWorker;
45
+ private refreshAfterObservationIdle;
46
+ private finishConfigRefresh;
47
+ private observe;
48
+ private invalidateObservation;
49
+ private prune;
50
+ private accept;
51
+ private toModel;
19
52
  private normalizeStatusType;
20
- private fetchStatus;
21
- private raceWithTimeout;
53
+ private errorStatus;
22
54
  }
@@ -8,12 +8,17 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
11
14
  Object.defineProperty(exports, "__esModule", { value: true });
12
15
  exports.RemoteAccessStatusService = void 0;
16
+ const crypto_1 = require("crypto");
13
17
  const common_1 = require("@nestjs/common");
14
18
  const event_emitter_1 = require("@nestjs/event-emitter");
15
19
  const logger_1 = require("../../../common/logger");
16
20
  const transform_utils_1 = require("../../../common/utils/transform.utils");
21
+ const config_constants_1 = require("../../config/config.constants");
17
22
  const config_service_1 = require("../../config/services/config.service");
18
23
  const provider_model_1 = require("../models/provider.model");
19
24
  const remote_access_constants_1 = require("../remote-access.constants");
@@ -21,55 +26,133 @@ const remote_access_exceptions_1 = require("../remote-access.exceptions");
21
26
  const remote_access_provider_registry_service_1 = require("./remote-access-provider-registry.service");
22
27
  class ProviderStatusTimeoutError extends Error {
23
28
  }
29
+ const freezeSnapshot = (value) => {
30
+ if (value !== null && typeof value === 'object') {
31
+ for (const nested of Object.values(value)) {
32
+ freezeSnapshot(nested);
33
+ }
34
+ Object.freeze(value);
35
+ }
36
+ return value;
37
+ };
24
38
  let RemoteAccessStatusService = class RemoteAccessStatusService {
25
- constructor(registry, configService) {
39
+ constructor(registry, configService, eventEmitter) {
26
40
  this.registry = registry;
27
41
  this.configService = configService;
42
+ this.eventEmitter = eventEmitter;
28
43
  this.logger = (0, logger_1.createExtensionLogger)(remote_access_constants_1.REMOTE_ACCESS_MODULE_NAME, 'RemoteAccessStatusService');
44
+ this.epoch = (0, crypto_1.randomUUID)();
45
+ this.revision = 0;
29
46
  this.cache = new Map();
47
+ this.detailSnapshots = new Map();
48
+ this.generations = new Map();
49
+ this.observations = new Map();
50
+ this.configRefreshes = new Map();
51
+ this.configRefreshWorkers = new Map();
30
52
  this.warnedTypeMismatches = new Set();
31
53
  }
32
54
  hasProvider(type) {
33
55
  return this.registry.get(type) !== null;
34
56
  }
35
- onProviderStatus(status) {
57
+ getVersion() {
58
+ this.getCachedStatuses();
59
+ return { epoch: this.epoch, revision: this.revision };
60
+ }
61
+ onProviderStatus(observation) {
62
+ const { status, metadata } = 'status' in observation ? observation : { status: observation, metadata: undefined };
36
63
  const provider = this.registry.get(status.type);
37
64
  if (!provider) {
38
65
  this.logger.debug(`Ignoring a Provider.Status event for '${status.type}', which is not a registered provider type.`);
39
66
  return;
40
67
  }
41
- if (!this.isProviderEnabled(provider.type)) {
42
- this.cache.delete(provider.type);
43
- this.logger.debug(`Ignoring a Provider.Status event for '${provider.type}', whose plugin is disabled.`);
44
- return;
68
+ this.invalidateObservation(provider.type);
69
+ const accepted = this.accept(provider, status, metadata);
70
+ const refresh = this.configRefreshes.get(provider.type);
71
+ if (refresh)
72
+ this.finishConfigRefresh(provider.type, refresh, accepted);
73
+ }
74
+ onConfigUpdated(event) {
75
+ if (event.type === 'plugin' && this.hasProvider(event.source)) {
76
+ this.invalidateObservation(event.source);
77
+ const provider = this.registry.get(event.source);
78
+ if (provider) {
79
+ if (!this.isProviderEnabled(provider.type)) {
80
+ const status = this.accept(provider, this.errorStatus(provider, 'Provider plugin is disabled.'));
81
+ const refresh = this.configRefreshes.get(provider.type);
82
+ if (refresh)
83
+ this.finishConfigRefresh(provider.type, refresh, status);
84
+ }
85
+ else {
86
+ this.scheduleConfigRefresh(provider);
87
+ }
88
+ }
89
+ }
90
+ else if (event.type === 'module' && event.source === remote_access_constants_1.REMOTE_ACCESS_MODULE_NAME) {
91
+ this.revision++;
45
92
  }
46
- this.cache.set(provider.type, this.normalizeStatusType(provider, status));
47
93
  }
48
94
  getCachedStatuses() {
49
- for (const type of Array.from(this.cache.keys())) {
95
+ for (const type of this.cache.keys()) {
50
96
  if (!this.isProviderEnabled(type)) {
51
- this.cache.delete(type);
97
+ this.invalidateObservation(type);
98
+ const provider = this.registry.get(type);
99
+ if (provider) {
100
+ this.accept(provider, this.errorStatus(provider, 'Provider plugin is disabled.'));
101
+ }
102
+ else {
103
+ this.prune(type);
104
+ }
52
105
  }
53
106
  }
54
107
  return Array.from(this.cache.values());
55
108
  }
56
- async getAggregatedStatuses() {
57
- const enabledProviders = this.registry.getAll().filter((provider) => {
58
- if (this.isProviderEnabled(provider.type)) {
59
- return true;
60
- }
61
- this.cache.delete(provider.type);
62
- return false;
109
+ getCachedProviderStatus(type) {
110
+ this.getCachedStatuses();
111
+ return this.cache.get(type);
112
+ }
113
+ getCachedProviderModels() {
114
+ this.getCachedStatuses();
115
+ return this.registry.getAll().flatMap((provider) => {
116
+ const status = this.cache.get(provider.type);
117
+ return status ? [this.toModel(provider, status)] : [];
63
118
  });
64
- const statuses = await Promise.all(enabledProviders.map((provider) => this.pollProvider(provider)));
65
- return statuses.filter((status) => this.isProviderEnabled(status.type));
66
119
  }
67
- async getProviderStatus(type) {
120
+ async getAggregatedStatuses(options = {}) {
121
+ const enabled = this.registry.getAll().filter((provider) => this.isProviderEnabled(provider.type));
122
+ await Promise.all(enabled.map((provider) => this.pollProvider(provider, options)));
123
+ return this.getCachedProviderModels();
124
+ }
125
+ async getProviderStatus(type, options = {}) {
68
126
  const provider = this.registry.get(type);
69
127
  if (!provider) {
70
128
  throw new remote_access_exceptions_1.RemoteAccessProviderNotFoundException(`Remote access provider '${type}' is not registered.`);
71
129
  }
72
- return this.pollProvider(provider);
130
+ return this.pollProvider(provider, options);
131
+ }
132
+ getCachedProviderSnapshot(type) {
133
+ const provider = this.registry.get(type);
134
+ let snapshot = this.detailSnapshots.get(type);
135
+ if (provider && snapshot?.enabled && !this.isProviderEnabled(type)) {
136
+ this.invalidateObservation(type);
137
+ this.accept(provider, this.errorStatus(provider, 'Provider plugin is disabled.'));
138
+ snapshot = this.detailSnapshots.get(type);
139
+ }
140
+ if (!provider || !snapshot) {
141
+ return undefined;
142
+ }
143
+ return {
144
+ status: this.toModel(provider, snapshot.status),
145
+ metadata: structuredClone(snapshot.metadata),
146
+ };
147
+ }
148
+ async getProviderSnapshot(type, options = {}) {
149
+ const provider = this.registry.get(type);
150
+ if (!provider) {
151
+ throw new remote_access_exceptions_1.RemoteAccessProviderNotFoundException(`Remote access provider '${type}' is not registered.`);
152
+ }
153
+ const result = await (this.configRefreshes.get(type)?.result ??
154
+ (this.observations.get(type) ?? this.observe(provider, options)).result);
155
+ return this.getCachedProviderSnapshot(type) ?? { status: this.toModel(provider, result) };
73
156
  }
74
157
  isProviderEnabled(type) {
75
158
  try {
@@ -79,16 +162,201 @@ let RemoteAccessStatusService = class RemoteAccessStatusService {
79
162
  return false;
80
163
  }
81
164
  }
82
- async pollProvider(provider) {
83
- const status = this.normalizeStatusType(provider, await this.fetchStatus(provider));
84
- if (this.isProviderEnabled(provider.type)) {
85
- this.cache.set(provider.type, status);
165
+ async pollProvider(provider, options) {
166
+ if (!this.isProviderEnabled(provider.type)) {
167
+ this.invalidateObservation(provider.type);
168
+ this.prune(provider.type);
169
+ return this.toModel(provider, {
170
+ ...this.errorStatus(provider, 'Provider plugin is disabled.'),
171
+ enabled: false,
172
+ ...this.getVersion(),
173
+ });
174
+ }
175
+ const result = await (this.configRefreshes.get(provider.type)?.result ??
176
+ (this.observations.get(provider.type) ?? this.observe(provider, options)).result);
177
+ return this.toModel(provider, this.getCachedProviderStatus(provider.type) ?? result);
178
+ }
179
+ scheduleConfigRefresh(provider) {
180
+ const existing = this.configRefreshes.get(provider.type);
181
+ if (existing) {
182
+ existing.generation++;
183
+ return;
184
+ }
185
+ let resolve;
186
+ const result = new Promise((done) => {
187
+ resolve = done;
188
+ });
189
+ const refresh = {
190
+ generation: 0,
191
+ result,
192
+ resolve,
193
+ timer: setTimeout(() => {
194
+ if (this.configRefreshes.get(provider.type) !== refresh)
195
+ return;
196
+ this.invalidateObservation(provider.type);
197
+ if (this.configRefreshes.get(provider.type) !== refresh)
198
+ return;
199
+ const status = this.accept(provider, this.errorStatus(provider, `Provider did not report a fresh configuration status within ${remote_access_constants_1.REMOTE_ACCESS_PROVIDER_STATUS_TIMEOUT_MS}ms.`));
200
+ resolve(status);
201
+ }, remote_access_constants_1.REMOTE_ACCESS_PROVIDER_STATUS_TIMEOUT_MS),
202
+ };
203
+ this.configRefreshes.set(provider.type, refresh);
204
+ this.startConfigRefreshWorker(provider);
205
+ }
206
+ startConfigRefreshWorker(provider) {
207
+ const refresh = this.configRefreshes.get(provider.type);
208
+ if (!refresh || this.configRefreshWorkers.has(provider.type))
209
+ return;
210
+ const worker = this.refreshAfterObservationIdle(provider, refresh)
211
+ .catch(() => {
212
+ if (this.configRefreshes.get(provider.type) !== refresh)
213
+ return;
214
+ const status = this.accept(provider, this.errorStatus(provider, 'Failed to retrieve fresh configuration status.'));
215
+ this.finishConfigRefresh(provider.type, refresh, status);
216
+ })
217
+ .finally(() => {
218
+ this.configRefreshWorkers.delete(provider.type);
219
+ this.startConfigRefreshWorker(provider);
220
+ });
221
+ this.configRefreshWorkers.set(provider.type, worker);
222
+ }
223
+ async refreshAfterObservationIdle(provider, refresh) {
224
+ while (this.configRefreshes.get(provider.type) === refresh) {
225
+ await this.observations.get(provider.type)?.settled;
226
+ await provider.awaitObservationIdle?.();
227
+ if (this.configRefreshes.get(provider.type) !== refresh)
228
+ return;
229
+ if (!this.isProviderEnabled(provider.type)) {
230
+ const status = this.accept(provider, this.errorStatus(provider, 'Provider plugin is disabled.'));
231
+ this.finishConfigRefresh(provider.type, refresh, status);
232
+ return;
233
+ }
234
+ const generation = refresh.generation;
235
+ const observation = this.observations.get(provider.type) ?? this.observe(provider, { fresh: true });
236
+ const status = await observation.result;
237
+ if (generation === refresh.generation) {
238
+ this.finishConfigRefresh(provider.type, refresh, status);
239
+ return;
240
+ }
86
241
  }
87
- return (0, transform_utils_1.toInstance)(provider_model_1.RemoteAccessProviderModel, {
242
+ }
243
+ finishConfigRefresh(type, refresh, status) {
244
+ if (this.configRefreshes.get(type) !== refresh)
245
+ return;
246
+ clearTimeout(refresh.timer);
247
+ this.configRefreshes.delete(type);
248
+ refresh.resolve(status);
249
+ }
250
+ observe(provider, options) {
251
+ const generation = this.generations.get(provider.type) ?? 0;
252
+ const controller = new AbortController();
253
+ let expired = false;
254
+ let timer;
255
+ let work;
256
+ try {
257
+ const readOptions = { fresh: options.fresh, signal: controller.signal };
258
+ work = provider.getSnapshot
259
+ ? provider.getSnapshot(readOptions)
260
+ : provider.getStatus(readOptions).then((status) => ({ status }));
261
+ }
262
+ catch (error) {
263
+ work = Promise.reject(error instanceof Error ? error : new Error('Provider observation failed.'));
264
+ }
265
+ const deadline = new Promise((_resolve, reject) => {
266
+ timer = setTimeout(() => {
267
+ expired = true;
268
+ reject(new ProviderStatusTimeoutError());
269
+ controller.abort();
270
+ }, remote_access_constants_1.REMOTE_ACCESS_PROVIDER_STATUS_TIMEOUT_MS);
271
+ });
272
+ const result = Promise.race([work, deadline])
273
+ .catch((error) => {
274
+ const message = error instanceof ProviderStatusTimeoutError
275
+ ? `Provider did not report a status within ${remote_access_constants_1.REMOTE_ACCESS_PROVIDER_STATUS_TIMEOUT_MS}ms.`
276
+ : 'Failed to retrieve status from this provider.';
277
+ this.logger.error(`Failed to retrieve status from provider '${provider.type}'`, { message });
278
+ return { status: this.errorStatus(provider, message) };
279
+ })
280
+ .then(({ status, metadata }) => {
281
+ clearTimeout(timer);
282
+ if (generation !== (this.generations.get(provider.type) ?? 0)) {
283
+ return (this.detailSnapshots.get(provider.type)?.status ?? {
284
+ ...this.errorStatus(provider, 'Provider observation was superseded.'),
285
+ enabled: this.isProviderEnabled(provider.type),
286
+ ...this.getVersion(),
287
+ });
288
+ }
289
+ return this.accept(provider, status, metadata);
290
+ });
291
+ let resolveSettled;
292
+ const settled = new Promise((resolve) => {
293
+ resolveSettled = resolve;
294
+ });
295
+ const observation = { controller, result, settled };
296
+ this.observations.set(provider.type, observation);
297
+ let workSettled = false;
298
+ let resultSettled = false;
299
+ const release = () => {
300
+ if (workSettled && resultSettled && this.observations.get(provider.type) === observation) {
301
+ this.observations.delete(provider.type);
302
+ resolveSettled();
303
+ }
304
+ };
305
+ const settleWork = () => {
306
+ workSettled = true;
307
+ if (!expired) {
308
+ clearTimeout(timer);
309
+ }
310
+ release();
311
+ };
312
+ const settleResult = () => {
313
+ resultSettled = true;
314
+ release();
315
+ };
316
+ void work.then(settleWork, settleWork);
317
+ void result.then(settleResult, settleResult);
318
+ return observation;
319
+ }
320
+ invalidateObservation(type) {
321
+ this.generations.set(type, (this.generations.get(type) ?? 0) + 1);
322
+ this.observations.get(type)?.controller.abort();
323
+ }
324
+ prune(type) {
325
+ if (this.cache.delete(type)) {
326
+ this.revision++;
327
+ }
328
+ }
329
+ accept(provider, status, metadata) {
330
+ const enabled = this.isProviderEnabled(provider.type);
331
+ const accepted = freezeSnapshot(structuredClone({
332
+ ...this.normalizeStatusType(provider, status),
333
+ ...(!enabled ? { state: 'disconnected', endpoints: [], proxyAddresses: [] } : {}),
334
+ enabled,
335
+ epoch: this.epoch,
336
+ revision: ++this.revision,
337
+ }));
338
+ this.detailSnapshots.set(provider.type, {
339
+ status: accepted,
340
+ metadata: freezeSnapshot(structuredClone(metadata)),
341
+ enabled,
342
+ });
343
+ if (enabled) {
344
+ this.cache.set(provider.type, accepted);
345
+ }
346
+ else {
347
+ this.cache.delete(provider.type);
348
+ }
349
+ this.eventEmitter?.emit(remote_access_constants_1.EventType.PROVIDER_STATUS, accepted);
350
+ return accepted;
351
+ }
352
+ toModel(provider, status) {
353
+ const model = (0, transform_utils_1.toInstance)(provider_model_1.RemoteAccessProviderModel, {
88
354
  ...status,
89
355
  kind: provider.kind,
90
356
  capabilities: provider.capabilities,
91
357
  });
358
+ model.details = { ...status.details };
359
+ return model;
92
360
  }
93
361
  normalizeStatusType(provider, status) {
94
362
  if (status.type === provider.type) {
@@ -100,56 +368,37 @@ let RemoteAccessStatusService = class RemoteAccessStatusService {
100
368
  }
101
369
  return { ...status, type: provider.type };
102
370
  }
103
- async fetchStatus(provider) {
104
- try {
105
- return await this.raceWithTimeout(provider);
106
- }
107
- catch (error) {
108
- const timedOut = error instanceof ProviderStatusTimeoutError;
109
- const err = error instanceof Error ? error : new Error('Unknown remote access provider status error');
110
- this.logger.error(`Failed to retrieve status from provider '${provider.type}'`, {
111
- message: err.message,
112
- stack: err.stack,
113
- });
114
- return {
115
- type: provider.type,
116
- state: 'error',
117
- endpoints: [],
118
- message: timedOut
119
- ? `Provider did not report a status within ${remote_access_constants_1.REMOTE_ACCESS_PROVIDER_STATUS_TIMEOUT_MS}ms.`
120
- : 'Failed to retrieve status from this provider.',
121
- details: {},
122
- proxyAddresses: [],
123
- advisories: [],
124
- updatedAt: new Date().toISOString(),
125
- };
126
- }
127
- }
128
- raceWithTimeout(provider) {
129
- return new Promise((resolve, reject) => {
130
- const timer = setTimeout(() => {
131
- reject(new ProviderStatusTimeoutError(`Provider '${provider.type}' did not report a status within ${remote_access_constants_1.REMOTE_ACCESS_PROVIDER_STATUS_TIMEOUT_MS}ms.`));
132
- }, remote_access_constants_1.REMOTE_ACCESS_PROVIDER_STATUS_TIMEOUT_MS);
133
- provider.getStatus().then((status) => {
134
- clearTimeout(timer);
135
- resolve(status);
136
- }, (error) => {
137
- clearTimeout(timer);
138
- reject(error);
139
- });
140
- });
371
+ errorStatus(provider, message) {
372
+ return {
373
+ type: provider.type,
374
+ state: 'error',
375
+ endpoints: [],
376
+ message,
377
+ details: {},
378
+ proxyAddresses: [],
379
+ advisories: [],
380
+ updatedAt: new Date().toISOString(),
381
+ };
141
382
  }
142
383
  };
143
384
  exports.RemoteAccessStatusService = RemoteAccessStatusService;
144
385
  __decorate([
145
- (0, event_emitter_1.OnEvent)(remote_access_constants_1.EventType.PROVIDER_STATUS),
386
+ (0, event_emitter_1.OnEvent)(remote_access_constants_1.EventType.PROVIDER_OBSERVATION),
146
387
  __metadata("design:type", Function),
147
388
  __metadata("design:paramtypes", [Object]),
148
389
  __metadata("design:returntype", void 0)
149
390
  ], RemoteAccessStatusService.prototype, "onProviderStatus", null);
391
+ __decorate([
392
+ (0, event_emitter_1.OnEvent)(config_constants_1.EventType.CONFIG_UPDATED),
393
+ __metadata("design:type", Function),
394
+ __metadata("design:paramtypes", [Object]),
395
+ __metadata("design:returntype", void 0)
396
+ ], RemoteAccessStatusService.prototype, "onConfigUpdated", null);
150
397
  exports.RemoteAccessStatusService = RemoteAccessStatusService = __decorate([
151
398
  (0, common_1.Injectable)(),
399
+ __param(2, (0, common_1.Optional)()),
152
400
  __metadata("design:paramtypes", [remote_access_provider_registry_service_1.RemoteAccessProviderRegistryService,
153
- config_service_1.ConfigService])
401
+ config_service_1.ConfigService,
402
+ event_emitter_1.EventEmitter2])
154
403
  ], RemoteAccessStatusService);
155
404
  //# sourceMappingURL=remote-access-status.service.js.map