use thiserror::Error;
pub type Result<T> = std::result::Result<T, Error>;
#[derive(Error, Debug)]
pub enum Error {
#[error("Chrome process error: {0}")]
ChromeProcess(String),
#[error("Chrome DevTools Protocol error: {0}")]
Protocol(String),
#[error("Invalid configuration: {0}")]
InvalidConfig(String),
#[error("Input source error: {0}")]
InputSource(String),
#[cfg(feature = "templates")]
#[error("Template error: {0}")]
Template(String),
#[cfg(feature = "templates")]
#[error("Template not found: {0}")]
TemplateNotFound(String),
#[error("Navigation error: {0}")]
Navigation(String),
#[error("Network error: {0}")]
Network(#[from] reqwest::Error),
#[error("I/O error: {0}")]
Io(#[from] std::io::Error),
#[error("PDF generation timed out after {0} seconds")]
Timeout(u64),
#[error("Invalid PDF data returned from Chrome")]
InvalidPdfData,
#[error("Unexpected error: {0}")]
Other(String),
}
impl From<String> for Error {
fn from(s: String) -> Self {
Error::Other(s)
}
}
impl From<&str> for Error {
fn from(s: &str) -> Self {
Error::Other(s.to_string())
}
}