@matter/protocol 0.16.0-alpha.0-20250807-37b08c9bb → 0.16.0-alpha.0-20250810-5c91a95d2

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 (366) hide show
  1. package/dist/cjs/advertisement/Advertisement.d.ts +119 -0
  2. package/dist/cjs/advertisement/Advertisement.d.ts.map +1 -0
  3. package/dist/cjs/advertisement/Advertisement.js +267 -0
  4. package/dist/cjs/advertisement/Advertisement.js.map +6 -0
  5. package/dist/cjs/advertisement/Advertiser.d.ts +50 -0
  6. package/dist/cjs/advertisement/Advertiser.d.ts.map +1 -0
  7. package/dist/cjs/advertisement/Advertiser.js +81 -0
  8. package/dist/cjs/advertisement/Advertiser.js.map +6 -0
  9. package/dist/cjs/advertisement/CommissioningMode.d.ts +11 -0
  10. package/dist/cjs/advertisement/CommissioningMode.d.ts.map +1 -0
  11. package/dist/cjs/advertisement/CommissioningMode.js +35 -0
  12. package/dist/cjs/advertisement/CommissioningMode.js.map +6 -0
  13. package/dist/cjs/{common/InstanceBroadcaster.d.ts → advertisement/PairingHintBitmap.d.ts} +3 -69
  14. package/dist/cjs/advertisement/PairingHintBitmap.d.ts.map +1 -0
  15. package/dist/cjs/{common/InstanceBroadcaster.js → advertisement/PairingHintBitmap.js} +5 -12
  16. package/dist/cjs/advertisement/PairingHintBitmap.js.map +6 -0
  17. package/dist/cjs/advertisement/ServiceDescription.d.ts +70 -0
  18. package/dist/cjs/advertisement/ServiceDescription.d.ts.map +1 -0
  19. package/dist/cjs/advertisement/ServiceDescription.js +61 -0
  20. package/dist/cjs/advertisement/ServiceDescription.js.map +6 -0
  21. package/dist/cjs/advertisement/ble/BleAdvertisement.d.ts +16 -0
  22. package/dist/cjs/advertisement/ble/BleAdvertisement.d.ts.map +1 -0
  23. package/dist/cjs/advertisement/ble/BleAdvertisement.js +85 -0
  24. package/dist/cjs/advertisement/ble/BleAdvertisement.js.map +6 -0
  25. package/dist/cjs/advertisement/ble/BleAdvertiser.d.ts +66 -0
  26. package/dist/cjs/advertisement/ble/BleAdvertiser.d.ts.map +1 -0
  27. package/dist/cjs/advertisement/ble/BleAdvertiser.js +83 -0
  28. package/dist/cjs/advertisement/ble/BleAdvertiser.js.map +6 -0
  29. package/dist/cjs/advertisement/ble/index.d.ts +8 -0
  30. package/dist/cjs/advertisement/ble/index.d.ts.map +1 -0
  31. package/dist/cjs/advertisement/ble/index.js +25 -0
  32. package/dist/cjs/advertisement/ble/index.js.map +6 -0
  33. package/dist/cjs/advertisement/index.d.ts +13 -0
  34. package/dist/cjs/advertisement/index.d.ts.map +1 -0
  35. package/dist/cjs/advertisement/index.js +30 -0
  36. package/dist/cjs/advertisement/index.js.map +6 -0
  37. package/dist/cjs/advertisement/mdns/CommissionableMdnsAdvertisement.d.ts +21 -0
  38. package/dist/cjs/advertisement/mdns/CommissionableMdnsAdvertisement.d.ts.map +1 -0
  39. package/dist/cjs/advertisement/mdns/CommissionableMdnsAdvertisement.js +104 -0
  40. package/dist/cjs/advertisement/mdns/CommissionableMdnsAdvertisement.js.map +6 -0
  41. package/dist/cjs/advertisement/mdns/CommissionerMdnsAdvertisement.d.ts +20 -0
  42. package/dist/cjs/advertisement/mdns/CommissionerMdnsAdvertisement.d.ts.map +1 -0
  43. package/dist/cjs/advertisement/mdns/CommissionerMdnsAdvertisement.js +70 -0
  44. package/dist/cjs/advertisement/mdns/CommissionerMdnsAdvertisement.js.map +6 -0
  45. package/dist/cjs/advertisement/mdns/MdnsAdvertisement.d.ts +40 -0
  46. package/dist/cjs/advertisement/mdns/MdnsAdvertisement.d.ts.map +1 -0
  47. package/dist/cjs/advertisement/mdns/MdnsAdvertisement.js +145 -0
  48. package/dist/cjs/advertisement/mdns/MdnsAdvertisement.js.map +6 -0
  49. package/dist/cjs/advertisement/mdns/MdnsAdvertiser.d.ts +99 -0
  50. package/dist/cjs/advertisement/mdns/MdnsAdvertiser.d.ts.map +1 -0
  51. package/dist/cjs/advertisement/mdns/MdnsAdvertiser.js +166 -0
  52. package/dist/cjs/advertisement/mdns/MdnsAdvertiser.js.map +6 -0
  53. package/dist/cjs/advertisement/mdns/OperationalMdnsAdvertisement.d.ts +18 -0
  54. package/dist/cjs/advertisement/mdns/OperationalMdnsAdvertisement.d.ts.map +1 -0
  55. package/dist/cjs/advertisement/mdns/OperationalMdnsAdvertisement.js +55 -0
  56. package/dist/cjs/advertisement/mdns/OperationalMdnsAdvertisement.js.map +6 -0
  57. package/dist/cjs/advertisement/mdns/index.d.ts +11 -0
  58. package/dist/cjs/advertisement/mdns/index.d.ts.map +1 -0
  59. package/dist/cjs/advertisement/mdns/index.js +28 -0
  60. package/dist/cjs/advertisement/mdns/index.js.map +6 -0
  61. package/dist/cjs/ble/Ble.d.ts +7 -5
  62. package/dist/cjs/ble/Ble.d.ts.map +1 -1
  63. package/dist/cjs/ble/Ble.js.map +1 -1
  64. package/dist/cjs/codec/BtpCodec.d.ts +1 -1
  65. package/dist/cjs/codec/BtpCodec.d.ts.map +1 -1
  66. package/dist/cjs/codec/BtpCodec.js +4 -4
  67. package/dist/cjs/codec/BtpCodec.js.map +1 -1
  68. package/dist/cjs/common/Scanner.d.ts +1 -25
  69. package/dist/cjs/common/Scanner.d.ts.map +1 -1
  70. package/dist/cjs/common/Scanner.js +1 -18
  71. package/dist/cjs/common/Scanner.js.map +1 -1
  72. package/dist/cjs/common/SupportedTransportsBitmap.d.ts +33 -0
  73. package/dist/cjs/common/SupportedTransportsBitmap.d.ts.map +1 -0
  74. package/dist/cjs/common/SupportedTransportsBitmap.js +45 -0
  75. package/dist/cjs/common/SupportedTransportsBitmap.js.map +6 -0
  76. package/dist/cjs/common/index.d.ts +1 -1
  77. package/dist/cjs/common/index.d.ts.map +1 -1
  78. package/dist/cjs/common/index.js +1 -1
  79. package/dist/cjs/common/index.js.map +1 -1
  80. package/dist/cjs/fabric/Fabric.d.ts +1 -0
  81. package/dist/cjs/fabric/Fabric.d.ts.map +1 -1
  82. package/dist/cjs/fabric/Fabric.js +7 -0
  83. package/dist/cjs/fabric/Fabric.js.map +1 -1
  84. package/dist/cjs/index.d.ts +1 -0
  85. package/dist/cjs/index.d.ts.map +1 -1
  86. package/dist/cjs/index.js +1 -0
  87. package/dist/cjs/index.js.map +1 -1
  88. package/dist/{esm/mdns/MdnsScanner.d.ts → cjs/mdns/MdnsClient.d.ts} +11 -14
  89. package/dist/cjs/mdns/MdnsClient.d.ts.map +1 -0
  90. package/dist/cjs/mdns/{MdnsScanner.js → MdnsClient.js} +35 -90
  91. package/dist/cjs/mdns/MdnsClient.js.map +6 -0
  92. package/dist/cjs/mdns/MdnsConsts.d.ts +11 -2
  93. package/dist/cjs/mdns/MdnsConsts.d.ts.map +1 -1
  94. package/dist/cjs/mdns/MdnsConsts.js +31 -4
  95. package/dist/cjs/mdns/MdnsConsts.js.map +1 -1
  96. package/dist/cjs/mdns/MdnsServer.d.ts +13 -22
  97. package/dist/cjs/mdns/MdnsServer.d.ts.map +1 -1
  98. package/dist/cjs/mdns/MdnsServer.js +55 -140
  99. package/dist/cjs/mdns/MdnsServer.js.map +2 -2
  100. package/dist/cjs/mdns/MdnsService.d.ts +4 -5
  101. package/dist/cjs/mdns/MdnsService.d.ts.map +1 -1
  102. package/dist/cjs/mdns/MdnsService.js +22 -23
  103. package/dist/cjs/mdns/MdnsService.js.map +1 -1
  104. package/dist/cjs/mdns/MdnsSocket.d.ts +32 -0
  105. package/dist/cjs/mdns/MdnsSocket.d.ts.map +1 -0
  106. package/dist/cjs/mdns/MdnsSocket.js +144 -0
  107. package/dist/cjs/mdns/MdnsSocket.js.map +6 -0
  108. package/dist/cjs/mdns/index.d.ts +2 -3
  109. package/dist/cjs/mdns/index.d.ts.map +1 -1
  110. package/dist/cjs/mdns/index.js +2 -3
  111. package/dist/cjs/mdns/index.js.map +1 -1
  112. package/dist/cjs/peer/ControllerCommissioner.js +2 -2
  113. package/dist/cjs/peer/ControllerCommissioner.js.map +1 -1
  114. package/dist/cjs/peer/ControllerDiscovery.d.ts +3 -3
  115. package/dist/cjs/peer/ControllerDiscovery.d.ts.map +1 -1
  116. package/dist/cjs/peer/ControllerDiscovery.js.map +1 -1
  117. package/dist/cjs/peer/PeerSet.d.ts.map +1 -1
  118. package/dist/cjs/peer/PeerSet.js +10 -5
  119. package/dist/cjs/peer/PeerSet.js.map +1 -1
  120. package/dist/cjs/protocol/DeviceAdvertiser.d.ts +23 -18
  121. package/dist/cjs/protocol/DeviceAdvertiser.d.ts.map +1 -1
  122. package/dist/cjs/protocol/DeviceAdvertiser.js +130 -129
  123. package/dist/cjs/protocol/DeviceAdvertiser.js.map +1 -1
  124. package/dist/cjs/protocol/DeviceCommissioner.d.ts +0 -1
  125. package/dist/cjs/protocol/DeviceCommissioner.d.ts.map +1 -1
  126. package/dist/cjs/protocol/DeviceCommissioner.js +44 -44
  127. package/dist/cjs/protocol/DeviceCommissioner.js.map +1 -1
  128. package/dist/cjs/protocol/ExchangeManager.js +1 -1
  129. package/dist/cjs/protocol/ExchangeManager.js.map +1 -1
  130. package/dist/cjs/protocol/MessageExchange.d.ts +1 -1
  131. package/dist/cjs/protocol/MessageExchange.d.ts.map +1 -1
  132. package/dist/cjs/protocol/MessageExchange.js +6 -8
  133. package/dist/cjs/protocol/MessageExchange.js.map +1 -1
  134. package/dist/cjs/session/NodeSession.d.ts +1 -0
  135. package/dist/cjs/session/NodeSession.d.ts.map +1 -1
  136. package/dist/cjs/session/NodeSession.js +3 -0
  137. package/dist/cjs/session/NodeSession.js.map +1 -1
  138. package/dist/cjs/session/Session.d.ts +3 -33
  139. package/dist/cjs/session/Session.d.ts.map +1 -1
  140. package/dist/cjs/session/Session.js +4 -9
  141. package/dist/cjs/session/Session.js.map +1 -1
  142. package/dist/cjs/session/SessionIntervals.d.ts +36 -0
  143. package/dist/cjs/session/SessionIntervals.d.ts.map +1 -0
  144. package/dist/cjs/session/SessionIntervals.js +51 -0
  145. package/dist/cjs/session/SessionIntervals.js.map +6 -0
  146. package/dist/cjs/session/SessionManager.d.ts +1 -1
  147. package/dist/cjs/session/SessionManager.d.ts.map +1 -1
  148. package/dist/cjs/session/SessionManager.js +11 -12
  149. package/dist/cjs/session/SessionManager.js.map +1 -1
  150. package/dist/cjs/session/pase/PaseMessages.js +2 -2
  151. package/dist/cjs/session/pase/PaseMessages.js.map +1 -1
  152. package/dist/esm/advertisement/Advertisement.d.ts +119 -0
  153. package/dist/esm/advertisement/Advertisement.d.ts.map +1 -0
  154. package/dist/esm/advertisement/Advertisement.js +247 -0
  155. package/dist/esm/advertisement/Advertisement.js.map +6 -0
  156. package/dist/esm/advertisement/Advertiser.d.ts +50 -0
  157. package/dist/esm/advertisement/Advertiser.d.ts.map +1 -0
  158. package/dist/esm/advertisement/Advertiser.js +61 -0
  159. package/dist/esm/advertisement/Advertiser.js.map +6 -0
  160. package/dist/esm/advertisement/CommissioningMode.d.ts +11 -0
  161. package/dist/esm/advertisement/CommissioningMode.d.ts.map +1 -0
  162. package/dist/esm/advertisement/CommissioningMode.js +15 -0
  163. package/dist/esm/advertisement/CommissioningMode.js.map +6 -0
  164. package/dist/esm/{common/InstanceBroadcaster.d.ts → advertisement/PairingHintBitmap.d.ts} +3 -69
  165. package/dist/esm/advertisement/PairingHintBitmap.d.ts.map +1 -0
  166. package/dist/esm/{common/InstanceBroadcaster.js → advertisement/PairingHintBitmap.js} +2 -9
  167. package/dist/esm/{common/InstanceBroadcaster.js.map → advertisement/PairingHintBitmap.js.map} +3 -3
  168. package/dist/esm/advertisement/ServiceDescription.d.ts +70 -0
  169. package/dist/esm/advertisement/ServiceDescription.d.ts.map +1 -0
  170. package/dist/esm/advertisement/ServiceDescription.js +41 -0
  171. package/dist/esm/advertisement/ServiceDescription.js.map +6 -0
  172. package/dist/esm/advertisement/ble/BleAdvertisement.d.ts +16 -0
  173. package/dist/esm/advertisement/ble/BleAdvertisement.d.ts.map +1 -0
  174. package/dist/esm/advertisement/ble/BleAdvertisement.js +65 -0
  175. package/dist/esm/advertisement/ble/BleAdvertisement.js.map +6 -0
  176. package/dist/esm/advertisement/ble/BleAdvertiser.d.ts +66 -0
  177. package/dist/esm/advertisement/ble/BleAdvertiser.d.ts.map +1 -0
  178. package/dist/esm/advertisement/ble/BleAdvertiser.js +63 -0
  179. package/dist/esm/advertisement/ble/BleAdvertiser.js.map +6 -0
  180. package/dist/esm/advertisement/ble/index.d.ts +8 -0
  181. package/dist/esm/advertisement/ble/index.d.ts.map +1 -0
  182. package/dist/esm/advertisement/ble/index.js +8 -0
  183. package/dist/esm/advertisement/ble/index.js.map +6 -0
  184. package/dist/esm/advertisement/index.d.ts +13 -0
  185. package/dist/esm/advertisement/index.d.ts.map +1 -0
  186. package/dist/esm/advertisement/index.js +13 -0
  187. package/dist/esm/advertisement/index.js.map +6 -0
  188. package/dist/esm/advertisement/mdns/CommissionableMdnsAdvertisement.d.ts +21 -0
  189. package/dist/esm/advertisement/mdns/CommissionableMdnsAdvertisement.d.ts.map +1 -0
  190. package/dist/esm/advertisement/mdns/CommissionableMdnsAdvertisement.js +95 -0
  191. package/dist/esm/advertisement/mdns/CommissionableMdnsAdvertisement.js.map +6 -0
  192. package/dist/esm/advertisement/mdns/CommissionerMdnsAdvertisement.d.ts +20 -0
  193. package/dist/esm/advertisement/mdns/CommissionerMdnsAdvertisement.d.ts.map +1 -0
  194. package/dist/esm/advertisement/mdns/CommissionerMdnsAdvertisement.js +54 -0
  195. package/dist/esm/advertisement/mdns/CommissionerMdnsAdvertisement.js.map +6 -0
  196. package/dist/esm/advertisement/mdns/MdnsAdvertisement.d.ts +40 -0
  197. package/dist/esm/advertisement/mdns/MdnsAdvertisement.d.ts.map +1 -0
  198. package/dist/esm/advertisement/mdns/MdnsAdvertisement.js +125 -0
  199. package/dist/esm/advertisement/mdns/MdnsAdvertisement.js.map +6 -0
  200. package/dist/esm/advertisement/mdns/MdnsAdvertiser.d.ts +99 -0
  201. package/dist/esm/advertisement/mdns/MdnsAdvertiser.d.ts.map +1 -0
  202. package/dist/esm/advertisement/mdns/MdnsAdvertiser.js +146 -0
  203. package/dist/esm/advertisement/mdns/MdnsAdvertiser.js.map +6 -0
  204. package/dist/esm/advertisement/mdns/OperationalMdnsAdvertisement.d.ts +18 -0
  205. package/dist/esm/advertisement/mdns/OperationalMdnsAdvertisement.d.ts.map +1 -0
  206. package/dist/esm/advertisement/mdns/OperationalMdnsAdvertisement.js +40 -0
  207. package/dist/esm/advertisement/mdns/OperationalMdnsAdvertisement.js.map +6 -0
  208. package/dist/esm/advertisement/mdns/index.d.ts +11 -0
  209. package/dist/esm/advertisement/mdns/index.d.ts.map +1 -0
  210. package/dist/esm/advertisement/mdns/index.js +11 -0
  211. package/dist/esm/advertisement/mdns/index.js.map +6 -0
  212. package/dist/esm/ble/Ble.d.ts +7 -5
  213. package/dist/esm/ble/Ble.d.ts.map +1 -1
  214. package/dist/esm/ble/Ble.js.map +1 -1
  215. package/dist/esm/codec/BtpCodec.d.ts +1 -1
  216. package/dist/esm/codec/BtpCodec.d.ts.map +1 -1
  217. package/dist/esm/codec/BtpCodec.js +4 -4
  218. package/dist/esm/codec/BtpCodec.js.map +1 -1
  219. package/dist/esm/common/Scanner.d.ts +1 -25
  220. package/dist/esm/common/Scanner.d.ts.map +1 -1
  221. package/dist/esm/common/Scanner.js +1 -18
  222. package/dist/esm/common/Scanner.js.map +1 -1
  223. package/dist/esm/common/SupportedTransportsBitmap.d.ts +33 -0
  224. package/dist/esm/common/SupportedTransportsBitmap.d.ts.map +1 -0
  225. package/dist/esm/common/SupportedTransportsBitmap.js +25 -0
  226. package/dist/esm/common/SupportedTransportsBitmap.js.map +6 -0
  227. package/dist/esm/common/index.d.ts +1 -1
  228. package/dist/esm/common/index.d.ts.map +1 -1
  229. package/dist/esm/common/index.js +1 -1
  230. package/dist/esm/fabric/Fabric.d.ts +1 -0
  231. package/dist/esm/fabric/Fabric.d.ts.map +1 -1
  232. package/dist/esm/fabric/Fabric.js +7 -0
  233. package/dist/esm/fabric/Fabric.js.map +1 -1
  234. package/dist/esm/index.d.ts +1 -0
  235. package/dist/esm/index.d.ts.map +1 -1
  236. package/dist/esm/index.js +1 -0
  237. package/dist/esm/index.js.map +1 -1
  238. package/dist/{cjs/mdns/MdnsScanner.d.ts → esm/mdns/MdnsClient.d.ts} +11 -14
  239. package/dist/esm/mdns/MdnsClient.d.ts.map +1 -0
  240. package/dist/esm/mdns/{MdnsScanner.js → MdnsClient.js} +34 -92
  241. package/dist/esm/mdns/MdnsClient.js.map +6 -0
  242. package/dist/esm/mdns/MdnsConsts.d.ts +11 -2
  243. package/dist/esm/mdns/MdnsConsts.d.ts.map +1 -1
  244. package/dist/esm/mdns/MdnsConsts.js +31 -4
  245. package/dist/esm/mdns/MdnsConsts.js.map +1 -1
  246. package/dist/esm/mdns/MdnsServer.d.ts +13 -22
  247. package/dist/esm/mdns/MdnsServer.d.ts.map +1 -1
  248. package/dist/esm/mdns/MdnsServer.js +57 -145
  249. package/dist/esm/mdns/MdnsServer.js.map +2 -2
  250. package/dist/esm/mdns/MdnsService.d.ts +4 -5
  251. package/dist/esm/mdns/MdnsService.d.ts.map +1 -1
  252. package/dist/esm/mdns/MdnsService.js +22 -24
  253. package/dist/esm/mdns/MdnsService.js.map +1 -1
  254. package/dist/esm/mdns/MdnsSocket.d.ts +32 -0
  255. package/dist/esm/mdns/MdnsSocket.d.ts.map +1 -0
  256. package/dist/esm/mdns/MdnsSocket.js +133 -0
  257. package/dist/esm/mdns/MdnsSocket.js.map +6 -0
  258. package/dist/esm/mdns/index.d.ts +2 -3
  259. package/dist/esm/mdns/index.d.ts.map +1 -1
  260. package/dist/esm/mdns/index.js +2 -3
  261. package/dist/esm/mdns/index.js.map +1 -1
  262. package/dist/esm/peer/ControllerCommissioner.js +2 -2
  263. package/dist/esm/peer/ControllerCommissioner.js.map +1 -1
  264. package/dist/esm/peer/ControllerDiscovery.d.ts +3 -3
  265. package/dist/esm/peer/ControllerDiscovery.d.ts.map +1 -1
  266. package/dist/esm/peer/ControllerDiscovery.js.map +1 -1
  267. package/dist/esm/peer/PeerSet.d.ts.map +1 -1
  268. package/dist/esm/peer/PeerSet.js +10 -5
  269. package/dist/esm/peer/PeerSet.js.map +1 -1
  270. package/dist/esm/protocol/DeviceAdvertiser.d.ts +23 -18
  271. package/dist/esm/protocol/DeviceAdvertiser.d.ts.map +1 -1
  272. package/dist/esm/protocol/DeviceAdvertiser.js +131 -139
  273. package/dist/esm/protocol/DeviceAdvertiser.js.map +1 -1
  274. package/dist/esm/protocol/DeviceCommissioner.d.ts +0 -1
  275. package/dist/esm/protocol/DeviceCommissioner.d.ts.map +1 -1
  276. package/dist/esm/protocol/DeviceCommissioner.js +47 -47
  277. package/dist/esm/protocol/DeviceCommissioner.js.map +1 -1
  278. package/dist/esm/protocol/ExchangeManager.js +1 -1
  279. package/dist/esm/protocol/ExchangeManager.js.map +1 -1
  280. package/dist/esm/protocol/MessageExchange.d.ts +1 -1
  281. package/dist/esm/protocol/MessageExchange.d.ts.map +1 -1
  282. package/dist/esm/protocol/MessageExchange.js +6 -12
  283. package/dist/esm/protocol/MessageExchange.js.map +1 -1
  284. package/dist/esm/session/NodeSession.d.ts +1 -0
  285. package/dist/esm/session/NodeSession.d.ts.map +1 -1
  286. package/dist/esm/session/NodeSession.js +3 -0
  287. package/dist/esm/session/NodeSession.js.map +1 -1
  288. package/dist/esm/session/Session.d.ts +3 -33
  289. package/dist/esm/session/Session.d.ts.map +1 -1
  290. package/dist/esm/session/Session.js +4 -9
  291. package/dist/esm/session/Session.js.map +1 -1
  292. package/dist/esm/session/SessionIntervals.d.ts +36 -0
  293. package/dist/esm/session/SessionIntervals.d.ts.map +1 -0
  294. package/dist/esm/session/SessionIntervals.js +31 -0
  295. package/dist/esm/session/SessionIntervals.js.map +6 -0
  296. package/dist/esm/session/SessionManager.d.ts +1 -1
  297. package/dist/esm/session/SessionManager.d.ts.map +1 -1
  298. package/dist/esm/session/SessionManager.js +10 -14
  299. package/dist/esm/session/SessionManager.js.map +1 -1
  300. package/dist/esm/session/pase/PaseMessages.js +1 -1
  301. package/package.json +9 -9
  302. package/src/advertisement/Advertisement.ts +348 -0
  303. package/src/advertisement/Advertiser.ts +83 -0
  304. package/src/advertisement/CommissioningMode.ts +11 -0
  305. package/src/{common/InstanceBroadcaster.ts → advertisement/PairingHintBitmap.ts} +1 -92
  306. package/src/advertisement/ServiceDescription.ts +110 -0
  307. package/src/advertisement/ble/BleAdvertisement.ts +90 -0
  308. package/src/advertisement/ble/BleAdvertiser.ts +116 -0
  309. package/src/advertisement/ble/index.ts +8 -0
  310. package/src/advertisement/index.ts +13 -0
  311. package/src/advertisement/mdns/CommissionableMdnsAdvertisement.ts +118 -0
  312. package/src/advertisement/mdns/CommissionerMdnsAdvertisement.ts +73 -0
  313. package/src/advertisement/mdns/MdnsAdvertisement.ts +167 -0
  314. package/src/advertisement/mdns/MdnsAdvertiser.ts +248 -0
  315. package/src/advertisement/mdns/OperationalMdnsAdvertisement.ts +50 -0
  316. package/src/advertisement/mdns/index.ts +11 -0
  317. package/src/ble/Ble.ts +8 -5
  318. package/src/codec/BtpCodec.ts +4 -3
  319. package/src/common/Scanner.ts +1 -17
  320. package/src/common/SupportedTransportsBitmap.ts +25 -0
  321. package/src/common/index.ts +1 -1
  322. package/src/fabric/Fabric.ts +8 -0
  323. package/src/index.ts +1 -0
  324. package/src/mdns/{MdnsScanner.ts → MdnsClient.ts} +34 -103
  325. package/src/mdns/MdnsConsts.ts +27 -2
  326. package/src/mdns/MdnsServer.ts +79 -184
  327. package/src/mdns/MdnsService.ts +24 -27
  328. package/src/mdns/MdnsSocket.ts +179 -0
  329. package/src/mdns/index.ts +2 -3
  330. package/src/peer/ControllerCommissioner.ts +2 -2
  331. package/src/peer/ControllerDiscovery.ts +3 -3
  332. package/src/peer/PeerSet.ts +15 -9
  333. package/src/protocol/DeviceAdvertiser.ts +161 -151
  334. package/src/protocol/DeviceCommissioner.ts +65 -75
  335. package/src/protocol/ExchangeManager.ts +1 -1
  336. package/src/protocol/MessageExchange.ts +8 -14
  337. package/src/session/NodeSession.ts +4 -0
  338. package/src/session/Session.ts +6 -42
  339. package/src/session/SessionIntervals.ts +57 -0
  340. package/src/session/SessionManager.ts +9 -13
  341. package/src/session/pase/PaseMessages.ts +1 -1
  342. package/dist/cjs/common/InstanceBroadcaster.d.ts.map +0 -1
  343. package/dist/cjs/common/InstanceBroadcaster.js.map +0 -6
  344. package/dist/cjs/mdns/MdnsBroadcaster.d.ts +0 -34
  345. package/dist/cjs/mdns/MdnsBroadcaster.d.ts.map +0 -1
  346. package/dist/cjs/mdns/MdnsBroadcaster.js +0 -365
  347. package/dist/cjs/mdns/MdnsBroadcaster.js.map +0 -6
  348. package/dist/cjs/mdns/MdnsInstanceBroadcaster.d.ts +0 -28
  349. package/dist/cjs/mdns/MdnsInstanceBroadcaster.d.ts.map +0 -1
  350. package/dist/cjs/mdns/MdnsInstanceBroadcaster.js +0 -87
  351. package/dist/cjs/mdns/MdnsInstanceBroadcaster.js.map +0 -6
  352. package/dist/cjs/mdns/MdnsScanner.d.ts.map +0 -1
  353. package/dist/cjs/mdns/MdnsScanner.js.map +0 -6
  354. package/dist/esm/common/InstanceBroadcaster.d.ts.map +0 -1
  355. package/dist/esm/mdns/MdnsBroadcaster.d.ts +0 -34
  356. package/dist/esm/mdns/MdnsBroadcaster.d.ts.map +0 -1
  357. package/dist/esm/mdns/MdnsBroadcaster.js +0 -378
  358. package/dist/esm/mdns/MdnsBroadcaster.js.map +0 -6
  359. package/dist/esm/mdns/MdnsInstanceBroadcaster.d.ts +0 -28
  360. package/dist/esm/mdns/MdnsInstanceBroadcaster.d.ts.map +0 -1
  361. package/dist/esm/mdns/MdnsInstanceBroadcaster.js +0 -67
  362. package/dist/esm/mdns/MdnsInstanceBroadcaster.js.map +0 -6
  363. package/dist/esm/mdns/MdnsScanner.d.ts.map +0 -1
  364. package/dist/esm/mdns/MdnsScanner.js.map +0 -6
  365. package/src/mdns/MdnsBroadcaster.ts +0 -451
  366. package/src/mdns/MdnsInstanceBroadcaster.ts +0 -88
@@ -0,0 +1,248 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import { Advertiser } from "#advertisement/Advertiser.js";
8
+ import { ServiceDescription } from "#advertisement/ServiceDescription.js";
9
+ import { Bytes, Crypto, ImplementationError, InternalError, RetrySchedule, STANDARD_MATTER_PORT } from "#general";
10
+ import type { MdnsServer } from "#mdns/MdnsServer.js";
11
+ import { DatatypeModel, FieldElement } from "#model";
12
+ import { MAXIMUM_COMMISSIONING_TIMEOUT_S } from "#types";
13
+ import { CommissionableMdnsAdvertisement } from "./CommissionableMdnsAdvertisement.js";
14
+ import { CommissionerMdnsAdvertisement } from "./CommissionerMdnsAdvertisement.js";
15
+ import type { MdnsAdvertisement } from "./MdnsAdvertisement.js";
16
+ import { OperationalMdnsAdvertisement } from "./OperationalMdnsAdvertisement.js";
17
+
18
+ /**
19
+ * An {@link Advertiser} that advertises using an in-process MDNS implementation.
20
+ */
21
+ export class MdnsAdvertiser extends Advertiser {
22
+ readonly port: number;
23
+ readonly omitPrivateDetails: boolean;
24
+
25
+ #schedules = new Array<{ config: MdnsAdvertiser.BroadcastSchedule; schedule?: RetrySchedule }>();
26
+
27
+ constructor(
28
+ readonly crypto: Crypto,
29
+ readonly server: MdnsServer,
30
+ options?: MdnsAdvertiser.Options,
31
+ ) {
32
+ super();
33
+
34
+ this.port = options?.port ?? STANDARD_MATTER_PORT;
35
+ this.omitPrivateDetails = options?.omitPrivateDetails ?? false;
36
+
37
+ let hasDefaultSchedule = false;
38
+ let hasRetransmitSchedule = false;
39
+ if (options?.schedules) {
40
+ for (const schedule of options.schedules) {
41
+ if (schedule.serviceKind === undefined) {
42
+ if (schedule.event === undefined) {
43
+ hasDefaultSchedule = true;
44
+ }
45
+
46
+ if (schedule.event === "retransmit") {
47
+ hasRetransmitSchedule = true;
48
+ }
49
+ }
50
+
51
+ this.#schedules.push({ config: schedule });
52
+ }
53
+ }
54
+
55
+ if (!hasRetransmitSchedule) {
56
+ this.#schedules.push({ config: MdnsAdvertiser.RetransmissionBroadcastSchedule });
57
+ }
58
+
59
+ if (!hasDefaultSchedule) {
60
+ this.#schedules.push({ config: MdnsAdvertiser.DefaultBroadcastSchedule });
61
+ }
62
+ }
63
+
64
+ /**
65
+ * Create an advertisement for the specific service.
66
+ */
67
+ override getAdvertisement(description: ServiceDescription): MdnsAdvertisement | undefined {
68
+ switch (description.kind) {
69
+ case "operational":
70
+ return (
71
+ (this.advertisementForFabric(description.fabric) as MdnsAdvertisement | undefined) ??
72
+ new OperationalMdnsAdvertisement(this, description)
73
+ );
74
+
75
+ case "commissionable":
76
+ return new CommissionableMdnsAdvertisement(this, description);
77
+
78
+ case "commissioner":
79
+ return new CommissionerMdnsAdvertisement(this, description);
80
+
81
+ default:
82
+ throw new ImplementationError(
83
+ `Unsupported service description kind "${(description as ServiceDescription).kind}`,
84
+ );
85
+ }
86
+ }
87
+
88
+ /**
89
+ * Generate a random 8-byte Matter instance identifier.
90
+ */
91
+ createInstanceId() {
92
+ return Bytes.toHex(this.crypto.randomBytes(8)).toUpperCase();
93
+ }
94
+
95
+ /**
96
+ * Retrieve the broadcast schedule for a specific advertisement.
97
+ */
98
+ broadcastScheduleFor(advertisement: MdnsAdvertisement, event?: Advertiser.BroadcastEvent) {
99
+ const entry = this.#scheduleFor(advertisement, event);
100
+
101
+ if (entry.schedule === undefined) {
102
+ entry.schedule = new RetrySchedule(
103
+ this.crypto,
104
+ RetrySchedule.Configuration(MdnsAdvertiser.DefaultBroadcastSchedule, entry.config),
105
+ );
106
+ }
107
+
108
+ return entry.schedule;
109
+ }
110
+
111
+ /**
112
+ * Retrieve broadcast configuration for a specific advertisement.
113
+ */
114
+ broadcastConfigFor(advertisement: MdnsAdvertisement, event?: Advertiser.BroadcastEvent) {
115
+ return this.#scheduleFor(advertisement, event).config;
116
+ }
117
+
118
+ #scheduleFor(advertisement: MdnsAdvertisement, event?: Advertiser.BroadcastEvent) {
119
+ if (!event) {
120
+ event = "startup";
121
+ }
122
+
123
+ for (const entry of this.#schedules) {
124
+ const { serviceKind, event: event2 } = entry.config;
125
+
126
+ if (serviceKind !== undefined && serviceKind !== advertisement.description.kind) {
127
+ continue;
128
+ }
129
+
130
+ if (event2 !== undefined && event2 !== event) {
131
+ continue;
132
+ }
133
+
134
+ return entry;
135
+ }
136
+
137
+ throw new InternalError("Default retry schedule not present");
138
+ }
139
+ }
140
+
141
+ export namespace MdnsAdvertiser {
142
+ /**
143
+ * MDNS advertisement configuration options.
144
+ */
145
+ export interface Options {
146
+ /**
147
+ * The port of the Matter service to advertise.
148
+ *
149
+ * Defaults to 5540.
150
+ */
151
+ readonly port?: number;
152
+
153
+ /**
154
+ * Omit the vendor and product ID from announcements for privacy reasons.
155
+ */
156
+ readonly omitPrivateDetails?: boolean;
157
+
158
+ /**
159
+ * Broadcast schedule.
160
+ *
161
+ * These control the intervals at which the server broadcasts the advertisement. Note that order is important;
162
+ * more specific schedules should appear first.
163
+ *
164
+ * By default all broadcasts are configured using {@link DefaultBroadcastSchedule}.
165
+ */
166
+ readonly schedules?: readonly BroadcastSchedule[];
167
+ }
168
+
169
+ /**
170
+ * Schedule for automatic broadcasts.
171
+ *
172
+ * Schedules apply conditionally with {@link DefaultBroadcastSchedule} as the fallback.
173
+ */
174
+ export interface BroadcastSchedule extends RetrySchedule.Configuration {
175
+ /**
176
+ * Limit this schedule to a particular service kind.
177
+ */
178
+ readonly serviceKind?: ServiceDescription["kind"];
179
+
180
+ /**
181
+ * Limit this schedule to initial broadcast or broadcast when reconnecting.
182
+ */
183
+ readonly event?: Advertiser.BroadcastEvent;
184
+
185
+ /**
186
+ * Extra time to broadcast after establishing an operational connection.
187
+ *
188
+ * Set to zero to terminate broadcast immediately after connection. If undefined broadcasts will continue until
189
+ * terminated by {@link timeout} or {@link maximumCount}.
190
+ */
191
+ readonly broadcastAfterConnection?: number;
192
+ }
193
+
194
+ /**
195
+ * Default schedule for automatic broadcast.
196
+ */
197
+ export const DefaultBroadcastSchedule: BroadcastSchedule = {
198
+ // Mandated by MDNS specification
199
+ initialInterval: 1_000,
200
+
201
+ // Maximum commissioning timeout per Matter specification 5.4.2.3.1, although
202
+ timeout: MAXIMUM_COMMISSIONING_TIMEOUT_S * 1000,
203
+
204
+ // Minimum per MDNS specification
205
+ backoffFactor: 2,
206
+
207
+ // Technically this may result in us emitting more than 8 packets which is the maximum per the MDNS
208
+ // specification but extra packets will only come every 90 seconds
209
+ maximumInterval: 90_000,
210
+
211
+ // Not in any specification AFAIK but common sense to reduce thundering herd
212
+ jitterFactor: 0.25,
213
+
214
+ // Generally operational broadcast is unnecessary once an operational connection is established
215
+ broadcastAfterConnection: 0,
216
+ };
217
+
218
+ /**
219
+ * Default schedule for retransmission broadcast.
220
+ */
221
+ export const RetransmissionBroadcastSchedule: BroadcastSchedule = {
222
+ event: "retransmit",
223
+
224
+ // Retransmission events occur for every packet retry so limit count to 1
225
+ maximumCount: 1,
226
+ };
227
+
228
+ /**
229
+ * Data model for MDNS advertiser configuration.
230
+ */
231
+ export const OptionsSchema = new DatatypeModel(
232
+ { name: "MdnsAdvertiserOptions", type: "struct" },
233
+ FieldElement({ name: "omitPrivateDetails", type: "bool" }),
234
+ FieldElement(
235
+ { name: "schedules", type: "list" },
236
+ FieldElement(
237
+ { name: "entry", type: "struct" },
238
+ FieldElement({ name: "initialInterval", type: "uint32" }),
239
+ FieldElement({ name: "timeout", type: "uint32" }),
240
+ FieldElement({ name: "backoffFactor", type: "uint8" }),
241
+ FieldElement({ name: "maximumInterval", type: "uint32" }),
242
+ FieldElement({ name: "jitterFactor", type: "single" }),
243
+ FieldElement({ name: "serviceKind", type: "string" }),
244
+ FieldElement({ name: "event", type: "string" }),
245
+ ),
246
+ ),
247
+ );
248
+ }
@@ -0,0 +1,50 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import type { Advertisement } from "#advertisement/Advertisement.js";
8
+ import { ServiceDescription } from "#advertisement/ServiceDescription.js";
9
+ import { Bytes, PtrRecord } from "#general";
10
+ import {
11
+ getFabricQname,
12
+ getOperationalDeviceQname,
13
+ MATTER_SERVICE_QNAME,
14
+ SERVICE_DISCOVERY_QNAME,
15
+ } from "#mdns/MdnsConsts.js";
16
+ import { NodeId } from "#types";
17
+ import { MdnsAdvertisement } from "./MdnsAdvertisement.js";
18
+ import type { MdnsAdvertiser } from "./MdnsAdvertiser.js";
19
+
20
+ /**
21
+ * Advertise a node as a fabric member.
22
+ */
23
+ export class OperationalMdnsAdvertisement extends MdnsAdvertisement<ServiceDescription.Operational> {
24
+ constructor(advertiser: MdnsAdvertiser, description: ServiceDescription.Operational) {
25
+ const {
26
+ fabric: { operationalId, nodeId },
27
+ } = description;
28
+
29
+ const qname = getOperationalDeviceQname(Bytes.toHex(operationalId).toUpperCase(), NodeId.toHexString(nodeId));
30
+
31
+ super(advertiser, qname, description);
32
+ }
33
+
34
+ override get ptrRecords() {
35
+ const operationalIdString = Bytes.toHex(this.description.fabric.operationalId).toUpperCase();
36
+ const fabricQname = getFabricQname(operationalIdString);
37
+
38
+ return [
39
+ PtrRecord(SERVICE_DISCOVERY_QNAME, MATTER_SERVICE_QNAME),
40
+ PtrRecord(SERVICE_DISCOVERY_QNAME, fabricQname),
41
+ PtrRecord(MATTER_SERVICE_QNAME, this.qname),
42
+ PtrRecord(fabricQname, this.qname),
43
+ ];
44
+ }
45
+
46
+ override isDuplicate(other: Advertisement) {
47
+ // There may only be one operational advertisement per service per advertiser
48
+ return other.isOperational() && other.service === this.service;
49
+ }
50
+ }
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ export * from "./CommissionableMdnsAdvertisement.js";
8
+ export * from "./CommissionerMdnsAdvertisement.js";
9
+ export * from "./MdnsAdvertisement.js";
10
+ export * from "./MdnsAdvertiser.js";
11
+ export * from "./OperationalMdnsAdvertisement.js";
package/src/ble/Ble.ts CHANGED
@@ -5,7 +5,6 @@
5
5
  */
6
6
 
7
7
  import { Channel, ChannelType, MatterError, NetInterface, NoProviderError, TransportInterface } from "#general";
8
- import { InstanceBroadcaster } from "../common/InstanceBroadcaster.js";
9
8
  import { Scanner } from "../common/Scanner.js";
10
9
  import { BLE_MAX_MATTER_PAYLOAD_SIZE } from "./BleConsts.js";
11
10
 
@@ -23,10 +22,14 @@ export abstract class Ble {
23
22
  return this.get !== BleDisabled;
24
23
  }
25
24
 
26
- abstract getBlePeripheralInterface(): TransportInterface;
27
- abstract getBleCentralInterface(): NetInterface;
28
- abstract getBleBroadcaster(additionalAdvertisementData?: Uint8Array): InstanceBroadcaster;
29
- abstract getBleScanner(): Scanner;
25
+ abstract get peripheralInterface(): BlePeripheralInterface;
26
+ abstract get centralInterface(): NetInterface;
27
+ abstract get scanner(): Scanner;
28
+ }
29
+
30
+ export interface BlePeripheralInterface extends TransportInterface {
31
+ advertise(advertiseData: Uint8Array, additionalAdvertisementData?: Uint8Array, intervalMs?: number): Promise<void>;
32
+ stopAdvertising(): Promise<void>;
30
33
  }
31
34
 
32
35
  export abstract class BleChannel<T> implements Channel<T> {
@@ -283,6 +283,7 @@ export class BtpCodec {
283
283
  vendorId: number,
284
284
  productId: number,
285
285
  hasAdditionalAdvertisementData = false,
286
+ isExtendedAnnouncement = false,
286
287
  ) {
287
288
  const writer = new DataWriter(Endian.Little);
288
289
  writer.writeUInt8(0x02);
@@ -293,9 +294,9 @@ export class BtpCodec {
293
294
  writer.writeUInt16(0xfff6);
294
295
  writer.writeUInt8(0x00);
295
296
  writer.writeUInt16(discriminator);
296
- writer.writeUInt16(vendorId);
297
- writer.writeUInt16(productId);
298
- writer.writeUInt8(hasAdditionalAdvertisementData ? 0x01 : 0x00);
297
+ writer.writeUInt16(isExtendedAnnouncement ? 0 : vendorId);
298
+ writer.writeUInt16(isExtendedAnnouncement ? 0 : productId);
299
+ writer.writeUInt8((hasAdditionalAdvertisementData ? 1 : 0) | (isExtendedAnnouncement ? 2 : 0));
299
300
  return writer.toByteArray();
300
301
  }
301
302
 
@@ -5,25 +5,9 @@
5
5
  */
6
6
 
7
7
  import { BasicSet, ChannelType, Environment, Environmental, Lifespan, ServerAddress, ServerAddressIp } from "#general";
8
- import { BitFlag, BitmapSchema, DiscoveryCapabilitiesBitmap, NodeId, TypeFromPartialBitSchema, VendorId } from "#types";
8
+ import { DiscoveryCapabilitiesBitmap, NodeId, TypeFromPartialBitSchema, VendorId } from "#types";
9
9
  import { Fabric } from "../fabric/Fabric.js";
10
10
 
11
- export const SupportedTransportsBitmap = {
12
- // Bit 0 is reserved
13
- /**
14
- * TCP Client
15
- * The advertising Node implements the TCP Client mode and MAY connect to a peer Node that is a TCP Server.
16
- */
17
- tcpClient: BitFlag(1),
18
-
19
- /**
20
- * TCP Server
21
- * The advertising Node implements the TCP Server mode and SHALL listen for incoming TCP connections.
22
- */
23
- tcpServer: BitFlag(2),
24
- };
25
- export const SupportedTransportsSchema = BitmapSchema(SupportedTransportsBitmap);
26
-
27
11
  /**
28
12
  * All information exposed by a commissionable device via announcements.
29
13
  * The properties are named identical as in the Matter specification.
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2025 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import { BitFlag, BitmapSchema, TypeFromBitSchema } from "@matter/types";
8
+
9
+ export const SupportedTransportsBitmap = {
10
+ // Bit 0 is reserved
11
+ /**
12
+ * TCP Client
13
+ * The advertising Node implements the TCP Client mode and MAY connect to a peer Node that is a TCP Server.
14
+ */
15
+ tcpClient: BitFlag(1),
16
+
17
+ /**
18
+ * TCP Server
19
+ * The advertising Node implements the TCP Server mode and SHALL listen for incoming TCP connections.
20
+ */
21
+ tcpServer: BitFlag(2),
22
+ };
23
+ export const SupportedTransportsSchema = BitmapSchema(SupportedTransportsBitmap);
24
+
25
+ export interface SupportedTransportsBitmap extends TypeFromBitSchema<typeof SupportedTransportsBitmap> {}
@@ -8,6 +8,6 @@ export * from "../peer/PeerAddress.js";
8
8
  export * from "./ExpandedPath.js";
9
9
  export * from "./FailsafeContext.js";
10
10
  export * from "./FailsafeTimer.js";
11
- export * from "./InstanceBroadcaster.js";
12
11
  export * from "./OperationalCredentialsTypes.js";
13
12
  export * from "./Scanner.js";
13
+ export * from "./SupportedTransportsBitmap.js";
@@ -214,6 +214,14 @@ export class Fabric {
214
214
  this.#sessions.delete(session);
215
215
  }
216
216
 
217
+ hasSessionForPeer(peerNodeId: NodeId) {
218
+ for (const session of this.#sessions) {
219
+ if (session.peerNodeId === peerNodeId) {
220
+ return true;
221
+ }
222
+ }
223
+ }
224
+
217
225
  addRemoveCallback(callback: () => MaybePromise<void>) {
218
226
  this.#removeCallbacks.push(callback);
219
227
  }
package/src/index.ts CHANGED
@@ -5,6 +5,7 @@
5
5
  */
6
6
 
7
7
  export * from "./action/index.js";
8
+ export * from "./advertisement/index.js";
8
9
  export * from "./ble/index.js";
9
10
  export * from "./certificate/index.js";
10
11
  export * from "./cluster/index.js";