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