libp2p_webtransport_websys/
error.rs1use wasm_bindgen::{JsCast, JsValue};
2
3#[derive(thiserror::Error, Debug)]
6pub enum Error {
7 #[error("Invalid multiaddr: {0}")]
8 InvalidMultiaddr(&'static str),
9
10 #[error("Noise authentication failed")]
11 Noise(#[from] libp2p_noise::Error),
12
13 #[error("JavaScript error: {0}")]
14 #[allow(clippy::enum_variant_names)]
15 JsError(String),
16
17 #[error("JavaScript typecasting failed")]
18 JsCastFailed,
19
20 #[error("Unknown remote peer ID")]
21 UnknownRemotePeerId,
22}
23
24impl Error {
25 pub(crate) fn from_js_value(value: JsValue) -> Self {
26 let s = if value.is_instance_of::<js_sys::Error>() {
27 js_sys::Error::from(value)
28 .to_string()
29 .as_string()
30 .unwrap_or_else(|| "Unknown error".to_string())
31 } else {
32 "Unknown error".to_string()
33 };
34
35 Error::JsError(s)
36 }
37}