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