gloo_storage/
errors.rs

1//! All the errors.
2
3use gloo_utils::errors::JsError;
4use wasm_bindgen::{JsCast, JsValue};
5
6/// Error returned by this crate
7#[derive(Debug, thiserror::Error)]
8pub enum StorageError {
9    /// Error from `serde`
10    #[error("{0}")]
11    SerdeError(#[from] serde_json::Error),
12    /// Error if the requested key is not found
13    #[error("key {0} not found")]
14    KeyNotFound(String),
15    /// Error returned from JavaScript
16    #[error("{0}")]
17    JsError(JsError),
18}
19
20pub(crate) fn js_to_error(js_value: JsValue) -> StorageError {
21    match js_value.dyn_into::<js_sys::Error>() {
22        Ok(error) => StorageError::JsError(JsError::from(error)),
23        Err(_) => unreachable!("JsValue passed is not an Error type - this is a bug"),
24    }
25}