@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.
- package/dist/cjs/behavior/Behavior.d.ts +5 -1
- package/dist/cjs/behavior/Behavior.d.ts.map +1 -1
- package/dist/cjs/behavior/Behavior.js +15 -5
- package/dist/cjs/behavior/Behavior.js.map +1 -1
- package/dist/cjs/behavior/Events.d.ts +7 -7
- package/dist/cjs/behavior/Events.d.ts.map +1 -1
- package/dist/cjs/behavior/Events.js +1 -1
- package/dist/cjs/behavior/Events.js.map +1 -1
- package/dist/cjs/behavior/Transitions.d.ts +2 -3
- package/dist/cjs/behavior/Transitions.d.ts.map +1 -1
- package/dist/cjs/behavior/Transitions.js +1 -2
- package/dist/cjs/behavior/Transitions.js.map +1 -1
- package/dist/cjs/behavior/cluster/ClusterBehaviorType.js +2 -2
- package/dist/cjs/behavior/cluster/ClusterBehaviorType.js.map +1 -1
- package/dist/cjs/behavior/cluster/ClusterEvents.d.ts +1 -1
- package/dist/cjs/behavior/cluster/ClusterEvents.d.ts.map +1 -1
- package/dist/cjs/behavior/cluster/cluster-behavior-utils.js +1 -1
- package/dist/cjs/behavior/cluster/cluster-behavior-utils.js.map +1 -1
- package/dist/cjs/behavior/context/Contextual.js +1 -1
- package/dist/cjs/behavior/context/Contextual.js.map +1 -1
- package/dist/cjs/behavior/context/NodeActivity.d.ts +2 -4
- package/dist/cjs/behavior/context/NodeActivity.d.ts.map +1 -1
- package/dist/cjs/behavior/context/NodeActivity.js +4 -11
- package/dist/cjs/behavior/context/NodeActivity.js.map +1 -1
- package/dist/cjs/behavior/context/server/LocalActorContext.d.ts +2 -3
- package/dist/cjs/behavior/context/server/LocalActorContext.d.ts.map +1 -1
- package/dist/cjs/behavior/context/server/LocalActorContext.js +3 -3
- package/dist/cjs/behavior/context/server/LocalActorContext.js.map +1 -1
- package/dist/cjs/behavior/context/server/RemoteActorContext.d.ts +2 -6
- package/dist/cjs/behavior/context/server/RemoteActorContext.d.ts.map +1 -1
- package/dist/cjs/behavior/context/server/RemoteActorContext.js +20 -22
- package/dist/cjs/behavior/context/server/RemoteActorContext.js.map +1 -1
- package/dist/cjs/behavior/internal/BackingEvents.js +2 -2
- package/dist/cjs/behavior/internal/BackingEvents.js.map +1 -1
- package/dist/cjs/behavior/internal/BehaviorBacking.d.ts +2 -1
- package/dist/cjs/behavior/internal/BehaviorBacking.d.ts.map +1 -1
- package/dist/cjs/behavior/internal/BehaviorBacking.js +3 -0
- package/dist/cjs/behavior/internal/BehaviorBacking.js.map +1 -1
- package/dist/cjs/behavior/internal/Reactors.d.ts.map +1 -1
- package/dist/cjs/behavior/internal/Reactors.js +2 -1
- package/dist/cjs/behavior/internal/Reactors.js.map +1 -1
- package/dist/cjs/behavior/state/managed/Datasource.d.ts.map +1 -1
- package/dist/cjs/behavior/state/managed/Datasource.js +1 -1
- package/dist/cjs/behavior/state/managed/Datasource.js.map +1 -1
- package/dist/cjs/behavior/state/managed/Internal.js +2 -2
- package/dist/cjs/behavior/state/managed/Internal.js.map +1 -1
- package/dist/cjs/behavior/state/managed/values/BitmapManager.js +1 -1
- package/dist/cjs/behavior/state/managed/values/BitmapManager.js.map +1 -1
- package/dist/cjs/behavior/state/managed/values/StructManager.js +1 -1
- package/dist/cjs/behavior/state/managed/values/StructManager.js.map +1 -1
- package/dist/cjs/behavior/system/commissioning/CommissioningClient.d.ts.map +1 -1
- package/dist/cjs/behavior/system/commissioning/CommissioningClient.js +6 -12
- package/dist/cjs/behavior/system/commissioning/CommissioningClient.js.map +1 -1
- package/dist/cjs/behavior/system/commissioning/CommissioningServer.d.ts +3 -2
- package/dist/cjs/behavior/system/commissioning/CommissioningServer.d.ts.map +1 -1
- package/dist/cjs/behavior/system/commissioning/CommissioningServer.js +3 -6
- package/dist/cjs/behavior/system/commissioning/CommissioningServer.js.map +1 -1
- package/dist/cjs/behavior/system/mqtt/MqttInterface.d.ts.map +1 -1
- package/dist/cjs/behavior/system/mqtt/MqttInterface.js +91 -30
- package/dist/cjs/behavior/system/mqtt/MqttInterface.js.map +1 -1
- package/dist/cjs/behavior/system/network/NetworkRuntime.d.ts.map +1 -1
- package/dist/cjs/behavior/system/network/NetworkRuntime.js +1 -3
- package/dist/cjs/behavior/system/network/NetworkRuntime.js.map +1 -1
- package/dist/cjs/behavior/system/network/ServerGroupNetworking.js +2 -2
- package/dist/cjs/behavior/system/network/ServerGroupNetworking.js.map +1 -1
- package/dist/cjs/behavior/system/network/ServerNetworkRuntime.d.ts.map +1 -1
- package/dist/cjs/behavior/system/network/ServerNetworkRuntime.js +152 -13
- package/dist/cjs/behavior/system/network/ServerNetworkRuntime.js.map +2 -2
- package/dist/cjs/behavior/system/remote/RemoteInterface.d.ts +3 -2
- package/dist/cjs/behavior/system/remote/RemoteInterface.d.ts.map +1 -1
- package/dist/cjs/behavior/system/remote/RemoteInterface.js +69 -10
- package/dist/cjs/behavior/system/remote/RemoteInterface.js.map +1 -1
- package/dist/cjs/behavior/system/remote/api/Api.d.ts.map +1 -1
- package/dist/cjs/behavior/system/remote/api/Api.js +4 -3
- package/dist/cjs/behavior/system/remote/api/Api.js.map +1 -1
- package/dist/cjs/behavior/system/sessions/SessionsBehavior.js +2 -2
- package/dist/cjs/behavior/system/sessions/SessionsBehavior.js.map +1 -1
- package/dist/cjs/behavior/system/subscriptions/SubscriptionsServer.d.ts.map +1 -1
- package/dist/cjs/behavior/system/subscriptions/SubscriptionsServer.js +14 -11
- package/dist/cjs/behavior/system/subscriptions/SubscriptionsServer.js.map +1 -1
- package/dist/cjs/behavior/system/websocket/WebSocketInterface.d.ts.map +1 -1
- package/dist/cjs/behavior/system/websocket/WebSocketInterface.js +12 -4
- package/dist/cjs/behavior/system/websocket/WebSocketInterface.js.map +1 -1
- package/dist/cjs/behaviors/access-control/AccessControlServer.js +1 -1
- package/dist/cjs/behaviors/access-control/AccessControlServer.js.map +1 -1
- package/dist/cjs/behaviors/administrator-commissioning/AdministratorCommissioningServer.d.ts.map +1 -1
- package/dist/cjs/behaviors/administrator-commissioning/AdministratorCommissioningServer.js +65 -7
- package/dist/cjs/behaviors/administrator-commissioning/AdministratorCommissioningServer.js.map +1 -1
- package/dist/cjs/behaviors/basic-information/BasicInformationServer.js +2 -2
- package/dist/cjs/behaviors/basic-information/BasicInformationServer.js.map +1 -1
- package/dist/cjs/behaviors/general-commissioning/GeneralCommissioningServer.d.ts.map +1 -1
- package/dist/cjs/behaviors/general-commissioning/GeneralCommissioningServer.js +12 -8
- package/dist/cjs/behaviors/general-commissioning/GeneralCommissioningServer.js.map +1 -1
- package/dist/cjs/behaviors/general-commissioning/ServerNodeFailsafeContext.d.ts +2 -3
- package/dist/cjs/behaviors/general-commissioning/ServerNodeFailsafeContext.d.ts.map +1 -1
- package/dist/cjs/behaviors/general-commissioning/ServerNodeFailsafeContext.js +2 -10
- package/dist/cjs/behaviors/general-commissioning/ServerNodeFailsafeContext.js.map +1 -1
- package/dist/cjs/behaviors/general-diagnostics/GeneralDiagnosticsServer.js +2 -2
- package/dist/cjs/behaviors/general-diagnostics/GeneralDiagnosticsServer.js.map +1 -1
- package/dist/cjs/behaviors/group-key-management/GroupKeyManagementServer.js +1 -1
- package/dist/cjs/behaviors/group-key-management/GroupKeyManagementServer.js.map +1 -1
- package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsServer.d.ts +0 -1
- package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsServer.d.ts.map +1 -1
- package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsServer.js +15 -14
- package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsServer.js.map +1 -1
- package/dist/cjs/behaviors/scenes-management/ScenesManagementServer.js +2 -2
- package/dist/cjs/behaviors/scenes-management/ScenesManagementServer.js.map +1 -1
- package/dist/cjs/behaviors/thermostat/AtomicWriteHandler.js +1 -1
- package/dist/cjs/behaviors/thermostat/AtomicWriteHandler.js.map +1 -1
- package/dist/cjs/behaviors/window-covering/WindowCoveringServer.d.ts.map +1 -1
- package/dist/cjs/behaviors/window-covering/WindowCoveringServer.js +21 -8
- package/dist/cjs/behaviors/window-covering/WindowCoveringServer.js.map +1 -1
- package/dist/cjs/endpoint/Agent.js +1 -1
- package/dist/cjs/endpoint/Agent.js.map +1 -1
- package/dist/cjs/endpoint/Endpoint.d.ts +2 -1
- package/dist/cjs/endpoint/Endpoint.d.ts.map +1 -1
- package/dist/cjs/endpoint/Endpoint.js +95 -8
- package/dist/cjs/endpoint/Endpoint.js.map +2 -2
- package/dist/cjs/endpoint/properties/Behaviors.d.ts.map +1 -1
- package/dist/cjs/endpoint/properties/Behaviors.js +11 -7
- package/dist/cjs/endpoint/properties/Behaviors.js.map +1 -1
- package/dist/cjs/endpoint/properties/Commands.js +1 -1
- package/dist/cjs/endpoint/properties/Commands.js.map +1 -1
- package/dist/cjs/endpoint/properties/EndpointLifecycle.d.ts.map +1 -1
- package/dist/cjs/endpoint/properties/EndpointLifecycle.js +3 -0
- package/dist/cjs/endpoint/properties/EndpointLifecycle.js.map +1 -1
- package/dist/cjs/node/ClientNode.d.ts.map +1 -1
- package/dist/cjs/node/ClientNode.js +2 -0
- package/dist/cjs/node/ClientNode.js.map +1 -1
- package/dist/cjs/node/Node.d.ts +2 -2
- package/dist/cjs/node/Node.d.ts.map +1 -1
- package/dist/cjs/node/Node.js +3 -2
- package/dist/cjs/node/Node.js.map +1 -1
- package/dist/cjs/node/ServerNode.d.ts.map +1 -1
- package/dist/cjs/node/ServerNode.js +54 -1
- package/dist/cjs/node/ServerNode.js.map +1 -1
- package/dist/cjs/node/client/ClientCommandMethod.d.ts.map +1 -1
- package/dist/cjs/node/client/ClientCommandMethod.js +26 -29
- package/dist/cjs/node/client/ClientCommandMethod.js.map +1 -1
- package/dist/cjs/node/client/NodePeerAddressStore.d.ts +3 -3
- package/dist/cjs/node/client/NodePeerAddressStore.d.ts.map +1 -1
- package/dist/cjs/node/client/NodePeerAddressStore.js.map +1 -1
- package/dist/cjs/node/client/PeerBehavior.js +1 -1
- package/dist/cjs/node/client/PeerBehavior.js.map +1 -1
- package/dist/cjs/node/client/Peers.d.ts.map +1 -1
- package/dist/cjs/node/client/Peers.js +14 -0
- package/dist/cjs/node/client/Peers.js.map +1 -1
- package/dist/cjs/node/integration/ProtocolService.d.ts.map +1 -1
- package/dist/cjs/node/integration/ProtocolService.js +3 -2
- package/dist/cjs/node/integration/ProtocolService.js.map +1 -1
- package/dist/cjs/node/server/InteractionServer.d.ts.map +1 -1
- package/dist/cjs/node/server/InteractionServer.js +55 -50
- package/dist/cjs/node/server/InteractionServer.js.map +2 -2
- package/dist/cjs/node/server/ServerEnvironment.js +1 -1
- package/dist/cjs/node/server/ServerEnvironment.js.map +1 -1
- package/dist/cjs/node/server/ServerSubscription.d.ts +61 -10
- package/dist/cjs/node/server/ServerSubscription.d.ts.map +1 -1
- package/dist/cjs/node/server/ServerSubscription.js +316 -157
- package/dist/cjs/node/server/ServerSubscription.js.map +2 -2
- package/dist/esm/behavior/Behavior.d.ts +5 -1
- package/dist/esm/behavior/Behavior.d.ts.map +1 -1
- package/dist/esm/behavior/Behavior.js +15 -5
- package/dist/esm/behavior/Behavior.js.map +1 -1
- package/dist/esm/behavior/Events.d.ts +7 -7
- package/dist/esm/behavior/Events.d.ts.map +1 -1
- package/dist/esm/behavior/Events.js +1 -1
- package/dist/esm/behavior/Events.js.map +1 -1
- package/dist/esm/behavior/Transitions.d.ts +2 -3
- package/dist/esm/behavior/Transitions.d.ts.map +1 -1
- package/dist/esm/behavior/Transitions.js +1 -2
- package/dist/esm/behavior/Transitions.js.map +1 -1
- package/dist/esm/behavior/cluster/ClusterBehaviorType.js +2 -2
- package/dist/esm/behavior/cluster/ClusterBehaviorType.js.map +1 -1
- package/dist/esm/behavior/cluster/ClusterEvents.d.ts +1 -1
- package/dist/esm/behavior/cluster/ClusterEvents.d.ts.map +1 -1
- package/dist/esm/behavior/cluster/cluster-behavior-utils.js +1 -1
- package/dist/esm/behavior/cluster/cluster-behavior-utils.js.map +1 -1
- package/dist/esm/behavior/context/Contextual.js +1 -1
- package/dist/esm/behavior/context/Contextual.js.map +1 -1
- package/dist/esm/behavior/context/NodeActivity.d.ts +2 -4
- package/dist/esm/behavior/context/NodeActivity.d.ts.map +1 -1
- package/dist/esm/behavior/context/NodeActivity.js +5 -12
- package/dist/esm/behavior/context/NodeActivity.js.map +1 -1
- package/dist/esm/behavior/context/server/LocalActorContext.d.ts +2 -3
- package/dist/esm/behavior/context/server/LocalActorContext.d.ts.map +1 -1
- package/dist/esm/behavior/context/server/LocalActorContext.js +5 -5
- package/dist/esm/behavior/context/server/LocalActorContext.js.map +1 -1
- package/dist/esm/behavior/context/server/RemoteActorContext.d.ts +2 -6
- package/dist/esm/behavior/context/server/RemoteActorContext.d.ts.map +1 -1
- package/dist/esm/behavior/context/server/RemoteActorContext.js +27 -24
- package/dist/esm/behavior/context/server/RemoteActorContext.js.map +1 -1
- package/dist/esm/behavior/internal/BackingEvents.js +2 -2
- package/dist/esm/behavior/internal/BackingEvents.js.map +1 -1
- package/dist/esm/behavior/internal/BehaviorBacking.d.ts +2 -1
- package/dist/esm/behavior/internal/BehaviorBacking.d.ts.map +1 -1
- package/dist/esm/behavior/internal/BehaviorBacking.js +4 -0
- package/dist/esm/behavior/internal/BehaviorBacking.js.map +1 -1
- package/dist/esm/behavior/internal/Reactors.d.ts.map +1 -1
- package/dist/esm/behavior/internal/Reactors.js +2 -1
- package/dist/esm/behavior/internal/Reactors.js.map +1 -1
- package/dist/esm/behavior/state/managed/Datasource.d.ts.map +1 -1
- package/dist/esm/behavior/state/managed/Datasource.js +2 -1
- package/dist/esm/behavior/state/managed/Datasource.js.map +1 -1
- package/dist/esm/behavior/state/managed/Internal.js +2 -2
- package/dist/esm/behavior/state/managed/Internal.js.map +1 -1
- package/dist/esm/behavior/state/managed/values/BitmapManager.js +1 -1
- package/dist/esm/behavior/state/managed/values/BitmapManager.js.map +1 -1
- package/dist/esm/behavior/state/managed/values/StructManager.js +1 -1
- package/dist/esm/behavior/state/managed/values/StructManager.js.map +1 -1
- package/dist/esm/behavior/system/commissioning/CommissioningClient.d.ts.map +1 -1
- package/dist/esm/behavior/system/commissioning/CommissioningClient.js +7 -14
- package/dist/esm/behavior/system/commissioning/CommissioningClient.js.map +1 -1
- package/dist/esm/behavior/system/commissioning/CommissioningServer.d.ts +3 -2
- package/dist/esm/behavior/system/commissioning/CommissioningServer.d.ts.map +1 -1
- package/dist/esm/behavior/system/commissioning/CommissioningServer.js +3 -7
- package/dist/esm/behavior/system/commissioning/CommissioningServer.js.map +1 -1
- package/dist/esm/behavior/system/mqtt/MqttInterface.d.ts.map +1 -1
- package/dist/esm/behavior/system/mqtt/MqttInterface.js +91 -30
- package/dist/esm/behavior/system/mqtt/MqttInterface.js.map +1 -1
- package/dist/esm/behavior/system/network/NetworkRuntime.d.ts.map +1 -1
- package/dist/esm/behavior/system/network/NetworkRuntime.js +1 -3
- package/dist/esm/behavior/system/network/NetworkRuntime.js.map +1 -1
- package/dist/esm/behavior/system/network/ServerGroupNetworking.js +2 -2
- package/dist/esm/behavior/system/network/ServerGroupNetworking.js.map +1 -1
- package/dist/esm/behavior/system/network/ServerNetworkRuntime.d.ts.map +1 -1
- package/dist/esm/behavior/system/network/ServerNetworkRuntime.js +152 -14
- package/dist/esm/behavior/system/network/ServerNetworkRuntime.js.map +2 -2
- package/dist/esm/behavior/system/remote/RemoteInterface.d.ts +3 -2
- package/dist/esm/behavior/system/remote/RemoteInterface.d.ts.map +1 -1
- package/dist/esm/behavior/system/remote/RemoteInterface.js +76 -11
- package/dist/esm/behavior/system/remote/RemoteInterface.js.map +1 -1
- package/dist/esm/behavior/system/remote/api/Api.d.ts.map +1 -1
- package/dist/esm/behavior/system/remote/api/Api.js +4 -3
- package/dist/esm/behavior/system/remote/api/Api.js.map +1 -1
- package/dist/esm/behavior/system/sessions/SessionsBehavior.js +2 -2
- package/dist/esm/behavior/system/sessions/SessionsBehavior.js.map +1 -1
- package/dist/esm/behavior/system/subscriptions/SubscriptionsServer.d.ts.map +1 -1
- package/dist/esm/behavior/system/subscriptions/SubscriptionsServer.js +17 -14
- package/dist/esm/behavior/system/subscriptions/SubscriptionsServer.js.map +1 -1
- package/dist/esm/behavior/system/websocket/WebSocketInterface.d.ts.map +1 -1
- package/dist/esm/behavior/system/websocket/WebSocketInterface.js +12 -4
- package/dist/esm/behavior/system/websocket/WebSocketInterface.js.map +1 -1
- package/dist/esm/behaviors/access-control/AccessControlServer.js +1 -1
- package/dist/esm/behaviors/access-control/AccessControlServer.js.map +1 -1
- package/dist/esm/behaviors/administrator-commissioning/AdministratorCommissioningServer.d.ts.map +1 -1
- package/dist/esm/behaviors/administrator-commissioning/AdministratorCommissioningServer.js +66 -8
- package/dist/esm/behaviors/administrator-commissioning/AdministratorCommissioningServer.js.map +1 -1
- package/dist/esm/behaviors/basic-information/BasicInformationServer.js +2 -2
- package/dist/esm/behaviors/basic-information/BasicInformationServer.js.map +1 -1
- package/dist/esm/behaviors/general-commissioning/GeneralCommissioningServer.d.ts.map +1 -1
- package/dist/esm/behaviors/general-commissioning/GeneralCommissioningServer.js +13 -9
- package/dist/esm/behaviors/general-commissioning/GeneralCommissioningServer.js.map +1 -1
- package/dist/esm/behaviors/general-commissioning/ServerNodeFailsafeContext.d.ts +2 -3
- package/dist/esm/behaviors/general-commissioning/ServerNodeFailsafeContext.d.ts.map +1 -1
- package/dist/esm/behaviors/general-commissioning/ServerNodeFailsafeContext.js +2 -10
- package/dist/esm/behaviors/general-commissioning/ServerNodeFailsafeContext.js.map +1 -1
- package/dist/esm/behaviors/general-diagnostics/GeneralDiagnosticsServer.js +2 -2
- package/dist/esm/behaviors/general-diagnostics/GeneralDiagnosticsServer.js.map +1 -1
- package/dist/esm/behaviors/group-key-management/GroupKeyManagementServer.js +1 -1
- package/dist/esm/behaviors/group-key-management/GroupKeyManagementServer.js.map +1 -1
- package/dist/esm/behaviors/operational-credentials/OperationalCredentialsServer.d.ts +0 -1
- package/dist/esm/behaviors/operational-credentials/OperationalCredentialsServer.d.ts.map +1 -1
- package/dist/esm/behaviors/operational-credentials/OperationalCredentialsServer.js +15 -15
- package/dist/esm/behaviors/operational-credentials/OperationalCredentialsServer.js.map +1 -1
- package/dist/esm/behaviors/scenes-management/ScenesManagementServer.js +2 -2
- package/dist/esm/behaviors/scenes-management/ScenesManagementServer.js.map +1 -1
- package/dist/esm/behaviors/thermostat/AtomicWriteHandler.js +1 -1
- package/dist/esm/behaviors/thermostat/AtomicWriteHandler.js.map +1 -1
- package/dist/esm/behaviors/window-covering/WindowCoveringServer.d.ts.map +1 -1
- package/dist/esm/behaviors/window-covering/WindowCoveringServer.js +22 -9
- package/dist/esm/behaviors/window-covering/WindowCoveringServer.js.map +1 -1
- package/dist/esm/endpoint/Agent.js +1 -1
- package/dist/esm/endpoint/Agent.js.map +1 -1
- package/dist/esm/endpoint/Endpoint.d.ts +2 -1
- package/dist/esm/endpoint/Endpoint.d.ts.map +1 -1
- package/dist/esm/endpoint/Endpoint.js +96 -8
- package/dist/esm/endpoint/Endpoint.js.map +2 -2
- package/dist/esm/endpoint/properties/Behaviors.d.ts.map +1 -1
- package/dist/esm/endpoint/properties/Behaviors.js +11 -7
- package/dist/esm/endpoint/properties/Behaviors.js.map +1 -1
- package/dist/esm/endpoint/properties/Commands.js +1 -1
- package/dist/esm/endpoint/properties/Commands.js.map +1 -1
- package/dist/esm/endpoint/properties/EndpointLifecycle.d.ts.map +1 -1
- package/dist/esm/endpoint/properties/EndpointLifecycle.js +3 -0
- package/dist/esm/endpoint/properties/EndpointLifecycle.js.map +1 -1
- package/dist/esm/node/ClientNode.d.ts.map +1 -1
- package/dist/esm/node/ClientNode.js +2 -0
- package/dist/esm/node/ClientNode.js.map +1 -1
- package/dist/esm/node/Node.d.ts +2 -2
- package/dist/esm/node/Node.d.ts.map +1 -1
- package/dist/esm/node/Node.js +5 -4
- package/dist/esm/node/Node.js.map +1 -1
- package/dist/esm/node/ServerNode.d.ts.map +1 -1
- package/dist/esm/node/ServerNode.js +54 -1
- package/dist/esm/node/ServerNode.js.map +1 -1
- package/dist/esm/node/client/ClientCommandMethod.d.ts.map +1 -1
- package/dist/esm/node/client/ClientCommandMethod.js +26 -29
- package/dist/esm/node/client/ClientCommandMethod.js.map +1 -1
- package/dist/esm/node/client/NodePeerAddressStore.d.ts +3 -3
- package/dist/esm/node/client/NodePeerAddressStore.d.ts.map +1 -1
- package/dist/esm/node/client/NodePeerAddressStore.js.map +1 -1
- package/dist/esm/node/client/PeerBehavior.js +1 -1
- package/dist/esm/node/client/PeerBehavior.js.map +1 -1
- package/dist/esm/node/client/Peers.d.ts.map +1 -1
- package/dist/esm/node/client/Peers.js +15 -1
- package/dist/esm/node/client/Peers.js.map +1 -1
- package/dist/esm/node/integration/ProtocolService.d.ts.map +1 -1
- package/dist/esm/node/integration/ProtocolService.js +4 -2
- package/dist/esm/node/integration/ProtocolService.js.map +1 -1
- package/dist/esm/node/server/InteractionServer.d.ts.map +1 -1
- package/dist/esm/node/server/InteractionServer.js +59 -51
- package/dist/esm/node/server/InteractionServer.js.map +2 -2
- package/dist/esm/node/server/ServerEnvironment.js +1 -1
- package/dist/esm/node/server/ServerEnvironment.js.map +1 -1
- package/dist/esm/node/server/ServerSubscription.d.ts +61 -10
- package/dist/esm/node/server/ServerSubscription.d.ts.map +1 -1
- package/dist/esm/node/server/ServerSubscription.js +321 -159
- package/dist/esm/node/server/ServerSubscription.js.map +2 -2
- package/package.json +7 -7
- package/src/behavior/Behavior.ts +12 -0
- package/src/behavior/Events.ts +12 -8
- package/src/behavior/Transitions.ts +3 -3
- package/src/behavior/cluster/ClusterBehaviorType.ts +2 -2
- package/src/behavior/cluster/ClusterEvents.ts +1 -1
- package/src/behavior/context/NodeActivity.ts +4 -13
- package/src/behavior/context/server/LocalActorContext.ts +6 -8
- package/src/behavior/context/server/RemoteActorContext.ts +34 -33
- package/src/behavior/internal/BehaviorBacking.ts +5 -0
- package/src/behavior/internal/Reactors.ts +1 -0
- package/src/behavior/state/managed/Datasource.ts +2 -1
- package/src/behavior/system/commissioning/CommissioningClient.ts +6 -13
- package/src/behavior/system/commissioning/CommissioningServer.ts +6 -8
- package/src/behavior/system/mqtt/MqttInterface.ts +6 -2
- package/src/behavior/system/network/NetworkRuntime.ts +1 -3
- package/src/behavior/system/network/ServerGroupNetworking.ts +2 -2
- package/src/behavior/system/network/ServerNetworkRuntime.ts +49 -15
- package/src/behavior/system/remote/RemoteInterface.ts +22 -4
- package/src/behavior/system/remote/api/Api.ts +4 -3
- package/src/behavior/system/sessions/SessionsBehavior.ts +2 -2
- package/src/behavior/system/subscriptions/SubscriptionsServer.ts +15 -13
- package/src/behavior/system/websocket/WebSocketInterface.ts +2 -1
- package/src/behaviors/access-control/AccessControlServer.ts +1 -1
- package/src/behaviors/administrator-commissioning/AdministratorCommissioningServer.ts +14 -7
- package/src/behaviors/basic-information/BasicInformationServer.ts +2 -2
- package/src/behaviors/general-commissioning/GeneralCommissioningServer.ts +14 -9
- package/src/behaviors/general-commissioning/ServerNodeFailsafeContext.ts +3 -15
- package/src/behaviors/general-diagnostics/GeneralDiagnosticsServer.ts +1 -1
- package/src/behaviors/group-key-management/GroupKeyManagementServer.ts +1 -1
- package/src/behaviors/operational-credentials/OperationalCredentialsServer.ts +22 -19
- package/src/behaviors/scenes-management/ScenesManagementServer.ts +1 -1
- package/src/behaviors/thermostat/AtomicWriteHandler.ts +1 -1
- package/src/behaviors/window-covering/WindowCoveringServer.ts +24 -9
- package/src/endpoint/Endpoint.ts +21 -4
- package/src/endpoint/properties/Behaviors.ts +11 -6
- package/src/endpoint/properties/Commands.ts +1 -1
- package/src/endpoint/properties/EndpointLifecycle.ts +4 -0
- package/src/node/ClientNode.ts +3 -0
- package/src/node/Node.ts +3 -2
- package/src/node/ServerNode.ts +1 -0
- package/src/node/client/ClientCommandMethod.ts +31 -38
- package/src/node/client/NodePeerAddressStore.ts +3 -3
- package/src/node/client/Peers.ts +19 -1
- package/src/node/integration/ProtocolService.ts +4 -2
- package/src/node/server/InteractionServer.ts +62 -51
- package/src/node/server/ServerEnvironment.ts +1 -1
- 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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
81
|
-
|
|
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.
|
|
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
|
|
122
|
-
Duration.min(subscriptionMaxInterval, this
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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
|
-
|
|
192
|
-
|
|
193
|
-
|
|
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
|
|
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
|
|
307
|
+
if (timeSinceLastUpdate < this.minIntervalFloor) {
|
|
228
308
|
this.#updateTimer = Time.getTimer(
|
|
229
309
|
"Subscription update",
|
|
230
|
-
Millis(this
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
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 (
|
|
288
|
-
|
|
404
|
+
if (!this.#sendNextUpdateImmediately) {
|
|
405
|
+
break;
|
|
289
406
|
}
|
|
290
|
-
|
|
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
|
-
|
|
296
|
-
this.isCanceledByPeer = true;
|
|
297
|
-
await this.destroy();
|
|
298
|
-
return;
|
|
299
|
-
} else {
|
|
300
|
-
throw error;
|
|
301
|
-
}
|
|
409
|
+
onlyWithData = true;
|
|
302
410
|
}
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
520
|
+
subscriptionId: this.subscriptionId,
|
|
414
521
|
interactionModelRevision: Specification.INTERACTION_MODEL_REVISION
|
|
415
522
|
},
|
|
416
|
-
forFabricFilteredRead: this.
|
|
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.
|
|
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
|
-
|
|
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(
|
|
441
|
-
if (this
|
|
548
|
+
async close(flushViaSession) {
|
|
549
|
+
if (this.#isClosed) {
|
|
442
550
|
return;
|
|
443
551
|
}
|
|
444
|
-
|
|
445
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
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
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
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
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
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
|
-
|
|
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
|
}
|