use std::io;
use actix_web::ResponseError;
use tracing::error;
#[derive(thiserror::Error, Debug)]
pub enum SpaError {
#[error("File system error: {0}")]
FileSystemError(#[from] io::Error),
#[error("Failed to serve file: {0}")]
ServeFileError(#[from] actix_web::Error),
#[error("Build manifest not found")]
BuildManifestNotFound,
#[error("Path conversion error")]
PathConversionError,
#[error("Glob pattern error: {0}")]
GlobPatternError(#[from] glob::PatternError),
}
impl ResponseError for SpaError {}
impl From<anyhow::Error> for SpaError {
fn from(error: anyhow::Error) -> Self {
error!("An unexpected error occurred: {:?}", error);
SpaError::ServeFileError(actix_web::Error::from(Box::<dyn std::error::Error>::from(error)))
}
}