@matter/node 0.16.0-alpha.0-20251205-dfb1e1556 → 0.16.0-alpha.0-20251209-d6072d23e

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 (366) hide show
  1. package/dist/cjs/behavior/Behavior.d.ts +5 -1
  2. package/dist/cjs/behavior/Behavior.d.ts.map +1 -1
  3. package/dist/cjs/behavior/Behavior.js +15 -5
  4. package/dist/cjs/behavior/Behavior.js.map +1 -1
  5. package/dist/cjs/behavior/Events.d.ts +7 -7
  6. package/dist/cjs/behavior/Events.d.ts.map +1 -1
  7. package/dist/cjs/behavior/Events.js +1 -1
  8. package/dist/cjs/behavior/Events.js.map +1 -1
  9. package/dist/cjs/behavior/Transitions.d.ts +2 -3
  10. package/dist/cjs/behavior/Transitions.d.ts.map +1 -1
  11. package/dist/cjs/behavior/Transitions.js +1 -2
  12. package/dist/cjs/behavior/Transitions.js.map +1 -1
  13. package/dist/cjs/behavior/cluster/ClusterBehaviorType.js +2 -2
  14. package/dist/cjs/behavior/cluster/ClusterBehaviorType.js.map +1 -1
  15. package/dist/cjs/behavior/cluster/ClusterEvents.d.ts +1 -1
  16. package/dist/cjs/behavior/cluster/ClusterEvents.d.ts.map +1 -1
  17. package/dist/cjs/behavior/cluster/cluster-behavior-utils.js +1 -1
  18. package/dist/cjs/behavior/cluster/cluster-behavior-utils.js.map +1 -1
  19. package/dist/cjs/behavior/context/Contextual.js +1 -1
  20. package/dist/cjs/behavior/context/Contextual.js.map +1 -1
  21. package/dist/cjs/behavior/context/NodeActivity.d.ts +2 -4
  22. package/dist/cjs/behavior/context/NodeActivity.d.ts.map +1 -1
  23. package/dist/cjs/behavior/context/NodeActivity.js +4 -11
  24. package/dist/cjs/behavior/context/NodeActivity.js.map +1 -1
  25. package/dist/cjs/behavior/context/server/LocalActorContext.d.ts +2 -3
  26. package/dist/cjs/behavior/context/server/LocalActorContext.d.ts.map +1 -1
  27. package/dist/cjs/behavior/context/server/LocalActorContext.js +3 -3
  28. package/dist/cjs/behavior/context/server/LocalActorContext.js.map +1 -1
  29. package/dist/cjs/behavior/context/server/RemoteActorContext.d.ts +2 -6
  30. package/dist/cjs/behavior/context/server/RemoteActorContext.d.ts.map +1 -1
  31. package/dist/cjs/behavior/context/server/RemoteActorContext.js +20 -22
  32. package/dist/cjs/behavior/context/server/RemoteActorContext.js.map +1 -1
  33. package/dist/cjs/behavior/internal/BackingEvents.js +2 -2
  34. package/dist/cjs/behavior/internal/BackingEvents.js.map +1 -1
  35. package/dist/cjs/behavior/internal/BehaviorBacking.d.ts +2 -1
  36. package/dist/cjs/behavior/internal/BehaviorBacking.d.ts.map +1 -1
  37. package/dist/cjs/behavior/internal/BehaviorBacking.js +3 -0
  38. package/dist/cjs/behavior/internal/BehaviorBacking.js.map +1 -1
  39. package/dist/cjs/behavior/internal/Reactors.d.ts.map +1 -1
  40. package/dist/cjs/behavior/internal/Reactors.js +2 -1
  41. package/dist/cjs/behavior/internal/Reactors.js.map +1 -1
  42. package/dist/cjs/behavior/state/managed/Datasource.d.ts.map +1 -1
  43. package/dist/cjs/behavior/state/managed/Datasource.js +1 -1
  44. package/dist/cjs/behavior/state/managed/Datasource.js.map +1 -1
  45. package/dist/cjs/behavior/state/managed/Internal.js +2 -2
  46. package/dist/cjs/behavior/state/managed/Internal.js.map +1 -1
  47. package/dist/cjs/behavior/state/managed/values/BitmapManager.js +1 -1
  48. package/dist/cjs/behavior/state/managed/values/BitmapManager.js.map +1 -1
  49. package/dist/cjs/behavior/state/managed/values/StructManager.js +1 -1
  50. package/dist/cjs/behavior/state/managed/values/StructManager.js.map +1 -1
  51. package/dist/cjs/behavior/system/commissioning/CommissioningClient.d.ts.map +1 -1
  52. package/dist/cjs/behavior/system/commissioning/CommissioningClient.js +6 -12
  53. package/dist/cjs/behavior/system/commissioning/CommissioningClient.js.map +1 -1
  54. package/dist/cjs/behavior/system/commissioning/CommissioningServer.d.ts +3 -2
  55. package/dist/cjs/behavior/system/commissioning/CommissioningServer.d.ts.map +1 -1
  56. package/dist/cjs/behavior/system/commissioning/CommissioningServer.js +3 -6
  57. package/dist/cjs/behavior/system/commissioning/CommissioningServer.js.map +1 -1
  58. package/dist/cjs/behavior/system/mqtt/MqttInterface.d.ts.map +1 -1
  59. package/dist/cjs/behavior/system/mqtt/MqttInterface.js +91 -30
  60. package/dist/cjs/behavior/system/mqtt/MqttInterface.js.map +1 -1
  61. package/dist/cjs/behavior/system/network/NetworkRuntime.d.ts.map +1 -1
  62. package/dist/cjs/behavior/system/network/NetworkRuntime.js +1 -3
  63. package/dist/cjs/behavior/system/network/NetworkRuntime.js.map +1 -1
  64. package/dist/cjs/behavior/system/network/ServerGroupNetworking.js +2 -2
  65. package/dist/cjs/behavior/system/network/ServerGroupNetworking.js.map +1 -1
  66. package/dist/cjs/behavior/system/network/ServerNetworkRuntime.d.ts.map +1 -1
  67. package/dist/cjs/behavior/system/network/ServerNetworkRuntime.js +152 -13
  68. package/dist/cjs/behavior/system/network/ServerNetworkRuntime.js.map +2 -2
  69. package/dist/cjs/behavior/system/remote/RemoteInterface.d.ts +3 -2
  70. package/dist/cjs/behavior/system/remote/RemoteInterface.d.ts.map +1 -1
  71. package/dist/cjs/behavior/system/remote/RemoteInterface.js +69 -10
  72. package/dist/cjs/behavior/system/remote/RemoteInterface.js.map +1 -1
  73. package/dist/cjs/behavior/system/remote/api/Api.d.ts.map +1 -1
  74. package/dist/cjs/behavior/system/remote/api/Api.js +4 -3
  75. package/dist/cjs/behavior/system/remote/api/Api.js.map +1 -1
  76. package/dist/cjs/behavior/system/sessions/SessionsBehavior.js +2 -2
  77. package/dist/cjs/behavior/system/sessions/SessionsBehavior.js.map +1 -1
  78. package/dist/cjs/behavior/system/subscriptions/SubscriptionsServer.d.ts.map +1 -1
  79. package/dist/cjs/behavior/system/subscriptions/SubscriptionsServer.js +14 -11
  80. package/dist/cjs/behavior/system/subscriptions/SubscriptionsServer.js.map +1 -1
  81. package/dist/cjs/behavior/system/websocket/WebSocketInterface.d.ts.map +1 -1
  82. package/dist/cjs/behavior/system/websocket/WebSocketInterface.js +12 -4
  83. package/dist/cjs/behavior/system/websocket/WebSocketInterface.js.map +1 -1
  84. package/dist/cjs/behaviors/access-control/AccessControlServer.js +1 -1
  85. package/dist/cjs/behaviors/access-control/AccessControlServer.js.map +1 -1
  86. package/dist/cjs/behaviors/administrator-commissioning/AdministratorCommissioningServer.d.ts.map +1 -1
  87. package/dist/cjs/behaviors/administrator-commissioning/AdministratorCommissioningServer.js +65 -7
  88. package/dist/cjs/behaviors/administrator-commissioning/AdministratorCommissioningServer.js.map +1 -1
  89. package/dist/cjs/behaviors/basic-information/BasicInformationServer.js +2 -2
  90. package/dist/cjs/behaviors/basic-information/BasicInformationServer.js.map +1 -1
  91. package/dist/cjs/behaviors/general-commissioning/GeneralCommissioningServer.d.ts.map +1 -1
  92. package/dist/cjs/behaviors/general-commissioning/GeneralCommissioningServer.js +12 -8
  93. package/dist/cjs/behaviors/general-commissioning/GeneralCommissioningServer.js.map +1 -1
  94. package/dist/cjs/behaviors/general-commissioning/ServerNodeFailsafeContext.d.ts +2 -3
  95. package/dist/cjs/behaviors/general-commissioning/ServerNodeFailsafeContext.d.ts.map +1 -1
  96. package/dist/cjs/behaviors/general-commissioning/ServerNodeFailsafeContext.js +2 -10
  97. package/dist/cjs/behaviors/general-commissioning/ServerNodeFailsafeContext.js.map +1 -1
  98. package/dist/cjs/behaviors/general-diagnostics/GeneralDiagnosticsServer.js +2 -2
  99. package/dist/cjs/behaviors/general-diagnostics/GeneralDiagnosticsServer.js.map +1 -1
  100. package/dist/cjs/behaviors/group-key-management/GroupKeyManagementServer.js +1 -1
  101. package/dist/cjs/behaviors/group-key-management/GroupKeyManagementServer.js.map +1 -1
  102. package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsServer.d.ts +0 -1
  103. package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsServer.d.ts.map +1 -1
  104. package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsServer.js +15 -14
  105. package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsServer.js.map +1 -1
  106. package/dist/cjs/behaviors/scenes-management/ScenesManagementServer.js +2 -2
  107. package/dist/cjs/behaviors/scenes-management/ScenesManagementServer.js.map +1 -1
  108. package/dist/cjs/behaviors/thermostat/AtomicWriteHandler.js +1 -1
  109. package/dist/cjs/behaviors/thermostat/AtomicWriteHandler.js.map +1 -1
  110. package/dist/cjs/behaviors/window-covering/WindowCoveringServer.d.ts.map +1 -1
  111. package/dist/cjs/behaviors/window-covering/WindowCoveringServer.js +21 -8
  112. package/dist/cjs/behaviors/window-covering/WindowCoveringServer.js.map +1 -1
  113. package/dist/cjs/endpoint/Agent.js +1 -1
  114. package/dist/cjs/endpoint/Agent.js.map +1 -1
  115. package/dist/cjs/endpoint/Endpoint.d.ts +2 -1
  116. package/dist/cjs/endpoint/Endpoint.d.ts.map +1 -1
  117. package/dist/cjs/endpoint/Endpoint.js +95 -8
  118. package/dist/cjs/endpoint/Endpoint.js.map +2 -2
  119. package/dist/cjs/endpoint/properties/Behaviors.d.ts.map +1 -1
  120. package/dist/cjs/endpoint/properties/Behaviors.js +11 -7
  121. package/dist/cjs/endpoint/properties/Behaviors.js.map +1 -1
  122. package/dist/cjs/endpoint/properties/Commands.js +1 -1
  123. package/dist/cjs/endpoint/properties/Commands.js.map +1 -1
  124. package/dist/cjs/endpoint/properties/EndpointLifecycle.d.ts.map +1 -1
  125. package/dist/cjs/endpoint/properties/EndpointLifecycle.js +3 -0
  126. package/dist/cjs/endpoint/properties/EndpointLifecycle.js.map +1 -1
  127. package/dist/cjs/node/ClientNode.d.ts.map +1 -1
  128. package/dist/cjs/node/ClientNode.js +2 -0
  129. package/dist/cjs/node/ClientNode.js.map +1 -1
  130. package/dist/cjs/node/Node.d.ts +2 -2
  131. package/dist/cjs/node/Node.d.ts.map +1 -1
  132. package/dist/cjs/node/Node.js +3 -2
  133. package/dist/cjs/node/Node.js.map +1 -1
  134. package/dist/cjs/node/ServerNode.d.ts.map +1 -1
  135. package/dist/cjs/node/ServerNode.js +54 -1
  136. package/dist/cjs/node/ServerNode.js.map +1 -1
  137. package/dist/cjs/node/client/ClientCommandMethod.d.ts.map +1 -1
  138. package/dist/cjs/node/client/ClientCommandMethod.js +26 -29
  139. package/dist/cjs/node/client/ClientCommandMethod.js.map +1 -1
  140. package/dist/cjs/node/client/NodePeerAddressStore.d.ts +3 -3
  141. package/dist/cjs/node/client/NodePeerAddressStore.d.ts.map +1 -1
  142. package/dist/cjs/node/client/NodePeerAddressStore.js.map +1 -1
  143. package/dist/cjs/node/client/PeerBehavior.js +1 -1
  144. package/dist/cjs/node/client/PeerBehavior.js.map +1 -1
  145. package/dist/cjs/node/client/Peers.d.ts.map +1 -1
  146. package/dist/cjs/node/client/Peers.js +14 -0
  147. package/dist/cjs/node/client/Peers.js.map +1 -1
  148. package/dist/cjs/node/integration/ProtocolService.d.ts.map +1 -1
  149. package/dist/cjs/node/integration/ProtocolService.js +3 -2
  150. package/dist/cjs/node/integration/ProtocolService.js.map +1 -1
  151. package/dist/cjs/node/server/InteractionServer.d.ts.map +1 -1
  152. package/dist/cjs/node/server/InteractionServer.js +55 -50
  153. package/dist/cjs/node/server/InteractionServer.js.map +2 -2
  154. package/dist/cjs/node/server/ServerEnvironment.js +1 -1
  155. package/dist/cjs/node/server/ServerEnvironment.js.map +1 -1
  156. package/dist/cjs/node/server/ServerSubscription.d.ts +61 -10
  157. package/dist/cjs/node/server/ServerSubscription.d.ts.map +1 -1
  158. package/dist/cjs/node/server/ServerSubscription.js +316 -157
  159. package/dist/cjs/node/server/ServerSubscription.js.map +2 -2
  160. package/dist/esm/behavior/Behavior.d.ts +5 -1
  161. package/dist/esm/behavior/Behavior.d.ts.map +1 -1
  162. package/dist/esm/behavior/Behavior.js +15 -5
  163. package/dist/esm/behavior/Behavior.js.map +1 -1
  164. package/dist/esm/behavior/Events.d.ts +7 -7
  165. package/dist/esm/behavior/Events.d.ts.map +1 -1
  166. package/dist/esm/behavior/Events.js +1 -1
  167. package/dist/esm/behavior/Events.js.map +1 -1
  168. package/dist/esm/behavior/Transitions.d.ts +2 -3
  169. package/dist/esm/behavior/Transitions.d.ts.map +1 -1
  170. package/dist/esm/behavior/Transitions.js +1 -2
  171. package/dist/esm/behavior/Transitions.js.map +1 -1
  172. package/dist/esm/behavior/cluster/ClusterBehaviorType.js +2 -2
  173. package/dist/esm/behavior/cluster/ClusterBehaviorType.js.map +1 -1
  174. package/dist/esm/behavior/cluster/ClusterEvents.d.ts +1 -1
  175. package/dist/esm/behavior/cluster/ClusterEvents.d.ts.map +1 -1
  176. package/dist/esm/behavior/cluster/cluster-behavior-utils.js +1 -1
  177. package/dist/esm/behavior/cluster/cluster-behavior-utils.js.map +1 -1
  178. package/dist/esm/behavior/context/Contextual.js +1 -1
  179. package/dist/esm/behavior/context/Contextual.js.map +1 -1
  180. package/dist/esm/behavior/context/NodeActivity.d.ts +2 -4
  181. package/dist/esm/behavior/context/NodeActivity.d.ts.map +1 -1
  182. package/dist/esm/behavior/context/NodeActivity.js +5 -12
  183. package/dist/esm/behavior/context/NodeActivity.js.map +1 -1
  184. package/dist/esm/behavior/context/server/LocalActorContext.d.ts +2 -3
  185. package/dist/esm/behavior/context/server/LocalActorContext.d.ts.map +1 -1
  186. package/dist/esm/behavior/context/server/LocalActorContext.js +5 -5
  187. package/dist/esm/behavior/context/server/LocalActorContext.js.map +1 -1
  188. package/dist/esm/behavior/context/server/RemoteActorContext.d.ts +2 -6
  189. package/dist/esm/behavior/context/server/RemoteActorContext.d.ts.map +1 -1
  190. package/dist/esm/behavior/context/server/RemoteActorContext.js +27 -24
  191. package/dist/esm/behavior/context/server/RemoteActorContext.js.map +1 -1
  192. package/dist/esm/behavior/internal/BackingEvents.js +2 -2
  193. package/dist/esm/behavior/internal/BackingEvents.js.map +1 -1
  194. package/dist/esm/behavior/internal/BehaviorBacking.d.ts +2 -1
  195. package/dist/esm/behavior/internal/BehaviorBacking.d.ts.map +1 -1
  196. package/dist/esm/behavior/internal/BehaviorBacking.js +4 -0
  197. package/dist/esm/behavior/internal/BehaviorBacking.js.map +1 -1
  198. package/dist/esm/behavior/internal/Reactors.d.ts.map +1 -1
  199. package/dist/esm/behavior/internal/Reactors.js +2 -1
  200. package/dist/esm/behavior/internal/Reactors.js.map +1 -1
  201. package/dist/esm/behavior/state/managed/Datasource.d.ts.map +1 -1
  202. package/dist/esm/behavior/state/managed/Datasource.js +2 -1
  203. package/dist/esm/behavior/state/managed/Datasource.js.map +1 -1
  204. package/dist/esm/behavior/state/managed/Internal.js +2 -2
  205. package/dist/esm/behavior/state/managed/Internal.js.map +1 -1
  206. package/dist/esm/behavior/state/managed/values/BitmapManager.js +1 -1
  207. package/dist/esm/behavior/state/managed/values/BitmapManager.js.map +1 -1
  208. package/dist/esm/behavior/state/managed/values/StructManager.js +1 -1
  209. package/dist/esm/behavior/state/managed/values/StructManager.js.map +1 -1
  210. package/dist/esm/behavior/system/commissioning/CommissioningClient.d.ts.map +1 -1
  211. package/dist/esm/behavior/system/commissioning/CommissioningClient.js +7 -14
  212. package/dist/esm/behavior/system/commissioning/CommissioningClient.js.map +1 -1
  213. package/dist/esm/behavior/system/commissioning/CommissioningServer.d.ts +3 -2
  214. package/dist/esm/behavior/system/commissioning/CommissioningServer.d.ts.map +1 -1
  215. package/dist/esm/behavior/system/commissioning/CommissioningServer.js +3 -7
  216. package/dist/esm/behavior/system/commissioning/CommissioningServer.js.map +1 -1
  217. package/dist/esm/behavior/system/mqtt/MqttInterface.d.ts.map +1 -1
  218. package/dist/esm/behavior/system/mqtt/MqttInterface.js +91 -30
  219. package/dist/esm/behavior/system/mqtt/MqttInterface.js.map +1 -1
  220. package/dist/esm/behavior/system/network/NetworkRuntime.d.ts.map +1 -1
  221. package/dist/esm/behavior/system/network/NetworkRuntime.js +1 -3
  222. package/dist/esm/behavior/system/network/NetworkRuntime.js.map +1 -1
  223. package/dist/esm/behavior/system/network/ServerGroupNetworking.js +2 -2
  224. package/dist/esm/behavior/system/network/ServerGroupNetworking.js.map +1 -1
  225. package/dist/esm/behavior/system/network/ServerNetworkRuntime.d.ts.map +1 -1
  226. package/dist/esm/behavior/system/network/ServerNetworkRuntime.js +152 -14
  227. package/dist/esm/behavior/system/network/ServerNetworkRuntime.js.map +2 -2
  228. package/dist/esm/behavior/system/remote/RemoteInterface.d.ts +3 -2
  229. package/dist/esm/behavior/system/remote/RemoteInterface.d.ts.map +1 -1
  230. package/dist/esm/behavior/system/remote/RemoteInterface.js +76 -11
  231. package/dist/esm/behavior/system/remote/RemoteInterface.js.map +1 -1
  232. package/dist/esm/behavior/system/remote/api/Api.d.ts.map +1 -1
  233. package/dist/esm/behavior/system/remote/api/Api.js +4 -3
  234. package/dist/esm/behavior/system/remote/api/Api.js.map +1 -1
  235. package/dist/esm/behavior/system/sessions/SessionsBehavior.js +2 -2
  236. package/dist/esm/behavior/system/sessions/SessionsBehavior.js.map +1 -1
  237. package/dist/esm/behavior/system/subscriptions/SubscriptionsServer.d.ts.map +1 -1
  238. package/dist/esm/behavior/system/subscriptions/SubscriptionsServer.js +17 -14
  239. package/dist/esm/behavior/system/subscriptions/SubscriptionsServer.js.map +1 -1
  240. package/dist/esm/behavior/system/websocket/WebSocketInterface.d.ts.map +1 -1
  241. package/dist/esm/behavior/system/websocket/WebSocketInterface.js +12 -4
  242. package/dist/esm/behavior/system/websocket/WebSocketInterface.js.map +1 -1
  243. package/dist/esm/behaviors/access-control/AccessControlServer.js +1 -1
  244. package/dist/esm/behaviors/access-control/AccessControlServer.js.map +1 -1
  245. package/dist/esm/behaviors/administrator-commissioning/AdministratorCommissioningServer.d.ts.map +1 -1
  246. package/dist/esm/behaviors/administrator-commissioning/AdministratorCommissioningServer.js +66 -8
  247. package/dist/esm/behaviors/administrator-commissioning/AdministratorCommissioningServer.js.map +1 -1
  248. package/dist/esm/behaviors/basic-information/BasicInformationServer.js +2 -2
  249. package/dist/esm/behaviors/basic-information/BasicInformationServer.js.map +1 -1
  250. package/dist/esm/behaviors/general-commissioning/GeneralCommissioningServer.d.ts.map +1 -1
  251. package/dist/esm/behaviors/general-commissioning/GeneralCommissioningServer.js +13 -9
  252. package/dist/esm/behaviors/general-commissioning/GeneralCommissioningServer.js.map +1 -1
  253. package/dist/esm/behaviors/general-commissioning/ServerNodeFailsafeContext.d.ts +2 -3
  254. package/dist/esm/behaviors/general-commissioning/ServerNodeFailsafeContext.d.ts.map +1 -1
  255. package/dist/esm/behaviors/general-commissioning/ServerNodeFailsafeContext.js +2 -10
  256. package/dist/esm/behaviors/general-commissioning/ServerNodeFailsafeContext.js.map +1 -1
  257. package/dist/esm/behaviors/general-diagnostics/GeneralDiagnosticsServer.js +2 -2
  258. package/dist/esm/behaviors/general-diagnostics/GeneralDiagnosticsServer.js.map +1 -1
  259. package/dist/esm/behaviors/group-key-management/GroupKeyManagementServer.js +1 -1
  260. package/dist/esm/behaviors/group-key-management/GroupKeyManagementServer.js.map +1 -1
  261. package/dist/esm/behaviors/operational-credentials/OperationalCredentialsServer.d.ts +0 -1
  262. package/dist/esm/behaviors/operational-credentials/OperationalCredentialsServer.d.ts.map +1 -1
  263. package/dist/esm/behaviors/operational-credentials/OperationalCredentialsServer.js +15 -15
  264. package/dist/esm/behaviors/operational-credentials/OperationalCredentialsServer.js.map +1 -1
  265. package/dist/esm/behaviors/scenes-management/ScenesManagementServer.js +2 -2
  266. package/dist/esm/behaviors/scenes-management/ScenesManagementServer.js.map +1 -1
  267. package/dist/esm/behaviors/thermostat/AtomicWriteHandler.js +1 -1
  268. package/dist/esm/behaviors/thermostat/AtomicWriteHandler.js.map +1 -1
  269. package/dist/esm/behaviors/window-covering/WindowCoveringServer.d.ts.map +1 -1
  270. package/dist/esm/behaviors/window-covering/WindowCoveringServer.js +22 -9
  271. package/dist/esm/behaviors/window-covering/WindowCoveringServer.js.map +1 -1
  272. package/dist/esm/endpoint/Agent.js +1 -1
  273. package/dist/esm/endpoint/Agent.js.map +1 -1
  274. package/dist/esm/endpoint/Endpoint.d.ts +2 -1
  275. package/dist/esm/endpoint/Endpoint.d.ts.map +1 -1
  276. package/dist/esm/endpoint/Endpoint.js +96 -8
  277. package/dist/esm/endpoint/Endpoint.js.map +2 -2
  278. package/dist/esm/endpoint/properties/Behaviors.d.ts.map +1 -1
  279. package/dist/esm/endpoint/properties/Behaviors.js +11 -7
  280. package/dist/esm/endpoint/properties/Behaviors.js.map +1 -1
  281. package/dist/esm/endpoint/properties/Commands.js +1 -1
  282. package/dist/esm/endpoint/properties/Commands.js.map +1 -1
  283. package/dist/esm/endpoint/properties/EndpointLifecycle.d.ts.map +1 -1
  284. package/dist/esm/endpoint/properties/EndpointLifecycle.js +3 -0
  285. package/dist/esm/endpoint/properties/EndpointLifecycle.js.map +1 -1
  286. package/dist/esm/node/ClientNode.d.ts.map +1 -1
  287. package/dist/esm/node/ClientNode.js +2 -0
  288. package/dist/esm/node/ClientNode.js.map +1 -1
  289. package/dist/esm/node/Node.d.ts +2 -2
  290. package/dist/esm/node/Node.d.ts.map +1 -1
  291. package/dist/esm/node/Node.js +5 -4
  292. package/dist/esm/node/Node.js.map +1 -1
  293. package/dist/esm/node/ServerNode.d.ts.map +1 -1
  294. package/dist/esm/node/ServerNode.js +54 -1
  295. package/dist/esm/node/ServerNode.js.map +1 -1
  296. package/dist/esm/node/client/ClientCommandMethod.d.ts.map +1 -1
  297. package/dist/esm/node/client/ClientCommandMethod.js +26 -29
  298. package/dist/esm/node/client/ClientCommandMethod.js.map +1 -1
  299. package/dist/esm/node/client/NodePeerAddressStore.d.ts +3 -3
  300. package/dist/esm/node/client/NodePeerAddressStore.d.ts.map +1 -1
  301. package/dist/esm/node/client/NodePeerAddressStore.js.map +1 -1
  302. package/dist/esm/node/client/PeerBehavior.js +1 -1
  303. package/dist/esm/node/client/PeerBehavior.js.map +1 -1
  304. package/dist/esm/node/client/Peers.d.ts.map +1 -1
  305. package/dist/esm/node/client/Peers.js +15 -1
  306. package/dist/esm/node/client/Peers.js.map +1 -1
  307. package/dist/esm/node/integration/ProtocolService.d.ts.map +1 -1
  308. package/dist/esm/node/integration/ProtocolService.js +4 -2
  309. package/dist/esm/node/integration/ProtocolService.js.map +1 -1
  310. package/dist/esm/node/server/InteractionServer.d.ts.map +1 -1
  311. package/dist/esm/node/server/InteractionServer.js +59 -51
  312. package/dist/esm/node/server/InteractionServer.js.map +2 -2
  313. package/dist/esm/node/server/ServerEnvironment.js +1 -1
  314. package/dist/esm/node/server/ServerEnvironment.js.map +1 -1
  315. package/dist/esm/node/server/ServerSubscription.d.ts +61 -10
  316. package/dist/esm/node/server/ServerSubscription.d.ts.map +1 -1
  317. package/dist/esm/node/server/ServerSubscription.js +321 -159
  318. package/dist/esm/node/server/ServerSubscription.js.map +2 -2
  319. package/package.json +7 -7
  320. package/src/behavior/Behavior.ts +12 -0
  321. package/src/behavior/Events.ts +12 -8
  322. package/src/behavior/Transitions.ts +3 -3
  323. package/src/behavior/cluster/ClusterBehaviorType.ts +2 -2
  324. package/src/behavior/cluster/ClusterEvents.ts +1 -1
  325. package/src/behavior/context/NodeActivity.ts +4 -13
  326. package/src/behavior/context/server/LocalActorContext.ts +6 -8
  327. package/src/behavior/context/server/RemoteActorContext.ts +34 -33
  328. package/src/behavior/internal/BehaviorBacking.ts +5 -0
  329. package/src/behavior/internal/Reactors.ts +1 -0
  330. package/src/behavior/state/managed/Datasource.ts +2 -1
  331. package/src/behavior/system/commissioning/CommissioningClient.ts +6 -13
  332. package/src/behavior/system/commissioning/CommissioningServer.ts +6 -8
  333. package/src/behavior/system/mqtt/MqttInterface.ts +6 -2
  334. package/src/behavior/system/network/NetworkRuntime.ts +1 -3
  335. package/src/behavior/system/network/ServerGroupNetworking.ts +2 -2
  336. package/src/behavior/system/network/ServerNetworkRuntime.ts +49 -15
  337. package/src/behavior/system/remote/RemoteInterface.ts +22 -4
  338. package/src/behavior/system/remote/api/Api.ts +4 -3
  339. package/src/behavior/system/sessions/SessionsBehavior.ts +2 -2
  340. package/src/behavior/system/subscriptions/SubscriptionsServer.ts +15 -13
  341. package/src/behavior/system/websocket/WebSocketInterface.ts +2 -1
  342. package/src/behaviors/access-control/AccessControlServer.ts +1 -1
  343. package/src/behaviors/administrator-commissioning/AdministratorCommissioningServer.ts +14 -7
  344. package/src/behaviors/basic-information/BasicInformationServer.ts +2 -2
  345. package/src/behaviors/general-commissioning/GeneralCommissioningServer.ts +14 -9
  346. package/src/behaviors/general-commissioning/ServerNodeFailsafeContext.ts +3 -15
  347. package/src/behaviors/general-diagnostics/GeneralDiagnosticsServer.ts +1 -1
  348. package/src/behaviors/group-key-management/GroupKeyManagementServer.ts +1 -1
  349. package/src/behaviors/operational-credentials/OperationalCredentialsServer.ts +22 -19
  350. package/src/behaviors/scenes-management/ScenesManagementServer.ts +1 -1
  351. package/src/behaviors/thermostat/AtomicWriteHandler.ts +1 -1
  352. package/src/behaviors/window-covering/WindowCoveringServer.ts +24 -9
  353. package/src/endpoint/Endpoint.ts +21 -4
  354. package/src/endpoint/properties/Behaviors.ts +11 -6
  355. package/src/endpoint/properties/Commands.ts +1 -1
  356. package/src/endpoint/properties/EndpointLifecycle.ts +4 -0
  357. package/src/node/ClientNode.ts +3 -0
  358. package/src/node/Node.ts +3 -2
  359. package/src/node/ServerNode.ts +1 -0
  360. package/src/node/client/ClientCommandMethod.ts +31 -38
  361. package/src/node/client/NodePeerAddressStore.ts +3 -3
  362. package/src/node/client/Peers.ts +19 -1
  363. package/src/node/integration/ProtocolService.ts +4 -2
  364. package/src/node/server/InteractionServer.ts +62 -51
  365. package/src/node/server/ServerEnvironment.ts +1 -1
  366. package/src/node/server/ServerSubscription.ts +225 -153
@@ -3,6 +3,10 @@ var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __knownSymbol = (name, symbol) => (symbol = Symbol[name]) ? symbol : /* @__PURE__ */ Symbol.for("Symbol." + name);
7
+ var __typeError = (msg) => {
8
+ throw TypeError(msg);
9
+ };
6
10
  var __export = (target, all) => {
7
11
  for (var name in all)
8
12
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -16,6 +20,47 @@ var __copyProps = (to, from, except, desc) => {
16
20
  return to;
17
21
  };
18
22
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
23
+ var __using = (stack, value, async) => {
24
+ if (value != null) {
25
+ if (typeof value !== "object" && typeof value !== "function") __typeError("Object expected");
26
+ var dispose, inner;
27
+ if (async) dispose = value[__knownSymbol("asyncDispose")];
28
+ if (dispose === void 0) {
29
+ dispose = value[__knownSymbol("dispose")];
30
+ if (async) inner = dispose;
31
+ }
32
+ if (typeof dispose !== "function") __typeError("Object not disposable");
33
+ if (inner) dispose = function() {
34
+ try {
35
+ inner.call(this);
36
+ } catch (e) {
37
+ return Promise.reject(e);
38
+ }
39
+ };
40
+ stack.push([async, dispose, value]);
41
+ } else if (async) {
42
+ stack.push([async]);
43
+ }
44
+ return value;
45
+ };
46
+ var __callDispose = (stack, error, hasError) => {
47
+ var E = typeof SuppressedError === "function" ? SuppressedError : function(e, s, m, _) {
48
+ return _ = Error(m), _.name = "SuppressedError", _.error = e, _.suppressed = s, _;
49
+ };
50
+ var fail = (e) => error = hasError ? new E(e, error, "An error was suppressed during disposal") : (hasError = true, e);
51
+ var next = (it) => {
52
+ while (it = stack.pop()) {
53
+ try {
54
+ var result = it[1] && it[1].call(it[2]);
55
+ if (it[0]) return Promise.resolve(result).then(next, (e) => (fail(e), next()));
56
+ } catch (e) {
57
+ fail(e);
58
+ }
59
+ }
60
+ if (hasError) throw error;
61
+ };
62
+ return next();
63
+ };
19
64
  var ServerSubscription_exports = {};
20
65
  __export(ServerSubscription_exports, {
21
66
  DEFAULT_RANDOMIZATION_WINDOW: () => DEFAULT_RANDOMIZATION_WINDOW,
@@ -53,15 +98,18 @@ var ServerSubscriptionConfig;
53
98
  }
54
99
  ServerSubscriptionConfig2.of = of;
55
100
  })(ServerSubscriptionConfig || (ServerSubscriptionConfig = {}));
56
- class ServerSubscription extends import_protocol.Subscription {
101
+ class ServerSubscription {
102
+ #lifetime;
57
103
  #context;
104
+ #id;
105
+ #isClosed = false;
106
+ #isCanceledByPeer = false;
107
+ #request;
108
+ #cancelled = (0, import_general.AsyncObservable)();
109
+ #maxInterval;
58
110
  #lastUpdateTime = import_general.Timestamp.zero;
59
111
  #updateTimer;
60
- #sendDelayTimer = import_general.Time.getTimer(
61
- `Subscription ${this.id} delay`,
62
- (0, import_general.Millis)(50),
63
- () => this.#triggerSendUpdate()
64
- );
112
+ #sendDelayTimer;
65
113
  #outstandingAttributeUpdates;
66
114
  #outstandingEventsMinNumber;
67
115
  #changeHandlers = new import_general.ObserverGroup();
@@ -69,28 +117,16 @@ class ServerSubscription extends import_protocol.Subscription {
69
117
  #seededClusterDetails = /* @__PURE__ */ new Map();
70
118
  #latestSeededEventNumber = (0, import_types.EventNumber)(0);
71
119
  #sendInterval;
72
- #minIntervalFloor;
73
- #maxIntervalCeiling;
74
120
  #peerAddress;
75
121
  #sendNextUpdateImmediately = false;
76
122
  #sendUpdateErrorCounter = 0;
77
123
  #currentUpdatePromise;
78
124
  constructor(options) {
79
- const {
80
- id,
81
- context,
82
- criteria,
83
- minIntervalFloor,
84
- maxIntervalCeiling,
85
- subscriptionOptions,
86
- useAsMaxInterval,
87
- useAsSendInterval
88
- } = options;
89
- super(context.session, id, criteria);
125
+ const { id, context, request, subscriptionOptions, useAsMaxInterval, useAsSendInterval } = options;
126
+ this.#id = id;
127
+ this.#request = request;
90
128
  this.#context = context;
91
129
  this.#peerAddress = this.session.peerAddress;
92
- this.#minIntervalFloor = minIntervalFloor;
93
- this.#maxIntervalCeiling = maxIntervalCeiling;
94
130
  let maxInterval;
95
131
  let sendInterval;
96
132
  if (useAsMaxInterval !== void 0 && useAsSendInterval !== void 0) {
@@ -105,12 +141,60 @@ class ServerSubscription extends import_protocol.Subscription {
105
141
  }
106
142
  this.maxInterval = maxInterval;
107
143
  this.#sendInterval = sendInterval;
144
+ this.#sendDelayTimer = import_general.Time.getTimer(
145
+ `Subscription ${this.idStr} delay`,
146
+ (0, import_general.Millis)(50),
147
+ () => this.#triggerSendUpdate()
148
+ );
108
149
  this.#updateTimer = import_general.Time.getTimer(
109
- `Subscription ${this.id} update`,
150
+ `Subscription ${this.idStr} update`,
110
151
  this.#sendInterval,
111
152
  () => this.#prepareDataUpdate()
112
153
  );
113
154
  }
155
+ get subscriptionId() {
156
+ return this.#id;
157
+ }
158
+ get idStr() {
159
+ return import_general.hex.fixed(this.#id, 8);
160
+ }
161
+ get session() {
162
+ return this.#context.session;
163
+ }
164
+ get isCanceledByPeer() {
165
+ return this.#isCanceledByPeer;
166
+ }
167
+ get request() {
168
+ return this.#request;
169
+ }
170
+ get cancelled() {
171
+ return this.#cancelled;
172
+ }
173
+ get maxInterval() {
174
+ if (this.#maxInterval === void 0) {
175
+ throw new import_general.InternalError("Subscription maxInterval accessed before it was set");
176
+ }
177
+ return this.#maxInterval;
178
+ }
179
+ get sendInterval() {
180
+ return this.#sendInterval;
181
+ }
182
+ get minIntervalFloor() {
183
+ return (0, import_general.Seconds)(this.request.minIntervalFloorSeconds);
184
+ }
185
+ get maxIntervalCeiling() {
186
+ return (0, import_general.Seconds)(this.request.maxIntervalCeilingSeconds);
187
+ }
188
+ set maxInterval(value) {
189
+ if (this.#maxInterval !== void 0) {
190
+ throw new import_general.InternalError("Subscription maxInterval set twice");
191
+ }
192
+ this.#maxInterval = value;
193
+ }
194
+ async handlePeerCancel() {
195
+ this.#isCanceledByPeer = true;
196
+ await this.close();
197
+ }
114
198
  #determineSendingIntervals(subscriptionMinInterval, subscriptionMaxInterval, subscriptionRandomizationWindow) {
115
199
  const maxInterval = import_general.Duration.min(
116
200
  import_general.Millis.floor(
@@ -118,8 +202,8 @@ class ServerSubscription extends import_protocol.Subscription {
118
202
  import_general.Duration.max(
119
203
  subscriptionMinInterval,
120
204
  import_general.Duration.max(
121
- this.#minIntervalFloor,
122
- import_general.Duration.min(subscriptionMaxInterval, this.#maxIntervalCeiling)
205
+ this.minIntervalFloor,
206
+ import_general.Duration.min(subscriptionMaxInterval, this.maxIntervalCeiling)
123
207
  )
124
208
  ) + subscriptionRandomizationWindow * Math.random()
125
209
  )
@@ -128,7 +212,7 @@ class ServerSubscription extends import_protocol.Subscription {
128
212
  );
129
213
  let sendInterval = import_general.Millis.floor((0, import_general.Millis)(maxInterval / 2));
130
214
  if (sendInterval < import_general.Minutes.one) {
131
- sendInterval = import_general.Duration.max(this.#minIntervalFloor, import_general.Millis.floor((0, import_general.Millis)(maxInterval * 0.8)));
215
+ sendInterval = import_general.Duration.max(this.minIntervalFloor, import_general.Millis.floor((0, import_general.Millis)(maxInterval * 0.8)));
132
216
  }
133
217
  if (sendInterval < subscriptionMinInterval) {
134
218
  logger.warn(
@@ -150,7 +234,7 @@ class ServerSubscription extends import_protocol.Subscription {
150
234
  }
151
235
  }
152
236
  #handleClusterStateChanges(endpointId, clusterId, changedAttrs, version) {
153
- if (this.isClosed || !changedAttrs.length) {
237
+ if (this.#isClosed || !changedAttrs.length) {
154
238
  return;
155
239
  }
156
240
  if (this.#seededClusterDetails !== void 0) {
@@ -163,7 +247,7 @@ class ServerSubscription extends import_protocol.Subscription {
163
247
  this.#prepareDataUpdate();
164
248
  }
165
249
  #handleAddedEvents(occurrence) {
166
- if (this.isClosed) {
250
+ if (this.#isClosed) {
167
251
  return;
168
252
  }
169
253
  if (this.#outstandingEventsMinNumber === void 0 || this.#latestSeededEventNumber !== void 0) {
@@ -174,23 +258,16 @@ class ServerSubscription extends import_protocol.Subscription {
174
258
  }
175
259
  }
176
260
  #sendEventUrgently({ endpointId, clusterId, eventId }) {
177
- return (this.criteria.eventRequests ?? []).some(
261
+ return (this.request.eventRequests ?? []).some(
178
262
  ({ endpointId: reqEndpointId, clusterId: reqClusterId, eventId: reqEventId, isUrgent }) => isUrgent && (reqEndpointId === void 0 || reqEndpointId === endpointId) && (reqClusterId === void 0 || reqClusterId === clusterId) && (reqEventId === void 0 || reqEventId === eventId)
179
263
  );
180
264
  }
181
- get sendInterval() {
182
- return this.#sendInterval;
183
- }
184
- get minIntervalFloor() {
185
- return this.#minIntervalFloor;
186
- }
187
- get maxIntervalCeiling() {
188
- return this.#maxIntervalCeiling;
189
- }
190
265
  activate() {
191
- super.activate();
192
- if (this.criteria.eventFilters !== void 0) this.criteria.eventFilters.length = 0;
193
- if (this.criteria.dataVersionFilters !== void 0) this.criteria.dataVersionFilters.length = 0;
266
+ this.session.subscriptions.add(this);
267
+ logger.debug(this.session.via, "New subscription", import_general.Diagnostic.strong(this.idStr));
268
+ this.#lifetime = this.#context.session.join("subscription", import_general.Diagnostic.strong(this.#id));
269
+ if (this.request.eventFilters !== void 0) this.request.eventFilters.length = 0;
270
+ if (this.request.dataVersionFilters !== void 0) this.request.dataVersionFilters.length = 0;
194
271
  this.#sendUpdatesActivated = true;
195
272
  if (this.#outstandingEventsMinNumber !== void 0 && this.#latestSeededEventNumber !== void 0) {
196
273
  if (this.#latestSeededEventNumber < this.#outstandingEventsMinNumber) {
@@ -215,7 +292,7 @@ class ServerSubscription extends import_protocol.Subscription {
215
292
  * sending by 50ms in any case to make sure to catch all updates.
216
293
  */
217
294
  #prepareDataUpdate() {
218
- if (this.#sendDelayTimer.isRunning || this.isClosed) {
295
+ if (this.#sendDelayTimer.isRunning || this.#isClosed) {
219
296
  return;
220
297
  }
221
298
  if (!this.#sendUpdatesActivated) {
@@ -224,87 +301,114 @@ class ServerSubscription extends import_protocol.Subscription {
224
301
  this.#updateTimer.stop();
225
302
  const now = import_general.Time.nowMs;
226
303
  const timeSinceLastUpdate = (0, import_general.Millis)(now - this.#lastUpdateTime);
227
- if (timeSinceLastUpdate < this.#minIntervalFloor) {
304
+ if (timeSinceLastUpdate < this.minIntervalFloor) {
228
305
  this.#updateTimer = import_general.Time.getTimer(
229
306
  "Subscription update",
230
- (0, import_general.Millis)(this.#minIntervalFloor - timeSinceLastUpdate),
307
+ (0, import_general.Millis)(this.minIntervalFloor - timeSinceLastUpdate),
231
308
  () => this.#prepareDataUpdate()
232
309
  ).start();
233
310
  return;
234
311
  }
235
312
  this.#sendDelayTimer.start();
236
313
  this.#updateTimer = import_general.Time.getTimer(
237
- `Subscription update ${this.id}`,
314
+ `Subscription update ${this.idStr}`,
238
315
  this.#sendInterval,
239
316
  () => this.#prepareDataUpdate()
240
317
  ).start();
241
318
  }
242
- #triggerSendUpdate(onlyWithData = false) {
319
+ #triggerSendUpdate(onlyWithData = false, session) {
243
320
  if (this.#currentUpdatePromise !== void 0) {
244
321
  logger.debug("Sending update already in progress, delaying update ...");
245
322
  this.#sendNextUpdateImmediately = true;
246
323
  return;
247
324
  }
248
- this.#currentUpdatePromise = this.#sendUpdate(onlyWithData).catch((error) => logger.warn("Sending subscription update failed:", error)).finally(() => this.#currentUpdatePromise = void 0);
325
+ this.#currentUpdatePromise = this.#sendUpdate(onlyWithData, session).catch((error) => logger.warn("Sending subscription update failed:", error)).finally(() => this.#currentUpdatePromise = void 0);
249
326
  }
250
327
  /**
251
328
  * Determine all attributes that have changed since the last update and send them out to the subscriber.
252
329
  */
253
- async #sendUpdate(onlyWithData = false) {
254
- const attributeFilter = this.#outstandingAttributeUpdates;
255
- this.#outstandingAttributeUpdates = void 0;
256
- const eventsMinNumber = this.#outstandingEventsMinNumber;
257
- this.#outstandingEventsMinNumber = void 0;
258
- if (onlyWithData && attributeFilter === void 0 && eventsMinNumber === void 0) {
259
- return;
260
- }
261
- this.#lastUpdateTime = import_general.Time.nowMs;
330
+ async #sendUpdate(onlyWithData = false, session) {
331
+ var _stack3 = [];
262
332
  try {
263
- if (await this.#sendUpdateMessage(attributeFilter, eventsMinNumber, onlyWithData)) {
264
- this.#sendUpdateErrorCounter = 0;
265
- }
266
- } catch (error) {
267
- if (this.isClosed) {
268
- return;
269
- }
270
- this.#sendUpdateErrorCounter++;
271
- logger.info(
272
- `Error sending subscription update message (error count=${this.#sendUpdateErrorCounter}):`,
273
- error instanceof import_general.MatterError && error.message || error
274
- );
275
- if (this.#sendUpdateErrorCounter <= 2) {
276
- if (attributeFilter !== void 0) {
277
- for (const [endpointId, clusters] of Object.entries(attributeFilter)) {
278
- for (const [clusterId, attributes] of Object.entries(clusters)) {
279
- this.#addOutstandingAttributes(
280
- (0, import_types.EndpointNumber)(parseInt(endpointId)),
281
- (0, import_types.ClusterId)(parseInt(clusterId)),
282
- Array.from(attributes)
283
- );
333
+ const updating = __using(_stack3, this.#lifetime?.join("updating"));
334
+ while (true) {
335
+ const attributeFilter = this.#outstandingAttributeUpdates;
336
+ this.#outstandingAttributeUpdates = void 0;
337
+ const eventsMinNumber = this.#outstandingEventsMinNumber;
338
+ this.#outstandingEventsMinNumber = void 0;
339
+ if (onlyWithData && attributeFilter === void 0 && eventsMinNumber === void 0) {
340
+ break;
341
+ }
342
+ this.#lastUpdateTime = import_general.Time.nowMs;
343
+ try {
344
+ var _stack = [];
345
+ try {
346
+ const sending = __using(_stack, updating?.join("sending"));
347
+ if (await this.#sendUpdateMessage(sending, attributeFilter, eventsMinNumber, onlyWithData, session)) {
348
+ this.#sendUpdateErrorCounter = 0;
349
+ }
350
+ } catch (_) {
351
+ var _error = _, _hasError = true;
352
+ } finally {
353
+ __callDispose(_stack, _error, _hasError);
354
+ }
355
+ } catch (error) {
356
+ if (this.#isClosed) {
357
+ return;
358
+ }
359
+ this.#sendUpdateErrorCounter++;
360
+ logger.info(
361
+ `Error sending subscription update message (error count=${this.#sendUpdateErrorCounter}):`,
362
+ error instanceof import_general.MatterError && error.message || error
363
+ );
364
+ if (this.#sendUpdateErrorCounter <= 2) {
365
+ if (attributeFilter !== void 0) {
366
+ for (const [endpointId, clusters] of Object.entries(attributeFilter)) {
367
+ for (const [clusterId, attributes] of Object.entries(clusters)) {
368
+ this.#addOutstandingAttributes(
369
+ (0, import_types.EndpointNumber)(parseInt(endpointId)),
370
+ (0, import_types.ClusterId)(parseInt(clusterId)),
371
+ Array.from(attributes)
372
+ );
373
+ }
374
+ }
375
+ }
376
+ if (eventsMinNumber !== void 0) {
377
+ this.#outstandingEventsMinNumber = eventsMinNumber;
378
+ }
379
+ } else {
380
+ logger.info(
381
+ `Sending update failed 3 times in a row, canceling subscription ${this.idStr} and let controller subscribe again.`
382
+ );
383
+ this.#sendNextUpdateImmediately = false;
384
+ if (error instanceof import_general.NoResponseTimeoutError || error instanceof import_general.NetworkError || error instanceof import_protocol.SessionClosedError) {
385
+ var _stack2 = [];
386
+ try {
387
+ const _messaging = __using(_stack2, updating?.join("canceling"));
388
+ this.#isCanceledByPeer = true;
389
+ await this.#cancel();
390
+ break;
391
+ } catch (_2) {
392
+ var _error2 = _2, _hasError2 = true;
393
+ } finally {
394
+ __callDispose(_stack2, _error2, _hasError2);
395
+ }
396
+ } else {
397
+ throw error;
284
398
  }
285
399
  }
286
400
  }
287
- if (eventsMinNumber !== void 0) {
288
- this.#outstandingEventsMinNumber = eventsMinNumber;
401
+ if (!this.#sendNextUpdateImmediately) {
402
+ break;
289
403
  }
290
- } else {
291
- logger.info(
292
- `Sending update failed 3 times in a row, canceling subscription ${this.id} and let controller subscribe again.`
293
- );
404
+ logger.debug("Sending delayed update immediately after last one was sent");
294
405
  this.#sendNextUpdateImmediately = false;
295
- if (error instanceof import_general.NoResponseTimeoutError || error instanceof import_general.NetworkError || error instanceof import_protocol.NoChannelError) {
296
- this.isCanceledByPeer = true;
297
- await this.destroy();
298
- return;
299
- } else {
300
- throw error;
301
- }
406
+ onlyWithData = true;
302
407
  }
303
- }
304
- if (this.#sendNextUpdateImmediately) {
305
- logger.debug("Sending delayed update immediately after last one was sent.");
306
- this.#sendNextUpdateImmediately = false;
307
- await this.#sendUpdate(true);
408
+ } catch (_3) {
409
+ var _error3 = _3, _hasError3 = true;
410
+ } finally {
411
+ __callDispose(_stack3, _error3, _hasError3);
308
412
  }
309
413
  }
310
414
  /**
@@ -312,7 +416,7 @@ class ServerSubscription extends import_protocol.Subscription {
312
416
  */
313
417
  async *#processAttributesAndEventsReport(context, suppressStatusReports = false) {
314
418
  const request = {
315
- ...this.criteria,
419
+ ...this.request,
316
420
  interactionModelRevision: import_model.Specification.INTERACTION_MODEL_REVISION
317
421
  // irrelevant here, set to our version
318
422
  };
@@ -397,60 +501,85 @@ class ServerSubscription extends import_protocol.Subscription {
397
501
  }
398
502
  async sendInitialReport(messenger, readContext, suppressStatusReports) {
399
503
  this.#updateTimer.stop();
400
- if (this.criteria.attributeRequests?.length) {
504
+ if (this.request.attributeRequests?.length) {
401
505
  this.#changeHandlers.on(
402
506
  this.#context.node.protocol.attrsChanged,
403
507
  this.#handleClusterStateChanges.bind(this)
404
508
  );
405
509
  }
406
- if (this.criteria.eventRequests?.length) {
510
+ if (this.request.eventRequests?.length) {
407
511
  this.#changeHandlers.on(this.#context.node.protocol.eventHandler.added, this.#handleAddedEvents.bind(this));
408
512
  }
409
513
  await messenger.sendDataReport({
410
514
  baseDataReport: {
411
515
  suppressResponse: false,
412
516
  // we always need proper response for initial report
413
- subscriptionId: this.id,
517
+ subscriptionId: this.subscriptionId,
414
518
  interactionModelRevision: import_model.Specification.INTERACTION_MODEL_REVISION
415
519
  },
416
- forFabricFilteredRead: this.criteria.isFabricFiltered,
520
+ forFabricFilteredRead: this.request.isFabricFiltered,
417
521
  payload: this.#processAttributesAndEventsReport(readContext, suppressStatusReports)
418
522
  });
419
523
  }
420
- async #flush() {
524
+ async #flush(flushViaSession) {
421
525
  this.#sendDelayTimer.stop();
422
526
  if (this.#outstandingAttributeUpdates !== void 0 || this.#outstandingEventsMinNumber !== void 0) {
423
- logger.debug(`Flushing subscription ${this.id}${this.isClosed ? " (for closing)" : ""}`);
424
- this.#triggerSendUpdate(true);
527
+ logger.debug(`Flushing subscription ${this.idStr}${this.#isClosed ? " (for closing)" : ""}`);
528
+ this.#triggerSendUpdate(true, flushViaSession);
425
529
  if (this.#currentUpdatePromise) {
426
- await this.#currentUpdatePromise;
530
+ var _stack = [];
531
+ try {
532
+ const _waiting = __using(_stack, this.#lifetime?.join("waiting on flush"));
533
+ await this.#currentUpdatePromise;
534
+ } catch (_) {
535
+ var _error = _, _hasError = true;
536
+ } finally {
537
+ __callDispose(_stack, _error, _hasError);
538
+ }
427
539
  }
428
540
  }
429
541
  }
430
- async destroy() {
431
- this.#sendUpdatesActivated = false;
432
- this.#changeHandlers.close();
433
- this.#updateTimer.stop();
434
- this.#sendDelayTimer.stop();
435
- await super.destroy();
436
- }
437
542
  /**
438
543
  * Closes the subscription and flushes all outstanding data updates if requested.
439
544
  */
440
- async close(flush = false, cancelledByPeer = false) {
441
- if (this.isClosed) {
545
+ async close(flushViaSession) {
546
+ if (this.#isClosed) {
442
547
  return;
443
548
  }
444
- if (cancelledByPeer) {
445
- this.isCanceledByPeer = true;
446
- }
447
- await this.destroy();
448
- if (flush) {
449
- await this.#flush();
450
- }
549
+ this.#isClosed = true;
550
+ await this.#cancel(flushViaSession);
451
551
  if (this.#currentUpdatePromise) {
452
- await this.#currentUpdatePromise;
552
+ var _stack = [];
553
+ try {
554
+ const _waiting = __using(_stack, this.#lifetime?.closing()?.join("waiting on update"));
555
+ await this.#currentUpdatePromise;
556
+ } catch (_) {
557
+ var _error = _, _hasError = true;
558
+ } finally {
559
+ __callDispose(_stack, _error, _hasError);
560
+ }
561
+ }
562
+ }
563
+ async #cancel(flushViaSession) {
564
+ const closing = this.#lifetime?.closing();
565
+ this.#sendUpdatesActivated = false;
566
+ this.#changeHandlers.close();
567
+ if (flushViaSession !== void 0) {
568
+ var _stack = [];
569
+ try {
570
+ const _flushing = __using(_stack, closing?.join("flushing"));
571
+ await this.#flush(flushViaSession);
572
+ } catch (_) {
573
+ var _error = _, _hasError = true;
574
+ } finally {
575
+ __callDispose(_stack, _error, _hasError);
576
+ }
453
577
  }
578
+ this.#updateTimer.stop();
579
+ this.#sendDelayTimer.stop();
580
+ this.session.subscriptions.delete(this);
581
+ logger.debug(this.session.via, "Deleted subscription", import_general.hex.fixed(this.subscriptionId, 8));
582
+ this.cancelled.emit(this);
454
583
  }
455
584
  /**
456
585
  * Iterates over all attributes and events that have changed since the last update and sends them to
@@ -459,14 +588,13 @@ class ServerSubscription extends import_protocol.Subscription {
459
588
  */
460
589
  async *#iterateDataUpdate(exchange, attributeFilter, eventsMinNumber) {
461
590
  const request = {
462
- ...this.criteria,
591
+ ...this.request,
463
592
  interactionModelRevision: import_model.Specification.INTERACTION_MODEL_REVISION
464
593
  // irrelevant here, set to our version
465
594
  };
466
595
  const session = (0, import_RemoteActorContext.RemoteActorContext)({
467
596
  activity: exchange[import_NodeActivity.NodeActivity.activityKey],
468
597
  fabricFiltered: request.isFabricFiltered,
469
- message: {},
470
598
  exchange,
471
599
  node: this.#context.node
472
600
  }).beginReadOnly();
@@ -499,50 +627,81 @@ class ServerSubscription extends import_protocol.Subscription {
499
627
  session[Symbol.dispose]();
500
628
  }
501
629
  }
502
- async #sendUpdateMessage(attributeFilter, eventsMinNumber, onlyWithData) {
503
- const exchange = this.#context.initiateExchange(this.#peerAddress, import_types.INTERACTION_PROTOCOL_ID);
630
+ async #sendUpdateMessage(lifetime, attributeFilter, eventsMinNumber, onlyWithData, session) {
631
+ const exchange = this.#context.initiateExchange(session ?? this.#peerAddress, import_types.INTERACTION_PROTOCOL_ID);
504
632
  if (exchange === void 0) return false;
505
633
  const messenger = new import_protocol.InteractionServerMessenger(exchange);
506
634
  try {
507
635
  if (attributeFilter === void 0 && eventsMinNumber === void 0) {
508
- await messenger.sendDataReport({
509
- baseDataReport: {
510
- suppressResponse: true,
511
- // suppressResponse true for empty DataReports
512
- subscriptionId: this.id,
513
- interactionModelRevision: import_model.Specification.INTERACTION_MODEL_REVISION
514
- },
515
- forFabricFilteredRead: this.criteria.isFabricFiltered,
516
- waitForAck: !this.isClosed
517
- // Do not wait for ack when closed
518
- });
636
+ var _stack = [];
637
+ try {
638
+ const _sending = __using(_stack, lifetime?.join("sending keepalive"));
639
+ await messenger.sendDataReport({
640
+ baseDataReport: {
641
+ suppressResponse: true,
642
+ // suppressResponse true for empty DataReports
643
+ subscriptionId: this.subscriptionId,
644
+ interactionModelRevision: import_model.Specification.INTERACTION_MODEL_REVISION
645
+ },
646
+ forFabricFilteredRead: this.request.isFabricFiltered,
647
+ waitForAck: !this.#isClosed
648
+ // Do not wait for ack when closed
649
+ });
650
+ } catch (_) {
651
+ var _error = _, _hasError = true;
652
+ } finally {
653
+ __callDispose(_stack, _error, _hasError);
654
+ }
519
655
  } else {
520
- await messenger.sendDataReport({
521
- baseDataReport: {
522
- suppressResponse: false,
523
- // Non-empty data reports always need to send response
524
- subscriptionId: this.id,
525
- interactionModelRevision: import_model.Specification.INTERACTION_MODEL_REVISION
526
- },
527
- forFabricFilteredRead: this.criteria.isFabricFiltered,
528
- payload: this.#iterateDataUpdate(exchange, attributeFilter, eventsMinNumber),
529
- waitForAck: !this.isClosed,
530
- // Do not wait for ack when closed
531
- suppressEmptyReport: onlyWithData
532
- });
656
+ var _stack2 = [];
657
+ try {
658
+ const _sending = __using(_stack2, lifetime?.join("sending data"));
659
+ await messenger.sendDataReport({
660
+ baseDataReport: {
661
+ suppressResponse: false,
662
+ // Non-empty data reports always need to send response
663
+ subscriptionId: this.subscriptionId,
664
+ interactionModelRevision: import_model.Specification.INTERACTION_MODEL_REVISION
665
+ },
666
+ forFabricFilteredRead: this.request.isFabricFiltered,
667
+ payload: this.#iterateDataUpdate(exchange, attributeFilter, eventsMinNumber),
668
+ waitForAck: !this.#isClosed,
669
+ // Do not wait for ack when closed
670
+ suppressEmptyReport: onlyWithData
671
+ });
672
+ } catch (_2) {
673
+ var _error2 = _2, _hasError2 = true;
674
+ } finally {
675
+ __callDispose(_stack2, _error2, _hasError2);
676
+ }
533
677
  }
534
678
  } catch (error) {
535
- if (import_types.StatusResponseError.is(error, import_types.StatusCode.InvalidSubscription, import_types.StatusCode.Failure)) {
536
- logger.info(`Subscription ${this.id} cancelled by peer.`);
537
- this.isCanceledByPeer = true;
538
- await this.close(false);
539
- } else {
540
- import_types.StatusResponseError.accept(error);
541
- logger.info(`Subscription ${this.id} update failed:`, error);
542
- await this.close(false);
679
+ var _stack3 = [];
680
+ try {
681
+ if (import_types.StatusResponseError.is(error, import_types.StatusCode.InvalidSubscription, import_types.StatusCode.Failure)) {
682
+ logger.info(`Subscription ${this.idStr} cancelled by peer`);
683
+ this.#isCanceledByPeer = true;
684
+ } else {
685
+ import_types.StatusResponseError.accept(error);
686
+ logger.info(`Subscription ${this.idStr} update failed:`, error);
687
+ }
688
+ const _canceling = __using(_stack3, lifetime?.join("canceling"));
689
+ await this.#cancel();
690
+ } catch (_3) {
691
+ var _error3 = _3, _hasError3 = true;
692
+ } finally {
693
+ __callDispose(_stack3, _error3, _hasError3);
543
694
  }
544
695
  } finally {
545
- await messenger.close();
696
+ var _stack4 = [];
697
+ try {
698
+ const _closing = __using(_stack4, lifetime?.join("closing messenger"));
699
+ await messenger.close();
700
+ } catch (_4) {
701
+ var _error4 = _4, _hasError4 = true;
702
+ } finally {
703
+ __callDispose(_stack4, _error4, _hasError4);
704
+ }
546
705
  }
547
706
  return true;
548
707
  }