@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.
- package/README.md +192 -0
- package/dist/cjs/coap/CoapClient.d.ts +33 -0
- package/dist/cjs/coap/CoapClient.d.ts.map +1 -0
- package/dist/cjs/coap/CoapClient.js +281 -0
- package/dist/cjs/coap/CoapClient.js.map +6 -0
- package/dist/cjs/coap/CoapMessage.d.ts +23 -0
- package/dist/cjs/coap/CoapMessage.d.ts.map +1 -0
- package/dist/cjs/coap/CoapMessage.js +182 -0
- package/dist/cjs/coap/CoapMessage.js.map +6 -0
- package/dist/cjs/coap/index.d.ts +8 -0
- package/dist/cjs/coap/index.d.ts.map +1 -0
- package/dist/cjs/coap/index.js +31 -0
- package/dist/cjs/coap/index.js.map +6 -0
- package/dist/cjs/commissioner/Commissioner.d.ts +89 -0
- package/dist/cjs/commissioner/Commissioner.d.ts.map +1 -0
- package/dist/cjs/commissioner/Commissioner.js +188 -0
- package/dist/cjs/commissioner/Commissioner.js.map +6 -0
- package/dist/cjs/commissioner/LeadKa.d.ts +17 -0
- package/dist/cjs/commissioner/LeadKa.d.ts.map +1 -0
- package/dist/cjs/commissioner/LeadKa.js +63 -0
- package/dist/cjs/commissioner/LeadKa.js.map +6 -0
- package/dist/cjs/commissioner/LeadPet.d.ts +14 -0
- package/dist/cjs/commissioner/LeadPet.d.ts.map +1 -0
- package/dist/cjs/commissioner/LeadPet.js +66 -0
- package/dist/cjs/commissioner/LeadPet.js.map +6 -0
- package/dist/cjs/commissioner/index.d.ts +12 -0
- package/dist/cjs/commissioner/index.d.ts.map +1 -0
- package/dist/cjs/commissioner/index.js +38 -0
- package/dist/cjs/commissioner/index.js.map +6 -0
- package/dist/cjs/credentials/ThreadCredentialsRegistry.d.ts +50 -0
- package/dist/cjs/credentials/ThreadCredentialsRegistry.d.ts.map +1 -0
- package/dist/cjs/credentials/ThreadCredentialsRegistry.js +119 -0
- package/dist/cjs/credentials/ThreadCredentialsRegistry.js.map +6 -0
- package/dist/cjs/credentials/ThreadNetworkCredentials.d.ts +26 -0
- package/dist/cjs/credentials/ThreadNetworkCredentials.d.ts.map +1 -0
- package/dist/cjs/credentials/ThreadNetworkCredentials.js +22 -0
- package/dist/cjs/credentials/ThreadNetworkCredentials.js.map +6 -0
- package/dist/cjs/credentials/index.d.ts +8 -0
- package/dist/cjs/credentials/index.d.ts.map +1 -0
- package/dist/cjs/credentials/index.js +30 -0
- package/dist/cjs/credentials/index.js.map +6 -0
- package/dist/cjs/crypto/AesCmacPrf128.d.ts +24 -0
- package/dist/cjs/crypto/AesCmacPrf128.d.ts.map +1 -0
- package/dist/cjs/crypto/AesCmacPrf128.js +107 -0
- package/dist/cjs/crypto/AesCmacPrf128.js.map +6 -0
- package/dist/cjs/crypto/Pbkdf2AesCmac.d.ts +18 -0
- package/dist/cjs/crypto/Pbkdf2AesCmac.d.ts.map +1 -0
- package/dist/cjs/crypto/Pbkdf2AesCmac.js +62 -0
- package/dist/cjs/crypto/Pbkdf2AesCmac.js.map +6 -0
- package/dist/cjs/crypto/Pskc.d.ts +21 -0
- package/dist/cjs/crypto/Pskc.d.ts.map +1 -0
- package/dist/cjs/crypto/Pskc.js +69 -0
- package/dist/cjs/crypto/Pskc.js.map +6 -0
- package/dist/cjs/crypto/index.d.ts +9 -0
- package/dist/cjs/crypto/index.d.ts.map +1 -0
- package/dist/cjs/crypto/index.js +35 -0
- package/dist/cjs/crypto/index.js.map +6 -0
- package/dist/cjs/dataset/OperationalDataset.d.ts +74 -0
- package/dist/cjs/dataset/OperationalDataset.d.ts.map +1 -0
- package/dist/cjs/dataset/OperationalDataset.js +244 -0
- package/dist/cjs/dataset/OperationalDataset.js.map +6 -0
- package/dist/cjs/dataset/SecurityPolicy.d.ts +22 -0
- package/dist/cjs/dataset/SecurityPolicy.d.ts.map +1 -0
- package/dist/cjs/dataset/SecurityPolicy.js +59 -0
- package/dist/cjs/dataset/SecurityPolicy.js.map +6 -0
- package/dist/cjs/dataset/errors.d.ts +10 -0
- package/dist/cjs/dataset/errors.d.ts.map +1 -0
- package/dist/cjs/dataset/errors.js +32 -0
- package/dist/cjs/dataset/errors.js.map +6 -0
- package/dist/cjs/dataset/index.d.ts +9 -0
- package/dist/cjs/dataset/index.d.ts.map +1 -0
- package/dist/cjs/dataset/index.js +36 -0
- package/dist/cjs/dataset/index.js.map +6 -0
- package/dist/cjs/dataset/meshcopTlvTypes.d.ts +61 -0
- package/dist/cjs/dataset/meshcopTlvTypes.d.ts.map +1 -0
- package/dist/cjs/dataset/meshcopTlvTypes.js +82 -0
- package/dist/cjs/dataset/meshcopTlvTypes.js.map +6 -0
- package/dist/cjs/diagnostic/DefaultTlvSet.d.ts +8 -0
- package/dist/cjs/diagnostic/DefaultTlvSet.d.ts.map +1 -0
- package/dist/cjs/diagnostic/DefaultTlvSet.js +52 -0
- package/dist/cjs/diagnostic/DefaultTlvSet.js.map +6 -0
- package/dist/cjs/diagnostic/DiagnosticResponse.d.ts +47 -0
- package/dist/cjs/diagnostic/DiagnosticResponse.d.ts.map +1 -0
- package/dist/cjs/diagnostic/DiagnosticResponse.js +22 -0
- package/dist/cjs/diagnostic/DiagnosticResponse.js.map +6 -0
- package/dist/cjs/diagnostic/DiagnosticSource.d.ts +64 -0
- package/dist/cjs/diagnostic/DiagnosticSource.d.ts.map +1 -0
- package/dist/cjs/diagnostic/DiagnosticSource.js +34 -0
- package/dist/cjs/diagnostic/DiagnosticSource.js.map +6 -0
- package/dist/cjs/diagnostic/MeshCopDiagnosticSource.d.ts +78 -0
- package/dist/cjs/diagnostic/MeshCopDiagnosticSource.d.ts.map +1 -0
- package/dist/cjs/diagnostic/MeshCopDiagnosticSource.js +654 -0
- package/dist/cjs/diagnostic/MeshCopDiagnosticSource.js.map +6 -0
- package/dist/cjs/diagnostic/connectMeshcop.d.ts +38 -0
- package/dist/cjs/diagnostic/connectMeshcop.d.ts.map +1 -0
- package/dist/cjs/diagnostic/connectMeshcop.js +100 -0
- package/dist/cjs/diagnostic/connectMeshcop.js.map +6 -0
- package/dist/cjs/diagnostic/errors.d.ts +10 -0
- package/dist/cjs/diagnostic/errors.d.ts.map +1 -0
- package/dist/cjs/diagnostic/errors.js +32 -0
- package/dist/cjs/diagnostic/errors.js.map +6 -0
- package/dist/cjs/diagnostic/index.d.ts +13 -0
- package/dist/cjs/diagnostic/index.d.ts.map +1 -0
- package/dist/cjs/diagnostic/index.js +35 -0
- package/dist/cjs/diagnostic/index.js.map +6 -0
- package/dist/cjs/discovery/BorderRouterEntry.d.ts +54 -0
- package/dist/cjs/discovery/BorderRouterEntry.d.ts.map +1 -0
- package/dist/cjs/discovery/BorderRouterEntry.js +22 -0
- package/dist/cjs/discovery/BorderRouterEntry.js.map +6 -0
- package/dist/cjs/discovery/BorderRouterRegistry.d.ts +36 -0
- package/dist/cjs/discovery/BorderRouterRegistry.d.ts.map +1 -0
- package/dist/cjs/discovery/BorderRouterRegistry.js +522 -0
- package/dist/cjs/discovery/BorderRouterRegistry.js.map +6 -0
- package/dist/cjs/discovery/DnssdLikeTypes.d.ts +50 -0
- package/dist/cjs/discovery/DnssdLikeTypes.d.ts.map +1 -0
- package/dist/cjs/discovery/DnssdLikeTypes.js +22 -0
- package/dist/cjs/discovery/DnssdLikeTypes.js.map +6 -0
- package/dist/cjs/discovery/index.d.ts +8 -0
- package/dist/cjs/discovery/index.d.ts.map +1 -0
- package/dist/cjs/discovery/index.js +30 -0
- package/dist/cjs/discovery/index.js.map +6 -0
- package/dist/cjs/dtls/channel/DtlsChannel.d.ts +39 -0
- package/dist/cjs/dtls/channel/DtlsChannel.d.ts.map +1 -0
- package/dist/cjs/dtls/channel/DtlsChannel.js +32 -0
- package/dist/cjs/dtls/channel/DtlsChannel.js.map +6 -0
- package/dist/cjs/dtls/channel/DtlsConnectOpts.d.ts +38 -0
- package/dist/cjs/dtls/channel/DtlsConnectOpts.d.ts.map +1 -0
- package/dist/cjs/dtls/channel/DtlsConnectOpts.js +22 -0
- package/dist/cjs/dtls/channel/DtlsConnectOpts.js.map +6 -0
- package/dist/cjs/dtls/channel/DtlsRetransmitTimer.d.ts +43 -0
- package/dist/cjs/dtls/channel/DtlsRetransmitTimer.d.ts.map +1 -0
- package/dist/cjs/dtls/channel/DtlsRetransmitTimer.js +97 -0
- package/dist/cjs/dtls/channel/DtlsRetransmitTimer.js.map +6 -0
- package/dist/cjs/dtls/channel/NobleDtlsChannel.d.ts +35 -0
- package/dist/cjs/dtls/channel/NobleDtlsChannel.d.ts.map +1 -0
- package/dist/cjs/dtls/channel/NobleDtlsChannel.js +440 -0
- package/dist/cjs/dtls/channel/NobleDtlsChannel.js.map +6 -0
- package/dist/cjs/dtls/channel/connectDtls.d.ts +15 -0
- package/dist/cjs/dtls/channel/connectDtls.d.ts.map +1 -0
- package/dist/cjs/dtls/channel/connectDtls.js +41 -0
- package/dist/cjs/dtls/channel/connectDtls.js.map +6 -0
- package/dist/cjs/dtls/channel/index.d.ts +14 -0
- package/dist/cjs/dtls/channel/index.d.ts.map +1 -0
- package/dist/cjs/dtls/channel/index.js +32 -0
- package/dist/cjs/dtls/channel/index.js.map +6 -0
- package/dist/cjs/dtls/ecjpake/EcJpakePms.d.ts +35 -0
- package/dist/cjs/dtls/ecjpake/EcJpakePms.d.ts.map +1 -0
- package/dist/cjs/dtls/ecjpake/EcJpakePms.js +61 -0
- package/dist/cjs/dtls/ecjpake/EcJpakePms.js.map +6 -0
- package/dist/cjs/dtls/ecjpake/EcJpakeRound.d.ts +119 -0
- package/dist/cjs/dtls/ecjpake/EcJpakeRound.d.ts.map +1 -0
- package/dist/cjs/dtls/ecjpake/EcJpakeRound.js +248 -0
- package/dist/cjs/dtls/ecjpake/EcJpakeRound.js.map +6 -0
- package/dist/cjs/dtls/ecjpake/SchnorrZkp.d.ts +60 -0
- package/dist/cjs/dtls/ecjpake/SchnorrZkp.d.ts.map +1 -0
- package/dist/cjs/dtls/ecjpake/SchnorrZkp.js +162 -0
- package/dist/cjs/dtls/ecjpake/SchnorrZkp.js.map +6 -0
- package/dist/cjs/dtls/ecjpake/index.d.ts +28 -0
- package/dist/cjs/dtls/ecjpake/index.d.ts.map +1 -0
- package/dist/cjs/dtls/ecjpake/index.js +34 -0
- package/dist/cjs/dtls/ecjpake/index.js.map +6 -0
- package/dist/cjs/dtls/handshake/ChangeCipherSpec.d.ts +23 -0
- package/dist/cjs/dtls/handshake/ChangeCipherSpec.d.ts.map +1 -0
- package/dist/cjs/dtls/handshake/ChangeCipherSpec.js +41 -0
- package/dist/cjs/dtls/handshake/ChangeCipherSpec.js.map +6 -0
- package/dist/cjs/dtls/handshake/ClientHelloMessage.d.ts +34 -0
- package/dist/cjs/dtls/handshake/ClientHelloMessage.d.ts.map +1 -0
- package/dist/cjs/dtls/handshake/ClientHelloMessage.js +117 -0
- package/dist/cjs/dtls/handshake/ClientHelloMessage.js.map +6 -0
- package/dist/cjs/dtls/handshake/ClientKeyExchangeMessage.d.ts +22 -0
- package/dist/cjs/dtls/handshake/ClientKeyExchangeMessage.d.ts.map +1 -0
- package/dist/cjs/dtls/handshake/ClientKeyExchangeMessage.js +35 -0
- package/dist/cjs/dtls/handshake/ClientKeyExchangeMessage.js.map +6 -0
- package/dist/cjs/dtls/handshake/DtlsClient.d.ts +57 -0
- package/dist/cjs/dtls/handshake/DtlsClient.d.ts.map +1 -0
- package/dist/cjs/dtls/handshake/DtlsClient.js +502 -0
- package/dist/cjs/dtls/handshake/DtlsClient.js.map +6 -0
- package/dist/cjs/dtls/handshake/FinishedMessage.d.ts +13 -0
- package/dist/cjs/dtls/handshake/FinishedMessage.d.ts.map +1 -0
- package/dist/cjs/dtls/handshake/FinishedMessage.js +48 -0
- package/dist/cjs/dtls/handshake/FinishedMessage.js.map +6 -0
- package/dist/cjs/dtls/handshake/HandshakeMessage.d.ts +58 -0
- package/dist/cjs/dtls/handshake/HandshakeMessage.d.ts.map +1 -0
- package/dist/cjs/dtls/handshake/HandshakeMessage.js +117 -0
- package/dist/cjs/dtls/handshake/HandshakeMessage.js.map +6 -0
- package/dist/cjs/dtls/handshake/HandshakeType.d.ts +29 -0
- package/dist/cjs/dtls/handshake/HandshakeType.d.ts.map +1 -0
- package/dist/cjs/dtls/handshake/HandshakeType.js +45 -0
- package/dist/cjs/dtls/handshake/HandshakeType.js.map +6 -0
- package/dist/cjs/dtls/handshake/HelloVerifyRequestMessage.d.ts +11 -0
- package/dist/cjs/dtls/handshake/HelloVerifyRequestMessage.d.ts.map +1 -0
- package/dist/cjs/dtls/handshake/HelloVerifyRequestMessage.js +49 -0
- package/dist/cjs/dtls/handshake/HelloVerifyRequestMessage.js.map +6 -0
- package/dist/cjs/dtls/handshake/ServerHelloDoneMessage.d.ts +14 -0
- package/dist/cjs/dtls/handshake/ServerHelloDoneMessage.d.ts.map +1 -0
- package/dist/cjs/dtls/handshake/ServerHelloDoneMessage.js +37 -0
- package/dist/cjs/dtls/handshake/ServerHelloDoneMessage.js.map +6 -0
- package/dist/cjs/dtls/handshake/ServerHelloMessage.d.ts +15 -0
- package/dist/cjs/dtls/handshake/ServerHelloMessage.d.ts.map +1 -0
- package/dist/cjs/dtls/handshake/ServerHelloMessage.js +113 -0
- package/dist/cjs/dtls/handshake/ServerHelloMessage.js.map +6 -0
- package/dist/cjs/dtls/handshake/ServerKeyExchangeMessage.d.ts +24 -0
- package/dist/cjs/dtls/handshake/ServerKeyExchangeMessage.d.ts.map +1 -0
- package/dist/cjs/dtls/handshake/ServerKeyExchangeMessage.js +35 -0
- package/dist/cjs/dtls/handshake/ServerKeyExchangeMessage.js.map +6 -0
- package/dist/cjs/dtls/handshake/index.d.ts +14 -0
- package/dist/cjs/dtls/handshake/index.d.ts.map +1 -0
- package/dist/cjs/dtls/handshake/index.js +30 -0
- package/dist/cjs/dtls/handshake/index.js.map +6 -0
- package/dist/cjs/dtls/prf/HandshakeTranscript.d.ts +36 -0
- package/dist/cjs/dtls/prf/HandshakeTranscript.d.ts.map +1 -0
- package/dist/cjs/dtls/prf/HandshakeTranscript.js +55 -0
- package/dist/cjs/dtls/prf/HandshakeTranscript.js.map +6 -0
- package/dist/cjs/dtls/prf/TlsPrf.d.ts +82 -0
- package/dist/cjs/dtls/prf/TlsPrf.d.ts.map +1 -0
- package/dist/cjs/dtls/prf/TlsPrf.js +121 -0
- package/dist/cjs/dtls/prf/TlsPrf.js.map +6 -0
- package/dist/cjs/dtls/prf/index.d.ts +13 -0
- package/dist/cjs/dtls/prf/index.d.ts.map +1 -0
- package/dist/cjs/dtls/prf/index.js +32 -0
- package/dist/cjs/dtls/prf/index.js.map +6 -0
- package/dist/cjs/dtls/record/AesCcm8.d.ts +32 -0
- package/dist/cjs/dtls/record/AesCcm8.d.ts.map +1 -0
- package/dist/cjs/dtls/record/AesCcm8.js +78 -0
- package/dist/cjs/dtls/record/AesCcm8.js.map +6 -0
- package/dist/cjs/dtls/record/AntiReplayWindow.d.ts +38 -0
- package/dist/cjs/dtls/record/AntiReplayWindow.d.ts.map +1 -0
- package/dist/cjs/dtls/record/AntiReplayWindow.js +84 -0
- package/dist/cjs/dtls/record/AntiReplayWindow.js.map +6 -0
- package/dist/cjs/dtls/record/ContentType.d.ts +19 -0
- package/dist/cjs/dtls/record/ContentType.d.ts.map +1 -0
- package/dist/cjs/dtls/record/ContentType.js +39 -0
- package/dist/cjs/dtls/record/ContentType.js.map +6 -0
- package/dist/cjs/dtls/record/DtlsCipherState.d.ts +79 -0
- package/dist/cjs/dtls/record/DtlsCipherState.d.ts.map +1 -0
- package/dist/cjs/dtls/record/DtlsCipherState.js +173 -0
- package/dist/cjs/dtls/record/DtlsCipherState.js.map +6 -0
- package/dist/cjs/dtls/record/DtlsRecord.d.ts +89 -0
- package/dist/cjs/dtls/record/DtlsRecord.d.ts.map +1 -0
- package/dist/cjs/dtls/record/DtlsRecord.js +195 -0
- package/dist/cjs/dtls/record/DtlsRecord.js.map +6 -0
- package/dist/cjs/dtls/record/index.d.ts +15 -0
- package/dist/cjs/dtls/record/index.d.ts.map +1 -0
- package/dist/cjs/dtls/record/index.js +42 -0
- package/dist/cjs/dtls/record/index.js.map +6 -0
- package/dist/cjs/index.d.ts +32 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +77 -0
- package/dist/cjs/index.js.map +6 -0
- package/dist/cjs/otbr-rest/OtbrRestCapability.d.ts +22 -0
- package/dist/cjs/otbr-rest/OtbrRestCapability.d.ts.map +1 -0
- package/dist/cjs/otbr-rest/OtbrRestCapability.js +22 -0
- package/dist/cjs/otbr-rest/OtbrRestCapability.js.map +6 -0
- package/dist/cjs/otbr-rest/OtbrRestClient.d.ts +257 -0
- package/dist/cjs/otbr-rest/OtbrRestClient.d.ts.map +1 -0
- package/dist/cjs/otbr-rest/OtbrRestClient.js +544 -0
- package/dist/cjs/otbr-rest/OtbrRestClient.js.map +6 -0
- package/dist/cjs/otbr-rest/OtbrRestDiagnosticSource.d.ts +88 -0
- package/dist/cjs/otbr-rest/OtbrRestDiagnosticSource.d.ts.map +1 -0
- package/dist/cjs/otbr-rest/OtbrRestDiagnosticSource.js +156 -0
- package/dist/cjs/otbr-rest/OtbrRestDiagnosticSource.js.map +6 -0
- package/dist/cjs/otbr-rest/OtbrRestError.d.ts +18 -0
- package/dist/cjs/otbr-rest/OtbrRestError.d.ts.map +1 -0
- package/dist/cjs/otbr-rest/OtbrRestError.js +42 -0
- package/dist/cjs/otbr-rest/OtbrRestError.js.map +6 -0
- package/dist/cjs/otbr-rest/OtbrRestProbe.d.ts +17 -0
- package/dist/cjs/otbr-rest/OtbrRestProbe.d.ts.map +1 -0
- package/dist/cjs/otbr-rest/OtbrRestProbe.js +96 -0
- package/dist/cjs/otbr-rest/OtbrRestProbe.js.map +6 -0
- package/dist/cjs/otbr-rest/caseNormalizer.d.ts +12 -0
- package/dist/cjs/otbr-rest/caseNormalizer.d.ts.map +1 -0
- package/dist/cjs/otbr-rest/caseNormalizer.js +59 -0
- package/dist/cjs/otbr-rest/caseNormalizer.js.map +6 -0
- package/dist/cjs/otbr-rest/index.d.ts +15 -0
- package/dist/cjs/otbr-rest/index.d.ts.map +1 -0
- package/dist/cjs/otbr-rest/index.js +40 -0
- package/dist/cjs/otbr-rest/index.js.map +6 -0
- package/dist/cjs/otbr-rest/translation.d.ts +24 -0
- package/dist/cjs/otbr-rest/translation.d.ts.map +1 -0
- package/dist/cjs/otbr-rest/translation.js +301 -0
- package/dist/cjs/otbr-rest/translation.js.map +6 -0
- package/dist/cjs/package.json +6 -0
- package/dist/cjs/selection/index.d.ts +11 -0
- package/dist/cjs/selection/index.d.ts.map +1 -0
- package/dist/cjs/selection/index.js +36 -0
- package/dist/cjs/selection/index.js.map +6 -0
- package/dist/cjs/selection/selectBr.d.ts +37 -0
- package/dist/cjs/selection/selectBr.d.ts.map +1 -0
- package/dist/cjs/selection/selectBr.js +66 -0
- package/dist/cjs/selection/selectBr.js.map +6 -0
- package/dist/cjs/selection/selectSource.d.ts +32 -0
- package/dist/cjs/selection/selectSource.d.ts.map +1 -0
- package/dist/cjs/selection/selectSource.js +43 -0
- package/dist/cjs/selection/selectSource.js.map +6 -0
- package/dist/cjs/selection/withExtPanIdLock.d.ts +23 -0
- package/dist/cjs/selection/withExtPanIdLock.d.ts.map +1 -0
- package/dist/cjs/selection/withExtPanIdLock.js +50 -0
- package/dist/cjs/selection/withExtPanIdLock.js.map +6 -0
- package/dist/cjs/tlv/BasicTlvCodec.d.ts +22 -0
- package/dist/cjs/tlv/BasicTlvCodec.d.ts.map +1 -0
- package/dist/cjs/tlv/BasicTlvCodec.js +97 -0
- package/dist/cjs/tlv/BasicTlvCodec.js.map +6 -0
- package/dist/cjs/tlv/NetworkDiagnosticTlv.d.ts +30 -0
- package/dist/cjs/tlv/NetworkDiagnosticTlv.d.ts.map +1 -0
- package/dist/cjs/tlv/NetworkDiagnosticTlv.js +41 -0
- package/dist/cjs/tlv/NetworkDiagnosticTlv.js.map +6 -0
- package/dist/cjs/tlv/TypeListTlv.d.ts +23 -0
- package/dist/cjs/tlv/TypeListTlv.d.ts.map +1 -0
- package/dist/cjs/tlv/TypeListTlv.js +49 -0
- package/dist/cjs/tlv/TypeListTlv.js.map +6 -0
- package/dist/cjs/tlv/diag/ChildIpv6AddressList.d.ts +22 -0
- package/dist/cjs/tlv/diag/ChildIpv6AddressList.d.ts.map +1 -0
- package/dist/cjs/tlv/diag/ChildIpv6AddressList.js +48 -0
- package/dist/cjs/tlv/diag/ChildIpv6AddressList.js.map +6 -0
- package/dist/cjs/tlv/diag/ChildTable.d.ts +29 -0
- package/dist/cjs/tlv/diag/ChildTable.d.ts.map +1 -0
- package/dist/cjs/tlv/diag/ChildTable.js +91 -0
- package/dist/cjs/tlv/diag/ChildTable.js.map +6 -0
- package/dist/cjs/tlv/diag/Connectivity.d.ts +45 -0
- package/dist/cjs/tlv/diag/Connectivity.d.ts.map +1 -0
- package/dist/cjs/tlv/diag/Connectivity.js +99 -0
- package/dist/cjs/tlv/diag/Connectivity.js.map +6 -0
- package/dist/cjs/tlv/diag/Ipv6AddressList.d.ts +21 -0
- package/dist/cjs/tlv/diag/Ipv6AddressList.d.ts.map +1 -0
- package/dist/cjs/tlv/diag/Ipv6AddressList.js +61 -0
- package/dist/cjs/tlv/diag/Ipv6AddressList.js.map +6 -0
- package/dist/cjs/tlv/diag/LeaderData.d.ts +28 -0
- package/dist/cjs/tlv/diag/LeaderData.d.ts.map +1 -0
- package/dist/cjs/tlv/diag/LeaderData.js +64 -0
- package/dist/cjs/tlv/diag/LeaderData.js.map +6 -0
- package/dist/cjs/tlv/diag/MacCounters.d.ts +28 -0
- package/dist/cjs/tlv/diag/MacCounters.d.ts.map +1 -0
- package/dist/cjs/tlv/diag/MacCounters.js +85 -0
- package/dist/cjs/tlv/diag/MacCounters.js.map +6 -0
- package/dist/cjs/tlv/diag/MleCounters.d.ts +41 -0
- package/dist/cjs/tlv/diag/MleCounters.d.ts.map +1 -0
- package/dist/cjs/tlv/diag/MleCounters.js +118 -0
- package/dist/cjs/tlv/diag/MleCounters.js.map +6 -0
- package/dist/cjs/tlv/diag/Mode.d.ts +26 -0
- package/dist/cjs/tlv/diag/Mode.d.ts.map +1 -0
- package/dist/cjs/tlv/diag/Mode.js +57 -0
- package/dist/cjs/tlv/diag/Mode.js.map +6 -0
- package/dist/cjs/tlv/diag/NetworkData.d.ts +93 -0
- package/dist/cjs/tlv/diag/NetworkData.d.ts.map +1 -0
- package/dist/cjs/tlv/diag/NetworkData.js +157 -0
- package/dist/cjs/tlv/diag/NetworkData.js.map +6 -0
- package/dist/cjs/tlv/diag/Primitives.d.ts +34 -0
- package/dist/cjs/tlv/diag/Primitives.d.ts.map +1 -0
- package/dist/cjs/tlv/diag/Primitives.js +163 -0
- package/dist/cjs/tlv/diag/Primitives.js.map +6 -0
- package/dist/cjs/tlv/diag/Route64.d.ts +42 -0
- package/dist/cjs/tlv/diag/Route64.d.ts.map +1 -0
- package/dist/cjs/tlv/diag/Route64.js +98 -0
- package/dist/cjs/tlv/diag/Route64.js.map +6 -0
- package/dist/cjs/tlv/diag/RouterNeighbor.d.ts +46 -0
- package/dist/cjs/tlv/diag/RouterNeighbor.d.ts.map +1 -0
- package/dist/cjs/tlv/diag/RouterNeighbor.js +65 -0
- package/dist/cjs/tlv/diag/RouterNeighbor.js.map +6 -0
- package/dist/cjs/tlv/diag/Timeout.d.ts +17 -0
- package/dist/cjs/tlv/diag/Timeout.d.ts.map +1 -0
- package/dist/cjs/tlv/diag/Timeout.js +53 -0
- package/dist/cjs/tlv/diag/Timeout.js.map +6 -0
- package/dist/cjs/tlv/diag/VendorInfo.d.ts +35 -0
- package/dist/cjs/tlv/diag/VendorInfo.d.ts.map +1 -0
- package/dist/cjs/tlv/diag/VendorInfo.js +130 -0
- package/dist/cjs/tlv/diag/VendorInfo.js.map +6 -0
- package/dist/cjs/tlv/diag/index.d.ts +26 -0
- package/dist/cjs/tlv/diag/index.d.ts.map +1 -0
- package/dist/cjs/tlv/diag/index.js +67 -0
- package/dist/cjs/tlv/diag/index.js.map +6 -0
- package/dist/cjs/tlv/meshcop/Ip6AddressTlv.d.ts +21 -0
- package/dist/cjs/tlv/meshcop/Ip6AddressTlv.d.ts.map +1 -0
- package/dist/cjs/tlv/meshcop/Ip6AddressTlv.js +48 -0
- package/dist/cjs/tlv/meshcop/Ip6AddressTlv.js.map +6 -0
- package/dist/cjs/tlv/meshcop/UdpEncapsulationTlv.d.ts +27 -0
- package/dist/cjs/tlv/meshcop/UdpEncapsulationTlv.d.ts.map +1 -0
- package/dist/cjs/tlv/meshcop/UdpEncapsulationTlv.js +62 -0
- package/dist/cjs/tlv/meshcop/UdpEncapsulationTlv.js.map +6 -0
- package/dist/cjs/tlv/networkDiagTlvTypes.d.ts +59 -0
- package/dist/cjs/tlv/networkDiagTlvTypes.d.ts.map +1 -0
- package/dist/cjs/tlv/networkDiagTlvTypes.js +76 -0
- package/dist/cjs/tlv/networkDiagTlvTypes.js.map +6 -0
- package/dist/cjs/util/meshLocalAddr.d.ts +27 -0
- package/dist/cjs/util/meshLocalAddr.d.ts.map +1 -0
- package/dist/cjs/util/meshLocalAddr.js +67 -0
- package/dist/cjs/util/meshLocalAddr.js.map +6 -0
- package/dist/esm/coap/CoapClient.d.ts +33 -0
- package/dist/esm/coap/CoapClient.d.ts.map +1 -0
- package/dist/esm/coap/CoapClient.js +270 -0
- package/dist/esm/coap/CoapClient.js.map +6 -0
- package/dist/esm/coap/CoapMessage.d.ts +23 -0
- package/dist/esm/coap/CoapMessage.d.ts.map +1 -0
- package/dist/esm/coap/CoapMessage.js +162 -0
- package/dist/esm/coap/CoapMessage.js.map +6 -0
- package/dist/esm/coap/index.d.ts +8 -0
- package/dist/esm/coap/index.d.ts.map +1 -0
- package/dist/esm/coap/index.js +11 -0
- package/dist/esm/coap/index.js.map +6 -0
- package/dist/esm/commissioner/Commissioner.d.ts +89 -0
- package/dist/esm/commissioner/Commissioner.d.ts.map +1 -0
- package/dist/esm/commissioner/Commissioner.js +168 -0
- package/dist/esm/commissioner/Commissioner.js.map +6 -0
- package/dist/esm/commissioner/LeadKa.d.ts +17 -0
- package/dist/esm/commissioner/LeadKa.d.ts.map +1 -0
- package/dist/esm/commissioner/LeadKa.js +43 -0
- package/dist/esm/commissioner/LeadKa.js.map +6 -0
- package/dist/esm/commissioner/LeadPet.d.ts +14 -0
- package/dist/esm/commissioner/LeadPet.d.ts.map +1 -0
- package/dist/esm/commissioner/LeadPet.js +46 -0
- package/dist/esm/commissioner/LeadPet.js.map +6 -0
- package/dist/esm/commissioner/index.d.ts +12 -0
- package/dist/esm/commissioner/index.d.ts.map +1 -0
- package/dist/esm/commissioner/index.js +23 -0
- package/dist/esm/commissioner/index.js.map +6 -0
- package/dist/esm/credentials/ThreadCredentialsRegistry.d.ts +50 -0
- package/dist/esm/credentials/ThreadCredentialsRegistry.d.ts.map +1 -0
- package/dist/esm/credentials/ThreadCredentialsRegistry.js +99 -0
- package/dist/esm/credentials/ThreadCredentialsRegistry.js.map +6 -0
- package/dist/esm/credentials/ThreadNetworkCredentials.d.ts +26 -0
- package/dist/esm/credentials/ThreadNetworkCredentials.d.ts.map +1 -0
- package/dist/esm/credentials/ThreadNetworkCredentials.js +6 -0
- package/dist/esm/credentials/ThreadNetworkCredentials.js.map +6 -0
- package/dist/esm/credentials/index.d.ts +8 -0
- package/dist/esm/credentials/index.d.ts.map +1 -0
- package/dist/esm/credentials/index.js +10 -0
- package/dist/esm/credentials/index.js.map +6 -0
- package/dist/esm/crypto/AesCmacPrf128.d.ts +24 -0
- package/dist/esm/crypto/AesCmacPrf128.d.ts.map +1 -0
- package/dist/esm/crypto/AesCmacPrf128.js +87 -0
- package/dist/esm/crypto/AesCmacPrf128.js.map +6 -0
- package/dist/esm/crypto/Pbkdf2AesCmac.d.ts +18 -0
- package/dist/esm/crypto/Pbkdf2AesCmac.d.ts.map +1 -0
- package/dist/esm/crypto/Pbkdf2AesCmac.js +42 -0
- package/dist/esm/crypto/Pbkdf2AesCmac.js.map +6 -0
- package/dist/esm/crypto/Pskc.d.ts +21 -0
- package/dist/esm/crypto/Pskc.d.ts.map +1 -0
- package/dist/esm/crypto/Pskc.js +49 -0
- package/dist/esm/crypto/Pskc.js.map +6 -0
- package/dist/esm/crypto/index.d.ts +9 -0
- package/dist/esm/crypto/index.d.ts.map +1 -0
- package/dist/esm/crypto/index.js +15 -0
- package/dist/esm/crypto/index.js.map +6 -0
- package/dist/esm/dataset/OperationalDataset.d.ts +74 -0
- package/dist/esm/dataset/OperationalDataset.d.ts.map +1 -0
- package/dist/esm/dataset/OperationalDataset.js +224 -0
- package/dist/esm/dataset/OperationalDataset.js.map +6 -0
- package/dist/esm/dataset/SecurityPolicy.d.ts +22 -0
- package/dist/esm/dataset/SecurityPolicy.d.ts.map +1 -0
- package/dist/esm/dataset/SecurityPolicy.js +39 -0
- package/dist/esm/dataset/SecurityPolicy.js.map +6 -0
- package/dist/esm/dataset/errors.d.ts +10 -0
- package/dist/esm/dataset/errors.d.ts.map +1 -0
- package/dist/esm/dataset/errors.js +12 -0
- package/dist/esm/dataset/errors.js.map +6 -0
- package/dist/esm/dataset/index.d.ts +9 -0
- package/dist/esm/dataset/index.d.ts.map +1 -0
- package/dist/esm/dataset/index.js +16 -0
- package/dist/esm/dataset/index.js.map +6 -0
- package/dist/esm/dataset/meshcopTlvTypes.d.ts +61 -0
- package/dist/esm/dataset/meshcopTlvTypes.d.ts.map +1 -0
- package/dist/esm/dataset/meshcopTlvTypes.js +62 -0
- package/dist/esm/dataset/meshcopTlvTypes.js.map +6 -0
- package/dist/esm/diagnostic/DefaultTlvSet.d.ts +8 -0
- package/dist/esm/diagnostic/DefaultTlvSet.d.ts.map +1 -0
- package/dist/esm/diagnostic/DefaultTlvSet.js +32 -0
- package/dist/esm/diagnostic/DefaultTlvSet.js.map +6 -0
- package/dist/esm/diagnostic/DiagnosticResponse.d.ts +47 -0
- package/dist/esm/diagnostic/DiagnosticResponse.d.ts.map +1 -0
- package/dist/esm/diagnostic/DiagnosticResponse.js +6 -0
- package/dist/esm/diagnostic/DiagnosticResponse.js.map +6 -0
- package/dist/esm/diagnostic/DiagnosticSource.d.ts +64 -0
- package/dist/esm/diagnostic/DiagnosticSource.d.ts.map +1 -0
- package/dist/esm/diagnostic/DiagnosticSource.js +14 -0
- package/dist/esm/diagnostic/DiagnosticSource.js.map +6 -0
- package/dist/esm/diagnostic/MeshCopDiagnosticSource.d.ts +78 -0
- package/dist/esm/diagnostic/MeshCopDiagnosticSource.d.ts.map +1 -0
- package/dist/esm/diagnostic/MeshCopDiagnosticSource.js +663 -0
- package/dist/esm/diagnostic/MeshCopDiagnosticSource.js.map +6 -0
- package/dist/esm/diagnostic/connectMeshcop.d.ts +38 -0
- package/dist/esm/diagnostic/connectMeshcop.d.ts.map +1 -0
- package/dist/esm/diagnostic/connectMeshcop.js +80 -0
- package/dist/esm/diagnostic/connectMeshcop.js.map +6 -0
- package/dist/esm/diagnostic/errors.d.ts +10 -0
- package/dist/esm/diagnostic/errors.d.ts.map +1 -0
- package/dist/esm/diagnostic/errors.js +12 -0
- package/dist/esm/diagnostic/errors.js.map +6 -0
- package/dist/esm/diagnostic/index.d.ts +13 -0
- package/dist/esm/diagnostic/index.d.ts.map +1 -0
- package/dist/esm/diagnostic/index.js +15 -0
- package/dist/esm/diagnostic/index.js.map +6 -0
- package/dist/esm/discovery/BorderRouterEntry.d.ts +54 -0
- package/dist/esm/discovery/BorderRouterEntry.d.ts.map +1 -0
- package/dist/esm/discovery/BorderRouterEntry.js +6 -0
- package/dist/esm/discovery/BorderRouterEntry.js.map +6 -0
- package/dist/esm/discovery/BorderRouterRegistry.d.ts +36 -0
- package/dist/esm/discovery/BorderRouterRegistry.d.ts.map +1 -0
- package/dist/esm/discovery/BorderRouterRegistry.js +508 -0
- package/dist/esm/discovery/BorderRouterRegistry.js.map +6 -0
- package/dist/esm/discovery/DnssdLikeTypes.d.ts +50 -0
- package/dist/esm/discovery/DnssdLikeTypes.d.ts.map +1 -0
- package/dist/esm/discovery/DnssdLikeTypes.js +6 -0
- package/dist/esm/discovery/DnssdLikeTypes.js.map +6 -0
- package/dist/esm/discovery/index.d.ts +8 -0
- package/dist/esm/discovery/index.d.ts.map +1 -0
- package/dist/esm/discovery/index.js +10 -0
- package/dist/esm/discovery/index.js.map +6 -0
- package/dist/esm/dtls/channel/DtlsChannel.d.ts +39 -0
- package/dist/esm/dtls/channel/DtlsChannel.d.ts.map +1 -0
- package/dist/esm/dtls/channel/DtlsChannel.js +12 -0
- package/dist/esm/dtls/channel/DtlsChannel.js.map +6 -0
- package/dist/esm/dtls/channel/DtlsConnectOpts.d.ts +38 -0
- package/dist/esm/dtls/channel/DtlsConnectOpts.d.ts.map +1 -0
- package/dist/esm/dtls/channel/DtlsConnectOpts.js +6 -0
- package/dist/esm/dtls/channel/DtlsConnectOpts.js.map +6 -0
- package/dist/esm/dtls/channel/DtlsRetransmitTimer.d.ts +43 -0
- package/dist/esm/dtls/channel/DtlsRetransmitTimer.d.ts.map +1 -0
- package/dist/esm/dtls/channel/DtlsRetransmitTimer.js +77 -0
- package/dist/esm/dtls/channel/DtlsRetransmitTimer.js.map +6 -0
- package/dist/esm/dtls/channel/NobleDtlsChannel.d.ts +35 -0
- package/dist/esm/dtls/channel/NobleDtlsChannel.d.ts.map +1 -0
- package/dist/esm/dtls/channel/NobleDtlsChannel.js +432 -0
- package/dist/esm/dtls/channel/NobleDtlsChannel.js.map +6 -0
- package/dist/esm/dtls/channel/connectDtls.d.ts +15 -0
- package/dist/esm/dtls/channel/connectDtls.d.ts.map +1 -0
- package/dist/esm/dtls/channel/connectDtls.js +21 -0
- package/dist/esm/dtls/channel/connectDtls.js.map +6 -0
- package/dist/esm/dtls/channel/index.d.ts +14 -0
- package/dist/esm/dtls/channel/index.d.ts.map +1 -0
- package/dist/esm/dtls/channel/index.js +12 -0
- package/dist/esm/dtls/channel/index.js.map +6 -0
- package/dist/esm/dtls/ecjpake/EcJpakePms.d.ts +35 -0
- package/dist/esm/dtls/ecjpake/EcJpakePms.d.ts.map +1 -0
- package/dist/esm/dtls/ecjpake/EcJpakePms.js +41 -0
- package/dist/esm/dtls/ecjpake/EcJpakePms.js.map +6 -0
- package/dist/esm/dtls/ecjpake/EcJpakeRound.d.ts +119 -0
- package/dist/esm/dtls/ecjpake/EcJpakeRound.d.ts.map +1 -0
- package/dist/esm/dtls/ecjpake/EcJpakeRound.js +228 -0
- package/dist/esm/dtls/ecjpake/EcJpakeRound.js.map +6 -0
- package/dist/esm/dtls/ecjpake/SchnorrZkp.d.ts +60 -0
- package/dist/esm/dtls/ecjpake/SchnorrZkp.d.ts.map +1 -0
- package/dist/esm/dtls/ecjpake/SchnorrZkp.js +142 -0
- package/dist/esm/dtls/ecjpake/SchnorrZkp.js.map +6 -0
- package/dist/esm/dtls/ecjpake/index.d.ts +28 -0
- package/dist/esm/dtls/ecjpake/index.d.ts.map +1 -0
- package/dist/esm/dtls/ecjpake/index.js +14 -0
- package/dist/esm/dtls/ecjpake/index.js.map +6 -0
- package/dist/esm/dtls/handshake/ChangeCipherSpec.d.ts +23 -0
- package/dist/esm/dtls/handshake/ChangeCipherSpec.d.ts.map +1 -0
- package/dist/esm/dtls/handshake/ChangeCipherSpec.js +21 -0
- package/dist/esm/dtls/handshake/ChangeCipherSpec.js.map +6 -0
- package/dist/esm/dtls/handshake/ClientHelloMessage.d.ts +34 -0
- package/dist/esm/dtls/handshake/ClientHelloMessage.d.ts.map +1 -0
- package/dist/esm/dtls/handshake/ClientHelloMessage.js +97 -0
- package/dist/esm/dtls/handshake/ClientHelloMessage.js.map +6 -0
- package/dist/esm/dtls/handshake/ClientKeyExchangeMessage.d.ts +22 -0
- package/dist/esm/dtls/handshake/ClientKeyExchangeMessage.d.ts.map +1 -0
- package/dist/esm/dtls/handshake/ClientKeyExchangeMessage.js +15 -0
- package/dist/esm/dtls/handshake/ClientKeyExchangeMessage.js.map +6 -0
- package/dist/esm/dtls/handshake/DtlsClient.d.ts +57 -0
- package/dist/esm/dtls/handshake/DtlsClient.d.ts.map +1 -0
- package/dist/esm/dtls/handshake/DtlsClient.js +482 -0
- package/dist/esm/dtls/handshake/DtlsClient.js.map +6 -0
- package/dist/esm/dtls/handshake/FinishedMessage.d.ts +13 -0
- package/dist/esm/dtls/handshake/FinishedMessage.d.ts.map +1 -0
- package/dist/esm/dtls/handshake/FinishedMessage.js +28 -0
- package/dist/esm/dtls/handshake/FinishedMessage.js.map +6 -0
- package/dist/esm/dtls/handshake/HandshakeMessage.d.ts +58 -0
- package/dist/esm/dtls/handshake/HandshakeMessage.d.ts.map +1 -0
- package/dist/esm/dtls/handshake/HandshakeMessage.js +97 -0
- package/dist/esm/dtls/handshake/HandshakeMessage.js.map +6 -0
- package/dist/esm/dtls/handshake/HandshakeType.d.ts +29 -0
- package/dist/esm/dtls/handshake/HandshakeType.d.ts.map +1 -0
- package/dist/esm/dtls/handshake/HandshakeType.js +25 -0
- package/dist/esm/dtls/handshake/HandshakeType.js.map +6 -0
- package/dist/esm/dtls/handshake/HelloVerifyRequestMessage.d.ts +11 -0
- package/dist/esm/dtls/handshake/HelloVerifyRequestMessage.d.ts.map +1 -0
- package/dist/esm/dtls/handshake/HelloVerifyRequestMessage.js +29 -0
- package/dist/esm/dtls/handshake/HelloVerifyRequestMessage.js.map +6 -0
- package/dist/esm/dtls/handshake/ServerHelloDoneMessage.d.ts +14 -0
- package/dist/esm/dtls/handshake/ServerHelloDoneMessage.d.ts.map +1 -0
- package/dist/esm/dtls/handshake/ServerHelloDoneMessage.js +17 -0
- package/dist/esm/dtls/handshake/ServerHelloDoneMessage.js.map +6 -0
- package/dist/esm/dtls/handshake/ServerHelloMessage.d.ts +15 -0
- package/dist/esm/dtls/handshake/ServerHelloMessage.d.ts.map +1 -0
- package/dist/esm/dtls/handshake/ServerHelloMessage.js +93 -0
- package/dist/esm/dtls/handshake/ServerHelloMessage.js.map +6 -0
- package/dist/esm/dtls/handshake/ServerKeyExchangeMessage.d.ts +24 -0
- package/dist/esm/dtls/handshake/ServerKeyExchangeMessage.d.ts.map +1 -0
- package/dist/esm/dtls/handshake/ServerKeyExchangeMessage.js +15 -0
- package/dist/esm/dtls/handshake/ServerKeyExchangeMessage.js.map +6 -0
- package/dist/esm/dtls/handshake/index.d.ts +14 -0
- package/dist/esm/dtls/handshake/index.d.ts.map +1 -0
- package/dist/esm/dtls/handshake/index.js +10 -0
- package/dist/esm/dtls/handshake/index.js.map +6 -0
- package/dist/esm/dtls/prf/HandshakeTranscript.d.ts +36 -0
- package/dist/esm/dtls/prf/HandshakeTranscript.d.ts.map +1 -0
- package/dist/esm/dtls/prf/HandshakeTranscript.js +35 -0
- package/dist/esm/dtls/prf/HandshakeTranscript.js.map +6 -0
- package/dist/esm/dtls/prf/TlsPrf.d.ts +82 -0
- package/dist/esm/dtls/prf/TlsPrf.d.ts.map +1 -0
- package/dist/esm/dtls/prf/TlsPrf.js +101 -0
- package/dist/esm/dtls/prf/TlsPrf.js.map +6 -0
- package/dist/esm/dtls/prf/index.d.ts +13 -0
- package/dist/esm/dtls/prf/index.d.ts.map +1 -0
- package/dist/esm/dtls/prf/index.js +12 -0
- package/dist/esm/dtls/prf/index.js.map +6 -0
- package/dist/esm/dtls/record/AesCcm8.d.ts +32 -0
- package/dist/esm/dtls/record/AesCcm8.d.ts.map +1 -0
- package/dist/esm/dtls/record/AesCcm8.js +58 -0
- package/dist/esm/dtls/record/AesCcm8.js.map +6 -0
- package/dist/esm/dtls/record/AntiReplayWindow.d.ts +38 -0
- package/dist/esm/dtls/record/AntiReplayWindow.d.ts.map +1 -0
- package/dist/esm/dtls/record/AntiReplayWindow.js +64 -0
- package/dist/esm/dtls/record/AntiReplayWindow.js.map +6 -0
- package/dist/esm/dtls/record/ContentType.d.ts +19 -0
- package/dist/esm/dtls/record/ContentType.d.ts.map +1 -0
- package/dist/esm/dtls/record/ContentType.js +19 -0
- package/dist/esm/dtls/record/ContentType.js.map +6 -0
- package/dist/esm/dtls/record/DtlsCipherState.d.ts +79 -0
- package/dist/esm/dtls/record/DtlsCipherState.d.ts.map +1 -0
- package/dist/esm/dtls/record/DtlsCipherState.js +153 -0
- package/dist/esm/dtls/record/DtlsCipherState.js.map +6 -0
- package/dist/esm/dtls/record/DtlsRecord.d.ts +89 -0
- package/dist/esm/dtls/record/DtlsRecord.d.ts.map +1 -0
- package/dist/esm/dtls/record/DtlsRecord.js +175 -0
- package/dist/esm/dtls/record/DtlsRecord.js.map +6 -0
- package/dist/esm/dtls/record/index.d.ts +15 -0
- package/dist/esm/dtls/record/index.d.ts.map +1 -0
- package/dist/esm/dtls/record/index.js +29 -0
- package/dist/esm/dtls/record/index.js.map +6 -0
- package/dist/esm/index.d.ts +32 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +74 -0
- package/dist/esm/index.js.map +6 -0
- package/dist/esm/otbr-rest/OtbrRestCapability.d.ts +22 -0
- package/dist/esm/otbr-rest/OtbrRestCapability.d.ts.map +1 -0
- package/dist/esm/otbr-rest/OtbrRestCapability.js +6 -0
- package/dist/esm/otbr-rest/OtbrRestCapability.js.map +6 -0
- package/dist/esm/otbr-rest/OtbrRestClient.d.ts +257 -0
- package/dist/esm/otbr-rest/OtbrRestClient.d.ts.map +1 -0
- package/dist/esm/otbr-rest/OtbrRestClient.js +524 -0
- package/dist/esm/otbr-rest/OtbrRestClient.js.map +6 -0
- package/dist/esm/otbr-rest/OtbrRestDiagnosticSource.d.ts +88 -0
- package/dist/esm/otbr-rest/OtbrRestDiagnosticSource.d.ts.map +1 -0
- package/dist/esm/otbr-rest/OtbrRestDiagnosticSource.js +136 -0
- package/dist/esm/otbr-rest/OtbrRestDiagnosticSource.js.map +6 -0
- package/dist/esm/otbr-rest/OtbrRestError.d.ts +18 -0
- package/dist/esm/otbr-rest/OtbrRestError.d.ts.map +1 -0
- package/dist/esm/otbr-rest/OtbrRestError.js +22 -0
- package/dist/esm/otbr-rest/OtbrRestError.js.map +6 -0
- package/dist/esm/otbr-rest/OtbrRestProbe.d.ts +17 -0
- package/dist/esm/otbr-rest/OtbrRestProbe.d.ts.map +1 -0
- package/dist/esm/otbr-rest/OtbrRestProbe.js +76 -0
- package/dist/esm/otbr-rest/OtbrRestProbe.js.map +6 -0
- package/dist/esm/otbr-rest/caseNormalizer.d.ts +12 -0
- package/dist/esm/otbr-rest/caseNormalizer.d.ts.map +1 -0
- package/dist/esm/otbr-rest/caseNormalizer.js +39 -0
- package/dist/esm/otbr-rest/caseNormalizer.js.map +6 -0
- package/dist/esm/otbr-rest/index.d.ts +15 -0
- package/dist/esm/otbr-rest/index.d.ts.map +1 -0
- package/dist/esm/otbr-rest/index.js +20 -0
- package/dist/esm/otbr-rest/index.js.map +6 -0
- package/dist/esm/otbr-rest/translation.d.ts +24 -0
- package/dist/esm/otbr-rest/translation.d.ts.map +1 -0
- package/dist/esm/otbr-rest/translation.js +281 -0
- package/dist/esm/otbr-rest/translation.js.map +6 -0
- package/dist/esm/package.json +6 -0
- package/dist/esm/selection/index.d.ts +11 -0
- package/dist/esm/selection/index.d.ts.map +1 -0
- package/dist/esm/selection/index.js +16 -0
- package/dist/esm/selection/index.js.map +6 -0
- package/dist/esm/selection/selectBr.d.ts +37 -0
- package/dist/esm/selection/selectBr.d.ts.map +1 -0
- package/dist/esm/selection/selectBr.js +46 -0
- package/dist/esm/selection/selectBr.js.map +6 -0
- package/dist/esm/selection/selectSource.d.ts +32 -0
- package/dist/esm/selection/selectSource.d.ts.map +1 -0
- package/dist/esm/selection/selectSource.js +23 -0
- package/dist/esm/selection/selectSource.js.map +6 -0
- package/dist/esm/selection/withExtPanIdLock.d.ts +23 -0
- package/dist/esm/selection/withExtPanIdLock.d.ts.map +1 -0
- package/dist/esm/selection/withExtPanIdLock.js +30 -0
- package/dist/esm/selection/withExtPanIdLock.js.map +6 -0
- package/dist/esm/tlv/BasicTlvCodec.d.ts +22 -0
- package/dist/esm/tlv/BasicTlvCodec.d.ts.map +1 -0
- package/dist/esm/tlv/BasicTlvCodec.js +77 -0
- package/dist/esm/tlv/BasicTlvCodec.js.map +6 -0
- package/dist/esm/tlv/NetworkDiagnosticTlv.d.ts +30 -0
- package/dist/esm/tlv/NetworkDiagnosticTlv.d.ts.map +1 -0
- package/dist/esm/tlv/NetworkDiagnosticTlv.js +21 -0
- package/dist/esm/tlv/NetworkDiagnosticTlv.js.map +6 -0
- package/dist/esm/tlv/TypeListTlv.d.ts +23 -0
- package/dist/esm/tlv/TypeListTlv.d.ts.map +1 -0
- package/dist/esm/tlv/TypeListTlv.js +29 -0
- package/dist/esm/tlv/TypeListTlv.js.map +6 -0
- package/dist/esm/tlv/diag/ChildIpv6AddressList.d.ts +22 -0
- package/dist/esm/tlv/diag/ChildIpv6AddressList.d.ts.map +1 -0
- package/dist/esm/tlv/diag/ChildIpv6AddressList.js +28 -0
- package/dist/esm/tlv/diag/ChildIpv6AddressList.js.map +6 -0
- package/dist/esm/tlv/diag/ChildTable.d.ts +29 -0
- package/dist/esm/tlv/diag/ChildTable.d.ts.map +1 -0
- package/dist/esm/tlv/diag/ChildTable.js +71 -0
- package/dist/esm/tlv/diag/ChildTable.js.map +6 -0
- package/dist/esm/tlv/diag/Connectivity.d.ts +45 -0
- package/dist/esm/tlv/diag/Connectivity.d.ts.map +1 -0
- package/dist/esm/tlv/diag/Connectivity.js +79 -0
- package/dist/esm/tlv/diag/Connectivity.js.map +6 -0
- package/dist/esm/tlv/diag/Ipv6AddressList.d.ts +21 -0
- package/dist/esm/tlv/diag/Ipv6AddressList.d.ts.map +1 -0
- package/dist/esm/tlv/diag/Ipv6AddressList.js +41 -0
- package/dist/esm/tlv/diag/Ipv6AddressList.js.map +6 -0
- package/dist/esm/tlv/diag/LeaderData.d.ts +28 -0
- package/dist/esm/tlv/diag/LeaderData.d.ts.map +1 -0
- package/dist/esm/tlv/diag/LeaderData.js +44 -0
- package/dist/esm/tlv/diag/LeaderData.js.map +6 -0
- package/dist/esm/tlv/diag/MacCounters.d.ts +28 -0
- package/dist/esm/tlv/diag/MacCounters.d.ts.map +1 -0
- package/dist/esm/tlv/diag/MacCounters.js +65 -0
- package/dist/esm/tlv/diag/MacCounters.js.map +6 -0
- package/dist/esm/tlv/diag/MleCounters.d.ts +41 -0
- package/dist/esm/tlv/diag/MleCounters.d.ts.map +1 -0
- package/dist/esm/tlv/diag/MleCounters.js +98 -0
- package/dist/esm/tlv/diag/MleCounters.js.map +6 -0
- package/dist/esm/tlv/diag/Mode.d.ts +26 -0
- package/dist/esm/tlv/diag/Mode.d.ts.map +1 -0
- package/dist/esm/tlv/diag/Mode.js +37 -0
- package/dist/esm/tlv/diag/Mode.js.map +6 -0
- package/dist/esm/tlv/diag/NetworkData.d.ts +93 -0
- package/dist/esm/tlv/diag/NetworkData.d.ts.map +1 -0
- package/dist/esm/tlv/diag/NetworkData.js +137 -0
- package/dist/esm/tlv/diag/NetworkData.js.map +6 -0
- package/dist/esm/tlv/diag/Primitives.d.ts +34 -0
- package/dist/esm/tlv/diag/Primitives.d.ts.map +1 -0
- package/dist/esm/tlv/diag/Primitives.js +143 -0
- package/dist/esm/tlv/diag/Primitives.js.map +6 -0
- package/dist/esm/tlv/diag/Route64.d.ts +42 -0
- package/dist/esm/tlv/diag/Route64.d.ts.map +1 -0
- package/dist/esm/tlv/diag/Route64.js +78 -0
- package/dist/esm/tlv/diag/Route64.js.map +6 -0
- package/dist/esm/tlv/diag/RouterNeighbor.d.ts +46 -0
- package/dist/esm/tlv/diag/RouterNeighbor.d.ts.map +1 -0
- package/dist/esm/tlv/diag/RouterNeighbor.js +45 -0
- package/dist/esm/tlv/diag/RouterNeighbor.js.map +6 -0
- package/dist/esm/tlv/diag/Timeout.d.ts +17 -0
- package/dist/esm/tlv/diag/Timeout.d.ts.map +1 -0
- package/dist/esm/tlv/diag/Timeout.js +33 -0
- package/dist/esm/tlv/diag/Timeout.js.map +6 -0
- package/dist/esm/tlv/diag/VendorInfo.d.ts +35 -0
- package/dist/esm/tlv/diag/VendorInfo.d.ts.map +1 -0
- package/dist/esm/tlv/diag/VendorInfo.js +110 -0
- package/dist/esm/tlv/diag/VendorInfo.js.map +6 -0
- package/dist/esm/tlv/diag/index.d.ts +26 -0
- package/dist/esm/tlv/diag/index.d.ts.map +1 -0
- package/dist/esm/tlv/diag/index.js +55 -0
- package/dist/esm/tlv/diag/index.js.map +6 -0
- package/dist/esm/tlv/meshcop/Ip6AddressTlv.d.ts +21 -0
- package/dist/esm/tlv/meshcop/Ip6AddressTlv.d.ts.map +1 -0
- package/dist/esm/tlv/meshcop/Ip6AddressTlv.js +28 -0
- package/dist/esm/tlv/meshcop/Ip6AddressTlv.js.map +6 -0
- package/dist/esm/tlv/meshcop/UdpEncapsulationTlv.d.ts +27 -0
- package/dist/esm/tlv/meshcop/UdpEncapsulationTlv.d.ts.map +1 -0
- package/dist/esm/tlv/meshcop/UdpEncapsulationTlv.js +42 -0
- package/dist/esm/tlv/meshcop/UdpEncapsulationTlv.js.map +6 -0
- package/dist/esm/tlv/networkDiagTlvTypes.d.ts +59 -0
- package/dist/esm/tlv/networkDiagTlvTypes.d.ts.map +1 -0
- package/dist/esm/tlv/networkDiagTlvTypes.js +56 -0
- package/dist/esm/tlv/networkDiagTlvTypes.js.map +6 -0
- package/dist/esm/util/meshLocalAddr.d.ts +27 -0
- package/dist/esm/util/meshLocalAddr.d.ts.map +1 -0
- package/dist/esm/util/meshLocalAddr.js +47 -0
- package/dist/esm/util/meshLocalAddr.js.map +6 -0
- package/package.json +73 -0
- package/src/coap/CoapClient.ts +355 -0
- package/src/coap/CoapMessage.ts +190 -0
- package/src/coap/index.ts +8 -0
- package/src/commissioner/Commissioner.ts +205 -0
- package/src/commissioner/LeadKa.ts +48 -0
- package/src/commissioner/LeadPet.ts +53 -0
- package/src/commissioner/index.ts +17 -0
- package/src/credentials/ThreadCredentialsRegistry.ts +117 -0
- package/src/credentials/ThreadNetworkCredentials.ts +26 -0
- package/src/credentials/index.ts +8 -0
- package/src/crypto/AesCmacPrf128.ts +101 -0
- package/src/crypto/Pbkdf2AesCmac.ts +57 -0
- package/src/crypto/Pskc.ts +57 -0
- package/src/crypto/index.ts +9 -0
- package/src/dataset/OperationalDataset.ts +326 -0
- package/src/dataset/SecurityPolicy.ts +48 -0
- package/src/dataset/errors.ts +10 -0
- package/src/dataset/index.ts +9 -0
- package/src/dataset/meshcopTlvTypes.ts +69 -0
- package/src/diagnostic/DefaultTlvSet.ts +31 -0
- package/src/diagnostic/DiagnosticResponse.ts +45 -0
- package/src/diagnostic/DiagnosticSource.ts +66 -0
- package/src/diagnostic/MeshCopDiagnosticSource.ts +808 -0
- package/src/diagnostic/connectMeshcop.ts +122 -0
- package/src/diagnostic/errors.ts +10 -0
- package/src/diagnostic/index.ts +13 -0
- package/src/discovery/BorderRouterEntry.ts +54 -0
- package/src/discovery/BorderRouterRegistry.ts +645 -0
- package/src/discovery/DnssdLikeTypes.ts +51 -0
- package/src/discovery/index.ts +8 -0
- package/src/dtls/channel/DtlsChannel.ts +42 -0
- package/src/dtls/channel/DtlsConnectOpts.ts +50 -0
- package/src/dtls/channel/DtlsRetransmitTimer.ts +107 -0
- package/src/dtls/channel/NobleDtlsChannel.ts +519 -0
- package/src/dtls/channel/connectDtls.ts +26 -0
- package/src/dtls/channel/index.ts +15 -0
- package/src/dtls/ecjpake/EcJpakePms.ts +65 -0
- package/src/dtls/ecjpake/EcJpakeRound.ts +279 -0
- package/src/dtls/ecjpake/SchnorrZkp.ts +193 -0
- package/src/dtls/ecjpake/index.ts +29 -0
- package/src/dtls/handshake/ChangeCipherSpec.ts +32 -0
- package/src/dtls/handshake/ClientHelloMessage.ts +150 -0
- package/src/dtls/handshake/ClientKeyExchangeMessage.ts +25 -0
- package/src/dtls/handshake/DtlsClient.ts +610 -0
- package/src/dtls/handshake/FinishedMessage.ts +36 -0
- package/src/dtls/handshake/HandshakeMessage.ts +144 -0
- package/src/dtls/handshake/HandshakeType.ts +35 -0
- package/src/dtls/handshake/HelloVerifyRequestMessage.ts +47 -0
- package/src/dtls/handshake/ServerHelloDoneMessage.ts +20 -0
- package/src/dtls/handshake/ServerHelloMessage.ts +129 -0
- package/src/dtls/handshake/ServerKeyExchangeMessage.ts +31 -0
- package/src/dtls/handshake/index.ts +15 -0
- package/src/dtls/prf/HandshakeTranscript.ts +52 -0
- package/src/dtls/prf/TlsPrf.ts +173 -0
- package/src/dtls/prf/index.ts +14 -0
- package/src/dtls/record/AesCcm8.ts +83 -0
- package/src/dtls/record/AntiReplayWindow.ts +87 -0
- package/src/dtls/record/ContentType.ts +23 -0
- package/src/dtls/record/DtlsCipherState.ts +202 -0
- package/src/dtls/record/DtlsRecord.ts +249 -0
- package/src/dtls/record/index.ts +26 -0
- package/src/index.ts +93 -0
- package/src/otbr-rest/OtbrRestCapability.ts +22 -0
- package/src/otbr-rest/OtbrRestClient.ts +644 -0
- package/src/otbr-rest/OtbrRestDiagnosticSource.ts +172 -0
- package/src/otbr-rest/OtbrRestError.ts +29 -0
- package/src/otbr-rest/OtbrRestProbe.ts +85 -0
- package/src/otbr-rest/caseNormalizer.ts +49 -0
- package/src/otbr-rest/index.ts +21 -0
- package/src/otbr-rest/translation.ts +344 -0
- package/src/selection/index.ts +11 -0
- package/src/selection/selectBr.ts +77 -0
- package/src/selection/selectSource.ts +51 -0
- package/src/selection/withExtPanIdLock.ts +40 -0
- package/src/tlv/BasicTlvCodec.ts +83 -0
- package/src/tlv/NetworkDiagnosticTlv.ts +37 -0
- package/src/tlv/TypeListTlv.ts +38 -0
- package/src/tlv/diag/ChildIpv6AddressList.ts +41 -0
- package/src/tlv/diag/ChildTable.ts +92 -0
- package/src/tlv/diag/Connectivity.ts +115 -0
- package/src/tlv/diag/Ipv6AddressList.ts +47 -0
- package/src/tlv/diag/LeaderData.ts +59 -0
- package/src/tlv/diag/MacCounters.ts +84 -0
- package/src/tlv/diag/MleCounters.ts +147 -0
- package/src/tlv/diag/Mode.ts +52 -0
- package/src/tlv/diag/NetworkData.ts +241 -0
- package/src/tlv/diag/Primitives.ts +146 -0
- package/src/tlv/diag/Route64.ts +118 -0
- package/src/tlv/diag/RouterNeighbor.ts +85 -0
- package/src/tlv/diag/Timeout.ts +36 -0
- package/src/tlv/diag/VendorInfo.ts +113 -0
- package/src/tlv/diag/index.ts +59 -0
- package/src/tlv/meshcop/Ip6AddressTlv.ts +36 -0
- package/src/tlv/meshcop/UdpEncapsulationTlv.ts +57 -0
- package/src/tlv/networkDiagTlvTypes.ts +69 -0
- package/src/tsconfig.json +21 -0
- package/src/util/meshLocalAddr.ts +63 -0
|
@@ -0,0 +1,344 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2026 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { Bytes } from "@matter/general";
|
|
8
|
+
import type { DiagnosticResponse } from "../diagnostic/DiagnosticResponse.js";
|
|
9
|
+
import type { ChildTableEntry } from "../tlv/diag/ChildTable.js";
|
|
10
|
+
import type { Connectivity, ParentPriority } from "../tlv/diag/Connectivity.js";
|
|
11
|
+
import type { LeaderData } from "../tlv/diag/LeaderData.js";
|
|
12
|
+
import type { MacCounters } from "../tlv/diag/MacCounters.js";
|
|
13
|
+
import type { MleCounters } from "../tlv/diag/MleCounters.js";
|
|
14
|
+
import type { Mode } from "../tlv/diag/Mode.js";
|
|
15
|
+
import { NetworkData } from "../tlv/diag/NetworkData.js";
|
|
16
|
+
import type { Route64, Route64Entry } from "../tlv/diag/Route64.js";
|
|
17
|
+
import { OtbrRestError } from "./OtbrRestError.js";
|
|
18
|
+
|
|
19
|
+
const TIMEOUT_EXP_MIN = 4;
|
|
20
|
+
const IPV6_BYTES = 16;
|
|
21
|
+
const IPV6_GROUPS = 8;
|
|
22
|
+
|
|
23
|
+
function isRecord(value: unknown): value is Record<string, unknown> {
|
|
24
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
function asNumber(value: unknown): number | undefined {
|
|
28
|
+
return typeof value === "number" && Number.isFinite(value) ? value : undefined;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function asString(value: unknown): string | undefined {
|
|
32
|
+
return typeof value === "string" ? value : undefined;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function asRecord(value: unknown): Record<string, unknown> | undefined {
|
|
36
|
+
return isRecord(value) ? value : undefined;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function asArray(value: unknown): unknown[] | undefined {
|
|
40
|
+
return Array.isArray(value) ? value : undefined;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function requireNumber(record: Record<string, unknown>, key: string, where: string): number {
|
|
44
|
+
const v = asNumber(record[key]);
|
|
45
|
+
if (v === undefined) throw new OtbrRestError("rest_protocol", `${where}: missing numeric ${key}`);
|
|
46
|
+
return v;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function parseHexBytes(hex: string, where: string, expectedLen?: number): Uint8Array {
|
|
50
|
+
if (!/^[0-9a-fA-F]*$/.test(hex)) {
|
|
51
|
+
throw new OtbrRestError("rest_protocol", `${where}: not hex`);
|
|
52
|
+
}
|
|
53
|
+
if (hex.length % 2 !== 0) {
|
|
54
|
+
throw new OtbrRestError("rest_protocol", `${where}: odd hex length`);
|
|
55
|
+
}
|
|
56
|
+
if (expectedLen !== undefined && hex.length !== expectedLen * 2) {
|
|
57
|
+
throw new OtbrRestError("rest_protocol", `${where}: expected ${expectedLen} bytes, got ${hex.length / 2}`);
|
|
58
|
+
}
|
|
59
|
+
return Bytes.of(Bytes.fromHex(hex));
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function translateMode(input: Record<string, unknown>): Mode {
|
|
63
|
+
return {
|
|
64
|
+
rxOnWhenIdle: requireNumber(input, "rxOnWhenIdle", "mode") !== 0,
|
|
65
|
+
fullThreadDevice: requireNumber(input, "deviceType", "mode") !== 0,
|
|
66
|
+
fullNetworkData: requireNumber(input, "networkData", "mode") !== 0,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function parentPriorityFromInt(raw: number): ParentPriority {
|
|
71
|
+
if (raw > 0) return 1;
|
|
72
|
+
if (raw < 0) return -1;
|
|
73
|
+
return 0;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function translateConnectivity(input: Record<string, unknown>): Connectivity {
|
|
77
|
+
return {
|
|
78
|
+
parentPriority: parentPriorityFromInt(requireNumber(input, "parentPriority", "connectivity")),
|
|
79
|
+
linkQuality3: requireNumber(input, "linkQuality3", "connectivity"),
|
|
80
|
+
linkQuality2: requireNumber(input, "linkQuality2", "connectivity"),
|
|
81
|
+
linkQuality1: requireNumber(input, "linkQuality1", "connectivity"),
|
|
82
|
+
leaderCost: requireNumber(input, "leaderCost", "connectivity"),
|
|
83
|
+
idSequence: requireNumber(input, "idSequence", "connectivity"),
|
|
84
|
+
activeRouters: requireNumber(input, "activeRouters", "connectivity"),
|
|
85
|
+
sedBufferSize: requireNumber(input, "sedBufferSize", "connectivity"),
|
|
86
|
+
sedDatagramCount: requireNumber(input, "sedDatagramCount", "connectivity"),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function translateRoute(input: Record<string, unknown>): Route64 {
|
|
91
|
+
const idSequence = requireNumber(input, "idSequence", "route");
|
|
92
|
+
const routeData = asArray(input["routeData"]);
|
|
93
|
+
if (routeData === undefined) {
|
|
94
|
+
throw new OtbrRestError("rest_protocol", "route: missing routeData array");
|
|
95
|
+
}
|
|
96
|
+
const entries = new Array<Route64Entry>();
|
|
97
|
+
for (const raw of routeData) {
|
|
98
|
+
const r = asRecord(raw);
|
|
99
|
+
if (r === undefined) {
|
|
100
|
+
throw new OtbrRestError("rest_protocol", "route.routeData: entry is not an object");
|
|
101
|
+
}
|
|
102
|
+
entries.push({
|
|
103
|
+
routerId: requireNumber(r, "routeId", "route.routeData"),
|
|
104
|
+
linkQualityOut: requireNumber(r, "linkQualityOut", "route.routeData"),
|
|
105
|
+
linkQualityIn: requireNumber(r, "linkQualityIn", "route.routeData"),
|
|
106
|
+
routeCost: requireNumber(r, "routeCost", "route.routeData"),
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
return { idSequence, entries };
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
function translateLeaderData(input: Record<string, unknown>): LeaderData {
|
|
113
|
+
return {
|
|
114
|
+
partitionId: requireNumber(input, "partitionId", "leaderData"),
|
|
115
|
+
weighting: requireNumber(input, "weighting", "leaderData"),
|
|
116
|
+
dataVersion: requireNumber(input, "dataVersion", "leaderData"),
|
|
117
|
+
stableDataVersion: requireNumber(input, "stableDataVersion", "leaderData"),
|
|
118
|
+
leaderRouterId: requireNumber(input, "leaderRouterId", "leaderData"),
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
function translateMacCounters(input: Record<string, unknown>): MacCounters {
|
|
123
|
+
return {
|
|
124
|
+
ifInUnknownProtos: requireNumber(input, "ifInUnknownProtos", "macCounters"),
|
|
125
|
+
ifInErrors: requireNumber(input, "ifInErrors", "macCounters"),
|
|
126
|
+
ifOutErrors: requireNumber(input, "ifOutErrors", "macCounters"),
|
|
127
|
+
ifInUcastPkts: requireNumber(input, "ifInUcastPkts", "macCounters"),
|
|
128
|
+
ifInBroadcastPkts: requireNumber(input, "ifInBroadcastPkts", "macCounters"),
|
|
129
|
+
ifInDiscards: requireNumber(input, "ifInDiscards", "macCounters"),
|
|
130
|
+
ifOutUcastPkts: requireNumber(input, "ifOutUcastPkts", "macCounters"),
|
|
131
|
+
ifOutBroadcastPkts: requireNumber(input, "ifOutBroadcastPkts", "macCounters"),
|
|
132
|
+
ifOutDiscards: requireNumber(input, "ifOutDiscards", "macCounters"),
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
function requireBigInt(record: Record<string, unknown>, key: string, where: string): bigint {
|
|
137
|
+
const v = record[key];
|
|
138
|
+
if (typeof v === "bigint") return v;
|
|
139
|
+
const n = asNumber(v);
|
|
140
|
+
if (n === undefined) throw new OtbrRestError("rest_protocol", `${where}: missing numeric ${key}`);
|
|
141
|
+
return BigInt(Math.trunc(n));
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
function translateMleCounters(input: Record<string, unknown>): MleCounters {
|
|
145
|
+
return {
|
|
146
|
+
disabledRole: requireNumber(input, "disabledRole", "mleCounters"),
|
|
147
|
+
detachedRole: requireNumber(input, "detachedRole", "mleCounters"),
|
|
148
|
+
childRole: requireNumber(input, "childRole", "mleCounters"),
|
|
149
|
+
routerRole: requireNumber(input, "routerRole", "mleCounters"),
|
|
150
|
+
leaderRole: requireNumber(input, "leaderRole", "mleCounters"),
|
|
151
|
+
attachAttempts: requireNumber(input, "attachAttempts", "mleCounters"),
|
|
152
|
+
partitionIdChanges: requireNumber(input, "partitionIdChanges", "mleCounters"),
|
|
153
|
+
betterPartitionAttachAttempts: requireNumber(input, "betterPartitionAttachAttempts", "mleCounters"),
|
|
154
|
+
parentChanges: requireNumber(input, "parentChanges", "mleCounters"),
|
|
155
|
+
trackedTime: requireBigInt(input, "trackedTime", "mleCounters"),
|
|
156
|
+
disabledTime: requireBigInt(input, "disabledTime", "mleCounters"),
|
|
157
|
+
detachedTime: requireBigInt(input, "detachedTime", "mleCounters"),
|
|
158
|
+
childTime: requireBigInt(input, "childTime", "mleCounters"),
|
|
159
|
+
routerTime: requireBigInt(input, "routerTime", "mleCounters"),
|
|
160
|
+
leaderTime: requireBigInt(input, "leaderTime", "mleCounters"),
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
function translateChildTable(input: unknown[]): ChildTableEntry[] {
|
|
165
|
+
const out = new Array<ChildTableEntry>();
|
|
166
|
+
for (const raw of input) {
|
|
167
|
+
const r = asRecord(raw);
|
|
168
|
+
if (r === undefined) {
|
|
169
|
+
throw new OtbrRestError("rest_protocol", "childTable: entry is not an object");
|
|
170
|
+
}
|
|
171
|
+
const modeRecord = asRecord(r["mode"]);
|
|
172
|
+
if (modeRecord === undefined) {
|
|
173
|
+
throw new OtbrRestError("rest_protocol", "childTable: entry missing mode");
|
|
174
|
+
}
|
|
175
|
+
const exp = requireNumber(r, "timeout", "childTable.timeout");
|
|
176
|
+
const clampedExp = exp < TIMEOUT_EXP_MIN ? TIMEOUT_EXP_MIN : exp;
|
|
177
|
+
out.push({
|
|
178
|
+
timeoutExponent: exp,
|
|
179
|
+
timeoutSeconds: 1 << (clampedExp - TIMEOUT_EXP_MIN),
|
|
180
|
+
// OTBR /diagnostics omits the wire-form 2-bit incoming-link-quality field
|
|
181
|
+
// for child entries; mirror OpenThread's default of 0.
|
|
182
|
+
incomingLinkQuality: 0,
|
|
183
|
+
childId: requireNumber(r, "childId", "childTable"),
|
|
184
|
+
mode: translateMode(modeRecord),
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
return out;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Parse an IPv6 textual address into 16 bytes. Supports full forms and `::`
|
|
192
|
+
* compression. Does not handle IPv4-mapped (`::ffff:1.2.3.4`) or zone IDs
|
|
193
|
+
* (`%`); OTBR `IP6AddressList` never returns either.
|
|
194
|
+
*/
|
|
195
|
+
function parseIpv6(text: string): Uint8Array {
|
|
196
|
+
if (text.includes("%")) {
|
|
197
|
+
throw new OtbrRestError("rest_protocol", `ipv6: zone ID not supported in ${text}`);
|
|
198
|
+
}
|
|
199
|
+
const doubleColonIdx = text.indexOf("::");
|
|
200
|
+
let leftPart: string;
|
|
201
|
+
let rightPart: string;
|
|
202
|
+
if (doubleColonIdx === -1) {
|
|
203
|
+
leftPart = text;
|
|
204
|
+
rightPart = "";
|
|
205
|
+
} else {
|
|
206
|
+
if (text.indexOf("::", doubleColonIdx + 2) !== -1) {
|
|
207
|
+
throw new OtbrRestError("rest_protocol", `ipv6: multiple "::" in ${text}`);
|
|
208
|
+
}
|
|
209
|
+
leftPart = text.slice(0, doubleColonIdx);
|
|
210
|
+
rightPart = text.slice(doubleColonIdx + 2);
|
|
211
|
+
}
|
|
212
|
+
const leftGroups = leftPart === "" ? [] : leftPart.split(":");
|
|
213
|
+
const rightGroups = rightPart === "" ? [] : rightPart.split(":");
|
|
214
|
+
|
|
215
|
+
if (doubleColonIdx === -1 && leftGroups.length !== IPV6_GROUPS) {
|
|
216
|
+
throw new OtbrRestError("rest_protocol", `ipv6: expected ${IPV6_GROUPS} groups in ${text}`);
|
|
217
|
+
}
|
|
218
|
+
const fillCount = IPV6_GROUPS - leftGroups.length - rightGroups.length;
|
|
219
|
+
if (fillCount < 0 || (doubleColonIdx !== -1 && fillCount === 0)) {
|
|
220
|
+
throw new OtbrRestError("rest_protocol", `ipv6: too many groups in ${text}`);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
const groups = new Array<number>();
|
|
224
|
+
for (const g of leftGroups) groups.push(parseGroup(g, text));
|
|
225
|
+
for (let i = 0; i < fillCount; i++) groups.push(0);
|
|
226
|
+
for (const g of rightGroups) groups.push(parseGroup(g, text));
|
|
227
|
+
|
|
228
|
+
const out = new Uint8Array(IPV6_BYTES);
|
|
229
|
+
for (let i = 0; i < IPV6_GROUPS; i++) {
|
|
230
|
+
out[i * 2] = (groups[i] >>> 8) & 0xff;
|
|
231
|
+
out[i * 2 + 1] = groups[i] & 0xff;
|
|
232
|
+
}
|
|
233
|
+
return out;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
function parseGroup(g: string, text: string): number {
|
|
237
|
+
if (g.length === 0 || g.length > 4 || !/^[0-9a-fA-F]+$/.test(g)) {
|
|
238
|
+
throw new OtbrRestError("rest_protocol", `ipv6: bad group "${g}" in ${text}`);
|
|
239
|
+
}
|
|
240
|
+
return parseInt(g, 16);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Translate a single OTBR `/diagnostics` entry (already key-normalized to
|
|
245
|
+
* camelCase) into a {@link DiagnosticResponse}. Skips fields the entry does
|
|
246
|
+
* not include — REST returns whatever the BR last collected, which differs
|
|
247
|
+
* per node and per OpenThread build.
|
|
248
|
+
*/
|
|
249
|
+
export function translateNodeJson(json: unknown): DiagnosticResponse {
|
|
250
|
+
if (!isRecord(json)) {
|
|
251
|
+
throw new OtbrRestError("rest_protocol", "translateNodeJson: input is not an object");
|
|
252
|
+
}
|
|
253
|
+
const result: DiagnosticResponse = { unknown: new Array<{ type: number; value: Uint8Array }>() };
|
|
254
|
+
|
|
255
|
+
const extAddress = asString(json["extAddress"]);
|
|
256
|
+
if (extAddress !== undefined) {
|
|
257
|
+
result.extMacAddress = parseHexBytes(extAddress, "extAddress", 8);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
const rloc16 = asNumber(json["rloc16"]);
|
|
261
|
+
if (rloc16 !== undefined) result.rloc16 = rloc16;
|
|
262
|
+
|
|
263
|
+
const mode = asRecord(json["mode"]);
|
|
264
|
+
if (mode !== undefined) result.mode = translateMode(mode);
|
|
265
|
+
|
|
266
|
+
const timeout = asNumber(json["timeout"]);
|
|
267
|
+
if (timeout !== undefined) result.timeout = timeout;
|
|
268
|
+
|
|
269
|
+
const connectivity = asRecord(json["connectivity"]);
|
|
270
|
+
if (connectivity !== undefined) result.connectivity = translateConnectivity(connectivity);
|
|
271
|
+
|
|
272
|
+
const route = asRecord(json["route"]);
|
|
273
|
+
if (route !== undefined) result.route64 = translateRoute(route);
|
|
274
|
+
|
|
275
|
+
const leaderData = asRecord(json["leaderData"]);
|
|
276
|
+
if (leaderData !== undefined) result.leaderData = translateLeaderData(leaderData);
|
|
277
|
+
|
|
278
|
+
const networkData = asString(json["networkData"]);
|
|
279
|
+
if (networkData !== undefined) {
|
|
280
|
+
result.networkData = NetworkData.decode(parseHexBytes(networkData, "networkData"));
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
const ip6Addresses = asArray(json["ip6AddressList"]);
|
|
284
|
+
if (ip6Addresses !== undefined) {
|
|
285
|
+
const list = new Array<Uint8Array>();
|
|
286
|
+
for (const entry of ip6Addresses) {
|
|
287
|
+
const text = asString(entry);
|
|
288
|
+
if (text === undefined) {
|
|
289
|
+
throw new OtbrRestError("rest_protocol", "ip6AddressList: entry is not a string");
|
|
290
|
+
}
|
|
291
|
+
list.push(parseIpv6(text));
|
|
292
|
+
}
|
|
293
|
+
result.ipv6Addresses = list;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
const macCounters = asRecord(json["macCounters"]);
|
|
297
|
+
if (macCounters !== undefined) result.macCounters = translateMacCounters(macCounters);
|
|
298
|
+
|
|
299
|
+
const mleCounters = asRecord(json["mleCounters"]);
|
|
300
|
+
if (mleCounters !== undefined) result.mleCounters = translateMleCounters(mleCounters);
|
|
301
|
+
|
|
302
|
+
const childTable = asArray(json["childTable"]);
|
|
303
|
+
if (childTable !== undefined) result.childTable = translateChildTable(childTable);
|
|
304
|
+
|
|
305
|
+
const channelPages = asString(json["channelPages"]);
|
|
306
|
+
if (channelPages !== undefined) {
|
|
307
|
+
const bytes = parseHexBytes(channelPages, "channelPages");
|
|
308
|
+
result.channelPages = Array.from(bytes);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
const maxChildTimeout = asNumber(json["maxChildTimeout"]);
|
|
312
|
+
if (maxChildTimeout !== undefined) result.maxChildTimeout = maxChildTimeout;
|
|
313
|
+
|
|
314
|
+
const eui64 = asString(json["eui64"]);
|
|
315
|
+
if (eui64 !== undefined) result.eui64 = parseHexBytes(eui64, "eui64", 8);
|
|
316
|
+
|
|
317
|
+
const version = asNumber(json["version"]);
|
|
318
|
+
if (version !== undefined) result.version = version;
|
|
319
|
+
|
|
320
|
+
const vendorName = asString(json["vendorName"]);
|
|
321
|
+
if (vendorName !== undefined) result.vendorName = vendorName;
|
|
322
|
+
|
|
323
|
+
const vendorModel = asString(json["vendorModel"]);
|
|
324
|
+
if (vendorModel !== undefined) result.vendorModel = vendorModel;
|
|
325
|
+
|
|
326
|
+
const vendorSwVersion = asString(json["vendorSwVersion"]);
|
|
327
|
+
if (vendorSwVersion !== undefined) result.vendorSwVersion = vendorSwVersion;
|
|
328
|
+
|
|
329
|
+
const threadStackVersion = asString(json["threadStackVersion"]);
|
|
330
|
+
if (threadStackVersion !== undefined) result.threadStackVersion = threadStackVersion;
|
|
331
|
+
|
|
332
|
+
const vendorAppUrl = asString(json["vendorAppUrl"]);
|
|
333
|
+
if (vendorAppUrl !== undefined) result.vendorAppUrl = vendorAppUrl;
|
|
334
|
+
|
|
335
|
+
const batteryLevel = asNumber(json["batteryLevel"]);
|
|
336
|
+
if (batteryLevel !== undefined) result.batteryLevel = batteryLevel;
|
|
337
|
+
|
|
338
|
+
const supplyVoltage = asNumber(json["supplyVoltage"]);
|
|
339
|
+
if (supplyVoltage !== undefined) result.supplyVoltage = supplyVoltage;
|
|
340
|
+
|
|
341
|
+
return result;
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
export const __testables = { parseIpv6 };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2026 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export { decodeStateBitmap, rankBrs, selectBr } from "./selectBr.js";
|
|
8
|
+
export type { DecodedStateBitmap } from "./selectBr.js";
|
|
9
|
+
export { selectSource } from "./selectSource.js";
|
|
10
|
+
export type { SelectSourceOpts } from "./selectSource.js";
|
|
11
|
+
export { ExtPanIdLockManager } from "./withExtPanIdLock.js";
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2026 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { BorderRouterEntry } from "../discovery/BorderRouterEntry.js";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Decoded subset of the MeshCoP `_meshcop` TXT `sb` (state bitmap) field that
|
|
11
|
+
* matters for BR selection. Layout per OpenThread's `border_agent_txt_data.hpp`:
|
|
12
|
+
* bit 7 BBR Active
|
|
13
|
+
* bit 8 BBR Is Primary (only meaningful when BBR Active)
|
|
14
|
+
*/
|
|
15
|
+
export interface DecodedStateBitmap {
|
|
16
|
+
bbrActive: boolean;
|
|
17
|
+
bbrPrimary: boolean;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Decode the BBR-relevant bits from a 4-byte state bitmap hex string.
|
|
22
|
+
*
|
|
23
|
+
* Returns `{ bbrActive: false, bbrPrimary: false }` for missing or malformed
|
|
24
|
+
* input — selection treats absence and "no BBR role" as equivalent.
|
|
25
|
+
*/
|
|
26
|
+
export function decodeStateBitmap(hex: string | undefined): DecodedStateBitmap {
|
|
27
|
+
if (hex === undefined || !/^[0-9a-fA-F]{1,8}$/.test(hex)) {
|
|
28
|
+
return { bbrActive: false, bbrPrimary: false };
|
|
29
|
+
}
|
|
30
|
+
const value = parseInt(hex, 16);
|
|
31
|
+
if (!Number.isFinite(value)) {
|
|
32
|
+
return { bbrActive: false, bbrPrimary: false };
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
bbrActive: ((value >> 7) & 0x1) === 1,
|
|
36
|
+
bbrPrimary: ((value >> 8) & 0x1) === 1,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function hasLinkLocal(addresses: ReadonlyArray<string>): boolean {
|
|
41
|
+
for (const addr of addresses) {
|
|
42
|
+
if (addr.toLowerCase().startsWith("fe80:")) return true;
|
|
43
|
+
}
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
function scoreOf(br: BorderRouterEntry): number {
|
|
48
|
+
const { bbrActive, bbrPrimary } = decodeStateBitmap(br.stateBitmapHex);
|
|
49
|
+
// State tier dominates link-local so an active BBR always outranks an
|
|
50
|
+
// ordinary router: primary BBR (4) > active-but-not-primary BBR (2) > rest (0).
|
|
51
|
+
const stateScore = bbrActive ? (bbrPrimary ? 4 : 2) : 0;
|
|
52
|
+
const llScore = hasLinkLocal(br.addresses) ? 1 : 0;
|
|
53
|
+
return stateScore + llScore;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Pick the best BR per spec FR-12 priority:
|
|
58
|
+
* 1. State bitmap "BBR Active + Primary" (bits 7 and 8) wins.
|
|
59
|
+
* 2. Then BBR Active but not Primary.
|
|
60
|
+
* 3. Among equals: BR with at least one IPv6 link-local (`fe80:`) address wins.
|
|
61
|
+
* 4. Among equals: alphabetical `extAddressHex` ascending (deterministic tie-break).
|
|
62
|
+
*/
|
|
63
|
+
export function selectBr(brs: ReadonlyArray<BorderRouterEntry>): BorderRouterEntry | undefined {
|
|
64
|
+
return rankBrs(brs)[0];
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Rank all candidate BRs best-first using the same priority as {@link selectBr}.
|
|
69
|
+
* Callers fall back to later entries when the preferred BR is unreachable.
|
|
70
|
+
*/
|
|
71
|
+
export function rankBrs(brs: ReadonlyArray<BorderRouterEntry>): BorderRouterEntry[] {
|
|
72
|
+
return [...brs].sort((a, b) => {
|
|
73
|
+
const byScore = scoreOf(b) - scoreOf(a);
|
|
74
|
+
if (byScore !== 0) return byScore;
|
|
75
|
+
return a.extAddressHex < b.extAddressHex ? -1 : a.extAddressHex > b.extAddressHex ? 1 : 0;
|
|
76
|
+
});
|
|
77
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2026 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { Bytes } from "@matter/general";
|
|
8
|
+
import type { ThreadCredentialsRegistry } from "../credentials/ThreadCredentialsRegistry.js";
|
|
9
|
+
import type { ThreadNetworkCredentials } from "../credentials/ThreadNetworkCredentials.js";
|
|
10
|
+
import type { DiagnosticSource } from "../diagnostic/DiagnosticSource.js";
|
|
11
|
+
import type { BorderRouterEntry } from "../discovery/BorderRouterEntry.js";
|
|
12
|
+
import type { OtbrRestCapability } from "../otbr-rest/OtbrRestCapability.js";
|
|
13
|
+
|
|
14
|
+
export interface SelectSourceOpts {
|
|
15
|
+
br: BorderRouterEntry;
|
|
16
|
+
credentials: Pick<ThreadCredentialsRegistry, "getCredentials">;
|
|
17
|
+
/** Keyed by `Bytes.toHex(extPanId)` (lowercase). */
|
|
18
|
+
restCapabilities: ReadonlyMap<string, OtbrRestCapability>;
|
|
19
|
+
otbrRestEnabled: boolean;
|
|
20
|
+
/** Factory for the REST source (caller injects to avoid cyclic deps). */
|
|
21
|
+
makeRestSource: (cap: OtbrRestCapability) => DiagnosticSource;
|
|
22
|
+
/** Factory for the MeshCoP source (caller injects). */
|
|
23
|
+
makeMeshcopSource: (creds: ThreadNetworkCredentials, br: BorderRouterEntry) => DiagnosticSource;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Pick the diagnostic source per spec §4.10 priority:
|
|
28
|
+
* 1. `otbrRestEnabled` AND `restCapabilities` has an entry for this BR's extPanId → REST.
|
|
29
|
+
* 2. Credentials registered for this BR's extPanId → MeshCoP.
|
|
30
|
+
* 3. Neither → undefined (Mode B observation only).
|
|
31
|
+
*
|
|
32
|
+
* Returns undefined when the BR carries no `extendedPanIdHex`, since both lookups
|
|
33
|
+
* key on it.
|
|
34
|
+
*/
|
|
35
|
+
export function selectSource(opts: SelectSourceOpts): DiagnosticSource | undefined {
|
|
36
|
+
const { br, credentials, restCapabilities, otbrRestEnabled, makeRestSource, makeMeshcopSource } = opts;
|
|
37
|
+
if (br.extendedPanIdHex === undefined) return undefined;
|
|
38
|
+
|
|
39
|
+
const extPanId = Bytes.of(Bytes.fromHex(br.extendedPanIdHex));
|
|
40
|
+
const lookupKey = Bytes.toHex(extPanId);
|
|
41
|
+
|
|
42
|
+
if (otbrRestEnabled) {
|
|
43
|
+
const cap = restCapabilities.get(lookupKey);
|
|
44
|
+
if (cap !== undefined) return makeRestSource(cap);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const creds = credentials.getCredentials(extPanId);
|
|
48
|
+
if (creds !== undefined) return makeMeshcopSource(creds, br);
|
|
49
|
+
|
|
50
|
+
return undefined;
|
|
51
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2026 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { Bytes } from "@matter/general";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Per-extPanId FIFO mutex for diagnostic flows.
|
|
11
|
+
*
|
|
12
|
+
* Two callers targeting the same Thread network (same extPanId) run sequentially;
|
|
13
|
+
* callers targeting different networks run concurrently. The MeshCoP commissioner
|
|
14
|
+
* petition is single-session per BR, so serialising same-network access prevents
|
|
15
|
+
* petition collisions when the controller fans out queries.
|
|
16
|
+
*/
|
|
17
|
+
export class ExtPanIdLockManager {
|
|
18
|
+
readonly #queues = new Map<string, Promise<unknown>>();
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Run `fn` with mutual exclusion against any other invocation for the same `extPanId`.
|
|
22
|
+
* Errors thrown by `fn` propagate to the caller but never poison the queue —
|
|
23
|
+
* the next caller for the same key still runs.
|
|
24
|
+
*/
|
|
25
|
+
withLock<T>(extPanId: Uint8Array, fn: () => Promise<T>): Promise<T> {
|
|
26
|
+
const key = Bytes.toHex(extPanId);
|
|
27
|
+
const previous = this.#queues.get(key) ?? Promise.resolve();
|
|
28
|
+
const result = previous.then(() => fn());
|
|
29
|
+
const chained: Promise<unknown> = result
|
|
30
|
+
.catch(() => undefined)
|
|
31
|
+
.finally(() => {
|
|
32
|
+
// Only clear when this promise is still the tail — a later call may have already chained.
|
|
33
|
+
if (this.#queues.get(key) === chained) {
|
|
34
|
+
this.#queues.delete(key);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
this.#queues.set(key, chained);
|
|
38
|
+
return result;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2026 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { InternalError, MatterError } from "@matter/general";
|
|
8
|
+
|
|
9
|
+
/** Low-level MeshCoP/base TLV codec parse failure (truncated stream, bad length, ...). */
|
|
10
|
+
export class ThreadTlvError extends MatterError {}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* MeshCoP TLV stream (Thread spec §8.10) is a sequence of [type:1][length:1][value:length] frames.
|
|
14
|
+
* Length 0xFF escapes to a 2-byte big-endian extended length following the type byte.
|
|
15
|
+
*/
|
|
16
|
+
export interface BasicTlvEntry {
|
|
17
|
+
type: number;
|
|
18
|
+
value: Uint8Array;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export namespace BasicTlv {
|
|
22
|
+
export function walk(blob: Uint8Array): BasicTlvEntry[] {
|
|
23
|
+
const out = new Array<BasicTlvEntry>();
|
|
24
|
+
let offset = 0;
|
|
25
|
+
while (offset < blob.length) {
|
|
26
|
+
if (offset + 2 > blob.length) {
|
|
27
|
+
throw new ThreadTlvError(`Truncated TLV header at offset ${offset}`);
|
|
28
|
+
}
|
|
29
|
+
const type = blob[offset];
|
|
30
|
+
const lenByte = blob[offset + 1];
|
|
31
|
+
let length: number;
|
|
32
|
+
let valueStart: number;
|
|
33
|
+
if (lenByte === 0xff) {
|
|
34
|
+
if (offset + 4 > blob.length) {
|
|
35
|
+
throw new ThreadTlvError(`Truncated extended-length TLV header at offset ${offset}`);
|
|
36
|
+
}
|
|
37
|
+
length = (blob[offset + 2] << 8) | blob[offset + 3];
|
|
38
|
+
valueStart = offset + 4;
|
|
39
|
+
} else {
|
|
40
|
+
length = lenByte;
|
|
41
|
+
valueStart = offset + 2;
|
|
42
|
+
}
|
|
43
|
+
const valueEnd = valueStart + length;
|
|
44
|
+
if (valueEnd > blob.length) {
|
|
45
|
+
throw new ThreadTlvError(`Truncated TLV value at offset ${offset} (type=${type}, length=${length})`);
|
|
46
|
+
}
|
|
47
|
+
out.push({ type, value: blob.slice(valueStart, valueEnd) });
|
|
48
|
+
offset = valueEnd;
|
|
49
|
+
}
|
|
50
|
+
return out;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export function encode(entries: ReadonlyArray<BasicTlvEntry>): Uint8Array {
|
|
54
|
+
let totalLength = 0;
|
|
55
|
+
for (const entry of entries) {
|
|
56
|
+
if (!Number.isInteger(entry.type) || entry.type < 0 || entry.type > 0xff) {
|
|
57
|
+
throw new InternalError(`Invalid TLV type ${entry.type}: must be 0..255`);
|
|
58
|
+
}
|
|
59
|
+
const valueLen = entry.value.length;
|
|
60
|
+
if (valueLen > 0xffff) {
|
|
61
|
+
throw new InternalError(`Invalid TLV length ${valueLen}: must be <= 0xFFFF`);
|
|
62
|
+
}
|
|
63
|
+
totalLength += valueLen + (valueLen >= 0xff ? 4 : 2);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const out = new Uint8Array(totalLength);
|
|
67
|
+
let offset = 0;
|
|
68
|
+
for (const entry of entries) {
|
|
69
|
+
const valueLen = entry.value.length;
|
|
70
|
+
out[offset++] = entry.type;
|
|
71
|
+
if (valueLen >= 0xff) {
|
|
72
|
+
out[offset++] = 0xff;
|
|
73
|
+
out[offset++] = (valueLen >> 8) & 0xff;
|
|
74
|
+
out[offset++] = valueLen & 0xff;
|
|
75
|
+
} else {
|
|
76
|
+
out[offset++] = valueLen;
|
|
77
|
+
}
|
|
78
|
+
out.set(entry.value, offset);
|
|
79
|
+
offset += valueLen;
|
|
80
|
+
}
|
|
81
|
+
return out;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2026 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { BasicTlv, type BasicTlvEntry } from "./BasicTlvCodec.js";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* One Network Diagnostic TLV entry as walked from the response payload.
|
|
11
|
+
*
|
|
12
|
+
* The {@link type} numeric values are listed in {@link NetworkDiagTlvType}.
|
|
13
|
+
* {@link value} holds the raw inner bytes; per-TLV typed decoders in
|
|
14
|
+
* `./diag/` interpret it.
|
|
15
|
+
*/
|
|
16
|
+
export type NetworkDiagnosticEntry = BasicTlvEntry;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Outer Network Diagnostic TLV codec.
|
|
20
|
+
*
|
|
21
|
+
* MGMT_DIAG_GET responses (and `.qry` payloads, on the request side) are a
|
|
22
|
+
* concatenation of TLVs framed by the same basic + extended-length scheme as
|
|
23
|
+
* MeshCoP. This namespace just specializes {@link BasicTlv} for the diagnostic
|
|
24
|
+
* registry so callers get an idiomatic name.
|
|
25
|
+
*
|
|
26
|
+
* Unknown TLV types are preserved as raw {@link NetworkDiagnosticEntry}
|
|
27
|
+
* records; per-TLV typed decoders are layered on top in `./diag/`.
|
|
28
|
+
*/
|
|
29
|
+
export namespace NetworkDiagnosticTlv {
|
|
30
|
+
export function decode(blob: Uint8Array): NetworkDiagnosticEntry[] {
|
|
31
|
+
return BasicTlv.walk(blob);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function encode(entries: ReadonlyArray<NetworkDiagnosticEntry>): Uint8Array {
|
|
35
|
+
return BasicTlv.encode(entries);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2026 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { InternalError } from "@matter/general";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Type List TLV value codec (Network Diagnostic TLV type 18).
|
|
11
|
+
*
|
|
12
|
+
* The "value" of a Type List TLV is just the concatenation of the TLV-type
|
|
13
|
+
* bytes the requester wants — one byte per requested type. The outer TLV(18,
|
|
14
|
+
* ...) framing comes from the regular {@link NetworkDiagnosticTlv.encode}
|
|
15
|
+
* caller, e.g.:
|
|
16
|
+
*
|
|
17
|
+
* NetworkDiagnosticTlv.encode([{ type: NetworkDiagTlvType.TYPE_LIST, value: TypeListTlv.encode([0, 1, 5]) }])
|
|
18
|
+
*
|
|
19
|
+
* Source: OpenThread `network_diagnostic_tlvs.hpp` `TypeListTlv` (a plain
|
|
20
|
+
* `TlvInfo<kTypeList>`) and `network_diagnostic.cpp` request payload handling.
|
|
21
|
+
*/
|
|
22
|
+
export namespace TypeListTlv {
|
|
23
|
+
export function encode(types: ReadonlyArray<number>): Uint8Array {
|
|
24
|
+
const out = new Uint8Array(types.length);
|
|
25
|
+
for (let i = 0; i < types.length; i++) {
|
|
26
|
+
const t = types[i];
|
|
27
|
+
if (!Number.isInteger(t) || t < 0 || t > 0xff) {
|
|
28
|
+
throw new InternalError(`TypeList entry out of range: ${t}`);
|
|
29
|
+
}
|
|
30
|
+
out[i] = t;
|
|
31
|
+
}
|
|
32
|
+
return out;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export function decode(value: Uint8Array): number[] {
|
|
36
|
+
return Array.from(value);
|
|
37
|
+
}
|
|
38
|
+
}
|