@matter/thread-br-client 0.0.1

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 (869) hide show
  1. package/README.md +192 -0
  2. package/dist/cjs/coap/CoapClient.d.ts +33 -0
  3. package/dist/cjs/coap/CoapClient.d.ts.map +1 -0
  4. package/dist/cjs/coap/CoapClient.js +281 -0
  5. package/dist/cjs/coap/CoapClient.js.map +6 -0
  6. package/dist/cjs/coap/CoapMessage.d.ts +23 -0
  7. package/dist/cjs/coap/CoapMessage.d.ts.map +1 -0
  8. package/dist/cjs/coap/CoapMessage.js +182 -0
  9. package/dist/cjs/coap/CoapMessage.js.map +6 -0
  10. package/dist/cjs/coap/index.d.ts +8 -0
  11. package/dist/cjs/coap/index.d.ts.map +1 -0
  12. package/dist/cjs/coap/index.js +31 -0
  13. package/dist/cjs/coap/index.js.map +6 -0
  14. package/dist/cjs/commissioner/Commissioner.d.ts +89 -0
  15. package/dist/cjs/commissioner/Commissioner.d.ts.map +1 -0
  16. package/dist/cjs/commissioner/Commissioner.js +188 -0
  17. package/dist/cjs/commissioner/Commissioner.js.map +6 -0
  18. package/dist/cjs/commissioner/LeadKa.d.ts +17 -0
  19. package/dist/cjs/commissioner/LeadKa.d.ts.map +1 -0
  20. package/dist/cjs/commissioner/LeadKa.js +63 -0
  21. package/dist/cjs/commissioner/LeadKa.js.map +6 -0
  22. package/dist/cjs/commissioner/LeadPet.d.ts +14 -0
  23. package/dist/cjs/commissioner/LeadPet.d.ts.map +1 -0
  24. package/dist/cjs/commissioner/LeadPet.js +66 -0
  25. package/dist/cjs/commissioner/LeadPet.js.map +6 -0
  26. package/dist/cjs/commissioner/index.d.ts +12 -0
  27. package/dist/cjs/commissioner/index.d.ts.map +1 -0
  28. package/dist/cjs/commissioner/index.js +38 -0
  29. package/dist/cjs/commissioner/index.js.map +6 -0
  30. package/dist/cjs/credentials/ThreadCredentialsRegistry.d.ts +50 -0
  31. package/dist/cjs/credentials/ThreadCredentialsRegistry.d.ts.map +1 -0
  32. package/dist/cjs/credentials/ThreadCredentialsRegistry.js +119 -0
  33. package/dist/cjs/credentials/ThreadCredentialsRegistry.js.map +6 -0
  34. package/dist/cjs/credentials/ThreadNetworkCredentials.d.ts +26 -0
  35. package/dist/cjs/credentials/ThreadNetworkCredentials.d.ts.map +1 -0
  36. package/dist/cjs/credentials/ThreadNetworkCredentials.js +22 -0
  37. package/dist/cjs/credentials/ThreadNetworkCredentials.js.map +6 -0
  38. package/dist/cjs/credentials/index.d.ts +8 -0
  39. package/dist/cjs/credentials/index.d.ts.map +1 -0
  40. package/dist/cjs/credentials/index.js +30 -0
  41. package/dist/cjs/credentials/index.js.map +6 -0
  42. package/dist/cjs/crypto/AesCmacPrf128.d.ts +24 -0
  43. package/dist/cjs/crypto/AesCmacPrf128.d.ts.map +1 -0
  44. package/dist/cjs/crypto/AesCmacPrf128.js +107 -0
  45. package/dist/cjs/crypto/AesCmacPrf128.js.map +6 -0
  46. package/dist/cjs/crypto/Pbkdf2AesCmac.d.ts +18 -0
  47. package/dist/cjs/crypto/Pbkdf2AesCmac.d.ts.map +1 -0
  48. package/dist/cjs/crypto/Pbkdf2AesCmac.js +62 -0
  49. package/dist/cjs/crypto/Pbkdf2AesCmac.js.map +6 -0
  50. package/dist/cjs/crypto/Pskc.d.ts +21 -0
  51. package/dist/cjs/crypto/Pskc.d.ts.map +1 -0
  52. package/dist/cjs/crypto/Pskc.js +69 -0
  53. package/dist/cjs/crypto/Pskc.js.map +6 -0
  54. package/dist/cjs/crypto/index.d.ts +9 -0
  55. package/dist/cjs/crypto/index.d.ts.map +1 -0
  56. package/dist/cjs/crypto/index.js +35 -0
  57. package/dist/cjs/crypto/index.js.map +6 -0
  58. package/dist/cjs/dataset/OperationalDataset.d.ts +74 -0
  59. package/dist/cjs/dataset/OperationalDataset.d.ts.map +1 -0
  60. package/dist/cjs/dataset/OperationalDataset.js +244 -0
  61. package/dist/cjs/dataset/OperationalDataset.js.map +6 -0
  62. package/dist/cjs/dataset/SecurityPolicy.d.ts +22 -0
  63. package/dist/cjs/dataset/SecurityPolicy.d.ts.map +1 -0
  64. package/dist/cjs/dataset/SecurityPolicy.js +59 -0
  65. package/dist/cjs/dataset/SecurityPolicy.js.map +6 -0
  66. package/dist/cjs/dataset/errors.d.ts +10 -0
  67. package/dist/cjs/dataset/errors.d.ts.map +1 -0
  68. package/dist/cjs/dataset/errors.js +32 -0
  69. package/dist/cjs/dataset/errors.js.map +6 -0
  70. package/dist/cjs/dataset/index.d.ts +9 -0
  71. package/dist/cjs/dataset/index.d.ts.map +1 -0
  72. package/dist/cjs/dataset/index.js +36 -0
  73. package/dist/cjs/dataset/index.js.map +6 -0
  74. package/dist/cjs/dataset/meshcopTlvTypes.d.ts +61 -0
  75. package/dist/cjs/dataset/meshcopTlvTypes.d.ts.map +1 -0
  76. package/dist/cjs/dataset/meshcopTlvTypes.js +82 -0
  77. package/dist/cjs/dataset/meshcopTlvTypes.js.map +6 -0
  78. package/dist/cjs/diagnostic/DefaultTlvSet.d.ts +8 -0
  79. package/dist/cjs/diagnostic/DefaultTlvSet.d.ts.map +1 -0
  80. package/dist/cjs/diagnostic/DefaultTlvSet.js +52 -0
  81. package/dist/cjs/diagnostic/DefaultTlvSet.js.map +6 -0
  82. package/dist/cjs/diagnostic/DiagnosticResponse.d.ts +47 -0
  83. package/dist/cjs/diagnostic/DiagnosticResponse.d.ts.map +1 -0
  84. package/dist/cjs/diagnostic/DiagnosticResponse.js +22 -0
  85. package/dist/cjs/diagnostic/DiagnosticResponse.js.map +6 -0
  86. package/dist/cjs/diagnostic/DiagnosticSource.d.ts +64 -0
  87. package/dist/cjs/diagnostic/DiagnosticSource.d.ts.map +1 -0
  88. package/dist/cjs/diagnostic/DiagnosticSource.js +34 -0
  89. package/dist/cjs/diagnostic/DiagnosticSource.js.map +6 -0
  90. package/dist/cjs/diagnostic/MeshCopDiagnosticSource.d.ts +78 -0
  91. package/dist/cjs/diagnostic/MeshCopDiagnosticSource.d.ts.map +1 -0
  92. package/dist/cjs/diagnostic/MeshCopDiagnosticSource.js +654 -0
  93. package/dist/cjs/diagnostic/MeshCopDiagnosticSource.js.map +6 -0
  94. package/dist/cjs/diagnostic/connectMeshcop.d.ts +38 -0
  95. package/dist/cjs/diagnostic/connectMeshcop.d.ts.map +1 -0
  96. package/dist/cjs/diagnostic/connectMeshcop.js +100 -0
  97. package/dist/cjs/diagnostic/connectMeshcop.js.map +6 -0
  98. package/dist/cjs/diagnostic/errors.d.ts +10 -0
  99. package/dist/cjs/diagnostic/errors.d.ts.map +1 -0
  100. package/dist/cjs/diagnostic/errors.js +32 -0
  101. package/dist/cjs/diagnostic/errors.js.map +6 -0
  102. package/dist/cjs/diagnostic/index.d.ts +13 -0
  103. package/dist/cjs/diagnostic/index.d.ts.map +1 -0
  104. package/dist/cjs/diagnostic/index.js +35 -0
  105. package/dist/cjs/diagnostic/index.js.map +6 -0
  106. package/dist/cjs/discovery/BorderRouterEntry.d.ts +54 -0
  107. package/dist/cjs/discovery/BorderRouterEntry.d.ts.map +1 -0
  108. package/dist/cjs/discovery/BorderRouterEntry.js +22 -0
  109. package/dist/cjs/discovery/BorderRouterEntry.js.map +6 -0
  110. package/dist/cjs/discovery/BorderRouterRegistry.d.ts +36 -0
  111. package/dist/cjs/discovery/BorderRouterRegistry.d.ts.map +1 -0
  112. package/dist/cjs/discovery/BorderRouterRegistry.js +522 -0
  113. package/dist/cjs/discovery/BorderRouterRegistry.js.map +6 -0
  114. package/dist/cjs/discovery/DnssdLikeTypes.d.ts +50 -0
  115. package/dist/cjs/discovery/DnssdLikeTypes.d.ts.map +1 -0
  116. package/dist/cjs/discovery/DnssdLikeTypes.js +22 -0
  117. package/dist/cjs/discovery/DnssdLikeTypes.js.map +6 -0
  118. package/dist/cjs/discovery/index.d.ts +8 -0
  119. package/dist/cjs/discovery/index.d.ts.map +1 -0
  120. package/dist/cjs/discovery/index.js +30 -0
  121. package/dist/cjs/discovery/index.js.map +6 -0
  122. package/dist/cjs/dtls/channel/DtlsChannel.d.ts +39 -0
  123. package/dist/cjs/dtls/channel/DtlsChannel.d.ts.map +1 -0
  124. package/dist/cjs/dtls/channel/DtlsChannel.js +32 -0
  125. package/dist/cjs/dtls/channel/DtlsChannel.js.map +6 -0
  126. package/dist/cjs/dtls/channel/DtlsConnectOpts.d.ts +38 -0
  127. package/dist/cjs/dtls/channel/DtlsConnectOpts.d.ts.map +1 -0
  128. package/dist/cjs/dtls/channel/DtlsConnectOpts.js +22 -0
  129. package/dist/cjs/dtls/channel/DtlsConnectOpts.js.map +6 -0
  130. package/dist/cjs/dtls/channel/DtlsRetransmitTimer.d.ts +43 -0
  131. package/dist/cjs/dtls/channel/DtlsRetransmitTimer.d.ts.map +1 -0
  132. package/dist/cjs/dtls/channel/DtlsRetransmitTimer.js +97 -0
  133. package/dist/cjs/dtls/channel/DtlsRetransmitTimer.js.map +6 -0
  134. package/dist/cjs/dtls/channel/NobleDtlsChannel.d.ts +35 -0
  135. package/dist/cjs/dtls/channel/NobleDtlsChannel.d.ts.map +1 -0
  136. package/dist/cjs/dtls/channel/NobleDtlsChannel.js +440 -0
  137. package/dist/cjs/dtls/channel/NobleDtlsChannel.js.map +6 -0
  138. package/dist/cjs/dtls/channel/connectDtls.d.ts +15 -0
  139. package/dist/cjs/dtls/channel/connectDtls.d.ts.map +1 -0
  140. package/dist/cjs/dtls/channel/connectDtls.js +41 -0
  141. package/dist/cjs/dtls/channel/connectDtls.js.map +6 -0
  142. package/dist/cjs/dtls/channel/index.d.ts +14 -0
  143. package/dist/cjs/dtls/channel/index.d.ts.map +1 -0
  144. package/dist/cjs/dtls/channel/index.js +32 -0
  145. package/dist/cjs/dtls/channel/index.js.map +6 -0
  146. package/dist/cjs/dtls/ecjpake/EcJpakePms.d.ts +35 -0
  147. package/dist/cjs/dtls/ecjpake/EcJpakePms.d.ts.map +1 -0
  148. package/dist/cjs/dtls/ecjpake/EcJpakePms.js +61 -0
  149. package/dist/cjs/dtls/ecjpake/EcJpakePms.js.map +6 -0
  150. package/dist/cjs/dtls/ecjpake/EcJpakeRound.d.ts +119 -0
  151. package/dist/cjs/dtls/ecjpake/EcJpakeRound.d.ts.map +1 -0
  152. package/dist/cjs/dtls/ecjpake/EcJpakeRound.js +248 -0
  153. package/dist/cjs/dtls/ecjpake/EcJpakeRound.js.map +6 -0
  154. package/dist/cjs/dtls/ecjpake/SchnorrZkp.d.ts +60 -0
  155. package/dist/cjs/dtls/ecjpake/SchnorrZkp.d.ts.map +1 -0
  156. package/dist/cjs/dtls/ecjpake/SchnorrZkp.js +162 -0
  157. package/dist/cjs/dtls/ecjpake/SchnorrZkp.js.map +6 -0
  158. package/dist/cjs/dtls/ecjpake/index.d.ts +28 -0
  159. package/dist/cjs/dtls/ecjpake/index.d.ts.map +1 -0
  160. package/dist/cjs/dtls/ecjpake/index.js +34 -0
  161. package/dist/cjs/dtls/ecjpake/index.js.map +6 -0
  162. package/dist/cjs/dtls/handshake/ChangeCipherSpec.d.ts +23 -0
  163. package/dist/cjs/dtls/handshake/ChangeCipherSpec.d.ts.map +1 -0
  164. package/dist/cjs/dtls/handshake/ChangeCipherSpec.js +41 -0
  165. package/dist/cjs/dtls/handshake/ChangeCipherSpec.js.map +6 -0
  166. package/dist/cjs/dtls/handshake/ClientHelloMessage.d.ts +34 -0
  167. package/dist/cjs/dtls/handshake/ClientHelloMessage.d.ts.map +1 -0
  168. package/dist/cjs/dtls/handshake/ClientHelloMessage.js +117 -0
  169. package/dist/cjs/dtls/handshake/ClientHelloMessage.js.map +6 -0
  170. package/dist/cjs/dtls/handshake/ClientKeyExchangeMessage.d.ts +22 -0
  171. package/dist/cjs/dtls/handshake/ClientKeyExchangeMessage.d.ts.map +1 -0
  172. package/dist/cjs/dtls/handshake/ClientKeyExchangeMessage.js +35 -0
  173. package/dist/cjs/dtls/handshake/ClientKeyExchangeMessage.js.map +6 -0
  174. package/dist/cjs/dtls/handshake/DtlsClient.d.ts +57 -0
  175. package/dist/cjs/dtls/handshake/DtlsClient.d.ts.map +1 -0
  176. package/dist/cjs/dtls/handshake/DtlsClient.js +502 -0
  177. package/dist/cjs/dtls/handshake/DtlsClient.js.map +6 -0
  178. package/dist/cjs/dtls/handshake/FinishedMessage.d.ts +13 -0
  179. package/dist/cjs/dtls/handshake/FinishedMessage.d.ts.map +1 -0
  180. package/dist/cjs/dtls/handshake/FinishedMessage.js +48 -0
  181. package/dist/cjs/dtls/handshake/FinishedMessage.js.map +6 -0
  182. package/dist/cjs/dtls/handshake/HandshakeMessage.d.ts +58 -0
  183. package/dist/cjs/dtls/handshake/HandshakeMessage.d.ts.map +1 -0
  184. package/dist/cjs/dtls/handshake/HandshakeMessage.js +117 -0
  185. package/dist/cjs/dtls/handshake/HandshakeMessage.js.map +6 -0
  186. package/dist/cjs/dtls/handshake/HandshakeType.d.ts +29 -0
  187. package/dist/cjs/dtls/handshake/HandshakeType.d.ts.map +1 -0
  188. package/dist/cjs/dtls/handshake/HandshakeType.js +45 -0
  189. package/dist/cjs/dtls/handshake/HandshakeType.js.map +6 -0
  190. package/dist/cjs/dtls/handshake/HelloVerifyRequestMessage.d.ts +11 -0
  191. package/dist/cjs/dtls/handshake/HelloVerifyRequestMessage.d.ts.map +1 -0
  192. package/dist/cjs/dtls/handshake/HelloVerifyRequestMessage.js +49 -0
  193. package/dist/cjs/dtls/handshake/HelloVerifyRequestMessage.js.map +6 -0
  194. package/dist/cjs/dtls/handshake/ServerHelloDoneMessage.d.ts +14 -0
  195. package/dist/cjs/dtls/handshake/ServerHelloDoneMessage.d.ts.map +1 -0
  196. package/dist/cjs/dtls/handshake/ServerHelloDoneMessage.js +37 -0
  197. package/dist/cjs/dtls/handshake/ServerHelloDoneMessage.js.map +6 -0
  198. package/dist/cjs/dtls/handshake/ServerHelloMessage.d.ts +15 -0
  199. package/dist/cjs/dtls/handshake/ServerHelloMessage.d.ts.map +1 -0
  200. package/dist/cjs/dtls/handshake/ServerHelloMessage.js +113 -0
  201. package/dist/cjs/dtls/handshake/ServerHelloMessage.js.map +6 -0
  202. package/dist/cjs/dtls/handshake/ServerKeyExchangeMessage.d.ts +24 -0
  203. package/dist/cjs/dtls/handshake/ServerKeyExchangeMessage.d.ts.map +1 -0
  204. package/dist/cjs/dtls/handshake/ServerKeyExchangeMessage.js +35 -0
  205. package/dist/cjs/dtls/handshake/ServerKeyExchangeMessage.js.map +6 -0
  206. package/dist/cjs/dtls/handshake/index.d.ts +14 -0
  207. package/dist/cjs/dtls/handshake/index.d.ts.map +1 -0
  208. package/dist/cjs/dtls/handshake/index.js +30 -0
  209. package/dist/cjs/dtls/handshake/index.js.map +6 -0
  210. package/dist/cjs/dtls/prf/HandshakeTranscript.d.ts +36 -0
  211. package/dist/cjs/dtls/prf/HandshakeTranscript.d.ts.map +1 -0
  212. package/dist/cjs/dtls/prf/HandshakeTranscript.js +55 -0
  213. package/dist/cjs/dtls/prf/HandshakeTranscript.js.map +6 -0
  214. package/dist/cjs/dtls/prf/TlsPrf.d.ts +82 -0
  215. package/dist/cjs/dtls/prf/TlsPrf.d.ts.map +1 -0
  216. package/dist/cjs/dtls/prf/TlsPrf.js +121 -0
  217. package/dist/cjs/dtls/prf/TlsPrf.js.map +6 -0
  218. package/dist/cjs/dtls/prf/index.d.ts +13 -0
  219. package/dist/cjs/dtls/prf/index.d.ts.map +1 -0
  220. package/dist/cjs/dtls/prf/index.js +32 -0
  221. package/dist/cjs/dtls/prf/index.js.map +6 -0
  222. package/dist/cjs/dtls/record/AesCcm8.d.ts +32 -0
  223. package/dist/cjs/dtls/record/AesCcm8.d.ts.map +1 -0
  224. package/dist/cjs/dtls/record/AesCcm8.js +78 -0
  225. package/dist/cjs/dtls/record/AesCcm8.js.map +6 -0
  226. package/dist/cjs/dtls/record/AntiReplayWindow.d.ts +38 -0
  227. package/dist/cjs/dtls/record/AntiReplayWindow.d.ts.map +1 -0
  228. package/dist/cjs/dtls/record/AntiReplayWindow.js +84 -0
  229. package/dist/cjs/dtls/record/AntiReplayWindow.js.map +6 -0
  230. package/dist/cjs/dtls/record/ContentType.d.ts +19 -0
  231. package/dist/cjs/dtls/record/ContentType.d.ts.map +1 -0
  232. package/dist/cjs/dtls/record/ContentType.js +39 -0
  233. package/dist/cjs/dtls/record/ContentType.js.map +6 -0
  234. package/dist/cjs/dtls/record/DtlsCipherState.d.ts +79 -0
  235. package/dist/cjs/dtls/record/DtlsCipherState.d.ts.map +1 -0
  236. package/dist/cjs/dtls/record/DtlsCipherState.js +173 -0
  237. package/dist/cjs/dtls/record/DtlsCipherState.js.map +6 -0
  238. package/dist/cjs/dtls/record/DtlsRecord.d.ts +89 -0
  239. package/dist/cjs/dtls/record/DtlsRecord.d.ts.map +1 -0
  240. package/dist/cjs/dtls/record/DtlsRecord.js +195 -0
  241. package/dist/cjs/dtls/record/DtlsRecord.js.map +6 -0
  242. package/dist/cjs/dtls/record/index.d.ts +15 -0
  243. package/dist/cjs/dtls/record/index.d.ts.map +1 -0
  244. package/dist/cjs/dtls/record/index.js +42 -0
  245. package/dist/cjs/dtls/record/index.js.map +6 -0
  246. package/dist/cjs/index.d.ts +32 -0
  247. package/dist/cjs/index.d.ts.map +1 -0
  248. package/dist/cjs/index.js +77 -0
  249. package/dist/cjs/index.js.map +6 -0
  250. package/dist/cjs/otbr-rest/OtbrRestCapability.d.ts +22 -0
  251. package/dist/cjs/otbr-rest/OtbrRestCapability.d.ts.map +1 -0
  252. package/dist/cjs/otbr-rest/OtbrRestCapability.js +22 -0
  253. package/dist/cjs/otbr-rest/OtbrRestCapability.js.map +6 -0
  254. package/dist/cjs/otbr-rest/OtbrRestClient.d.ts +257 -0
  255. package/dist/cjs/otbr-rest/OtbrRestClient.d.ts.map +1 -0
  256. package/dist/cjs/otbr-rest/OtbrRestClient.js +544 -0
  257. package/dist/cjs/otbr-rest/OtbrRestClient.js.map +6 -0
  258. package/dist/cjs/otbr-rest/OtbrRestDiagnosticSource.d.ts +88 -0
  259. package/dist/cjs/otbr-rest/OtbrRestDiagnosticSource.d.ts.map +1 -0
  260. package/dist/cjs/otbr-rest/OtbrRestDiagnosticSource.js +156 -0
  261. package/dist/cjs/otbr-rest/OtbrRestDiagnosticSource.js.map +6 -0
  262. package/dist/cjs/otbr-rest/OtbrRestError.d.ts +18 -0
  263. package/dist/cjs/otbr-rest/OtbrRestError.d.ts.map +1 -0
  264. package/dist/cjs/otbr-rest/OtbrRestError.js +42 -0
  265. package/dist/cjs/otbr-rest/OtbrRestError.js.map +6 -0
  266. package/dist/cjs/otbr-rest/OtbrRestProbe.d.ts +17 -0
  267. package/dist/cjs/otbr-rest/OtbrRestProbe.d.ts.map +1 -0
  268. package/dist/cjs/otbr-rest/OtbrRestProbe.js +96 -0
  269. package/dist/cjs/otbr-rest/OtbrRestProbe.js.map +6 -0
  270. package/dist/cjs/otbr-rest/caseNormalizer.d.ts +12 -0
  271. package/dist/cjs/otbr-rest/caseNormalizer.d.ts.map +1 -0
  272. package/dist/cjs/otbr-rest/caseNormalizer.js +59 -0
  273. package/dist/cjs/otbr-rest/caseNormalizer.js.map +6 -0
  274. package/dist/cjs/otbr-rest/index.d.ts +15 -0
  275. package/dist/cjs/otbr-rest/index.d.ts.map +1 -0
  276. package/dist/cjs/otbr-rest/index.js +40 -0
  277. package/dist/cjs/otbr-rest/index.js.map +6 -0
  278. package/dist/cjs/otbr-rest/translation.d.ts +24 -0
  279. package/dist/cjs/otbr-rest/translation.d.ts.map +1 -0
  280. package/dist/cjs/otbr-rest/translation.js +301 -0
  281. package/dist/cjs/otbr-rest/translation.js.map +6 -0
  282. package/dist/cjs/package.json +6 -0
  283. package/dist/cjs/selection/index.d.ts +11 -0
  284. package/dist/cjs/selection/index.d.ts.map +1 -0
  285. package/dist/cjs/selection/index.js +36 -0
  286. package/dist/cjs/selection/index.js.map +6 -0
  287. package/dist/cjs/selection/selectBr.d.ts +37 -0
  288. package/dist/cjs/selection/selectBr.d.ts.map +1 -0
  289. package/dist/cjs/selection/selectBr.js +66 -0
  290. package/dist/cjs/selection/selectBr.js.map +6 -0
  291. package/dist/cjs/selection/selectSource.d.ts +32 -0
  292. package/dist/cjs/selection/selectSource.d.ts.map +1 -0
  293. package/dist/cjs/selection/selectSource.js +43 -0
  294. package/dist/cjs/selection/selectSource.js.map +6 -0
  295. package/dist/cjs/selection/withExtPanIdLock.d.ts +23 -0
  296. package/dist/cjs/selection/withExtPanIdLock.d.ts.map +1 -0
  297. package/dist/cjs/selection/withExtPanIdLock.js +50 -0
  298. package/dist/cjs/selection/withExtPanIdLock.js.map +6 -0
  299. package/dist/cjs/tlv/BasicTlvCodec.d.ts +22 -0
  300. package/dist/cjs/tlv/BasicTlvCodec.d.ts.map +1 -0
  301. package/dist/cjs/tlv/BasicTlvCodec.js +97 -0
  302. package/dist/cjs/tlv/BasicTlvCodec.js.map +6 -0
  303. package/dist/cjs/tlv/NetworkDiagnosticTlv.d.ts +30 -0
  304. package/dist/cjs/tlv/NetworkDiagnosticTlv.d.ts.map +1 -0
  305. package/dist/cjs/tlv/NetworkDiagnosticTlv.js +41 -0
  306. package/dist/cjs/tlv/NetworkDiagnosticTlv.js.map +6 -0
  307. package/dist/cjs/tlv/TypeListTlv.d.ts +23 -0
  308. package/dist/cjs/tlv/TypeListTlv.d.ts.map +1 -0
  309. package/dist/cjs/tlv/TypeListTlv.js +49 -0
  310. package/dist/cjs/tlv/TypeListTlv.js.map +6 -0
  311. package/dist/cjs/tlv/diag/ChildIpv6AddressList.d.ts +22 -0
  312. package/dist/cjs/tlv/diag/ChildIpv6AddressList.d.ts.map +1 -0
  313. package/dist/cjs/tlv/diag/ChildIpv6AddressList.js +48 -0
  314. package/dist/cjs/tlv/diag/ChildIpv6AddressList.js.map +6 -0
  315. package/dist/cjs/tlv/diag/ChildTable.d.ts +29 -0
  316. package/dist/cjs/tlv/diag/ChildTable.d.ts.map +1 -0
  317. package/dist/cjs/tlv/diag/ChildTable.js +91 -0
  318. package/dist/cjs/tlv/diag/ChildTable.js.map +6 -0
  319. package/dist/cjs/tlv/diag/Connectivity.d.ts +45 -0
  320. package/dist/cjs/tlv/diag/Connectivity.d.ts.map +1 -0
  321. package/dist/cjs/tlv/diag/Connectivity.js +99 -0
  322. package/dist/cjs/tlv/diag/Connectivity.js.map +6 -0
  323. package/dist/cjs/tlv/diag/Ipv6AddressList.d.ts +21 -0
  324. package/dist/cjs/tlv/diag/Ipv6AddressList.d.ts.map +1 -0
  325. package/dist/cjs/tlv/diag/Ipv6AddressList.js +61 -0
  326. package/dist/cjs/tlv/diag/Ipv6AddressList.js.map +6 -0
  327. package/dist/cjs/tlv/diag/LeaderData.d.ts +28 -0
  328. package/dist/cjs/tlv/diag/LeaderData.d.ts.map +1 -0
  329. package/dist/cjs/tlv/diag/LeaderData.js +64 -0
  330. package/dist/cjs/tlv/diag/LeaderData.js.map +6 -0
  331. package/dist/cjs/tlv/diag/MacCounters.d.ts +28 -0
  332. package/dist/cjs/tlv/diag/MacCounters.d.ts.map +1 -0
  333. package/dist/cjs/tlv/diag/MacCounters.js +85 -0
  334. package/dist/cjs/tlv/diag/MacCounters.js.map +6 -0
  335. package/dist/cjs/tlv/diag/MleCounters.d.ts +41 -0
  336. package/dist/cjs/tlv/diag/MleCounters.d.ts.map +1 -0
  337. package/dist/cjs/tlv/diag/MleCounters.js +118 -0
  338. package/dist/cjs/tlv/diag/MleCounters.js.map +6 -0
  339. package/dist/cjs/tlv/diag/Mode.d.ts +26 -0
  340. package/dist/cjs/tlv/diag/Mode.d.ts.map +1 -0
  341. package/dist/cjs/tlv/diag/Mode.js +57 -0
  342. package/dist/cjs/tlv/diag/Mode.js.map +6 -0
  343. package/dist/cjs/tlv/diag/NetworkData.d.ts +93 -0
  344. package/dist/cjs/tlv/diag/NetworkData.d.ts.map +1 -0
  345. package/dist/cjs/tlv/diag/NetworkData.js +157 -0
  346. package/dist/cjs/tlv/diag/NetworkData.js.map +6 -0
  347. package/dist/cjs/tlv/diag/Primitives.d.ts +34 -0
  348. package/dist/cjs/tlv/diag/Primitives.d.ts.map +1 -0
  349. package/dist/cjs/tlv/diag/Primitives.js +163 -0
  350. package/dist/cjs/tlv/diag/Primitives.js.map +6 -0
  351. package/dist/cjs/tlv/diag/Route64.d.ts +42 -0
  352. package/dist/cjs/tlv/diag/Route64.d.ts.map +1 -0
  353. package/dist/cjs/tlv/diag/Route64.js +98 -0
  354. package/dist/cjs/tlv/diag/Route64.js.map +6 -0
  355. package/dist/cjs/tlv/diag/RouterNeighbor.d.ts +46 -0
  356. package/dist/cjs/tlv/diag/RouterNeighbor.d.ts.map +1 -0
  357. package/dist/cjs/tlv/diag/RouterNeighbor.js +65 -0
  358. package/dist/cjs/tlv/diag/RouterNeighbor.js.map +6 -0
  359. package/dist/cjs/tlv/diag/Timeout.d.ts +17 -0
  360. package/dist/cjs/tlv/diag/Timeout.d.ts.map +1 -0
  361. package/dist/cjs/tlv/diag/Timeout.js +53 -0
  362. package/dist/cjs/tlv/diag/Timeout.js.map +6 -0
  363. package/dist/cjs/tlv/diag/VendorInfo.d.ts +35 -0
  364. package/dist/cjs/tlv/diag/VendorInfo.d.ts.map +1 -0
  365. package/dist/cjs/tlv/diag/VendorInfo.js +130 -0
  366. package/dist/cjs/tlv/diag/VendorInfo.js.map +6 -0
  367. package/dist/cjs/tlv/diag/index.d.ts +26 -0
  368. package/dist/cjs/tlv/diag/index.d.ts.map +1 -0
  369. package/dist/cjs/tlv/diag/index.js +67 -0
  370. package/dist/cjs/tlv/diag/index.js.map +6 -0
  371. package/dist/cjs/tlv/meshcop/Ip6AddressTlv.d.ts +21 -0
  372. package/dist/cjs/tlv/meshcop/Ip6AddressTlv.d.ts.map +1 -0
  373. package/dist/cjs/tlv/meshcop/Ip6AddressTlv.js +48 -0
  374. package/dist/cjs/tlv/meshcop/Ip6AddressTlv.js.map +6 -0
  375. package/dist/cjs/tlv/meshcop/UdpEncapsulationTlv.d.ts +27 -0
  376. package/dist/cjs/tlv/meshcop/UdpEncapsulationTlv.d.ts.map +1 -0
  377. package/dist/cjs/tlv/meshcop/UdpEncapsulationTlv.js +62 -0
  378. package/dist/cjs/tlv/meshcop/UdpEncapsulationTlv.js.map +6 -0
  379. package/dist/cjs/tlv/networkDiagTlvTypes.d.ts +59 -0
  380. package/dist/cjs/tlv/networkDiagTlvTypes.d.ts.map +1 -0
  381. package/dist/cjs/tlv/networkDiagTlvTypes.js +76 -0
  382. package/dist/cjs/tlv/networkDiagTlvTypes.js.map +6 -0
  383. package/dist/cjs/util/meshLocalAddr.d.ts +27 -0
  384. package/dist/cjs/util/meshLocalAddr.d.ts.map +1 -0
  385. package/dist/cjs/util/meshLocalAddr.js +67 -0
  386. package/dist/cjs/util/meshLocalAddr.js.map +6 -0
  387. package/dist/esm/coap/CoapClient.d.ts +33 -0
  388. package/dist/esm/coap/CoapClient.d.ts.map +1 -0
  389. package/dist/esm/coap/CoapClient.js +270 -0
  390. package/dist/esm/coap/CoapClient.js.map +6 -0
  391. package/dist/esm/coap/CoapMessage.d.ts +23 -0
  392. package/dist/esm/coap/CoapMessage.d.ts.map +1 -0
  393. package/dist/esm/coap/CoapMessage.js +162 -0
  394. package/dist/esm/coap/CoapMessage.js.map +6 -0
  395. package/dist/esm/coap/index.d.ts +8 -0
  396. package/dist/esm/coap/index.d.ts.map +1 -0
  397. package/dist/esm/coap/index.js +11 -0
  398. package/dist/esm/coap/index.js.map +6 -0
  399. package/dist/esm/commissioner/Commissioner.d.ts +89 -0
  400. package/dist/esm/commissioner/Commissioner.d.ts.map +1 -0
  401. package/dist/esm/commissioner/Commissioner.js +168 -0
  402. package/dist/esm/commissioner/Commissioner.js.map +6 -0
  403. package/dist/esm/commissioner/LeadKa.d.ts +17 -0
  404. package/dist/esm/commissioner/LeadKa.d.ts.map +1 -0
  405. package/dist/esm/commissioner/LeadKa.js +43 -0
  406. package/dist/esm/commissioner/LeadKa.js.map +6 -0
  407. package/dist/esm/commissioner/LeadPet.d.ts +14 -0
  408. package/dist/esm/commissioner/LeadPet.d.ts.map +1 -0
  409. package/dist/esm/commissioner/LeadPet.js +46 -0
  410. package/dist/esm/commissioner/LeadPet.js.map +6 -0
  411. package/dist/esm/commissioner/index.d.ts +12 -0
  412. package/dist/esm/commissioner/index.d.ts.map +1 -0
  413. package/dist/esm/commissioner/index.js +23 -0
  414. package/dist/esm/commissioner/index.js.map +6 -0
  415. package/dist/esm/credentials/ThreadCredentialsRegistry.d.ts +50 -0
  416. package/dist/esm/credentials/ThreadCredentialsRegistry.d.ts.map +1 -0
  417. package/dist/esm/credentials/ThreadCredentialsRegistry.js +99 -0
  418. package/dist/esm/credentials/ThreadCredentialsRegistry.js.map +6 -0
  419. package/dist/esm/credentials/ThreadNetworkCredentials.d.ts +26 -0
  420. package/dist/esm/credentials/ThreadNetworkCredentials.d.ts.map +1 -0
  421. package/dist/esm/credentials/ThreadNetworkCredentials.js +6 -0
  422. package/dist/esm/credentials/ThreadNetworkCredentials.js.map +6 -0
  423. package/dist/esm/credentials/index.d.ts +8 -0
  424. package/dist/esm/credentials/index.d.ts.map +1 -0
  425. package/dist/esm/credentials/index.js +10 -0
  426. package/dist/esm/credentials/index.js.map +6 -0
  427. package/dist/esm/crypto/AesCmacPrf128.d.ts +24 -0
  428. package/dist/esm/crypto/AesCmacPrf128.d.ts.map +1 -0
  429. package/dist/esm/crypto/AesCmacPrf128.js +87 -0
  430. package/dist/esm/crypto/AesCmacPrf128.js.map +6 -0
  431. package/dist/esm/crypto/Pbkdf2AesCmac.d.ts +18 -0
  432. package/dist/esm/crypto/Pbkdf2AesCmac.d.ts.map +1 -0
  433. package/dist/esm/crypto/Pbkdf2AesCmac.js +42 -0
  434. package/dist/esm/crypto/Pbkdf2AesCmac.js.map +6 -0
  435. package/dist/esm/crypto/Pskc.d.ts +21 -0
  436. package/dist/esm/crypto/Pskc.d.ts.map +1 -0
  437. package/dist/esm/crypto/Pskc.js +49 -0
  438. package/dist/esm/crypto/Pskc.js.map +6 -0
  439. package/dist/esm/crypto/index.d.ts +9 -0
  440. package/dist/esm/crypto/index.d.ts.map +1 -0
  441. package/dist/esm/crypto/index.js +15 -0
  442. package/dist/esm/crypto/index.js.map +6 -0
  443. package/dist/esm/dataset/OperationalDataset.d.ts +74 -0
  444. package/dist/esm/dataset/OperationalDataset.d.ts.map +1 -0
  445. package/dist/esm/dataset/OperationalDataset.js +224 -0
  446. package/dist/esm/dataset/OperationalDataset.js.map +6 -0
  447. package/dist/esm/dataset/SecurityPolicy.d.ts +22 -0
  448. package/dist/esm/dataset/SecurityPolicy.d.ts.map +1 -0
  449. package/dist/esm/dataset/SecurityPolicy.js +39 -0
  450. package/dist/esm/dataset/SecurityPolicy.js.map +6 -0
  451. package/dist/esm/dataset/errors.d.ts +10 -0
  452. package/dist/esm/dataset/errors.d.ts.map +1 -0
  453. package/dist/esm/dataset/errors.js +12 -0
  454. package/dist/esm/dataset/errors.js.map +6 -0
  455. package/dist/esm/dataset/index.d.ts +9 -0
  456. package/dist/esm/dataset/index.d.ts.map +1 -0
  457. package/dist/esm/dataset/index.js +16 -0
  458. package/dist/esm/dataset/index.js.map +6 -0
  459. package/dist/esm/dataset/meshcopTlvTypes.d.ts +61 -0
  460. package/dist/esm/dataset/meshcopTlvTypes.d.ts.map +1 -0
  461. package/dist/esm/dataset/meshcopTlvTypes.js +62 -0
  462. package/dist/esm/dataset/meshcopTlvTypes.js.map +6 -0
  463. package/dist/esm/diagnostic/DefaultTlvSet.d.ts +8 -0
  464. package/dist/esm/diagnostic/DefaultTlvSet.d.ts.map +1 -0
  465. package/dist/esm/diagnostic/DefaultTlvSet.js +32 -0
  466. package/dist/esm/diagnostic/DefaultTlvSet.js.map +6 -0
  467. package/dist/esm/diagnostic/DiagnosticResponse.d.ts +47 -0
  468. package/dist/esm/diagnostic/DiagnosticResponse.d.ts.map +1 -0
  469. package/dist/esm/diagnostic/DiagnosticResponse.js +6 -0
  470. package/dist/esm/diagnostic/DiagnosticResponse.js.map +6 -0
  471. package/dist/esm/diagnostic/DiagnosticSource.d.ts +64 -0
  472. package/dist/esm/diagnostic/DiagnosticSource.d.ts.map +1 -0
  473. package/dist/esm/diagnostic/DiagnosticSource.js +14 -0
  474. package/dist/esm/diagnostic/DiagnosticSource.js.map +6 -0
  475. package/dist/esm/diagnostic/MeshCopDiagnosticSource.d.ts +78 -0
  476. package/dist/esm/diagnostic/MeshCopDiagnosticSource.d.ts.map +1 -0
  477. package/dist/esm/diagnostic/MeshCopDiagnosticSource.js +663 -0
  478. package/dist/esm/diagnostic/MeshCopDiagnosticSource.js.map +6 -0
  479. package/dist/esm/diagnostic/connectMeshcop.d.ts +38 -0
  480. package/dist/esm/diagnostic/connectMeshcop.d.ts.map +1 -0
  481. package/dist/esm/diagnostic/connectMeshcop.js +80 -0
  482. package/dist/esm/diagnostic/connectMeshcop.js.map +6 -0
  483. package/dist/esm/diagnostic/errors.d.ts +10 -0
  484. package/dist/esm/diagnostic/errors.d.ts.map +1 -0
  485. package/dist/esm/diagnostic/errors.js +12 -0
  486. package/dist/esm/diagnostic/errors.js.map +6 -0
  487. package/dist/esm/diagnostic/index.d.ts +13 -0
  488. package/dist/esm/diagnostic/index.d.ts.map +1 -0
  489. package/dist/esm/diagnostic/index.js +15 -0
  490. package/dist/esm/diagnostic/index.js.map +6 -0
  491. package/dist/esm/discovery/BorderRouterEntry.d.ts +54 -0
  492. package/dist/esm/discovery/BorderRouterEntry.d.ts.map +1 -0
  493. package/dist/esm/discovery/BorderRouterEntry.js +6 -0
  494. package/dist/esm/discovery/BorderRouterEntry.js.map +6 -0
  495. package/dist/esm/discovery/BorderRouterRegistry.d.ts +36 -0
  496. package/dist/esm/discovery/BorderRouterRegistry.d.ts.map +1 -0
  497. package/dist/esm/discovery/BorderRouterRegistry.js +508 -0
  498. package/dist/esm/discovery/BorderRouterRegistry.js.map +6 -0
  499. package/dist/esm/discovery/DnssdLikeTypes.d.ts +50 -0
  500. package/dist/esm/discovery/DnssdLikeTypes.d.ts.map +1 -0
  501. package/dist/esm/discovery/DnssdLikeTypes.js +6 -0
  502. package/dist/esm/discovery/DnssdLikeTypes.js.map +6 -0
  503. package/dist/esm/discovery/index.d.ts +8 -0
  504. package/dist/esm/discovery/index.d.ts.map +1 -0
  505. package/dist/esm/discovery/index.js +10 -0
  506. package/dist/esm/discovery/index.js.map +6 -0
  507. package/dist/esm/dtls/channel/DtlsChannel.d.ts +39 -0
  508. package/dist/esm/dtls/channel/DtlsChannel.d.ts.map +1 -0
  509. package/dist/esm/dtls/channel/DtlsChannel.js +12 -0
  510. package/dist/esm/dtls/channel/DtlsChannel.js.map +6 -0
  511. package/dist/esm/dtls/channel/DtlsConnectOpts.d.ts +38 -0
  512. package/dist/esm/dtls/channel/DtlsConnectOpts.d.ts.map +1 -0
  513. package/dist/esm/dtls/channel/DtlsConnectOpts.js +6 -0
  514. package/dist/esm/dtls/channel/DtlsConnectOpts.js.map +6 -0
  515. package/dist/esm/dtls/channel/DtlsRetransmitTimer.d.ts +43 -0
  516. package/dist/esm/dtls/channel/DtlsRetransmitTimer.d.ts.map +1 -0
  517. package/dist/esm/dtls/channel/DtlsRetransmitTimer.js +77 -0
  518. package/dist/esm/dtls/channel/DtlsRetransmitTimer.js.map +6 -0
  519. package/dist/esm/dtls/channel/NobleDtlsChannel.d.ts +35 -0
  520. package/dist/esm/dtls/channel/NobleDtlsChannel.d.ts.map +1 -0
  521. package/dist/esm/dtls/channel/NobleDtlsChannel.js +432 -0
  522. package/dist/esm/dtls/channel/NobleDtlsChannel.js.map +6 -0
  523. package/dist/esm/dtls/channel/connectDtls.d.ts +15 -0
  524. package/dist/esm/dtls/channel/connectDtls.d.ts.map +1 -0
  525. package/dist/esm/dtls/channel/connectDtls.js +21 -0
  526. package/dist/esm/dtls/channel/connectDtls.js.map +6 -0
  527. package/dist/esm/dtls/channel/index.d.ts +14 -0
  528. package/dist/esm/dtls/channel/index.d.ts.map +1 -0
  529. package/dist/esm/dtls/channel/index.js +12 -0
  530. package/dist/esm/dtls/channel/index.js.map +6 -0
  531. package/dist/esm/dtls/ecjpake/EcJpakePms.d.ts +35 -0
  532. package/dist/esm/dtls/ecjpake/EcJpakePms.d.ts.map +1 -0
  533. package/dist/esm/dtls/ecjpake/EcJpakePms.js +41 -0
  534. package/dist/esm/dtls/ecjpake/EcJpakePms.js.map +6 -0
  535. package/dist/esm/dtls/ecjpake/EcJpakeRound.d.ts +119 -0
  536. package/dist/esm/dtls/ecjpake/EcJpakeRound.d.ts.map +1 -0
  537. package/dist/esm/dtls/ecjpake/EcJpakeRound.js +228 -0
  538. package/dist/esm/dtls/ecjpake/EcJpakeRound.js.map +6 -0
  539. package/dist/esm/dtls/ecjpake/SchnorrZkp.d.ts +60 -0
  540. package/dist/esm/dtls/ecjpake/SchnorrZkp.d.ts.map +1 -0
  541. package/dist/esm/dtls/ecjpake/SchnorrZkp.js +142 -0
  542. package/dist/esm/dtls/ecjpake/SchnorrZkp.js.map +6 -0
  543. package/dist/esm/dtls/ecjpake/index.d.ts +28 -0
  544. package/dist/esm/dtls/ecjpake/index.d.ts.map +1 -0
  545. package/dist/esm/dtls/ecjpake/index.js +14 -0
  546. package/dist/esm/dtls/ecjpake/index.js.map +6 -0
  547. package/dist/esm/dtls/handshake/ChangeCipherSpec.d.ts +23 -0
  548. package/dist/esm/dtls/handshake/ChangeCipherSpec.d.ts.map +1 -0
  549. package/dist/esm/dtls/handshake/ChangeCipherSpec.js +21 -0
  550. package/dist/esm/dtls/handshake/ChangeCipherSpec.js.map +6 -0
  551. package/dist/esm/dtls/handshake/ClientHelloMessage.d.ts +34 -0
  552. package/dist/esm/dtls/handshake/ClientHelloMessage.d.ts.map +1 -0
  553. package/dist/esm/dtls/handshake/ClientHelloMessage.js +97 -0
  554. package/dist/esm/dtls/handshake/ClientHelloMessage.js.map +6 -0
  555. package/dist/esm/dtls/handshake/ClientKeyExchangeMessage.d.ts +22 -0
  556. package/dist/esm/dtls/handshake/ClientKeyExchangeMessage.d.ts.map +1 -0
  557. package/dist/esm/dtls/handshake/ClientKeyExchangeMessage.js +15 -0
  558. package/dist/esm/dtls/handshake/ClientKeyExchangeMessage.js.map +6 -0
  559. package/dist/esm/dtls/handshake/DtlsClient.d.ts +57 -0
  560. package/dist/esm/dtls/handshake/DtlsClient.d.ts.map +1 -0
  561. package/dist/esm/dtls/handshake/DtlsClient.js +482 -0
  562. package/dist/esm/dtls/handshake/DtlsClient.js.map +6 -0
  563. package/dist/esm/dtls/handshake/FinishedMessage.d.ts +13 -0
  564. package/dist/esm/dtls/handshake/FinishedMessage.d.ts.map +1 -0
  565. package/dist/esm/dtls/handshake/FinishedMessage.js +28 -0
  566. package/dist/esm/dtls/handshake/FinishedMessage.js.map +6 -0
  567. package/dist/esm/dtls/handshake/HandshakeMessage.d.ts +58 -0
  568. package/dist/esm/dtls/handshake/HandshakeMessage.d.ts.map +1 -0
  569. package/dist/esm/dtls/handshake/HandshakeMessage.js +97 -0
  570. package/dist/esm/dtls/handshake/HandshakeMessage.js.map +6 -0
  571. package/dist/esm/dtls/handshake/HandshakeType.d.ts +29 -0
  572. package/dist/esm/dtls/handshake/HandshakeType.d.ts.map +1 -0
  573. package/dist/esm/dtls/handshake/HandshakeType.js +25 -0
  574. package/dist/esm/dtls/handshake/HandshakeType.js.map +6 -0
  575. package/dist/esm/dtls/handshake/HelloVerifyRequestMessage.d.ts +11 -0
  576. package/dist/esm/dtls/handshake/HelloVerifyRequestMessage.d.ts.map +1 -0
  577. package/dist/esm/dtls/handshake/HelloVerifyRequestMessage.js +29 -0
  578. package/dist/esm/dtls/handshake/HelloVerifyRequestMessage.js.map +6 -0
  579. package/dist/esm/dtls/handshake/ServerHelloDoneMessage.d.ts +14 -0
  580. package/dist/esm/dtls/handshake/ServerHelloDoneMessage.d.ts.map +1 -0
  581. package/dist/esm/dtls/handshake/ServerHelloDoneMessage.js +17 -0
  582. package/dist/esm/dtls/handshake/ServerHelloDoneMessage.js.map +6 -0
  583. package/dist/esm/dtls/handshake/ServerHelloMessage.d.ts +15 -0
  584. package/dist/esm/dtls/handshake/ServerHelloMessage.d.ts.map +1 -0
  585. package/dist/esm/dtls/handshake/ServerHelloMessage.js +93 -0
  586. package/dist/esm/dtls/handshake/ServerHelloMessage.js.map +6 -0
  587. package/dist/esm/dtls/handshake/ServerKeyExchangeMessage.d.ts +24 -0
  588. package/dist/esm/dtls/handshake/ServerKeyExchangeMessage.d.ts.map +1 -0
  589. package/dist/esm/dtls/handshake/ServerKeyExchangeMessage.js +15 -0
  590. package/dist/esm/dtls/handshake/ServerKeyExchangeMessage.js.map +6 -0
  591. package/dist/esm/dtls/handshake/index.d.ts +14 -0
  592. package/dist/esm/dtls/handshake/index.d.ts.map +1 -0
  593. package/dist/esm/dtls/handshake/index.js +10 -0
  594. package/dist/esm/dtls/handshake/index.js.map +6 -0
  595. package/dist/esm/dtls/prf/HandshakeTranscript.d.ts +36 -0
  596. package/dist/esm/dtls/prf/HandshakeTranscript.d.ts.map +1 -0
  597. package/dist/esm/dtls/prf/HandshakeTranscript.js +35 -0
  598. package/dist/esm/dtls/prf/HandshakeTranscript.js.map +6 -0
  599. package/dist/esm/dtls/prf/TlsPrf.d.ts +82 -0
  600. package/dist/esm/dtls/prf/TlsPrf.d.ts.map +1 -0
  601. package/dist/esm/dtls/prf/TlsPrf.js +101 -0
  602. package/dist/esm/dtls/prf/TlsPrf.js.map +6 -0
  603. package/dist/esm/dtls/prf/index.d.ts +13 -0
  604. package/dist/esm/dtls/prf/index.d.ts.map +1 -0
  605. package/dist/esm/dtls/prf/index.js +12 -0
  606. package/dist/esm/dtls/prf/index.js.map +6 -0
  607. package/dist/esm/dtls/record/AesCcm8.d.ts +32 -0
  608. package/dist/esm/dtls/record/AesCcm8.d.ts.map +1 -0
  609. package/dist/esm/dtls/record/AesCcm8.js +58 -0
  610. package/dist/esm/dtls/record/AesCcm8.js.map +6 -0
  611. package/dist/esm/dtls/record/AntiReplayWindow.d.ts +38 -0
  612. package/dist/esm/dtls/record/AntiReplayWindow.d.ts.map +1 -0
  613. package/dist/esm/dtls/record/AntiReplayWindow.js +64 -0
  614. package/dist/esm/dtls/record/AntiReplayWindow.js.map +6 -0
  615. package/dist/esm/dtls/record/ContentType.d.ts +19 -0
  616. package/dist/esm/dtls/record/ContentType.d.ts.map +1 -0
  617. package/dist/esm/dtls/record/ContentType.js +19 -0
  618. package/dist/esm/dtls/record/ContentType.js.map +6 -0
  619. package/dist/esm/dtls/record/DtlsCipherState.d.ts +79 -0
  620. package/dist/esm/dtls/record/DtlsCipherState.d.ts.map +1 -0
  621. package/dist/esm/dtls/record/DtlsCipherState.js +153 -0
  622. package/dist/esm/dtls/record/DtlsCipherState.js.map +6 -0
  623. package/dist/esm/dtls/record/DtlsRecord.d.ts +89 -0
  624. package/dist/esm/dtls/record/DtlsRecord.d.ts.map +1 -0
  625. package/dist/esm/dtls/record/DtlsRecord.js +175 -0
  626. package/dist/esm/dtls/record/DtlsRecord.js.map +6 -0
  627. package/dist/esm/dtls/record/index.d.ts +15 -0
  628. package/dist/esm/dtls/record/index.d.ts.map +1 -0
  629. package/dist/esm/dtls/record/index.js +29 -0
  630. package/dist/esm/dtls/record/index.js.map +6 -0
  631. package/dist/esm/index.d.ts +32 -0
  632. package/dist/esm/index.d.ts.map +1 -0
  633. package/dist/esm/index.js +74 -0
  634. package/dist/esm/index.js.map +6 -0
  635. package/dist/esm/otbr-rest/OtbrRestCapability.d.ts +22 -0
  636. package/dist/esm/otbr-rest/OtbrRestCapability.d.ts.map +1 -0
  637. package/dist/esm/otbr-rest/OtbrRestCapability.js +6 -0
  638. package/dist/esm/otbr-rest/OtbrRestCapability.js.map +6 -0
  639. package/dist/esm/otbr-rest/OtbrRestClient.d.ts +257 -0
  640. package/dist/esm/otbr-rest/OtbrRestClient.d.ts.map +1 -0
  641. package/dist/esm/otbr-rest/OtbrRestClient.js +524 -0
  642. package/dist/esm/otbr-rest/OtbrRestClient.js.map +6 -0
  643. package/dist/esm/otbr-rest/OtbrRestDiagnosticSource.d.ts +88 -0
  644. package/dist/esm/otbr-rest/OtbrRestDiagnosticSource.d.ts.map +1 -0
  645. package/dist/esm/otbr-rest/OtbrRestDiagnosticSource.js +136 -0
  646. package/dist/esm/otbr-rest/OtbrRestDiagnosticSource.js.map +6 -0
  647. package/dist/esm/otbr-rest/OtbrRestError.d.ts +18 -0
  648. package/dist/esm/otbr-rest/OtbrRestError.d.ts.map +1 -0
  649. package/dist/esm/otbr-rest/OtbrRestError.js +22 -0
  650. package/dist/esm/otbr-rest/OtbrRestError.js.map +6 -0
  651. package/dist/esm/otbr-rest/OtbrRestProbe.d.ts +17 -0
  652. package/dist/esm/otbr-rest/OtbrRestProbe.d.ts.map +1 -0
  653. package/dist/esm/otbr-rest/OtbrRestProbe.js +76 -0
  654. package/dist/esm/otbr-rest/OtbrRestProbe.js.map +6 -0
  655. package/dist/esm/otbr-rest/caseNormalizer.d.ts +12 -0
  656. package/dist/esm/otbr-rest/caseNormalizer.d.ts.map +1 -0
  657. package/dist/esm/otbr-rest/caseNormalizer.js +39 -0
  658. package/dist/esm/otbr-rest/caseNormalizer.js.map +6 -0
  659. package/dist/esm/otbr-rest/index.d.ts +15 -0
  660. package/dist/esm/otbr-rest/index.d.ts.map +1 -0
  661. package/dist/esm/otbr-rest/index.js +20 -0
  662. package/dist/esm/otbr-rest/index.js.map +6 -0
  663. package/dist/esm/otbr-rest/translation.d.ts +24 -0
  664. package/dist/esm/otbr-rest/translation.d.ts.map +1 -0
  665. package/dist/esm/otbr-rest/translation.js +281 -0
  666. package/dist/esm/otbr-rest/translation.js.map +6 -0
  667. package/dist/esm/package.json +6 -0
  668. package/dist/esm/selection/index.d.ts +11 -0
  669. package/dist/esm/selection/index.d.ts.map +1 -0
  670. package/dist/esm/selection/index.js +16 -0
  671. package/dist/esm/selection/index.js.map +6 -0
  672. package/dist/esm/selection/selectBr.d.ts +37 -0
  673. package/dist/esm/selection/selectBr.d.ts.map +1 -0
  674. package/dist/esm/selection/selectBr.js +46 -0
  675. package/dist/esm/selection/selectBr.js.map +6 -0
  676. package/dist/esm/selection/selectSource.d.ts +32 -0
  677. package/dist/esm/selection/selectSource.d.ts.map +1 -0
  678. package/dist/esm/selection/selectSource.js +23 -0
  679. package/dist/esm/selection/selectSource.js.map +6 -0
  680. package/dist/esm/selection/withExtPanIdLock.d.ts +23 -0
  681. package/dist/esm/selection/withExtPanIdLock.d.ts.map +1 -0
  682. package/dist/esm/selection/withExtPanIdLock.js +30 -0
  683. package/dist/esm/selection/withExtPanIdLock.js.map +6 -0
  684. package/dist/esm/tlv/BasicTlvCodec.d.ts +22 -0
  685. package/dist/esm/tlv/BasicTlvCodec.d.ts.map +1 -0
  686. package/dist/esm/tlv/BasicTlvCodec.js +77 -0
  687. package/dist/esm/tlv/BasicTlvCodec.js.map +6 -0
  688. package/dist/esm/tlv/NetworkDiagnosticTlv.d.ts +30 -0
  689. package/dist/esm/tlv/NetworkDiagnosticTlv.d.ts.map +1 -0
  690. package/dist/esm/tlv/NetworkDiagnosticTlv.js +21 -0
  691. package/dist/esm/tlv/NetworkDiagnosticTlv.js.map +6 -0
  692. package/dist/esm/tlv/TypeListTlv.d.ts +23 -0
  693. package/dist/esm/tlv/TypeListTlv.d.ts.map +1 -0
  694. package/dist/esm/tlv/TypeListTlv.js +29 -0
  695. package/dist/esm/tlv/TypeListTlv.js.map +6 -0
  696. package/dist/esm/tlv/diag/ChildIpv6AddressList.d.ts +22 -0
  697. package/dist/esm/tlv/diag/ChildIpv6AddressList.d.ts.map +1 -0
  698. package/dist/esm/tlv/diag/ChildIpv6AddressList.js +28 -0
  699. package/dist/esm/tlv/diag/ChildIpv6AddressList.js.map +6 -0
  700. package/dist/esm/tlv/diag/ChildTable.d.ts +29 -0
  701. package/dist/esm/tlv/diag/ChildTable.d.ts.map +1 -0
  702. package/dist/esm/tlv/diag/ChildTable.js +71 -0
  703. package/dist/esm/tlv/diag/ChildTable.js.map +6 -0
  704. package/dist/esm/tlv/diag/Connectivity.d.ts +45 -0
  705. package/dist/esm/tlv/diag/Connectivity.d.ts.map +1 -0
  706. package/dist/esm/tlv/diag/Connectivity.js +79 -0
  707. package/dist/esm/tlv/diag/Connectivity.js.map +6 -0
  708. package/dist/esm/tlv/diag/Ipv6AddressList.d.ts +21 -0
  709. package/dist/esm/tlv/diag/Ipv6AddressList.d.ts.map +1 -0
  710. package/dist/esm/tlv/diag/Ipv6AddressList.js +41 -0
  711. package/dist/esm/tlv/diag/Ipv6AddressList.js.map +6 -0
  712. package/dist/esm/tlv/diag/LeaderData.d.ts +28 -0
  713. package/dist/esm/tlv/diag/LeaderData.d.ts.map +1 -0
  714. package/dist/esm/tlv/diag/LeaderData.js +44 -0
  715. package/dist/esm/tlv/diag/LeaderData.js.map +6 -0
  716. package/dist/esm/tlv/diag/MacCounters.d.ts +28 -0
  717. package/dist/esm/tlv/diag/MacCounters.d.ts.map +1 -0
  718. package/dist/esm/tlv/diag/MacCounters.js +65 -0
  719. package/dist/esm/tlv/diag/MacCounters.js.map +6 -0
  720. package/dist/esm/tlv/diag/MleCounters.d.ts +41 -0
  721. package/dist/esm/tlv/diag/MleCounters.d.ts.map +1 -0
  722. package/dist/esm/tlv/diag/MleCounters.js +98 -0
  723. package/dist/esm/tlv/diag/MleCounters.js.map +6 -0
  724. package/dist/esm/tlv/diag/Mode.d.ts +26 -0
  725. package/dist/esm/tlv/diag/Mode.d.ts.map +1 -0
  726. package/dist/esm/tlv/diag/Mode.js +37 -0
  727. package/dist/esm/tlv/diag/Mode.js.map +6 -0
  728. package/dist/esm/tlv/diag/NetworkData.d.ts +93 -0
  729. package/dist/esm/tlv/diag/NetworkData.d.ts.map +1 -0
  730. package/dist/esm/tlv/diag/NetworkData.js +137 -0
  731. package/dist/esm/tlv/diag/NetworkData.js.map +6 -0
  732. package/dist/esm/tlv/diag/Primitives.d.ts +34 -0
  733. package/dist/esm/tlv/diag/Primitives.d.ts.map +1 -0
  734. package/dist/esm/tlv/diag/Primitives.js +143 -0
  735. package/dist/esm/tlv/diag/Primitives.js.map +6 -0
  736. package/dist/esm/tlv/diag/Route64.d.ts +42 -0
  737. package/dist/esm/tlv/diag/Route64.d.ts.map +1 -0
  738. package/dist/esm/tlv/diag/Route64.js +78 -0
  739. package/dist/esm/tlv/diag/Route64.js.map +6 -0
  740. package/dist/esm/tlv/diag/RouterNeighbor.d.ts +46 -0
  741. package/dist/esm/tlv/diag/RouterNeighbor.d.ts.map +1 -0
  742. package/dist/esm/tlv/diag/RouterNeighbor.js +45 -0
  743. package/dist/esm/tlv/diag/RouterNeighbor.js.map +6 -0
  744. package/dist/esm/tlv/diag/Timeout.d.ts +17 -0
  745. package/dist/esm/tlv/diag/Timeout.d.ts.map +1 -0
  746. package/dist/esm/tlv/diag/Timeout.js +33 -0
  747. package/dist/esm/tlv/diag/Timeout.js.map +6 -0
  748. package/dist/esm/tlv/diag/VendorInfo.d.ts +35 -0
  749. package/dist/esm/tlv/diag/VendorInfo.d.ts.map +1 -0
  750. package/dist/esm/tlv/diag/VendorInfo.js +110 -0
  751. package/dist/esm/tlv/diag/VendorInfo.js.map +6 -0
  752. package/dist/esm/tlv/diag/index.d.ts +26 -0
  753. package/dist/esm/tlv/diag/index.d.ts.map +1 -0
  754. package/dist/esm/tlv/diag/index.js +55 -0
  755. package/dist/esm/tlv/diag/index.js.map +6 -0
  756. package/dist/esm/tlv/meshcop/Ip6AddressTlv.d.ts +21 -0
  757. package/dist/esm/tlv/meshcop/Ip6AddressTlv.d.ts.map +1 -0
  758. package/dist/esm/tlv/meshcop/Ip6AddressTlv.js +28 -0
  759. package/dist/esm/tlv/meshcop/Ip6AddressTlv.js.map +6 -0
  760. package/dist/esm/tlv/meshcop/UdpEncapsulationTlv.d.ts +27 -0
  761. package/dist/esm/tlv/meshcop/UdpEncapsulationTlv.d.ts.map +1 -0
  762. package/dist/esm/tlv/meshcop/UdpEncapsulationTlv.js +42 -0
  763. package/dist/esm/tlv/meshcop/UdpEncapsulationTlv.js.map +6 -0
  764. package/dist/esm/tlv/networkDiagTlvTypes.d.ts +59 -0
  765. package/dist/esm/tlv/networkDiagTlvTypes.d.ts.map +1 -0
  766. package/dist/esm/tlv/networkDiagTlvTypes.js +56 -0
  767. package/dist/esm/tlv/networkDiagTlvTypes.js.map +6 -0
  768. package/dist/esm/util/meshLocalAddr.d.ts +27 -0
  769. package/dist/esm/util/meshLocalAddr.d.ts.map +1 -0
  770. package/dist/esm/util/meshLocalAddr.js +47 -0
  771. package/dist/esm/util/meshLocalAddr.js.map +6 -0
  772. package/package.json +73 -0
  773. package/src/coap/CoapClient.ts +355 -0
  774. package/src/coap/CoapMessage.ts +190 -0
  775. package/src/coap/index.ts +8 -0
  776. package/src/commissioner/Commissioner.ts +205 -0
  777. package/src/commissioner/LeadKa.ts +48 -0
  778. package/src/commissioner/LeadPet.ts +53 -0
  779. package/src/commissioner/index.ts +17 -0
  780. package/src/credentials/ThreadCredentialsRegistry.ts +117 -0
  781. package/src/credentials/ThreadNetworkCredentials.ts +26 -0
  782. package/src/credentials/index.ts +8 -0
  783. package/src/crypto/AesCmacPrf128.ts +101 -0
  784. package/src/crypto/Pbkdf2AesCmac.ts +57 -0
  785. package/src/crypto/Pskc.ts +57 -0
  786. package/src/crypto/index.ts +9 -0
  787. package/src/dataset/OperationalDataset.ts +326 -0
  788. package/src/dataset/SecurityPolicy.ts +48 -0
  789. package/src/dataset/errors.ts +10 -0
  790. package/src/dataset/index.ts +9 -0
  791. package/src/dataset/meshcopTlvTypes.ts +69 -0
  792. package/src/diagnostic/DefaultTlvSet.ts +31 -0
  793. package/src/diagnostic/DiagnosticResponse.ts +45 -0
  794. package/src/diagnostic/DiagnosticSource.ts +66 -0
  795. package/src/diagnostic/MeshCopDiagnosticSource.ts +808 -0
  796. package/src/diagnostic/connectMeshcop.ts +122 -0
  797. package/src/diagnostic/errors.ts +10 -0
  798. package/src/diagnostic/index.ts +13 -0
  799. package/src/discovery/BorderRouterEntry.ts +54 -0
  800. package/src/discovery/BorderRouterRegistry.ts +645 -0
  801. package/src/discovery/DnssdLikeTypes.ts +51 -0
  802. package/src/discovery/index.ts +8 -0
  803. package/src/dtls/channel/DtlsChannel.ts +42 -0
  804. package/src/dtls/channel/DtlsConnectOpts.ts +50 -0
  805. package/src/dtls/channel/DtlsRetransmitTimer.ts +107 -0
  806. package/src/dtls/channel/NobleDtlsChannel.ts +519 -0
  807. package/src/dtls/channel/connectDtls.ts +26 -0
  808. package/src/dtls/channel/index.ts +15 -0
  809. package/src/dtls/ecjpake/EcJpakePms.ts +65 -0
  810. package/src/dtls/ecjpake/EcJpakeRound.ts +279 -0
  811. package/src/dtls/ecjpake/SchnorrZkp.ts +193 -0
  812. package/src/dtls/ecjpake/index.ts +29 -0
  813. package/src/dtls/handshake/ChangeCipherSpec.ts +32 -0
  814. package/src/dtls/handshake/ClientHelloMessage.ts +150 -0
  815. package/src/dtls/handshake/ClientKeyExchangeMessage.ts +25 -0
  816. package/src/dtls/handshake/DtlsClient.ts +610 -0
  817. package/src/dtls/handshake/FinishedMessage.ts +36 -0
  818. package/src/dtls/handshake/HandshakeMessage.ts +144 -0
  819. package/src/dtls/handshake/HandshakeType.ts +35 -0
  820. package/src/dtls/handshake/HelloVerifyRequestMessage.ts +47 -0
  821. package/src/dtls/handshake/ServerHelloDoneMessage.ts +20 -0
  822. package/src/dtls/handshake/ServerHelloMessage.ts +129 -0
  823. package/src/dtls/handshake/ServerKeyExchangeMessage.ts +31 -0
  824. package/src/dtls/handshake/index.ts +15 -0
  825. package/src/dtls/prf/HandshakeTranscript.ts +52 -0
  826. package/src/dtls/prf/TlsPrf.ts +173 -0
  827. package/src/dtls/prf/index.ts +14 -0
  828. package/src/dtls/record/AesCcm8.ts +83 -0
  829. package/src/dtls/record/AntiReplayWindow.ts +87 -0
  830. package/src/dtls/record/ContentType.ts +23 -0
  831. package/src/dtls/record/DtlsCipherState.ts +202 -0
  832. package/src/dtls/record/DtlsRecord.ts +249 -0
  833. package/src/dtls/record/index.ts +26 -0
  834. package/src/index.ts +93 -0
  835. package/src/otbr-rest/OtbrRestCapability.ts +22 -0
  836. package/src/otbr-rest/OtbrRestClient.ts +644 -0
  837. package/src/otbr-rest/OtbrRestDiagnosticSource.ts +172 -0
  838. package/src/otbr-rest/OtbrRestError.ts +29 -0
  839. package/src/otbr-rest/OtbrRestProbe.ts +85 -0
  840. package/src/otbr-rest/caseNormalizer.ts +49 -0
  841. package/src/otbr-rest/index.ts +21 -0
  842. package/src/otbr-rest/translation.ts +344 -0
  843. package/src/selection/index.ts +11 -0
  844. package/src/selection/selectBr.ts +77 -0
  845. package/src/selection/selectSource.ts +51 -0
  846. package/src/selection/withExtPanIdLock.ts +40 -0
  847. package/src/tlv/BasicTlvCodec.ts +83 -0
  848. package/src/tlv/NetworkDiagnosticTlv.ts +37 -0
  849. package/src/tlv/TypeListTlv.ts +38 -0
  850. package/src/tlv/diag/ChildIpv6AddressList.ts +41 -0
  851. package/src/tlv/diag/ChildTable.ts +92 -0
  852. package/src/tlv/diag/Connectivity.ts +115 -0
  853. package/src/tlv/diag/Ipv6AddressList.ts +47 -0
  854. package/src/tlv/diag/LeaderData.ts +59 -0
  855. package/src/tlv/diag/MacCounters.ts +84 -0
  856. package/src/tlv/diag/MleCounters.ts +147 -0
  857. package/src/tlv/diag/Mode.ts +52 -0
  858. package/src/tlv/diag/NetworkData.ts +241 -0
  859. package/src/tlv/diag/Primitives.ts +146 -0
  860. package/src/tlv/diag/Route64.ts +118 -0
  861. package/src/tlv/diag/RouterNeighbor.ts +85 -0
  862. package/src/tlv/diag/Timeout.ts +36 -0
  863. package/src/tlv/diag/VendorInfo.ts +113 -0
  864. package/src/tlv/diag/index.ts +59 -0
  865. package/src/tlv/meshcop/Ip6AddressTlv.ts +36 -0
  866. package/src/tlv/meshcop/UdpEncapsulationTlv.ts +57 -0
  867. package/src/tlv/networkDiagTlvTypes.ts +69 -0
  868. package/src/tsconfig.json +21 -0
  869. package/src/util/meshLocalAddr.ts +63 -0
@@ -0,0 +1,808 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022-2026 Matter.js Authors
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ import {
8
+ Bytes,
9
+ Crypto,
10
+ type Entropy,
11
+ type Environment,
12
+ ImplementationError,
13
+ Logger,
14
+ Millis,
15
+ Observable,
16
+ Seconds,
17
+ Time,
18
+ Timer,
19
+ } from "@matter/general";
20
+ import type { CoapClient } from "../coap/CoapClient.js";
21
+ import { CoapMessage } from "../coap/CoapMessage.js";
22
+ import type { Commissioner } from "../commissioner/Commissioner.js";
23
+ import { MeshCopTlvType } from "../dataset/meshcopTlvTypes.js";
24
+ import { BasicTlv } from "../tlv/BasicTlvCodec.js";
25
+ import { ChildIpv6AddressList } from "../tlv/diag/ChildIpv6AddressList.js";
26
+ import { ChildTable } from "../tlv/diag/ChildTable.js";
27
+ import { Connectivity } from "../tlv/diag/Connectivity.js";
28
+ import { Ipv6AddressList } from "../tlv/diag/Ipv6AddressList.js";
29
+ import { LeaderData } from "../tlv/diag/LeaderData.js";
30
+ import { MacCounters } from "../tlv/diag/MacCounters.js";
31
+ import { MleCounters } from "../tlv/diag/MleCounters.js";
32
+ import { Mode } from "../tlv/diag/Mode.js";
33
+ import { NetworkData } from "../tlv/diag/NetworkData.js";
34
+ import {
35
+ Address16,
36
+ BatteryLevel,
37
+ ChannelPages,
38
+ Eui64,
39
+ ExtMacAddress,
40
+ MaxChildTimeout,
41
+ SupplyVoltage,
42
+ } from "../tlv/diag/Primitives.js";
43
+ import { Route64 } from "../tlv/diag/Route64.js";
44
+ import { RouterNeighbor } from "../tlv/diag/RouterNeighbor.js";
45
+ import { Timeout } from "../tlv/diag/Timeout.js";
46
+ import {
47
+ ThreadStackVersion,
48
+ VendorAppUrl,
49
+ VendorModel,
50
+ VendorName,
51
+ VendorSwVersion,
52
+ Version,
53
+ } from "../tlv/diag/VendorInfo.js";
54
+ import { Ip6AddressTlv } from "../tlv/meshcop/Ip6AddressTlv.js";
55
+ import { UdpEncapsulationTlv } from "../tlv/meshcop/UdpEncapsulationTlv.js";
56
+ import { NetworkDiagnosticTlv } from "../tlv/NetworkDiagnosticTlv.js";
57
+ import { NetworkDiagTlvType } from "../tlv/networkDiagTlvTypes.js";
58
+ import { TypeListTlv } from "../tlv/TypeListTlv.js";
59
+ import {
60
+ ALL_THREAD_NODES_REALM_LOCAL,
61
+ ALL_THREAD_ROUTERS_REALM_LOCAL,
62
+ deriveMeshLocalAddress,
63
+ formatIp6,
64
+ } from "../util/meshLocalAddr.js";
65
+ import type { DiagnosticResponse } from "./DiagnosticResponse.js";
66
+ import type { DiagnosticSource, QueryMulticastHandle, QueryMulticastOptions } from "./DiagnosticSource.js";
67
+ import { DEFAULT_RESET_TLV_TYPES } from "./DiagnosticSource.js";
68
+ import { ThreadDiagError } from "./errors.js";
69
+
70
+ export { ThreadDiagError } from "./errors.js";
71
+
72
+ const logger = Logger.get("MeshCopDiagnosticSource");
73
+
74
+ const DEFAULT_WINDOW = Seconds(20);
75
+ const DEFAULT_UNICAST_TIMEOUT = Seconds(10);
76
+
77
+ /** TMF service port on the mesh-local interface (Thread spec §5.20). */
78
+ const TMF_PORT = 61631;
79
+ /** Arbitrary ephemeral source port for the encapsulated inner UDP datagram. */
80
+ const PROXY_SRC_PORT = 49152;
81
+
82
+ /** UDP-proxy URIs on the Border Agent's commissioner CoAP server. */
83
+ const PROXY_TX_URI = ["c", "ut"];
84
+ const PROXY_RX_URI = ["c", "ur"];
85
+ /** Network-diagnostic URIs carried inside the proxied inner CoAP message. */
86
+ const DIAG_GET_URI = ["d", "dg"];
87
+ const DIAG_QUERY_URI = ["d", "dq"];
88
+ const DIAG_RESET_URI = ["d", "dr"];
89
+ /** Commissioner management scan/query URIs (sent directly on the commissioner channel). */
90
+ const ENERGY_SCAN_URI = ["c", "es"];
91
+ const ENERGY_REPORT_URI = ["c", "er"];
92
+ const PANID_QUERY_URI = ["c", "pq"];
93
+ const PANID_CONFLICT_URI = ["c", "pc"];
94
+
95
+ const DEFAULT_SCAN_TIMEOUT = Seconds(30);
96
+
97
+ export interface EnergyScanOpts {
98
+ channelMask: number;
99
+ count: number;
100
+ period: number;
101
+ scanDuration: number;
102
+ }
103
+
104
+ export interface EnergyScanEntry {
105
+ channel: number;
106
+ energy: number;
107
+ }
108
+
109
+ export interface PanIdQueryOpts {
110
+ panId: number;
111
+ channelMask: number;
112
+ }
113
+
114
+ export interface PanIdConflict {
115
+ conflictChannelMask: number;
116
+ }
117
+
118
+ /**
119
+ * MeshCoP network-diagnostic source.
120
+ *
121
+ * External commissioners cannot send `/d/dg` or `/d/dq` directly to the Border
122
+ * Agent — its commissioner CoAP server has no diagnostic URIs and answers 4.04.
123
+ * Diagnostics must traverse the UDP Proxy: the inner diagnostic CoAP message is
124
+ * wrapped in a `c/ut` (ProxyTx) request; the Border Agent emits it as a UDP
125
+ * datagram on the mesh (TMF port 61631) and forwards each mesh reply back
126
+ * wrapped in `c/ur` (ProxyRx). See Thread spec §8.10.
127
+ */
128
+ export class MeshCopDiagnosticSource implements DiagnosticSource {
129
+ readonly kind = "meshcop" as const;
130
+
131
+ readonly #commissioner: Pick<Commissioner, "withSession">;
132
+ readonly #coap: Pick<CoapClient, "request" | "listen">;
133
+ readonly #entropy: Entropy;
134
+ readonly #mlPrefix?: Uint8Array;
135
+ #innerMessageId: number;
136
+
137
+ constructor(
138
+ commissioner: Pick<Commissioner, "withSession">,
139
+ coap: Pick<CoapClient, "request" | "listen">,
140
+ environment: Environment,
141
+ mlPrefix?: Uint8Array,
142
+ ) {
143
+ this.#commissioner = commissioner;
144
+ this.#coap = coap;
145
+ this.#entropy = environment.get(Crypto);
146
+ this.#mlPrefix = mlPrefix;
147
+ this.#innerMessageId = this.#entropy.randomUint16;
148
+ }
149
+
150
+ canQuery(_extPanId: Uint8Array): boolean {
151
+ return true;
152
+ }
153
+
154
+ async queryUnicast(target: { rloc16?: number; ip?: string }, tlvTypes: number[]): Promise<DiagnosticResponse> {
155
+ if (target.ip !== undefined) {
156
+ throw new ImplementationError(
157
+ "MeshCopDiagnosticSource: ip-routed unicast is not supported — use rloc16 (mesh-local addressing)",
158
+ );
159
+ }
160
+ if (target.rloc16 === undefined) {
161
+ throw new ImplementationError("MeshCopDiagnosticSource: queryUnicast requires target.rloc16");
162
+ }
163
+ if (this.#mlPrefix === undefined) {
164
+ throw new ImplementationError(
165
+ "MeshCopDiagnosticSource: queryUnicast requires the mesh-local prefix; none was provided to the constructor",
166
+ );
167
+ }
168
+ const targetAddr = deriveMeshLocalAddress(this.#mlPrefix, target.rloc16);
169
+ const token = this.#freshToken();
170
+ const innerBytes = this.#encodeInnerDiag("CON", DIAG_GET_URI, tlvTypes, token);
171
+ const proxyPayload = this.#wrapProxyTx(targetAddr, innerBytes);
172
+
173
+ return this.#commissioner.withSession(async () => {
174
+ let resolveResponse!: (r: DiagnosticResponse) => void;
175
+ let rejectResponse!: (e: Error) => void;
176
+ const responsePromise = new Promise<DiagnosticResponse>((res, rej) => {
177
+ resolveResponse = res;
178
+ rejectResponse = rej;
179
+ });
180
+
181
+ const unsubscribe = this.#coap.listen(PROXY_RX_URI, msg => {
182
+ const inner = unwrapProxyRx(msg.payload);
183
+ if (inner === undefined) {
184
+ logger.debug("[ThreadDiag] unicast c/ur unwrap empty, dropping");
185
+ return;
186
+ }
187
+ this.#ackInnerIfNeeded(inner);
188
+ if (!tokensEqual(inner.message.token, token)) {
189
+ logger.debug(
190
+ `[ThreadDiag] unicast c/ur token mismatch want=${Bytes.toHex(token)} got=${Bytes.toHex(inner.message.token)}, dropping`,
191
+ );
192
+ return;
193
+ }
194
+ try {
195
+ resolveResponse(decodeResponse(inner.message.payload));
196
+ } catch (err) {
197
+ rejectResponse(err instanceof Error ? err : new Error(String(err)));
198
+ }
199
+ });
200
+
201
+ const timer = Time.getTimer("meshcop-unicast-timeout", DEFAULT_UNICAST_TIMEOUT, () => {
202
+ rejectResponse(
203
+ new Error(`MeshCopDiagnosticSource: unicast diagnostic to ${formatIp6(targetAddr)} timed out`),
204
+ );
205
+ }).start();
206
+
207
+ try {
208
+ // ProxyTx is fire-and-forget: the Border Agent forwards the inner
209
+ // datagram without answering the c/ut request, so a CON would only
210
+ // retransmit and re-inject the query. The reply returns via c/ur.
211
+ await this.#coap.request({
212
+ type: "NON",
213
+ code: "0.02",
214
+ uriPath: PROXY_TX_URI,
215
+ payload: proxyPayload,
216
+ });
217
+ return await responsePromise;
218
+ } finally {
219
+ timer.stop();
220
+ unsubscribe();
221
+ }
222
+ });
223
+ }
224
+
225
+ queryMulticast(scope: "ff03::1" | "ff03::2", opts: QueryMulticastOptions): QueryMulticastHandle {
226
+ const windowMs = opts.windowMs ?? DEFAULT_WINDOW;
227
+ const targetAddr = scope === "ff03::1" ? ALL_THREAD_NODES_REALM_LOCAL : ALL_THREAD_ROUTERS_REALM_LOCAL;
228
+ const onNode = new Observable<[DiagnosticResponse]>();
229
+ const onError = new Observable<[Error]>();
230
+ const start = Date.now();
231
+ let nodeCount = 0;
232
+ let closed = false;
233
+ let unsubscribe: (() => void) | undefined;
234
+ let windowTimer: Timer | undefined;
235
+ let fillTimers = new Array<Timer>();
236
+ let resolveTeardown!: () => void;
237
+ // teardownPromise gates the inner withSession callback: when it resolves
238
+ // (via teardown()), the callback returns and Commissioner.release() runs.
239
+ const teardownPromise = new Promise<void>(r => {
240
+ resolveTeardown = r;
241
+ });
242
+
243
+ const teardown = () => {
244
+ if (closed) return;
245
+ closed = true;
246
+ if (windowTimer !== undefined) {
247
+ windowTimer.stop();
248
+ windowTimer = undefined;
249
+ }
250
+ for (const t of fillTimers) t.stop();
251
+ fillTimers = [];
252
+ unsubscribe?.();
253
+ logger.debug(
254
+ `[ThreadDiag] queryMulticast DONE nodes=${nodeCount} duration=${Date.now() - start}ms window=${windowMs}ms`,
255
+ );
256
+ resolveTeardown();
257
+ };
258
+
259
+ // sessionPromise resolves AFTER Commissioner.release() (or the catch
260
+ // branch) so callers awaiting handle.done / handle.close() see the
261
+ // commissioner cleanly released before they tear down DTLS. Without
262
+ // this, COMM_REL would race against socket close and BR would never
263
+ // see the release ACK (manifested as petition-rejected on retry).
264
+ const sessionPromise = this.#commissioner
265
+ .withSession(async () => {
266
+ if (closed) return;
267
+ logger.debug(`[ThreadDiag] queryMulticast START tlvs=${opts.tlvTypes.length} window=${windowMs}ms`);
268
+ const collected = new Array<DiagnosticResponse>();
269
+ const probed = new Set<number>();
270
+ const seenProxyRx = new Set<string>();
271
+ unsubscribe = this.#coap.listen(PROXY_RX_URI, msg => {
272
+ if (closed) return;
273
+ // Some Border Agents re-deliver an identical c/ur many times (observed
274
+ // as a tight retransmit storm when probing the BR's own RLOC). Drop exact
275
+ // duplicates within the window — the first copy is fully processed/ACKed.
276
+ const rawKey = Bytes.toHex(msg.payload);
277
+ if (seenProxyRx.has(rawKey)) return;
278
+ seenProxyRx.add(rawKey);
279
+ const inner = unwrapProxyRx(msg.payload);
280
+ if (inner === undefined) {
281
+ logger.debug("[ThreadDiag] c/ur unwrap empty, dropping");
282
+ return;
283
+ }
284
+ this.#ackInnerIfNeeded(inner);
285
+ if (inner.message.payload.length === 0) return;
286
+ try {
287
+ const decoded = decodeResponse(inner.message.payload);
288
+ collected.push(decoded);
289
+ nodeCount++;
290
+ logger.debug(`[ThreadDiag] c/ur arrival from=${formatIp6(inner.sourceAddr)}`);
291
+ onNode.emit(decoded);
292
+ } catch (err) {
293
+ logger.warn("[ThreadDiag] failed to decode c/ur inner payload, dropping:", err);
294
+ onError.emit(err instanceof Error ? err : new Error(String(err)));
295
+ }
296
+ });
297
+
298
+ // Start the collection window before sending: ProxyTx is fire-and-forget
299
+ // (the Border Agent never answers c/ut), so gating the window on the send
300
+ // completing would leave it unbounded.
301
+ windowTimer = Time.getTimer("meshcop-query-window", Millis(windowMs), teardown).start();
302
+
303
+ const token = this.#freshToken();
304
+ const innerBytes = this.#encodeInnerDiag("NON", DIAG_QUERY_URI, opts.tlvTypes, token);
305
+ const proxyPayload = this.#wrapProxyTx(targetAddr, innerBytes);
306
+ try {
307
+ await this.#coap.request({
308
+ type: "NON",
309
+ code: "0.02",
310
+ uriPath: PROXY_TX_URI,
311
+ payload: proxyPayload,
312
+ });
313
+ logger.debug(`[ThreadDiag] c/ut ProxyTx (/d/dq -> ${scope}) sent`);
314
+ } catch (err) {
315
+ logger.warn(`[ThreadDiag] c/ut ProxyTx send failed: ${err}`);
316
+ onError.emit(err instanceof Error ? err : new Error(String(err)));
317
+ }
318
+
319
+ if (this.#mlPrefix !== undefined && !closed) {
320
+ const mlPrefix = this.#mlPrefix;
321
+ const sendUnicastFill = (): void => {
322
+ if (closed) return;
323
+ for (const routerId of missingRouterIds(collected)) {
324
+ if (probed.has(routerId)) continue;
325
+ probed.add(routerId);
326
+ const target = deriveMeshLocalAddress(mlPrefix, (routerId << 10) & 0xffff);
327
+ const fillToken = this.#freshToken();
328
+ const fillInner = this.#encodeInnerDiag("CON", DIAG_GET_URI, opts.tlvTypes, fillToken);
329
+ logger.debug(`[ThreadDiag] unicast-fill router=${routerId} target=${formatIp6(target)}`);
330
+ void this.#coap
331
+ .request({
332
+ type: "NON",
333
+ code: "0.02",
334
+ uriPath: PROXY_TX_URI,
335
+ payload: this.#wrapProxyTx(target, fillInner),
336
+ })
337
+ .catch(err =>
338
+ logger.warn(`[ThreadDiag] unicast-fill router=${routerId} send failed: ${err}`),
339
+ );
340
+ }
341
+ };
342
+ fillTimers = [
343
+ Time.getTimer(
344
+ "meshcop-unicast-fill",
345
+ Millis(Math.floor(windowMs / 2)),
346
+ sendUnicastFill,
347
+ ).start(),
348
+ Time.getTimer(
349
+ "meshcop-unicast-fill",
350
+ Millis(Math.max(0, windowMs - 2_000)),
351
+ sendUnicastFill,
352
+ ).start(),
353
+ ];
354
+ } else {
355
+ logger.debug("[ThreadDiag] unicast-fill skipped: no mesh-local prefix");
356
+ }
357
+
358
+ await teardownPromise;
359
+ })
360
+ .catch(err => {
361
+ onError.emit(err instanceof Error ? err : new Error(String(err)));
362
+ teardown();
363
+ });
364
+
365
+ return {
366
+ onNode,
367
+ onError,
368
+ done: sessionPromise,
369
+ close: async () => {
370
+ teardown();
371
+ await sessionPromise;
372
+ },
373
+ };
374
+ }
375
+
376
+ async resetCounters(target: { rloc16?: number; ip?: string }, tlvTypes = DEFAULT_RESET_TLV_TYPES): Promise<void> {
377
+ if (target.rloc16 === undefined) {
378
+ throw new ImplementationError("MeshCopDiagnosticSource: resetCounters requires target.rloc16");
379
+ }
380
+ if (this.#mlPrefix === undefined) {
381
+ throw new ImplementationError(
382
+ "MeshCopDiagnosticSource: resetCounters requires the mesh-local prefix; none was provided to the constructor",
383
+ );
384
+ }
385
+ const targetAddr = deriveMeshLocalAddress(this.#mlPrefix, target.rloc16);
386
+ const token = this.#freshToken();
387
+ const innerBytes = this.#encodeInnerDiag("CON", DIAG_RESET_URI, [...tlvTypes], token);
388
+ const proxyPayload = this.#wrapProxyTx(targetAddr, innerBytes);
389
+
390
+ await this.#commissioner.withSession(async () => {
391
+ // MGMT_DIAG_RESET has no response payload — no reply expected.
392
+ await this.#coap.request({
393
+ type: "NON",
394
+ code: "0.02",
395
+ uriPath: PROXY_TX_URI,
396
+ payload: proxyPayload,
397
+ });
398
+ });
399
+ }
400
+
401
+ /**
402
+ * Request an energy scan (MGMT_ED_SCAN) via the commissioner channel.
403
+ *
404
+ * Sends a `c/es` request with the four scan parameters encoded as MeshCoP TLVs.
405
+ * The Border Router performs the scan and delivers results asynchronously in a
406
+ * `c/er` (MGMT_ED_REPORT) message containing an ENERGY_LIST TLV — one signed
407
+ * byte per channel in channel-number order within the mask.
408
+ *
409
+ * @returns Parsed energy entries sorted by channel number.
410
+ */
411
+ async energyScan(opts: EnergyScanOpts): Promise<Array<EnergyScanEntry>> {
412
+ const payload = encodeScanRequest(opts);
413
+
414
+ return this.#commissioner.withSession(async () => {
415
+ let resolveReport!: (entries: Array<EnergyScanEntry>) => void;
416
+ let rejectReport!: (e: Error) => void;
417
+ const reportPromise = new Promise<Array<EnergyScanEntry>>((res, rej) => {
418
+ resolveReport = res;
419
+ rejectReport = rej;
420
+ });
421
+
422
+ const unsubscribe = this.#coap.listen(ENERGY_REPORT_URI, msg => {
423
+ try {
424
+ resolveReport(decodeEnergyReport(msg.payload, opts.channelMask));
425
+ } catch (err) {
426
+ rejectReport(err instanceof Error ? err : new Error(String(err)));
427
+ }
428
+ });
429
+
430
+ const timer = Time.getTimer("energy-scan-timeout", DEFAULT_SCAN_TIMEOUT, () => {
431
+ rejectReport(new Error("MeshCopDiagnosticSource: energyScan timed out waiting for c/er"));
432
+ }).start();
433
+
434
+ try {
435
+ await this.#coap.request({
436
+ type: "NON",
437
+ code: "0.02",
438
+ uriPath: ENERGY_SCAN_URI,
439
+ payload,
440
+ });
441
+ return await reportPromise;
442
+ } finally {
443
+ timer.stop();
444
+ unsubscribe();
445
+ }
446
+ });
447
+ }
448
+
449
+ /**
450
+ * Request a PAN-ID conflict query (MGMT_PANID_QUERY) via the commissioner channel.
451
+ *
452
+ * Sends a `c/pq` request with CHANNEL_MASK and PAN_ID TLVs. If a conflict is
453
+ * detected the Border Router responds with a `c/pc` (MGMT_PANID_CONFLICT) carrying
454
+ * the conflicting channel mask and the queried PAN-ID. When no conflict is found,
455
+ * no `c/pc` arrives and the method returns `undefined` after the timeout.
456
+ *
457
+ * @returns Conflict channel mask, or `undefined` when no conflict was detected
458
+ * within the timeout window.
459
+ */
460
+ async panIdQuery(opts: PanIdQueryOpts): Promise<PanIdConflict | undefined> {
461
+ const payload = encodePanIdQuery(opts);
462
+
463
+ return this.#commissioner.withSession(async () => {
464
+ let resolveReport!: (result: PanIdConflict | undefined) => void;
465
+ let rejectReport!: (e: Error) => void;
466
+ const reportPromise = new Promise<PanIdConflict | undefined>((res, rej) => {
467
+ resolveReport = res;
468
+ rejectReport = rej;
469
+ });
470
+
471
+ const unsubscribe = this.#coap.listen(PANID_CONFLICT_URI, msg => {
472
+ try {
473
+ resolveReport(decodePanIdConflict(msg.payload, opts.panId));
474
+ } catch (err) {
475
+ rejectReport(err instanceof Error ? err : new Error(String(err)));
476
+ }
477
+ });
478
+
479
+ // No conflict = no c/pc arrives; resolve undefined after timeout.
480
+ const timer = Time.getTimer("panid-query-timeout", DEFAULT_SCAN_TIMEOUT, () => {
481
+ resolveReport(undefined);
482
+ }).start();
483
+
484
+ try {
485
+ await this.#coap.request({
486
+ type: "NON",
487
+ code: "0.02",
488
+ uriPath: PANID_QUERY_URI,
489
+ payload,
490
+ });
491
+ return await reportPromise;
492
+ } finally {
493
+ timer.stop();
494
+ unsubscribe();
495
+ }
496
+ });
497
+ }
498
+
499
+ #encodeInnerDiag(type: "CON" | "NON", uriPath: string[], tlvTypes: number[], token: Uint8Array): Uint8Array {
500
+ return CoapMessage.encode({
501
+ type,
502
+ code: "0.02",
503
+ messageId: this.#nextInnerMessageId(),
504
+ token,
505
+ uriPath,
506
+ payload: NetworkDiagnosticTlv.encode([
507
+ { type: NetworkDiagTlvType.TYPE_LIST, value: TypeListTlv.encode(tlvTypes) },
508
+ ]),
509
+ });
510
+ }
511
+
512
+ #wrapProxyTx(
513
+ targetAddr: Uint8Array,
514
+ innerCoapBytes: Uint8Array,
515
+ sourcePort = PROXY_SRC_PORT,
516
+ destinationPort = TMF_PORT,
517
+ ): Uint8Array {
518
+ return BasicTlv.encode([
519
+ {
520
+ type: MeshCopTlvType.UDP_ENCAPSULATION,
521
+ value: UdpEncapsulationTlv.encode({ sourcePort, destinationPort, payload: innerCoapBytes }),
522
+ },
523
+ { type: MeshCopTlvType.IPV6_ADDRESS, value: Ip6AddressTlv.encode(targetAddr) },
524
+ ]);
525
+ }
526
+
527
+ /**
528
+ * Acknowledge a confirmable inner diagnostic answer. Mesh nodes send
529
+ * `/d/da` as a CON to the commissioner address; without an empty ACK
530
+ * (matched by message id) they keep retransmitting through the proxy. The
531
+ * ACK rides back through a fire-and-forget `c/ut` ProxyTx to the responder,
532
+ * mirroring the datagram's ports (src = the port the node addressed, dst =
533
+ * the node's source port) so the node correlates it to its pending CON.
534
+ */
535
+ #ackInnerIfNeeded(inner: ProxyRxInner): void {
536
+ if (inner.message.type !== "CON") return;
537
+ const ackBytes = CoapMessage.encode({
538
+ type: "ACK",
539
+ code: "0.00",
540
+ messageId: inner.message.messageId,
541
+ token: new Uint8Array(),
542
+ payload: new Uint8Array(),
543
+ });
544
+ const proxyPayload = this.#wrapProxyTx(inner.sourceAddr, ackBytes, inner.destinationPort, inner.sourcePort);
545
+ void this.#coap
546
+ .request({ type: "NON", code: "0.02", uriPath: PROXY_TX_URI, payload: proxyPayload })
547
+ .catch(err => logger.debug("[ThreadDiag] inner ACK send failed:", err));
548
+ }
549
+
550
+ #nextInnerMessageId(): number {
551
+ const id = this.#innerMessageId;
552
+ this.#innerMessageId = (this.#innerMessageId + 1) & 0xffff;
553
+ return id;
554
+ }
555
+
556
+ #freshToken(): Uint8Array {
557
+ return Bytes.of(this.#entropy.randomBytes(4));
558
+ }
559
+ }
560
+
561
+ interface ProxyRxInner {
562
+ sourceAddr: Uint8Array;
563
+ sourcePort: number;
564
+ destinationPort: number;
565
+ message: CoapMessage;
566
+ }
567
+
568
+ /**
569
+ * Unwrap a `c/ur` (ProxyRx) payload: parse the outer MeshCoP TLVs, decode the
570
+ * encapsulated inner CoAP message, and surface its diagnostic payload plus the
571
+ * responder's source address. Returns `undefined` if the required TLVs are
572
+ * absent or the inner CoAP message cannot be parsed.
573
+ */
574
+ function unwrapProxyRx(payload: Uint8Array): ProxyRxInner | undefined {
575
+ let entries: ReturnType<typeof BasicTlv.walk>;
576
+ try {
577
+ entries = BasicTlv.walk(payload);
578
+ } catch (err) {
579
+ logger.warn("[ThreadDiag] c/ur outer TLV parse failed, dropping:", err);
580
+ return undefined;
581
+ }
582
+
583
+ let encap: ReturnType<typeof UdpEncapsulationTlv.decode> | undefined;
584
+ let sourceAddr: Uint8Array | undefined;
585
+ for (const entry of entries) {
586
+ if (entry.type === MeshCopTlvType.UDP_ENCAPSULATION) {
587
+ encap = UdpEncapsulationTlv.decode(entry.value);
588
+ } else if (entry.type === MeshCopTlvType.IPV6_ADDRESS) {
589
+ sourceAddr = Ip6AddressTlv.decode(entry.value);
590
+ }
591
+ }
592
+ if (encap === undefined || sourceAddr === undefined) {
593
+ logger.debug(
594
+ `[ThreadDiag] c/ur missing TLVs: encap=${encap !== undefined} ip6=${sourceAddr !== undefined} types=[${entries.map(e => e.type).join(",")}]`,
595
+ );
596
+ return undefined;
597
+ }
598
+
599
+ let inner: CoapMessage;
600
+ try {
601
+ inner = CoapMessage.decode(encap.payload);
602
+ } catch (err) {
603
+ logger.warn("[ThreadDiag] c/ur inner CoAP parse failed, dropping:", err);
604
+ return undefined;
605
+ }
606
+ return { sourceAddr, sourcePort: encap.sourcePort, destinationPort: encap.destinationPort, message: inner };
607
+ }
608
+
609
+ function tokensEqual(a: Uint8Array, b: Uint8Array): boolean {
610
+ if (a.length !== b.length) return false;
611
+ for (let i = 0; i < a.length; i++) {
612
+ if (a[i] !== b[i]) return false;
613
+ }
614
+ return true;
615
+ }
616
+
617
+ function encodeScanRequest(opts: EnergyScanOpts): Uint8Array {
618
+ const mask = new Uint8Array(4);
619
+ mask[0] = (opts.channelMask >> 24) & 0xff;
620
+ mask[1] = (opts.channelMask >> 16) & 0xff;
621
+ mask[2] = (opts.channelMask >> 8) & 0xff;
622
+ mask[3] = opts.channelMask & 0xff;
623
+
624
+ const count = new Uint8Array([opts.count & 0xff]);
625
+ const period = new Uint8Array(2);
626
+ period[0] = (opts.period >> 8) & 0xff;
627
+ period[1] = opts.period & 0xff;
628
+ const scanDuration = new Uint8Array(2);
629
+ scanDuration[0] = (opts.scanDuration >> 8) & 0xff;
630
+ scanDuration[1] = opts.scanDuration & 0xff;
631
+
632
+ return BasicTlv.encode([
633
+ { type: MeshCopTlvType.CHANNEL_MASK, value: mask },
634
+ { type: MeshCopTlvType.COUNT, value: count },
635
+ { type: MeshCopTlvType.PERIOD, value: period },
636
+ { type: MeshCopTlvType.SCAN_DURATION, value: scanDuration },
637
+ ]);
638
+ }
639
+
640
+ function decodeEnergyReport(payload: Uint8Array, channelMask: number): Array<EnergyScanEntry> {
641
+ const entries = BasicTlv.walk(payload);
642
+ const energyEntry = entries.find(e => e.type === MeshCopTlvType.ENERGY_LIST);
643
+ if (energyEntry === undefined) {
644
+ throw new ThreadDiagError("MeshCopDiagnosticSource: c/er missing ENERGY_LIST TLV");
645
+ }
646
+ const energyBytes = energyEntry.value;
647
+ const result = new Array<EnergyScanEntry>();
648
+ let byteIndex = 0;
649
+ for (let ch = 0; ch < 32; ch++) {
650
+ if ((channelMask & (1 << ch)) !== 0) {
651
+ if (byteIndex >= energyBytes.length) break;
652
+ // Energy bytes are signed (dBm), stored as two's complement.
653
+ const raw = energyBytes[byteIndex++];
654
+ const energy = raw >= 0x80 ? raw - 0x100 : raw;
655
+ result.push({ channel: ch, energy });
656
+ }
657
+ }
658
+ return result;
659
+ }
660
+
661
+ function encodePanIdQuery(opts: PanIdQueryOpts): Uint8Array {
662
+ const mask = new Uint8Array(4);
663
+ mask[0] = (opts.channelMask >> 24) & 0xff;
664
+ mask[1] = (opts.channelMask >> 16) & 0xff;
665
+ mask[2] = (opts.channelMask >> 8) & 0xff;
666
+ mask[3] = opts.channelMask & 0xff;
667
+
668
+ const panId = new Uint8Array(2);
669
+ panId[0] = (opts.panId >> 8) & 0xff;
670
+ panId[1] = opts.panId & 0xff;
671
+
672
+ return BasicTlv.encode([
673
+ { type: MeshCopTlvType.CHANNEL_MASK, value: mask },
674
+ { type: MeshCopTlvType.PANID, value: panId },
675
+ ]);
676
+ }
677
+
678
+ function decodePanIdConflict(payload: Uint8Array, expectedPanId: number): PanIdConflict {
679
+ const entries = BasicTlv.walk(payload);
680
+ const maskEntry = entries.find(e => e.type === MeshCopTlvType.CHANNEL_MASK);
681
+ if (maskEntry === undefined) {
682
+ throw new ThreadDiagError("MeshCopDiagnosticSource: c/pc missing CHANNEL_MASK TLV");
683
+ }
684
+ const mv = maskEntry.value;
685
+ if (mv.length < 4) {
686
+ throw new ThreadDiagError(`MeshCopDiagnosticSource: c/pc CHANNEL_MASK too short (${mv.length} bytes)`);
687
+ }
688
+ const conflictChannelMask = ((mv[0] << 24) | (mv[1] << 16) | (mv[2] << 8) | mv[3]) >>> 0;
689
+
690
+ const panIdEntry = entries.find(e => e.type === MeshCopTlvType.PANID);
691
+ if (panIdEntry !== undefined && panIdEntry.value.length >= 2) {
692
+ const reportedPanId = (panIdEntry.value[0] << 8) | panIdEntry.value[1];
693
+ if (reportedPanId !== expectedPanId) {
694
+ logger.warn(
695
+ `[ThreadDiag] c/pc PAN-ID mismatch: expected=0x${expectedPanId.toString(16)} got=0x${reportedPanId.toString(16)}, ignoring`,
696
+ );
697
+ }
698
+ }
699
+
700
+ return { conflictChannelMask };
701
+ }
702
+
703
+ // Router id = rloc16 top 6 bits (Thread spec); route64 entries carry router ids directly.
704
+ export function missingRouterIds(responses: ReadonlyArray<DiagnosticResponse>): number[] {
705
+ const answered = new Set<number>();
706
+ const referenced = new Set<number>();
707
+ for (const r of responses) {
708
+ if (r.rloc16 !== undefined) answered.add((r.rloc16 >> 10) & 0x3f);
709
+ if (r.route64 !== undefined) {
710
+ for (const e of r.route64.entries) referenced.add(e.routerId);
711
+ }
712
+ }
713
+ const missing = new Array<number>();
714
+ for (const id of referenced) {
715
+ if (!answered.has(id)) missing.push(id);
716
+ }
717
+ return missing.sort((a, b) => a - b);
718
+ }
719
+
720
+ function decodeResponse(payload: Uint8Array): DiagnosticResponse {
721
+ const entries = NetworkDiagnosticTlv.decode(payload);
722
+ const result: DiagnosticResponse = { unknown: new Array<{ type: number; value: Uint8Array }>() };
723
+
724
+ for (const entry of entries) {
725
+ switch (entry.type) {
726
+ case NetworkDiagTlvType.EXT_MAC_ADDRESS:
727
+ result.extMacAddress = ExtMacAddress.decode(entry.value);
728
+ break;
729
+ case NetworkDiagTlvType.ADDRESS16:
730
+ result.rloc16 = Address16.decode(entry.value);
731
+ break;
732
+ case NetworkDiagTlvType.MODE:
733
+ result.mode = Mode.decode(entry.value);
734
+ break;
735
+ case NetworkDiagTlvType.TIMEOUT:
736
+ result.timeout = Timeout.decode(entry.value);
737
+ break;
738
+ case NetworkDiagTlvType.CONNECTIVITY:
739
+ result.connectivity = Connectivity.decode(entry.value);
740
+ break;
741
+ case NetworkDiagTlvType.ROUTE64:
742
+ result.route64 = Route64.decode(entry.value);
743
+ break;
744
+ case NetworkDiagTlvType.LEADER_DATA:
745
+ result.leaderData = LeaderData.decode(entry.value);
746
+ break;
747
+ case NetworkDiagTlvType.NETWORK_DATA:
748
+ result.networkData = NetworkData.decode(entry.value);
749
+ break;
750
+ case NetworkDiagTlvType.IPV6_ADDRESS_LIST:
751
+ result.ipv6Addresses = Ipv6AddressList.decode(entry.value);
752
+ break;
753
+ case NetworkDiagTlvType.MAC_COUNTERS:
754
+ result.macCounters = MacCounters.decode(entry.value);
755
+ break;
756
+ case NetworkDiagTlvType.BATTERY_LEVEL:
757
+ result.batteryLevel = BatteryLevel.decode(entry.value);
758
+ break;
759
+ case NetworkDiagTlvType.SUPPLY_VOLTAGE:
760
+ result.supplyVoltage = SupplyVoltage.decode(entry.value);
761
+ break;
762
+ case NetworkDiagTlvType.CHILD_TABLE:
763
+ result.childTable = ChildTable.decode(entry.value);
764
+ break;
765
+ case NetworkDiagTlvType.CHILD_IPV6_ADDRESS_LIST:
766
+ result.childIpv6Addresses = ChildIpv6AddressList.decode(entry.value);
767
+ break;
768
+ case NetworkDiagTlvType.ROUTER_NEIGHBOR:
769
+ result.routerNeighbors = RouterNeighbor.decode(entry.value);
770
+ break;
771
+ case NetworkDiagTlvType.CHANNEL_PAGES:
772
+ result.channelPages = ChannelPages.decode(entry.value);
773
+ break;
774
+ case NetworkDiagTlvType.MAX_CHILD_TIMEOUT:
775
+ result.maxChildTimeout = MaxChildTimeout.decode(entry.value);
776
+ break;
777
+ case NetworkDiagTlvType.EUI64:
778
+ result.eui64 = Eui64.decode(entry.value);
779
+ break;
780
+ case NetworkDiagTlvType.VERSION:
781
+ result.version = Version.decode(entry.value);
782
+ break;
783
+ case NetworkDiagTlvType.VENDOR_NAME:
784
+ result.vendorName = VendorName.decode(entry.value);
785
+ break;
786
+ case NetworkDiagTlvType.VENDOR_MODEL:
787
+ result.vendorModel = VendorModel.decode(entry.value);
788
+ break;
789
+ case NetworkDiagTlvType.VENDOR_SW_VERSION:
790
+ result.vendorSwVersion = VendorSwVersion.decode(entry.value);
791
+ break;
792
+ case NetworkDiagTlvType.THREAD_STACK_VERSION:
793
+ result.threadStackVersion = ThreadStackVersion.decode(entry.value);
794
+ break;
795
+ case NetworkDiagTlvType.MLE_COUNTERS:
796
+ result.mleCounters = MleCounters.decode(entry.value);
797
+ break;
798
+ case NetworkDiagTlvType.VENDOR_APP_URL:
799
+ result.vendorAppUrl = VendorAppUrl.decode(entry.value);
800
+ break;
801
+ default:
802
+ result.unknown.push({ type: entry.type, value: entry.value });
803
+ break;
804
+ }
805
+ }
806
+
807
+ return result;
808
+ }