@matter/model 0.13.0-alpha.0-20250318-c1aa38b08 → 0.13.0-alpha.0-20250323-770919c6a
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/aspects/Quality.d.ts +45 -5
- package/dist/cjs/aspects/Quality.d.ts.map +1 -1
- package/dist/cjs/aspects/Quality.js.map +1 -1
- package/dist/cjs/elements/BaseElement.d.ts +14 -5
- package/dist/cjs/elements/BaseElement.d.ts.map +1 -1
- package/dist/cjs/elements/BaseElement.js.map +1 -1
- package/dist/cjs/elements/ValueElement.d.ts +1 -1
- package/dist/cjs/logic/DefaultValue.js +1 -1
- package/dist/cjs/logic/ModelVariantTraversal.d.ts.map +1 -1
- package/dist/cjs/logic/ModelVariantTraversal.js +18 -8
- package/dist/cjs/logic/ModelVariantTraversal.js.map +1 -1
- package/dist/cjs/logic/Scope.d.ts.map +1 -1
- package/dist/cjs/logic/Scope.js +7 -3
- package/dist/cjs/logic/Scope.js.map +1 -1
- package/dist/cjs/models/AttributeModel.d.ts +1 -0
- package/dist/cjs/models/AttributeModel.d.ts.map +1 -1
- package/dist/cjs/models/CommandModel.d.ts +1 -0
- package/dist/cjs/models/CommandModel.d.ts.map +1 -1
- package/dist/cjs/models/EventModel.d.ts +1 -0
- package/dist/cjs/models/EventModel.d.ts.map +1 -1
- package/dist/cjs/models/Model.d.ts +4 -0
- package/dist/cjs/models/Model.d.ts.map +1 -1
- package/dist/cjs/models/Model.js +1 -0
- package/dist/cjs/models/Model.js.map +1 -1
- package/dist/cjs/standard/elements/AccessControl.d.ts.map +1 -1
- package/dist/cjs/standard/elements/AccessControl.js +1 -1
- package/dist/cjs/standard/elements/AccessControl.js.map +1 -1
- package/dist/cjs/standard/elements/Actions.js +1 -1
- package/dist/cjs/standard/elements/AlarmBase.js +4 -4
- package/dist/cjs/standard/elements/ApplicationLauncher.d.ts.map +1 -1
- package/dist/cjs/standard/elements/ApplicationLauncher.js.map +1 -1
- package/dist/cjs/standard/elements/BatteryStorageDT.d.ts.map +1 -1
- package/dist/cjs/standard/elements/BatteryStorageDT.js.map +1 -1
- package/dist/cjs/standard/elements/BridgedDeviceBasicInformation.d.ts.map +1 -1
- package/dist/cjs/standard/elements/ColorControl.d.ts.map +1 -1
- package/dist/cjs/standard/elements/ColorControl.js +38 -42
- package/dist/cjs/standard/elements/ColorControl.js.map +1 -1
- package/dist/cjs/standard/elements/ColorDimmerSwitchDT.d.ts.map +1 -1
- package/dist/cjs/standard/elements/ColorTemperatureLightDT.d.ts.map +1 -1
- package/dist/cjs/standard/elements/CommissionerControl.js +1 -1
- package/dist/cjs/standard/elements/ContentAppObserver.js +1 -1
- package/dist/cjs/standard/elements/ContentLauncher.d.ts.map +1 -1
- package/dist/cjs/standard/elements/ContentLauncher.js.map +1 -1
- package/dist/cjs/standard/elements/DeviceEnergyManagement.d.ts.map +1 -1
- package/dist/cjs/standard/elements/DeviceEnergyManagement.js +1 -1
- package/dist/cjs/standard/elements/DeviceEnergyManagement.js.map +1 -1
- package/dist/cjs/standard/elements/DimmableLightDT.d.ts.map +1 -1
- package/dist/cjs/standard/elements/DimmablePlugInUnitDT.d.ts.map +1 -1
- package/dist/cjs/standard/elements/DimmerSwitchDT.d.ts.map +1 -1
- package/dist/cjs/standard/elements/DoorLock.d.ts.map +1 -1
- package/dist/cjs/standard/elements/DoorLock.js +29 -14
- package/dist/cjs/standard/elements/DoorLock.js.map +1 -1
- package/dist/cjs/standard/elements/EcosystemInformation.d.ts.map +1 -1
- package/dist/cjs/standard/elements/EcosystemInformation.js +36 -1
- package/dist/cjs/standard/elements/EcosystemInformation.js.map +2 -2
- package/dist/cjs/standard/elements/EnergyEvse.d.ts.map +1 -1
- package/dist/cjs/standard/elements/EnergyEvse.js +1 -1
- package/dist/cjs/standard/elements/EnergyEvse.js.map +1 -1
- package/dist/cjs/standard/elements/EthernetNetworkDiagnostics.d.ts.map +1 -1
- package/dist/cjs/standard/elements/EthernetNetworkDiagnostics.js.map +1 -1
- package/dist/cjs/standard/elements/ExtendedColorLightDT.d.ts.map +1 -1
- package/dist/cjs/standard/elements/FixedLabel.d.ts.map +1 -1
- package/dist/cjs/standard/elements/FixedLabel.js +1 -1
- package/dist/cjs/standard/elements/FixedLabel.js.map +1 -1
- package/dist/cjs/standard/elements/GeneralCommissioning.d.ts.map +1 -1
- package/dist/cjs/standard/elements/GeneralCommissioning.js +7 -7
- package/dist/cjs/standard/elements/GeneralCommissioning.js.map +1 -1
- package/dist/cjs/standard/elements/GeneralDiagnostics.d.ts.map +1 -1
- package/dist/cjs/standard/elements/GeneralDiagnostics.js.map +1 -1
- package/dist/cjs/standard/elements/GroupKeyManagement.d.ts.map +1 -1
- package/dist/cjs/standard/elements/GroupKeyManagement.js +2 -3
- package/dist/cjs/standard/elements/GroupKeyManagement.js.map +1 -1
- package/dist/cjs/standard/elements/Groups.d.ts.map +1 -1
- package/dist/cjs/standard/elements/Groups.js.map +1 -1
- package/dist/cjs/standard/elements/LevelControl.d.ts.map +1 -1
- package/dist/cjs/standard/elements/LevelControl.js +8 -8
- package/dist/cjs/standard/elements/LevelControl.js.map +1 -1
- package/dist/cjs/standard/elements/MediaPlayback.d.ts.map +1 -1
- package/dist/cjs/standard/elements/MediaPlayback.js +1 -1
- package/dist/cjs/standard/elements/MediaPlayback.js.map +1 -1
- package/dist/cjs/standard/elements/ModeBase.js +1 -1
- package/dist/cjs/standard/elements/MountedDimmableLoadControlDT.d.ts.map +1 -1
- package/dist/cjs/standard/elements/MountedOnOffControlDT.d.ts.map +1 -1
- package/dist/cjs/standard/elements/NetworkCommissioning.d.ts.map +1 -1
- package/dist/cjs/standard/elements/NetworkCommissioning.js +2 -2
- package/dist/cjs/standard/elements/NetworkCommissioning.js.map +1 -1
- package/dist/cjs/standard/elements/NetworkInfrastructureManagerDT.d.ts.map +1 -1
- package/dist/cjs/standard/elements/OnOff.js +1 -1
- package/dist/cjs/standard/elements/OnOffPlugInUnitDT.d.ts.map +1 -1
- package/dist/cjs/standard/elements/OperationalCredentials.d.ts.map +1 -1
- package/dist/cjs/standard/elements/OperationalCredentials.js +3 -3
- package/dist/cjs/standard/elements/OperationalCredentials.js.map +1 -1
- package/dist/cjs/standard/elements/OperationalState.js +1 -1
- package/dist/cjs/standard/elements/OtaSoftwareUpdateProvider.js +6 -6
- package/dist/cjs/standard/elements/OtaSoftwareUpdateRequestor.d.ts.map +1 -1
- package/dist/cjs/standard/elements/OtaSoftwareUpdateRequestor.js.map +1 -1
- package/dist/cjs/standard/elements/OvenCavityOperationalState.d.ts.map +1 -1
- package/dist/cjs/standard/elements/PowerSource.d.ts.map +1 -1
- package/dist/cjs/standard/elements/PowerSource.js.map +1 -1
- package/dist/cjs/standard/elements/PumpConfigurationAndControl.d.ts.map +1 -1
- package/dist/cjs/standard/elements/PumpConfigurationAndControl.js.map +1 -1
- package/dist/cjs/standard/elements/PumpDT.d.ts.map +1 -1
- package/dist/cjs/standard/elements/RefrigeratorAndTemperatureControlledCabinetMode.d.ts.map +1 -1
- package/dist/cjs/standard/elements/ScenesManagement.js +3 -3
- package/dist/cjs/standard/elements/ScenesManagement.js.map +1 -1
- package/dist/cjs/standard/elements/ServiceArea.js +4 -3
- package/dist/cjs/standard/elements/ServiceArea.js.map +1 -1
- package/dist/cjs/standard/elements/SmokeCoAlarm.d.ts.map +1 -1
- package/dist/cjs/standard/elements/SmokeCoAlarm.js.map +1 -1
- package/dist/cjs/standard/elements/Switch.js +2 -2
- package/dist/cjs/standard/elements/Thermostat.d.ts.map +1 -1
- package/dist/cjs/standard/elements/Thermostat.js +13 -8
- package/dist/cjs/standard/elements/Thermostat.js.map +1 -1
- package/dist/cjs/standard/elements/ThreadNetworkDiagnostics.d.ts.map +1 -1
- package/dist/cjs/standard/elements/ThreadNetworkDiagnostics.js.map +1 -1
- package/dist/cjs/standard/elements/TimeFormatLocalization.d.ts.map +1 -1
- package/dist/cjs/standard/elements/TimeFormatLocalization.js.map +1 -1
- package/dist/cjs/standard/elements/TimeSynchronization.d.ts.map +1 -1
- package/dist/cjs/standard/elements/TimeSynchronization.js.map +1 -1
- package/dist/cjs/standard/elements/ValveConfigurationAndControl.d.ts.map +1 -1
- package/dist/cjs/standard/elements/ValveConfigurationAndControl.js.map +1 -1
- package/dist/cjs/standard/elements/WaterValveDT.d.ts.map +1 -1
- package/dist/cjs/standard/elements/WiFiNetworkManagement.d.ts.map +1 -1
- package/dist/cjs/standard/elements/WiFiNetworkManagement.js +12 -8
- package/dist/cjs/standard/elements/WiFiNetworkManagement.js.map +2 -2
- package/dist/cjs/standard/elements/WildcardPathFlagsBitmap.js +1 -1
- package/dist/cjs/standard/elements/WildcardPathFlagsBitmap.js.map +1 -1
- package/dist/cjs/standard/elements/enum16.d.ts.map +1 -1
- package/dist/cjs/standard/elements/enum8.d.ts.map +1 -1
- package/dist/cjs/standard/elements/epoch-us.js +1 -1
- package/dist/cjs/standard/elements/ipv6pre.js +1 -1
- package/dist/cjs/standard/elements/namespace.d.ts.map +1 -1
- package/dist/cjs/standard/elements/struct.js +1 -1
- package/dist/esm/aspects/Quality.d.ts +45 -5
- package/dist/esm/aspects/Quality.d.ts.map +1 -1
- package/dist/esm/aspects/Quality.js.map +1 -1
- package/dist/esm/elements/BaseElement.d.ts +14 -5
- package/dist/esm/elements/BaseElement.d.ts.map +1 -1
- package/dist/esm/elements/BaseElement.js.map +1 -1
- package/dist/esm/elements/ValueElement.d.ts +1 -1
- package/dist/esm/logic/DefaultValue.js +1 -1
- package/dist/esm/logic/ModelVariantTraversal.d.ts.map +1 -1
- package/dist/esm/logic/ModelVariantTraversal.js +18 -8
- package/dist/esm/logic/ModelVariantTraversal.js.map +1 -1
- package/dist/esm/logic/Scope.d.ts.map +1 -1
- package/dist/esm/logic/Scope.js +7 -3
- package/dist/esm/logic/Scope.js.map +1 -1
- package/dist/esm/models/AttributeModel.d.ts +1 -0
- package/dist/esm/models/AttributeModel.d.ts.map +1 -1
- package/dist/esm/models/CommandModel.d.ts +1 -0
- package/dist/esm/models/CommandModel.d.ts.map +1 -1
- package/dist/esm/models/EventModel.d.ts +1 -0
- package/dist/esm/models/EventModel.d.ts.map +1 -1
- package/dist/esm/models/Model.d.ts +4 -0
- package/dist/esm/models/Model.d.ts.map +1 -1
- package/dist/esm/models/Model.js +1 -0
- package/dist/esm/models/Model.js.map +1 -1
- package/dist/esm/standard/elements/AccessControl.d.ts.map +1 -1
- package/dist/esm/standard/elements/AccessControl.js +1 -1
- package/dist/esm/standard/elements/AccessControl.js.map +1 -1
- package/dist/esm/standard/elements/Actions.js +1 -1
- package/dist/esm/standard/elements/AlarmBase.js +4 -4
- package/dist/esm/standard/elements/ApplicationLauncher.d.ts.map +1 -1
- package/dist/esm/standard/elements/ApplicationLauncher.js.map +1 -1
- package/dist/esm/standard/elements/BatteryStorageDT.d.ts.map +1 -1
- package/dist/esm/standard/elements/BatteryStorageDT.js.map +1 -1
- package/dist/esm/standard/elements/BridgedDeviceBasicInformation.d.ts.map +1 -1
- package/dist/esm/standard/elements/ColorControl.d.ts.map +1 -1
- package/dist/esm/standard/elements/ColorControl.js +38 -42
- package/dist/esm/standard/elements/ColorControl.js.map +1 -1
- package/dist/esm/standard/elements/ColorDimmerSwitchDT.d.ts.map +1 -1
- package/dist/esm/standard/elements/ColorTemperatureLightDT.d.ts.map +1 -1
- package/dist/esm/standard/elements/CommissionerControl.js +1 -1
- package/dist/esm/standard/elements/ContentAppObserver.js +1 -1
- package/dist/esm/standard/elements/ContentLauncher.d.ts.map +1 -1
- package/dist/esm/standard/elements/ContentLauncher.js.map +1 -1
- package/dist/esm/standard/elements/DeviceEnergyManagement.d.ts.map +1 -1
- package/dist/esm/standard/elements/DeviceEnergyManagement.js +1 -1
- package/dist/esm/standard/elements/DeviceEnergyManagement.js.map +1 -1
- package/dist/esm/standard/elements/DimmableLightDT.d.ts.map +1 -1
- package/dist/esm/standard/elements/DimmablePlugInUnitDT.d.ts.map +1 -1
- package/dist/esm/standard/elements/DimmerSwitchDT.d.ts.map +1 -1
- package/dist/esm/standard/elements/DoorLock.d.ts.map +1 -1
- package/dist/esm/standard/elements/DoorLock.js +29 -14
- package/dist/esm/standard/elements/DoorLock.js.map +1 -1
- package/dist/esm/standard/elements/EcosystemInformation.d.ts.map +1 -1
- package/dist/esm/standard/elements/EcosystemInformation.js +38 -3
- package/dist/esm/standard/elements/EcosystemInformation.js.map +1 -1
- package/dist/esm/standard/elements/EnergyEvse.d.ts.map +1 -1
- package/dist/esm/standard/elements/EnergyEvse.js +1 -1
- package/dist/esm/standard/elements/EnergyEvse.js.map +1 -1
- package/dist/esm/standard/elements/EthernetNetworkDiagnostics.d.ts.map +1 -1
- package/dist/esm/standard/elements/EthernetNetworkDiagnostics.js.map +1 -1
- package/dist/esm/standard/elements/ExtendedColorLightDT.d.ts.map +1 -1
- package/dist/esm/standard/elements/FixedLabel.d.ts.map +1 -1
- package/dist/esm/standard/elements/FixedLabel.js +1 -1
- package/dist/esm/standard/elements/FixedLabel.js.map +1 -1
- package/dist/esm/standard/elements/GeneralCommissioning.d.ts.map +1 -1
- package/dist/esm/standard/elements/GeneralCommissioning.js +7 -7
- package/dist/esm/standard/elements/GeneralCommissioning.js.map +1 -1
- package/dist/esm/standard/elements/GeneralDiagnostics.d.ts.map +1 -1
- package/dist/esm/standard/elements/GeneralDiagnostics.js.map +1 -1
- package/dist/esm/standard/elements/GroupKeyManagement.d.ts.map +1 -1
- package/dist/esm/standard/elements/GroupKeyManagement.js +2 -3
- package/dist/esm/standard/elements/GroupKeyManagement.js.map +1 -1
- package/dist/esm/standard/elements/Groups.d.ts.map +1 -1
- package/dist/esm/standard/elements/Groups.js.map +1 -1
- package/dist/esm/standard/elements/LevelControl.d.ts.map +1 -1
- package/dist/esm/standard/elements/LevelControl.js +8 -8
- package/dist/esm/standard/elements/LevelControl.js.map +1 -1
- package/dist/esm/standard/elements/MediaPlayback.d.ts.map +1 -1
- package/dist/esm/standard/elements/MediaPlayback.js +1 -1
- package/dist/esm/standard/elements/MediaPlayback.js.map +1 -1
- package/dist/esm/standard/elements/ModeBase.js +1 -1
- package/dist/esm/standard/elements/MountedDimmableLoadControlDT.d.ts.map +1 -1
- package/dist/esm/standard/elements/MountedOnOffControlDT.d.ts.map +1 -1
- package/dist/esm/standard/elements/NetworkCommissioning.d.ts.map +1 -1
- package/dist/esm/standard/elements/NetworkCommissioning.js +2 -2
- package/dist/esm/standard/elements/NetworkCommissioning.js.map +1 -1
- package/dist/esm/standard/elements/NetworkInfrastructureManagerDT.d.ts.map +1 -1
- package/dist/esm/standard/elements/OnOff.js +1 -1
- package/dist/esm/standard/elements/OnOffPlugInUnitDT.d.ts.map +1 -1
- package/dist/esm/standard/elements/OperationalCredentials.d.ts.map +1 -1
- package/dist/esm/standard/elements/OperationalCredentials.js +3 -3
- package/dist/esm/standard/elements/OperationalCredentials.js.map +1 -1
- package/dist/esm/standard/elements/OperationalState.js +1 -1
- package/dist/esm/standard/elements/OtaSoftwareUpdateProvider.js +6 -6
- package/dist/esm/standard/elements/OtaSoftwareUpdateRequestor.d.ts.map +1 -1
- package/dist/esm/standard/elements/OtaSoftwareUpdateRequestor.js.map +1 -1
- package/dist/esm/standard/elements/OvenCavityOperationalState.d.ts.map +1 -1
- package/dist/esm/standard/elements/PowerSource.d.ts.map +1 -1
- package/dist/esm/standard/elements/PowerSource.js.map +1 -1
- package/dist/esm/standard/elements/PumpConfigurationAndControl.d.ts.map +1 -1
- package/dist/esm/standard/elements/PumpConfigurationAndControl.js.map +1 -1
- package/dist/esm/standard/elements/PumpDT.d.ts.map +1 -1
- package/dist/esm/standard/elements/RefrigeratorAndTemperatureControlledCabinetMode.d.ts.map +1 -1
- package/dist/esm/standard/elements/ScenesManagement.js +3 -3
- package/dist/esm/standard/elements/ScenesManagement.js.map +1 -1
- package/dist/esm/standard/elements/ServiceArea.js +4 -3
- package/dist/esm/standard/elements/ServiceArea.js.map +1 -1
- package/dist/esm/standard/elements/SmokeCoAlarm.d.ts.map +1 -1
- package/dist/esm/standard/elements/SmokeCoAlarm.js.map +1 -1
- package/dist/esm/standard/elements/Switch.js +2 -2
- package/dist/esm/standard/elements/Thermostat.d.ts.map +1 -1
- package/dist/esm/standard/elements/Thermostat.js +13 -8
- package/dist/esm/standard/elements/Thermostat.js.map +1 -1
- package/dist/esm/standard/elements/ThreadNetworkDiagnostics.d.ts.map +1 -1
- package/dist/esm/standard/elements/ThreadNetworkDiagnostics.js.map +1 -1
- package/dist/esm/standard/elements/TimeFormatLocalization.d.ts.map +1 -1
- package/dist/esm/standard/elements/TimeFormatLocalization.js.map +1 -1
- package/dist/esm/standard/elements/TimeSynchronization.d.ts.map +1 -1
- package/dist/esm/standard/elements/TimeSynchronization.js.map +1 -1
- package/dist/esm/standard/elements/ValveConfigurationAndControl.d.ts.map +1 -1
- package/dist/esm/standard/elements/ValveConfigurationAndControl.js.map +1 -1
- package/dist/esm/standard/elements/WaterValveDT.d.ts.map +1 -1
- package/dist/esm/standard/elements/WiFiNetworkManagement.d.ts.map +1 -1
- package/dist/esm/standard/elements/WiFiNetworkManagement.js +14 -9
- package/dist/esm/standard/elements/WiFiNetworkManagement.js.map +1 -1
- package/dist/esm/standard/elements/WildcardPathFlagsBitmap.js +1 -1
- package/dist/esm/standard/elements/WildcardPathFlagsBitmap.js.map +1 -1
- package/dist/esm/standard/elements/enum16.d.ts.map +1 -1
- package/dist/esm/standard/elements/enum8.d.ts.map +1 -1
- package/dist/esm/standard/elements/epoch-us.js +1 -1
- package/dist/esm/standard/elements/ipv6pre.js +1 -1
- package/dist/esm/standard/elements/namespace.d.ts.map +1 -1
- package/dist/esm/standard/elements/struct.js +1 -1
- package/package.json +4 -4
- package/src/aspects/Quality.ts +56 -5
- package/src/elements/BaseElement.ts +16 -5
- package/src/elements/ValueElement.ts +1 -1
- package/src/logic/DefaultValue.ts +1 -1
- package/src/logic/ModelVariantTraversal.ts +22 -8
- package/src/logic/Scope.ts +7 -3
- package/src/models/Model.ts +4 -0
- package/src/standard/elements/AcceptedCommandList.ts +2 -2
- package/src/standard/elements/AccessControl.ts +71 -73
- package/src/standard/elements/AccountLogin.ts +11 -11
- package/src/standard/elements/Actions.ts +36 -36
- package/src/standard/elements/AdministratorCommissioning.ts +21 -21
- package/src/standard/elements/AggregatorDT.ts +2 -2
- package/src/standard/elements/AlarmBase.ts +18 -18
- package/src/standard/elements/ApplicationBasic.ts +7 -7
- package/src/standard/elements/ApplicationLauncher.ts +6 -7
- package/src/standard/elements/AudioOutput.ts +4 -4
- package/src/standard/elements/BallastConfiguration.ts +6 -6
- package/src/standard/elements/BasicInformation.ts +43 -43
- package/src/standard/elements/BasicVideoPlayerDT.ts +3 -3
- package/src/standard/elements/BatteryStorageDT.ts +2 -5
- package/src/standard/elements/Binding.ts +3 -3
- package/src/standard/elements/BooleanStateConfiguration.ts +4 -4
- package/src/standard/elements/BridgedDeviceBasicInformation.ts +22 -22
- package/src/standard/elements/CastingVideoClientDT.ts +2 -2
- package/src/standard/elements/Channel.ts +32 -32
- package/src/standard/elements/ColorControl.ts +92 -93
- package/src/standard/elements/ColorDimmerSwitchDT.ts +1 -1
- package/src/standard/elements/ColorTemperatureLightDT.ts +1 -1
- package/src/standard/elements/CommissionerControl.ts +16 -16
- package/src/standard/elements/ContentAppObserver.ts +7 -7
- package/src/standard/elements/ContentControl.ts +39 -39
- package/src/standard/elements/ContentLauncher.ts +38 -40
- package/src/standard/elements/DeviceEnergyManagement.ts +108 -111
- package/src/standard/elements/DeviceEnergyManagementMode.ts +4 -4
- package/src/standard/elements/DiagnosticLogs.ts +24 -24
- package/src/standard/elements/DimmableLightDT.ts +1 -1
- package/src/standard/elements/DimmablePlugInUnitDT.ts +4 -4
- package/src/standard/elements/DimmerSwitchDT.ts +3 -3
- package/src/standard/elements/DishwasherMode.ts +2 -2
- package/src/standard/elements/DoorLock.ts +164 -154
- package/src/standard/elements/DoorLockDT.ts +2 -2
- package/src/standard/elements/EcosystemInformation.ts +67 -27
- package/src/standard/elements/ElectricalEnergyMeasurement.ts +18 -18
- package/src/standard/elements/ElectricalMeasurementNS.ts +2 -2
- package/src/standard/elements/ElectricalPowerMeasurement.ts +18 -18
- package/src/standard/elements/EnergyEvse.ts +58 -64
- package/src/standard/elements/EnergyEvseMode.ts +8 -8
- package/src/standard/elements/EthernetNetworkDiagnostics.ts +14 -15
- package/src/standard/elements/ExtendedColorLightDT.ts +3 -3
- package/src/standard/elements/ExtractorHoodDT.ts +2 -2
- package/src/standard/elements/FanControl.ts +14 -14
- package/src/standard/elements/FanDT.ts +2 -2
- package/src/standard/elements/FeatureMap.ts +5 -5
- package/src/standard/elements/FixedLabel.ts +4 -5
- package/src/standard/elements/GeneralCommissioning.ts +79 -80
- package/src/standard/elements/GeneralDiagnostics.ts +17 -18
- package/src/standard/elements/GeneratedCommandList.ts +2 -2
- package/src/standard/elements/GroupKeyManagement.ts +29 -30
- package/src/standard/elements/Groups.ts +13 -14
- package/src/standard/elements/IcdManagement.ts +32 -32
- package/src/standard/elements/Identify.ts +7 -7
- package/src/standard/elements/JointFabricDatastoreCluster.ts +12 -12
- package/src/standard/elements/KeypadInput.ts +9 -9
- package/src/standard/elements/LaundryWasherControls.ts +2 -2
- package/src/standard/elements/LaundryWasherMode.ts +2 -2
- package/src/standard/elements/LevelControl.ts +31 -32
- package/src/standard/elements/LightSensorDT.ts +2 -2
- package/src/standard/elements/LocalizationConfiguration.ts +2 -2
- package/src/standard/elements/MeasurementAccuracyRangeStruct.ts +10 -10
- package/src/standard/elements/MeasurementAccuracyStruct.ts +4 -4
- package/src/standard/elements/MediaPlayback.ts +42 -44
- package/src/standard/elements/Messages.ts +18 -18
- package/src/standard/elements/MicrowaveOvenControl.ts +16 -16
- package/src/standard/elements/ModeBase.ts +21 -21
- package/src/standard/elements/ModeSelect.ts +12 -12
- package/src/standard/elements/MountedDimmableLoadControlDT.ts +4 -4
- package/src/standard/elements/MountedOnOffControlDT.ts +1 -1
- package/src/standard/elements/NetworkCommissioning.ts +68 -69
- package/src/standard/elements/NetworkInfrastructureManagerDT.ts +1 -1
- package/src/standard/elements/OccupancySensing.ts +23 -23
- package/src/standard/elements/OnOff.ts +17 -17
- package/src/standard/elements/OnOffPlugInUnitDT.ts +1 -1
- package/src/standard/elements/OnOffSensorDT.ts +2 -2
- package/src/standard/elements/OperationalCredentials.ts +86 -88
- package/src/standard/elements/OperationalState.ts +31 -31
- package/src/standard/elements/OtaSoftwareUpdateProvider.ts +48 -48
- package/src/standard/elements/OtaSoftwareUpdateRequestor.ts +31 -32
- package/src/standard/elements/OvenCavityOperationalState.ts +1 -1
- package/src/standard/elements/OvenMode.ts +2 -2
- package/src/standard/elements/PositionNS.ts +2 -2
- package/src/standard/elements/PowerSource.ts +37 -38
- package/src/standard/elements/PowerSourceConfiguration.ts +4 -4
- package/src/standard/elements/PowerSourceNS.ts +2 -2
- package/src/standard/elements/ProxyConfiguration.ts +2 -2
- package/src/standard/elements/ProxyDiscovery.ts +5 -5
- package/src/standard/elements/PumpConfigurationAndControl.ts +27 -28
- package/src/standard/elements/PumpDT.ts +1 -1
- package/src/standard/elements/RefrigeratorAlarm.ts +2 -2
- package/src/standard/elements/RefrigeratorAndTemperatureControlledCabinetMode.ts +1 -1
- package/src/standard/elements/RefrigeratorNS.ts +2 -2
- package/src/standard/elements/RelativePositionNS.ts +4 -4
- package/src/standard/elements/ResourceMonitoring.ts +4 -4
- package/src/standard/elements/RoomAirConditionerDT.ts +2 -2
- package/src/standard/elements/RootNodeDT.ts +3 -3
- package/src/standard/elements/RvcOperationalState.ts +4 -4
- package/src/standard/elements/RvcRunMode.ts +6 -6
- package/src/standard/elements/ScenesManagement.ts +34 -34
- package/src/standard/elements/SecondaryNetworkInterfaceDT.ts +2 -2
- package/src/standard/elements/ServiceArea.ts +69 -69
- package/src/standard/elements/SmokeCoAlarm.ts +19 -20
- package/src/standard/elements/SmokeCoAlarmDT.ts +2 -2
- package/src/standard/elements/SoftwareDiagnostics.ts +13 -13
- package/src/standard/elements/SpeakerDT.ts +2 -2
- package/src/standard/elements/Switch.ts +21 -21
- package/src/standard/elements/TemperatureControl.ts +5 -5
- package/src/standard/elements/TemperatureMeasurement.ts +2 -2
- package/src/standard/elements/Thermostat.ts +124 -120
- package/src/standard/elements/ThermostatUserInterfaceConfiguration.ts +6 -6
- package/src/standard/elements/ThreadBorderRouterManagement.ts +10 -10
- package/src/standard/elements/ThreadNetworkDiagnostics.ts +50 -51
- package/src/standard/elements/ThreadNetworkDirectory.ts +11 -11
- package/src/standard/elements/TimeFormatLocalization.ts +6 -7
- package/src/standard/elements/TimeSynchronization.ts +27 -28
- package/src/standard/elements/UnitLocalization.ts +2 -2
- package/src/standard/elements/ValveConfigurationAndControl.ts +9 -10
- package/src/standard/elements/WakeOnLan.ts +11 -11
- package/src/standard/elements/WaterHeaterManagement.ts +17 -17
- package/src/standard/elements/WaterHeaterMode.ts +4 -4
- package/src/standard/elements/WaterValveDT.ts +1 -1
- package/src/standard/elements/WiFiNetworkDiagnostics.ts +13 -13
- package/src/standard/elements/WiFiNetworkManagement.ts +21 -16
- package/src/standard/elements/WildcardPathFlagsBitmap.ts +1 -1
- package/src/standard/elements/WindowCovering.ts +19 -19
- package/src/standard/elements/attrib-id.ts +2 -2
- package/src/standard/elements/enum16.ts +1 -1
- package/src/standard/elements/enum8.ts +1 -1
- package/src/standard/elements/epoch-us.ts +9 -9
- package/src/standard/elements/hwadr.ts +2 -2
- package/src/standard/elements/ipv6pre.ts +3 -3
- package/src/standard/elements/locationdesc.ts +10 -10
- package/src/standard/elements/namespace.ts +1 -1
- package/src/standard/elements/semtag.ts +5 -5
- package/src/standard/elements/string.ts +2 -2
- package/src/standard/elements/struct.ts +9 -9
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matter/model",
|
|
3
|
-
"version": "0.13.0-alpha.0-
|
|
3
|
+
"version": "0.13.0-alpha.0-20250323-770919c6a",
|
|
4
4
|
"description": "Matter data model",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"iot",
|
|
@@ -33,12 +33,12 @@
|
|
|
33
33
|
"embed-examples": "embedme **/README.md"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@matter/general": "0.13.0-alpha.0-
|
|
36
|
+
"@matter/general": "0.13.0-alpha.0-20250323-770919c6a",
|
|
37
37
|
"@noble/curves": "^1.8.1"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
|
-
"@matter/testing": "0.13.0-alpha.0-
|
|
41
|
-
"@matter/tools": "0.13.0-alpha.0-
|
|
40
|
+
"@matter/testing": "0.13.0-alpha.0-20250323-770919c6a",
|
|
41
|
+
"@matter/tools": "0.13.0-alpha.0-20250323-770919c6a"
|
|
42
42
|
},
|
|
43
43
|
"files": [
|
|
44
44
|
"dist/**/*",
|
package/src/aspects/Quality.ts
CHANGED
|
@@ -7,26 +7,77 @@
|
|
|
7
7
|
import { Aspect } from "./Aspect.js";
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
-
* An operational representation of "other quality" as defined by the Matter
|
|
11
|
-
* specification.
|
|
10
|
+
* An operational representation of "other quality" as defined by the Matter specification.
|
|
12
11
|
*
|
|
13
|
-
* "Other qualities" are defined behaviors of data fields and cluster elements
|
|
14
|
-
*
|
|
12
|
+
* "Other qualities" are defined behaviors of data fields and cluster elements that do not involve access or
|
|
13
|
+
* conformance.
|
|
14
|
+
*
|
|
15
|
+
* See {@link MatterSpecification.v14} § 7.7
|
|
15
16
|
*/
|
|
16
17
|
export class Quality extends Aspect<Quality.Definition> implements Quality.Ast {
|
|
18
|
+
/**
|
|
19
|
+
* The value may be null.
|
|
20
|
+
*/
|
|
17
21
|
declare nullable?: boolean;
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* An attribute persists across restarts.
|
|
25
|
+
*
|
|
26
|
+
* Note that Matter designates any configuration as persistent so matter.js persists writable attributes even
|
|
27
|
+
* without this flag.
|
|
28
|
+
*/
|
|
18
29
|
declare nonvolatile?: boolean;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* An attribute never changes unless software revision changes.
|
|
33
|
+
*/
|
|
19
34
|
declare fixed?: boolean;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* An attribute changes rapidly so subscriptions would not be useful. Not available for subscription.
|
|
38
|
+
*/
|
|
20
39
|
declare changesOmitted?: boolean;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* An attribute contributes to a scene.
|
|
43
|
+
*/
|
|
21
44
|
declare scene?: boolean;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* An attribute generates data useful for interval or change reporting.
|
|
48
|
+
*/
|
|
22
49
|
declare reportable?: boolean;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* A cluster only appears once on a node for a given device type.
|
|
53
|
+
*/
|
|
23
54
|
declare singleton?: boolean;
|
|
24
|
-
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* An attribute or event broadcasts a limited number of occurrences for performance reasons.
|
|
58
|
+
*/
|
|
25
59
|
declare quieter?: boolean;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* A command's input or output may be larger than than an IPv6 MTU of 1280 bytes.
|
|
63
|
+
*/
|
|
26
64
|
declare largeMessage?: boolean;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* A cluster provides verbose diagnostics and will be omitted from wildcard expansion.
|
|
68
|
+
*/
|
|
27
69
|
declare diagnostics?: boolean;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Writes to an attribute are legal only in the context of a transaction.
|
|
73
|
+
*/
|
|
28
74
|
declare atomic?: boolean;
|
|
29
75
|
|
|
76
|
+
/**
|
|
77
|
+
* A set of properties disallowed for a device type.
|
|
78
|
+
*/
|
|
79
|
+
declare disallowed?: Quality.AllProperties;
|
|
80
|
+
|
|
30
81
|
/**
|
|
31
82
|
* Initialize from a Quality.All definition or a string conforming to the
|
|
32
83
|
* "other quality" DSL defined in the Matter specification.
|
|
@@ -7,12 +7,10 @@
|
|
|
7
7
|
import { ElementTag, Specification } from "../common/index.js";
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
|
-
* Per the Matter specification, an element is a data construct that supports
|
|
11
|
-
* an instance of data. So, a class.
|
|
10
|
+
* Per the Matter specification, an element is a data construct that supports an instance of data.
|
|
12
11
|
*
|
|
13
|
-
* Elements as defined by this package are a static data structure. Each
|
|
14
|
-
*
|
|
15
|
-
* functionality related to the element.
|
|
12
|
+
* Elements as defined by this package are a static data structure. Each element has a corresponding "Model" that is a
|
|
13
|
+
* proper class with runtime functionality related to the element.
|
|
16
14
|
*/
|
|
17
15
|
export interface BaseElement {
|
|
18
16
|
/**
|
|
@@ -73,6 +71,11 @@ export interface BaseElement {
|
|
|
73
71
|
* The Matter specification revision in which this element was removed.
|
|
74
72
|
*/
|
|
75
73
|
until?: Specification.Revision;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Force match to other elements with the specified name or ID.
|
|
77
|
+
*/
|
|
78
|
+
matchTo?: BaseElement.MatchDirective;
|
|
76
79
|
}
|
|
77
80
|
|
|
78
81
|
export function BaseElement(tag: ElementTag, definition: BaseElement, children: BaseElement[]) {
|
|
@@ -101,4 +104,12 @@ export namespace BaseElement {
|
|
|
101
104
|
export type Properties<T extends BaseElement> = T extends { tag: `${ElementTag}` }
|
|
102
105
|
? Omit<T, "tag"> & Partial<Pick<T, "tag">>
|
|
103
106
|
: T;
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* An explicit ID and/or name that override normal matching heuristics.
|
|
110
|
+
*/
|
|
111
|
+
export interface MatchDirective {
|
|
112
|
+
id?: string | number;
|
|
113
|
+
name?: string;
|
|
114
|
+
}
|
|
104
115
|
}
|
|
@@ -9,7 +9,7 @@ import { ElementTag, FieldValue } from "../common/index.js";
|
|
|
9
9
|
import { BaseElement } from "./BaseElement.js";
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
|
-
* A base element for all
|
|
12
|
+
* A base element for all {@link BaseElement}s that represent data values.
|
|
13
13
|
*/
|
|
14
14
|
export type ValueElement = BaseElement & {
|
|
15
15
|
/**
|
|
@@ -241,7 +241,7 @@ function decodeBitmap(model: ValueModel, value: number | bigint) {
|
|
|
241
241
|
} else if (constraint.min !== undefined) {
|
|
242
242
|
// Bit range
|
|
243
243
|
const fieldBit = 1 << (bit - (constraint.min as number));
|
|
244
|
-
fields.set(definition, ((fields.get(definition) as number) ?? 0)
|
|
244
|
+
fields.set(definition, ((fields.get(definition) as number) ?? 0) | fieldBit);
|
|
245
245
|
}
|
|
246
246
|
}
|
|
247
247
|
|
|
@@ -328,8 +328,24 @@ export abstract class ModelVariantTraversal<S = void> {
|
|
|
328
328
|
const mapping =
|
|
329
329
|
mappings[child.tag] || (mappings[child.tag] = { slots: [], idToSlot: {}, nameToSlot: {} });
|
|
330
330
|
|
|
331
|
-
|
|
332
|
-
let nameKey
|
|
331
|
+
let idKey: string | undefined;
|
|
332
|
+
let nameKey: string | undefined;
|
|
333
|
+
|
|
334
|
+
// Determine matching keys. These are based on ID and/or name unless explicitly overridden
|
|
335
|
+
if (child.matchTo !== undefined) {
|
|
336
|
+
const { id, name } = child.matchTo;
|
|
337
|
+
|
|
338
|
+
if (id !== undefined) {
|
|
339
|
+
idKey = id.toString();
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
if (name !== undefined) {
|
|
343
|
+
nameKey = name.toString();
|
|
344
|
+
}
|
|
345
|
+
} else {
|
|
346
|
+
idKey = child.key;
|
|
347
|
+
nameKey = this.getCanonicalName(child) as string | undefined;
|
|
348
|
+
}
|
|
333
349
|
|
|
334
350
|
if (child.discriminator !== undefined) {
|
|
335
351
|
nameKey = `${nameKey}␜${child.discriminator}`;
|
|
@@ -343,7 +359,7 @@ export abstract class ModelVariantTraversal<S = void> {
|
|
|
343
359
|
}
|
|
344
360
|
|
|
345
361
|
// Find existing slot by name
|
|
346
|
-
if (slot === undefined) {
|
|
362
|
+
if (slot === undefined && nameKey !== undefined) {
|
|
347
363
|
slot = mapping.nameToSlot[nameKey];
|
|
348
364
|
}
|
|
349
365
|
|
|
@@ -354,14 +370,12 @@ export abstract class ModelVariantTraversal<S = void> {
|
|
|
354
370
|
}
|
|
355
371
|
|
|
356
372
|
// Map the child's ID to the slot
|
|
357
|
-
if (idKey !== undefined) {
|
|
358
|
-
|
|
359
|
-
mapping.idToSlot[idKey] = slot;
|
|
360
|
-
}
|
|
373
|
+
if (idKey !== undefined && mapping.idToSlot[idKey] === undefined) {
|
|
374
|
+
mapping.idToSlot[idKey] = slot;
|
|
361
375
|
}
|
|
362
376
|
|
|
363
377
|
// Map the child's name to the slot
|
|
364
|
-
if (mapping.nameToSlot[nameKey] === undefined) {
|
|
378
|
+
if (nameKey !== undefined && mapping.nameToSlot[nameKey] === undefined) {
|
|
365
379
|
mapping.nameToSlot[nameKey] = slot;
|
|
366
380
|
}
|
|
367
381
|
|
package/src/logic/Scope.ts
CHANGED
|
@@ -148,10 +148,14 @@ export function Scope(subject: Model, options: Scope.ScopeOptions = {}) {
|
|
|
148
148
|
};
|
|
149
149
|
|
|
150
150
|
function membersOf<T extends Model>(parent: T, options: Scope.MemberOptions = {}) {
|
|
151
|
-
const { conformance: conformanceMode
|
|
152
|
-
|
|
151
|
+
const { conformance: conformanceMode } = options;
|
|
152
|
+
let { tags = DEFAULT_TAGS } = options;
|
|
153
|
+
if (Array.isArray(tags)) {
|
|
154
|
+
tags = new Set(tags);
|
|
155
|
+
}
|
|
156
|
+
const allMembers = findAllMembers(parent, tags, result);
|
|
153
157
|
|
|
154
|
-
if (parent.tag === ElementTag.Cluster) {
|
|
158
|
+
if (parent.tag === ElementTag.Cluster && tags.has(ElementTag.Attribute)) {
|
|
155
159
|
injectGlobalAttributes(owner, allMembers);
|
|
156
160
|
}
|
|
157
161
|
|
package/src/models/Model.ts
CHANGED
|
@@ -32,6 +32,10 @@ export abstract class Model<T extends BaseElement = BaseElement> {
|
|
|
32
32
|
errors?: DefinitionError[];
|
|
33
33
|
asOf?: Specification.Revision;
|
|
34
34
|
until?: Specification.Revision;
|
|
35
|
+
matchTo?: {
|
|
36
|
+
id?: string | number;
|
|
37
|
+
name?: string;
|
|
38
|
+
};
|
|
35
39
|
declare id?: number;
|
|
36
40
|
declare name: string;
|
|
37
41
|
|
|
@@ -26,8 +26,8 @@ export const AcceptedCommandList = Attribute(
|
|
|
26
26
|
"\n" +
|
|
27
27
|
"response command shall be indicated in the GeneratedCommandList attribute." +
|
|
28
28
|
"\n" +
|
|
29
|
-
"If any attribute on a server supports atomic writes, this attribute shall contain the command ID " +
|
|
30
|
-
"
|
|
29
|
+
"If any attribute on a server supports atomic writes, this attribute shall contain the command ID for " +
|
|
30
|
+
"AtomicRequest.",
|
|
31
31
|
|
|
32
32
|
xref: { document: "core", section: "7.13.4" }
|
|
33
33
|
},
|
|
@@ -26,8 +26,8 @@ export const AccessControl = Cluster(
|
|
|
26
26
|
"Administer privilege level, such that only Nodes granted such privilege (hereafter termed " +
|
|
27
27
|
"\"Administrators\") can manage the Access Control Cluster." +
|
|
28
28
|
"\n" +
|
|
29
|
-
"The Access Control Cluster shall be present on the root node endpoint of each Node, and shall NOT " +
|
|
30
|
-
"
|
|
29
|
+
"The Access Control Cluster shall be present on the root node endpoint of each Node, and shall NOT be " +
|
|
30
|
+
"present on any other Endpoint of any Node.",
|
|
31
31
|
|
|
32
32
|
xref: { document: "core", section: "9.10" }
|
|
33
33
|
},
|
|
@@ -47,13 +47,12 @@ export const AccessControl = Cluster(
|
|
|
47
47
|
|
|
48
48
|
details: "This feature is for a device that is managed by a service associated with the device vendor and " +
|
|
49
49
|
"which imposes default access restrictions upon each new fabric added to it. This could arise, for " +
|
|
50
|
-
"example, if the device is managed by a service provider under contract to an end-user, in such a " +
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"List (ARL)." +
|
|
50
|
+
"example, if the device is managed by a service provider under contract to an end-user, in such a way " +
|
|
51
|
+
"that the manager of the device does not unconditionally grant universal access to all of a device’s " +
|
|
52
|
+
"functionality, even for fabric administrators. For example, many Home Routers are managed by an " +
|
|
53
|
+
"Internet Service Provider (a service), and these services often have a policy that requires them to " +
|
|
54
|
+
"obtain user consent before certain administrative functions can be delegated to a third party (e.g., " +
|
|
55
|
+
"a fabric Administrator). These restrictions are expressed using an Access Restriction List (ARL)." +
|
|
57
56
|
"\n" +
|
|
58
57
|
"The purpose of this feature on the Access Control cluster is to indicate to a fabric Administrator " +
|
|
59
58
|
"that access by it to specific attributes, commands and/or events for specific clusters is currently " +
|
|
@@ -69,21 +68,21 @@ export const AccessControl = Cluster(
|
|
|
69
68
|
"\n" +
|
|
70
69
|
"Controllers and clients SHOULD incorporate generic handling of the ACCESS_RESTRICTED error code, " +
|
|
71
70
|
"when it appears in allowed contexts, in order to gracefully handle situations where this feature is " +
|
|
72
|
-
"encountered. Device vendors that adopt this feature SHOULD be judicious in its use given the risk " +
|
|
73
|
-
"
|
|
71
|
+
"encountered. Device vendors that adopt this feature SHOULD be judicious in its use given the risk of " +
|
|
72
|
+
"unexpected behavior in controllers and clients." +
|
|
74
73
|
"\n" +
|
|
75
74
|
"For certification testing, a device that implements this feature shall provide a way for all " +
|
|
76
75
|
"restrictions to be removed." +
|
|
77
76
|
"\n" +
|
|
78
77
|
"The ARL attribute provides the set of restrictions currently applied to this fabric." +
|
|
79
78
|
"\n" +
|
|
80
|
-
"The ReviewFabricRestrictions command provides a way for the fabric Administrator to request that " +
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
"
|
|
84
|
-
"
|
|
85
|
-
"
|
|
86
|
-
"
|
|
79
|
+
"The ReviewFabricRestrictions command provides a way for the fabric Administrator to request that the " +
|
|
80
|
+
"server triggers a review of the current fabric restrictions, by involving external entities such as " +
|
|
81
|
+
"end-users, or other services associated with the manager of the device hosting the server. This " +
|
|
82
|
+
"review process may involve communication between external services and the user, and may take an " +
|
|
83
|
+
"unpredictable amount of time to complete since an end-user may need to visit some resources, such as " +
|
|
84
|
+
"a mobile application or web site. A FabricRestrictionReviewUpdate event will be generated by the " +
|
|
85
|
+
"device within a predictable time period of the ReviewFabricRestrictionsResponse (see " +
|
|
87
86
|
"ReviewFabricRestrictions for specification of this time period), and this event can be correlated " +
|
|
88
87
|
"with the ReviewFabricRestrictionsResponse using a token provided in both. The device may provide " +
|
|
89
88
|
"instructions or a Redirect URL in the FabricRestrictionReviewUpdate event in order to help the user " +
|
|
@@ -94,8 +93,8 @@ export const AccessControl = Cluster(
|
|
|
94
93
|
"### Managed Device Feature Usage Restrictions" +
|
|
95
94
|
"\n" +
|
|
96
95
|
"Use of this feature shall be limited to the mandatory clusters of endpoints having a device type " +
|
|
97
|
-
"that explicitly permits its use in the Device Library Specification. As a reminder, the device " +
|
|
98
|
-
"
|
|
96
|
+
"that explicitly permits its use in the Device Library Specification. As a reminder, the device types " +
|
|
97
|
+
"associated with an endpoint are listed in the Descriptor cluster of the endpoint." +
|
|
99
98
|
"\n" +
|
|
100
99
|
"In addition, use of this feature shall NOT restrict the following clusters on any endpoint:" +
|
|
101
100
|
"\n" +
|
|
@@ -131,8 +130,8 @@ export const AccessControl = Cluster(
|
|
|
131
130
|
"fabric supported by the server." +
|
|
132
131
|
"\n" +
|
|
133
132
|
"Each Access Control Entry codifies a single grant of privilege on this Node, and is used by the " +
|
|
134
|
-
"Access Control Privilege Granting algorithm to determine if a subject has privilege to interact " +
|
|
135
|
-
"
|
|
133
|
+
"Access Control Privilege Granting algorithm to determine if a subject has privilege to interact with " +
|
|
134
|
+
"targets on the Node.",
|
|
136
135
|
|
|
137
136
|
xref: { document: "core", section: "9.10.6.3" }
|
|
138
137
|
},
|
|
@@ -160,10 +159,10 @@ export const AccessControl = Cluster(
|
|
|
160
159
|
details: "This attribute shall provide the minimum number of Subjects per entry that are supported by this " +
|
|
161
160
|
"server." +
|
|
162
161
|
"\n" +
|
|
163
|
-
"Since reducing this value over time may invalidate ACL entries already written, this value shall " +
|
|
164
|
-
"
|
|
165
|
-
"
|
|
166
|
-
"
|
|
162
|
+
"Since reducing this value over time may invalidate ACL entries already written, this value shall NOT " +
|
|
163
|
+
"decrease across time as software updates occur that could impact this value. If this is a concern " +
|
|
164
|
+
"for a given implementation, it is recommended to only use the minimum value required and avoid " +
|
|
165
|
+
"reporting a higher value than the required minimum.",
|
|
167
166
|
|
|
168
167
|
xref: { document: "core", section: "9.10.6.5" }
|
|
169
168
|
}),
|
|
@@ -175,10 +174,10 @@ export const AccessControl = Cluster(
|
|
|
175
174
|
details: "This attribute shall provide the minimum number of Targets per entry that are supported by this " +
|
|
176
175
|
"server." +
|
|
177
176
|
"\n" +
|
|
178
|
-
"Since reducing this value over time may invalidate ACL entries already written, this value shall " +
|
|
179
|
-
"
|
|
180
|
-
"
|
|
181
|
-
"
|
|
177
|
+
"Since reducing this value over time may invalidate ACL entries already written, this value shall NOT " +
|
|
178
|
+
"decrease across time as software updates occur that could impact this value. If this is a concern " +
|
|
179
|
+
"for a given implementation, it is recommended to only use the minimum value required and avoid " +
|
|
180
|
+
"reporting a higher value than the required minimum.",
|
|
182
181
|
|
|
183
182
|
xref: { document: "core", section: "9.10.6.6" }
|
|
184
183
|
}),
|
|
@@ -187,13 +186,13 @@ export const AccessControl = Cluster(
|
|
|
187
186
|
name: "AccessControlEntriesPerFabric", id: 0x4, type: "uint16", access: "R V", conformance: "M",
|
|
188
187
|
constraint: "min 4", default: 4, quality: "F",
|
|
189
188
|
|
|
190
|
-
details: "This attribute shall provide the minimum number of ACL Entries per fabric that are supported by " +
|
|
191
|
-
"
|
|
189
|
+
details: "This attribute shall provide the minimum number of ACL Entries per fabric that are supported by this " +
|
|
190
|
+
"server." +
|
|
192
191
|
"\n" +
|
|
193
|
-
"Since reducing this value over time may invalidate ACL entries already written, this value shall " +
|
|
194
|
-
"
|
|
195
|
-
"
|
|
196
|
-
"
|
|
192
|
+
"Since reducing this value over time may invalidate ACL entries already written, this value shall NOT " +
|
|
193
|
+
"decrease across time as software updates occur that could impact this value. If this is a concern " +
|
|
194
|
+
"for a given implementation, it is recommended to only use the minimum value required and avoid " +
|
|
195
|
+
"reporting a higher value than the required minimum.",
|
|
197
196
|
|
|
198
197
|
xref: { document: "core", section: "9.10.6.7" }
|
|
199
198
|
}),
|
|
@@ -235,14 +234,14 @@ export const AccessControl = Cluster(
|
|
|
235
234
|
"fabric. In contrast, the CommissioningARL attribute indicates the accessing restrictions that apply " +
|
|
236
235
|
"when there is no accessing fabric, such as during commissioning." +
|
|
237
236
|
"\n" +
|
|
238
|
-
"The access restrictions are externally added/removed based on the particular relationship the " +
|
|
239
|
-
"
|
|
240
|
-
"
|
|
237
|
+
"The access restrictions are externally added/removed based on the particular relationship the device " +
|
|
238
|
+
"hosting this server has with external entities such as its owner, external service provider, or " +
|
|
239
|
+
"end-user." +
|
|
241
240
|
"\n" +
|
|
242
241
|
"Attempts to access data model elements described by an entry in the ARL attribute for the accessing " +
|
|
243
242
|
"fabric shall result in an error of ACCESS_RESTRICTED. See Access Control Model for more information " +
|
|
244
|
-
"about the features related to controlling access to a Node’s Endpoint Clusters (\"Targets\" " +
|
|
245
|
-
"
|
|
243
|
+
"about the features related to controlling access to a Node’s Endpoint Clusters (\"Targets\" hereafter) " +
|
|
244
|
+
"from other Nodes." +
|
|
246
245
|
"\n" +
|
|
247
246
|
"See Section 9.10.4.2.1, “Managed Device Feature Usage Restrictions” for limitations on the use of " +
|
|
248
247
|
"access restrictions.",
|
|
@@ -386,8 +385,8 @@ export const AccessControl = Cluster(
|
|
|
386
385
|
|
|
387
386
|
Field({
|
|
388
387
|
name: "Token", id: 0x0, type: "uint64", access: "S", conformance: "M",
|
|
389
|
-
details: "This field shall indicate the Token that can be used to correlate a " +
|
|
390
|
-
"
|
|
388
|
+
details: "This field shall indicate the Token that can be used to correlate a ReviewFabricRestrictionsResponse " +
|
|
389
|
+
"with a FabricRestrictionReviewUpdate event.",
|
|
391
390
|
xref: { document: "core", section: "9.10.9.3.1" }
|
|
392
391
|
}),
|
|
393
392
|
|
|
@@ -429,21 +428,21 @@ export const AccessControl = Cluster(
|
|
|
429
428
|
" • The device using this mechanism shall provide a service at the URL that can accept requests for " +
|
|
430
429
|
" additional access and return responses indicating whether the requests were granted or denied." +
|
|
431
430
|
"\n" +
|
|
432
|
-
" • This URL will typically lead to a server which (e.g. by looking at the User-Agent) redirects " +
|
|
433
|
-
"
|
|
431
|
+
" • This URL will typically lead to a server which (e.g. by looking at the User-Agent) redirects the " +
|
|
432
|
+
" user to allow viewing, downloading, installing or using a manufacturer-provided means for " +
|
|
434
433
|
" guiding the user through the process to review and approve or deny the request. The device " +
|
|
435
434
|
" manufacturer may choose to use a constructed URL which is valid in a HTTP GET request (i.e. " +
|
|
436
435
|
" dedicated for the product) such as, for example, https://domain.example/arl-app?vid=FFF1& " +
|
|
437
|
-
" pid=1234. If a client follows or launches the ARLRequestFlowUrl, it shall expand it as " +
|
|
438
|
-
"
|
|
436
|
+
" pid=1234. If a client follows or launches the ARLRequestFlowUrl, it shall expand it as described " +
|
|
437
|
+
" in Section 9.10.9.3.4, “ARLRequestFlowUrl format”." +
|
|
439
438
|
"\n" +
|
|
440
439
|
" • A manufacturer contemplating using this flow should realize that" +
|
|
441
440
|
"\n" +
|
|
442
441
|
" ◦ This flow typically requires internet access to access the URL, and access extension may fail " +
|
|
443
442
|
" when internet connectivity is not available." +
|
|
444
443
|
"\n" +
|
|
445
|
-
" ◦ If the flow prefers to redirect the user to an app which is available on popular platforms, " +
|
|
446
|
-
"
|
|
444
|
+
" ◦ If the flow prefers to redirect the user to an app which is available on popular platforms, it " +
|
|
445
|
+
" SHOULD also provide a fallback option such as a web browser interface to ensure users can " +
|
|
447
446
|
" complete access extension." +
|
|
448
447
|
"\n" +
|
|
449
448
|
"### ARLRequestFlowUrl format" +
|
|
@@ -462,8 +461,8 @@ export const AccessControl = Cluster(
|
|
|
462
461
|
"backUrl) placeholder\"." +
|
|
463
462
|
"\n" +
|
|
464
463
|
" • Any key whose name begins with MT not mentioned in the previous bullets shall be reserved for " +
|
|
465
|
-
" future use by this specification. Manufacturers shall NOT include query keys starting with MT " +
|
|
466
|
-
"
|
|
464
|
+
" future use by this specification. Manufacturers shall NOT include query keys starting with MT in " +
|
|
465
|
+
" the ARLRequestFlowUrl unless they are referenced by a version of this specification." +
|
|
467
466
|
"\n" +
|
|
468
467
|
"Any other element in the ARLRequestFlowUrl query field not covered by the above rules, as well as " +
|
|
469
468
|
"the fragment field (if present), shall remain including the order of query key/value pairs present." +
|
|
@@ -483,10 +482,9 @@ export const AccessControl = Cluster(
|
|
|
483
482
|
"\n" +
|
|
484
483
|
"### CallbackUrl format for ARL Request Flow response" +
|
|
485
484
|
"\n" +
|
|
486
|
-
"If a CallbackUrl field (i.e. MTcu=) query field placeholder is present in the ARLRequestFlowUrl, " +
|
|
487
|
-
"
|
|
488
|
-
"
|
|
489
|
-
"terminated." +
|
|
485
|
+
"If a CallbackUrl field (i.e. MTcu=) query field placeholder is present in the ARLRequestFlowUrl, the " +
|
|
486
|
+
"client may replace the placeholder value \"_\" in the ExpandedARLRequestFlowUrl with a URL that the " +
|
|
487
|
+
"manufacturer flow can use to make a smooth return to the client when the ARL flow has terminated." +
|
|
490
488
|
"\n" +
|
|
491
489
|
"This URL field may contain a query component (see RFC 3986 section 3.4). If a query is present, it " +
|
|
492
490
|
"shall be composed of one or more key-value pairs:" +
|
|
@@ -515,14 +513,14 @@ export const AccessControl = Cluster(
|
|
|
515
513
|
"### Expansion of CallbackUrl by the manufacturer custom flow" +
|
|
516
514
|
"\n" +
|
|
517
515
|
"Once the CallbackUrl is obtained by the manufacturer flow, it may be expanded to form a final " +
|
|
518
|
-
"ExpandedARLRequestCallbackUrl URL to be used by proceeding with the following substitution " +
|
|
519
|
-
"
|
|
516
|
+
"ExpandedARLRequestCallbackUrl URL to be used by proceeding with the following substitution algorithm " +
|
|
517
|
+
"on the provided CallbackUrl:" +
|
|
520
518
|
"\n" +
|
|
521
519
|
" • If key MTaer is present, the manufacturer custom flow having received the initial query " +
|
|
522
520
|
" containing the CallbackUrl shall substitute the placeholder value \"_\" (i.e. in MTaer=_) in the " +
|
|
523
|
-
" CallbackUrl with the final status of the access extension request flow which shall be one of " +
|
|
524
|
-
"
|
|
525
|
-
"
|
|
521
|
+
" CallbackUrl with the final status of the access extension request flow which shall be one of the " +
|
|
522
|
+
" following. Any value returned in the MTaer field not listed above shall be considered an error " +
|
|
523
|
+
" and shall be treated as GeneralFailure." +
|
|
526
524
|
"\n" +
|
|
527
525
|
" ◦ Success - The flow completed successfully and the ARL attribute was updated. The client may " +
|
|
528
526
|
" now read the ARL attribute to determine the new access restrictions." +
|
|
@@ -537,8 +535,8 @@ export const AccessControl = Cluster(
|
|
|
537
535
|
" ◦ NotFound - Access extension failed because the target fabric was not found." +
|
|
538
536
|
"\n" +
|
|
539
537
|
"A manufacturer custom flow having received an ExpandedARLRequestFlowUrl SHOULD attempt to open the " +
|
|
540
|
-
"ExpandedARLRequestCallbackUrl, on completion of the request, if an ExpandedARLRequestCallbackUrl " +
|
|
541
|
-
"
|
|
538
|
+
"ExpandedARLRequestCallbackUrl, on completion of the request, if an ExpandedARLRequestCallbackUrl was " +
|
|
539
|
+
"computed from the CallbackUrl and opening such a URL is supported." +
|
|
542
540
|
"\n" +
|
|
543
541
|
"Examples of ARLRequestFlowUrl URLs" +
|
|
544
542
|
"\n" +
|
|
@@ -603,15 +601,15 @@ export const AccessControl = Cluster(
|
|
|
603
601
|
"In response, a ReviewFabricRestrictionsResponse is sent which contains a token that can be used to " +
|
|
604
602
|
"correlate a review request with a FabricRestrictionReviewUpdate event." +
|
|
605
603
|
"\n" +
|
|
606
|
-
"Within 1 hour of the ReviewFabricRestrictionsResponse, the FabricRestrictionReviewUpdate event " +
|
|
607
|
-
"
|
|
608
|
-
"
|
|
604
|
+
"Within 1 hour of the ReviewFabricRestrictionsResponse, the FabricRestrictionReviewUpdate event shall " +
|
|
605
|
+
"be generated, in order to indicate completion of the review and any additional steps required by the " +
|
|
606
|
+
"user for the review." +
|
|
609
607
|
"\n" +
|
|
610
|
-
"A review may include obtaining consent from the user, which can take time. For example, the user " +
|
|
611
|
-
"
|
|
608
|
+
"A review may include obtaining consent from the user, which can take time. For example, the user may " +
|
|
609
|
+
"need to respond to an email or a push notification." +
|
|
612
610
|
"\n" +
|
|
613
|
-
"The ARL attribute may change at any time due to actions taken by the user, or the service " +
|
|
614
|
-
"
|
|
611
|
+
"The ARL attribute may change at any time due to actions taken by the user, or the service associated " +
|
|
612
|
+
"with the device vendor.",
|
|
615
613
|
|
|
616
614
|
xref: { document: "core", section: "9.10.8.1" }
|
|
617
615
|
},
|
|
@@ -781,8 +779,8 @@ export const AccessControl = Cluster(
|
|
|
781
779
|
"\n" +
|
|
782
780
|
"Subject Semantics" +
|
|
783
781
|
"\n" +
|
|
784
|
-
"An empty subjects list indicates a wildcard; that is, this entry shall grant access to any Node " +
|
|
785
|
-
"
|
|
782
|
+
"An empty subjects list indicates a wildcard; that is, this entry shall grant access to any Node that " +
|
|
783
|
+
"successfully authenticates via AuthMode. The subjects list shall NOT be empty if the entry’s " +
|
|
786
784
|
"AuthMode is PASE." +
|
|
787
785
|
"\n" +
|
|
788
786
|
"The PASE AuthMode is reserved for future use (see Section 6.6.2.9, “Bootstrapping of the Access " +
|
|
@@ -855,8 +853,8 @@ export const AccessControl = Cluster(
|
|
|
855
853
|
"profile-specific tag encoded in fully-qualified form." +
|
|
856
854
|
"\n" +
|
|
857
855
|
"Administrators may iterate over this list of elements, and interpret selected elements at their " +
|
|
858
|
-
"discretion. The content of each element is not specified, but may be coordinated among " +
|
|
859
|
-
"
|
|
856
|
+
"discretion. The content of each element is not specified, but may be coordinated among manufacturers " +
|
|
857
|
+
"at their discretion.",
|
|
860
858
|
|
|
861
859
|
xref: { document: "core", section: "9.10.5.7.1" }
|
|
862
860
|
}),
|
|
@@ -21,8 +21,8 @@ export const AccountLogin = Cluster(
|
|
|
21
21
|
|
|
22
22
|
details: "This cluster provides commands that facilitate user account login on a Content App or a node. For " +
|
|
23
23
|
"example, a Content App running on a Video Player device, which is represented as an endpoint (see " +
|
|
24
|
-
"Device Type Library document), can use this cluster to help make the user account on the Content " +
|
|
25
|
-
"
|
|
24
|
+
"Device Type Library document), can use this cluster to help make the user account on the Content App " +
|
|
25
|
+
"match the user account on the Client." +
|
|
26
26
|
"\n" +
|
|
27
27
|
"Often a fabric administrator will facilitate commissioning of a Client (such as a Casting Video " +
|
|
28
28
|
"Client), and invoke commands on the AccountLogin cluster on the Content App associated with that " +
|
|
@@ -42,8 +42,8 @@ export const AccountLogin = Cluster(
|
|
|
42
42
|
"\n" +
|
|
43
43
|
"See Device Type Library document for details of how a Content App, represented as an endpoint on" +
|
|
44
44
|
"\n" +
|
|
45
|
-
"the Video Player device, may implement the cluster server for this cluster to simplify account " +
|
|
46
|
-
"
|
|
45
|
+
"the Video Player device, may implement the cluster server for this cluster to simplify account login " +
|
|
46
|
+
"for its users.",
|
|
47
47
|
|
|
48
48
|
xref: { document: "cluster", section: "6.2" }
|
|
49
49
|
},
|
|
@@ -83,9 +83,9 @@ export const AccountLogin = Cluster(
|
|
|
83
83
|
"by the Video Player to commission the Phone App without requiring the user to physically input a " +
|
|
84
84
|
"setup code." +
|
|
85
85
|
"\n" +
|
|
86
|
-
"The account match is determined by the Content App using a method which is outside the scope of " +
|
|
87
|
-
"
|
|
88
|
-
"
|
|
86
|
+
"The account match is determined by the Content App using a method which is outside the scope of this " +
|
|
87
|
+
"specification and will typically involve a central service which is in communication with both the " +
|
|
88
|
+
"Content App and the Commissionee. The GetSetupPIN command is needed in order to provide the " +
|
|
89
89
|
"Commissioner/Admin with a Setup PIN when this Commissioner/Admin is operated by a different vendor " +
|
|
90
90
|
"from the Content App." +
|
|
91
91
|
"\n" +
|
|
@@ -103,8 +103,8 @@ export const AccountLogin = Cluster(
|
|
|
103
103
|
"The Temporary Account Identifier for a Commissionee may be populated with the Rotating ID field of " +
|
|
104
104
|
"the client’s commissionable node advertisement (see Rotating Device Identifier section in " +
|
|
105
105
|
"[MatterCore]) encoded as an octet string where the octets of the Rotating Device Identifier are " +
|
|
106
|
-
"encoded as 2-character sequences by representing each octet’s value as a 2-digit hexadecimal " +
|
|
107
|
-
"
|
|
106
|
+
"encoded as 2-character sequences by representing each octet’s value as a 2-digit hexadecimal number, " +
|
|
107
|
+
"using uppercase letters." +
|
|
108
108
|
"\n" +
|
|
109
109
|
"The Setup PIN is a character string so that it can accommodate different future formats, including " +
|
|
110
110
|
"alpha-numeric encodings. For a Commissionee it shall be populated with the Manual Pairing Code (see " +
|
|
@@ -195,8 +195,8 @@ export const AccountLogin = Cluster(
|
|
|
195
195
|
"for additional commands received within the 10 minute period. Because access to this command is " +
|
|
196
196
|
"limited to nodes with Admin-level access, and the user is involved when obtaining the SetupPIN, " +
|
|
197
197
|
"there are in place multiple obstacles to successfully mounting a brute force attack. A Content App " +
|
|
198
|
-
"that supports this command shall ensure that the Temporary Account Identifier used by its clients " +
|
|
199
|
-
"
|
|
198
|
+
"that supports this command shall ensure that the Temporary Account Identifier used by its clients is " +
|
|
199
|
+
"not valid for more than 10 minutes.",
|
|
200
200
|
|
|
201
201
|
xref: { document: "cluster", section: "6.2.4.3" }
|
|
202
202
|
},
|