1use thiserror::Error;
4use wasm_bindgen::JsValue;
5
6pub type Result<T> = std::result::Result<T, VowlError>;
8
9#[derive(Error, Debug, Clone)]
11pub enum VowlError {
12 #[error("Failed to parse ontology: {0}")]
14 ParseError(String),
15
16 #[error("Invalid ontology data: {0}")]
18 InvalidData(String),
19
20 #[error("Graph error: {0}")]
22 GraphError(String),
23
24 #[error("Layout error: {0}")]
26 LayoutError(String),
27
28 #[error("Rendering error: {0}")]
30 RenderError(String),
31
32 #[error("Binding error: {0}")]
34 BindingError(String),
35
36 #[error("Interaction error: {0}")]
38 InteractionError(String),
39}
40
41impl From<VowlError> for JsValue {
42 fn from(error: VowlError) -> Self {
43 JsValue::from_str(&error.to_string())
44 }
45}
46
47impl From<serde_json::Error> for VowlError {
48 fn from(error: serde_json::Error) -> Self {
49 VowlError::ParseError(error.to_string())
50 }
51}