@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,644 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022-2026 Matter.js Authors
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { Bytes, type Duration, ImplementationError, Millis, Seconds, Time, Timer } from "@matter/general";
|
|
8
|
+
import { OperationalDataset } from "../dataset/OperationalDataset.js";
|
|
9
|
+
import { normalizeKeys } from "./caseNormalizer.js";
|
|
10
|
+
import { OtbrRestError, type OtbrRestErrorCode } from "./OtbrRestError.js";
|
|
11
|
+
|
|
12
|
+
export interface OtbrLeaderData {
|
|
13
|
+
partitionId: number;
|
|
14
|
+
weighting: number;
|
|
15
|
+
dataVersion: number;
|
|
16
|
+
stableDataVersion: number;
|
|
17
|
+
leaderRouterId: number;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface OtbrNodeInfo {
|
|
21
|
+
baId: Uint8Array;
|
|
22
|
+
state: string;
|
|
23
|
+
numOfRouter: number;
|
|
24
|
+
rlocAddress: string;
|
|
25
|
+
extAddress: Uint8Array;
|
|
26
|
+
networkName: string;
|
|
27
|
+
rloc16: number;
|
|
28
|
+
leaderData: OtbrLeaderData;
|
|
29
|
+
extPanId: Uint8Array;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface OtbrDatasetHex {
|
|
33
|
+
activeHex?: string;
|
|
34
|
+
pendingHex?: string;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* A joiner entry to add to the on-BR commissioner via `POST /node/commissioner/joiner`.
|
|
39
|
+
*
|
|
40
|
+
* `pskd` (the joiner passphrase) is required; provide at most one of `eui64`
|
|
41
|
+
* (EUI-64 hex, or `"*"` for any device) or `discerner` (OpenThread joiner
|
|
42
|
+
* discerner, e.g. `"0x123/12"`).
|
|
43
|
+
*/
|
|
44
|
+
export interface OtbrJoiner {
|
|
45
|
+
pskd: string;
|
|
46
|
+
eui64?: string;
|
|
47
|
+
discerner?: string;
|
|
48
|
+
timeoutSeconds?: number;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export interface OtbrRestClientOptions {
|
|
52
|
+
host: string;
|
|
53
|
+
port?: number;
|
|
54
|
+
timeoutMs?: number;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
const DEFAULT_PORT = 8081;
|
|
58
|
+
const DEFAULT_TIMEOUT = Seconds(5);
|
|
59
|
+
const HTTP_NO_CONTENT = 204;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Map a non-2xx HTTP status onto an {@link OtbrRestErrorCode}, mirroring
|
|
63
|
+
* python-otbr-api's error classification: 404 = endpoint unsupported by this
|
|
64
|
+
* firmware, 405 = operation not allowed, 409 = conflict (e.g. dataset set while
|
|
65
|
+
* Thread is active). Everything else is a generic protocol error.
|
|
66
|
+
*/
|
|
67
|
+
function errorCodeForStatus(status: number): OtbrRestErrorCode {
|
|
68
|
+
switch (status) {
|
|
69
|
+
case 404:
|
|
70
|
+
return "rest_unsupported";
|
|
71
|
+
case 405:
|
|
72
|
+
return "rest_not_allowed";
|
|
73
|
+
case 409:
|
|
74
|
+
return "rest_conflict";
|
|
75
|
+
default:
|
|
76
|
+
return "rest_protocol";
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
interface FetchedJson {
|
|
81
|
+
status: number;
|
|
82
|
+
body: unknown;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
function isRecord(value: unknown): value is Record<string, unknown> {
|
|
86
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
function expectString(record: Record<string, unknown>, key: string, where: string): string {
|
|
90
|
+
const value = record[key];
|
|
91
|
+
if (typeof value !== "string") {
|
|
92
|
+
throw new OtbrRestError("rest_protocol", `${where}: missing or non-string field ${key}`);
|
|
93
|
+
}
|
|
94
|
+
return value;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
function expectNumber(record: Record<string, unknown>, key: string, where: string): number {
|
|
98
|
+
const value = record[key];
|
|
99
|
+
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
100
|
+
throw new OtbrRestError("rest_protocol", `${where}: missing or non-numeric field ${key}`);
|
|
101
|
+
}
|
|
102
|
+
return value;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
function expectRecord(record: Record<string, unknown>, key: string, where: string): Record<string, unknown> {
|
|
106
|
+
const value = record[key];
|
|
107
|
+
if (!isRecord(value)) {
|
|
108
|
+
throw new OtbrRestError("rest_protocol", `${where}: missing or non-object field ${key}`);
|
|
109
|
+
}
|
|
110
|
+
return value;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
function parseHexBytes(hex: string, expectedLen: number, where: string): Uint8Array {
|
|
114
|
+
if (!/^[0-9a-fA-F]*$/.test(hex)) {
|
|
115
|
+
throw new OtbrRestError("rest_protocol", `${where}: not hex`);
|
|
116
|
+
}
|
|
117
|
+
if (hex.length !== expectedLen * 2) {
|
|
118
|
+
throw new OtbrRestError("rest_protocol", `${where}: expected ${expectedLen} bytes, got ${hex.length / 2}`);
|
|
119
|
+
}
|
|
120
|
+
return Bytes.of(Bytes.fromHex(hex));
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/**
|
|
124
|
+
* Thin HTTP client for the OpenThread Border Router (OTBR) REST API.
|
|
125
|
+
*
|
|
126
|
+
* Wraps the OTBR REST endpoints under `/node` and `/diagnostics`. All methods
|
|
127
|
+
* reject with {@link OtbrRestError} on network failure or a response that
|
|
128
|
+
* violates the expected shape. IPv6 host literals are bracket-escaped
|
|
129
|
+
* automatically; bare IPv4 hosts and hostnames are passed through unchanged.
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* ```ts
|
|
133
|
+
* const client = new OtbrRestClient({ host: "fd12::1" });
|
|
134
|
+
* const info = await client.getNode();
|
|
135
|
+
* ```
|
|
136
|
+
*/
|
|
137
|
+
export class OtbrRestClient {
|
|
138
|
+
readonly #baseUrl: string;
|
|
139
|
+
readonly #timeout: Duration;
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* @param opts - Connection parameters; `host` is required.
|
|
143
|
+
*/
|
|
144
|
+
constructor(opts: OtbrRestClientOptions) {
|
|
145
|
+
const port = opts.port ?? DEFAULT_PORT;
|
|
146
|
+
const host = opts.host.includes(":") && !opts.host.startsWith("[") ? `[${opts.host}]` : opts.host;
|
|
147
|
+
this.#baseUrl = `http://${host}:${port}`;
|
|
148
|
+
this.#timeout = opts.timeoutMs !== undefined ? Millis(opts.timeoutMs) : DEFAULT_TIMEOUT;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
get baseUrl(): string {
|
|
152
|
+
return this.#baseUrl;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Fetch the current node summary from the OTBR `/node` endpoint.
|
|
157
|
+
*
|
|
158
|
+
* @returns Parsed node info with typed fields (binary fields as `Uint8Array`).
|
|
159
|
+
* @throws {@link OtbrRestError} with code `"rest_unreachable"` on network error or timeout.
|
|
160
|
+
* @throws {@link OtbrRestError} with code `"rest_protocol"` when the response is
|
|
161
|
+
* not a valid JSON object or a required field is missing or has the wrong type.
|
|
162
|
+
*/
|
|
163
|
+
async getNode(): Promise<OtbrNodeInfo> {
|
|
164
|
+
const { body } = await this.#fetchJson("/node");
|
|
165
|
+
if (!isRecord(body)) {
|
|
166
|
+
throw new OtbrRestError("rest_protocol", "/node did not return a JSON object");
|
|
167
|
+
}
|
|
168
|
+
const where = "/node";
|
|
169
|
+
const leaderRaw = expectRecord(body, "leaderData", where);
|
|
170
|
+
const leaderData: OtbrLeaderData = {
|
|
171
|
+
partitionId: expectNumber(leaderRaw, "partitionId", `${where}.leaderData`),
|
|
172
|
+
weighting: expectNumber(leaderRaw, "weighting", `${where}.leaderData`),
|
|
173
|
+
dataVersion: expectNumber(leaderRaw, "dataVersion", `${where}.leaderData`),
|
|
174
|
+
stableDataVersion: expectNumber(leaderRaw, "stableDataVersion", `${where}.leaderData`),
|
|
175
|
+
leaderRouterId: expectNumber(leaderRaw, "leaderRouterId", `${where}.leaderData`),
|
|
176
|
+
};
|
|
177
|
+
return {
|
|
178
|
+
baId: parseHexBytes(expectString(body, "baId", where), 16, `${where}.baId`),
|
|
179
|
+
state: expectString(body, "state", where),
|
|
180
|
+
numOfRouter: expectNumber(body, "numOfRouter", where),
|
|
181
|
+
rlocAddress: expectString(body, "rlocAddress", where),
|
|
182
|
+
extAddress: parseHexBytes(expectString(body, "extAddress", where), 8, `${where}.extAddress`),
|
|
183
|
+
networkName: expectString(body, "networkName", where),
|
|
184
|
+
rloc16: expectNumber(body, "rloc16", where),
|
|
185
|
+
leaderData,
|
|
186
|
+
extPanId: parseHexBytes(expectString(body, "extPanId", where), 8, `${where}.extPanId`),
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Fetch the raw diagnostics array from the OTBR `/diagnostics` endpoint.
|
|
192
|
+
*
|
|
193
|
+
* The response is returned as-is — callers are responsible for interpreting
|
|
194
|
+
* the per-node objects. Use `OtbrRestDiagnosticSource` for a typed interface
|
|
195
|
+
* that translates this payload into `DiagnosticResponse` values.
|
|
196
|
+
*
|
|
197
|
+
* @returns Array of raw node diagnostic objects as returned by the BR.
|
|
198
|
+
* @throws {@link OtbrRestError} with code `"rest_unreachable"` on network error or timeout.
|
|
199
|
+
* @throws {@link OtbrRestError} with code `"rest_protocol"` when the response is not a JSON array.
|
|
200
|
+
*/
|
|
201
|
+
async getDiagnostics(): Promise<unknown[]> {
|
|
202
|
+
const { body } = await this.#fetchJson("/diagnostics");
|
|
203
|
+
if (!Array.isArray(body)) {
|
|
204
|
+
throw new OtbrRestError("rest_protocol", "/diagnostics did not return a JSON array");
|
|
205
|
+
}
|
|
206
|
+
return body;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
/**
|
|
210
|
+
* Fetch the active and pending dataset hex strings from the OTBR REST API.
|
|
211
|
+
*
|
|
212
|
+
* Each dataset is fetched independently from `/node/dataset/active` and
|
|
213
|
+
* `/node/dataset/pending`. A `204 No Content` response means the dataset is
|
|
214
|
+
* absent, in which case the corresponding field is omitted from the result.
|
|
215
|
+
*
|
|
216
|
+
* @returns Object with `activeHex` and/or `pendingHex` hex strings; fields
|
|
217
|
+
* are absent when the BR has no dataset of that type.
|
|
218
|
+
* @throws {@link OtbrRestError} with code `"rest_unreachable"` on network error or timeout.
|
|
219
|
+
* @throws {@link OtbrRestError} with code `"rest_protocol"` on a non-2xx HTTP status.
|
|
220
|
+
*/
|
|
221
|
+
async getDataset(): Promise<OtbrDatasetHex> {
|
|
222
|
+
const active = await this.#fetchText("/node/dataset/active");
|
|
223
|
+
const pending = await this.#fetchText("/node/dataset/pending");
|
|
224
|
+
const out: OtbrDatasetHex = {};
|
|
225
|
+
if (active !== undefined) out.activeHex = active;
|
|
226
|
+
if (pending !== undefined) out.pendingHex = pending;
|
|
227
|
+
return out;
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/**
|
|
231
|
+
* Fetch the node role from `/node/state` (e.g. `"router"`, `"leader"`, `"child"`, `"disabled"`).
|
|
232
|
+
*
|
|
233
|
+
* @throws {@link OtbrRestError} `"rest_unreachable"` on network error, `"rest_protocol"` on a
|
|
234
|
+
* non-string body.
|
|
235
|
+
*/
|
|
236
|
+
async getState(): Promise<string> {
|
|
237
|
+
return this.#getJsonString("/node/state");
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Fetch the Thread network name from `/node/network-name`.
|
|
242
|
+
*/
|
|
243
|
+
async getNetworkName(): Promise<string> {
|
|
244
|
+
return this.#getJsonString("/node/network-name");
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Fetch the node's Routing Locator (RLOC) IPv6 address from `/node/rloc`.
|
|
249
|
+
*/
|
|
250
|
+
async getRloc(): Promise<string> {
|
|
251
|
+
return this.#getJsonString("/node/rloc");
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
/**
|
|
255
|
+
* Fetch the 16-bit RLOC from `/node/rloc16`.
|
|
256
|
+
*/
|
|
257
|
+
async getRloc16(): Promise<number> {
|
|
258
|
+
return this.#getJsonNumber("/node/rloc16");
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
/**
|
|
262
|
+
* Fetch the number of routers in the Thread network from `/node/num-of-router`.
|
|
263
|
+
*/
|
|
264
|
+
async getNumOfRouter(): Promise<number> {
|
|
265
|
+
return this.#getJsonNumber("/node/num-of-router");
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* Fetch the 8-byte IEEE EUI-64 extended address from `/node/ext-address`.
|
|
270
|
+
*/
|
|
271
|
+
async getExtAddress(): Promise<Uint8Array> {
|
|
272
|
+
return parseHexBytes(await this.#getJsonString("/node/ext-address"), 8, "/node/ext-address");
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
/**
|
|
276
|
+
* Fetch the 8-byte Extended PAN ID from `/node/ext-panid`.
|
|
277
|
+
*/
|
|
278
|
+
async getExtPanId(): Promise<Uint8Array> {
|
|
279
|
+
return parseHexBytes(await this.#getJsonString("/node/ext-panid"), 8, "/node/ext-panid");
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* Fetch the 16-byte Border Agent ID from `/node/ba-id`.
|
|
284
|
+
*
|
|
285
|
+
* @throws {@link OtbrRestError} `"rest_unsupported"` on older firmware that lacks this endpoint (404).
|
|
286
|
+
*/
|
|
287
|
+
async getBorderAgentId(): Promise<Uint8Array> {
|
|
288
|
+
return parseHexBytes(await this.#getJsonString("/node/ba-id"), 16, "/node/ba-id");
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* Fetch the leader data record from `/node/leader-data`.
|
|
293
|
+
*/
|
|
294
|
+
async getLeaderData(): Promise<OtbrLeaderData> {
|
|
295
|
+
const { body } = await this.#fetchJson("/node/leader-data");
|
|
296
|
+
if (!isRecord(body)) {
|
|
297
|
+
throw new OtbrRestError("rest_protocol", "/node/leader-data did not return a JSON object");
|
|
298
|
+
}
|
|
299
|
+
const where = "/node/leader-data";
|
|
300
|
+
return {
|
|
301
|
+
partitionId: expectNumber(body, "partitionId", where),
|
|
302
|
+
weighting: expectNumber(body, "weighting", where),
|
|
303
|
+
dataVersion: expectNumber(body, "dataVersion", where),
|
|
304
|
+
stableDataVersion: expectNumber(body, "stableDataVersion", where),
|
|
305
|
+
leaderRouterId: expectNumber(body, "leaderRouterId", where),
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* Fetch and decode the active Operational Dataset from `/node/dataset/active`.
|
|
311
|
+
*
|
|
312
|
+
* @returns The decoded dataset, or `undefined` when the BR has no active dataset (204).
|
|
313
|
+
*/
|
|
314
|
+
async getActiveDataset(): Promise<OperationalDataset | undefined> {
|
|
315
|
+
return this.#getDataset("/node/dataset/active");
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
/**
|
|
319
|
+
* Fetch and decode the pending Operational Dataset from `/node/dataset/pending`.
|
|
320
|
+
*
|
|
321
|
+
* @returns The decoded dataset, or `undefined` when the BR has no pending dataset (204).
|
|
322
|
+
*/
|
|
323
|
+
async getPendingDataset(): Promise<OperationalDataset | undefined> {
|
|
324
|
+
return this.#getDataset("/node/dataset/pending");
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
/**
|
|
328
|
+
* Fetch the RCP/co-processor version string from `/node/coprocessor/version`.
|
|
329
|
+
*
|
|
330
|
+
* @throws {@link OtbrRestError} `"rest_unsupported"` on older firmware that lacks this endpoint (404).
|
|
331
|
+
*/
|
|
332
|
+
async getCoprocessorVersion(): Promise<string> {
|
|
333
|
+
return this.#getJsonString("/node/coprocessor/version");
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
/**
|
|
337
|
+
* Fetch the on-BR commissioner state from `/node/commissioner/state`.
|
|
338
|
+
*
|
|
339
|
+
* @throws {@link OtbrRestError} `"rest_unsupported"` on firmware without a built-in commissioner (404).
|
|
340
|
+
*/
|
|
341
|
+
async getCommissionerState(): Promise<string> {
|
|
342
|
+
return this.#getJsonString("/node/commissioner/state");
|
|
343
|
+
}
|
|
344
|
+
|
|
345
|
+
/**
|
|
346
|
+
* Fetch the list of pending joiners from `/node/commissioner/joiner`.
|
|
347
|
+
*
|
|
348
|
+
* The entries are returned as-is (keys normalized to camelCase); callers
|
|
349
|
+
* interpret the per-joiner objects.
|
|
350
|
+
*
|
|
351
|
+
* @throws {@link OtbrRestError} `"rest_unsupported"` on firmware without a built-in commissioner (404).
|
|
352
|
+
*/
|
|
353
|
+
async getJoiners(): Promise<unknown[]> {
|
|
354
|
+
const { body } = await this.#fetchJson("/node/commissioner/joiner");
|
|
355
|
+
if (!Array.isArray(body)) {
|
|
356
|
+
throw new OtbrRestError("rest_protocol", "/node/commissioner/joiner did not return a JSON array");
|
|
357
|
+
}
|
|
358
|
+
return body;
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
/**
|
|
362
|
+
* Enable or disable the Thread interface via `PUT /node/state`.
|
|
363
|
+
*
|
|
364
|
+
* @throws {@link OtbrRestError} `"rest_conflict"` when the BR rejects the transition (409).
|
|
365
|
+
*/
|
|
366
|
+
async setState(enable: boolean): Promise<void> {
|
|
367
|
+
await this.#mutate("PUT", "/node/state", {
|
|
368
|
+
contentType: "application/json",
|
|
369
|
+
body: JSON.stringify(enable ? "enable" : "disable"),
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
/**
|
|
374
|
+
* Set the active Operational Dataset via `PUT /node/dataset/active`.
|
|
375
|
+
*
|
|
376
|
+
* @param dataset - An {@link OperationalDataset} (encoded to TLV hex) or a raw TLV hex string.
|
|
377
|
+
* @throws {@link OtbrRestError} `"rest_conflict"` when Thread is active and the active
|
|
378
|
+
* dataset cannot be replaced in place (409) — use {@link setPendingDataset} instead.
|
|
379
|
+
*/
|
|
380
|
+
async setActiveDataset(dataset: OperationalDataset | string): Promise<void> {
|
|
381
|
+
await this.#putDataset("/node/dataset/active", dataset);
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
/**
|
|
385
|
+
* Clear the active Operational Dataset via `DELETE /node/dataset/active`.
|
|
386
|
+
*/
|
|
387
|
+
async deleteActiveDataset(): Promise<void> {
|
|
388
|
+
await this.#mutate("DELETE", "/node/dataset/active");
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
/**
|
|
392
|
+
* Set the pending Operational Dataset via `PUT /node/dataset/pending`.
|
|
393
|
+
*
|
|
394
|
+
* @param dataset - An {@link OperationalDataset} (encoded to TLV hex) or a raw TLV hex string.
|
|
395
|
+
*/
|
|
396
|
+
async setPendingDataset(dataset: OperationalDataset | string): Promise<void> {
|
|
397
|
+
await this.#putDataset("/node/dataset/pending", dataset);
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
/**
|
|
401
|
+
* Clear the pending Operational Dataset via `DELETE /node/dataset/pending`.
|
|
402
|
+
*/
|
|
403
|
+
async deletePendingDataset(): Promise<void> {
|
|
404
|
+
await this.#mutate("DELETE", "/node/dataset/pending");
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
/**
|
|
408
|
+
* Factory-reset the Thread node via `DELETE /node`.
|
|
409
|
+
*
|
|
410
|
+
* @throws {@link OtbrRestError} `"rest_not_allowed"` when the firmware disallows factory reset (405);
|
|
411
|
+
* `"rest_conflict"` when the interface is in a state that forbids it (409).
|
|
412
|
+
*/
|
|
413
|
+
async factoryReset(): Promise<void> {
|
|
414
|
+
await this.#mutate("DELETE", "/node");
|
|
415
|
+
}
|
|
416
|
+
|
|
417
|
+
/**
|
|
418
|
+
* Enable or disable the on-BR commissioner via `PUT /node/commissioner/state`.
|
|
419
|
+
*
|
|
420
|
+
* @throws {@link OtbrRestError} `"rest_conflict"` when the BR is not active (409);
|
|
421
|
+
* `"rest_unsupported"` on firmware without a built-in commissioner (404).
|
|
422
|
+
*/
|
|
423
|
+
async setCommissionerState(enable: boolean): Promise<void> {
|
|
424
|
+
await this.#mutate("PUT", "/node/commissioner/state", {
|
|
425
|
+
contentType: "application/json",
|
|
426
|
+
body: JSON.stringify(enable ? "enable" : "disable"),
|
|
427
|
+
});
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
/**
|
|
431
|
+
* Add a joiner to the on-BR commissioner via `POST /node/commissioner/joiner`.
|
|
432
|
+
*
|
|
433
|
+
* Provide at most one of `eui64` or `discerner`; omit both to match any device.
|
|
434
|
+
*
|
|
435
|
+
* @throws {@link ImplementationError} when both `eui64` and `discerner` are provided.
|
|
436
|
+
* @throws {@link OtbrRestError} `"rest_conflict"` when the commissioner is not active (409).
|
|
437
|
+
*/
|
|
438
|
+
async addJoiner(joiner: OtbrJoiner): Promise<void> {
|
|
439
|
+
if (joiner.eui64 !== undefined && joiner.discerner !== undefined) {
|
|
440
|
+
throw new ImplementationError("addJoiner: provide at most one of eui64 or discerner");
|
|
441
|
+
}
|
|
442
|
+
const payload: Record<string, unknown> = { pskd: joiner.pskd };
|
|
443
|
+
if (joiner.eui64 !== undefined) payload.eui64 = joiner.eui64;
|
|
444
|
+
if (joiner.discerner !== undefined) payload.discerner = joiner.discerner;
|
|
445
|
+
if (joiner.timeoutSeconds !== undefined) payload.timeout = joiner.timeoutSeconds;
|
|
446
|
+
await this.#mutate("POST", "/node/commissioner/joiner", {
|
|
447
|
+
contentType: "application/json",
|
|
448
|
+
body: JSON.stringify(payload),
|
|
449
|
+
});
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
/**
|
|
453
|
+
* Remove a joiner from the on-BR commissioner via `DELETE /node/commissioner/joiner`.
|
|
454
|
+
*
|
|
455
|
+
* @param joinerId - EUI-64 hex, a discerner (`"0x…/len"`), or `"*"` to remove all joiners.
|
|
456
|
+
* @throws {@link OtbrRestError} `"rest_conflict"` when the commissioner is not active (409).
|
|
457
|
+
*/
|
|
458
|
+
async removeJoiner(joinerId: string): Promise<void> {
|
|
459
|
+
await this.#mutate("DELETE", "/node/commissioner/joiner", {
|
|
460
|
+
contentType: "application/json",
|
|
461
|
+
body: JSON.stringify(joinerId),
|
|
462
|
+
});
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
async #getDataset(path: string): Promise<OperationalDataset | undefined> {
|
|
466
|
+
const hex = await this.#fetchText(path);
|
|
467
|
+
if (hex === undefined || hex.length === 0) return undefined;
|
|
468
|
+
try {
|
|
469
|
+
return OperationalDataset.decode(hex);
|
|
470
|
+
} catch (err) {
|
|
471
|
+
throw new OtbrRestError("rest_protocol", `GET ${path} returned an undecodable dataset`, {
|
|
472
|
+
cause: err instanceof Error ? err : undefined,
|
|
473
|
+
});
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
async #putDataset(path: string, dataset: OperationalDataset | string): Promise<void> {
|
|
478
|
+
const hex = typeof dataset === "string" ? dataset : Bytes.toHex(OperationalDataset.encode(dataset));
|
|
479
|
+
await this.#mutate("PUT", path, { contentType: "text/plain", body: hex });
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
async #getJsonString(path: string): Promise<string> {
|
|
483
|
+
const { body } = await this.#fetchJson(path);
|
|
484
|
+
if (typeof body !== "string") {
|
|
485
|
+
throw new OtbrRestError("rest_protocol", `GET ${path} did not return a string`);
|
|
486
|
+
}
|
|
487
|
+
return body;
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
async #getJsonNumber(path: string): Promise<number> {
|
|
491
|
+
const { body } = await this.#fetchJson(path);
|
|
492
|
+
if (typeof body !== "number" || !Number.isFinite(body)) {
|
|
493
|
+
throw new OtbrRestError("rest_protocol", `GET ${path} did not return a number`);
|
|
494
|
+
}
|
|
495
|
+
return body;
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
/**
|
|
499
|
+
* POST an action body to the OTBR `/api/actions` endpoint.
|
|
500
|
+
*
|
|
501
|
+
* Only available on camelCase (post-2024) OTBR builds — callers must guard
|
|
502
|
+
* on `OtbrRestCapability.keyFormat === "camel"` before calling this method.
|
|
503
|
+
*
|
|
504
|
+
* @param body - The action payload (e.g. `{ action: "resetNetworkDiagCounterTask" }`).
|
|
505
|
+
* @throws {@link OtbrRestError} with code `"rest_unreachable"` on network error.
|
|
506
|
+
* @throws {@link OtbrRestError} with code `"rest_protocol"` on a non-2xx response.
|
|
507
|
+
*/
|
|
508
|
+
async resetDiagnosticCounters(body: Record<string, unknown>): Promise<void> {
|
|
509
|
+
await this.#postActions(body);
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
/**
|
|
513
|
+
* POST a `getEnergyScanTask` action to the OTBR `/api/actions` endpoint.
|
|
514
|
+
*
|
|
515
|
+
* Only available on camelCase (post-2024) OTBR builds — callers must guard
|
|
516
|
+
* on `OtbrRestCapability.keyFormat === "camel"` before calling this method.
|
|
517
|
+
*
|
|
518
|
+
* @param body - The action payload (e.g. `{ action: "getEnergyScanTask" }`).
|
|
519
|
+
* @throws {@link OtbrRestError} with code `"rest_unreachable"` on network error.
|
|
520
|
+
* @throws {@link OtbrRestError} with code `"rest_protocol"` on a non-2xx response.
|
|
521
|
+
*/
|
|
522
|
+
async getEnergyScanTask(body: Record<string, unknown>): Promise<void> {
|
|
523
|
+
await this.#postActions(body);
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
async #postActions(body: Record<string, unknown>): Promise<void> {
|
|
527
|
+
const url = `${this.#baseUrl}/api/actions`;
|
|
528
|
+
const controller = new AbortController();
|
|
529
|
+
const timer: Timer = Time.getTimer("otbr-post-actions-timeout", this.#timeout, () =>
|
|
530
|
+
controller.abort(),
|
|
531
|
+
).start();
|
|
532
|
+
let response: Response;
|
|
533
|
+
try {
|
|
534
|
+
response = await fetch(url, {
|
|
535
|
+
method: "POST",
|
|
536
|
+
headers: { "Content-Type": "application/json" },
|
|
537
|
+
body: JSON.stringify(body),
|
|
538
|
+
signal: controller.signal,
|
|
539
|
+
});
|
|
540
|
+
} catch (err) {
|
|
541
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
542
|
+
throw new OtbrRestError("rest_unreachable", `POST /api/actions failed: ${message}`, {
|
|
543
|
+
cause: err instanceof Error ? err : undefined,
|
|
544
|
+
});
|
|
545
|
+
} finally {
|
|
546
|
+
timer.stop();
|
|
547
|
+
}
|
|
548
|
+
if (!response.ok) {
|
|
549
|
+
throw new OtbrRestError("rest_protocol", `POST /api/actions returned ${response.status}`, {
|
|
550
|
+
httpStatus: response.status,
|
|
551
|
+
});
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
async #fetchJson(path: string): Promise<FetchedJson> {
|
|
556
|
+
const response = await this.#doFetch(path, "application/json");
|
|
557
|
+
if (response.status === HTTP_NO_CONTENT) {
|
|
558
|
+
return { status: response.status, body: null };
|
|
559
|
+
}
|
|
560
|
+
if (!response.ok) {
|
|
561
|
+
throw new OtbrRestError(errorCodeForStatus(response.status), `GET ${path} returned ${response.status}`, {
|
|
562
|
+
httpStatus: response.status,
|
|
563
|
+
});
|
|
564
|
+
}
|
|
565
|
+
let parsed: unknown;
|
|
566
|
+
try {
|
|
567
|
+
parsed = JSON.parse(response.text);
|
|
568
|
+
} catch (err) {
|
|
569
|
+
throw new OtbrRestError("rest_protocol", `GET ${path} returned non-JSON body`, {
|
|
570
|
+
cause: err instanceof Error ? err : undefined,
|
|
571
|
+
});
|
|
572
|
+
}
|
|
573
|
+
return { status: response.status, body: normalizeKeys(parsed) };
|
|
574
|
+
}
|
|
575
|
+
|
|
576
|
+
async #fetchText(path: string): Promise<string | undefined> {
|
|
577
|
+
const response = await this.#doFetch(path, "text/plain");
|
|
578
|
+
if (response.status === HTTP_NO_CONTENT) return undefined;
|
|
579
|
+
if (!response.ok) {
|
|
580
|
+
throw new OtbrRestError(errorCodeForStatus(response.status), `GET ${path} returned ${response.status}`, {
|
|
581
|
+
httpStatus: response.status,
|
|
582
|
+
});
|
|
583
|
+
}
|
|
584
|
+
return response.text;
|
|
585
|
+
}
|
|
586
|
+
|
|
587
|
+
async #doFetch(path: string, accept: string): Promise<{ status: number; ok: boolean; text: string }> {
|
|
588
|
+
const url = `${this.#baseUrl}${path}`;
|
|
589
|
+
const controller = new AbortController();
|
|
590
|
+
const timer: Timer = Time.getTimer("otbr-fetch-timeout", this.#timeout, () => controller.abort()).start();
|
|
591
|
+
try {
|
|
592
|
+
const response = await fetch(url, {
|
|
593
|
+
method: "GET",
|
|
594
|
+
headers: { Accept: accept },
|
|
595
|
+
signal: controller.signal,
|
|
596
|
+
});
|
|
597
|
+
// Read the body inside the timer's scope so the timeout covers a BR that
|
|
598
|
+
// sends headers then stalls the body (RFC-silent, seen on flaky OTBR).
|
|
599
|
+
const text = await response.text();
|
|
600
|
+
return { status: response.status, ok: response.ok, text };
|
|
601
|
+
} catch (err) {
|
|
602
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
603
|
+
throw new OtbrRestError("rest_unreachable", `GET ${path} failed: ${message}`, {
|
|
604
|
+
cause: err instanceof Error ? err : undefined,
|
|
605
|
+
});
|
|
606
|
+
} finally {
|
|
607
|
+
timer.stop();
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
async #mutate(
|
|
612
|
+
method: "PUT" | "POST" | "DELETE",
|
|
613
|
+
path: string,
|
|
614
|
+
opts?: { contentType?: string; body?: string },
|
|
615
|
+
): Promise<void> {
|
|
616
|
+
const url = `${this.#baseUrl}${path}`;
|
|
617
|
+
const controller = new AbortController();
|
|
618
|
+
const timer: Timer = Time.getTimer("otbr-mutate-timeout", this.#timeout, () => controller.abort()).start();
|
|
619
|
+
const headers: Record<string, string> = {};
|
|
620
|
+
if (opts?.contentType !== undefined) headers["Content-Type"] = opts.contentType;
|
|
621
|
+
let status: number;
|
|
622
|
+
let ok: boolean;
|
|
623
|
+
try {
|
|
624
|
+
const response = await fetch(url, { method, headers, body: opts?.body, signal: controller.signal });
|
|
625
|
+
// Drain the body inside the timer scope so the timeout covers a BR that
|
|
626
|
+
// sends headers then stalls the body (mirrors #doFetch).
|
|
627
|
+
await response.text();
|
|
628
|
+
status = response.status;
|
|
629
|
+
ok = response.ok;
|
|
630
|
+
} catch (err) {
|
|
631
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
632
|
+
throw new OtbrRestError("rest_unreachable", `${method} ${path} failed: ${message}`, {
|
|
633
|
+
cause: err instanceof Error ? err : undefined,
|
|
634
|
+
});
|
|
635
|
+
} finally {
|
|
636
|
+
timer.stop();
|
|
637
|
+
}
|
|
638
|
+
if (!ok) {
|
|
639
|
+
throw new OtbrRestError(errorCodeForStatus(status), `${method} ${path} returned ${status}`, {
|
|
640
|
+
httpStatus: status,
|
|
641
|
+
});
|
|
642
|
+
}
|
|
643
|
+
}
|
|
644
|
+
}
|