use std::cell::BorrowMutError; use html::RewriterError as HtmlRewriterError; use js::RewriterError as JsRewriterError; use js_sys::Error; use thiserror::Error; use wasm_bindgen::{JsError, JsValue}; #[derive(Debug, Error)] pub enum RewriterError { #[error("JS: {0}")] Js(String), #[error("JS Rewriter: {0}")] JsRewriter(#[from] JsRewriterError), #[error("HTML Rewriter: {0}")] HtmlRewriter(#[from] HtmlRewriterError), #[error("str fromutf8 error: {0}")] Str(#[from] std::str::Utf8Error), #[error("reflect set failed: {0}")] ReflectSetFail(String), #[error("Rewriter was already rewriting")] AlreadyRewriting(#[from] BorrowMutError), #[error("{0} was not {1}")] Not(&'static str, &'static str), } impl From for RewriterError { fn from(value: JsValue) -> Self { Self::Js(Error::from(value).to_string().into()) } } impl From for JsValue { fn from(value: RewriterError) -> Self { JsError::from(value).into() } } impl RewriterError { pub fn not_str(x: &'static str) -> Self { Self::Not(x, "string") } pub fn not_arr(x: &'static str) -> Self { Self::Not(x, "array") } pub fn not_fn(x: &'static str) -> Self { Self::Not(x, "function") } pub fn not_bool(x: &'static str) -> Self { Self::Not(x, "bool") } } pub type Result = std::result::Result;