@matter/protocol 0.11.0-alpha.0-20241005-e3e4e4a7a

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 (853) hide show
  1. package/LICENSE +201 -0
  2. package/dist/cjs/MatterDevice.d.ts +79 -0
  3. package/dist/cjs/MatterDevice.d.ts.map +1 -0
  4. package/dist/cjs/MatterDevice.js +253 -0
  5. package/dist/cjs/MatterDevice.js.map +6 -0
  6. package/dist/cjs/ble/Ble.d.ts +29 -0
  7. package/dist/cjs/ble/Ble.d.ts.map +1 -0
  8. package/dist/cjs/ble/Ble.js +50 -0
  9. package/dist/cjs/ble/Ble.js.map +6 -0
  10. package/dist/cjs/ble/BleConsts.d.ts +32 -0
  11. package/dist/cjs/ble/BleConsts.d.ts.map +1 -0
  12. package/dist/cjs/ble/BleConsts.js +53 -0
  13. package/dist/cjs/ble/BleConsts.js.map +6 -0
  14. package/dist/cjs/ble/BtpSessionHandler.d.ts +87 -0
  15. package/dist/cjs/ble/BtpSessionHandler.d.ts.map +1 -0
  16. package/dist/cjs/ble/BtpSessionHandler.js +432 -0
  17. package/dist/cjs/ble/BtpSessionHandler.js.map +6 -0
  18. package/dist/cjs/ble/index.d.ts +9 -0
  19. package/dist/cjs/ble/index.d.ts.map +1 -0
  20. package/dist/cjs/ble/index.js +26 -0
  21. package/dist/cjs/ble/index.js.map +6 -0
  22. package/dist/cjs/certificate/AttestationCertificateManager.d.ts +28 -0
  23. package/dist/cjs/certificate/AttestationCertificateManager.d.ts.map +1 -0
  24. package/dist/cjs/certificate/AttestationCertificateManager.js +171 -0
  25. package/dist/cjs/certificate/AttestationCertificateManager.js.map +6 -0
  26. package/dist/cjs/certificate/CertificateManager.d.ts +575 -0
  27. package/dist/cjs/certificate/CertificateManager.d.ts.map +1 -0
  28. package/dist/cjs/certificate/CertificateManager.js +810 -0
  29. package/dist/cjs/certificate/CertificateManager.js.map +6 -0
  30. package/dist/cjs/certificate/CertificationDeclarationManager.d.ts +5 -0
  31. package/dist/cjs/certificate/CertificationDeclarationManager.d.ts.map +1 -0
  32. package/dist/cjs/certificate/CertificationDeclarationManager.js +54 -0
  33. package/dist/cjs/certificate/CertificationDeclarationManager.js.map +6 -0
  34. package/dist/cjs/certificate/ChipPAAuthorities.d.ts +14 -0
  35. package/dist/cjs/certificate/ChipPAAuthorities.d.ts.map +1 -0
  36. package/dist/cjs/certificate/ChipPAAuthorities.js +57 -0
  37. package/dist/cjs/certificate/ChipPAAuthorities.js.map +6 -0
  38. package/dist/cjs/certificate/DeviceCertification.d.ts +30 -0
  39. package/dist/cjs/certificate/DeviceCertification.d.ts.map +1 -0
  40. package/dist/cjs/certificate/DeviceCertification.js +103 -0
  41. package/dist/cjs/certificate/DeviceCertification.js.map +6 -0
  42. package/dist/cjs/certificate/RootCertificateManager.d.ts +33 -0
  43. package/dist/cjs/certificate/RootCertificateManager.d.ts.map +1 -0
  44. package/dist/cjs/certificate/RootCertificateManager.js +142 -0
  45. package/dist/cjs/certificate/RootCertificateManager.js.map +6 -0
  46. package/dist/cjs/certificate/index.d.ts +12 -0
  47. package/dist/cjs/certificate/index.d.ts.map +1 -0
  48. package/dist/cjs/certificate/index.js +29 -0
  49. package/dist/cjs/certificate/index.js.map +6 -0
  50. package/dist/cjs/cluster/client/AttributeClient.d.ts +61 -0
  51. package/dist/cjs/cluster/client/AttributeClient.d.ts.map +1 -0
  52. package/dist/cjs/cluster/client/AttributeClient.js +177 -0
  53. package/dist/cjs/cluster/client/AttributeClient.js.map +6 -0
  54. package/dist/cjs/cluster/client/ClusterClient.d.ts +10 -0
  55. package/dist/cjs/cluster/client/ClusterClient.d.ts.map +1 -0
  56. package/dist/cjs/cluster/client/ClusterClient.js +281 -0
  57. package/dist/cjs/cluster/client/ClusterClient.js.map +6 -0
  58. package/dist/cjs/cluster/client/ClusterClientTypes.d.ts +171 -0
  59. package/dist/cjs/cluster/client/ClusterClientTypes.d.ts.map +1 -0
  60. package/dist/cjs/cluster/client/ClusterClientTypes.js +22 -0
  61. package/dist/cjs/cluster/client/ClusterClientTypes.js.map +6 -0
  62. package/dist/cjs/cluster/client/EventClient.d.ts +41 -0
  63. package/dist/cjs/cluster/client/EventClient.d.ts.map +1 -0
  64. package/dist/cjs/cluster/client/EventClient.js +94 -0
  65. package/dist/cjs/cluster/client/EventClient.js.map +6 -0
  66. package/dist/cjs/cluster/client/index.d.ts +10 -0
  67. package/dist/cjs/cluster/client/index.d.ts.map +1 -0
  68. package/dist/cjs/cluster/client/index.js +27 -0
  69. package/dist/cjs/cluster/client/index.js.map +6 -0
  70. package/dist/cjs/cluster/index.d.ts +8 -0
  71. package/dist/cjs/cluster/index.d.ts.map +1 -0
  72. package/dist/cjs/cluster/index.js +25 -0
  73. package/dist/cjs/cluster/index.js.map +6 -0
  74. package/dist/cjs/cluster/server/AttributeServer.d.ts +307 -0
  75. package/dist/cjs/cluster/server/AttributeServer.d.ts.map +1 -0
  76. package/dist/cjs/cluster/server/AttributeServer.js +734 -0
  77. package/dist/cjs/cluster/server/AttributeServer.js.map +6 -0
  78. package/dist/cjs/cluster/server/ClusterDatasource.d.ts +16 -0
  79. package/dist/cjs/cluster/server/ClusterDatasource.d.ts.map +1 -0
  80. package/dist/cjs/cluster/server/ClusterDatasource.js +22 -0
  81. package/dist/cjs/cluster/server/ClusterDatasource.js.map +6 -0
  82. package/dist/cjs/cluster/server/ClusterServer.d.ts +40 -0
  83. package/dist/cjs/cluster/server/ClusterServer.d.ts.map +1 -0
  84. package/dist/cjs/cluster/server/ClusterServer.js +22 -0
  85. package/dist/cjs/cluster/server/ClusterServer.js.map +6 -0
  86. package/dist/cjs/cluster/server/CommandServer.d.ts +34 -0
  87. package/dist/cjs/cluster/server/CommandServer.d.ts.map +1 -0
  88. package/dist/cjs/cluster/server/CommandServer.js +76 -0
  89. package/dist/cjs/cluster/server/CommandServer.js.map +6 -0
  90. package/dist/cjs/cluster/server/EventServer.d.ts +41 -0
  91. package/dist/cjs/cluster/server/EventServer.d.ts.map +1 -0
  92. package/dist/cjs/cluster/server/EventServer.js +149 -0
  93. package/dist/cjs/cluster/server/EventServer.js.map +6 -0
  94. package/dist/cjs/cluster/server/index.d.ts +11 -0
  95. package/dist/cjs/cluster/server/index.d.ts.map +1 -0
  96. package/dist/cjs/cluster/server/index.js +28 -0
  97. package/dist/cjs/cluster/server/index.js.map +6 -0
  98. package/dist/cjs/codec/BtpCodec.d.ts +78 -0
  99. package/dist/cjs/codec/BtpCodec.d.ts.map +1 -0
  100. package/dist/cjs/codec/BtpCodec.js +254 -0
  101. package/dist/cjs/codec/BtpCodec.js.map +6 -0
  102. package/dist/cjs/codec/MessageCodec.d.ts +63 -0
  103. package/dist/cjs/codec/MessageCodec.d.ts.map +1 -0
  104. package/dist/cjs/codec/MessageCodec.js +220 -0
  105. package/dist/cjs/codec/MessageCodec.js.map +6 -0
  106. package/dist/cjs/codec/index.d.ts +9 -0
  107. package/dist/cjs/codec/index.d.ts.map +1 -0
  108. package/dist/cjs/codec/index.js +36 -0
  109. package/dist/cjs/codec/index.js.map +6 -0
  110. package/dist/cjs/common/FailsafeContext.d.ts +79 -0
  111. package/dist/cjs/common/FailsafeContext.d.ts.map +1 -0
  112. package/dist/cjs/common/FailsafeContext.js +237 -0
  113. package/dist/cjs/common/FailsafeContext.js.map +6 -0
  114. package/dist/cjs/common/FailsafeTimer.d.ts +25 -0
  115. package/dist/cjs/common/FailsafeTimer.d.ts.map +1 -0
  116. package/dist/cjs/common/FailsafeTimer.js +91 -0
  117. package/dist/cjs/common/FailsafeTimer.js.map +6 -0
  118. package/dist/cjs/common/InstanceBroadcaster.d.ts +273 -0
  119. package/dist/cjs/common/InstanceBroadcaster.d.ts.map +1 -0
  120. package/dist/cjs/common/InstanceBroadcaster.js +139 -0
  121. package/dist/cjs/common/InstanceBroadcaster.js.map +6 -0
  122. package/dist/cjs/common/OperationalCredentialsTypes.d.ts +21 -0
  123. package/dist/cjs/common/OperationalCredentialsTypes.d.ts.map +1 -0
  124. package/dist/cjs/common/OperationalCredentialsTypes.js +45 -0
  125. package/dist/cjs/common/OperationalCredentialsTypes.js.map +6 -0
  126. package/dist/cjs/common/Scanner.d.ts +121 -0
  127. package/dist/cjs/common/Scanner.d.ts.map +1 -0
  128. package/dist/cjs/common/Scanner.js +51 -0
  129. package/dist/cjs/common/Scanner.js.map +6 -0
  130. package/dist/cjs/common/index.d.ts +12 -0
  131. package/dist/cjs/common/index.d.ts.map +1 -0
  132. package/dist/cjs/common/index.js +29 -0
  133. package/dist/cjs/common/index.js.map +6 -0
  134. package/dist/cjs/endpoint/EndpointInterface.d.ts +37 -0
  135. package/dist/cjs/endpoint/EndpointInterface.d.ts.map +1 -0
  136. package/dist/cjs/endpoint/EndpointInterface.js +22 -0
  137. package/dist/cjs/endpoint/EndpointInterface.js.map +6 -0
  138. package/dist/cjs/endpoint/EndpointStructureLogger.d.ts +31 -0
  139. package/dist/cjs/endpoint/EndpointStructureLogger.d.ts.map +1 -0
  140. package/dist/cjs/endpoint/EndpointStructureLogger.js +236 -0
  141. package/dist/cjs/endpoint/EndpointStructureLogger.js.map +6 -0
  142. package/dist/cjs/endpoint/index.d.ts +8 -0
  143. package/dist/cjs/endpoint/index.d.ts.map +1 -0
  144. package/dist/cjs/endpoint/index.js +25 -0
  145. package/dist/cjs/endpoint/index.js.map +6 -0
  146. package/dist/cjs/fabric/Fabric.d.ts +121 -0
  147. package/dist/cjs/fabric/Fabric.d.ts.map +1 -0
  148. package/dist/cjs/fabric/Fabric.js +427 -0
  149. package/dist/cjs/fabric/Fabric.js.map +6 -0
  150. package/dist/cjs/fabric/FabricManager.d.ts +44 -0
  151. package/dist/cjs/fabric/FabricManager.d.ts.map +1 -0
  152. package/dist/cjs/fabric/FabricManager.js +209 -0
  153. package/dist/cjs/fabric/FabricManager.js.map +6 -0
  154. package/dist/cjs/fabric/index.d.ts +8 -0
  155. package/dist/cjs/fabric/index.d.ts.map +1 -0
  156. package/dist/cjs/fabric/index.js +25 -0
  157. package/dist/cjs/fabric/index.js.map +6 -0
  158. package/dist/cjs/index.d.ts +20 -0
  159. package/dist/cjs/index.d.ts.map +1 -0
  160. package/dist/cjs/index.js +37 -0
  161. package/dist/cjs/index.js.map +6 -0
  162. package/dist/cjs/interaction/AccessControlManager.d.ts +49 -0
  163. package/dist/cjs/interaction/AccessControlManager.d.ts.map +1 -0
  164. package/dist/cjs/interaction/AccessControlManager.js +248 -0
  165. package/dist/cjs/interaction/AccessControlManager.js.map +6 -0
  166. package/dist/cjs/interaction/AttributeDataDecoder.d.ts +52 -0
  167. package/dist/cjs/interaction/AttributeDataDecoder.d.ts.map +1 -0
  168. package/dist/cjs/interaction/AttributeDataDecoder.js +185 -0
  169. package/dist/cjs/interaction/AttributeDataDecoder.js.map +6 -0
  170. package/dist/cjs/interaction/AttributeDataEncoder.d.ts +71 -0
  171. package/dist/cjs/interaction/AttributeDataEncoder.d.ts.map +1 -0
  172. package/dist/cjs/interaction/AttributeDataEncoder.js +190 -0
  173. package/dist/cjs/interaction/AttributeDataEncoder.js.map +6 -0
  174. package/dist/cjs/interaction/EventDataDecoder.d.ts +30 -0
  175. package/dist/cjs/interaction/EventDataDecoder.d.ts.map +1 -0
  176. package/dist/cjs/interaction/EventDataDecoder.js +103 -0
  177. package/dist/cjs/interaction/EventDataDecoder.js.map +6 -0
  178. package/dist/cjs/interaction/EventHandler.d.ts +42 -0
  179. package/dist/cjs/interaction/EventHandler.d.ts.map +1 -0
  180. package/dist/cjs/interaction/EventHandler.js +112 -0
  181. package/dist/cjs/interaction/EventHandler.js.map +6 -0
  182. package/dist/cjs/interaction/InteractionClient.d.ts +294 -0
  183. package/dist/cjs/interaction/InteractionClient.d.ts.map +1 -0
  184. package/dist/cjs/interaction/InteractionClient.js +829 -0
  185. package/dist/cjs/interaction/InteractionClient.js.map +6 -0
  186. package/dist/cjs/interaction/InteractionEndpointStructure.d.ts +59 -0
  187. package/dist/cjs/interaction/InteractionEndpointStructure.d.ts.map +1 -0
  188. package/dist/cjs/interaction/InteractionEndpointStructure.js +341 -0
  189. package/dist/cjs/interaction/InteractionEndpointStructure.js.map +6 -0
  190. package/dist/cjs/interaction/InteractionMessenger.d.ts +315 -0
  191. package/dist/cjs/interaction/InteractionMessenger.d.ts.map +1 -0
  192. package/dist/cjs/interaction/InteractionMessenger.js +484 -0
  193. package/dist/cjs/interaction/InteractionMessenger.js.map +6 -0
  194. package/dist/cjs/interaction/InteractionServer.d.ts +97 -0
  195. package/dist/cjs/interaction/InteractionServer.d.ts.map +1 -0
  196. package/dist/cjs/interaction/InteractionServer.js +1026 -0
  197. package/dist/cjs/interaction/InteractionServer.js.map +6 -0
  198. package/dist/cjs/interaction/ServerSubscription.d.ts +121 -0
  199. package/dist/cjs/interaction/ServerSubscription.d.ts.map +1 -0
  200. package/dist/cjs/interaction/ServerSubscription.js +672 -0
  201. package/dist/cjs/interaction/ServerSubscription.js.map +6 -0
  202. package/dist/cjs/interaction/Subscription.d.ts +44 -0
  203. package/dist/cjs/interaction/Subscription.d.ts.map +1 -0
  204. package/dist/cjs/interaction/Subscription.js +85 -0
  205. package/dist/cjs/interaction/Subscription.js.map +6 -0
  206. package/dist/cjs/interaction/SubscriptionOptions.d.ts +43 -0
  207. package/dist/cjs/interaction/SubscriptionOptions.d.ts.map +1 -0
  208. package/dist/cjs/interaction/SubscriptionOptions.js +46 -0
  209. package/dist/cjs/interaction/SubscriptionOptions.js.map +6 -0
  210. package/dist/cjs/interaction/index.d.ts +17 -0
  211. package/dist/cjs/interaction/index.d.ts.map +1 -0
  212. package/dist/cjs/interaction/index.js +34 -0
  213. package/dist/cjs/interaction/index.js.map +6 -0
  214. package/dist/cjs/mdns/MdnsBroadcaster.d.ts +34 -0
  215. package/dist/cjs/mdns/MdnsBroadcaster.d.ts.map +1 -0
  216. package/dist/cjs/mdns/MdnsBroadcaster.js +338 -0
  217. package/dist/cjs/mdns/MdnsBroadcaster.js.map +6 -0
  218. package/dist/cjs/mdns/MdnsConsts.d.ts +19 -0
  219. package/dist/cjs/mdns/MdnsConsts.d.ts.map +1 -0
  220. package/dist/cjs/mdns/MdnsConsts.js +52 -0
  221. package/dist/cjs/mdns/MdnsConsts.js.map +6 -0
  222. package/dist/cjs/mdns/MdnsInstanceBroadcaster.d.ts +28 -0
  223. package/dist/cjs/mdns/MdnsInstanceBroadcaster.d.ts.map +1 -0
  224. package/dist/cjs/mdns/MdnsInstanceBroadcaster.js +87 -0
  225. package/dist/cjs/mdns/MdnsInstanceBroadcaster.js.map +6 -0
  226. package/dist/cjs/mdns/MdnsScanner.d.ts +79 -0
  227. package/dist/cjs/mdns/MdnsScanner.d.ts.map +1 -0
  228. package/dist/cjs/mdns/MdnsScanner.js +842 -0
  229. package/dist/cjs/mdns/MdnsScanner.js.map +6 -0
  230. package/dist/cjs/mdns/MdnsServer.d.ts +29 -0
  231. package/dist/cjs/mdns/MdnsServer.d.ts.map +1 -0
  232. package/dist/cjs/mdns/MdnsServer.js +275 -0
  233. package/dist/cjs/mdns/MdnsServer.js.map +6 -0
  234. package/dist/cjs/mdns/MdnsService.d.ts +28 -0
  235. package/dist/cjs/mdns/MdnsService.d.ts.map +1 -0
  236. package/dist/cjs/mdns/MdnsService.js +95 -0
  237. package/dist/cjs/mdns/MdnsService.js.map +6 -0
  238. package/dist/cjs/mdns/index.d.ts +12 -0
  239. package/dist/cjs/mdns/index.d.ts.map +1 -0
  240. package/dist/cjs/mdns/index.js +29 -0
  241. package/dist/cjs/mdns/index.js.map +6 -0
  242. package/dist/cjs/package.json +10 -0
  243. package/dist/cjs/peer/ControllerCommissioner.d.ts +82 -0
  244. package/dist/cjs/peer/ControllerCommissioner.d.ts.map +1 -0
  245. package/dist/cjs/peer/ControllerCommissioner.js +224 -0
  246. package/dist/cjs/peer/ControllerCommissioner.js.map +6 -0
  247. package/dist/cjs/peer/ControllerCommissioningFlow.d.ts +88 -0
  248. package/dist/cjs/peer/ControllerCommissioningFlow.d.ts.map +1 -0
  249. package/dist/cjs/peer/ControllerCommissioningFlow.js +849 -0
  250. package/dist/cjs/peer/ControllerCommissioningFlow.js.map +6 -0
  251. package/dist/cjs/peer/ControllerDiscovery.d.ts +43 -0
  252. package/dist/cjs/peer/ControllerDiscovery.d.ts.map +1 -0
  253. package/dist/cjs/peer/ControllerDiscovery.js +192 -0
  254. package/dist/cjs/peer/ControllerDiscovery.js.map +6 -0
  255. package/dist/cjs/peer/OperationalPeer.d.ts +28 -0
  256. package/dist/cjs/peer/OperationalPeer.d.ts.map +1 -0
  257. package/dist/cjs/peer/OperationalPeer.js +22 -0
  258. package/dist/cjs/peer/OperationalPeer.js.map +6 -0
  259. package/dist/cjs/peer/PeerAddress.d.ts +30 -0
  260. package/dist/cjs/peer/PeerAddress.d.ts.map +1 -0
  261. package/dist/cjs/peer/PeerAddress.js +71 -0
  262. package/dist/cjs/peer/PeerAddress.js.map +6 -0
  263. package/dist/cjs/peer/PeerSet.d.ts +98 -0
  264. package/dist/cjs/peer/PeerSet.d.ts.map +1 -0
  265. package/dist/cjs/peer/PeerSet.js +500 -0
  266. package/dist/cjs/peer/PeerSet.js.map +6 -0
  267. package/dist/cjs/peer/PeerStore.d.ts +17 -0
  268. package/dist/cjs/peer/PeerStore.d.ts.map +1 -0
  269. package/dist/cjs/peer/PeerStore.js +31 -0
  270. package/dist/cjs/peer/PeerStore.js.map +6 -0
  271. package/dist/cjs/peer/index.d.ts +13 -0
  272. package/dist/cjs/peer/index.d.ts.map +1 -0
  273. package/dist/cjs/peer/index.js +30 -0
  274. package/dist/cjs/peer/index.js.map +6 -0
  275. package/dist/cjs/protocol/ChannelManager.d.ts +30 -0
  276. package/dist/cjs/protocol/ChannelManager.d.ts.map +1 -0
  277. package/dist/cjs/protocol/ChannelManager.js +168 -0
  278. package/dist/cjs/protocol/ChannelManager.js.map +6 -0
  279. package/dist/cjs/protocol/DeviceAdvertiser.d.ts +43 -0
  280. package/dist/cjs/protocol/DeviceAdvertiser.d.ts.map +1 -0
  281. package/dist/cjs/protocol/DeviceAdvertiser.js +185 -0
  282. package/dist/cjs/protocol/DeviceAdvertiser.js.map +6 -0
  283. package/dist/cjs/protocol/DeviceCommissioner.d.ts +49 -0
  284. package/dist/cjs/protocol/DeviceCommissioner.d.ts.map +1 -0
  285. package/dist/cjs/protocol/DeviceCommissioner.js +198 -0
  286. package/dist/cjs/protocol/DeviceCommissioner.js.map +6 -0
  287. package/dist/cjs/protocol/ExchangeManager.d.ts +73 -0
  288. package/dist/cjs/protocol/ExchangeManager.d.ts.map +1 -0
  289. package/dist/cjs/protocol/ExchangeManager.js +407 -0
  290. package/dist/cjs/protocol/ExchangeManager.js.map +6 -0
  291. package/dist/cjs/protocol/MessageCounter.d.ts +57 -0
  292. package/dist/cjs/protocol/MessageCounter.d.ts.map +1 -0
  293. package/dist/cjs/protocol/MessageCounter.js +104 -0
  294. package/dist/cjs/protocol/MessageCounter.js.map +6 -0
  295. package/dist/cjs/protocol/MessageExchange.d.ts +84 -0
  296. package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -0
  297. package/dist/cjs/protocol/MessageExchange.js +508 -0
  298. package/dist/cjs/protocol/MessageExchange.js.map +6 -0
  299. package/dist/cjs/protocol/MessageReceptionState.d.ts +65 -0
  300. package/dist/cjs/protocol/MessageReceptionState.d.ts.map +1 -0
  301. package/dist/cjs/protocol/MessageReceptionState.js +173 -0
  302. package/dist/cjs/protocol/MessageReceptionState.js.map +6 -0
  303. package/dist/cjs/protocol/ProtocolHandler.d.ts +13 -0
  304. package/dist/cjs/protocol/ProtocolHandler.d.ts.map +1 -0
  305. package/dist/cjs/protocol/ProtocolHandler.js +22 -0
  306. package/dist/cjs/protocol/ProtocolHandler.js.map +6 -0
  307. package/dist/cjs/protocol/index.d.ts +14 -0
  308. package/dist/cjs/protocol/index.d.ts.map +1 -0
  309. package/dist/cjs/protocol/index.js +31 -0
  310. package/dist/cjs/protocol/index.js.map +6 -0
  311. package/dist/cjs/securechannel/SecureChannelMessenger.d.ts +53 -0
  312. package/dist/cjs/securechannel/SecureChannelMessenger.d.ts.map +1 -0
  313. package/dist/cjs/securechannel/SecureChannelMessenger.js +143 -0
  314. package/dist/cjs/securechannel/SecureChannelMessenger.js.map +6 -0
  315. package/dist/cjs/securechannel/SecureChannelProtocol.d.ts +31 -0
  316. package/dist/cjs/securechannel/SecureChannelProtocol.d.ts.map +1 -0
  317. package/dist/cjs/securechannel/SecureChannelProtocol.js +140 -0
  318. package/dist/cjs/securechannel/SecureChannelProtocol.js.map +6 -0
  319. package/dist/cjs/securechannel/SecureChannelStatusMessageSchema.d.ts +23 -0
  320. package/dist/cjs/securechannel/SecureChannelStatusMessageSchema.d.ts.map +1 -0
  321. package/dist/cjs/securechannel/SecureChannelStatusMessageSchema.js +53 -0
  322. package/dist/cjs/securechannel/SecureChannelStatusMessageSchema.js.map +6 -0
  323. package/dist/cjs/securechannel/index.d.ts +9 -0
  324. package/dist/cjs/securechannel/index.d.ts.map +1 -0
  325. package/dist/cjs/securechannel/index.js +26 -0
  326. package/dist/cjs/securechannel/index.js.map +6 -0
  327. package/dist/cjs/session/InsecureSession.d.ts +38 -0
  328. package/dist/cjs/session/InsecureSession.d.ts.map +1 -0
  329. package/dist/cjs/session/InsecureSession.js +95 -0
  330. package/dist/cjs/session/InsecureSession.js.map +6 -0
  331. package/dist/cjs/session/SecureSession.d.ts +81 -0
  332. package/dist/cjs/session/SecureSession.d.ts.map +1 -0
  333. package/dist/cjs/session/SecureSession.js +291 -0
  334. package/dist/cjs/session/SecureSession.js.map +6 -0
  335. package/dist/cjs/session/Session.d.ts +102 -0
  336. package/dist/cjs/session/Session.d.ts.map +1 -0
  337. package/dist/cjs/session/Session.js +141 -0
  338. package/dist/cjs/session/Session.js.map +6 -0
  339. package/dist/cjs/session/SessionManager.d.ts +132 -0
  340. package/dist/cjs/session/SessionManager.d.ts.map +1 -0
  341. package/dist/cjs/session/SessionManager.js +410 -0
  342. package/dist/cjs/session/SessionManager.js.map +6 -0
  343. package/dist/cjs/session/case/CaseClient.d.ts +18 -0
  344. package/dist/cjs/session/case/CaseClient.d.ts.map +1 -0
  345. package/dist/cjs/session/case/CaseClient.js +216 -0
  346. package/dist/cjs/session/case/CaseClient.js.map +6 -0
  347. package/dist/cjs/session/case/CaseMessages.d.ts +82 -0
  348. package/dist/cjs/session/case/CaseMessages.d.ts.map +1 -0
  349. package/dist/cjs/session/case/CaseMessages.js +97 -0
  350. package/dist/cjs/session/case/CaseMessages.js.map +6 -0
  351. package/dist/cjs/session/case/CaseMessenger.d.ts +79 -0
  352. package/dist/cjs/session/case/CaseMessenger.d.ts.map +1 -0
  353. package/dist/cjs/session/case/CaseMessenger.js +74 -0
  354. package/dist/cjs/session/case/CaseMessenger.js.map +6 -0
  355. package/dist/cjs/session/case/CaseServer.d.ts +18 -0
  356. package/dist/cjs/session/case/CaseServer.d.ts.map +1 -0
  357. package/dist/cjs/session/case/CaseServer.js +232 -0
  358. package/dist/cjs/session/case/CaseServer.js.map +6 -0
  359. package/dist/cjs/session/index.d.ts +18 -0
  360. package/dist/cjs/session/index.d.ts.map +1 -0
  361. package/dist/cjs/session/index.js +35 -0
  362. package/dist/cjs/session/index.js.map +6 -0
  363. package/dist/cjs/session/pase/PaseClient.d.ts +18 -0
  364. package/dist/cjs/session/pase/PaseClient.d.ts.map +1 -0
  365. package/dist/cjs/session/pase/PaseClient.js +101 -0
  366. package/dist/cjs/session/pase/PaseClient.js.map +6 -0
  367. package/dist/cjs/session/pase/PaseMessages.d.ts +85 -0
  368. package/dist/cjs/session/pase/PaseMessages.d.ts.map +1 -0
  369. package/dist/cjs/session/pase/PaseMessages.js +88 -0
  370. package/dist/cjs/session/pase/PaseMessages.js.map +6 -0
  371. package/dist/cjs/session/pase/PaseMessenger.d.ts +75 -0
  372. package/dist/cjs/session/pase/PaseMessenger.d.ts.map +1 -0
  373. package/dist/cjs/session/pase/PaseMessenger.js +86 -0
  374. package/dist/cjs/session/pase/PaseMessenger.js.map +6 -0
  375. package/dist/cjs/session/pase/PaseServer.d.ts +29 -0
  376. package/dist/cjs/session/pase/PaseServer.d.ts.map +1 -0
  377. package/dist/cjs/session/pase/PaseServer.js +159 -0
  378. package/dist/cjs/session/pase/PaseServer.js.map +6 -0
  379. package/dist/cjs/tsconfig.tsbuildinfo +1 -0
  380. package/dist/esm/MatterDevice.d.ts +79 -0
  381. package/dist/esm/MatterDevice.d.ts.map +1 -0
  382. package/dist/esm/MatterDevice.js +239 -0
  383. package/dist/esm/MatterDevice.js.map +6 -0
  384. package/dist/esm/ble/Ble.d.ts +29 -0
  385. package/dist/esm/ble/Ble.d.ts.map +1 -0
  386. package/dist/esm/ble/Ble.js +30 -0
  387. package/dist/esm/ble/Ble.js.map +6 -0
  388. package/dist/esm/ble/BleConsts.d.ts +32 -0
  389. package/dist/esm/ble/BleConsts.d.ts.map +1 -0
  390. package/dist/esm/ble/BleConsts.js +33 -0
  391. package/dist/esm/ble/BleConsts.js.map +6 -0
  392. package/dist/esm/ble/BtpSessionHandler.d.ts +87 -0
  393. package/dist/esm/ble/BtpSessionHandler.d.ts.map +1 -0
  394. package/dist/esm/ble/BtpSessionHandler.js +419 -0
  395. package/dist/esm/ble/BtpSessionHandler.js.map +6 -0
  396. package/dist/esm/ble/index.d.ts +9 -0
  397. package/dist/esm/ble/index.d.ts.map +1 -0
  398. package/dist/esm/ble/index.js +9 -0
  399. package/dist/esm/ble/index.js.map +6 -0
  400. package/dist/esm/certificate/AttestationCertificateManager.d.ts +28 -0
  401. package/dist/esm/certificate/AttestationCertificateManager.d.ts.map +1 -0
  402. package/dist/esm/certificate/AttestationCertificateManager.js +155 -0
  403. package/dist/esm/certificate/AttestationCertificateManager.js.map +6 -0
  404. package/dist/esm/certificate/CertificateManager.d.ts +575 -0
  405. package/dist/esm/certificate/CertificateManager.d.ts.map +1 -0
  406. package/dist/esm/certificate/CertificateManager.js +837 -0
  407. package/dist/esm/certificate/CertificateManager.js.map +6 -0
  408. package/dist/esm/certificate/CertificationDeclarationManager.d.ts +5 -0
  409. package/dist/esm/certificate/CertificationDeclarationManager.d.ts.map +1 -0
  410. package/dist/esm/certificate/CertificationDeclarationManager.js +34 -0
  411. package/dist/esm/certificate/CertificationDeclarationManager.js.map +6 -0
  412. package/dist/esm/certificate/ChipPAAuthorities.d.ts +14 -0
  413. package/dist/esm/certificate/ChipPAAuthorities.d.ts.map +1 -0
  414. package/dist/esm/certificate/ChipPAAuthorities.js +37 -0
  415. package/dist/esm/certificate/ChipPAAuthorities.js.map +6 -0
  416. package/dist/esm/certificate/DeviceCertification.d.ts +30 -0
  417. package/dist/esm/certificate/DeviceCertification.d.ts.map +1 -0
  418. package/dist/esm/certificate/DeviceCertification.js +83 -0
  419. package/dist/esm/certificate/DeviceCertification.js.map +6 -0
  420. package/dist/esm/certificate/RootCertificateManager.d.ts +33 -0
  421. package/dist/esm/certificate/RootCertificateManager.d.ts.map +1 -0
  422. package/dist/esm/certificate/RootCertificateManager.js +139 -0
  423. package/dist/esm/certificate/RootCertificateManager.js.map +6 -0
  424. package/dist/esm/certificate/index.d.ts +12 -0
  425. package/dist/esm/certificate/index.d.ts.map +1 -0
  426. package/dist/esm/certificate/index.js +12 -0
  427. package/dist/esm/certificate/index.js.map +6 -0
  428. package/dist/esm/cluster/client/AttributeClient.d.ts +61 -0
  429. package/dist/esm/cluster/client/AttributeClient.d.ts.map +1 -0
  430. package/dist/esm/cluster/client/AttributeClient.js +157 -0
  431. package/dist/esm/cluster/client/AttributeClient.js.map +6 -0
  432. package/dist/esm/cluster/client/ClusterClient.d.ts +10 -0
  433. package/dist/esm/cluster/client/ClusterClient.d.ts.map +1 -0
  434. package/dist/esm/cluster/client/ClusterClient.js +267 -0
  435. package/dist/esm/cluster/client/ClusterClient.js.map +6 -0
  436. package/dist/esm/cluster/client/ClusterClientTypes.d.ts +171 -0
  437. package/dist/esm/cluster/client/ClusterClientTypes.d.ts.map +1 -0
  438. package/dist/esm/cluster/client/ClusterClientTypes.js +6 -0
  439. package/dist/esm/cluster/client/ClusterClientTypes.js.map +6 -0
  440. package/dist/esm/cluster/client/EventClient.d.ts +41 -0
  441. package/dist/esm/cluster/client/EventClient.d.ts.map +1 -0
  442. package/dist/esm/cluster/client/EventClient.js +74 -0
  443. package/dist/esm/cluster/client/EventClient.js.map +6 -0
  444. package/dist/esm/cluster/client/index.d.ts +10 -0
  445. package/dist/esm/cluster/client/index.d.ts.map +1 -0
  446. package/dist/esm/cluster/client/index.js +10 -0
  447. package/dist/esm/cluster/client/index.js.map +6 -0
  448. package/dist/esm/cluster/index.d.ts +8 -0
  449. package/dist/esm/cluster/index.d.ts.map +1 -0
  450. package/dist/esm/cluster/index.js +8 -0
  451. package/dist/esm/cluster/index.js.map +6 -0
  452. package/dist/esm/cluster/server/AttributeServer.d.ts +307 -0
  453. package/dist/esm/cluster/server/AttributeServer.d.ts.map +1 -0
  454. package/dist/esm/cluster/server/AttributeServer.js +718 -0
  455. package/dist/esm/cluster/server/AttributeServer.js.map +6 -0
  456. package/dist/esm/cluster/server/ClusterDatasource.d.ts +16 -0
  457. package/dist/esm/cluster/server/ClusterDatasource.d.ts.map +1 -0
  458. package/dist/esm/cluster/server/ClusterDatasource.js +6 -0
  459. package/dist/esm/cluster/server/ClusterDatasource.js.map +6 -0
  460. package/dist/esm/cluster/server/ClusterServer.d.ts +40 -0
  461. package/dist/esm/cluster/server/ClusterServer.d.ts.map +1 -0
  462. package/dist/esm/cluster/server/ClusterServer.js +6 -0
  463. package/dist/esm/cluster/server/ClusterServer.js.map +6 -0
  464. package/dist/esm/cluster/server/CommandServer.d.ts +34 -0
  465. package/dist/esm/cluster/server/CommandServer.d.ts.map +1 -0
  466. package/dist/esm/cluster/server/CommandServer.js +56 -0
  467. package/dist/esm/cluster/server/CommandServer.js.map +6 -0
  468. package/dist/esm/cluster/server/EventServer.d.ts +41 -0
  469. package/dist/esm/cluster/server/EventServer.d.ts.map +1 -0
  470. package/dist/esm/cluster/server/EventServer.js +137 -0
  471. package/dist/esm/cluster/server/EventServer.js.map +6 -0
  472. package/dist/esm/cluster/server/index.d.ts +11 -0
  473. package/dist/esm/cluster/server/index.d.ts.map +1 -0
  474. package/dist/esm/cluster/server/index.js +11 -0
  475. package/dist/esm/cluster/server/index.js.map +6 -0
  476. package/dist/esm/codec/BtpCodec.d.ts +78 -0
  477. package/dist/esm/codec/BtpCodec.d.ts.map +1 -0
  478. package/dist/esm/codec/BtpCodec.js +234 -0
  479. package/dist/esm/codec/BtpCodec.js.map +6 -0
  480. package/dist/esm/codec/MessageCodec.d.ts +63 -0
  481. package/dist/esm/codec/MessageCodec.d.ts.map +1 -0
  482. package/dist/esm/codec/MessageCodec.js +200 -0
  483. package/dist/esm/codec/MessageCodec.js.map +6 -0
  484. package/dist/esm/codec/index.d.ts +9 -0
  485. package/dist/esm/codec/index.d.ts.map +1 -0
  486. package/dist/esm/codec/index.js +15 -0
  487. package/dist/esm/codec/index.js.map +6 -0
  488. package/dist/esm/common/FailsafeContext.d.ts +79 -0
  489. package/dist/esm/common/FailsafeContext.d.ts.map +1 -0
  490. package/dist/esm/common/FailsafeContext.js +217 -0
  491. package/dist/esm/common/FailsafeContext.js.map +6 -0
  492. package/dist/esm/common/FailsafeTimer.d.ts +25 -0
  493. package/dist/esm/common/FailsafeTimer.d.ts.map +1 -0
  494. package/dist/esm/common/FailsafeTimer.js +71 -0
  495. package/dist/esm/common/FailsafeTimer.js.map +6 -0
  496. package/dist/esm/common/InstanceBroadcaster.d.ts +273 -0
  497. package/dist/esm/common/InstanceBroadcaster.d.ts.map +1 -0
  498. package/dist/esm/common/InstanceBroadcaster.js +119 -0
  499. package/dist/esm/common/InstanceBroadcaster.js.map +6 -0
  500. package/dist/esm/common/OperationalCredentialsTypes.d.ts +21 -0
  501. package/dist/esm/common/OperationalCredentialsTypes.d.ts.map +1 -0
  502. package/dist/esm/common/OperationalCredentialsTypes.js +25 -0
  503. package/dist/esm/common/OperationalCredentialsTypes.js.map +6 -0
  504. package/dist/esm/common/Scanner.d.ts +121 -0
  505. package/dist/esm/common/Scanner.d.ts.map +1 -0
  506. package/dist/esm/common/Scanner.js +31 -0
  507. package/dist/esm/common/Scanner.js.map +6 -0
  508. package/dist/esm/common/index.d.ts +12 -0
  509. package/dist/esm/common/index.d.ts.map +1 -0
  510. package/dist/esm/common/index.js +12 -0
  511. package/dist/esm/common/index.js.map +6 -0
  512. package/dist/esm/endpoint/EndpointInterface.d.ts +37 -0
  513. package/dist/esm/endpoint/EndpointInterface.d.ts.map +1 -0
  514. package/dist/esm/endpoint/EndpointInterface.js +6 -0
  515. package/dist/esm/endpoint/EndpointInterface.js.map +6 -0
  516. package/dist/esm/endpoint/EndpointStructureLogger.d.ts +31 -0
  517. package/dist/esm/endpoint/EndpointStructureLogger.d.ts.map +1 -0
  518. package/dist/esm/endpoint/EndpointStructureLogger.js +216 -0
  519. package/dist/esm/endpoint/EndpointStructureLogger.js.map +6 -0
  520. package/dist/esm/endpoint/index.d.ts +8 -0
  521. package/dist/esm/endpoint/index.d.ts.map +1 -0
  522. package/dist/esm/endpoint/index.js +8 -0
  523. package/dist/esm/endpoint/index.js.map +6 -0
  524. package/dist/esm/fabric/Fabric.d.ts +121 -0
  525. package/dist/esm/fabric/Fabric.d.ts.map +1 -0
  526. package/dist/esm/fabric/Fabric.js +422 -0
  527. package/dist/esm/fabric/Fabric.js.map +6 -0
  528. package/dist/esm/fabric/FabricManager.d.ts +44 -0
  529. package/dist/esm/fabric/FabricManager.d.ts.map +1 -0
  530. package/dist/esm/fabric/FabricManager.js +200 -0
  531. package/dist/esm/fabric/FabricManager.js.map +6 -0
  532. package/dist/esm/fabric/index.d.ts +8 -0
  533. package/dist/esm/fabric/index.d.ts.map +1 -0
  534. package/dist/esm/fabric/index.js +8 -0
  535. package/dist/esm/fabric/index.js.map +6 -0
  536. package/dist/esm/index.d.ts +20 -0
  537. package/dist/esm/index.d.ts.map +1 -0
  538. package/dist/esm/index.js +20 -0
  539. package/dist/esm/index.js.map +6 -0
  540. package/dist/esm/interaction/AccessControlManager.d.ts +49 -0
  541. package/dist/esm/interaction/AccessControlManager.d.ts.map +1 -0
  542. package/dist/esm/interaction/AccessControlManager.js +228 -0
  543. package/dist/esm/interaction/AccessControlManager.js.map +6 -0
  544. package/dist/esm/interaction/AttributeDataDecoder.d.ts +52 -0
  545. package/dist/esm/interaction/AttributeDataDecoder.d.ts.map +1 -0
  546. package/dist/esm/interaction/AttributeDataDecoder.js +171 -0
  547. package/dist/esm/interaction/AttributeDataDecoder.js.map +6 -0
  548. package/dist/esm/interaction/AttributeDataEncoder.d.ts +71 -0
  549. package/dist/esm/interaction/AttributeDataEncoder.d.ts.map +1 -0
  550. package/dist/esm/interaction/AttributeDataEncoder.js +174 -0
  551. package/dist/esm/interaction/AttributeDataEncoder.js.map +6 -0
  552. package/dist/esm/interaction/EventDataDecoder.d.ts +30 -0
  553. package/dist/esm/interaction/EventDataDecoder.d.ts.map +1 -0
  554. package/dist/esm/interaction/EventDataDecoder.js +87 -0
  555. package/dist/esm/interaction/EventDataDecoder.js.map +6 -0
  556. package/dist/esm/interaction/EventHandler.d.ts +42 -0
  557. package/dist/esm/interaction/EventHandler.d.ts.map +1 -0
  558. package/dist/esm/interaction/EventHandler.js +96 -0
  559. package/dist/esm/interaction/EventHandler.js.map +6 -0
  560. package/dist/esm/interaction/InteractionClient.d.ts +294 -0
  561. package/dist/esm/interaction/InteractionClient.d.ts.map +1 -0
  562. package/dist/esm/interaction/InteractionClient.js +827 -0
  563. package/dist/esm/interaction/InteractionClient.js.map +6 -0
  564. package/dist/esm/interaction/InteractionEndpointStructure.d.ts +59 -0
  565. package/dist/esm/interaction/InteractionEndpointStructure.d.ts.map +1 -0
  566. package/dist/esm/interaction/InteractionEndpointStructure.js +343 -0
  567. package/dist/esm/interaction/InteractionEndpointStructure.js.map +6 -0
  568. package/dist/esm/interaction/InteractionMessenger.d.ts +315 -0
  569. package/dist/esm/interaction/InteractionMessenger.d.ts.map +1 -0
  570. package/dist/esm/interaction/InteractionMessenger.js +489 -0
  571. package/dist/esm/interaction/InteractionMessenger.js.map +6 -0
  572. package/dist/esm/interaction/InteractionServer.d.ts +97 -0
  573. package/dist/esm/interaction/InteractionServer.d.ts.map +1 -0
  574. package/dist/esm/interaction/InteractionServer.js +1027 -0
  575. package/dist/esm/interaction/InteractionServer.js.map +6 -0
  576. package/dist/esm/interaction/ServerSubscription.d.ts +121 -0
  577. package/dist/esm/interaction/ServerSubscription.d.ts.map +1 -0
  578. package/dist/esm/interaction/ServerSubscription.js +669 -0
  579. package/dist/esm/interaction/ServerSubscription.js.map +6 -0
  580. package/dist/esm/interaction/Subscription.d.ts +44 -0
  581. package/dist/esm/interaction/Subscription.d.ts.map +1 -0
  582. package/dist/esm/interaction/Subscription.js +65 -0
  583. package/dist/esm/interaction/Subscription.js.map +6 -0
  584. package/dist/esm/interaction/SubscriptionOptions.d.ts +43 -0
  585. package/dist/esm/interaction/SubscriptionOptions.d.ts.map +1 -0
  586. package/dist/esm/interaction/SubscriptionOptions.js +26 -0
  587. package/dist/esm/interaction/SubscriptionOptions.js.map +6 -0
  588. package/dist/esm/interaction/index.d.ts +17 -0
  589. package/dist/esm/interaction/index.d.ts.map +1 -0
  590. package/dist/esm/interaction/index.js +17 -0
  591. package/dist/esm/interaction/index.js.map +6 -0
  592. package/dist/esm/mdns/MdnsBroadcaster.d.ts +34 -0
  593. package/dist/esm/mdns/MdnsBroadcaster.d.ts.map +1 -0
  594. package/dist/esm/mdns/MdnsBroadcaster.js +351 -0
  595. package/dist/esm/mdns/MdnsBroadcaster.js.map +6 -0
  596. package/dist/esm/mdns/MdnsConsts.d.ts +19 -0
  597. package/dist/esm/mdns/MdnsConsts.d.ts.map +1 -0
  598. package/dist/esm/mdns/MdnsConsts.js +32 -0
  599. package/dist/esm/mdns/MdnsConsts.js.map +6 -0
  600. package/dist/esm/mdns/MdnsInstanceBroadcaster.d.ts +28 -0
  601. package/dist/esm/mdns/MdnsInstanceBroadcaster.d.ts.map +1 -0
  602. package/dist/esm/mdns/MdnsInstanceBroadcaster.js +67 -0
  603. package/dist/esm/mdns/MdnsInstanceBroadcaster.js.map +6 -0
  604. package/dist/esm/mdns/MdnsScanner.d.ts +79 -0
  605. package/dist/esm/mdns/MdnsScanner.d.ts.map +1 -0
  606. package/dist/esm/mdns/MdnsScanner.js +847 -0
  607. package/dist/esm/mdns/MdnsScanner.js.map +6 -0
  608. package/dist/esm/mdns/MdnsServer.d.ts +29 -0
  609. package/dist/esm/mdns/MdnsServer.d.ts.map +1 -0
  610. package/dist/esm/mdns/MdnsServer.js +266 -0
  611. package/dist/esm/mdns/MdnsServer.js.map +6 -0
  612. package/dist/esm/mdns/MdnsService.d.ts +28 -0
  613. package/dist/esm/mdns/MdnsService.d.ts.map +1 -0
  614. package/dist/esm/mdns/MdnsService.js +83 -0
  615. package/dist/esm/mdns/MdnsService.js.map +6 -0
  616. package/dist/esm/mdns/index.d.ts +12 -0
  617. package/dist/esm/mdns/index.d.ts.map +1 -0
  618. package/dist/esm/mdns/index.js +12 -0
  619. package/dist/esm/mdns/index.js.map +6 -0
  620. package/dist/esm/package.json +10 -0
  621. package/dist/esm/peer/ControllerCommissioner.d.ts +82 -0
  622. package/dist/esm/peer/ControllerCommissioner.d.ts.map +1 -0
  623. package/dist/esm/peer/ControllerCommissioner.js +211 -0
  624. package/dist/esm/peer/ControllerCommissioner.js.map +6 -0
  625. package/dist/esm/peer/ControllerCommissioningFlow.d.ts +88 -0
  626. package/dist/esm/peer/ControllerCommissioningFlow.d.ts.map +1 -0
  627. package/dist/esm/peer/ControllerCommissioningFlow.js +832 -0
  628. package/dist/esm/peer/ControllerCommissioningFlow.js.map +6 -0
  629. package/dist/esm/peer/ControllerDiscovery.d.ts +43 -0
  630. package/dist/esm/peer/ControllerDiscovery.d.ts.map +1 -0
  631. package/dist/esm/peer/ControllerDiscovery.js +172 -0
  632. package/dist/esm/peer/ControllerDiscovery.js.map +6 -0
  633. package/dist/esm/peer/OperationalPeer.d.ts +28 -0
  634. package/dist/esm/peer/OperationalPeer.d.ts.map +1 -0
  635. package/dist/esm/peer/OperationalPeer.js +6 -0
  636. package/dist/esm/peer/OperationalPeer.js.map +6 -0
  637. package/dist/esm/peer/PeerAddress.d.ts +30 -0
  638. package/dist/esm/peer/PeerAddress.d.ts.map +1 -0
  639. package/dist/esm/peer/PeerAddress.js +51 -0
  640. package/dist/esm/peer/PeerAddress.js.map +6 -0
  641. package/dist/esm/peer/PeerSet.d.ts +98 -0
  642. package/dist/esm/peer/PeerSet.d.ts.map +1 -0
  643. package/dist/esm/peer/PeerSet.js +495 -0
  644. package/dist/esm/peer/PeerSet.js.map +6 -0
  645. package/dist/esm/peer/PeerStore.d.ts +17 -0
  646. package/dist/esm/peer/PeerStore.d.ts.map +1 -0
  647. package/dist/esm/peer/PeerStore.js +11 -0
  648. package/dist/esm/peer/PeerStore.js.map +6 -0
  649. package/dist/esm/peer/index.d.ts +13 -0
  650. package/dist/esm/peer/index.d.ts.map +1 -0
  651. package/dist/esm/peer/index.js +13 -0
  652. package/dist/esm/peer/index.js.map +6 -0
  653. package/dist/esm/protocol/ChannelManager.d.ts +30 -0
  654. package/dist/esm/protocol/ChannelManager.d.ts.map +1 -0
  655. package/dist/esm/protocol/ChannelManager.js +148 -0
  656. package/dist/esm/protocol/ChannelManager.js.map +6 -0
  657. package/dist/esm/protocol/DeviceAdvertiser.d.ts +43 -0
  658. package/dist/esm/protocol/DeviceAdvertiser.d.ts.map +1 -0
  659. package/dist/esm/protocol/DeviceAdvertiser.js +173 -0
  660. package/dist/esm/protocol/DeviceAdvertiser.js.map +6 -0
  661. package/dist/esm/protocol/DeviceCommissioner.d.ts +49 -0
  662. package/dist/esm/protocol/DeviceCommissioner.d.ts.map +1 -0
  663. package/dist/esm/protocol/DeviceCommissioner.js +187 -0
  664. package/dist/esm/protocol/DeviceCommissioner.js.map +6 -0
  665. package/dist/esm/protocol/ExchangeManager.d.ts +73 -0
  666. package/dist/esm/protocol/ExchangeManager.d.ts.map +1 -0
  667. package/dist/esm/protocol/ExchangeManager.js +398 -0
  668. package/dist/esm/protocol/ExchangeManager.js.map +6 -0
  669. package/dist/esm/protocol/MessageCounter.d.ts +57 -0
  670. package/dist/esm/protocol/MessageCounter.d.ts.map +1 -0
  671. package/dist/esm/protocol/MessageCounter.js +84 -0
  672. package/dist/esm/protocol/MessageCounter.js.map +6 -0
  673. package/dist/esm/protocol/MessageExchange.d.ts +84 -0
  674. package/dist/esm/protocol/MessageExchange.d.ts.map +1 -0
  675. package/dist/esm/protocol/MessageExchange.js +504 -0
  676. package/dist/esm/protocol/MessageExchange.js.map +6 -0
  677. package/dist/esm/protocol/MessageReceptionState.d.ts +65 -0
  678. package/dist/esm/protocol/MessageReceptionState.d.ts.map +1 -0
  679. package/dist/esm/protocol/MessageReceptionState.js +153 -0
  680. package/dist/esm/protocol/MessageReceptionState.js.map +6 -0
  681. package/dist/esm/protocol/ProtocolHandler.d.ts +13 -0
  682. package/dist/esm/protocol/ProtocolHandler.d.ts.map +1 -0
  683. package/dist/esm/protocol/ProtocolHandler.js +6 -0
  684. package/dist/esm/protocol/ProtocolHandler.js.map +6 -0
  685. package/dist/esm/protocol/index.d.ts +14 -0
  686. package/dist/esm/protocol/index.d.ts.map +1 -0
  687. package/dist/esm/protocol/index.js +14 -0
  688. package/dist/esm/protocol/index.js.map +6 -0
  689. package/dist/esm/securechannel/SecureChannelMessenger.d.ts +53 -0
  690. package/dist/esm/securechannel/SecureChannelMessenger.d.ts.map +1 -0
  691. package/dist/esm/securechannel/SecureChannelMessenger.js +128 -0
  692. package/dist/esm/securechannel/SecureChannelMessenger.js.map +6 -0
  693. package/dist/esm/securechannel/SecureChannelProtocol.d.ts +31 -0
  694. package/dist/esm/securechannel/SecureChannelProtocol.d.ts.map +1 -0
  695. package/dist/esm/securechannel/SecureChannelProtocol.js +127 -0
  696. package/dist/esm/securechannel/SecureChannelProtocol.js.map +6 -0
  697. package/dist/esm/securechannel/SecureChannelStatusMessageSchema.d.ts +23 -0
  698. package/dist/esm/securechannel/SecureChannelStatusMessageSchema.d.ts.map +1 -0
  699. package/dist/esm/securechannel/SecureChannelStatusMessageSchema.js +33 -0
  700. package/dist/esm/securechannel/SecureChannelStatusMessageSchema.js.map +6 -0
  701. package/dist/esm/securechannel/index.d.ts +9 -0
  702. package/dist/esm/securechannel/index.d.ts.map +1 -0
  703. package/dist/esm/securechannel/index.js +9 -0
  704. package/dist/esm/securechannel/index.js.map +6 -0
  705. package/dist/esm/session/InsecureSession.d.ts +38 -0
  706. package/dist/esm/session/InsecureSession.d.ts.map +1 -0
  707. package/dist/esm/session/InsecureSession.js +75 -0
  708. package/dist/esm/session/InsecureSession.js.map +6 -0
  709. package/dist/esm/session/SecureSession.d.ts +81 -0
  710. package/dist/esm/session/SecureSession.d.ts.map +1 -0
  711. package/dist/esm/session/SecureSession.js +281 -0
  712. package/dist/esm/session/SecureSession.js.map +6 -0
  713. package/dist/esm/session/Session.d.ts +102 -0
  714. package/dist/esm/session/Session.d.ts.map +1 -0
  715. package/dist/esm/session/Session.js +121 -0
  716. package/dist/esm/session/Session.js.map +6 -0
  717. package/dist/esm/session/SessionManager.d.ts +132 -0
  718. package/dist/esm/session/SessionManager.d.ts.map +1 -0
  719. package/dist/esm/session/SessionManager.js +411 -0
  720. package/dist/esm/session/SessionManager.js.map +6 -0
  721. package/dist/esm/session/case/CaseClient.d.ts +18 -0
  722. package/dist/esm/session/case/CaseClient.d.ts.map +1 -0
  723. package/dist/esm/session/case/CaseClient.js +208 -0
  724. package/dist/esm/session/case/CaseClient.js.map +6 -0
  725. package/dist/esm/session/case/CaseMessages.d.ts +82 -0
  726. package/dist/esm/session/case/CaseMessages.d.ts.map +1 -0
  727. package/dist/esm/session/case/CaseMessages.js +83 -0
  728. package/dist/esm/session/case/CaseMessages.js.map +6 -0
  729. package/dist/esm/session/case/CaseMessenger.d.ts +79 -0
  730. package/dist/esm/session/case/CaseMessenger.d.ts.map +1 -0
  731. package/dist/esm/session/case/CaseMessenger.js +54 -0
  732. package/dist/esm/session/case/CaseMessenger.js.map +6 -0
  733. package/dist/esm/session/case/CaseServer.d.ts +18 -0
  734. package/dist/esm/session/case/CaseServer.d.ts.map +1 -0
  735. package/dist/esm/session/case/CaseServer.js +224 -0
  736. package/dist/esm/session/case/CaseServer.js.map +6 -0
  737. package/dist/esm/session/index.d.ts +18 -0
  738. package/dist/esm/session/index.d.ts.map +1 -0
  739. package/dist/esm/session/index.js +18 -0
  740. package/dist/esm/session/index.js.map +6 -0
  741. package/dist/esm/session/pase/PaseClient.d.ts +18 -0
  742. package/dist/esm/session/pase/PaseClient.d.ts.map +1 -0
  743. package/dist/esm/session/pase/PaseClient.js +81 -0
  744. package/dist/esm/session/pase/PaseClient.js.map +6 -0
  745. package/dist/esm/session/pase/PaseMessages.d.ts +85 -0
  746. package/dist/esm/session/pase/PaseMessages.d.ts.map +1 -0
  747. package/dist/esm/session/pase/PaseMessages.js +68 -0
  748. package/dist/esm/session/pase/PaseMessages.js.map +6 -0
  749. package/dist/esm/session/pase/PaseMessenger.d.ts +75 -0
  750. package/dist/esm/session/pase/PaseMessenger.d.ts.map +1 -0
  751. package/dist/esm/session/pase/PaseMessenger.js +75 -0
  752. package/dist/esm/session/pase/PaseMessenger.js.map +6 -0
  753. package/dist/esm/session/pase/PaseServer.d.ts +29 -0
  754. package/dist/esm/session/pase/PaseServer.d.ts.map +1 -0
  755. package/dist/esm/session/pase/PaseServer.js +148 -0
  756. package/dist/esm/session/pase/PaseServer.js.map +6 -0
  757. package/dist/esm/tsconfig.tsbuildinfo +1 -0
  758. package/package.json +83 -0
  759. package/src/MatterDevice.ts +319 -0
  760. package/src/ble/Ble.ts +40 -0
  761. package/src/ble/BleConsts.ts +41 -0
  762. package/src/ble/BtpSessionHandler.ts +490 -0
  763. package/src/ble/index.ts +9 -0
  764. package/src/certificate/AttestationCertificateManager.ts +166 -0
  765. package/src/certificate/CertificateManager.ts +1136 -0
  766. package/src/certificate/CertificationDeclarationManager.ts +52 -0
  767. package/src/certificate/ChipPAAuthorities.ts +35 -0
  768. package/src/certificate/DeviceCertification.ts +116 -0
  769. package/src/certificate/RootCertificateManager.ts +179 -0
  770. package/src/certificate/index.ts +12 -0
  771. package/src/cluster/client/AttributeClient.ts +196 -0
  772. package/src/cluster/client/ClusterClient.ts +354 -0
  773. package/src/cluster/client/ClusterClientTypes.ts +257 -0
  774. package/src/cluster/client/EventClient.ts +110 -0
  775. package/src/cluster/client/index.ts +10 -0
  776. package/src/cluster/index.ts +8 -0
  777. package/src/cluster/server/AttributeServer.ts +986 -0
  778. package/src/cluster/server/ClusterDatasource.ts +17 -0
  779. package/src/cluster/server/ClusterServer.ts +46 -0
  780. package/src/cluster/server/CommandServer.ts +89 -0
  781. package/src/cluster/server/EventServer.ts +198 -0
  782. package/src/cluster/server/index.ts +11 -0
  783. package/src/codec/BtpCodec.ts +333 -0
  784. package/src/codec/MessageCodec.ts +276 -0
  785. package/src/codec/index.ts +9 -0
  786. package/src/common/FailsafeContext.ts +330 -0
  787. package/src/common/FailsafeTimer.ts +91 -0
  788. package/src/common/InstanceBroadcaster.ts +220 -0
  789. package/src/common/OperationalCredentialsTypes.ts +24 -0
  790. package/src/common/Scanner.ts +188 -0
  791. package/src/common/index.ts +12 -0
  792. package/src/endpoint/EndpointInterface.ts +41 -0
  793. package/src/endpoint/EndpointStructureLogger.ts +277 -0
  794. package/src/endpoint/index.ts +8 -0
  795. package/src/fabric/Fabric.ts +528 -0
  796. package/src/fabric/FabricManager.ts +231 -0
  797. package/src/fabric/index.ts +8 -0
  798. package/src/index.ts +20 -0
  799. package/src/interaction/AccessControlManager.ts +343 -0
  800. package/src/interaction/AttributeDataDecoder.ts +266 -0
  801. package/src/interaction/AttributeDataEncoder.ts +268 -0
  802. package/src/interaction/EventDataDecoder.ts +133 -0
  803. package/src/interaction/EventHandler.ts +141 -0
  804. package/src/interaction/InteractionClient.ts +1215 -0
  805. package/src/interaction/InteractionEndpointStructure.ts +462 -0
  806. package/src/interaction/InteractionMessenger.ts +592 -0
  807. package/src/interaction/InteractionServer.ts +1428 -0
  808. package/src/interaction/ServerSubscription.ts +908 -0
  809. package/src/interaction/Subscription.ts +89 -0
  810. package/src/interaction/SubscriptionOptions.ts +49 -0
  811. package/src/interaction/index.ts +17 -0
  812. package/src/mdns/MdnsBroadcaster.ts +415 -0
  813. package/src/mdns/MdnsConsts.ts +24 -0
  814. package/src/mdns/MdnsInstanceBroadcaster.ts +88 -0
  815. package/src/mdns/MdnsScanner.ts +1042 -0
  816. package/src/mdns/MdnsServer.ts +322 -0
  817. package/src/mdns/MdnsService.ts +102 -0
  818. package/src/mdns/index.ts +12 -0
  819. package/src/peer/ControllerCommissioner.ts +372 -0
  820. package/src/peer/ControllerCommissioningFlow.ts +1127 -0
  821. package/src/peer/ControllerDiscovery.ts +231 -0
  822. package/src/peer/OperationalPeer.ts +32 -0
  823. package/src/peer/PeerAddress.ts +78 -0
  824. package/src/peer/PeerSet.ts +684 -0
  825. package/src/peer/PeerStore.ts +19 -0
  826. package/src/peer/index.ts +13 -0
  827. package/src/protocol/ChannelManager.ts +168 -0
  828. package/src/protocol/DeviceAdvertiser.ts +208 -0
  829. package/src/protocol/DeviceCommissioner.ts +280 -0
  830. package/src/protocol/ExchangeManager.ts +493 -0
  831. package/src/protocol/MessageCounter.ts +128 -0
  832. package/src/protocol/MessageExchange.ts +662 -0
  833. package/src/protocol/MessageReceptionState.ts +207 -0
  834. package/src/protocol/ProtocolHandler.ts +14 -0
  835. package/src/protocol/index.ts +14 -0
  836. package/src/securechannel/SecureChannelMessenger.ts +166 -0
  837. package/src/securechannel/SecureChannelProtocol.ts +150 -0
  838. package/src/securechannel/SecureChannelStatusMessageSchema.ts +40 -0
  839. package/src/securechannel/index.ts +10 -0
  840. package/src/session/InsecureSession.ts +96 -0
  841. package/src/session/SecureSession.ts +349 -0
  842. package/src/session/Session.ts +188 -0
  843. package/src/session/SessionManager.ts +559 -0
  844. package/src/session/case/CaseClient.ts +235 -0
  845. package/src/session/case/CaseMessages.ts +81 -0
  846. package/src/session/case/CaseMessenger.ts +57 -0
  847. package/src/session/case/CaseServer.ts +269 -0
  848. package/src/session/index.ts +21 -0
  849. package/src/session/pase/PaseClient.ts +100 -0
  850. package/src/session/pase/PaseMessages.ts +72 -0
  851. package/src/session/pase/PaseMessenger.ts +86 -0
  852. package/src/session/pase/PaseServer.ts +187 -0
  853. package/src/tsconfig.json +20 -0
@@ -0,0 +1,1026 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var InteractionServer_exports = {};
20
+ __export(InteractionServer_exports, {
21
+ InteractionServer: () => InteractionServer,
22
+ attributePathToId: () => attributePathToId,
23
+ clusterPathToId: () => clusterPathToId,
24
+ commandPathToId: () => commandPathToId,
25
+ eventPathToId: () => eventPathToId,
26
+ genericElementPathToId: () => genericElementPathToId,
27
+ validateReadAttributesPath: () => validateReadAttributesPath,
28
+ validateReadEventPath: () => validateReadEventPath
29
+ });
30
+ module.exports = __toCommonJS(InteractionServer_exports);
31
+ var import_general = require("#general");
32
+ var import_model = require("#model");
33
+ var import_types = require("#types");
34
+ var import_AttributeServer = require("../cluster/server/AttributeServer.js");
35
+ var import_MessageCodec = require("../codec/MessageCodec.js");
36
+ var import_SecureSession = require("../session/SecureSession.js");
37
+ var import_AttributeDataDecoder = require("./AttributeDataDecoder.js");
38
+ var import_InteractionMessenger = require("./InteractionMessenger.js");
39
+ var import_ServerSubscription = require("./ServerSubscription.js");
40
+ var import_SubscriptionOptions = require("./SubscriptionOptions.js");
41
+ /**
42
+ * @license
43
+ * Copyright 2022-2024 Matter.js Authors
44
+ * SPDX-License-Identifier: Apache-2.0
45
+ */
46
+ const logger = import_general.Logger.get("InteractionServer");
47
+ function genericElementPathToId(endpointId, clusterId, elementId) {
48
+ return `${endpointId}/${clusterId}/${elementId}`;
49
+ }
50
+ function commandPathToId({ endpointId, clusterId, commandId }) {
51
+ return genericElementPathToId(endpointId, clusterId, commandId);
52
+ }
53
+ function attributePathToId({ endpointId, clusterId, attributeId }) {
54
+ return genericElementPathToId(endpointId, clusterId, attributeId);
55
+ }
56
+ function eventPathToId({ endpointId, clusterId, eventId }) {
57
+ return genericElementPathToId(endpointId, clusterId, eventId);
58
+ }
59
+ function clusterPathToId({ nodeId, endpointId, clusterId }) {
60
+ return `${nodeId}/${endpointId}/${clusterId}`;
61
+ }
62
+ function isConcreteAttributePath(path) {
63
+ const { endpointId, clusterId, attributeId } = path;
64
+ return endpointId !== void 0 && clusterId !== void 0 && attributeId !== void 0;
65
+ }
66
+ function validateReadAttributesPath(path, isGroupSession = false) {
67
+ if (isGroupSession) {
68
+ throw new import_types.StatusResponseError("Illegal read request with group session", import_types.StatusCode.InvalidAction);
69
+ }
70
+ const { clusterId, attributeId } = path;
71
+ if (clusterId === void 0 && attributeId !== void 0) {
72
+ if (!import_model.GLOBAL_IDS.has(attributeId)) {
73
+ throw new import_types.StatusResponseError(
74
+ `Illegal read request for wildcard cluster and non global attribute ${attributeId}`,
75
+ import_types.StatusCode.InvalidAction
76
+ );
77
+ }
78
+ }
79
+ }
80
+ function validateWriteAttributesPath(path, isGroupSession = false) {
81
+ const { endpointId, clusterId, attributeId } = path;
82
+ if (clusterId === void 0 || attributeId === void 0) {
83
+ throw new import_types.StatusResponseError(
84
+ "Illegal write request with wildcard cluster or attribute ID",
85
+ import_types.StatusCode.InvalidAction
86
+ );
87
+ }
88
+ if (isGroupSession && endpointId !== void 0) {
89
+ throw new import_types.StatusResponseError("Illegal write request with group ID and endpoint ID", import_types.StatusCode.InvalidAction);
90
+ }
91
+ }
92
+ function isConcreteEventPath(path) {
93
+ const { endpointId, clusterId, eventId } = path;
94
+ return endpointId !== void 0 && clusterId !== void 0 && eventId !== void 0;
95
+ }
96
+ function validateReadEventPath(path, isGroupSession = false) {
97
+ const { clusterId, eventId } = path;
98
+ if (clusterId === void 0 && eventId !== void 0) {
99
+ throw new import_types.StatusResponseError("Illegal read request with wildcard cluster ID", import_types.StatusCode.InvalidAction);
100
+ }
101
+ if (isGroupSession) {
102
+ throw new import_types.StatusResponseError("Illegal read request with group session", import_types.StatusCode.InvalidAction);
103
+ }
104
+ }
105
+ function isConcreteCommandPath(path) {
106
+ const { endpointId, clusterId, commandId } = path;
107
+ return endpointId !== void 0 && clusterId !== void 0 && commandId !== void 0;
108
+ }
109
+ function validateCommandPath(path, isGroupSession = false) {
110
+ const { endpointId, clusterId, commandId } = path;
111
+ if (clusterId === void 0 || commandId === void 0) {
112
+ throw new import_types.StatusResponseError(
113
+ "Illegal write request with wildcard cluster or attribute ID",
114
+ import_types.StatusCode.InvalidAction
115
+ );
116
+ }
117
+ if (isGroupSession && endpointId !== void 0) {
118
+ throw new import_types.StatusResponseError("Illegal write request with group ID and endpoint ID", import_types.StatusCode.InvalidAction);
119
+ }
120
+ }
121
+ function getMatterModelCluster(clusterId) {
122
+ return import_model.MatterModel.standard.get(import_model.ClusterModel, clusterId);
123
+ }
124
+ function getMatterModelClusterAttribute(clusterId, attributeId) {
125
+ return getMatterModelCluster(clusterId)?.get(import_model.AttributeModel, attributeId);
126
+ }
127
+ function getMatterModelClusterCommand(clusterId, commandId) {
128
+ return getMatterModelCluster(clusterId)?.get(import_model.CommandModel, commandId);
129
+ }
130
+ class InteractionServer {
131
+ #context;
132
+ #nextSubscriptionId = import_general.Crypto.getRandomUInt32();
133
+ #isClosing = false;
134
+ #subscriptionConfig;
135
+ #maxPathsPerInvoke;
136
+ constructor(context) {
137
+ this.#context = context;
138
+ this.#subscriptionConfig = import_SubscriptionOptions.ServerSubscriptionConfig.of(context.subscriptionOptions);
139
+ this.#maxPathsPerInvoke = context.maxPathsPerInvoke ?? import_types.DEFAULT_MAX_PATHS_PER_INVOKE;
140
+ this.#context.structure.change.on(async () => {
141
+ this.#context.sessions.updateAllSubscriptions();
142
+ });
143
+ }
144
+ getId() {
145
+ return import_types.INTERACTION_PROTOCOL_ID;
146
+ }
147
+ get isClosing() {
148
+ return this.#isClosing;
149
+ }
150
+ get maxPathsPerInvoke() {
151
+ return this.#maxPathsPerInvoke;
152
+ }
153
+ async onNewExchange(exchange) {
154
+ if (this.#isClosing) return;
155
+ await new import_InteractionMessenger.InteractionServerMessenger(exchange).handleRequest(this);
156
+ }
157
+ async handleReadRequest(exchange, {
158
+ attributeRequests,
159
+ dataVersionFilters,
160
+ eventRequests,
161
+ eventFilters,
162
+ isFabricFiltered,
163
+ interactionModelRevision
164
+ }, message) {
165
+ logger.debug(
166
+ `Received read request from ${exchange.channel.name}: attributes:${attributeRequests?.map((path) => this.#endpointStructure.resolveAttributeName(path)).join(", ") ?? "none"}, events:${eventRequests?.map((path) => this.#endpointStructure.resolveEventName(path)).join(", ") ?? "none"} isFabricFiltered=${isFabricFiltered}`
167
+ );
168
+ if (interactionModelRevision > import_model.Specification.INTERACTION_MODEL_REVISION) {
169
+ logger.debug(
170
+ `Interaction model revision of sender ${interactionModelRevision} is higher than supported ${import_model.Specification.INTERACTION_MODEL_REVISION}.`
171
+ );
172
+ }
173
+ if (attributeRequests === void 0 && eventRequests === void 0) {
174
+ throw new import_types.StatusResponseError(
175
+ "Only Read requests with attributeRequests or eventRequests are supported right now",
176
+ import_types.StatusCode.UnsupportedRead
177
+ );
178
+ }
179
+ if (message.packetHeader.sessionType !== import_MessageCodec.SessionType.Unicast) {
180
+ throw new import_types.StatusResponseError(
181
+ "Subscriptions are only allowed on unicast sessions",
182
+ import_types.StatusCode.InvalidAction
183
+ );
184
+ }
185
+ const dataVersionFilterMap = new Map(
186
+ dataVersionFilters?.map(({ path, dataVersion }) => [clusterPathToId(path), dataVersion]) ?? []
187
+ );
188
+ if (dataVersionFilterMap.size > 0) {
189
+ logger.debug(
190
+ `DataVersionFilters: ${Array.from(dataVersionFilterMap.entries()).map(([path, version]) => `${path}=${version}`).join(", ")}`
191
+ );
192
+ }
193
+ const attributeReportsPayload = new Array();
194
+ for (const requestPath of attributeRequests ?? []) {
195
+ validateReadAttributesPath(requestPath);
196
+ const attributes = this.#endpointStructure.getAttributes([requestPath]);
197
+ if (attributes.length === 0) {
198
+ if (isConcreteAttributePath(requestPath)) {
199
+ const { endpointId, clusterId, attributeId } = requestPath;
200
+ try {
201
+ this.#endpointStructure.validateConcreteAttributePath(endpointId, clusterId, attributeId);
202
+ throw new import_general.InternalError(
203
+ "validateConcreteAttributePath should throw StatusResponseError but did not."
204
+ );
205
+ } catch (e) {
206
+ import_types.StatusResponseError.accept(e);
207
+ logger.debug(
208
+ `Error reading attribute from ${exchange.channel.name}: ${this.#endpointStructure.resolveAttributeName(requestPath)}: unsupported path: Status=${e.code}`
209
+ );
210
+ attributeReportsPayload.push({
211
+ hasFabricSensitiveData: false,
212
+ attributeStatus: { path: requestPath, status: { status: e.code } }
213
+ });
214
+ }
215
+ }
216
+ logger.debug(
217
+ `Read from ${exchange.channel.name}: ${this.#endpointStructure.resolveAttributeName(
218
+ requestPath
219
+ )}: ${this.#endpointStructure.resolveAttributeName(requestPath)}: ignore non-existing attribute`
220
+ );
221
+ continue;
222
+ }
223
+ for (const { path, attribute } of attributes) {
224
+ const { nodeId, endpointId, clusterId } = path;
225
+ try {
226
+ if (getMatterModelClusterAttribute(clusterId, attribute.id)?.readable === false) {
227
+ throw new import_types.StatusResponseError(
228
+ `Attribute ${attribute.id} is not readable.`,
229
+ import_types.StatusCode.UnsupportedRead
230
+ );
231
+ }
232
+ let value, version;
233
+ try {
234
+ ({ value, version } = await this.readAttribute(
235
+ path,
236
+ attribute,
237
+ exchange,
238
+ isFabricFiltered,
239
+ message,
240
+ this.#endpointStructure.getEndpoint(endpointId)
241
+ ));
242
+ } catch (e) {
243
+ import_SecureSession.NoAssociatedFabricError.accept(e);
244
+ if (endpointId === void 0 || clusterId === void 0) {
245
+ throw new import_general.MatterFlowError("Should never happen");
246
+ }
247
+ const cluster = this.#endpointStructure.getClusterServer(endpointId, clusterId);
248
+ if (cluster === void 0 || cluster.datasource == void 0) {
249
+ throw new import_general.MatterFlowError("Should never happen");
250
+ }
251
+ version = cluster.datasource.version;
252
+ value = [];
253
+ }
254
+ const versionFilterValue = endpointId !== void 0 && clusterId !== void 0 ? dataVersionFilterMap.get(clusterPathToId({ nodeId, endpointId, clusterId })) : void 0;
255
+ if (versionFilterValue !== void 0 && versionFilterValue === version) {
256
+ logger.debug(
257
+ `Read attribute from ${exchange.channel.name}: ${this.#endpointStructure.resolveAttributeName(
258
+ path
259
+ )}=${import_general.Logger.toJSON(value)} (version=${version}) ignored because of dataVersionFilter`
260
+ );
261
+ continue;
262
+ }
263
+ logger.debug(
264
+ `Read attribute from ${exchange.channel.name}: ${this.#endpointStructure.resolveAttributeName(
265
+ path
266
+ )}=${import_general.Logger.toJSON(value)} (version=${version})`
267
+ );
268
+ const { schema } = attribute;
269
+ attributeReportsPayload.push({
270
+ hasFabricSensitiveData: attribute.hasFabricSensitiveData,
271
+ attributeData: { path, dataVersion: version, payload: value, schema }
272
+ });
273
+ } catch (error) {
274
+ logger.error(
275
+ `Error while reading attribute from ${exchange.channel.name} to ${this.#endpointStructure.resolveAttributeName(path)}:`,
276
+ error
277
+ );
278
+ import_types.StatusResponseError.accept(error);
279
+ if (isConcreteAttributePath(requestPath)) {
280
+ attributeReportsPayload.push({
281
+ hasFabricSensitiveData: false,
282
+ attributeStatus: { path, status: { status: error.code } }
283
+ });
284
+ }
285
+ }
286
+ }
287
+ }
288
+ let eventReportsPayload;
289
+ if (eventRequests) {
290
+ eventReportsPayload = [];
291
+ for (const requestPath of eventRequests) {
292
+ validateReadEventPath(requestPath);
293
+ const events = this.#endpointStructure.getEvents([requestPath]);
294
+ if (events.length === 0) {
295
+ if (isConcreteEventPath(requestPath)) {
296
+ const { endpointId, clusterId, eventId } = requestPath;
297
+ try {
298
+ this.#endpointStructure.validateConcreteEventPath(endpointId, clusterId, eventId);
299
+ throw new import_general.InternalError(
300
+ "validateConcreteEventPath should throw StatusResponseError but did not."
301
+ );
302
+ } catch (e) {
303
+ import_types.StatusResponseError.accept(e);
304
+ logger.debug(
305
+ `Read event from ${exchange.channel.name}: ${this.#endpointStructure.resolveEventName(requestPath)}: unsupported path: Status=${e.code}`
306
+ );
307
+ eventReportsPayload?.push({
308
+ hasFabricSensitiveData: false,
309
+ eventStatus: { path: requestPath, status: { status: e.code } }
310
+ });
311
+ }
312
+ }
313
+ logger.debug(
314
+ `Read event from ${exchange.channel.name}: ${this.#endpointStructure.resolveEventName(
315
+ requestPath
316
+ )}: ignore non-existing event`
317
+ );
318
+ continue;
319
+ }
320
+ const reportsForPath = new Array();
321
+ for (const { path, event } of events) {
322
+ try {
323
+ const { endpointId } = path;
324
+ const matchingEvents = await this.readEvent(
325
+ path,
326
+ eventFilters,
327
+ event,
328
+ exchange,
329
+ isFabricFiltered,
330
+ message,
331
+ this.#endpointStructure.getEndpoint(endpointId)
332
+ );
333
+ logger.debug(
334
+ `Read event from ${exchange.channel.name}: ${this.#endpointStructure.resolveEventName(
335
+ path
336
+ )}=${import_general.Logger.toJSON(matchingEvents)}`
337
+ );
338
+ const { schema } = event;
339
+ reportsForPath.push(
340
+ ...matchingEvents.map(({ eventNumber, priority, epochTimestamp, data }) => ({
341
+ hasFabricSensitiveData: event.hasFabricSensitiveData,
342
+ eventData: {
343
+ path,
344
+ eventNumber,
345
+ priority,
346
+ epochTimestamp,
347
+ payload: data,
348
+ schema
349
+ }
350
+ }))
351
+ );
352
+ } catch (error) {
353
+ logger.error(
354
+ `Error while reading event from ${exchange.channel.name} to ${this.#endpointStructure.resolveEventName(path)}:`,
355
+ error
356
+ );
357
+ import_types.StatusResponseError.accept(error);
358
+ if (isConcreteEventPath(requestPath)) {
359
+ eventReportsPayload?.push({
360
+ hasFabricSensitiveData: false,
361
+ eventStatus: { path, status: { status: error.code } }
362
+ });
363
+ }
364
+ }
365
+ }
366
+ eventReportsPayload.push(
367
+ ...reportsForPath.sort((a, b) => {
368
+ const eventNumberA = a.eventData?.eventNumber ?? (0, import_types.EventNumber)(0);
369
+ const eventNumberB = b.eventData?.eventNumber ?? (0, import_types.EventNumber)(0);
370
+ if (eventNumberA > eventNumberB) {
371
+ return 1;
372
+ } else if (eventNumberA < eventNumberB) {
373
+ return -1;
374
+ } else {
375
+ return 0;
376
+ }
377
+ })
378
+ );
379
+ }
380
+ }
381
+ return {
382
+ interactionModelRevision: import_model.Specification.INTERACTION_MODEL_REVISION,
383
+ suppressResponse: true,
384
+ attributeReportsPayload,
385
+ eventReportsPayload
386
+ };
387
+ }
388
+ async readAttribute(_path, attribute, exchange, isFabricFiltered, message, _endpoint, offline = false) {
389
+ return attribute.getWithVersion(exchange.session, isFabricFiltered, offline ? void 0 : message);
390
+ }
391
+ async readEvent(_path, eventFilters, event, exchange, isFabricFiltered, message, _endpoint) {
392
+ return event.get(exchange.session, isFabricFiltered, message, eventFilters);
393
+ }
394
+ async handleWriteRequest(exchange, { suppressResponse, timedRequest, writeRequests, interactionModelRevision, moreChunkedMessages }, message) {
395
+ const sessionType = message.packetHeader.sessionType;
396
+ logger.debug(
397
+ `Received write request from ${exchange.channel.name}: ${writeRequests.map((req) => this.#endpointStructure.resolveAttributeName(req.path)).join(", ")}, suppressResponse=${suppressResponse}, moreChunkedMessages=${moreChunkedMessages}`
398
+ );
399
+ if (moreChunkedMessages && suppressResponse) {
400
+ throw new import_types.StatusResponseError(
401
+ "MoreChunkedMessages and SuppressResponse cannot be used together in write messages",
402
+ import_types.StatusCode.InvalidAction
403
+ );
404
+ }
405
+ if (interactionModelRevision > import_model.Specification.INTERACTION_MODEL_REVISION) {
406
+ logger.debug(
407
+ `Interaction model revision of sender ${interactionModelRevision} is higher than supported ${import_model.Specification.INTERACTION_MODEL_REVISION}.`
408
+ );
409
+ }
410
+ const receivedWithinTimedInteraction = exchange.hasActiveTimedInteraction();
411
+ if (receivedWithinTimedInteraction && moreChunkedMessages) {
412
+ throw new import_types.StatusResponseError(
413
+ "Write Request action that is part of a Timed Write Interaction SHALL NOT be chunked.",
414
+ import_types.StatusCode.InvalidAction
415
+ );
416
+ }
417
+ if (exchange.hasExpiredTimedInteraction()) {
418
+ exchange.clearTimedInteraction();
419
+ throw new import_types.StatusResponseError(`Timed request window expired. Decline write request.`, import_types.StatusCode.Timeout);
420
+ }
421
+ if (timedRequest !== exchange.hasTimedInteraction()) {
422
+ throw new import_types.StatusResponseError(
423
+ `timedRequest flag of write interaction (${timedRequest}) mismatch with expected timed interaction (${receivedWithinTimedInteraction}).`,
424
+ import_types.StatusCode.TimedRequestMismatch
425
+ );
426
+ }
427
+ if (receivedWithinTimedInteraction) {
428
+ logger.debug(
429
+ `Write request from ${exchange.channel.name} successfully received while timed interaction is running.`
430
+ );
431
+ exchange.clearTimedInteraction();
432
+ if (sessionType !== import_MessageCodec.SessionType.Unicast) {
433
+ throw new import_types.StatusResponseError(
434
+ "Write requests are only allowed on unicast sessions when a timed interaction is running.",
435
+ import_types.StatusCode.InvalidAction
436
+ );
437
+ }
438
+ }
439
+ if (sessionType === import_MessageCodec.SessionType.Group && !suppressResponse) {
440
+ throw new import_types.StatusResponseError(
441
+ "Write requests are only allowed as group casts when suppressResponse=true.",
442
+ import_types.StatusCode.InvalidAction
443
+ );
444
+ }
445
+ const writeData = (0, import_AttributeDataDecoder.expandPathsInAttributeData)(writeRequests, true);
446
+ const writeResults = new Array();
447
+ const attributeListWrites = /* @__PURE__ */ new Set();
448
+ const clusterDataVersionInfo = /* @__PURE__ */ new Map();
449
+ const inaccessiblePaths = /* @__PURE__ */ new Set();
450
+ for (const writeRequest of writeData) {
451
+ const { path: writePath, dataVersion } = writeRequest;
452
+ validateWriteAttributesPath(writePath);
453
+ const attributes = this.#endpointStructure.getAttributes([writePath], true);
454
+ if (attributes.length === 0) {
455
+ if (isConcreteAttributePath(writePath)) {
456
+ const { endpointId, clusterId, attributeId } = writePath;
457
+ try {
458
+ this.#endpointStructure.validateConcreteAttributePath(endpointId, clusterId, attributeId);
459
+ throw new import_types.StatusResponseError(
460
+ `Attribute ${attributeId} is not writable.`,
461
+ import_types.StatusCode.UnsupportedWrite
462
+ );
463
+ } catch (e) {
464
+ import_types.StatusResponseError.accept(e);
465
+ logger.debug(
466
+ `Write from ${exchange.channel.name}: ${this.#endpointStructure.resolveAttributeName(
467
+ writePath
468
+ )} not allowed: Status=${e.code}`
469
+ );
470
+ writeResults.push({ path: writePath, statusCode: e.code });
471
+ }
472
+ } else {
473
+ logger.debug(
474
+ `Write from ${exchange.channel.name}: ${this.#endpointStructure.resolveAttributeName(
475
+ writePath
476
+ )}: ignore non-existing (wildcard) attribute`
477
+ );
478
+ }
479
+ continue;
480
+ }
481
+ if (attributes.length === 1 && isConcreteAttributePath(writePath)) {
482
+ const { endpointId, clusterId } = writePath;
483
+ const { attribute } = attributes[0];
484
+ if (attribute.requiresTimedInteraction && !receivedWithinTimedInteraction) {
485
+ logger.debug(`This write requires a timed interaction which is not initialized.`);
486
+ writeResults.push({ path: writePath, statusCode: import_types.StatusCode.NeedsTimedInteraction });
487
+ continue;
488
+ }
489
+ if (attribute instanceof import_AttributeServer.FabricScopedAttributeServer && (!exchange.session.isSecure || !exchange.session.fabric)) {
490
+ logger.debug(`This write requires a secure session with a fabric assigned which is missing.`);
491
+ writeResults.push({ path: writePath, statusCode: import_types.StatusCode.UnsupportedAccess });
492
+ continue;
493
+ }
494
+ if (dataVersion !== void 0) {
495
+ const datasource = this.#endpointStructure.getClusterServer(endpointId, clusterId)?.datasource;
496
+ const { nodeId } = writePath;
497
+ const clusterKey = clusterPathToId({ nodeId, endpointId, clusterId });
498
+ const currentDataVersion = clusterDataVersionInfo.get(clusterKey) ?? datasource?.version;
499
+ if (currentDataVersion !== void 0) {
500
+ if (dataVersion !== currentDataVersion) {
501
+ logger.debug(
502
+ `This write requires a specific data version (${dataVersion}) which do not match the current cluster data version (${currentDataVersion}).`
503
+ );
504
+ writeResults.push({ path: writePath, statusCode: import_types.StatusCode.DataVersionMismatch });
505
+ continue;
506
+ }
507
+ clusterDataVersionInfo.set(clusterKey, currentDataVersion);
508
+ }
509
+ }
510
+ }
511
+ for (const { path, attribute } of attributes) {
512
+ const { schema, defaultValue } = attribute;
513
+ const pathId = attributePathToId(path);
514
+ try {
515
+ if (!(attribute instanceof import_AttributeServer.AttributeServer) && !(attribute instanceof import_AttributeServer.FabricScopedAttributeServer)) {
516
+ throw new import_types.StatusResponseError(
517
+ "Fixed attributes cannot be written",
518
+ import_types.StatusCode.UnsupportedWrite
519
+ );
520
+ }
521
+ if (inaccessiblePaths.has(pathId)) {
522
+ logger.debug(`This write is not allowed due to previous access denied.`);
523
+ continue;
524
+ }
525
+ const { endpointId } = path;
526
+ const { listIndex } = writePath;
527
+ const value = listIndex === void 0 ? (0, import_AttributeDataDecoder.decodeAttributeValueWithSchema)(schema, [writeRequest], defaultValue) : (0, import_AttributeDataDecoder.decodeListAttributeValueWithSchema)(
528
+ schema,
529
+ [writeRequest],
530
+ (await this.readAttribute(
531
+ path,
532
+ attribute,
533
+ exchange,
534
+ true,
535
+ message,
536
+ this.#endpointStructure.getEndpoint(endpointId)
537
+ )).value ?? defaultValue
538
+ );
539
+ logger.debug(
540
+ `Handle write request from ${exchange.channel.name} resolved to: ${this.#endpointStructure.resolveAttributeName(path)}=${import_general.Logger.toJSON(
541
+ value
542
+ )} (listIndex=${listIndex}, for-version=${dataVersion})`
543
+ );
544
+ if (attribute.requiresTimedInteraction && !receivedWithinTimedInteraction) {
545
+ logger.debug(`This write requires a timed interaction which is not initialized.`);
546
+ throw new import_types.StatusResponseError(
547
+ "This write requires a timed interaction which is not initialized.",
548
+ import_types.StatusCode.NeedsTimedInteraction
549
+ );
550
+ }
551
+ await this.writeAttribute(
552
+ path,
553
+ attribute,
554
+ value,
555
+ exchange,
556
+ message,
557
+ this.#endpointStructure.getEndpoint(endpointId),
558
+ receivedWithinTimedInteraction,
559
+ schema instanceof import_types.ArraySchema
560
+ );
561
+ if (schema instanceof import_types.ArraySchema && !attributeListWrites.has(attribute)) {
562
+ attributeListWrites.add(attribute);
563
+ }
564
+ } catch (error) {
565
+ if (import_types.StatusResponseError.is(error, import_types.StatusCode.UnsupportedAccess)) {
566
+ inaccessiblePaths.add(pathId);
567
+ }
568
+ if (attributes.length === 1 && isConcreteAttributePath(writePath)) {
569
+ logger.error(
570
+ `Error while handling write request from ${exchange.channel.name} to ${this.#endpointStructure.resolveAttributeName(path)}:`,
571
+ error instanceof import_types.StatusResponseError ? error.message : error
572
+ );
573
+ if (error instanceof import_types.StatusResponseError) {
574
+ writeResults.push({ path, statusCode: error.code, clusterStatusCode: error.clusterCode });
575
+ continue;
576
+ }
577
+ writeResults.push({ path, statusCode: import_types.StatusCode.ConstraintError });
578
+ continue;
579
+ } else {
580
+ logger.debug(
581
+ `While handling write request from ${exchange.channel.name} to ${this.#endpointStructure.resolveAttributeName(path)} ignored: ${error.message}`
582
+ );
583
+ }
584
+ }
585
+ writeResults.push({ path, statusCode: import_types.StatusCode.Success });
586
+ }
587
+ }
588
+ const errorResults = writeResults.filter(({ statusCode }) => statusCode !== import_types.StatusCode.Success);
589
+ logger.debug(
590
+ `Write request from ${exchange.channel.name} done ${errorResults.length ? `with following errors: ${errorResults.map(
591
+ ({ path, statusCode }) => `${this.#endpointStructure.resolveAttributeName(path)}=${import_general.Logger.toJSON(statusCode)}`
592
+ ).join(", ")}` : "without errors"}`
593
+ );
594
+ const response = {
595
+ interactionModelRevision: import_model.Specification.INTERACTION_MODEL_REVISION,
596
+ writeResponses: writeResults.map(({ path, statusCode, clusterStatusCode }) => ({
597
+ path,
598
+ status: { status: statusCode, clusterStatus: clusterStatusCode }
599
+ }))
600
+ };
601
+ for (const attribute of attributeListWrites.values()) {
602
+ try {
603
+ attribute.triggerDelayedChangeEvents();
604
+ } catch (error) {
605
+ logger.error(
606
+ `Ignored Error while writing attribute from ${exchange.channel.name} to ${attribute.name}:`,
607
+ error
608
+ );
609
+ }
610
+ }
611
+ return response;
612
+ }
613
+ async writeAttribute(_path, attribute, value, exchange, message, _endpoint, _receivedWithinTimedInteraction, isListWrite = false) {
614
+ attribute.set(value, exchange.session, message, isListWrite);
615
+ }
616
+ async handleSubscribeRequest(exchange, {
617
+ minIntervalFloorSeconds,
618
+ maxIntervalCeilingSeconds,
619
+ attributeRequests,
620
+ dataVersionFilters,
621
+ eventRequests,
622
+ eventFilters,
623
+ keepSubscriptions,
624
+ isFabricFiltered,
625
+ interactionModelRevision
626
+ }, messenger, message) {
627
+ logger.debug(
628
+ `Received subscribe request from ${exchange.channel.name} (keepSubscriptions=${keepSubscriptions}, isFabricFiltered=${isFabricFiltered})`
629
+ );
630
+ if (interactionModelRevision > import_model.Specification.INTERACTION_MODEL_REVISION) {
631
+ logger.debug(
632
+ `Interaction model revision of sender ${interactionModelRevision} is higher than supported ${import_model.Specification.INTERACTION_MODEL_REVISION}.`
633
+ );
634
+ }
635
+ if (message.packetHeader.sessionType !== import_MessageCodec.SessionType.Unicast) {
636
+ throw new import_types.StatusResponseError(
637
+ "Subscriptions are only allowed on unicast sessions",
638
+ import_types.StatusCode.InvalidAction
639
+ );
640
+ }
641
+ (0, import_SecureSession.assertSecureSession)(exchange.session, "Subscriptions are only implemented on secure sessions");
642
+ const session = exchange.session;
643
+ const fabric = session.fabric;
644
+ if (fabric === void 0)
645
+ throw new import_types.StatusResponseError(
646
+ "Subscriptions are only implemented after a fabric has been assigned",
647
+ import_types.StatusCode.InvalidAction
648
+ );
649
+ if (!keepSubscriptions) {
650
+ logger.debug(
651
+ `Clear subscriptions for Subscriber node ${session.peerNodeId} because keepSubscriptions=false`
652
+ );
653
+ await this.#context.sessions.clearSubscriptionsForNode(fabric.fabricIndex, session.peerNodeId, true);
654
+ }
655
+ if ((!Array.isArray(attributeRequests) || attributeRequests.length === 0) && (!Array.isArray(eventRequests) || eventRequests.length === 0)) {
656
+ throw new import_types.StatusResponseError("No attributes or events requested", import_types.StatusCode.InvalidAction);
657
+ }
658
+ logger.debug(
659
+ `Subscribe to attributes:${attributeRequests?.map((path) => this.#endpointStructure.resolveAttributeName(path)).join(", ") ?? "none"}, events:${eventRequests?.map((path) => this.#endpointStructure.resolveEventName(path)).join(", ") ?? "none"}`
660
+ );
661
+ if (dataVersionFilters !== void 0 && dataVersionFilters.length > 0) {
662
+ logger.debug(
663
+ `DataVersionFilters: ${dataVersionFilters.map(
664
+ ({ path: { nodeId, endpointId, clusterId }, dataVersion }) => `${clusterPathToId({ nodeId, endpointId, clusterId })}=${dataVersion}`
665
+ ).join(", ")}`
666
+ );
667
+ }
668
+ if (eventFilters !== void 0 && eventFilters.length > 0)
669
+ logger.debug(
670
+ `Event filters: ${eventFilters.map((filter) => `${filter.nodeId}/${filter.eventMin}`).join(", ")}`
671
+ );
672
+ attributeRequests?.forEach((path) => validateReadAttributesPath(path));
673
+ eventRequests?.forEach((path) => validateReadEventPath(path));
674
+ if (minIntervalFloorSeconds < 0) {
675
+ throw new import_types.StatusResponseError(
676
+ "minIntervalFloorSeconds should be greater or equal to 0",
677
+ import_types.StatusCode.InvalidAction
678
+ );
679
+ }
680
+ if (maxIntervalCeilingSeconds < 0) {
681
+ throw new import_types.StatusResponseError(
682
+ "maxIntervalCeilingSeconds should be greater or equal to 1",
683
+ import_types.StatusCode.InvalidAction
684
+ );
685
+ }
686
+ if (maxIntervalCeilingSeconds < minIntervalFloorSeconds) {
687
+ throw new import_types.StatusResponseError(
688
+ "maxIntervalCeilingSeconds should be greater or equal to minIntervalFloorSeconds",
689
+ import_types.StatusCode.InvalidAction
690
+ );
691
+ }
692
+ if (this.#nextSubscriptionId === 4294967295) this.#nextSubscriptionId = 0;
693
+ const subscriptionId = this.#nextSubscriptionId++;
694
+ const context = {
695
+ session,
696
+ structure: this.#endpointStructure,
697
+ readAttribute: (path, attribute, offline) => this.readAttribute(
698
+ path,
699
+ attribute,
700
+ exchange,
701
+ isFabricFiltered,
702
+ message,
703
+ this.#endpointStructure.getEndpoint(path.endpointId),
704
+ offline
705
+ ),
706
+ readEvent: (path, event, eventFilters2) => this.readEvent(
707
+ path,
708
+ eventFilters2,
709
+ event,
710
+ exchange,
711
+ isFabricFiltered,
712
+ message,
713
+ this.#endpointStructure.getEndpoint(path.endpointId)
714
+ ),
715
+ initiateExchange: (address, protocolId) => this.#context.initiateExchange(address, protocolId)
716
+ };
717
+ const subscription = new import_ServerSubscription.ServerSubscription({
718
+ id: subscriptionId,
719
+ context,
720
+ criteria: {
721
+ attributeRequests,
722
+ dataVersionFilters,
723
+ eventRequests,
724
+ eventFilters,
725
+ isFabricFiltered
726
+ },
727
+ minIntervalFloor: minIntervalFloorSeconds,
728
+ maxIntervalCeiling: maxIntervalCeilingSeconds,
729
+ subscriptionOptions: this.#subscriptionConfig
730
+ });
731
+ try {
732
+ await subscription.sendInitialReport(messenger);
733
+ } catch (error) {
734
+ logger.error(
735
+ `Subscription ${subscriptionId} for Session ${session.id}: Error while sending initial data reports`,
736
+ error
737
+ );
738
+ await subscription.close();
739
+ if (error instanceof import_types.StatusResponseError) {
740
+ logger.info(`Sending status response ${error.code} for interaction error: ${error.message}`);
741
+ await messenger.sendStatus(error.code);
742
+ }
743
+ await messenger.close();
744
+ return;
745
+ }
746
+ const maxInterval = subscription.maxInterval;
747
+ logger.info(
748
+ `Successfully created subscription ${subscriptionId} for Session ${session.id}. Updates: ${minIntervalFloorSeconds} - ${maxIntervalCeilingSeconds} => ${maxInterval} seconds (sendInterval = ${subscription.sendInterval} seconds)`
749
+ );
750
+ await messenger.send(
751
+ import_InteractionMessenger.MessageType.SubscribeResponse,
752
+ import_types.TlvSubscribeResponse.encode({
753
+ subscriptionId,
754
+ maxInterval,
755
+ interactionModelRevision: import_model.Specification.INTERACTION_MODEL_REVISION
756
+ })
757
+ );
758
+ subscription.activateSendingUpdates();
759
+ }
760
+ async handleInvokeRequest(exchange, { invokeRequests, timedRequest, suppressResponse, interactionModelRevision }, messenger, message) {
761
+ logger.debug(
762
+ `Received invoke request from ${exchange.channel.name}${invokeRequests.length > 0 ? ` with ${invokeRequests.length} commands` : ""}: ${invokeRequests.map(
763
+ ({ commandPath: { endpointId, clusterId, commandId } }) => this.#endpointStructure.resolveCommandName({ endpointId, clusterId, commandId })
764
+ ).join(", ")}, suppressResponse=${suppressResponse}`
765
+ );
766
+ if (interactionModelRevision > import_model.Specification.INTERACTION_MODEL_REVISION) {
767
+ logger.debug(
768
+ `Interaction model revision of sender ${interactionModelRevision} is higher than supported ${import_model.Specification.INTERACTION_MODEL_REVISION}.`
769
+ );
770
+ }
771
+ const receivedWithinTimedInteraction = exchange.hasActiveTimedInteraction();
772
+ if (exchange.hasExpiredTimedInteraction()) {
773
+ exchange.clearTimedInteraction();
774
+ throw new import_types.StatusResponseError(`Timed request window expired. Decline invoke request.`, import_types.StatusCode.Timeout);
775
+ }
776
+ if (timedRequest !== exchange.hasTimedInteraction()) {
777
+ throw new import_types.StatusResponseError(
778
+ `timedRequest flag of invoke interaction (${timedRequest}) mismatch with expected timed interaction (${receivedWithinTimedInteraction}).`,
779
+ import_types.StatusCode.TimedRequestMismatch
780
+ );
781
+ }
782
+ if (receivedWithinTimedInteraction) {
783
+ logger.debug(`Invoke request from ${exchange.channel.name} received while timed interaction is running.`);
784
+ exchange.clearTimedInteraction();
785
+ if (message.packetHeader.sessionType !== import_MessageCodec.SessionType.Unicast) {
786
+ throw new import_types.StatusResponseError(
787
+ "Invoke requests are only allowed on unicast sessions when a timed interaction is running.",
788
+ import_types.StatusCode.InvalidAction
789
+ );
790
+ }
791
+ }
792
+ if (invokeRequests.length > this.#maxPathsPerInvoke) {
793
+ throw new import_types.StatusResponseError(
794
+ `Only ${this.#maxPathsPerInvoke} invoke requests are supported in one message. This message contains ${invokeRequests.length}`,
795
+ import_types.StatusCode.InvalidAction
796
+ );
797
+ }
798
+ invokeRequests.forEach(({ commandPath }) => validateCommandPath(commandPath));
799
+ if (invokeRequests.length > 1) {
800
+ const invokeUniqueSet = /* @__PURE__ */ new Set();
801
+ invokeRequests.forEach(({ commandPath }) => {
802
+ if (!isConcreteCommandPath(commandPath)) {
803
+ throw new import_types.StatusResponseError(
804
+ "Wildcard paths are not supported in multi-command invoke requests",
805
+ import_types.StatusCode.InvalidAction
806
+ );
807
+ }
808
+ const commandPathId = commandPathToId(commandPath);
809
+ if (invokeUniqueSet.has(commandPathId)) {
810
+ throw new import_types.StatusResponseError(
811
+ `Duplicate command paths (${commandPathId}) are not allowed in multi-command invoke requests`,
812
+ import_types.StatusCode.InvalidAction
813
+ );
814
+ }
815
+ invokeUniqueSet.add(commandPathId);
816
+ });
817
+ }
818
+ const isGroupSession = message.packetHeader.sessionType === import_MessageCodec.SessionType.Group;
819
+ const invokeResponseMessage = {
820
+ suppressResponse: false,
821
+ // Deprecated but must be present
822
+ interactionModelRevision: import_model.Specification.INTERACTION_MODEL_REVISION,
823
+ invokeResponses: [],
824
+ moreChunkedMessages: invokeRequests.length > 1
825
+ // Assume for now we have multiple responses when having multiple invokes
826
+ };
827
+ const emptyInvokeResponseBytes = import_types.TlvInvokeResponseForSend.encode(invokeResponseMessage);
828
+ let messageSize = emptyInvokeResponseBytes.length;
829
+ let invokeResultsProcessed = 0;
830
+ const processResponseResult = async (invokeResponse) => {
831
+ invokeResultsProcessed++;
832
+ if (isGroupSession) {
833
+ return;
834
+ }
835
+ const encodedInvokeResponse = import_types.TlvInvokeResponseData.encodeTlv(invokeResponse);
836
+ const invokeResponseBytes = import_types.TlvAny.getEncodedByteLength(encodedInvokeResponse);
837
+ if (messageSize + invokeResponseBytes > exchange.maxPayloadSize || invokeResultsProcessed === invokeRequests.length) {
838
+ let lastMessageProcessed = false;
839
+ if (messageSize + invokeResponseBytes <= exchange.maxPayloadSize) {
840
+ invokeResponseMessage.invokeResponses.push(encodedInvokeResponse);
841
+ lastMessageProcessed = true;
842
+ }
843
+ if (invokeResponseMessage.invokeResponses.length > 0) {
844
+ if (invokeRequests.length > 1) {
845
+ logger.debug(
846
+ `Send ${lastMessageProcessed ? "final " : ""}invoke response for ${invokeResponseMessage.invokeResponses} commands`
847
+ );
848
+ }
849
+ await messenger.send(
850
+ import_InteractionMessenger.MessageType.InvokeResponse,
851
+ import_types.TlvInvokeResponseForSend.encode({
852
+ ...invokeResponseMessage,
853
+ moreChunkedMessages: invokeResultsProcessed < invokeRequests.length ? true : void 0
854
+ })
855
+ );
856
+ invokeResponseMessage.invokeResponses = [];
857
+ messageSize = emptyInvokeResponseBytes.length;
858
+ }
859
+ if (!lastMessageProcessed) {
860
+ invokeResultsProcessed--;
861
+ return processResponseResult(invokeResponse);
862
+ }
863
+ } else {
864
+ invokeResponseMessage.invokeResponses.push(encodedInvokeResponse);
865
+ messageSize += invokeResponseBytes;
866
+ }
867
+ };
868
+ for (const { commandPath, commandFields, commandRef } of invokeRequests) {
869
+ const commands = this.#endpointStructure.getCommands([commandPath]);
870
+ if (commands.length === 0) {
871
+ if (isConcreteCommandPath(commandPath)) {
872
+ const { endpointId, clusterId, commandId } = commandPath;
873
+ let result;
874
+ try {
875
+ this.#endpointStructure.validateConcreteCommandPath(endpointId, clusterId, commandId);
876
+ throw new import_general.InternalError(
877
+ "validateConcreteCommandPath should throw StatusResponseError but did not."
878
+ );
879
+ } catch (e) {
880
+ import_types.StatusResponseError.accept(e);
881
+ logger.debug(
882
+ `Invoke from ${exchange.channel.name}: ${this.#endpointStructure.resolveCommandName(
883
+ commandPath
884
+ )} unsupported path: Status=${e.code}`
885
+ );
886
+ result = { status: { commandPath, status: { status: e.code }, commandRef } };
887
+ }
888
+ await processResponseResult(result);
889
+ } else {
890
+ logger.debug(
891
+ `Invoke from ${exchange.channel.name}: ${this.#endpointStructure.resolveCommandName(
892
+ commandPath
893
+ )} ignore non-existing command`
894
+ );
895
+ }
896
+ continue;
897
+ }
898
+ const isConcretePath = isConcreteCommandPath(commandPath);
899
+ for (const { command, path } of commands) {
900
+ const { endpointId, clusterId, commandId } = path;
901
+ if (endpointId === void 0) {
902
+ logger.error(
903
+ `Invoke from ${exchange.channel.name}: ${this.#endpointStructure.resolveCommandName(
904
+ path
905
+ )} invalid path because empty endpoint!`
906
+ );
907
+ if (isConcretePath) {
908
+ await processResponseResult({
909
+ status: {
910
+ commandPath: path,
911
+ status: { status: import_types.StatusCode.UnsupportedEndpoint },
912
+ commandRef
913
+ }
914
+ });
915
+ }
916
+ continue;
917
+ }
918
+ const endpoint = this.#endpointStructure.getEndpoint(endpointId);
919
+ if (endpoint === void 0) {
920
+ logger.error(
921
+ `Invoke from ${exchange.channel.name}: ${this.#endpointStructure.resolveCommandName(
922
+ path
923
+ )} invalid path because endpoint not found!`
924
+ );
925
+ if (isConcretePath) {
926
+ await processResponseResult({
927
+ status: {
928
+ commandPath: path,
929
+ status: { status: import_types.StatusCode.UnsupportedEndpoint },
930
+ commandRef
931
+ }
932
+ });
933
+ }
934
+ continue;
935
+ }
936
+ if (command.requiresTimedInteraction && !receivedWithinTimedInteraction) {
937
+ logger.debug(`This invoke requires a timed interaction which is not initialized.`);
938
+ if (isConcretePath) {
939
+ await processResponseResult({
940
+ status: {
941
+ commandPath: path,
942
+ status: { status: import_types.StatusCode.NeedsTimedInteraction },
943
+ commandRef
944
+ }
945
+ });
946
+ }
947
+ continue;
948
+ }
949
+ if (getMatterModelClusterCommand(clusterId, commandId)?.fabricScoped && (!exchange.session.isSecure || !exchange.session.fabric)) {
950
+ logger.debug(`This invoke requires a secure session with a fabric assigned which is missing.`);
951
+ if (isConcretePath) {
952
+ await processResponseResult({
953
+ status: { commandPath: path, status: { status: import_types.StatusCode.UnsupportedAccess }, commandRef }
954
+ });
955
+ }
956
+ continue;
957
+ }
958
+ let result;
959
+ try {
960
+ result = await this.invokeCommand(
961
+ path,
962
+ command,
963
+ exchange,
964
+ commandFields ?? import_types.TlvNoArguments.encodeTlv(commandFields),
965
+ message,
966
+ endpoint,
967
+ receivedWithinTimedInteraction
968
+ );
969
+ } catch (e) {
970
+ import_types.StatusResponseError.accept(e);
971
+ let errorCode = e.code;
972
+ const errorLogText = `Error ${import_general.Diagnostic.hex(errorCode)}${e.clusterCode !== void 0 ? `/${import_general.Diagnostic.hex(e.clusterCode)}` : ""} while invoking command: ${e.message}`;
973
+ if (e instanceof import_types.ValidationError) {
974
+ logger.info(
975
+ `Validation-${errorLogText}${e.fieldName !== void 0 ? ` in field ${e.fieldName}` : ""}`
976
+ );
977
+ if (errorCode === import_types.StatusCode.InvalidAction) {
978
+ errorCode = import_types.StatusCode.InvalidCommand;
979
+ }
980
+ } else {
981
+ logger.info(errorLogText);
982
+ }
983
+ result = {
984
+ code: errorCode,
985
+ clusterCode: e.clusterCode,
986
+ responseId: command.responseId,
987
+ response: import_types.TlvNoResponse.encodeTlv()
988
+ };
989
+ }
990
+ const { code, clusterCode, responseId, response } = result;
991
+ if (response.length === 0) {
992
+ await processResponseResult({
993
+ status: { commandPath: path, status: { status: code, clusterStatus: clusterCode }, commandRef }
994
+ });
995
+ } else {
996
+ await processResponseResult({
997
+ command: {
998
+ commandPath: { ...path, commandId: responseId },
999
+ commandFields: response,
1000
+ commandRef
1001
+ }
1002
+ });
1003
+ }
1004
+ }
1005
+ }
1006
+ }
1007
+ async invokeCommand(_path, command, exchange, commandFields, message, endpoint, _receivedWithinTimedInteraction = false) {
1008
+ return command.invoke(exchange.session, commandFields, message, endpoint);
1009
+ }
1010
+ handleTimedRequest(exchange, { timeout, interactionModelRevision }) {
1011
+ logger.debug(`Received timed request (${timeout}ms) from ${exchange.channel.name}`);
1012
+ if (interactionModelRevision > import_model.Specification.INTERACTION_MODEL_REVISION) {
1013
+ logger.debug(
1014
+ `Interaction model revision of sender ${interactionModelRevision} is higher than supported ${import_model.Specification.INTERACTION_MODEL_REVISION}.`
1015
+ );
1016
+ }
1017
+ exchange.startTimedInteraction(timeout);
1018
+ }
1019
+ async close() {
1020
+ this.#isClosing = true;
1021
+ }
1022
+ get #endpointStructure() {
1023
+ return this.#context.structure;
1024
+ }
1025
+ }
1026
+ //# sourceMappingURL=InteractionServer.js.map