@project-chip/matter.js 0.9.2 → 0.9.4

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 (288) hide show
  1. package/dist/cjs/CommissioningServer.d.ts.map +1 -1
  2. package/dist/cjs/CommissioningServer.js +0 -1
  3. package/dist/cjs/CommissioningServer.js.map +2 -2
  4. package/dist/cjs/MatterDevice.d.ts +3 -0
  5. package/dist/cjs/MatterDevice.d.ts.map +1 -1
  6. package/dist/cjs/MatterDevice.js +21 -7
  7. package/dist/cjs/MatterDevice.js.map +2 -2
  8. package/dist/cjs/behavior/AccessControl.js +2 -2
  9. package/dist/cjs/behavior/AccessControl.js.map +2 -2
  10. package/dist/cjs/behavior/definitions/general-commissioning/ServerNodeFailsafeContext.d.ts +1 -0
  11. package/dist/cjs/behavior/definitions/general-commissioning/ServerNodeFailsafeContext.d.ts.map +1 -1
  12. package/dist/cjs/behavior/definitions/general-commissioning/ServerNodeFailsafeContext.js +14 -0
  13. package/dist/cjs/behavior/definitions/general-commissioning/ServerNodeFailsafeContext.js.map +2 -2
  14. package/dist/cjs/behavior/definitions/operational-credentials/OperationalCredentialsServer.d.ts.map +1 -1
  15. package/dist/cjs/behavior/definitions/operational-credentials/OperationalCredentialsServer.js +11 -2
  16. package/dist/cjs/behavior/definitions/operational-credentials/OperationalCredentialsServer.js.map +2 -2
  17. package/dist/cjs/behavior/state/transaction/Transaction.d.ts +18 -18
  18. package/dist/cjs/certificate/CertificateManager.d.ts.map +1 -1
  19. package/dist/cjs/certificate/CertificateManager.js +1 -0
  20. package/dist/cjs/certificate/CertificateManager.js.map +2 -2
  21. package/dist/cjs/certificate/CertificationDeclarationManager.d.ts +1 -1
  22. package/dist/cjs/certificate/CertificationDeclarationManager.d.ts.map +1 -1
  23. package/dist/cjs/certificate/CertificationDeclarationManager.js +3 -2
  24. package/dist/cjs/certificate/CertificationDeclarationManager.js.map +2 -2
  25. package/dist/cjs/cluster/server/AccessControlServer.js.map +1 -1
  26. package/dist/cjs/cluster/server/AttributeServer.d.ts +9 -0
  27. package/dist/cjs/cluster/server/AttributeServer.d.ts.map +1 -1
  28. package/dist/cjs/cluster/server/AttributeServer.js +62 -0
  29. package/dist/cjs/cluster/server/AttributeServer.js.map +3 -3
  30. package/dist/cjs/cluster/server/ClusterServer.d.ts.map +1 -1
  31. package/dist/cjs/cluster/server/ClusterServer.js +8 -1
  32. package/dist/cjs/cluster/server/ClusterServer.js.map +2 -2
  33. package/dist/cjs/cluster/server/ClusterServerTypes.d.ts +3 -3
  34. package/dist/cjs/cluster/server/ClusterServerTypes.d.ts.map +1 -1
  35. package/dist/cjs/cluster/server/ClusterServerTypes.js.map +1 -1
  36. package/dist/cjs/cluster/server/EventServer.d.ts +8 -2
  37. package/dist/cjs/cluster/server/EventServer.d.ts.map +1 -1
  38. package/dist/cjs/cluster/server/EventServer.js +33 -7
  39. package/dist/cjs/cluster/server/EventServer.js.map +2 -2
  40. package/dist/cjs/cluster/server/OperationalCredentialsServer.d.ts.map +1 -1
  41. package/dist/cjs/cluster/server/OperationalCredentialsServer.js +31 -8
  42. package/dist/cjs/cluster/server/OperationalCredentialsServer.js.map +2 -2
  43. package/dist/cjs/common/FailsafeContext.d.ts +1 -0
  44. package/dist/cjs/common/FailsafeContext.d.ts.map +1 -1
  45. package/dist/cjs/common/FailsafeContext.js +16 -2
  46. package/dist/cjs/common/FailsafeContext.js.map +2 -2
  47. package/dist/cjs/crypto/Crypto.d.ts +1 -1
  48. package/dist/cjs/crypto/Crypto.d.ts.map +1 -1
  49. package/dist/cjs/crypto/Crypto.js +2 -2
  50. package/dist/cjs/crypto/Crypto.js.map +2 -2
  51. package/dist/cjs/device/LegacyInteractionServer.d.ts +2 -2
  52. package/dist/cjs/device/LegacyInteractionServer.d.ts.map +1 -1
  53. package/dist/cjs/device/LegacyInteractionServer.js +13 -1
  54. package/dist/cjs/device/LegacyInteractionServer.js.map +2 -2
  55. package/dist/cjs/fabric/Fabric.d.ts +1 -0
  56. package/dist/cjs/fabric/Fabric.d.ts.map +1 -1
  57. package/dist/cjs/fabric/Fabric.js +5 -0
  58. package/dist/cjs/fabric/Fabric.js.map +2 -2
  59. package/dist/cjs/fabric/FabricManager.d.ts +1 -0
  60. package/dist/cjs/fabric/FabricManager.d.ts.map +1 -1
  61. package/dist/cjs/fabric/FabricManager.js +2 -1
  62. package/dist/cjs/fabric/FabricManager.js.map +2 -2
  63. package/dist/cjs/model/models/EventModel.d.ts +1 -0
  64. package/dist/cjs/model/models/EventModel.d.ts.map +1 -1
  65. package/dist/cjs/model/models/EventModel.js +3 -0
  66. package/dist/cjs/model/models/EventModel.js.map +2 -2
  67. package/dist/cjs/model/models/FieldModel.d.ts +1 -0
  68. package/dist/cjs/model/models/FieldModel.d.ts.map +1 -1
  69. package/dist/cjs/model/models/FieldModel.js +3 -0
  70. package/dist/cjs/model/models/FieldModel.js.map +2 -2
  71. package/dist/cjs/node/server/TransactionalInteractionServer.d.ts +2 -2
  72. package/dist/cjs/node/server/TransactionalInteractionServer.d.ts.map +1 -1
  73. package/dist/cjs/node/server/TransactionalInteractionServer.js +0 -2
  74. package/dist/cjs/node/server/TransactionalInteractionServer.js.map +2 -2
  75. package/dist/cjs/protocol/interaction/AttributeDataEncoder.d.ts +6 -3
  76. package/dist/cjs/protocol/interaction/AttributeDataEncoder.d.ts.map +1 -1
  77. package/dist/cjs/protocol/interaction/AttributeDataEncoder.js +14 -8
  78. package/dist/cjs/protocol/interaction/AttributeDataEncoder.js.map +2 -2
  79. package/dist/cjs/protocol/interaction/EventHandler.d.ts.map +1 -1
  80. package/dist/cjs/protocol/interaction/EventHandler.js +1 -3
  81. package/dist/cjs/protocol/interaction/EventHandler.js.map +2 -2
  82. package/dist/cjs/protocol/interaction/InteractionClient.js +1 -1
  83. package/dist/cjs/protocol/interaction/InteractionClient.js.map +2 -2
  84. package/dist/cjs/protocol/interaction/InteractionEndpointStructure.d.ts +3 -3
  85. package/dist/cjs/protocol/interaction/InteractionEndpointStructure.d.ts.map +1 -1
  86. package/dist/cjs/protocol/interaction/InteractionEndpointStructure.js +1 -0
  87. package/dist/cjs/protocol/interaction/InteractionEndpointStructure.js.map +2 -2
  88. package/dist/cjs/protocol/interaction/InteractionMessenger.d.ts +1 -1
  89. package/dist/cjs/protocol/interaction/InteractionMessenger.d.ts.map +1 -1
  90. package/dist/cjs/protocol/interaction/InteractionMessenger.js +11 -4
  91. package/dist/cjs/protocol/interaction/InteractionMessenger.js.map +2 -2
  92. package/dist/cjs/protocol/interaction/InteractionServer.d.ts +5 -6
  93. package/dist/cjs/protocol/interaction/InteractionServer.d.ts.map +1 -1
  94. package/dist/cjs/protocol/interaction/InteractionServer.js +44 -37
  95. package/dist/cjs/protocol/interaction/InteractionServer.js.map +2 -2
  96. package/dist/cjs/protocol/interaction/SubscriptionHandler.d.ts +31 -12
  97. package/dist/cjs/protocol/interaction/SubscriptionHandler.d.ts.map +1 -1
  98. package/dist/cjs/protocol/interaction/SubscriptionHandler.js +161 -69
  99. package/dist/cjs/protocol/interaction/SubscriptionHandler.js.map +3 -3
  100. package/dist/cjs/session/SecureSession.d.ts.map +1 -1
  101. package/dist/cjs/session/SecureSession.js +2 -1
  102. package/dist/cjs/session/SecureSession.js.map +2 -2
  103. package/dist/cjs/session/SessionManager.d.ts +2 -0
  104. package/dist/cjs/session/SessionManager.d.ts.map +1 -1
  105. package/dist/cjs/session/SessionManager.js +7 -0
  106. package/dist/cjs/session/SessionManager.js.map +2 -2
  107. package/dist/cjs/tlv/TlvArray.d.ts +2 -2
  108. package/dist/cjs/tlv/TlvArray.d.ts.map +1 -1
  109. package/dist/cjs/tlv/TlvArray.js +2 -2
  110. package/dist/cjs/tlv/TlvArray.js.map +2 -2
  111. package/dist/cjs/tlv/TlvNullable.d.ts +2 -2
  112. package/dist/cjs/tlv/TlvNullable.d.ts.map +1 -1
  113. package/dist/cjs/tlv/TlvNullable.js +2 -2
  114. package/dist/cjs/tlv/TlvNullable.js.map +2 -2
  115. package/dist/cjs/tlv/TlvObject.d.ts +2 -2
  116. package/dist/cjs/tlv/TlvObject.d.ts.map +1 -1
  117. package/dist/cjs/tlv/TlvObject.js +18 -12
  118. package/dist/cjs/tlv/TlvObject.js.map +2 -2
  119. package/dist/cjs/tlv/TlvSchema.d.ts +14 -2
  120. package/dist/cjs/tlv/TlvSchema.d.ts.map +1 -1
  121. package/dist/cjs/tlv/TlvSchema.js +2 -2
  122. package/dist/cjs/tlv/TlvSchema.js.map +2 -2
  123. package/dist/cjs/tlv/TlvWrapper.d.ts +2 -2
  124. package/dist/cjs/tlv/TlvWrapper.d.ts.map +1 -1
  125. package/dist/cjs/tlv/TlvWrapper.js +2 -2
  126. package/dist/cjs/tlv/TlvWrapper.js.map +2 -2
  127. package/dist/esm/CommissioningServer.d.ts.map +1 -1
  128. package/dist/esm/CommissioningServer.js +0 -1
  129. package/dist/esm/CommissioningServer.js.map +2 -2
  130. package/dist/esm/MatterDevice.d.ts +3 -0
  131. package/dist/esm/MatterDevice.d.ts.map +1 -1
  132. package/dist/esm/MatterDevice.js +21 -7
  133. package/dist/esm/MatterDevice.js.map +2 -2
  134. package/dist/esm/behavior/AccessControl.js +2 -2
  135. package/dist/esm/behavior/AccessControl.js.map +2 -2
  136. package/dist/esm/behavior/definitions/general-commissioning/ServerNodeFailsafeContext.d.ts +1 -0
  137. package/dist/esm/behavior/definitions/general-commissioning/ServerNodeFailsafeContext.d.ts.map +1 -1
  138. package/dist/esm/behavior/definitions/general-commissioning/ServerNodeFailsafeContext.js +15 -1
  139. package/dist/esm/behavior/definitions/general-commissioning/ServerNodeFailsafeContext.js.map +2 -2
  140. package/dist/esm/behavior/definitions/operational-credentials/OperationalCredentialsServer.d.ts.map +1 -1
  141. package/dist/esm/behavior/definitions/operational-credentials/OperationalCredentialsServer.js +11 -2
  142. package/dist/esm/behavior/definitions/operational-credentials/OperationalCredentialsServer.js.map +2 -2
  143. package/dist/esm/behavior/state/transaction/Transaction.d.ts +18 -18
  144. package/dist/esm/certificate/CertificateManager.d.ts.map +1 -1
  145. package/dist/esm/certificate/CertificateManager.js +1 -0
  146. package/dist/esm/certificate/CertificateManager.js.map +2 -2
  147. package/dist/esm/certificate/CertificationDeclarationManager.d.ts +1 -1
  148. package/dist/esm/certificate/CertificationDeclarationManager.d.ts.map +1 -1
  149. package/dist/esm/certificate/CertificationDeclarationManager.js +3 -2
  150. package/dist/esm/certificate/CertificationDeclarationManager.js.map +2 -2
  151. package/dist/esm/cluster/server/AccessControlServer.js.map +1 -1
  152. package/dist/esm/cluster/server/AttributeServer.d.ts +9 -0
  153. package/dist/esm/cluster/server/AttributeServer.d.ts.map +1 -1
  154. package/dist/esm/cluster/server/AttributeServer.js +69 -1
  155. package/dist/esm/cluster/server/AttributeServer.js.map +2 -2
  156. package/dist/esm/cluster/server/ClusterServer.d.ts.map +1 -1
  157. package/dist/esm/cluster/server/ClusterServer.js +9 -2
  158. package/dist/esm/cluster/server/ClusterServer.js.map +2 -2
  159. package/dist/esm/cluster/server/ClusterServerTypes.d.ts +3 -3
  160. package/dist/esm/cluster/server/ClusterServerTypes.d.ts.map +1 -1
  161. package/dist/esm/cluster/server/ClusterServerTypes.js.map +1 -1
  162. package/dist/esm/cluster/server/EventServer.d.ts +8 -2
  163. package/dist/esm/cluster/server/EventServer.d.ts.map +1 -1
  164. package/dist/esm/cluster/server/EventServer.js +33 -7
  165. package/dist/esm/cluster/server/EventServer.js.map +2 -2
  166. package/dist/esm/cluster/server/OperationalCredentialsServer.d.ts.map +1 -1
  167. package/dist/esm/cluster/server/OperationalCredentialsServer.js +31 -8
  168. package/dist/esm/cluster/server/OperationalCredentialsServer.js.map +2 -2
  169. package/dist/esm/common/FailsafeContext.d.ts +1 -0
  170. package/dist/esm/common/FailsafeContext.d.ts.map +1 -1
  171. package/dist/esm/common/FailsafeContext.js +17 -3
  172. package/dist/esm/common/FailsafeContext.js.map +2 -2
  173. package/dist/esm/crypto/Crypto.d.ts +1 -1
  174. package/dist/esm/crypto/Crypto.d.ts.map +1 -1
  175. package/dist/esm/crypto/Crypto.js +2 -2
  176. package/dist/esm/crypto/Crypto.js.map +2 -2
  177. package/dist/esm/device/LegacyInteractionServer.d.ts +2 -2
  178. package/dist/esm/device/LegacyInteractionServer.d.ts.map +1 -1
  179. package/dist/esm/device/LegacyInteractionServer.js +13 -1
  180. package/dist/esm/device/LegacyInteractionServer.js.map +2 -2
  181. package/dist/esm/fabric/Fabric.d.ts +1 -0
  182. package/dist/esm/fabric/Fabric.d.ts.map +1 -1
  183. package/dist/esm/fabric/Fabric.js +5 -0
  184. package/dist/esm/fabric/Fabric.js.map +2 -2
  185. package/dist/esm/fabric/FabricManager.d.ts +1 -0
  186. package/dist/esm/fabric/FabricManager.d.ts.map +1 -1
  187. package/dist/esm/fabric/FabricManager.js +2 -1
  188. package/dist/esm/fabric/FabricManager.js.map +2 -2
  189. package/dist/esm/model/models/EventModel.d.ts +1 -0
  190. package/dist/esm/model/models/EventModel.d.ts.map +1 -1
  191. package/dist/esm/model/models/EventModel.js +3 -0
  192. package/dist/esm/model/models/EventModel.js.map +2 -2
  193. package/dist/esm/model/models/FieldModel.d.ts +1 -0
  194. package/dist/esm/model/models/FieldModel.d.ts.map +1 -1
  195. package/dist/esm/model/models/FieldModel.js +3 -0
  196. package/dist/esm/model/models/FieldModel.js.map +2 -2
  197. package/dist/esm/node/server/TransactionalInteractionServer.d.ts +2 -2
  198. package/dist/esm/node/server/TransactionalInteractionServer.d.ts.map +1 -1
  199. package/dist/esm/node/server/TransactionalInteractionServer.js +0 -2
  200. package/dist/esm/node/server/TransactionalInteractionServer.js.map +2 -2
  201. package/dist/esm/protocol/interaction/AttributeDataEncoder.d.ts +6 -3
  202. package/dist/esm/protocol/interaction/AttributeDataEncoder.d.ts.map +1 -1
  203. package/dist/esm/protocol/interaction/AttributeDataEncoder.js +14 -8
  204. package/dist/esm/protocol/interaction/AttributeDataEncoder.js.map +2 -2
  205. package/dist/esm/protocol/interaction/EventHandler.d.ts.map +1 -1
  206. package/dist/esm/protocol/interaction/EventHandler.js +1 -3
  207. package/dist/esm/protocol/interaction/EventHandler.js.map +2 -2
  208. package/dist/esm/protocol/interaction/InteractionClient.js +1 -1
  209. package/dist/esm/protocol/interaction/InteractionClient.js.map +2 -2
  210. package/dist/esm/protocol/interaction/InteractionEndpointStructure.d.ts +3 -3
  211. package/dist/esm/protocol/interaction/InteractionEndpointStructure.d.ts.map +1 -1
  212. package/dist/esm/protocol/interaction/InteractionEndpointStructure.js +1 -0
  213. package/dist/esm/protocol/interaction/InteractionEndpointStructure.js.map +2 -2
  214. package/dist/esm/protocol/interaction/InteractionMessenger.d.ts +1 -1
  215. package/dist/esm/protocol/interaction/InteractionMessenger.d.ts.map +1 -1
  216. package/dist/esm/protocol/interaction/InteractionMessenger.js +11 -4
  217. package/dist/esm/protocol/interaction/InteractionMessenger.js.map +2 -2
  218. package/dist/esm/protocol/interaction/InteractionServer.d.ts +5 -6
  219. package/dist/esm/protocol/interaction/InteractionServer.d.ts.map +1 -1
  220. package/dist/esm/protocol/interaction/InteractionServer.js +44 -37
  221. package/dist/esm/protocol/interaction/InteractionServer.js.map +2 -2
  222. package/dist/esm/protocol/interaction/SubscriptionHandler.d.ts +31 -12
  223. package/dist/esm/protocol/interaction/SubscriptionHandler.d.ts.map +1 -1
  224. package/dist/esm/protocol/interaction/SubscriptionHandler.js +161 -69
  225. package/dist/esm/protocol/interaction/SubscriptionHandler.js.map +3 -3
  226. package/dist/esm/session/SecureSession.d.ts.map +1 -1
  227. package/dist/esm/session/SecureSession.js +2 -1
  228. package/dist/esm/session/SecureSession.js.map +2 -2
  229. package/dist/esm/session/SessionManager.d.ts +2 -0
  230. package/dist/esm/session/SessionManager.d.ts.map +1 -1
  231. package/dist/esm/session/SessionManager.js +7 -0
  232. package/dist/esm/session/SessionManager.js.map +2 -2
  233. package/dist/esm/tlv/TlvArray.d.ts +2 -2
  234. package/dist/esm/tlv/TlvArray.d.ts.map +1 -1
  235. package/dist/esm/tlv/TlvArray.js +2 -2
  236. package/dist/esm/tlv/TlvArray.js.map +2 -2
  237. package/dist/esm/tlv/TlvNullable.d.ts +2 -2
  238. package/dist/esm/tlv/TlvNullable.d.ts.map +1 -1
  239. package/dist/esm/tlv/TlvNullable.js +2 -2
  240. package/dist/esm/tlv/TlvNullable.js.map +2 -2
  241. package/dist/esm/tlv/TlvObject.d.ts +2 -2
  242. package/dist/esm/tlv/TlvObject.d.ts.map +1 -1
  243. package/dist/esm/tlv/TlvObject.js +19 -13
  244. package/dist/esm/tlv/TlvObject.js.map +2 -2
  245. package/dist/esm/tlv/TlvSchema.d.ts +14 -2
  246. package/dist/esm/tlv/TlvSchema.d.ts.map +1 -1
  247. package/dist/esm/tlv/TlvSchema.js +2 -2
  248. package/dist/esm/tlv/TlvSchema.js.map +2 -2
  249. package/dist/esm/tlv/TlvWrapper.d.ts +2 -2
  250. package/dist/esm/tlv/TlvWrapper.d.ts.map +1 -1
  251. package/dist/esm/tlv/TlvWrapper.js +2 -2
  252. package/dist/esm/tlv/TlvWrapper.js.map +2 -2
  253. package/package.json +3 -3
  254. package/src/CommissioningServer.ts +0 -1
  255. package/src/MatterDevice.ts +34 -7
  256. package/src/behavior/AccessControl.ts +2 -2
  257. package/src/behavior/definitions/general-commissioning/ServerNodeFailsafeContext.ts +21 -1
  258. package/src/behavior/definitions/operational-credentials/OperationalCredentialsServer.ts +13 -0
  259. package/src/certificate/CertificateManager.ts +1 -2
  260. package/src/certificate/CertificationDeclarationManager.ts +2 -2
  261. package/src/cluster/server/AccessControlServer.ts +3 -3
  262. package/src/cluster/server/AttributeServer.ts +79 -1
  263. package/src/cluster/server/ClusterServer.ts +9 -2
  264. package/src/cluster/server/ClusterServerTypes.ts +3 -3
  265. package/src/cluster/server/EventServer.ts +57 -10
  266. package/src/cluster/server/OperationalCredentialsServer.ts +35 -5
  267. package/src/common/FailsafeContext.ts +19 -7
  268. package/src/crypto/Crypto.ts +1 -1
  269. package/src/device/LegacyInteractionServer.ts +15 -4
  270. package/src/fabric/Fabric.ts +6 -0
  271. package/src/fabric/FabricManager.ts +1 -0
  272. package/src/model/models/EventModel.ts +4 -0
  273. package/src/model/models/FieldModel.ts +4 -0
  274. package/src/node/server/TransactionalInteractionServer.ts +2 -4
  275. package/src/protocol/interaction/AttributeDataEncoder.ts +20 -9
  276. package/src/protocol/interaction/EventHandler.ts +1 -3
  277. package/src/protocol/interaction/InteractionClient.ts +1 -1
  278. package/src/protocol/interaction/InteractionEndpointStructure.ts +4 -4
  279. package/src/protocol/interaction/InteractionMessenger.ts +12 -3
  280. package/src/protocol/interaction/InteractionServer.ts +53 -52
  281. package/src/protocol/interaction/SubscriptionHandler.ts +215 -92
  282. package/src/session/SecureSession.ts +2 -1
  283. package/src/session/SessionManager.ts +9 -0
  284. package/src/tlv/TlvArray.ts +3 -3
  285. package/src/tlv/TlvNullable.ts +3 -3
  286. package/src/tlv/TlvObject.ts +20 -14
  287. package/src/tlv/TlvSchema.ts +17 -3
  288. package/src/tlv/TlvWrapper.ts +3 -3
@@ -460,7 +460,7 @@ export class InteractionClient {
460
460
  const writeRequests = attributes.map(
461
461
  ({ endpointId, clusterId, attribute: { id, schema }, value, dataVersion }) => ({
462
462
  path: { endpointId, clusterId, attributeId: id },
463
- data: schema.encodeTlv(value, true),
463
+ data: schema.encodeTlv(value, { forWriteInteraction: true }),
464
464
  dataVersion,
465
465
  }),
466
466
  );
@@ -7,7 +7,7 @@
7
7
  import { AnyAttributeServer } from "../../cluster/server/AttributeServer.js";
8
8
  import { ClusterServerObj, asClusterServerInternal } from "../../cluster/server/ClusterServerTypes.js";
9
9
  import { CommandServer } from "../../cluster/server/CommandServer.js";
10
- import { EventServer } from "../../cluster/server/EventServer.js";
10
+ import { AnyEventServer } from "../../cluster/server/EventServer.js";
11
11
  import { ImplementationError, InternalError } from "../../common/MatterError.js";
12
12
  import { AttributeId } from "../../datatype/AttributeId.js";
13
13
  import { ClusterId } from "../../datatype/ClusterId.js";
@@ -37,11 +37,11 @@ export class InteractionEndpointStructure {
37
37
  endpoints = new Map<EndpointNumber, EndpointInterface>();
38
38
  attributes = new Map<string, AnyAttributeServer<any>>();
39
39
  attributePaths = new Array<AttributePath>();
40
- events = new Map<string, EventServer<any, any>>();
40
+ events = new Map<string, AnyEventServer<any, any>>();
41
41
  eventPaths = new Array<EventPath>();
42
42
  commands = new Map<string, CommandServer<any, any>>();
43
43
  commandPaths = new Array<CommandPath>();
44
- change = new Observable();
44
+ change = new Observable(); // TODO adjust to AsyncObservable when we remove legacy API
45
45
 
46
46
  public clear() {
47
47
  this.endpoints.clear();
@@ -220,7 +220,7 @@ export class InteractionEndpointStructure {
220
220
  throw new StatusResponseError(`Attribute ${attributeId} does not exist`, StatusCode.UnsupportedAttribute);
221
221
  }
222
222
 
223
- getEvent(endpointId: EndpointNumber, clusterId: ClusterId, eventId: EventId): EventServer<any, any> | undefined {
223
+ getEvent(endpointId: EndpointNumber, clusterId: ClusterId, eventId: EventId): AnyEventServer<any, any> | undefined {
224
224
  return this.events.get(eventPathToId({ endpointId, clusterId, eventId }));
225
225
  }
226
226
 
@@ -166,6 +166,7 @@ export class InteractionServerMessenger extends InteractionMessenger<MatterDevic
166
166
  const readRequest = TlvReadRequest.decode(message.payload);
167
167
  await this.sendDataReport(
168
168
  await recipient.handleReadRequest(this.exchange, readRequest, message),
169
+ readRequest.isFabricFiltered,
169
170
  );
170
171
  break;
171
172
  }
@@ -229,7 +230,7 @@ export class InteractionServerMessenger extends InteractionMessenger<MatterDevic
229
230
  * Handle DataReportPayload with the content of a DataReport to send, split them into multiple DataReport
230
231
  * messages and send them out based on the size.
231
232
  */
232
- async sendDataReport(dataReportPayload: DataReportPayload) {
233
+ async sendDataReport(dataReportPayload: DataReportPayload, forFabricFilteredRead: boolean) {
233
234
  const {
234
235
  subscriptionId,
235
236
  attributeReportsPayload,
@@ -272,7 +273,11 @@ export class InteractionServerMessenger extends InteractionMessenger<MatterDevic
272
273
  firstAttributeAddedToReportMessage = true;
273
274
  messageSize += 3; // Array element is added now which needs 3 bytes
274
275
  }
275
- const encodedAttribute = encodeAttributePayload(attributeReport);
276
+ const allowMissingFieldsForNonFabricFilteredRead =
277
+ !forFabricFilteredRead && attributeReport.hasFabricSensitiveData;
278
+ const encodedAttribute = encodeAttributePayload(attributeReport, {
279
+ allowMissingFieldsForNonFabricFilteredRead,
280
+ });
276
281
  const attributeReportBytes = TlvAny.getEncodedByteLength(encodedAttribute);
277
282
  if (messageSize + attributeReportBytes > MAX_SPDU_LENGTH) {
278
283
  if (canAttributePayloadBeChunked(attributeReport)) {
@@ -297,7 +302,11 @@ export class InteractionServerMessenger extends InteractionMessenger<MatterDevic
297
302
  firstEventAddedToReportMessage = true;
298
303
  messageSize += 3; // Array element is added now which needs 3 bytes
299
304
  }
300
- const encodedEvent = encodeEventPayload(eventReport);
305
+ const allowMissingFieldsForNonFabricFilteredRead =
306
+ !forFabricFilteredRead && eventReport.hasFabricSensitiveData;
307
+ const encodedEvent = encodeEventPayload(eventReport, {
308
+ allowMissingFieldsForNonFabricFilteredRead,
309
+ });
301
310
  const eventReportBytes = TlvAny.getEncodedByteLength(encodedEvent);
302
311
  if (messageSize + eventReportBytes > MAX_SPDU_LENGTH) {
303
312
  await sendAndResetReport();
@@ -12,7 +12,7 @@ import {
12
12
  FabricScopedAttributeServer,
13
13
  } from "../../cluster/server/AttributeServer.js";
14
14
  import { CommandServer } from "../../cluster/server/CommandServer.js";
15
- import { EventServer } from "../../cluster/server/EventServer.js";
15
+ import { AnyEventServer } from "../../cluster/server/EventServer.js";
16
16
  import { Message, SessionType } from "../../codec/MessageCodec.js";
17
17
  import { InternalError, MatterFlowError } from "../../common/MatterError.js";
18
18
  import { tryCatch, tryCatchAsync } from "../../common/TryCatchHandler.js";
@@ -31,7 +31,6 @@ import { Logger } from "../../log/Logger.js";
31
31
  import { GLOBAL_IDS } from "../../model/index.js";
32
32
  import { MessageExchange } from "../../protocol/MessageExchange.js";
33
33
  import { ProtocolHandler } from "../../protocol/ProtocolHandler.js";
34
- import { EventHandler } from "../../protocol/interaction/EventHandler.js";
35
34
  import { NoAssociatedFabricError, SecureSession, assertSecureSession } from "../../session/SecureSession.js";
36
35
  import { ArraySchema } from "../../tlv/TlvArray.js";
37
36
  import { TlvNoArguments } from "../../tlv/TlvNoArguments.js";
@@ -41,12 +40,7 @@ import {
41
40
  decodeListAttributeValueWithSchema,
42
41
  expandPathsInAttributeData,
43
42
  } from "./AttributeDataDecoder.js";
44
- import {
45
- AttributeReportPayload,
46
- DataReportPayload,
47
- EventDataPayload,
48
- EventReportPayload,
49
- } from "./AttributeDataEncoder.js";
43
+ import { AttributeReportPayload, DataReportPayload, EventReportPayload } from "./AttributeDataEncoder.js";
50
44
  import { InteractionEndpointStructure } from "./InteractionEndpointStructure.js";
51
45
  import {
52
46
  InteractionRecipient,
@@ -103,6 +97,7 @@ export interface EventPath {
103
97
  endpointId: EndpointNumber;
104
98
  clusterId: ClusterId;
105
99
  eventId: EventId;
100
+ isUrgent?: boolean;
106
101
  }
107
102
 
108
103
  export interface AttributeWithPath {
@@ -112,7 +107,7 @@ export interface AttributeWithPath {
112
107
 
113
108
  export interface EventWithPath {
114
109
  path: EventPath;
115
- event: EventServer<any, any>;
110
+ event: AnyEventServer<any, any>;
116
111
  }
117
112
 
118
113
  export interface CommandWithPath {
@@ -224,17 +219,15 @@ export class InteractionServer implements ProtocolHandler<MatterDevice>, Interac
224
219
  #nextSubscriptionId = Crypto.getRandomUInt32();
225
220
  readonly #subscriptionMap = new Map<number, SubscriptionHandler>();
226
221
  #isClosing = false;
227
- #subscriptionConfig: SubscriptionOptions.Configuration;
228
- #eventHandler: EventHandler;
222
+ readonly #subscriptionConfig: SubscriptionOptions.Configuration;
229
223
 
230
- constructor({ subscriptionOptions, eventHandler, endpointStructure }: InteractionServer.Configuration) {
224
+ constructor({ subscriptionOptions, endpointStructure }: InteractionServer.Configuration) {
231
225
  this.#subscriptionConfig = SubscriptionOptions.configurationFor(subscriptionOptions);
232
- this.#eventHandler = eventHandler;
233
226
  this.#endpointStructure = endpointStructure;
234
227
 
235
- this.#endpointStructure.change.on(() => {
228
+ this.#endpointStructure.change.on(async () => {
236
229
  for (const subscription of this.#subscriptionMap.values()) {
237
- subscription.updateSubscription();
230
+ await subscription.updateSubscription();
238
231
  }
239
232
  });
240
233
  }
@@ -340,6 +333,7 @@ export class InteractionServer implements ProtocolHandler<MatterDevice>, Interac
340
333
  }`,
341
334
  );
342
335
  attributeReportsPayload.push({
336
+ hasFabricSensitiveData: false,
343
337
  attributeStatus: { path: requestPath, status: { status: error.code } },
344
338
  });
345
339
  },
@@ -405,6 +399,7 @@ export class InteractionServer implements ProtocolHandler<MatterDevice>, Interac
405
399
 
406
400
  const { schema } = attribute;
407
401
  attributeReportsPayload.push({
402
+ hasFabricSensitiveData: attribute.hasFabricSensitiveData,
408
403
  attributeData: { path, dataVersion: version, payload: value, schema },
409
404
  });
410
405
  } catch (error) {
@@ -417,7 +412,10 @@ export class InteractionServer implements ProtocolHandler<MatterDevice>, Interac
417
412
  if (error instanceof StatusResponseError) {
418
413
  // Add StatusResponseErrors, but only when the initial path was concrete, else error are ignored
419
414
  if (isConcreteAttributePath(requestPath)) {
420
- attributeReportsPayload.push({ attributeStatus: { path, status: { status: error.code } } });
415
+ attributeReportsPayload.push({
416
+ hasFabricSensitiveData: false,
417
+ attributeStatus: { path, status: { status: error.code } },
418
+ });
421
419
  }
422
420
  } else {
423
421
  throw error;
@@ -463,6 +461,7 @@ export class InteractionServer implements ProtocolHandler<MatterDevice>, Interac
463
461
  }`,
464
462
  );
465
463
  eventReportsPayload?.push({
464
+ hasFabricSensitiveData: false,
466
465
  eventStatus: { path: requestPath, status: { status: error.code } },
467
466
  });
468
467
  },
@@ -471,7 +470,7 @@ export class InteractionServer implements ProtocolHandler<MatterDevice>, Interac
471
470
  continue;
472
471
  }
473
472
 
474
- const reportsForPath = new Array<{ eventData: EventDataPayload }>();
473
+ const reportsForPath = new Array<EventReportPayload>();
475
474
  for (const { path, event } of events) {
476
475
  try {
477
476
  const { endpointId } = path;
@@ -492,6 +491,7 @@ export class InteractionServer implements ProtocolHandler<MatterDevice>, Interac
492
491
  const { schema } = event;
493
492
  reportsForPath.push(
494
493
  ...matchingEvents.map(({ eventNumber, priority, epochTimestamp, data }) => ({
494
+ hasFabricSensitiveData: event.hasFabricSensitiveData,
495
495
  eventData: {
496
496
  path,
497
497
  eventNumber,
@@ -512,7 +512,10 @@ export class InteractionServer implements ProtocolHandler<MatterDevice>, Interac
512
512
  if (error instanceof StatusResponseError) {
513
513
  // Add StatusResponseErrors, but only when the initial path was concrete, else error are ignored
514
514
  if (isConcreteEventPath(requestPath)) {
515
- eventReportsPayload?.push({ eventStatus: { path, status: { status: error.code } } });
515
+ eventReportsPayload?.push({
516
+ hasFabricSensitiveData: false,
517
+ eventStatus: { path, status: { status: error.code } },
518
+ });
516
519
  }
517
520
  } else {
518
521
  throw error;
@@ -558,7 +561,7 @@ export class InteractionServer implements ProtocolHandler<MatterDevice>, Interac
558
561
  protected async readEvent(
559
562
  _path: EventPath,
560
563
  eventFilters: TypeFromSchema<typeof TlvEventFilter>[] | undefined,
561
- event: EventServer<any, any>,
564
+ event: AnyEventServer<any, any>,
562
565
  exchange: MessageExchange<MatterDevice>,
563
566
  isFabricFiltered: boolean,
564
567
  message: Message,
@@ -1006,46 +1009,43 @@ export class InteractionServer implements ProtocolHandler<MatterDevice>, Interac
1006
1009
 
1007
1010
  if (this.#nextSubscriptionId === 0xffffffff) this.#nextSubscriptionId = 0;
1008
1011
  const subscriptionId = this.#nextSubscriptionId++;
1009
- const subscriptionHandler = new SubscriptionHandler(
1012
+ const subscriptionHandler = new SubscriptionHandler({
1010
1013
  subscriptionId,
1011
1014
  session,
1012
- this.#endpointStructure,
1015
+ endpointStructure: this.#endpointStructure,
1013
1016
  attributeRequests,
1014
1017
  dataVersionFilters,
1015
1018
  eventRequests,
1016
1019
  eventFilters,
1017
- this.#eventHandler,
1018
1020
  isFabricFiltered,
1019
- minIntervalFloorSeconds,
1020
- maxIntervalCeilingSeconds,
1021
- () => this.#subscriptionMap.delete(subscriptionId),
1022
- this.#subscriptionConfig,
1023
- );
1021
+ minIntervalFloor: minIntervalFloorSeconds,
1022
+ maxIntervalCeiling: maxIntervalCeilingSeconds,
1023
+ cancelCallback: () => this.#subscriptionMap.delete(subscriptionId),
1024
+ subscriptionOptions: this.#subscriptionConfig,
1025
+ readAttribute: (path, attribute) =>
1026
+ this.readAttribute(
1027
+ path,
1028
+ attribute,
1029
+ exchange,
1030
+ isFabricFiltered,
1031
+ message,
1032
+ this.#endpointStructure.getEndpoint(path.endpointId)!,
1033
+ ),
1034
+ readEvent: (path, event, eventFilters) =>
1035
+ this.readEvent(
1036
+ path,
1037
+ eventFilters,
1038
+ event,
1039
+ exchange,
1040
+ isFabricFiltered,
1041
+ message,
1042
+ this.#endpointStructure.getEndpoint(path.endpointId)!,
1043
+ ),
1044
+ });
1024
1045
 
1025
1046
  try {
1026
1047
  // Send initial data report to prime the subscription with initial data
1027
- await subscriptionHandler.sendInitialReport(
1028
- messenger,
1029
- (path, attribute) =>
1030
- this.readAttribute(
1031
- path,
1032
- attribute,
1033
- exchange,
1034
- isFabricFiltered,
1035
- message,
1036
- this.#endpointStructure.getEndpoint(path.endpointId)!,
1037
- ),
1038
- (path, event, eventFilters) =>
1039
- this.readEvent(
1040
- path,
1041
- eventFilters,
1042
- event,
1043
- exchange,
1044
- isFabricFiltered,
1045
- message,
1046
- this.#endpointStructure.getEndpoint(path.endpointId)!,
1047
- ),
1048
- );
1048
+ await subscriptionHandler.sendInitialReport(messenger);
1049
1049
  } catch (error: any) {
1050
1050
  logger.error(
1051
1051
  `Subscription ${subscriptionId} for Session ${session.id}: Error while sending initial data reports`,
@@ -1061,8 +1061,10 @@ export class InteractionServer implements ProtocolHandler<MatterDevice>, Interac
1061
1061
  }
1062
1062
 
1063
1063
  if (!keepSubscriptions) {
1064
- logger.debug(`Clear subscriptions for Session ${session.name} because keepSubscriptions=false`);
1065
- await session.clearSubscriptions(true);
1064
+ logger.debug(
1065
+ `Clear subscriptions for Subscriber node ${session.peerNodeId} because keepSubscriptions=false`,
1066
+ );
1067
+ await session.context.clearSubscriptionsForNode(fabric.fabricIndex, session.peerNodeId, true);
1066
1068
  }
1067
1069
 
1068
1070
  const maxInterval = subscriptionHandler.getMaxInterval();
@@ -1309,7 +1311,6 @@ export class InteractionServer implements ProtocolHandler<MatterDevice>, Interac
1309
1311
  export namespace InteractionServer {
1310
1312
  export interface Configuration {
1311
1313
  readonly subscriptionOptions?: SubscriptionOptions;
1312
- readonly eventHandler: EventHandler;
1313
1314
  readonly endpointStructure: InteractionEndpointStructure;
1314
1315
  }
1315
1316
  }