Skip to main content

vowl_wasm/
error.rs

1//! Error types for WebVOWL WASM
2
3use thiserror::Error;
4use wasm_bindgen::JsValue;
5
6/// Result type alias for WebVOWL operations
7pub type Result<T> = std::result::Result<T, VowlError>;
8
9/// Error types that can occur in WebVOWL operations
10#[derive(Error, Debug, Clone)]
11pub enum VowlError {
12    /// Error parsing OWL ontology
13    #[error("Failed to parse ontology: {0}")]
14    ParseError(String),
15
16    /// Invalid ontology data
17    #[error("Invalid ontology data: {0}")]
18    InvalidData(String),
19
20    /// Graph construction error
21    #[error("Graph error: {0}")]
22    GraphError(String),
23
24    /// Layout computation error
25    #[error("Layout error: {0}")]
26    LayoutError(String),
27
28    /// Rendering error
29    #[error("Rendering error: {0}")]
30    RenderError(String),
31
32    /// WASM binding error
33    #[error("Binding error: {0}")]
34    BindingError(String),
35
36    /// Interaction-related errors (pinning, clicking, etc.)
37    #[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}