1use thiserror::Error;
2
3#[cfg(feature = "wasm")]
4use wasm_bindgen::prelude::*;
5
6#[derive(Error, Debug)]
11pub enum ColbertError {
12 #[error("Candle Error: {0}")]
14 Candle(#[from] candle_core::Error),
15
16 #[error("Tokenizer Error: {0}")]
18 Tokenizer(String),
19
20 #[error("JSON Parsing Error: {0}")]
22 Json(#[from] serde_json::Error),
23
24 #[cfg(feature = "wasm")]
26 #[error("WASM Bindgen Deserialization Error: {0}")]
27 SerdeWasm(#[from] serde_wasm_bindgen::Error),
28
29 #[error("Operation Error: {0}")]
31 Operation(String),
32
33 #[cfg(not(all(target_arch = "wasm32", target_os = "unknown")))]
35 #[error("Hugging Face Hub Error: {0}")]
36 Hub(#[from] hf_hub::api::sync::ApiError),
37
38 #[cfg(not(all(target_arch = "wasm32", target_os = "unknown")))]
40 #[error("I/O Error: {0}")]
41 Io(#[from] std::io::Error),
42}
43
44impl From<Box<dyn std::error::Error + Send + Sync>> for ColbertError {
45 fn from(err: Box<dyn std::error::Error + Send + Sync>) -> Self {
46 ColbertError::Tokenizer(err.to_string())
47 }
48}
49
50#[cfg(feature = "wasm")]
51impl From<ColbertError> for JsValue {
52 fn from(err: ColbertError) -> Self {
53 JsValue::from_str(&err.to_string())
54 }
55}