@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.
Files changed (412) hide show
  1. package/dist/cjs/aspects/Quality.d.ts +45 -5
  2. package/dist/cjs/aspects/Quality.d.ts.map +1 -1
  3. package/dist/cjs/aspects/Quality.js.map +1 -1
  4. package/dist/cjs/elements/BaseElement.d.ts +14 -5
  5. package/dist/cjs/elements/BaseElement.d.ts.map +1 -1
  6. package/dist/cjs/elements/BaseElement.js.map +1 -1
  7. package/dist/cjs/elements/ValueElement.d.ts +1 -1
  8. package/dist/cjs/logic/DefaultValue.js +1 -1
  9. package/dist/cjs/logic/ModelVariantTraversal.d.ts.map +1 -1
  10. package/dist/cjs/logic/ModelVariantTraversal.js +18 -8
  11. package/dist/cjs/logic/ModelVariantTraversal.js.map +1 -1
  12. package/dist/cjs/logic/Scope.d.ts.map +1 -1
  13. package/dist/cjs/logic/Scope.js +7 -3
  14. package/dist/cjs/logic/Scope.js.map +1 -1
  15. package/dist/cjs/models/AttributeModel.d.ts +1 -0
  16. package/dist/cjs/models/AttributeModel.d.ts.map +1 -1
  17. package/dist/cjs/models/CommandModel.d.ts +1 -0
  18. package/dist/cjs/models/CommandModel.d.ts.map +1 -1
  19. package/dist/cjs/models/EventModel.d.ts +1 -0
  20. package/dist/cjs/models/EventModel.d.ts.map +1 -1
  21. package/dist/cjs/models/Model.d.ts +4 -0
  22. package/dist/cjs/models/Model.d.ts.map +1 -1
  23. package/dist/cjs/models/Model.js +1 -0
  24. package/dist/cjs/models/Model.js.map +1 -1
  25. package/dist/cjs/standard/elements/AccessControl.d.ts.map +1 -1
  26. package/dist/cjs/standard/elements/AccessControl.js +1 -1
  27. package/dist/cjs/standard/elements/AccessControl.js.map +1 -1
  28. package/dist/cjs/standard/elements/Actions.js +1 -1
  29. package/dist/cjs/standard/elements/AlarmBase.js +4 -4
  30. package/dist/cjs/standard/elements/ApplicationLauncher.d.ts.map +1 -1
  31. package/dist/cjs/standard/elements/ApplicationLauncher.js.map +1 -1
  32. package/dist/cjs/standard/elements/BatteryStorageDT.d.ts.map +1 -1
  33. package/dist/cjs/standard/elements/BatteryStorageDT.js.map +1 -1
  34. package/dist/cjs/standard/elements/BridgedDeviceBasicInformation.d.ts.map +1 -1
  35. package/dist/cjs/standard/elements/ColorControl.d.ts.map +1 -1
  36. package/dist/cjs/standard/elements/ColorControl.js +38 -42
  37. package/dist/cjs/standard/elements/ColorControl.js.map +1 -1
  38. package/dist/cjs/standard/elements/ColorDimmerSwitchDT.d.ts.map +1 -1
  39. package/dist/cjs/standard/elements/ColorTemperatureLightDT.d.ts.map +1 -1
  40. package/dist/cjs/standard/elements/CommissionerControl.js +1 -1
  41. package/dist/cjs/standard/elements/ContentAppObserver.js +1 -1
  42. package/dist/cjs/standard/elements/ContentLauncher.d.ts.map +1 -1
  43. package/dist/cjs/standard/elements/ContentLauncher.js.map +1 -1
  44. package/dist/cjs/standard/elements/DeviceEnergyManagement.d.ts.map +1 -1
  45. package/dist/cjs/standard/elements/DeviceEnergyManagement.js +1 -1
  46. package/dist/cjs/standard/elements/DeviceEnergyManagement.js.map +1 -1
  47. package/dist/cjs/standard/elements/DimmableLightDT.d.ts.map +1 -1
  48. package/dist/cjs/standard/elements/DimmablePlugInUnitDT.d.ts.map +1 -1
  49. package/dist/cjs/standard/elements/DimmerSwitchDT.d.ts.map +1 -1
  50. package/dist/cjs/standard/elements/DoorLock.d.ts.map +1 -1
  51. package/dist/cjs/standard/elements/DoorLock.js +29 -14
  52. package/dist/cjs/standard/elements/DoorLock.js.map +1 -1
  53. package/dist/cjs/standard/elements/EcosystemInformation.d.ts.map +1 -1
  54. package/dist/cjs/standard/elements/EcosystemInformation.js +36 -1
  55. package/dist/cjs/standard/elements/EcosystemInformation.js.map +2 -2
  56. package/dist/cjs/standard/elements/EnergyEvse.d.ts.map +1 -1
  57. package/dist/cjs/standard/elements/EnergyEvse.js +1 -1
  58. package/dist/cjs/standard/elements/EnergyEvse.js.map +1 -1
  59. package/dist/cjs/standard/elements/EthernetNetworkDiagnostics.d.ts.map +1 -1
  60. package/dist/cjs/standard/elements/EthernetNetworkDiagnostics.js.map +1 -1
  61. package/dist/cjs/standard/elements/ExtendedColorLightDT.d.ts.map +1 -1
  62. package/dist/cjs/standard/elements/FixedLabel.d.ts.map +1 -1
  63. package/dist/cjs/standard/elements/FixedLabel.js +1 -1
  64. package/dist/cjs/standard/elements/FixedLabel.js.map +1 -1
  65. package/dist/cjs/standard/elements/GeneralCommissioning.d.ts.map +1 -1
  66. package/dist/cjs/standard/elements/GeneralCommissioning.js +7 -7
  67. package/dist/cjs/standard/elements/GeneralCommissioning.js.map +1 -1
  68. package/dist/cjs/standard/elements/GeneralDiagnostics.d.ts.map +1 -1
  69. package/dist/cjs/standard/elements/GeneralDiagnostics.js.map +1 -1
  70. package/dist/cjs/standard/elements/GroupKeyManagement.d.ts.map +1 -1
  71. package/dist/cjs/standard/elements/GroupKeyManagement.js +2 -3
  72. package/dist/cjs/standard/elements/GroupKeyManagement.js.map +1 -1
  73. package/dist/cjs/standard/elements/Groups.d.ts.map +1 -1
  74. package/dist/cjs/standard/elements/Groups.js.map +1 -1
  75. package/dist/cjs/standard/elements/LevelControl.d.ts.map +1 -1
  76. package/dist/cjs/standard/elements/LevelControl.js +8 -8
  77. package/dist/cjs/standard/elements/LevelControl.js.map +1 -1
  78. package/dist/cjs/standard/elements/MediaPlayback.d.ts.map +1 -1
  79. package/dist/cjs/standard/elements/MediaPlayback.js +1 -1
  80. package/dist/cjs/standard/elements/MediaPlayback.js.map +1 -1
  81. package/dist/cjs/standard/elements/ModeBase.js +1 -1
  82. package/dist/cjs/standard/elements/MountedDimmableLoadControlDT.d.ts.map +1 -1
  83. package/dist/cjs/standard/elements/MountedOnOffControlDT.d.ts.map +1 -1
  84. package/dist/cjs/standard/elements/NetworkCommissioning.d.ts.map +1 -1
  85. package/dist/cjs/standard/elements/NetworkCommissioning.js +2 -2
  86. package/dist/cjs/standard/elements/NetworkCommissioning.js.map +1 -1
  87. package/dist/cjs/standard/elements/NetworkInfrastructureManagerDT.d.ts.map +1 -1
  88. package/dist/cjs/standard/elements/OnOff.js +1 -1
  89. package/dist/cjs/standard/elements/OnOffPlugInUnitDT.d.ts.map +1 -1
  90. package/dist/cjs/standard/elements/OperationalCredentials.d.ts.map +1 -1
  91. package/dist/cjs/standard/elements/OperationalCredentials.js +3 -3
  92. package/dist/cjs/standard/elements/OperationalCredentials.js.map +1 -1
  93. package/dist/cjs/standard/elements/OperationalState.js +1 -1
  94. package/dist/cjs/standard/elements/OtaSoftwareUpdateProvider.js +6 -6
  95. package/dist/cjs/standard/elements/OtaSoftwareUpdateRequestor.d.ts.map +1 -1
  96. package/dist/cjs/standard/elements/OtaSoftwareUpdateRequestor.js.map +1 -1
  97. package/dist/cjs/standard/elements/OvenCavityOperationalState.d.ts.map +1 -1
  98. package/dist/cjs/standard/elements/PowerSource.d.ts.map +1 -1
  99. package/dist/cjs/standard/elements/PowerSource.js.map +1 -1
  100. package/dist/cjs/standard/elements/PumpConfigurationAndControl.d.ts.map +1 -1
  101. package/dist/cjs/standard/elements/PumpConfigurationAndControl.js.map +1 -1
  102. package/dist/cjs/standard/elements/PumpDT.d.ts.map +1 -1
  103. package/dist/cjs/standard/elements/RefrigeratorAndTemperatureControlledCabinetMode.d.ts.map +1 -1
  104. package/dist/cjs/standard/elements/ScenesManagement.js +3 -3
  105. package/dist/cjs/standard/elements/ScenesManagement.js.map +1 -1
  106. package/dist/cjs/standard/elements/ServiceArea.js +4 -3
  107. package/dist/cjs/standard/elements/ServiceArea.js.map +1 -1
  108. package/dist/cjs/standard/elements/SmokeCoAlarm.d.ts.map +1 -1
  109. package/dist/cjs/standard/elements/SmokeCoAlarm.js.map +1 -1
  110. package/dist/cjs/standard/elements/Switch.js +2 -2
  111. package/dist/cjs/standard/elements/Thermostat.d.ts.map +1 -1
  112. package/dist/cjs/standard/elements/Thermostat.js +13 -8
  113. package/dist/cjs/standard/elements/Thermostat.js.map +1 -1
  114. package/dist/cjs/standard/elements/ThreadNetworkDiagnostics.d.ts.map +1 -1
  115. package/dist/cjs/standard/elements/ThreadNetworkDiagnostics.js.map +1 -1
  116. package/dist/cjs/standard/elements/TimeFormatLocalization.d.ts.map +1 -1
  117. package/dist/cjs/standard/elements/TimeFormatLocalization.js.map +1 -1
  118. package/dist/cjs/standard/elements/TimeSynchronization.d.ts.map +1 -1
  119. package/dist/cjs/standard/elements/TimeSynchronization.js.map +1 -1
  120. package/dist/cjs/standard/elements/ValveConfigurationAndControl.d.ts.map +1 -1
  121. package/dist/cjs/standard/elements/ValveConfigurationAndControl.js.map +1 -1
  122. package/dist/cjs/standard/elements/WaterValveDT.d.ts.map +1 -1
  123. package/dist/cjs/standard/elements/WiFiNetworkManagement.d.ts.map +1 -1
  124. package/dist/cjs/standard/elements/WiFiNetworkManagement.js +12 -8
  125. package/dist/cjs/standard/elements/WiFiNetworkManagement.js.map +2 -2
  126. package/dist/cjs/standard/elements/WildcardPathFlagsBitmap.js +1 -1
  127. package/dist/cjs/standard/elements/WildcardPathFlagsBitmap.js.map +1 -1
  128. package/dist/cjs/standard/elements/enum16.d.ts.map +1 -1
  129. package/dist/cjs/standard/elements/enum8.d.ts.map +1 -1
  130. package/dist/cjs/standard/elements/epoch-us.js +1 -1
  131. package/dist/cjs/standard/elements/ipv6pre.js +1 -1
  132. package/dist/cjs/standard/elements/namespace.d.ts.map +1 -1
  133. package/dist/cjs/standard/elements/struct.js +1 -1
  134. package/dist/esm/aspects/Quality.d.ts +45 -5
  135. package/dist/esm/aspects/Quality.d.ts.map +1 -1
  136. package/dist/esm/aspects/Quality.js.map +1 -1
  137. package/dist/esm/elements/BaseElement.d.ts +14 -5
  138. package/dist/esm/elements/BaseElement.d.ts.map +1 -1
  139. package/dist/esm/elements/BaseElement.js.map +1 -1
  140. package/dist/esm/elements/ValueElement.d.ts +1 -1
  141. package/dist/esm/logic/DefaultValue.js +1 -1
  142. package/dist/esm/logic/ModelVariantTraversal.d.ts.map +1 -1
  143. package/dist/esm/logic/ModelVariantTraversal.js +18 -8
  144. package/dist/esm/logic/ModelVariantTraversal.js.map +1 -1
  145. package/dist/esm/logic/Scope.d.ts.map +1 -1
  146. package/dist/esm/logic/Scope.js +7 -3
  147. package/dist/esm/logic/Scope.js.map +1 -1
  148. package/dist/esm/models/AttributeModel.d.ts +1 -0
  149. package/dist/esm/models/AttributeModel.d.ts.map +1 -1
  150. package/dist/esm/models/CommandModel.d.ts +1 -0
  151. package/dist/esm/models/CommandModel.d.ts.map +1 -1
  152. package/dist/esm/models/EventModel.d.ts +1 -0
  153. package/dist/esm/models/EventModel.d.ts.map +1 -1
  154. package/dist/esm/models/Model.d.ts +4 -0
  155. package/dist/esm/models/Model.d.ts.map +1 -1
  156. package/dist/esm/models/Model.js +1 -0
  157. package/dist/esm/models/Model.js.map +1 -1
  158. package/dist/esm/standard/elements/AccessControl.d.ts.map +1 -1
  159. package/dist/esm/standard/elements/AccessControl.js +1 -1
  160. package/dist/esm/standard/elements/AccessControl.js.map +1 -1
  161. package/dist/esm/standard/elements/Actions.js +1 -1
  162. package/dist/esm/standard/elements/AlarmBase.js +4 -4
  163. package/dist/esm/standard/elements/ApplicationLauncher.d.ts.map +1 -1
  164. package/dist/esm/standard/elements/ApplicationLauncher.js.map +1 -1
  165. package/dist/esm/standard/elements/BatteryStorageDT.d.ts.map +1 -1
  166. package/dist/esm/standard/elements/BatteryStorageDT.js.map +1 -1
  167. package/dist/esm/standard/elements/BridgedDeviceBasicInformation.d.ts.map +1 -1
  168. package/dist/esm/standard/elements/ColorControl.d.ts.map +1 -1
  169. package/dist/esm/standard/elements/ColorControl.js +38 -42
  170. package/dist/esm/standard/elements/ColorControl.js.map +1 -1
  171. package/dist/esm/standard/elements/ColorDimmerSwitchDT.d.ts.map +1 -1
  172. package/dist/esm/standard/elements/ColorTemperatureLightDT.d.ts.map +1 -1
  173. package/dist/esm/standard/elements/CommissionerControl.js +1 -1
  174. package/dist/esm/standard/elements/ContentAppObserver.js +1 -1
  175. package/dist/esm/standard/elements/ContentLauncher.d.ts.map +1 -1
  176. package/dist/esm/standard/elements/ContentLauncher.js.map +1 -1
  177. package/dist/esm/standard/elements/DeviceEnergyManagement.d.ts.map +1 -1
  178. package/dist/esm/standard/elements/DeviceEnergyManagement.js +1 -1
  179. package/dist/esm/standard/elements/DeviceEnergyManagement.js.map +1 -1
  180. package/dist/esm/standard/elements/DimmableLightDT.d.ts.map +1 -1
  181. package/dist/esm/standard/elements/DimmablePlugInUnitDT.d.ts.map +1 -1
  182. package/dist/esm/standard/elements/DimmerSwitchDT.d.ts.map +1 -1
  183. package/dist/esm/standard/elements/DoorLock.d.ts.map +1 -1
  184. package/dist/esm/standard/elements/DoorLock.js +29 -14
  185. package/dist/esm/standard/elements/DoorLock.js.map +1 -1
  186. package/dist/esm/standard/elements/EcosystemInformation.d.ts.map +1 -1
  187. package/dist/esm/standard/elements/EcosystemInformation.js +38 -3
  188. package/dist/esm/standard/elements/EcosystemInformation.js.map +1 -1
  189. package/dist/esm/standard/elements/EnergyEvse.d.ts.map +1 -1
  190. package/dist/esm/standard/elements/EnergyEvse.js +1 -1
  191. package/dist/esm/standard/elements/EnergyEvse.js.map +1 -1
  192. package/dist/esm/standard/elements/EthernetNetworkDiagnostics.d.ts.map +1 -1
  193. package/dist/esm/standard/elements/EthernetNetworkDiagnostics.js.map +1 -1
  194. package/dist/esm/standard/elements/ExtendedColorLightDT.d.ts.map +1 -1
  195. package/dist/esm/standard/elements/FixedLabel.d.ts.map +1 -1
  196. package/dist/esm/standard/elements/FixedLabel.js +1 -1
  197. package/dist/esm/standard/elements/FixedLabel.js.map +1 -1
  198. package/dist/esm/standard/elements/GeneralCommissioning.d.ts.map +1 -1
  199. package/dist/esm/standard/elements/GeneralCommissioning.js +7 -7
  200. package/dist/esm/standard/elements/GeneralCommissioning.js.map +1 -1
  201. package/dist/esm/standard/elements/GeneralDiagnostics.d.ts.map +1 -1
  202. package/dist/esm/standard/elements/GeneralDiagnostics.js.map +1 -1
  203. package/dist/esm/standard/elements/GroupKeyManagement.d.ts.map +1 -1
  204. package/dist/esm/standard/elements/GroupKeyManagement.js +2 -3
  205. package/dist/esm/standard/elements/GroupKeyManagement.js.map +1 -1
  206. package/dist/esm/standard/elements/Groups.d.ts.map +1 -1
  207. package/dist/esm/standard/elements/Groups.js.map +1 -1
  208. package/dist/esm/standard/elements/LevelControl.d.ts.map +1 -1
  209. package/dist/esm/standard/elements/LevelControl.js +8 -8
  210. package/dist/esm/standard/elements/LevelControl.js.map +1 -1
  211. package/dist/esm/standard/elements/MediaPlayback.d.ts.map +1 -1
  212. package/dist/esm/standard/elements/MediaPlayback.js +1 -1
  213. package/dist/esm/standard/elements/MediaPlayback.js.map +1 -1
  214. package/dist/esm/standard/elements/ModeBase.js +1 -1
  215. package/dist/esm/standard/elements/MountedDimmableLoadControlDT.d.ts.map +1 -1
  216. package/dist/esm/standard/elements/MountedOnOffControlDT.d.ts.map +1 -1
  217. package/dist/esm/standard/elements/NetworkCommissioning.d.ts.map +1 -1
  218. package/dist/esm/standard/elements/NetworkCommissioning.js +2 -2
  219. package/dist/esm/standard/elements/NetworkCommissioning.js.map +1 -1
  220. package/dist/esm/standard/elements/NetworkInfrastructureManagerDT.d.ts.map +1 -1
  221. package/dist/esm/standard/elements/OnOff.js +1 -1
  222. package/dist/esm/standard/elements/OnOffPlugInUnitDT.d.ts.map +1 -1
  223. package/dist/esm/standard/elements/OperationalCredentials.d.ts.map +1 -1
  224. package/dist/esm/standard/elements/OperationalCredentials.js +3 -3
  225. package/dist/esm/standard/elements/OperationalCredentials.js.map +1 -1
  226. package/dist/esm/standard/elements/OperationalState.js +1 -1
  227. package/dist/esm/standard/elements/OtaSoftwareUpdateProvider.js +6 -6
  228. package/dist/esm/standard/elements/OtaSoftwareUpdateRequestor.d.ts.map +1 -1
  229. package/dist/esm/standard/elements/OtaSoftwareUpdateRequestor.js.map +1 -1
  230. package/dist/esm/standard/elements/OvenCavityOperationalState.d.ts.map +1 -1
  231. package/dist/esm/standard/elements/PowerSource.d.ts.map +1 -1
  232. package/dist/esm/standard/elements/PowerSource.js.map +1 -1
  233. package/dist/esm/standard/elements/PumpConfigurationAndControl.d.ts.map +1 -1
  234. package/dist/esm/standard/elements/PumpConfigurationAndControl.js.map +1 -1
  235. package/dist/esm/standard/elements/PumpDT.d.ts.map +1 -1
  236. package/dist/esm/standard/elements/RefrigeratorAndTemperatureControlledCabinetMode.d.ts.map +1 -1
  237. package/dist/esm/standard/elements/ScenesManagement.js +3 -3
  238. package/dist/esm/standard/elements/ScenesManagement.js.map +1 -1
  239. package/dist/esm/standard/elements/ServiceArea.js +4 -3
  240. package/dist/esm/standard/elements/ServiceArea.js.map +1 -1
  241. package/dist/esm/standard/elements/SmokeCoAlarm.d.ts.map +1 -1
  242. package/dist/esm/standard/elements/SmokeCoAlarm.js.map +1 -1
  243. package/dist/esm/standard/elements/Switch.js +2 -2
  244. package/dist/esm/standard/elements/Thermostat.d.ts.map +1 -1
  245. package/dist/esm/standard/elements/Thermostat.js +13 -8
  246. package/dist/esm/standard/elements/Thermostat.js.map +1 -1
  247. package/dist/esm/standard/elements/ThreadNetworkDiagnostics.d.ts.map +1 -1
  248. package/dist/esm/standard/elements/ThreadNetworkDiagnostics.js.map +1 -1
  249. package/dist/esm/standard/elements/TimeFormatLocalization.d.ts.map +1 -1
  250. package/dist/esm/standard/elements/TimeFormatLocalization.js.map +1 -1
  251. package/dist/esm/standard/elements/TimeSynchronization.d.ts.map +1 -1
  252. package/dist/esm/standard/elements/TimeSynchronization.js.map +1 -1
  253. package/dist/esm/standard/elements/ValveConfigurationAndControl.d.ts.map +1 -1
  254. package/dist/esm/standard/elements/ValveConfigurationAndControl.js.map +1 -1
  255. package/dist/esm/standard/elements/WaterValveDT.d.ts.map +1 -1
  256. package/dist/esm/standard/elements/WiFiNetworkManagement.d.ts.map +1 -1
  257. package/dist/esm/standard/elements/WiFiNetworkManagement.js +14 -9
  258. package/dist/esm/standard/elements/WiFiNetworkManagement.js.map +1 -1
  259. package/dist/esm/standard/elements/WildcardPathFlagsBitmap.js +1 -1
  260. package/dist/esm/standard/elements/WildcardPathFlagsBitmap.js.map +1 -1
  261. package/dist/esm/standard/elements/enum16.d.ts.map +1 -1
  262. package/dist/esm/standard/elements/enum8.d.ts.map +1 -1
  263. package/dist/esm/standard/elements/epoch-us.js +1 -1
  264. package/dist/esm/standard/elements/ipv6pre.js +1 -1
  265. package/dist/esm/standard/elements/namespace.d.ts.map +1 -1
  266. package/dist/esm/standard/elements/struct.js +1 -1
  267. package/package.json +4 -4
  268. package/src/aspects/Quality.ts +56 -5
  269. package/src/elements/BaseElement.ts +16 -5
  270. package/src/elements/ValueElement.ts +1 -1
  271. package/src/logic/DefaultValue.ts +1 -1
  272. package/src/logic/ModelVariantTraversal.ts +22 -8
  273. package/src/logic/Scope.ts +7 -3
  274. package/src/models/Model.ts +4 -0
  275. package/src/standard/elements/AcceptedCommandList.ts +2 -2
  276. package/src/standard/elements/AccessControl.ts +71 -73
  277. package/src/standard/elements/AccountLogin.ts +11 -11
  278. package/src/standard/elements/Actions.ts +36 -36
  279. package/src/standard/elements/AdministratorCommissioning.ts +21 -21
  280. package/src/standard/elements/AggregatorDT.ts +2 -2
  281. package/src/standard/elements/AlarmBase.ts +18 -18
  282. package/src/standard/elements/ApplicationBasic.ts +7 -7
  283. package/src/standard/elements/ApplicationLauncher.ts +6 -7
  284. package/src/standard/elements/AudioOutput.ts +4 -4
  285. package/src/standard/elements/BallastConfiguration.ts +6 -6
  286. package/src/standard/elements/BasicInformation.ts +43 -43
  287. package/src/standard/elements/BasicVideoPlayerDT.ts +3 -3
  288. package/src/standard/elements/BatteryStorageDT.ts +2 -5
  289. package/src/standard/elements/Binding.ts +3 -3
  290. package/src/standard/elements/BooleanStateConfiguration.ts +4 -4
  291. package/src/standard/elements/BridgedDeviceBasicInformation.ts +22 -22
  292. package/src/standard/elements/CastingVideoClientDT.ts +2 -2
  293. package/src/standard/elements/Channel.ts +32 -32
  294. package/src/standard/elements/ColorControl.ts +92 -93
  295. package/src/standard/elements/ColorDimmerSwitchDT.ts +1 -1
  296. package/src/standard/elements/ColorTemperatureLightDT.ts +1 -1
  297. package/src/standard/elements/CommissionerControl.ts +16 -16
  298. package/src/standard/elements/ContentAppObserver.ts +7 -7
  299. package/src/standard/elements/ContentControl.ts +39 -39
  300. package/src/standard/elements/ContentLauncher.ts +38 -40
  301. package/src/standard/elements/DeviceEnergyManagement.ts +108 -111
  302. package/src/standard/elements/DeviceEnergyManagementMode.ts +4 -4
  303. package/src/standard/elements/DiagnosticLogs.ts +24 -24
  304. package/src/standard/elements/DimmableLightDT.ts +1 -1
  305. package/src/standard/elements/DimmablePlugInUnitDT.ts +4 -4
  306. package/src/standard/elements/DimmerSwitchDT.ts +3 -3
  307. package/src/standard/elements/DishwasherMode.ts +2 -2
  308. package/src/standard/elements/DoorLock.ts +164 -154
  309. package/src/standard/elements/DoorLockDT.ts +2 -2
  310. package/src/standard/elements/EcosystemInformation.ts +67 -27
  311. package/src/standard/elements/ElectricalEnergyMeasurement.ts +18 -18
  312. package/src/standard/elements/ElectricalMeasurementNS.ts +2 -2
  313. package/src/standard/elements/ElectricalPowerMeasurement.ts +18 -18
  314. package/src/standard/elements/EnergyEvse.ts +58 -64
  315. package/src/standard/elements/EnergyEvseMode.ts +8 -8
  316. package/src/standard/elements/EthernetNetworkDiagnostics.ts +14 -15
  317. package/src/standard/elements/ExtendedColorLightDT.ts +3 -3
  318. package/src/standard/elements/ExtractorHoodDT.ts +2 -2
  319. package/src/standard/elements/FanControl.ts +14 -14
  320. package/src/standard/elements/FanDT.ts +2 -2
  321. package/src/standard/elements/FeatureMap.ts +5 -5
  322. package/src/standard/elements/FixedLabel.ts +4 -5
  323. package/src/standard/elements/GeneralCommissioning.ts +79 -80
  324. package/src/standard/elements/GeneralDiagnostics.ts +17 -18
  325. package/src/standard/elements/GeneratedCommandList.ts +2 -2
  326. package/src/standard/elements/GroupKeyManagement.ts +29 -30
  327. package/src/standard/elements/Groups.ts +13 -14
  328. package/src/standard/elements/IcdManagement.ts +32 -32
  329. package/src/standard/elements/Identify.ts +7 -7
  330. package/src/standard/elements/JointFabricDatastoreCluster.ts +12 -12
  331. package/src/standard/elements/KeypadInput.ts +9 -9
  332. package/src/standard/elements/LaundryWasherControls.ts +2 -2
  333. package/src/standard/elements/LaundryWasherMode.ts +2 -2
  334. package/src/standard/elements/LevelControl.ts +31 -32
  335. package/src/standard/elements/LightSensorDT.ts +2 -2
  336. package/src/standard/elements/LocalizationConfiguration.ts +2 -2
  337. package/src/standard/elements/MeasurementAccuracyRangeStruct.ts +10 -10
  338. package/src/standard/elements/MeasurementAccuracyStruct.ts +4 -4
  339. package/src/standard/elements/MediaPlayback.ts +42 -44
  340. package/src/standard/elements/Messages.ts +18 -18
  341. package/src/standard/elements/MicrowaveOvenControl.ts +16 -16
  342. package/src/standard/elements/ModeBase.ts +21 -21
  343. package/src/standard/elements/ModeSelect.ts +12 -12
  344. package/src/standard/elements/MountedDimmableLoadControlDT.ts +4 -4
  345. package/src/standard/elements/MountedOnOffControlDT.ts +1 -1
  346. package/src/standard/elements/NetworkCommissioning.ts +68 -69
  347. package/src/standard/elements/NetworkInfrastructureManagerDT.ts +1 -1
  348. package/src/standard/elements/OccupancySensing.ts +23 -23
  349. package/src/standard/elements/OnOff.ts +17 -17
  350. package/src/standard/elements/OnOffPlugInUnitDT.ts +1 -1
  351. package/src/standard/elements/OnOffSensorDT.ts +2 -2
  352. package/src/standard/elements/OperationalCredentials.ts +86 -88
  353. package/src/standard/elements/OperationalState.ts +31 -31
  354. package/src/standard/elements/OtaSoftwareUpdateProvider.ts +48 -48
  355. package/src/standard/elements/OtaSoftwareUpdateRequestor.ts +31 -32
  356. package/src/standard/elements/OvenCavityOperationalState.ts +1 -1
  357. package/src/standard/elements/OvenMode.ts +2 -2
  358. package/src/standard/elements/PositionNS.ts +2 -2
  359. package/src/standard/elements/PowerSource.ts +37 -38
  360. package/src/standard/elements/PowerSourceConfiguration.ts +4 -4
  361. package/src/standard/elements/PowerSourceNS.ts +2 -2
  362. package/src/standard/elements/ProxyConfiguration.ts +2 -2
  363. package/src/standard/elements/ProxyDiscovery.ts +5 -5
  364. package/src/standard/elements/PumpConfigurationAndControl.ts +27 -28
  365. package/src/standard/elements/PumpDT.ts +1 -1
  366. package/src/standard/elements/RefrigeratorAlarm.ts +2 -2
  367. package/src/standard/elements/RefrigeratorAndTemperatureControlledCabinetMode.ts +1 -1
  368. package/src/standard/elements/RefrigeratorNS.ts +2 -2
  369. package/src/standard/elements/RelativePositionNS.ts +4 -4
  370. package/src/standard/elements/ResourceMonitoring.ts +4 -4
  371. package/src/standard/elements/RoomAirConditionerDT.ts +2 -2
  372. package/src/standard/elements/RootNodeDT.ts +3 -3
  373. package/src/standard/elements/RvcOperationalState.ts +4 -4
  374. package/src/standard/elements/RvcRunMode.ts +6 -6
  375. package/src/standard/elements/ScenesManagement.ts +34 -34
  376. package/src/standard/elements/SecondaryNetworkInterfaceDT.ts +2 -2
  377. package/src/standard/elements/ServiceArea.ts +69 -69
  378. package/src/standard/elements/SmokeCoAlarm.ts +19 -20
  379. package/src/standard/elements/SmokeCoAlarmDT.ts +2 -2
  380. package/src/standard/elements/SoftwareDiagnostics.ts +13 -13
  381. package/src/standard/elements/SpeakerDT.ts +2 -2
  382. package/src/standard/elements/Switch.ts +21 -21
  383. package/src/standard/elements/TemperatureControl.ts +5 -5
  384. package/src/standard/elements/TemperatureMeasurement.ts +2 -2
  385. package/src/standard/elements/Thermostat.ts +124 -120
  386. package/src/standard/elements/ThermostatUserInterfaceConfiguration.ts +6 -6
  387. package/src/standard/elements/ThreadBorderRouterManagement.ts +10 -10
  388. package/src/standard/elements/ThreadNetworkDiagnostics.ts +50 -51
  389. package/src/standard/elements/ThreadNetworkDirectory.ts +11 -11
  390. package/src/standard/elements/TimeFormatLocalization.ts +6 -7
  391. package/src/standard/elements/TimeSynchronization.ts +27 -28
  392. package/src/standard/elements/UnitLocalization.ts +2 -2
  393. package/src/standard/elements/ValveConfigurationAndControl.ts +9 -10
  394. package/src/standard/elements/WakeOnLan.ts +11 -11
  395. package/src/standard/elements/WaterHeaterManagement.ts +17 -17
  396. package/src/standard/elements/WaterHeaterMode.ts +4 -4
  397. package/src/standard/elements/WaterValveDT.ts +1 -1
  398. package/src/standard/elements/WiFiNetworkDiagnostics.ts +13 -13
  399. package/src/standard/elements/WiFiNetworkManagement.ts +21 -16
  400. package/src/standard/elements/WildcardPathFlagsBitmap.ts +1 -1
  401. package/src/standard/elements/WindowCovering.ts +19 -19
  402. package/src/standard/elements/attrib-id.ts +2 -2
  403. package/src/standard/elements/enum16.ts +1 -1
  404. package/src/standard/elements/enum8.ts +1 -1
  405. package/src/standard/elements/epoch-us.ts +9 -9
  406. package/src/standard/elements/hwadr.ts +2 -2
  407. package/src/standard/elements/ipv6pre.ts +3 -3
  408. package/src/standard/elements/locationdesc.ts +10 -10
  409. package/src/standard/elements/namespace.ts +1 -1
  410. package/src/standard/elements/semtag.ts +5 -5
  411. package/src/standard/elements/string.ts +2 -2
  412. 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-20250318-c1aa38b08",
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-20250318-c1aa38b08",
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-20250318-c1aa38b08",
41
- "@matter/tools": "0.13.0-alpha.0-20250318-c1aa38b08"
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/**/*",
@@ -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
- * that do not involve access or conformance.
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
- declare disallowed?: Quality.AllProperties;
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
- * element has a corresponding "Model" that is a proper class with runtime
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 elements that represent data values.
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) & fieldBit);
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
- const idKey = child.key;
332
- let nameKey = this.getCanonicalName(child);
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
- if (mapping.idToSlot[idKey] === undefined) {
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
 
@@ -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, tags } = options;
152
- const allMembers = findAllMembers(parent, Array.isArray(tags) ? new Set(tags) : (tags ?? DEFAULT_TAGS), result);
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
 
@@ -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
- "for AtomicRequest.",
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
- "be present on any other Endpoint of any Node.",
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
- "way that the manager of the device does not unconditionally grant universal access to all of a " +
52
- "device’s functionality, even for fabric administrators. For example, many Home Routers are managed " +
53
- "by an Internet Service Provider (a service), and these services often have a policy that requires " +
54
- "them to obtain user consent before certain administrative functions can be delegated to a third " +
55
- "party (e.g., a fabric Administrator). These restrictions are expressed using an Access Restriction " +
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
- "of unexpected behavior in controllers and clients." +
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
- "the server triggers a review of the current fabric restrictions, by involving external entities " +
82
- "such as end-users, or other services associated with the manager of the device hosting the server. " +
83
- "This review process may involve communication between external services and the user, and may take " +
84
- "an unpredictable amount of time to complete since an end-user may need to visit some resources, " +
85
- "such as a mobile application or web site. A FabricRestrictionReviewUpdate event will be generated " +
86
- "by the device within a predictable time period of the ReviewFabricRestrictionsResponse (see " +
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
- "types associated with an endpoint are listed in the Descriptor cluster of the endpoint." +
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
- "with targets on the Node.",
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
- "NOT decrease across time as software updates occur that could impact this value. If this is a " +
165
- "concern for a given implementation, it is recommended to only use the minimum value required and " +
166
- "avoid reporting a higher value than the required minimum.",
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
- "NOT decrease across time as software updates occur that could impact this value. If this is a " +
180
- "concern for a given implementation, it is recommended to only use the minimum value required and " +
181
- "avoid reporting a higher value than the required minimum.",
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
- "this server." +
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
- "NOT decrease across time as software updates occur that could impact this value. If this is a " +
195
- "concern for a given implementation, it is recommended to only use the minimum value required and " +
196
- "avoid reporting a higher value than the required minimum.",
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
- "device hosting this server has with external entities such as its owner, external service provider, " +
240
- "or end-user." +
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
- "hereafter) from other Nodes." +
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
- "ReviewFabricRestrictionsResponse with a FabricRestrictionReviewUpdate event.",
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
- " the user to allow viewing, downloading, installing or using a manufacturer-provided means for " +
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
- " described in Section 9.10.9.3.4, “ARLRequestFlowUrl format”." +
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
- " it SHOULD also provide a fallback option such as a web browser interface to ensure users can " +
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
- " in the ARLRequestFlowUrl unless they are referenced by a version of this specification." +
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
- "the client may replace the placeholder value \"_\" in the ExpandedARLRequestFlowUrl with a URL that " +
488
- "the manufacturer flow can use to make a smooth return to the client when the ARL flow has " +
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
- "algorithm on the provided CallbackUrl:" +
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
- " the following. Any value returned in the MTaer field not listed above shall be considered an " +
525
- " error and shall be treated as GeneralFailure." +
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
- "was computed from the CallbackUrl and opening such a URL is supported." +
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
- "shall be generated, in order to indicate completion of the review and any additional steps required " +
608
- "by the user for the review." +
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
- "may need to respond to an email or a push notification." +
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
- "associated with the device vendor.",
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
- "that successfully authenticates via AuthMode. The subjects list shall NOT be empty if the entry’s " +
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
- "manufacturers at their discretion.",
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
- "App match the user account on the Client." +
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
- "login for its users.",
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
- "this specification and will typically involve a central service which is in communication with both " +
88
- "the Content App and the Commissionee. The GetSetupPIN command is needed in order to provide the " +
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
- "number, using uppercase letters." +
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
- "is not valid for more than 10 minutes.",
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
  },