@matter/node 0.16.0-alpha.0-20251023-bb23617e5 → 0.16.0-alpha.0-20251029-bd92894d4
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 +1 -0
- package/dist/cjs/behavior/Behavior.d.ts.map +1 -1
- package/dist/cjs/behavior/Behavior.js +5 -0
- package/dist/cjs/behavior/Behavior.js.map +1 -1
- package/dist/cjs/behavior/cluster/ClusterBehavior.d.ts +5 -5
- package/dist/cjs/behavior/cluster/ClusterBehavior.d.ts.map +1 -1
- package/dist/cjs/behavior/cluster/ClusterBehavior.js +7 -2
- package/dist/cjs/behavior/cluster/ClusterBehavior.js.map +1 -1
- package/dist/cjs/behavior/cluster/ClusterBehaviorUtil.d.ts.map +1 -1
- package/dist/cjs/behavior/cluster/ClusterBehaviorUtil.js +51 -35
- package/dist/cjs/behavior/cluster/ClusterBehaviorUtil.js.map +1 -1
- package/dist/cjs/behavior/internal/BehaviorBacking.js +1 -1
- package/dist/cjs/behavior/internal/BehaviorBacking.js.map +1 -1
- package/dist/cjs/behavior/state/managed/Datasource.d.ts +4 -5
- package/dist/cjs/behavior/state/managed/Datasource.d.ts.map +1 -1
- package/dist/cjs/behavior/state/managed/Datasource.js +6 -2
- package/dist/cjs/behavior/state/managed/Datasource.js.map +1 -1
- package/dist/cjs/behavior/state/managed/ManagedReference.d.ts +3 -2
- package/dist/cjs/behavior/state/managed/ManagedReference.d.ts.map +1 -1
- package/dist/cjs/behavior/state/managed/ManagedReference.js +65 -20
- package/dist/cjs/behavior/state/managed/ManagedReference.js.map +1 -1
- package/dist/cjs/behavior/state/managed/values/ListManager.js +2 -1
- package/dist/cjs/behavior/state/managed/values/ListManager.js.map +1 -1
- package/dist/cjs/behavior/state/managed/values/StructManager.js +9 -1
- package/dist/cjs/behavior/state/managed/values/StructManager.js.map +1 -1
- package/dist/cjs/behavior/state/validation/conformance-compiler.d.ts.map +1 -1
- package/dist/cjs/behavior/state/validation/conformance-compiler.js +6 -2
- package/dist/cjs/behavior/state/validation/conformance-compiler.js.map +1 -1
- package/dist/cjs/behavior/system/remote/api/resources/EndpointResource.d.ts +1 -0
- package/dist/cjs/behavior/system/remote/api/resources/EndpointResource.d.ts.map +1 -1
- package/dist/cjs/behaviors/access-control/AccessControlServer.d.ts.map +1 -1
- package/dist/cjs/behaviors/access-control/AccessControlServer.js +3 -3
- package/dist/cjs/behaviors/access-control/AccessControlServer.js.map +1 -1
- package/dist/cjs/behaviors/account-login/AccountLoginInterface.d.ts +7 -7
- package/dist/cjs/behaviors/actions/ActionsInterface.d.ts +26 -1
- package/dist/cjs/behaviors/actions/ActionsInterface.d.ts.map +1 -1
- package/dist/cjs/behaviors/application-launcher/ApplicationLauncherInterface.d.ts +3 -1
- package/dist/cjs/behaviors/application-launcher/ApplicationLauncherInterface.d.ts.map +1 -1
- package/dist/cjs/behaviors/basic-information/BasicInformationServer.d.ts +1 -1
- package/dist/cjs/behaviors/channel/ChannelInterface.d.ts +4 -0
- package/dist/cjs/behaviors/channel/ChannelInterface.d.ts.map +1 -1
- package/dist/cjs/behaviors/color-control/ColorControlInterface.d.ts +4 -0
- package/dist/cjs/behaviors/color-control/ColorControlInterface.d.ts.map +1 -1
- package/dist/cjs/behaviors/color-control/ColorControlServer.d.ts +8 -0
- package/dist/cjs/behaviors/color-control/ColorControlServer.d.ts.map +1 -1
- package/dist/cjs/behaviors/color-control/ColorControlServer.js +23 -26
- package/dist/cjs/behaviors/color-control/ColorControlServer.js.map +1 -1
- package/dist/cjs/behaviors/content-control/ContentControlInterface.d.ts +1 -1
- package/dist/cjs/behaviors/door-lock/DoorLockInterface.d.ts +1 -1
- package/dist/cjs/behaviors/door-lock/DoorLockServer.d.ts.map +1 -1
- package/dist/cjs/behaviors/door-lock/DoorLockServer.js +8 -4
- package/dist/cjs/behaviors/door-lock/DoorLockServer.js.map +1 -1
- package/dist/cjs/behaviors/electrical-power-measurement/ElectricalPowerMeasurementBehavior.d.ts +3 -3
- package/dist/cjs/behaviors/ethernet-network-diagnostics/EthernetNetworkDiagnosticsInterface.d.ts +2 -2
- package/dist/cjs/behaviors/fan-control/FanControlInterface.d.ts +13 -4
- package/dist/cjs/behaviors/fan-control/FanControlInterface.d.ts.map +1 -1
- package/dist/cjs/behaviors/fan-control/FanControlServer.d.ts +1 -1
- package/dist/cjs/behaviors/fan-control/FanControlServer.d.ts.map +1 -1
- package/dist/cjs/behaviors/fan-control/FanControlServer.js +6 -0
- package/dist/cjs/behaviors/fan-control/FanControlServer.js.map +1 -1
- package/dist/cjs/behaviors/general-commissioning/GeneralCommissioningInterface.d.ts +16 -13
- package/dist/cjs/behaviors/general-commissioning/GeneralCommissioningInterface.d.ts.map +1 -1
- package/dist/cjs/behaviors/general-diagnostics/GeneralDiagnosticsServer.d.ts.map +1 -1
- package/dist/cjs/behaviors/general-diagnostics/GeneralDiagnosticsServer.js +3 -9
- package/dist/cjs/behaviors/general-diagnostics/GeneralDiagnosticsServer.js.map +1 -1
- package/dist/cjs/behaviors/group-key-management/GroupKeyManagementInterface.d.ts +3 -3
- package/dist/cjs/behaviors/icd-management/IcdManagementInterface.d.ts +40 -4
- package/dist/cjs/behaviors/icd-management/IcdManagementInterface.d.ts.map +1 -1
- package/dist/cjs/behaviors/index.d.ts +1 -5
- package/dist/cjs/behaviors/index.d.ts.map +1 -1
- package/dist/cjs/behaviors/index.js +1 -5
- package/dist/cjs/behaviors/index.js.map +1 -1
- package/dist/cjs/behaviors/joint-fabric-administrator/JointFabricAdministratorBehavior.d.ts +32 -0
- package/dist/cjs/behaviors/joint-fabric-administrator/JointFabricAdministratorBehavior.d.ts.map +1 -0
- package/dist/cjs/behaviors/{joint-fabric-pki/JointFabricPkiBehavior.js → joint-fabric-administrator/JointFabricAdministratorBehavior.js} +9 -9
- package/dist/cjs/behaviors/joint-fabric-administrator/JointFabricAdministratorBehavior.js.map +6 -0
- package/dist/cjs/behaviors/joint-fabric-administrator/JointFabricAdministratorClient.d.ts +15 -0
- package/dist/cjs/behaviors/joint-fabric-administrator/JointFabricAdministratorClient.d.ts.map +1 -0
- package/dist/cjs/behaviors/{joint-fabric-pki/JointFabricPkiServer.js → joint-fabric-administrator/JointFabricAdministratorClient.js} +9 -8
- package/dist/cjs/behaviors/joint-fabric-administrator/JointFabricAdministratorClient.js.map +6 -0
- package/dist/cjs/behaviors/joint-fabric-administrator/JointFabricAdministratorInterface.d.ts +89 -0
- package/dist/cjs/behaviors/joint-fabric-administrator/JointFabricAdministratorInterface.d.ts.map +1 -0
- package/dist/cjs/behaviors/{proxy-discovery/ProxyDiscoveryInterface.js → joint-fabric-administrator/JointFabricAdministratorInterface.js} +3 -3
- package/dist/cjs/behaviors/joint-fabric-administrator/JointFabricAdministratorInterface.js.map +6 -0
- package/dist/cjs/behaviors/joint-fabric-administrator/JointFabricAdministratorServer.d.ts +13 -0
- package/dist/cjs/behaviors/joint-fabric-administrator/JointFabricAdministratorServer.d.ts.map +1 -0
- package/dist/cjs/behaviors/{ballast-configuration/BallastConfigurationServer.js → joint-fabric-administrator/JointFabricAdministratorServer.js} +7 -7
- package/dist/cjs/behaviors/joint-fabric-administrator/JointFabricAdministratorServer.js.map +6 -0
- package/dist/cjs/behaviors/joint-fabric-administrator/index.d.ts +11 -0
- package/dist/cjs/behaviors/joint-fabric-administrator/index.d.ts.map +1 -0
- package/dist/cjs/behaviors/{joint-fabric-pki → joint-fabric-administrator}/index.js +6 -6
- package/dist/cjs/behaviors/joint-fabric-administrator/index.js.map +6 -0
- package/dist/cjs/behaviors/joint-fabric-datastore/JointFabricDatastoreInterface.d.ts +555 -40
- package/dist/cjs/behaviors/joint-fabric-datastore/JointFabricDatastoreInterface.d.ts.map +1 -1
- package/dist/cjs/behaviors/media-playback/MediaPlaybackInterface.d.ts +27 -2
- package/dist/cjs/behaviors/media-playback/MediaPlaybackInterface.d.ts.map +1 -1
- package/dist/cjs/behaviors/network-commissioning/NetworkCommissioningInterface.d.ts +28 -14
- package/dist/cjs/behaviors/network-commissioning/NetworkCommissioningInterface.d.ts.map +1 -1
- package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsInterface.d.ts +106 -9
- package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsInterface.d.ts.map +1 -1
- package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsServer.js +1 -1
- package/dist/cjs/behaviors/operational-credentials/OperationalCredentialsServer.js.map +1 -1
- package/dist/cjs/behaviors/service-area/ServiceAreaInterface.d.ts +0 -3
- package/dist/cjs/behaviors/service-area/ServiceAreaInterface.d.ts.map +1 -1
- package/dist/cjs/behaviors/service-area/ServiceAreaServer.js +2 -2
- package/dist/cjs/behaviors/service-area/ServiceAreaServer.js.map +1 -1
- package/dist/cjs/behaviors/software-diagnostics/SoftwareDiagnosticsInterface.d.ts +3 -1
- package/dist/cjs/behaviors/software-diagnostics/SoftwareDiagnosticsInterface.d.ts.map +1 -1
- package/dist/cjs/behaviors/switch/SwitchServer.d.ts +2 -0
- package/dist/cjs/behaviors/switch/SwitchServer.d.ts.map +1 -1
- package/dist/cjs/behaviors/switch/SwitchServer.js +3 -0
- package/dist/cjs/behaviors/switch/SwitchServer.js.map +1 -1
- package/dist/cjs/behaviors/temperature-control/TemperatureControlInterface.d.ts +2 -0
- package/dist/cjs/behaviors/temperature-control/TemperatureControlInterface.d.ts.map +1 -1
- package/dist/cjs/behaviors/thermostat/AtomicWriteHandler.d.ts +58 -0
- package/dist/cjs/behaviors/thermostat/AtomicWriteHandler.d.ts.map +1 -0
- package/dist/cjs/behaviors/thermostat/AtomicWriteHandler.js +306 -0
- package/dist/cjs/behaviors/thermostat/AtomicWriteHandler.js.map +6 -0
- package/dist/cjs/behaviors/thermostat/AtomicWriteState.d.ts +33 -0
- package/dist/cjs/behaviors/thermostat/AtomicWriteState.d.ts.map +1 -0
- package/dist/cjs/behaviors/thermostat/AtomicWriteState.js +86 -0
- package/dist/cjs/behaviors/thermostat/AtomicWriteState.js.map +6 -0
- package/dist/cjs/behaviors/thermostat/ThermostatBehavior.d.ts +13 -1
- package/dist/cjs/behaviors/thermostat/ThermostatBehavior.d.ts.map +1 -1
- package/dist/cjs/behaviors/thermostat/ThermostatInterface.d.ts +1 -0
- package/dist/cjs/behaviors/thermostat/ThermostatInterface.d.ts.map +1 -1
- package/dist/cjs/behaviors/thermostat/ThermostatServer.d.ts +894 -3
- package/dist/cjs/behaviors/thermostat/ThermostatServer.d.ts.map +1 -1
- package/dist/cjs/behaviors/thermostat/ThermostatServer.js +1216 -1
- package/dist/cjs/behaviors/thermostat/ThermostatServer.js.map +2 -2
- package/dist/cjs/behaviors/thermostat-user-interface-configuration/ThermostatUserInterfaceConfigurationServer.d.ts +1 -1
- package/dist/cjs/behaviors/thermostat-user-interface-configuration/ThermostatUserInterfaceConfigurationServer.d.ts.map +1 -1
- package/dist/cjs/behaviors/thermostat-user-interface-configuration/ThermostatUserInterfaceConfigurationServer.js +16 -0
- package/dist/cjs/behaviors/thermostat-user-interface-configuration/ThermostatUserInterfaceConfigurationServer.js.map +2 -2
- package/dist/cjs/behaviors/thread-network-diagnostics/ThreadNetworkDiagnosticsInterface.d.ts +3 -2
- package/dist/cjs/behaviors/thread-network-diagnostics/ThreadNetworkDiagnosticsInterface.d.ts.map +1 -1
- package/dist/cjs/behaviors/time-synchronization/TimeSynchronizationInterface.d.ts +10 -6
- package/dist/cjs/behaviors/time-synchronization/TimeSynchronizationInterface.d.ts.map +1 -1
- package/dist/cjs/behaviors/unit-localization/UnitLocalizationServer.d.ts.map +1 -1
- package/dist/cjs/behaviors/unit-localization/UnitLocalizationServer.js +6 -0
- package/dist/cjs/behaviors/unit-localization/UnitLocalizationServer.js.map +1 -1
- package/dist/cjs/behaviors/wi-fi-network-diagnostics/WiFiNetworkDiagnosticsInterface.d.ts +2 -2
- package/dist/cjs/behaviors/window-covering/WindowCoveringBehavior.d.ts +1 -1
- package/dist/cjs/behaviors/window-covering/WindowCoveringInterface.d.ts +18 -0
- package/dist/cjs/behaviors/window-covering/WindowCoveringInterface.d.ts.map +1 -1
- package/dist/cjs/behaviors/window-covering/WindowCoveringServer.d.ts +2 -2
- package/dist/cjs/devices/basic-video-player.d.ts +2 -2
- package/dist/cjs/devices/casting-video-player.d.ts +2 -2
- package/dist/cjs/devices/color-temperature-light.d.ts +48 -22
- package/dist/cjs/devices/color-temperature-light.d.ts.map +1 -1
- package/dist/cjs/devices/color-temperature-light.js +5 -4
- package/dist/cjs/devices/color-temperature-light.js.map +2 -2
- package/dist/cjs/devices/control-bridge.d.ts +7 -7
- package/dist/cjs/devices/control-bridge.d.ts.map +1 -1
- package/dist/cjs/devices/control-bridge.js +3 -3
- package/dist/cjs/devices/control-bridge.js.map +2 -2
- package/dist/cjs/devices/cook-surface.d.ts +132 -4
- package/dist/cjs/devices/cook-surface.d.ts.map +1 -1
- package/dist/cjs/devices/cook-surface.js +2 -2
- package/dist/cjs/devices/cook-surface.js.map +1 -1
- package/dist/cjs/devices/dimmable-light.d.ts +44 -18
- package/dist/cjs/devices/dimmable-light.d.ts.map +1 -1
- package/dist/cjs/devices/dimmable-light.js +5 -4
- package/dist/cjs/devices/dimmable-light.js.map +2 -2
- package/dist/cjs/devices/dimmable-plug-in-unit.d.ts +56 -19
- package/dist/cjs/devices/dimmable-plug-in-unit.d.ts.map +1 -1
- package/dist/cjs/devices/dimmable-plug-in-unit.js +6 -5
- package/dist/cjs/devices/dimmable-plug-in-unit.js.map +2 -2
- package/dist/cjs/devices/dishwasher.d.ts +30 -6
- package/dist/cjs/devices/dishwasher.d.ts.map +1 -1
- package/dist/cjs/devices/dishwasher.js +2 -2
- package/dist/cjs/devices/dishwasher.js.map +1 -1
- package/dist/cjs/devices/extended-color-light.d.ts +48 -22
- package/dist/cjs/devices/extended-color-light.d.ts.map +1 -1
- package/dist/cjs/devices/extended-color-light.js +5 -4
- package/dist/cjs/devices/extended-color-light.js.map +2 -2
- package/dist/cjs/devices/index.d.ts +1 -0
- package/dist/cjs/devices/index.d.ts.map +1 -1
- package/dist/cjs/devices/index.js +1 -0
- package/dist/cjs/devices/index.js.map +1 -1
- package/dist/cjs/devices/laundry-dryer.d.ts +30 -6
- package/dist/cjs/devices/laundry-dryer.d.ts.map +1 -1
- package/dist/cjs/devices/laundry-dryer.js +2 -2
- package/dist/cjs/devices/laundry-dryer.js.map +1 -1
- package/dist/cjs/devices/laundry-washer.d.ts +30 -6
- package/dist/cjs/devices/laundry-washer.d.ts.map +1 -1
- package/dist/cjs/devices/laundry-washer.js +2 -2
- package/dist/cjs/devices/laundry-washer.js.map +1 -1
- package/dist/cjs/devices/microwave-oven.d.ts +25 -5
- package/dist/cjs/devices/microwave-oven.d.ts.map +1 -1
- package/dist/cjs/devices/microwave-oven.js +2 -2
- package/dist/cjs/devices/microwave-oven.js.map +1 -1
- package/dist/cjs/devices/mounted-dimmable-load-control.d.ts +61 -22
- package/dist/cjs/devices/mounted-dimmable-load-control.d.ts.map +1 -1
- package/dist/cjs/devices/mounted-dimmable-load-control.js +6 -5
- package/dist/cjs/devices/mounted-dimmable-load-control.js.map +2 -2
- package/dist/cjs/devices/mounted-on-off-control.d.ts +57 -17
- package/dist/cjs/devices/mounted-on-off-control.d.ts.map +1 -1
- package/dist/cjs/devices/mounted-on-off-control.js +11 -5
- package/dist/cjs/devices/mounted-on-off-control.js.map +2 -2
- package/dist/cjs/devices/network-infrastructure-manager.d.ts +16 -4
- package/dist/cjs/devices/network-infrastructure-manager.d.ts.map +1 -1
- package/dist/cjs/devices/network-infrastructure-manager.js +7 -3
- package/dist/cjs/devices/network-infrastructure-manager.js.map +2 -2
- package/dist/cjs/devices/on-off-light.d.ts +42 -14
- package/dist/cjs/devices/on-off-light.d.ts.map +1 -1
- package/dist/cjs/devices/on-off-light.js +10 -4
- package/dist/cjs/devices/on-off-light.js.map +2 -2
- package/dist/cjs/devices/on-off-plug-in-unit.d.ts +54 -15
- package/dist/cjs/devices/on-off-plug-in-unit.d.ts.map +1 -1
- package/dist/cjs/devices/on-off-plug-in-unit.js +11 -5
- package/dist/cjs/devices/on-off-plug-in-unit.js.map +2 -2
- package/dist/cjs/devices/rain-sensor.d.ts +4 -4
- package/dist/cjs/devices/robotic-vacuum-cleaner.d.ts +30 -6
- package/dist/cjs/devices/robotic-vacuum-cleaner.d.ts.map +1 -1
- package/dist/cjs/devices/robotic-vacuum-cleaner.js +2 -2
- package/dist/cjs/devices/robotic-vacuum-cleaner.js.map +1 -1
- package/dist/cjs/devices/temperature-controlled-cabinet.d.ts +147 -7
- package/dist/cjs/devices/temperature-controlled-cabinet.d.ts.map +1 -1
- package/dist/cjs/devices/temperature-controlled-cabinet.js +3 -3
- package/dist/cjs/devices/temperature-controlled-cabinet.js.map +1 -1
- package/dist/cjs/devices/thermostat-controller.d.ts +62 -0
- package/dist/cjs/devices/thermostat-controller.d.ts.map +1 -0
- package/dist/cjs/devices/thermostat-controller.js +56 -0
- package/dist/cjs/devices/thermostat-controller.js.map +6 -0
- package/dist/cjs/devices/water-freeze-detector.d.ts +4 -4
- package/dist/cjs/devices/water-heater.d.ts +26 -2
- package/dist/cjs/devices/water-heater.d.ts.map +1 -1
- package/dist/cjs/devices/water-leak-detector.d.ts +4 -4
- package/dist/cjs/devices/window-covering-controller.d.ts +1 -1
- package/dist/cjs/devices/window-covering-controller.js +1 -1
- package/dist/cjs/devices/window-covering.d.ts +1 -1
- package/dist/cjs/devices/window-covering.js +1 -1
- package/dist/cjs/endpoint/Endpoint.d.ts +36 -2
- package/dist/cjs/endpoint/Endpoint.d.ts.map +1 -1
- package/dist/cjs/endpoint/Endpoint.js +17 -14
- package/dist/cjs/endpoint/Endpoint.js.map +1 -1
- package/dist/cjs/endpoint/properties/EndpointContainer.d.ts +1 -0
- package/dist/cjs/endpoint/properties/EndpointContainer.d.ts.map +1 -1
- package/dist/cjs/endpoint/properties/EndpointContainer.js +3 -0
- package/dist/cjs/endpoint/properties/EndpointContainer.js.map +1 -1
- package/dist/cjs/endpoints/joint-fabric-administrator.d.ts +9 -9
- package/dist/cjs/endpoints/joint-fabric-administrator.d.ts.map +1 -1
- package/dist/cjs/endpoints/joint-fabric-administrator.js +7 -4
- package/dist/cjs/endpoints/joint-fabric-administrator.js.map +2 -2
- package/dist/cjs/tags/AreaNamespaceTag.d.ts +132 -99
- package/dist/cjs/tags/AreaNamespaceTag.d.ts.map +1 -1
- package/dist/cjs/tags/AreaNamespaceTag.js +91 -67
- package/dist/cjs/tags/AreaNamespaceTag.js.map +1 -1
- package/dist/cjs/tags/ClosureTag.d.ts +7 -0
- package/dist/cjs/tags/ClosureTag.d.ts.map +1 -1
- package/dist/cjs/tags/ClosureTag.js.map +1 -1
- package/dist/cjs/tags/CompassDirectionTag.d.ts +4 -4
- package/dist/cjs/tags/CompassDirectionTag.js +4 -4
- package/dist/cjs/tags/CompassDirectionTag.js.map +1 -1
- package/dist/cjs/tags/CompassLocationTag.d.ts +4 -4
- package/dist/cjs/tags/CompassLocationTag.js +4 -4
- package/dist/cjs/tags/CompassLocationTag.js.map +1 -1
- package/dist/cjs/tags/LandmarkNamespaceTag.d.ts +34 -24
- package/dist/cjs/tags/LandmarkNamespaceTag.d.ts.map +1 -1
- package/dist/cjs/tags/LandmarkNamespaceTag.js +34 -24
- package/dist/cjs/tags/LandmarkNamespaceTag.js.map +1 -1
- package/dist/cjs/tags/LaundryTag.d.ts +3 -3
- package/dist/cjs/tags/LaundryTag.js +3 -3
- package/dist/cjs/tags/LaundryTag.js.map +1 -1
- package/dist/cjs/tags/LocationTag.d.ts +8 -1
- package/dist/cjs/tags/LocationTag.d.ts.map +1 -1
- package/dist/cjs/tags/LocationTag.js +6 -2
- package/dist/cjs/tags/LocationTag.js.map +1 -1
- package/dist/cjs/tags/NumberTag.d.ts +80 -0
- package/dist/cjs/tags/NumberTag.d.ts.map +1 -1
- package/dist/cjs/tags/NumberTag.js +21 -1
- package/dist/cjs/tags/NumberTag.js.map +1 -1
- package/dist/cjs/tags/PositionTag.d.ts +3 -0
- package/dist/cjs/tags/PositionTag.d.ts.map +1 -1
- package/dist/cjs/tags/PositionTag.js.map +1 -1
- package/dist/cjs/tags/RelativePositionTag.d.ts +2 -2
- package/dist/cjs/tags/RelativePositionTag.js +2 -2
- package/dist/cjs/tags/RelativePositionTag.js.map +1 -1
- package/dist/cjs/tags/SwitchesTag.d.ts +27 -3
- package/dist/cjs/tags/SwitchesTag.d.ts.map +1 -1
- package/dist/cjs/tags/SwitchesTag.js +17 -2
- package/dist/cjs/tags/SwitchesTag.js.map +1 -1
- package/dist/esm/behavior/Behavior.d.ts +1 -0
- package/dist/esm/behavior/Behavior.d.ts.map +1 -1
- package/dist/esm/behavior/Behavior.js +5 -0
- package/dist/esm/behavior/Behavior.js.map +1 -1
- package/dist/esm/behavior/cluster/ClusterBehavior.d.ts +5 -5
- package/dist/esm/behavior/cluster/ClusterBehavior.d.ts.map +1 -1
- package/dist/esm/behavior/cluster/ClusterBehavior.js +8 -3
- package/dist/esm/behavior/cluster/ClusterBehavior.js.map +1 -1
- package/dist/esm/behavior/cluster/ClusterBehaviorUtil.d.ts.map +1 -1
- package/dist/esm/behavior/cluster/ClusterBehaviorUtil.js +53 -35
- package/dist/esm/behavior/cluster/ClusterBehaviorUtil.js.map +1 -1
- package/dist/esm/behavior/internal/BehaviorBacking.js +2 -2
- package/dist/esm/behavior/internal/BehaviorBacking.js.map +1 -1
- package/dist/esm/behavior/state/managed/Datasource.d.ts +4 -5
- package/dist/esm/behavior/state/managed/Datasource.d.ts.map +1 -1
- package/dist/esm/behavior/state/managed/Datasource.js +7 -3
- package/dist/esm/behavior/state/managed/Datasource.js.map +1 -1
- package/dist/esm/behavior/state/managed/ManagedReference.d.ts +3 -2
- package/dist/esm/behavior/state/managed/ManagedReference.d.ts.map +1 -1
- package/dist/esm/behavior/state/managed/ManagedReference.js +66 -21
- package/dist/esm/behavior/state/managed/ManagedReference.js.map +1 -1
- package/dist/esm/behavior/state/managed/values/ListManager.js +2 -1
- package/dist/esm/behavior/state/managed/values/ListManager.js.map +1 -1
- package/dist/esm/behavior/state/managed/values/StructManager.js +9 -1
- package/dist/esm/behavior/state/managed/values/StructManager.js.map +1 -1
- package/dist/esm/behavior/state/validation/conformance-compiler.d.ts.map +1 -1
- package/dist/esm/behavior/state/validation/conformance-compiler.js +6 -2
- package/dist/esm/behavior/state/validation/conformance-compiler.js.map +1 -1
- package/dist/esm/behavior/system/remote/api/resources/EndpointResource.d.ts +1 -0
- package/dist/esm/behavior/system/remote/api/resources/EndpointResource.d.ts.map +1 -1
- package/dist/esm/behaviors/access-control/AccessControlServer.d.ts.map +1 -1
- package/dist/esm/behaviors/access-control/AccessControlServer.js +3 -3
- package/dist/esm/behaviors/access-control/AccessControlServer.js.map +1 -1
- package/dist/esm/behaviors/account-login/AccountLoginInterface.d.ts +7 -7
- package/dist/esm/behaviors/actions/ActionsInterface.d.ts +26 -1
- package/dist/esm/behaviors/actions/ActionsInterface.d.ts.map +1 -1
- package/dist/esm/behaviors/application-launcher/ApplicationLauncherInterface.d.ts +3 -1
- package/dist/esm/behaviors/application-launcher/ApplicationLauncherInterface.d.ts.map +1 -1
- package/dist/esm/behaviors/basic-information/BasicInformationServer.d.ts +1 -1
- package/dist/esm/behaviors/channel/ChannelInterface.d.ts +4 -0
- package/dist/esm/behaviors/channel/ChannelInterface.d.ts.map +1 -1
- package/dist/esm/behaviors/color-control/ColorControlInterface.d.ts +4 -0
- package/dist/esm/behaviors/color-control/ColorControlInterface.d.ts.map +1 -1
- package/dist/esm/behaviors/color-control/ColorControlServer.d.ts +8 -0
- package/dist/esm/behaviors/color-control/ColorControlServer.d.ts.map +1 -1
- package/dist/esm/behaviors/color-control/ColorControlServer.js +23 -26
- package/dist/esm/behaviors/color-control/ColorControlServer.js.map +1 -1
- package/dist/esm/behaviors/content-control/ContentControlInterface.d.ts +1 -1
- package/dist/esm/behaviors/door-lock/DoorLockInterface.d.ts +1 -1
- package/dist/esm/behaviors/door-lock/DoorLockServer.d.ts.map +1 -1
- package/dist/esm/behaviors/door-lock/DoorLockServer.js +8 -4
- package/dist/esm/behaviors/door-lock/DoorLockServer.js.map +1 -1
- package/dist/esm/behaviors/electrical-power-measurement/ElectricalPowerMeasurementBehavior.d.ts +3 -3
- package/dist/esm/behaviors/ethernet-network-diagnostics/EthernetNetworkDiagnosticsInterface.d.ts +2 -2
- package/dist/esm/behaviors/fan-control/FanControlInterface.d.ts +13 -4
- package/dist/esm/behaviors/fan-control/FanControlInterface.d.ts.map +1 -1
- package/dist/esm/behaviors/fan-control/FanControlServer.d.ts +1 -1
- package/dist/esm/behaviors/fan-control/FanControlServer.d.ts.map +1 -1
- package/dist/esm/behaviors/fan-control/FanControlServer.js +6 -0
- package/dist/esm/behaviors/fan-control/FanControlServer.js.map +1 -1
- package/dist/esm/behaviors/general-commissioning/GeneralCommissioningInterface.d.ts +16 -13
- package/dist/esm/behaviors/general-commissioning/GeneralCommissioningInterface.d.ts.map +1 -1
- package/dist/esm/behaviors/general-diagnostics/GeneralDiagnosticsServer.d.ts.map +1 -1
- package/dist/esm/behaviors/general-diagnostics/GeneralDiagnosticsServer.js +3 -9
- package/dist/esm/behaviors/general-diagnostics/GeneralDiagnosticsServer.js.map +1 -1
- package/dist/esm/behaviors/group-key-management/GroupKeyManagementInterface.d.ts +3 -3
- package/dist/esm/behaviors/icd-management/IcdManagementInterface.d.ts +40 -4
- package/dist/esm/behaviors/icd-management/IcdManagementInterface.d.ts.map +1 -1
- package/dist/esm/behaviors/index.d.ts +1 -5
- package/dist/esm/behaviors/index.d.ts.map +1 -1
- package/dist/esm/behaviors/index.js +1 -5
- package/dist/esm/behaviors/index.js.map +1 -1
- package/dist/esm/behaviors/joint-fabric-administrator/JointFabricAdministratorBehavior.d.ts +32 -0
- package/dist/esm/behaviors/joint-fabric-administrator/JointFabricAdministratorBehavior.d.ts.map +1 -0
- package/dist/esm/behaviors/joint-fabric-administrator/JointFabricAdministratorBehavior.js +14 -0
- package/dist/esm/behaviors/joint-fabric-administrator/JointFabricAdministratorBehavior.js.map +6 -0
- package/dist/esm/behaviors/joint-fabric-administrator/JointFabricAdministratorClient.d.ts +15 -0
- package/dist/esm/behaviors/joint-fabric-administrator/JointFabricAdministratorClient.d.ts.map +1 -0
- package/dist/esm/behaviors/joint-fabric-administrator/JointFabricAdministratorClient.js +13 -0
- package/dist/esm/behaviors/joint-fabric-administrator/JointFabricAdministratorClient.js.map +6 -0
- package/dist/esm/behaviors/joint-fabric-administrator/JointFabricAdministratorInterface.d.ts +89 -0
- package/dist/esm/behaviors/joint-fabric-administrator/JointFabricAdministratorInterface.d.ts.map +1 -0
- package/dist/esm/behaviors/{valid-proxies/ValidProxiesInterface.js → joint-fabric-administrator/JointFabricAdministratorInterface.js} +1 -1
- package/dist/esm/behaviors/joint-fabric-administrator/JointFabricAdministratorInterface.js.map +6 -0
- package/dist/esm/behaviors/joint-fabric-administrator/JointFabricAdministratorServer.d.ts +13 -0
- package/dist/esm/behaviors/joint-fabric-administrator/JointFabricAdministratorServer.d.ts.map +1 -0
- package/dist/esm/behaviors/joint-fabric-administrator/JointFabricAdministratorServer.js +12 -0
- package/dist/esm/behaviors/joint-fabric-administrator/JointFabricAdministratorServer.js.map +6 -0
- package/dist/esm/behaviors/joint-fabric-administrator/index.d.ts +11 -0
- package/dist/esm/behaviors/joint-fabric-administrator/index.d.ts.map +1 -0
- package/dist/esm/behaviors/joint-fabric-administrator/index.js +10 -0
- package/dist/esm/behaviors/{joint-fabric-pki → joint-fabric-administrator}/index.js.map +1 -1
- package/dist/esm/behaviors/joint-fabric-datastore/JointFabricDatastoreInterface.d.ts +555 -40
- package/dist/esm/behaviors/joint-fabric-datastore/JointFabricDatastoreInterface.d.ts.map +1 -1
- package/dist/esm/behaviors/media-playback/MediaPlaybackInterface.d.ts +27 -2
- package/dist/esm/behaviors/media-playback/MediaPlaybackInterface.d.ts.map +1 -1
- package/dist/esm/behaviors/network-commissioning/NetworkCommissioningInterface.d.ts +28 -14
- package/dist/esm/behaviors/network-commissioning/NetworkCommissioningInterface.d.ts.map +1 -1
- package/dist/esm/behaviors/operational-credentials/OperationalCredentialsInterface.d.ts +106 -9
- package/dist/esm/behaviors/operational-credentials/OperationalCredentialsInterface.d.ts.map +1 -1
- package/dist/esm/behaviors/operational-credentials/OperationalCredentialsServer.js +1 -1
- package/dist/esm/behaviors/operational-credentials/OperationalCredentialsServer.js.map +1 -1
- package/dist/esm/behaviors/service-area/ServiceAreaInterface.d.ts +0 -3
- package/dist/esm/behaviors/service-area/ServiceAreaInterface.d.ts.map +1 -1
- package/dist/esm/behaviors/service-area/ServiceAreaServer.js +2 -2
- package/dist/esm/behaviors/service-area/ServiceAreaServer.js.map +1 -1
- package/dist/esm/behaviors/software-diagnostics/SoftwareDiagnosticsInterface.d.ts +3 -1
- package/dist/esm/behaviors/software-diagnostics/SoftwareDiagnosticsInterface.d.ts.map +1 -1
- package/dist/esm/behaviors/switch/SwitchServer.d.ts +2 -0
- package/dist/esm/behaviors/switch/SwitchServer.d.ts.map +1 -1
- package/dist/esm/behaviors/switch/SwitchServer.js +3 -0
- package/dist/esm/behaviors/switch/SwitchServer.js.map +1 -1
- package/dist/esm/behaviors/temperature-control/TemperatureControlInterface.d.ts +2 -0
- package/dist/esm/behaviors/temperature-control/TemperatureControlInterface.d.ts.map +1 -1
- package/dist/esm/behaviors/thermostat/AtomicWriteHandler.d.ts +58 -0
- package/dist/esm/behaviors/thermostat/AtomicWriteHandler.d.ts.map +1 -0
- package/dist/esm/behaviors/thermostat/AtomicWriteHandler.js +293 -0
- package/dist/esm/behaviors/thermostat/AtomicWriteHandler.js.map +6 -0
- package/dist/esm/behaviors/thermostat/AtomicWriteState.d.ts +33 -0
- package/dist/esm/behaviors/thermostat/AtomicWriteState.d.ts.map +1 -0
- package/dist/esm/behaviors/thermostat/AtomicWriteState.js +66 -0
- package/dist/esm/behaviors/thermostat/AtomicWriteState.js.map +6 -0
- package/dist/esm/behaviors/thermostat/ThermostatBehavior.d.ts +13 -1
- package/dist/esm/behaviors/thermostat/ThermostatBehavior.d.ts.map +1 -1
- package/dist/esm/behaviors/thermostat/ThermostatInterface.d.ts +1 -0
- package/dist/esm/behaviors/thermostat/ThermostatInterface.d.ts.map +1 -1
- package/dist/esm/behaviors/thermostat/ThermostatServer.d.ts +894 -3
- package/dist/esm/behaviors/thermostat/ThermostatServer.d.ts.map +1 -1
- package/dist/esm/behaviors/thermostat/ThermostatServer.js +1225 -1
- package/dist/esm/behaviors/thermostat/ThermostatServer.js.map +2 -2
- package/dist/esm/behaviors/thermostat-user-interface-configuration/ThermostatUserInterfaceConfigurationServer.d.ts +1 -1
- package/dist/esm/behaviors/thermostat-user-interface-configuration/ThermostatUserInterfaceConfigurationServer.d.ts.map +1 -1
- package/dist/esm/behaviors/thermostat-user-interface-configuration/ThermostatUserInterfaceConfigurationServer.js +16 -0
- package/dist/esm/behaviors/thermostat-user-interface-configuration/ThermostatUserInterfaceConfigurationServer.js.map +1 -1
- package/dist/esm/behaviors/thread-network-diagnostics/ThreadNetworkDiagnosticsInterface.d.ts +3 -2
- package/dist/esm/behaviors/thread-network-diagnostics/ThreadNetworkDiagnosticsInterface.d.ts.map +1 -1
- package/dist/esm/behaviors/time-synchronization/TimeSynchronizationInterface.d.ts +10 -6
- package/dist/esm/behaviors/time-synchronization/TimeSynchronizationInterface.d.ts.map +1 -1
- package/dist/esm/behaviors/unit-localization/UnitLocalizationServer.d.ts.map +1 -1
- package/dist/esm/behaviors/unit-localization/UnitLocalizationServer.js +6 -0
- package/dist/esm/behaviors/unit-localization/UnitLocalizationServer.js.map +1 -1
- package/dist/esm/behaviors/wi-fi-network-diagnostics/WiFiNetworkDiagnosticsInterface.d.ts +2 -2
- package/dist/esm/behaviors/window-covering/WindowCoveringBehavior.d.ts +1 -1
- package/dist/esm/behaviors/window-covering/WindowCoveringInterface.d.ts +18 -0
- package/dist/esm/behaviors/window-covering/WindowCoveringInterface.d.ts.map +1 -1
- package/dist/esm/behaviors/window-covering/WindowCoveringServer.d.ts +2 -2
- package/dist/esm/devices/basic-video-player.d.ts +2 -2
- package/dist/esm/devices/casting-video-player.d.ts +2 -2
- package/dist/esm/devices/color-temperature-light.d.ts +48 -22
- package/dist/esm/devices/color-temperature-light.d.ts.map +1 -1
- package/dist/esm/devices/color-temperature-light.js +7 -6
- package/dist/esm/devices/color-temperature-light.js.map +1 -1
- package/dist/esm/devices/control-bridge.d.ts +7 -7
- package/dist/esm/devices/control-bridge.d.ts.map +1 -1
- package/dist/esm/devices/control-bridge.js +5 -5
- package/dist/esm/devices/control-bridge.js.map +1 -1
- package/dist/esm/devices/cook-surface.d.ts +132 -4
- package/dist/esm/devices/cook-surface.d.ts.map +1 -1
- package/dist/esm/devices/cook-surface.js +2 -2
- package/dist/esm/devices/cook-surface.js.map +1 -1
- package/dist/esm/devices/dimmable-light.d.ts +44 -18
- package/dist/esm/devices/dimmable-light.d.ts.map +1 -1
- package/dist/esm/devices/dimmable-light.js +6 -5
- package/dist/esm/devices/dimmable-light.js.map +1 -1
- package/dist/esm/devices/dimmable-plug-in-unit.d.ts +56 -19
- package/dist/esm/devices/dimmable-plug-in-unit.d.ts.map +1 -1
- package/dist/esm/devices/dimmable-plug-in-unit.js +7 -6
- package/dist/esm/devices/dimmable-plug-in-unit.js.map +1 -1
- package/dist/esm/devices/dishwasher.d.ts +30 -6
- package/dist/esm/devices/dishwasher.d.ts.map +1 -1
- package/dist/esm/devices/dishwasher.js +2 -2
- package/dist/esm/devices/dishwasher.js.map +1 -1
- package/dist/esm/devices/extended-color-light.d.ts +48 -22
- package/dist/esm/devices/extended-color-light.d.ts.map +1 -1
- package/dist/esm/devices/extended-color-light.js +7 -6
- package/dist/esm/devices/extended-color-light.js.map +1 -1
- package/dist/esm/devices/index.d.ts +1 -0
- package/dist/esm/devices/index.d.ts.map +1 -1
- package/dist/esm/devices/index.js +1 -0
- package/dist/esm/devices/index.js.map +1 -1
- package/dist/esm/devices/laundry-dryer.d.ts +30 -6
- package/dist/esm/devices/laundry-dryer.d.ts.map +1 -1
- package/dist/esm/devices/laundry-dryer.js +2 -2
- package/dist/esm/devices/laundry-dryer.js.map +1 -1
- package/dist/esm/devices/laundry-washer.d.ts +30 -6
- package/dist/esm/devices/laundry-washer.d.ts.map +1 -1
- package/dist/esm/devices/laundry-washer.js +2 -2
- package/dist/esm/devices/laundry-washer.js.map +1 -1
- package/dist/esm/devices/microwave-oven.d.ts +25 -5
- package/dist/esm/devices/microwave-oven.d.ts.map +1 -1
- package/dist/esm/devices/microwave-oven.js +2 -2
- package/dist/esm/devices/microwave-oven.js.map +1 -1
- package/dist/esm/devices/mounted-dimmable-load-control.d.ts +61 -22
- package/dist/esm/devices/mounted-dimmable-load-control.d.ts.map +1 -1
- package/dist/esm/devices/mounted-dimmable-load-control.js +7 -6
- package/dist/esm/devices/mounted-dimmable-load-control.js.map +1 -1
- package/dist/esm/devices/mounted-on-off-control.d.ts +57 -17
- package/dist/esm/devices/mounted-on-off-control.d.ts.map +1 -1
- package/dist/esm/devices/mounted-on-off-control.js +11 -5
- package/dist/esm/devices/mounted-on-off-control.js.map +1 -1
- package/dist/esm/devices/network-infrastructure-manager.d.ts +16 -4
- package/dist/esm/devices/network-infrastructure-manager.d.ts.map +1 -1
- package/dist/esm/devices/network-infrastructure-manager.js +9 -3
- package/dist/esm/devices/network-infrastructure-manager.js.map +1 -1
- package/dist/esm/devices/on-off-light.d.ts +42 -14
- package/dist/esm/devices/on-off-light.d.ts.map +1 -1
- package/dist/esm/devices/on-off-light.js +10 -4
- package/dist/esm/devices/on-off-light.js.map +1 -1
- package/dist/esm/devices/on-off-plug-in-unit.d.ts +54 -15
- package/dist/esm/devices/on-off-plug-in-unit.d.ts.map +1 -1
- package/dist/esm/devices/on-off-plug-in-unit.js +11 -5
- package/dist/esm/devices/on-off-plug-in-unit.js.map +1 -1
- package/dist/esm/devices/rain-sensor.d.ts +4 -4
- package/dist/esm/devices/robotic-vacuum-cleaner.d.ts +30 -6
- package/dist/esm/devices/robotic-vacuum-cleaner.d.ts.map +1 -1
- package/dist/esm/devices/robotic-vacuum-cleaner.js +2 -2
- package/dist/esm/devices/robotic-vacuum-cleaner.js.map +1 -1
- package/dist/esm/devices/temperature-controlled-cabinet.d.ts +147 -7
- package/dist/esm/devices/temperature-controlled-cabinet.d.ts.map +1 -1
- package/dist/esm/devices/temperature-controlled-cabinet.js +3 -3
- package/dist/esm/devices/temperature-controlled-cabinet.js.map +1 -1
- package/dist/esm/devices/thermostat-controller.d.ts +62 -0
- package/dist/esm/devices/thermostat-controller.d.ts.map +1 -0
- package/dist/esm/devices/thermostat-controller.js +38 -0
- package/dist/esm/devices/thermostat-controller.js.map +6 -0
- package/dist/esm/devices/water-freeze-detector.d.ts +4 -4
- package/dist/esm/devices/water-heater.d.ts +26 -2
- package/dist/esm/devices/water-heater.d.ts.map +1 -1
- package/dist/esm/devices/water-leak-detector.d.ts +4 -4
- package/dist/esm/devices/window-covering-controller.d.ts +1 -1
- package/dist/esm/devices/window-covering-controller.js +1 -1
- package/dist/esm/devices/window-covering.d.ts +1 -1
- package/dist/esm/devices/window-covering.js +1 -1
- package/dist/esm/endpoint/Endpoint.d.ts +36 -2
- package/dist/esm/endpoint/Endpoint.d.ts.map +1 -1
- package/dist/esm/endpoint/Endpoint.js +17 -14
- package/dist/esm/endpoint/Endpoint.js.map +1 -1
- package/dist/esm/endpoint/properties/EndpointContainer.d.ts +1 -0
- package/dist/esm/endpoint/properties/EndpointContainer.d.ts.map +1 -1
- package/dist/esm/endpoint/properties/EndpointContainer.js +3 -0
- package/dist/esm/endpoint/properties/EndpointContainer.js.map +1 -1
- package/dist/esm/endpoints/joint-fabric-administrator.d.ts +9 -9
- package/dist/esm/endpoints/joint-fabric-administrator.d.ts.map +1 -1
- package/dist/esm/endpoints/joint-fabric-administrator.js +9 -4
- package/dist/esm/endpoints/joint-fabric-administrator.js.map +1 -1
- package/dist/esm/tags/AreaNamespaceTag.d.ts +132 -99
- package/dist/esm/tags/AreaNamespaceTag.d.ts.map +1 -1
- package/dist/esm/tags/AreaNamespaceTag.js +91 -67
- package/dist/esm/tags/AreaNamespaceTag.js.map +1 -1
- package/dist/esm/tags/ClosureTag.d.ts +7 -0
- package/dist/esm/tags/ClosureTag.d.ts.map +1 -1
- package/dist/esm/tags/ClosureTag.js.map +1 -1
- package/dist/esm/tags/CompassDirectionTag.d.ts +4 -4
- package/dist/esm/tags/CompassDirectionTag.js +4 -4
- package/dist/esm/tags/CompassDirectionTag.js.map +1 -1
- package/dist/esm/tags/CompassLocationTag.d.ts +4 -4
- package/dist/esm/tags/CompassLocationTag.js +4 -4
- package/dist/esm/tags/CompassLocationTag.js.map +1 -1
- package/dist/esm/tags/LandmarkNamespaceTag.d.ts +34 -24
- package/dist/esm/tags/LandmarkNamespaceTag.d.ts.map +1 -1
- package/dist/esm/tags/LandmarkNamespaceTag.js +34 -24
- package/dist/esm/tags/LandmarkNamespaceTag.js.map +1 -1
- package/dist/esm/tags/LaundryTag.d.ts +3 -3
- package/dist/esm/tags/LaundryTag.js +3 -3
- package/dist/esm/tags/LaundryTag.js.map +1 -1
- package/dist/esm/tags/LocationTag.d.ts +8 -1
- package/dist/esm/tags/LocationTag.d.ts.map +1 -1
- package/dist/esm/tags/LocationTag.js +6 -2
- package/dist/esm/tags/LocationTag.js.map +1 -1
- package/dist/esm/tags/NumberTag.d.ts +80 -0
- package/dist/esm/tags/NumberTag.d.ts.map +1 -1
- package/dist/esm/tags/NumberTag.js +21 -1
- package/dist/esm/tags/NumberTag.js.map +1 -1
- package/dist/esm/tags/PositionTag.d.ts +3 -0
- package/dist/esm/tags/PositionTag.d.ts.map +1 -1
- package/dist/esm/tags/PositionTag.js.map +1 -1
- package/dist/esm/tags/RelativePositionTag.d.ts +2 -2
- package/dist/esm/tags/RelativePositionTag.js +2 -2
- package/dist/esm/tags/RelativePositionTag.js.map +1 -1
- package/dist/esm/tags/SwitchesTag.d.ts +27 -3
- package/dist/esm/tags/SwitchesTag.d.ts.map +1 -1
- package/dist/esm/tags/SwitchesTag.js +17 -2
- package/dist/esm/tags/SwitchesTag.js.map +1 -1
- package/package.json +7 -7
- package/src/behavior/Behavior.ts +10 -0
- package/src/behavior/cluster/ClusterBehavior.ts +21 -10
- package/src/behavior/cluster/ClusterBehaviorUtil.ts +85 -59
- package/src/behavior/internal/BehaviorBacking.ts +2 -2
- package/src/behavior/state/managed/Datasource.ts +14 -7
- package/src/behavior/state/managed/ManagedReference.ts +67 -19
- package/src/behavior/state/managed/values/ListManager.ts +1 -0
- package/src/behavior/state/managed/values/StructManager.ts +13 -3
- package/src/behavior/state/validation/conformance-compiler.ts +8 -3
- package/src/behaviors/access-control/AccessControlServer.ts +3 -7
- package/src/behaviors/account-login/AccountLoginInterface.ts +7 -7
- package/src/behaviors/actions/ActionsInterface.ts +26 -1
- package/src/behaviors/application-launcher/ApplicationLauncherInterface.ts +3 -1
- package/src/behaviors/channel/ChannelInterface.ts +4 -0
- package/src/behaviors/color-control/ColorControlInterface.ts +4 -0
- package/src/behaviors/color-control/ColorControlServer.ts +25 -26
- package/src/behaviors/content-control/ContentControlInterface.ts +1 -1
- package/src/behaviors/door-lock/DoorLockInterface.ts +1 -1
- package/src/behaviors/door-lock/DoorLockServer.ts +11 -4
- package/src/behaviors/ethernet-network-diagnostics/EthernetNetworkDiagnosticsInterface.ts +2 -2
- package/src/behaviors/fan-control/FanControlInterface.ts +13 -4
- package/src/behaviors/fan-control/FanControlServer.ts +8 -3
- package/src/behaviors/general-commissioning/GeneralCommissioningInterface.ts +16 -13
- package/src/behaviors/general-diagnostics/GeneralDiagnosticsServer.ts +5 -9
- package/src/behaviors/group-key-management/GroupKeyManagementInterface.ts +3 -3
- package/src/behaviors/icd-management/IcdManagementInterface.ts +40 -4
- package/src/behaviors/index.ts +1 -5
- package/src/behaviors/joint-fabric-administrator/JointFabricAdministratorBehavior.ts +27 -0
- package/src/behaviors/joint-fabric-administrator/JointFabricAdministratorClient.ts +15 -0
- package/src/behaviors/joint-fabric-administrator/JointFabricAdministratorInterface.ts +94 -0
- package/src/behaviors/{joint-fabric-pki/JointFabricPkiServer.ts → joint-fabric-administrator/JointFabricAdministratorServer.ts} +3 -3
- package/src/behaviors/joint-fabric-administrator/index.ts +12 -0
- package/src/behaviors/joint-fabric-datastore/JointFabricDatastoreInterface.ts +555 -40
- package/src/behaviors/media-playback/MediaPlaybackInterface.ts +27 -2
- package/src/behaviors/network-commissioning/NetworkCommissioningInterface.ts +28 -14
- package/src/behaviors/operational-credentials/OperationalCredentialsInterface.ts +108 -9
- package/src/behaviors/operational-credentials/OperationalCredentialsServer.ts +1 -1
- package/src/behaviors/service-area/ServiceAreaInterface.ts +0 -3
- package/src/behaviors/service-area/ServiceAreaServer.ts +2 -2
- package/src/behaviors/software-diagnostics/SoftwareDiagnosticsInterface.ts +3 -1
- package/src/behaviors/switch/SwitchServer.ts +4 -0
- package/src/behaviors/temperature-control/TemperatureControlInterface.ts +2 -0
- package/src/behaviors/thermostat/AtomicWriteHandler.ts +412 -0
- package/src/behaviors/thermostat/AtomicWriteState.ts +91 -0
- package/src/behaviors/thermostat/ThermostatInterface.ts +2 -0
- package/src/behaviors/thermostat/ThermostatServer.ts +1487 -3
- package/src/behaviors/thermostat-user-interface-configuration/ThermostatUserInterfaceConfigurationServer.ts +21 -1
- package/src/behaviors/thread-network-diagnostics/ThreadNetworkDiagnosticsInterface.ts +3 -2
- package/src/behaviors/time-synchronization/TimeSynchronizationInterface.ts +10 -6
- package/src/behaviors/unit-localization/UnitLocalizationServer.ts +6 -0
- package/src/behaviors/wi-fi-network-diagnostics/WiFiNetworkDiagnosticsInterface.ts +2 -2
- package/src/behaviors/window-covering/WindowCoveringInterface.ts +18 -0
- package/src/devices/basic-video-player.ts +2 -2
- package/src/devices/casting-video-player.ts +2 -2
- package/src/devices/color-temperature-light.ts +14 -13
- package/src/devices/control-bridge.ts +11 -11
- package/src/devices/cook-surface.ts +3 -3
- package/src/devices/dimmable-light.ts +13 -12
- package/src/devices/dimmable-plug-in-unit.ts +25 -13
- package/src/devices/dishwasher.ts +4 -3
- package/src/devices/extended-color-light.ts +14 -13
- package/src/devices/index.ts +1 -0
- package/src/devices/laundry-dryer.ts +4 -3
- package/src/devices/laundry-washer.ts +4 -3
- package/src/devices/microwave-oven.ts +2 -2
- package/src/devices/mounted-dimmable-load-control.ts +30 -16
- package/src/devices/mounted-on-off-control.ts +33 -12
- package/src/devices/network-infrastructure-manager.ts +19 -6
- package/src/devices/on-off-light.ts +18 -9
- package/src/devices/on-off-plug-in-unit.ts +30 -10
- package/src/devices/robotic-vacuum-cleaner.ts +4 -3
- package/src/devices/temperature-controlled-cabinet.ts +6 -5
- package/src/devices/thermostat-controller.ts +72 -0
- package/src/devices/window-covering-controller.ts +1 -1
- package/src/devices/window-covering.ts +1 -1
- package/src/endpoint/Endpoint.ts +61 -5
- package/src/endpoint/properties/EndpointContainer.ts +4 -0
- package/src/endpoints/joint-fabric-administrator.ts +13 -8
- package/src/tags/AreaNamespaceTag.ts +104 -68
- package/src/tags/ClosureTag.ts +7 -0
- package/src/tags/CompassDirectionTag.ts +4 -4
- package/src/tags/CompassLocationTag.ts +4 -4
- package/src/tags/LandmarkNamespaceTag.ts +39 -24
- package/src/tags/LaundryTag.ts +3 -3
- package/src/tags/LocationTag.ts +7 -2
- package/src/tags/NumberTag.ts +21 -1
- package/src/tags/PositionTag.ts +3 -0
- package/src/tags/RelativePositionTag.ts +2 -2
- package/src/tags/SwitchesTag.ts +22 -4
- package/dist/cjs/behaviors/ballast-configuration/BallastConfigurationBehavior.d.ts +0 -26
- package/dist/cjs/behaviors/ballast-configuration/BallastConfigurationBehavior.d.ts.map +0 -1
- package/dist/cjs/behaviors/ballast-configuration/BallastConfigurationBehavior.js +0 -34
- package/dist/cjs/behaviors/ballast-configuration/BallastConfigurationBehavior.js.map +0 -6
- package/dist/cjs/behaviors/ballast-configuration/BallastConfigurationClient.d.ts +0 -15
- package/dist/cjs/behaviors/ballast-configuration/BallastConfigurationClient.d.ts.map +0 -1
- package/dist/cjs/behaviors/ballast-configuration/BallastConfigurationClient.js +0 -33
- package/dist/cjs/behaviors/ballast-configuration/BallastConfigurationClient.js.map +0 -6
- package/dist/cjs/behaviors/ballast-configuration/BallastConfigurationServer.d.ts +0 -13
- package/dist/cjs/behaviors/ballast-configuration/BallastConfigurationServer.d.ts.map +0 -1
- package/dist/cjs/behaviors/ballast-configuration/BallastConfigurationServer.js.map +0 -6
- package/dist/cjs/behaviors/ballast-configuration/index.d.ts +0 -10
- package/dist/cjs/behaviors/ballast-configuration/index.d.ts.map +0 -1
- package/dist/cjs/behaviors/ballast-configuration/index.js +0 -26
- package/dist/cjs/behaviors/ballast-configuration/index.js.map +0 -6
- package/dist/cjs/behaviors/joint-fabric-pki/JointFabricPkiBehavior.d.ts +0 -31
- package/dist/cjs/behaviors/joint-fabric-pki/JointFabricPkiBehavior.d.ts.map +0 -1
- package/dist/cjs/behaviors/joint-fabric-pki/JointFabricPkiBehavior.js.map +0 -6
- package/dist/cjs/behaviors/joint-fabric-pki/JointFabricPkiClient.d.ts +0 -15
- package/dist/cjs/behaviors/joint-fabric-pki/JointFabricPkiClient.d.ts.map +0 -1
- package/dist/cjs/behaviors/joint-fabric-pki/JointFabricPkiClient.js +0 -33
- package/dist/cjs/behaviors/joint-fabric-pki/JointFabricPkiClient.js.map +0 -6
- package/dist/cjs/behaviors/joint-fabric-pki/JointFabricPkiInterface.d.ts +0 -36
- package/dist/cjs/behaviors/joint-fabric-pki/JointFabricPkiInterface.d.ts.map +0 -1
- package/dist/cjs/behaviors/joint-fabric-pki/JointFabricPkiInterface.js +0 -22
- package/dist/cjs/behaviors/joint-fabric-pki/JointFabricPkiInterface.js.map +0 -6
- package/dist/cjs/behaviors/joint-fabric-pki/JointFabricPkiServer.d.ts +0 -13
- package/dist/cjs/behaviors/joint-fabric-pki/JointFabricPkiServer.d.ts.map +0 -1
- package/dist/cjs/behaviors/joint-fabric-pki/JointFabricPkiServer.js.map +0 -6
- package/dist/cjs/behaviors/joint-fabric-pki/index.d.ts +0 -11
- package/dist/cjs/behaviors/joint-fabric-pki/index.d.ts.map +0 -1
- package/dist/cjs/behaviors/joint-fabric-pki/index.js.map +0 -6
- package/dist/cjs/behaviors/proxy-configuration/ProxyConfigurationBehavior.d.ts +0 -26
- package/dist/cjs/behaviors/proxy-configuration/ProxyConfigurationBehavior.d.ts.map +0 -1
- package/dist/cjs/behaviors/proxy-configuration/ProxyConfigurationBehavior.js +0 -34
- package/dist/cjs/behaviors/proxy-configuration/ProxyConfigurationBehavior.js.map +0 -6
- package/dist/cjs/behaviors/proxy-configuration/ProxyConfigurationClient.d.ts +0 -15
- package/dist/cjs/behaviors/proxy-configuration/ProxyConfigurationClient.d.ts.map +0 -1
- package/dist/cjs/behaviors/proxy-configuration/ProxyConfigurationClient.js +0 -33
- package/dist/cjs/behaviors/proxy-configuration/ProxyConfigurationClient.js.map +0 -6
- package/dist/cjs/behaviors/proxy-configuration/ProxyConfigurationServer.d.ts +0 -13
- package/dist/cjs/behaviors/proxy-configuration/ProxyConfigurationServer.d.ts.map +0 -1
- package/dist/cjs/behaviors/proxy-configuration/ProxyConfigurationServer.js +0 -32
- package/dist/cjs/behaviors/proxy-configuration/ProxyConfigurationServer.js.map +0 -6
- package/dist/cjs/behaviors/proxy-configuration/index.d.ts +0 -10
- package/dist/cjs/behaviors/proxy-configuration/index.d.ts.map +0 -1
- package/dist/cjs/behaviors/proxy-configuration/index.js +0 -26
- package/dist/cjs/behaviors/proxy-configuration/index.js.map +0 -6
- package/dist/cjs/behaviors/proxy-discovery/ProxyDiscoveryBehavior.d.ts +0 -31
- package/dist/cjs/behaviors/proxy-discovery/ProxyDiscoveryBehavior.d.ts.map +0 -1
- package/dist/cjs/behaviors/proxy-discovery/ProxyDiscoveryBehavior.js +0 -34
- package/dist/cjs/behaviors/proxy-discovery/ProxyDiscoveryBehavior.js.map +0 -6
- package/dist/cjs/behaviors/proxy-discovery/ProxyDiscoveryClient.d.ts +0 -15
- package/dist/cjs/behaviors/proxy-discovery/ProxyDiscoveryClient.d.ts.map +0 -1
- package/dist/cjs/behaviors/proxy-discovery/ProxyDiscoveryClient.js +0 -33
- package/dist/cjs/behaviors/proxy-discovery/ProxyDiscoveryClient.js.map +0 -6
- package/dist/cjs/behaviors/proxy-discovery/ProxyDiscoveryInterface.d.ts +0 -26
- package/dist/cjs/behaviors/proxy-discovery/ProxyDiscoveryInterface.d.ts.map +0 -1
- package/dist/cjs/behaviors/proxy-discovery/ProxyDiscoveryInterface.js.map +0 -6
- package/dist/cjs/behaviors/proxy-discovery/ProxyDiscoveryServer.d.ts +0 -13
- package/dist/cjs/behaviors/proxy-discovery/ProxyDiscoveryServer.d.ts.map +0 -1
- package/dist/cjs/behaviors/proxy-discovery/ProxyDiscoveryServer.js +0 -32
- package/dist/cjs/behaviors/proxy-discovery/ProxyDiscoveryServer.js.map +0 -6
- package/dist/cjs/behaviors/proxy-discovery/index.d.ts +0 -11
- package/dist/cjs/behaviors/proxy-discovery/index.d.ts.map +0 -1
- package/dist/cjs/behaviors/proxy-discovery/index.js +0 -27
- package/dist/cjs/behaviors/proxy-discovery/index.js.map +0 -6
- package/dist/cjs/behaviors/valid-proxies/ValidProxiesBehavior.d.ts +0 -31
- package/dist/cjs/behaviors/valid-proxies/ValidProxiesBehavior.d.ts.map +0 -1
- package/dist/cjs/behaviors/valid-proxies/ValidProxiesBehavior.js +0 -34
- package/dist/cjs/behaviors/valid-proxies/ValidProxiesBehavior.js.map +0 -6
- package/dist/cjs/behaviors/valid-proxies/ValidProxiesClient.d.ts +0 -15
- package/dist/cjs/behaviors/valid-proxies/ValidProxiesClient.d.ts.map +0 -1
- package/dist/cjs/behaviors/valid-proxies/ValidProxiesClient.js +0 -33
- package/dist/cjs/behaviors/valid-proxies/ValidProxiesClient.js.map +0 -6
- package/dist/cjs/behaviors/valid-proxies/ValidProxiesInterface.d.ts +0 -26
- package/dist/cjs/behaviors/valid-proxies/ValidProxiesInterface.d.ts.map +0 -1
- package/dist/cjs/behaviors/valid-proxies/ValidProxiesInterface.js +0 -22
- package/dist/cjs/behaviors/valid-proxies/ValidProxiesInterface.js.map +0 -6
- package/dist/cjs/behaviors/valid-proxies/ValidProxiesServer.d.ts +0 -13
- package/dist/cjs/behaviors/valid-proxies/ValidProxiesServer.d.ts.map +0 -1
- package/dist/cjs/behaviors/valid-proxies/ValidProxiesServer.js +0 -32
- package/dist/cjs/behaviors/valid-proxies/ValidProxiesServer.js.map +0 -6
- package/dist/cjs/behaviors/valid-proxies/index.d.ts +0 -11
- package/dist/cjs/behaviors/valid-proxies/index.d.ts.map +0 -1
- package/dist/cjs/behaviors/valid-proxies/index.js +0 -27
- package/dist/cjs/behaviors/valid-proxies/index.js.map +0 -6
- package/dist/esm/behaviors/ballast-configuration/BallastConfigurationBehavior.d.ts +0 -26
- package/dist/esm/behaviors/ballast-configuration/BallastConfigurationBehavior.d.ts.map +0 -1
- package/dist/esm/behaviors/ballast-configuration/BallastConfigurationBehavior.js +0 -14
- package/dist/esm/behaviors/ballast-configuration/BallastConfigurationBehavior.js.map +0 -6
- package/dist/esm/behaviors/ballast-configuration/BallastConfigurationClient.d.ts +0 -15
- package/dist/esm/behaviors/ballast-configuration/BallastConfigurationClient.d.ts.map +0 -1
- package/dist/esm/behaviors/ballast-configuration/BallastConfigurationClient.js +0 -13
- package/dist/esm/behaviors/ballast-configuration/BallastConfigurationClient.js.map +0 -6
- package/dist/esm/behaviors/ballast-configuration/BallastConfigurationServer.d.ts +0 -13
- package/dist/esm/behaviors/ballast-configuration/BallastConfigurationServer.d.ts.map +0 -1
- package/dist/esm/behaviors/ballast-configuration/BallastConfigurationServer.js +0 -12
- package/dist/esm/behaviors/ballast-configuration/BallastConfigurationServer.js.map +0 -6
- package/dist/esm/behaviors/ballast-configuration/index.d.ts +0 -10
- package/dist/esm/behaviors/ballast-configuration/index.d.ts.map +0 -1
- package/dist/esm/behaviors/ballast-configuration/index.js +0 -9
- package/dist/esm/behaviors/ballast-configuration/index.js.map +0 -6
- package/dist/esm/behaviors/joint-fabric-pki/JointFabricPkiBehavior.d.ts +0 -31
- package/dist/esm/behaviors/joint-fabric-pki/JointFabricPkiBehavior.d.ts.map +0 -1
- package/dist/esm/behaviors/joint-fabric-pki/JointFabricPkiBehavior.js +0 -14
- package/dist/esm/behaviors/joint-fabric-pki/JointFabricPkiBehavior.js.map +0 -6
- package/dist/esm/behaviors/joint-fabric-pki/JointFabricPkiClient.d.ts +0 -15
- package/dist/esm/behaviors/joint-fabric-pki/JointFabricPkiClient.d.ts.map +0 -1
- package/dist/esm/behaviors/joint-fabric-pki/JointFabricPkiClient.js +0 -13
- package/dist/esm/behaviors/joint-fabric-pki/JointFabricPkiClient.js.map +0 -6
- package/dist/esm/behaviors/joint-fabric-pki/JointFabricPkiInterface.d.ts +0 -36
- package/dist/esm/behaviors/joint-fabric-pki/JointFabricPkiInterface.d.ts.map +0 -1
- package/dist/esm/behaviors/joint-fabric-pki/JointFabricPkiInterface.js +0 -6
- package/dist/esm/behaviors/joint-fabric-pki/JointFabricPkiInterface.js.map +0 -6
- package/dist/esm/behaviors/joint-fabric-pki/JointFabricPkiServer.d.ts +0 -13
- package/dist/esm/behaviors/joint-fabric-pki/JointFabricPkiServer.d.ts.map +0 -1
- package/dist/esm/behaviors/joint-fabric-pki/JointFabricPkiServer.js +0 -12
- package/dist/esm/behaviors/joint-fabric-pki/JointFabricPkiServer.js.map +0 -6
- package/dist/esm/behaviors/joint-fabric-pki/index.d.ts +0 -11
- package/dist/esm/behaviors/joint-fabric-pki/index.d.ts.map +0 -1
- package/dist/esm/behaviors/joint-fabric-pki/index.js +0 -10
- package/dist/esm/behaviors/proxy-configuration/ProxyConfigurationBehavior.d.ts +0 -26
- package/dist/esm/behaviors/proxy-configuration/ProxyConfigurationBehavior.d.ts.map +0 -1
- package/dist/esm/behaviors/proxy-configuration/ProxyConfigurationBehavior.js +0 -14
- package/dist/esm/behaviors/proxy-configuration/ProxyConfigurationBehavior.js.map +0 -6
- package/dist/esm/behaviors/proxy-configuration/ProxyConfigurationClient.d.ts +0 -15
- package/dist/esm/behaviors/proxy-configuration/ProxyConfigurationClient.d.ts.map +0 -1
- package/dist/esm/behaviors/proxy-configuration/ProxyConfigurationClient.js +0 -13
- package/dist/esm/behaviors/proxy-configuration/ProxyConfigurationClient.js.map +0 -6
- package/dist/esm/behaviors/proxy-configuration/ProxyConfigurationServer.d.ts +0 -13
- package/dist/esm/behaviors/proxy-configuration/ProxyConfigurationServer.d.ts.map +0 -1
- package/dist/esm/behaviors/proxy-configuration/ProxyConfigurationServer.js +0 -12
- package/dist/esm/behaviors/proxy-configuration/ProxyConfigurationServer.js.map +0 -6
- package/dist/esm/behaviors/proxy-configuration/index.d.ts +0 -10
- package/dist/esm/behaviors/proxy-configuration/index.d.ts.map +0 -1
- package/dist/esm/behaviors/proxy-configuration/index.js +0 -9
- package/dist/esm/behaviors/proxy-configuration/index.js.map +0 -6
- package/dist/esm/behaviors/proxy-discovery/ProxyDiscoveryBehavior.d.ts +0 -31
- package/dist/esm/behaviors/proxy-discovery/ProxyDiscoveryBehavior.d.ts.map +0 -1
- package/dist/esm/behaviors/proxy-discovery/ProxyDiscoveryBehavior.js +0 -14
- package/dist/esm/behaviors/proxy-discovery/ProxyDiscoveryBehavior.js.map +0 -6
- package/dist/esm/behaviors/proxy-discovery/ProxyDiscoveryClient.d.ts +0 -15
- package/dist/esm/behaviors/proxy-discovery/ProxyDiscoveryClient.d.ts.map +0 -1
- package/dist/esm/behaviors/proxy-discovery/ProxyDiscoveryClient.js +0 -13
- package/dist/esm/behaviors/proxy-discovery/ProxyDiscoveryClient.js.map +0 -6
- package/dist/esm/behaviors/proxy-discovery/ProxyDiscoveryInterface.d.ts +0 -26
- package/dist/esm/behaviors/proxy-discovery/ProxyDiscoveryInterface.d.ts.map +0 -1
- package/dist/esm/behaviors/proxy-discovery/ProxyDiscoveryInterface.js +0 -6
- package/dist/esm/behaviors/proxy-discovery/ProxyDiscoveryInterface.js.map +0 -6
- package/dist/esm/behaviors/proxy-discovery/ProxyDiscoveryServer.d.ts +0 -13
- package/dist/esm/behaviors/proxy-discovery/ProxyDiscoveryServer.d.ts.map +0 -1
- package/dist/esm/behaviors/proxy-discovery/ProxyDiscoveryServer.js +0 -12
- package/dist/esm/behaviors/proxy-discovery/ProxyDiscoveryServer.js.map +0 -6
- package/dist/esm/behaviors/proxy-discovery/index.d.ts +0 -11
- package/dist/esm/behaviors/proxy-discovery/index.d.ts.map +0 -1
- package/dist/esm/behaviors/proxy-discovery/index.js +0 -10
- package/dist/esm/behaviors/proxy-discovery/index.js.map +0 -6
- package/dist/esm/behaviors/valid-proxies/ValidProxiesBehavior.d.ts +0 -31
- package/dist/esm/behaviors/valid-proxies/ValidProxiesBehavior.d.ts.map +0 -1
- package/dist/esm/behaviors/valid-proxies/ValidProxiesBehavior.js +0 -14
- package/dist/esm/behaviors/valid-proxies/ValidProxiesBehavior.js.map +0 -6
- package/dist/esm/behaviors/valid-proxies/ValidProxiesClient.d.ts +0 -15
- package/dist/esm/behaviors/valid-proxies/ValidProxiesClient.d.ts.map +0 -1
- package/dist/esm/behaviors/valid-proxies/ValidProxiesClient.js +0 -13
- package/dist/esm/behaviors/valid-proxies/ValidProxiesClient.js.map +0 -6
- package/dist/esm/behaviors/valid-proxies/ValidProxiesInterface.d.ts +0 -26
- package/dist/esm/behaviors/valid-proxies/ValidProxiesInterface.d.ts.map +0 -1
- package/dist/esm/behaviors/valid-proxies/ValidProxiesInterface.js.map +0 -6
- package/dist/esm/behaviors/valid-proxies/ValidProxiesServer.d.ts +0 -13
- package/dist/esm/behaviors/valid-proxies/ValidProxiesServer.d.ts.map +0 -1
- package/dist/esm/behaviors/valid-proxies/ValidProxiesServer.js +0 -12
- package/dist/esm/behaviors/valid-proxies/ValidProxiesServer.js.map +0 -6
- package/dist/esm/behaviors/valid-proxies/index.d.ts +0 -11
- package/dist/esm/behaviors/valid-proxies/index.d.ts.map +0 -1
- package/dist/esm/behaviors/valid-proxies/index.js +0 -10
- package/dist/esm/behaviors/valid-proxies/index.js.map +0 -6
- package/src/behaviors/ballast-configuration/BallastConfigurationBehavior.ts +0 -24
- package/src/behaviors/ballast-configuration/BallastConfigurationClient.ts +0 -15
- package/src/behaviors/ballast-configuration/BallastConfigurationServer.ts +0 -14
- package/src/behaviors/ballast-configuration/index.ts +0 -11
- package/src/behaviors/joint-fabric-pki/JointFabricPkiBehavior.ts +0 -26
- package/src/behaviors/joint-fabric-pki/JointFabricPkiClient.ts +0 -15
- package/src/behaviors/joint-fabric-pki/JointFabricPkiInterface.ts +0 -36
- package/src/behaviors/joint-fabric-pki/index.ts +0 -12
- package/src/behaviors/proxy-configuration/ProxyConfigurationBehavior.ts +0 -24
- package/src/behaviors/proxy-configuration/ProxyConfigurationClient.ts +0 -15
- package/src/behaviors/proxy-configuration/ProxyConfigurationServer.ts +0 -14
- package/src/behaviors/proxy-configuration/index.ts +0 -11
- package/src/behaviors/proxy-discovery/ProxyDiscoveryBehavior.ts +0 -26
- package/src/behaviors/proxy-discovery/ProxyDiscoveryClient.ts +0 -15
- package/src/behaviors/proxy-discovery/ProxyDiscoveryInterface.ts +0 -24
- package/src/behaviors/proxy-discovery/ProxyDiscoveryServer.ts +0 -14
- package/src/behaviors/proxy-discovery/index.ts +0 -12
- package/src/behaviors/valid-proxies/ValidProxiesBehavior.ts +0 -24
- package/src/behaviors/valid-proxies/ValidProxiesClient.ts +0 -15
- package/src/behaviors/valid-proxies/ValidProxiesInterface.ts +0 -24
- package/src/behaviors/valid-proxies/ValidProxiesServer.ts +0 -14
- package/src/behaviors/valid-proxies/index.ts +0 -12
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { ActionContext, Behavior, ClusterBehavior, type ClusterState, ValueSupervisor } from "#behavior/index.js";
|
|
8
|
+
import { Thermostat } from "#clusters/thermostat";
|
|
9
|
+
import { Endpoint } from "#endpoint/Endpoint.js";
|
|
10
|
+
import { BasicSet, Environment, Environmental, InternalError, Logger, ObserverGroup, serialize } from "#general";
|
|
11
|
+
import { ClusterModel, DataModelPath } from "#model";
|
|
12
|
+
import {
|
|
13
|
+
AccessControl,
|
|
14
|
+
assertRemoteActor,
|
|
15
|
+
Fabric,
|
|
16
|
+
FabricManager,
|
|
17
|
+
hasRemoteActor,
|
|
18
|
+
PeerAddress,
|
|
19
|
+
Subject,
|
|
20
|
+
Val,
|
|
21
|
+
} from "#protocol";
|
|
22
|
+
import { AttributeId, NodeId, Status, StatusResponse, StatusResponseError } from "#types";
|
|
23
|
+
import { AtomicWriteState } from "./AtomicWriteState.js";
|
|
24
|
+
|
|
25
|
+
const logger = Logger.get("AtomicWriteHandler");
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Handles atomic write handling according to Matter definitions.
|
|
29
|
+
* The implementation tries to be generic, but is currently only used by the Thermostat cluster, so the atomic write
|
|
30
|
+
* types are imported from there.
|
|
31
|
+
*
|
|
32
|
+
* The logic requires that the cluster behavior implements the following additional events as "pure Observable()" events,
|
|
33
|
+
* because the current implementation logic requires error thrown by the event handlers to signal validation failures to
|
|
34
|
+
* be thrown back to te emitter. This is not the case for official state events.
|
|
35
|
+
* * `${attributeName}$AtomicChanging` - emitted when an attribute is changed as part of an atomic write, before the value
|
|
36
|
+
* is actually changed. Receives the new value, the old value and the action context as parameters.
|
|
37
|
+
* * `${attributeName}$AtomicChanged` - emitted when an attribute is changed as part of an atomic write, after the value
|
|
38
|
+
* is actually changed. Receives the new value, the old value and the action context as parameters.
|
|
39
|
+
*
|
|
40
|
+
* TODO: Move out of thermostat behavior into a more generic behavior handler once used by other clusters too. Then we
|
|
41
|
+
* also need to adjust how it is handled.
|
|
42
|
+
* Proper solution might be to add the handling of the atomic Request command on interaction level and leave the
|
|
43
|
+
* transaction open until it is rolled back or committed. This might have side effects on other parts of the system though.
|
|
44
|
+
* So lets do that later when we have more clusters using it.
|
|
45
|
+
*/
|
|
46
|
+
export class AtomicWriteHandler {
|
|
47
|
+
#observers = new ObserverGroup();
|
|
48
|
+
#pendingWrites = new BasicSet<AtomicWriteState>();
|
|
49
|
+
|
|
50
|
+
constructor(fabricManager: FabricManager) {
|
|
51
|
+
this.#observers.on(fabricManager.events.deleted, fabric => this.#handleFabricRemoval(fabric));
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
static [Environmental.create](env: Environment) {
|
|
55
|
+
const instance = new AtomicWriteHandler(env.get(FabricManager));
|
|
56
|
+
env.set(AtomicWriteHandler, instance);
|
|
57
|
+
return instance;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
close() {
|
|
61
|
+
this.#observers.close();
|
|
62
|
+
for (const writeState of Array.from(this.#pendingWrites)) {
|
|
63
|
+
writeState.close();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Initializes an AtomicWrite state for the given request, context, endpoint and cluster.
|
|
69
|
+
* It also implements all relevant validation according to the Matter spec.
|
|
70
|
+
*/
|
|
71
|
+
#initializeState<B extends Behavior.Type>(
|
|
72
|
+
{ requestType, attributeRequests, timeout }: Thermostat.AtomicRequest,
|
|
73
|
+
context: ActionContext,
|
|
74
|
+
endpoint: Endpoint,
|
|
75
|
+
cluster: B,
|
|
76
|
+
) {
|
|
77
|
+
if (!ClusterBehavior.is(cluster) || !cluster.schema) {
|
|
78
|
+
throw new InternalError("Cluster behavior expected for atomic write handler");
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Ensure we have a valid peer and so also associated fabric
|
|
82
|
+
const peerAddress = this.#assertValidPeer(context);
|
|
83
|
+
|
|
84
|
+
// Validate AttributeRequests
|
|
85
|
+
if (attributeRequests.length === 0) {
|
|
86
|
+
throw new StatusResponse.InvalidCommandError("No attribute requests provided");
|
|
87
|
+
}
|
|
88
|
+
const attributes = new Map<AttributeId, string>();
|
|
89
|
+
for (const attr of attributeRequests) {
|
|
90
|
+
const [attributeName, _] =
|
|
91
|
+
Object.entries((cluster as ClusterBehavior.Type).cluster.attributes).find(
|
|
92
|
+
([_, { id }]) => id === attr,
|
|
93
|
+
) ?? [];
|
|
94
|
+
if (attributeName === undefined || endpoint.stateOf(cluster.id)[attr] === undefined) {
|
|
95
|
+
throw new StatusResponse.InvalidCommandError(`Attribute ${attr} not supported by cluster`);
|
|
96
|
+
}
|
|
97
|
+
if (attributes.has(attr)) {
|
|
98
|
+
throw new StatusResponse.InvalidCommandError("Duplicate attribute in attribute requests");
|
|
99
|
+
}
|
|
100
|
+
attributes.set(attr, attributeName);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const existingState = this.#pendingWrites.find(
|
|
104
|
+
s =>
|
|
105
|
+
PeerAddress.is(s.peerAddress, peerAddress) &&
|
|
106
|
+
s.endpoint.number == endpoint.number &&
|
|
107
|
+
s.clusterId === (cluster as ClusterBehavior.Type).cluster.id,
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
if (requestType === Thermostat.RequestType.BeginWrite) {
|
|
111
|
+
if (timeout === undefined) {
|
|
112
|
+
throw new StatusResponse.InvalidCommandError("Timeout missing for BeginWrite request");
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
if (
|
|
116
|
+
existingState !== undefined &&
|
|
117
|
+
existingState.attributeRequests.some(attr => attributeRequests.includes(attr))
|
|
118
|
+
) {
|
|
119
|
+
throw new StatusResponse.InvalidCommandError(
|
|
120
|
+
"An atomic write for at least one of the attributes is already in progress for this peer",
|
|
121
|
+
);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
const initialValues: Val.Struct = {};
|
|
125
|
+
for (const attr of attributeRequests) {
|
|
126
|
+
initialValues[attr] = endpoint.stateOf(cluster.id)[attr];
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
const state = new AtomicWriteState(
|
|
130
|
+
peerAddress,
|
|
131
|
+
endpoint,
|
|
132
|
+
cluster.cluster.id,
|
|
133
|
+
attributeRequests,
|
|
134
|
+
timeout,
|
|
135
|
+
attributes,
|
|
136
|
+
initialValues,
|
|
137
|
+
);
|
|
138
|
+
this.#pendingWrites.add(state);
|
|
139
|
+
state.closed.on(() => void this.#pendingWrites.delete(state));
|
|
140
|
+
logger.debug("Added atomic write state:", state);
|
|
141
|
+
return state;
|
|
142
|
+
}
|
|
143
|
+
if (existingState === undefined) {
|
|
144
|
+
throw new StatusResponse.InvalidInStateError("No atomic write in progress for this peer");
|
|
145
|
+
}
|
|
146
|
+
if (
|
|
147
|
+
existingState.attributeRequests.length !== attributeRequests.length ||
|
|
148
|
+
!existingState.attributeRequests.every(attr => attributeRequests.includes(attr))
|
|
149
|
+
) {
|
|
150
|
+
throw new StatusResponse.InvalidInStateError("Attribute requests do not match existing atomic write");
|
|
151
|
+
}
|
|
152
|
+
return existingState;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Implements the begin write logic for an atomic write.
|
|
157
|
+
*/
|
|
158
|
+
beginWrite(
|
|
159
|
+
request: Thermostat.AtomicRequest,
|
|
160
|
+
context: ActionContext,
|
|
161
|
+
endpoint: Endpoint,
|
|
162
|
+
cluster: Behavior.Type,
|
|
163
|
+
): Thermostat.AtomicResponse {
|
|
164
|
+
if (!hasRemoteActor(context)) {
|
|
165
|
+
throw new StatusResponse.InvalidCommandError("AtomicRequest requires a remote actor");
|
|
166
|
+
}
|
|
167
|
+
if (!ClusterBehavior.is(cluster) || !cluster.schema) {
|
|
168
|
+
throw new InternalError("Cluster behavior expected for atomic write handler");
|
|
169
|
+
}
|
|
170
|
+
let commandStatusCode = Status.Success;
|
|
171
|
+
const attributeStatus = request.attributeRequests.map(attr => {
|
|
172
|
+
let statusCode = Status.Success;
|
|
173
|
+
const attributeModel = (cluster.schema!.conformant as ClusterModel.Conformant).attributes.for(attr);
|
|
174
|
+
if (!attributeModel?.quality.atomic) {
|
|
175
|
+
statusCode = Status.InvalidAction;
|
|
176
|
+
} else if (this.#pendingWriteStateForAttribute(endpoint, cluster, attr) !== undefined) {
|
|
177
|
+
statusCode = Status.Busy;
|
|
178
|
+
} else {
|
|
179
|
+
const { writeLevel } = cluster.supervisor.get(attributeModel).access.limits;
|
|
180
|
+
const location = {
|
|
181
|
+
path: DataModelPath.none,
|
|
182
|
+
endpoint: endpoint.number,
|
|
183
|
+
cluster: cluster.cluster.id,
|
|
184
|
+
owningFabric: context.fabric,
|
|
185
|
+
};
|
|
186
|
+
if (context.authorityAt(writeLevel, location) !== AccessControl.Authority.Granted) {
|
|
187
|
+
statusCode = Status.UnsupportedAccess;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
if (statusCode !== Status.Success) {
|
|
192
|
+
commandStatusCode = Status.Failure;
|
|
193
|
+
}
|
|
194
|
+
return {
|
|
195
|
+
attributeId: attr,
|
|
196
|
+
statusCode,
|
|
197
|
+
};
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
let timeout;
|
|
201
|
+
if (commandStatusCode === Status.Success) {
|
|
202
|
+
const state = this.#initializeState(request, context, endpoint, cluster);
|
|
203
|
+
timeout = state.timeout;
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
return {
|
|
207
|
+
statusCode: commandStatusCode,
|
|
208
|
+
attributeStatus,
|
|
209
|
+
timeout,
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* Handles writing a value for an attribute as part of an ongoing atomic write.
|
|
215
|
+
* It uses the *$AtomicChanging* event to trigger validation of the partial write.
|
|
216
|
+
*/
|
|
217
|
+
writeAttribute(
|
|
218
|
+
context: ValueSupervisor.Session,
|
|
219
|
+
endpoint: Endpoint,
|
|
220
|
+
cluster: Behavior.Type,
|
|
221
|
+
attribute: AttributeId,
|
|
222
|
+
value: unknown,
|
|
223
|
+
) {
|
|
224
|
+
const state = this.#assertPendingWriteForAttributeAndPeer(context, endpoint, cluster, attribute);
|
|
225
|
+
const attributeName = state.attributeNames.get(attribute)!;
|
|
226
|
+
logger.debug(`Writing pending value for attribute ${attributeName}, ${attribute} in atomic write`, value);
|
|
227
|
+
// TODO currently we only handle this one changing, so checking other state within the event potentially use
|
|
228
|
+
// older values. We need to tweak the state for a complete solution. But ok for now!
|
|
229
|
+
endpoint
|
|
230
|
+
.eventsOf(cluster.id)
|
|
231
|
+
[
|
|
232
|
+
`${attributeName}$AtomicChanging`
|
|
233
|
+
]?.emit(value, state.pendingAttributeValues[attribute] !== undefined ? state.pendingAttributeValues[attribute] : state.initialValues[attribute], context);
|
|
234
|
+
state.pendingAttributeValues[attribute] = value;
|
|
235
|
+
logger.debug("Atomic write state after current write:", state);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
/**
|
|
239
|
+
* Implements the commit logic for an atomic write.
|
|
240
|
+
*/
|
|
241
|
+
async commitWrite<B extends Behavior.Type>(
|
|
242
|
+
request: Thermostat.AtomicRequest,
|
|
243
|
+
context: ActionContext,
|
|
244
|
+
endpoint: Endpoint,
|
|
245
|
+
cluster: B,
|
|
246
|
+
clusterState: ClusterState.Type<any, B>,
|
|
247
|
+
): Promise<Thermostat.AtomicResponse> {
|
|
248
|
+
const state = this.#initializeState(request, context, endpoint, cluster);
|
|
249
|
+
|
|
250
|
+
let commandStatusCode = Status.Success;
|
|
251
|
+
const attributeStatus = [];
|
|
252
|
+
for (const [attr, value] of Object.entries(state.pendingAttributeValues)) {
|
|
253
|
+
let statusCode = Status.Success;
|
|
254
|
+
try {
|
|
255
|
+
const attributeName = state.attributeNames.get(AttributeId(Number(attr)))!;
|
|
256
|
+
endpoint
|
|
257
|
+
.eventsOf(cluster.id)
|
|
258
|
+
[`${attributeName}$AtomicChanging`]?.emit(value, endpoint.stateOf(cluster.id)[attr], context);
|
|
259
|
+
endpoint
|
|
260
|
+
.eventsOf(cluster.id)
|
|
261
|
+
[`${attributeName}$AtomicChanged`]?.emit(value, endpoint.stateOf(cluster.id)[attr], context);
|
|
262
|
+
(clusterState as any)[attr] = value;
|
|
263
|
+
await context.transaction?.commit();
|
|
264
|
+
} catch (error) {
|
|
265
|
+
await context.transaction?.rollback();
|
|
266
|
+
logger.info(`Failed to write attribute ${attr} during atomic write commit: ${error}`);
|
|
267
|
+
statusCode = error instanceof StatusResponseError ? error.code : Status.Failure;
|
|
268
|
+
// If one fails with ConstraintError, the whole command should return ConstraintError, otherwise Failure
|
|
269
|
+
commandStatusCode =
|
|
270
|
+
commandStatusCode === Status.Failure
|
|
271
|
+
? Status.Failure
|
|
272
|
+
: commandStatusCode === Status.ConstraintError
|
|
273
|
+
? Status.ConstraintError
|
|
274
|
+
: Status.Failure;
|
|
275
|
+
}
|
|
276
|
+
attributeStatus.push({
|
|
277
|
+
attributeId: AttributeId(Number(attr)),
|
|
278
|
+
statusCode,
|
|
279
|
+
});
|
|
280
|
+
}
|
|
281
|
+
state.close(); // Irrelevant of the outcome the state is closed
|
|
282
|
+
return {
|
|
283
|
+
statusCode: commandStatusCode,
|
|
284
|
+
attributeStatus,
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
/**
|
|
289
|
+
* Implements the rollback logic for an atomic write.
|
|
290
|
+
*/
|
|
291
|
+
rollbackWrite(
|
|
292
|
+
request: Thermostat.AtomicRequest,
|
|
293
|
+
context: ActionContext,
|
|
294
|
+
endpoint: Endpoint,
|
|
295
|
+
cluster: Behavior.Type,
|
|
296
|
+
): Thermostat.AtomicResponse {
|
|
297
|
+
const state = this.#initializeState(request, context, endpoint, cluster);
|
|
298
|
+
state.close();
|
|
299
|
+
return {
|
|
300
|
+
statusCode: Status.Success,
|
|
301
|
+
attributeStatus: state.attributeRequests.map(attr => ({
|
|
302
|
+
attributeId: attr,
|
|
303
|
+
statusCode: Status.Success,
|
|
304
|
+
})),
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* Handles fabric removal by closing all pending atomic write states for peers on the removed fabric.
|
|
310
|
+
*/
|
|
311
|
+
#handleFabricRemoval(fabric: Fabric) {
|
|
312
|
+
const fabricIndex = fabric.fabricIndex;
|
|
313
|
+
for (const writeState of Array.from(this.#pendingWrites)) {
|
|
314
|
+
if (writeState.peerAddress.fabricIndex === fabricIndex) {
|
|
315
|
+
logger.debug(
|
|
316
|
+
`Closing atomic write state for peer ${writeState.peerAddress.toString()} on endpoint ${writeState.endpoint.id} due to fabric removal`,
|
|
317
|
+
);
|
|
318
|
+
writeState.close();
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* Returns the pending write state for the given attribute, if any.
|
|
325
|
+
*/
|
|
326
|
+
#pendingWriteStateForAttribute(endpoint: Endpoint, cluster: Behavior.Type, attribute: AttributeId) {
|
|
327
|
+
const writeStates = this.#pendingWrites.filter(
|
|
328
|
+
s => s.endpoint.number == endpoint.number && s.clusterId === (cluster as ClusterBehavior.Type).cluster.id,
|
|
329
|
+
);
|
|
330
|
+
if (writeStates.length === 0) {
|
|
331
|
+
return undefined;
|
|
332
|
+
}
|
|
333
|
+
const attrWriteStates = writeStates.filter(({ attributeRequests }) => attributeRequests.includes(attribute));
|
|
334
|
+
if (attrWriteStates.length === 0) {
|
|
335
|
+
return undefined;
|
|
336
|
+
}
|
|
337
|
+
if (attrWriteStates.length > 1) {
|
|
338
|
+
throw new InternalError("Multiple atomic write states found for the same attribute. Should never happen");
|
|
339
|
+
}
|
|
340
|
+
return attrWriteStates[0];
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
/**
|
|
344
|
+
* Returns the pending value for the given attribute and peer, if any.
|
|
345
|
+
*/
|
|
346
|
+
pendingValueForAttributeAndPeer(
|
|
347
|
+
context: ValueSupervisor.Session,
|
|
348
|
+
endpoint: Endpoint,
|
|
349
|
+
cluster: Behavior.Type,
|
|
350
|
+
attribute: AttributeId,
|
|
351
|
+
) {
|
|
352
|
+
const peerAddress = this.#derivePeerAddress(context);
|
|
353
|
+
if (peerAddress === undefined) {
|
|
354
|
+
// No valid peer address could be derived from the session
|
|
355
|
+
return undefined;
|
|
356
|
+
}
|
|
357
|
+
const attrWriteState = this.#pendingWriteStateForAttribute(endpoint, cluster, attribute);
|
|
358
|
+
if (attrWriteState === undefined) {
|
|
359
|
+
// No pending write for this attribute
|
|
360
|
+
return undefined;
|
|
361
|
+
}
|
|
362
|
+
if (!PeerAddress.is(attrWriteState.peerAddress, peerAddress)) {
|
|
363
|
+
// Pending state s for an other peer
|
|
364
|
+
return undefined;
|
|
365
|
+
}
|
|
366
|
+
logger.debug(
|
|
367
|
+
`Found pending value for attribute ${attribute} for peer ${peerAddress.nodeId}`,
|
|
368
|
+
serialize(attrWriteState.pendingAttributeValues[attribute]),
|
|
369
|
+
);
|
|
370
|
+
return attrWriteState.pendingAttributeValues[attribute];
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
#assertPendingWriteForAttributeAndPeer(
|
|
374
|
+
session: ValueSupervisor.Session,
|
|
375
|
+
endpoint: Endpoint,
|
|
376
|
+
cluster: Behavior.Type,
|
|
377
|
+
attribute: AttributeId,
|
|
378
|
+
) {
|
|
379
|
+
const attrWriteState = this.#pendingWriteStateForAttribute(endpoint, cluster, attribute);
|
|
380
|
+
if (attrWriteState === undefined) {
|
|
381
|
+
throw new StatusResponse.InvalidInStateError("There is no atomic write in progress for this attribute");
|
|
382
|
+
}
|
|
383
|
+
const peerAddress = this.#derivePeerAddress(session);
|
|
384
|
+
if (peerAddress === undefined) {
|
|
385
|
+
throw new StatusResponse.InvalidInStateError("There is no atomic write in progress for this peer");
|
|
386
|
+
}
|
|
387
|
+
if (!PeerAddress.is(attrWriteState.peerAddress, peerAddress)) {
|
|
388
|
+
throw new StatusResponse.BusyError("Attribute is part of an atomic write in progress for a different peer");
|
|
389
|
+
}
|
|
390
|
+
return attrWriteState;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
#derivePeerAddress(session: ValueSupervisor.Session) {
|
|
394
|
+
if (
|
|
395
|
+
hasRemoteActor(session) &&
|
|
396
|
+
Subject.isNode(session.subject) &&
|
|
397
|
+
NodeId.isOperationalNodeId(session.subject.id)
|
|
398
|
+
) {
|
|
399
|
+
return PeerAddress({ fabricIndex: session.fabric, nodeId: NodeId(session.subject.id) });
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
#assertValidPeer(context: ActionContext) {
|
|
404
|
+
assertRemoteActor(context); // Also validate that we have a remote actor for processing the command
|
|
405
|
+
|
|
406
|
+
const peerAddress = this.#derivePeerAddress(context);
|
|
407
|
+
if (!context.session.associatedFabric || peerAddress === undefined) {
|
|
408
|
+
throw new StatusResponse.InvalidCommandError("AtomicRequest requires an operational session");
|
|
409
|
+
}
|
|
410
|
+
return peerAddress;
|
|
411
|
+
}
|
|
412
|
+
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2025 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { Thermostat } from "#clusters/thermostat";
|
|
8
|
+
import { Endpoint } from "#endpoint/Endpoint.js";
|
|
9
|
+
import { Diagnostic, Logger, Millis, Observable, Seconds, Time, Timer, toHex } from "#general";
|
|
10
|
+
import { PeerAddress, Val } from "#protocol";
|
|
11
|
+
import { AttributeId, ClusterId } from "#types";
|
|
12
|
+
|
|
13
|
+
const logger = Logger.get("AtomicWriteState");
|
|
14
|
+
|
|
15
|
+
/** SDK uses 3s for Presets and 9s for Schedules, so just use 9s in general */
|
|
16
|
+
const MAXIMUM_ALLOWED_TIMEOUT = Seconds(9);
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Represents the state of an ongoing atomic write operation.
|
|
20
|
+
*
|
|
21
|
+
* TODO: Move out of thermostat behavior into a more generic behavior handler once used by other clusters too. Then we
|
|
22
|
+
* also need to adjust how it is handled.
|
|
23
|
+
*/
|
|
24
|
+
export class AtomicWriteState {
|
|
25
|
+
readonly peerAddress: PeerAddress;
|
|
26
|
+
readonly endpoint: Endpoint;
|
|
27
|
+
readonly clusterId: ClusterId;
|
|
28
|
+
readonly attributeRequests: Thermostat.AtomicRequest["attributeRequests"];
|
|
29
|
+
readonly attributeNames: Map<AttributeId, string> = new Map();
|
|
30
|
+
readonly pendingAttributeValues: Val.Struct = {};
|
|
31
|
+
readonly timeout: number;
|
|
32
|
+
readonly initialValues: Val.Struct;
|
|
33
|
+
readonly closed = Observable<[void]>();
|
|
34
|
+
#timer: Timer;
|
|
35
|
+
|
|
36
|
+
constructor(
|
|
37
|
+
peerAddress: PeerAddress,
|
|
38
|
+
endpoint: Endpoint,
|
|
39
|
+
cluster: ClusterId,
|
|
40
|
+
attributeRequests: Thermostat.AtomicRequest["attributeRequests"],
|
|
41
|
+
timeout: number,
|
|
42
|
+
attributeNames: Map<AttributeId, string>,
|
|
43
|
+
initialValues: Val.Struct,
|
|
44
|
+
) {
|
|
45
|
+
this.peerAddress = peerAddress;
|
|
46
|
+
this.endpoint = endpoint;
|
|
47
|
+
this.clusterId = cluster;
|
|
48
|
+
this.attributeRequests = attributeRequests;
|
|
49
|
+
this.timeout = Math.min(timeout, MAXIMUM_ALLOWED_TIMEOUT);
|
|
50
|
+
this.attributeNames = attributeNames;
|
|
51
|
+
this.initialValues = initialValues;
|
|
52
|
+
|
|
53
|
+
this.#timer = Time.getTimer("AtomicWriteState Timeout", Millis(this.timeout), () => this.#timeoutTriggered());
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
get [Diagnostic.value]() {
|
|
57
|
+
return Diagnostic.dict({
|
|
58
|
+
peerAddress: this.peerAddress.toString(),
|
|
59
|
+
endpointId: this.endpoint.id,
|
|
60
|
+
clusterId: toHex(this.clusterId),
|
|
61
|
+
attributeRequests: this.attributeRequests,
|
|
62
|
+
timeout: this.timeout,
|
|
63
|
+
initialValues: this.initialValues,
|
|
64
|
+
pendingAttributeValues: this.pendingAttributeValues,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
start() {
|
|
69
|
+
logger.debug(
|
|
70
|
+
`Starting atomic write state for peer ${this.peerAddress.toString()} on endpoint ${this.endpoint.id}`,
|
|
71
|
+
);
|
|
72
|
+
this.#timer.start();
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
#timeoutTriggered() {
|
|
76
|
+
logger.debug(
|
|
77
|
+
`Atomic write state for peer ${this.peerAddress.toString()} on endpoint ${this.endpoint.id} timed out`,
|
|
78
|
+
);
|
|
79
|
+
this.close();
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
close() {
|
|
83
|
+
logger.debug(
|
|
84
|
+
`Closing atomic write state for peer ${this.peerAddress.toString()} on endpoint ${this.endpoint.id}`,
|
|
85
|
+
);
|
|
86
|
+
if (this.#timer.isRunning) {
|
|
87
|
+
this.#timer.stop();
|
|
88
|
+
}
|
|
89
|
+
this.closed.emit();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
@@ -15,6 +15,8 @@ export namespace ThermostatInterface {
|
|
|
15
15
|
* @see {@link MatterSpecification.v141.Cluster} § 4.3.10.1
|
|
16
16
|
*/
|
|
17
17
|
setpointRaiseLower(request: Thermostat.SetpointRaiseLowerRequest): MaybePromise;
|
|
18
|
+
|
|
19
|
+
atomicRequest(request: Thermostat.AtomicRequest): MaybePromise<Thermostat.AtomicResponse>;
|
|
18
20
|
}
|
|
19
21
|
|
|
20
22
|
export interface ScheduleConfiguration {
|