mod boa;
pub use boa::BoaJavascriptInterpreter;
use thiserror::Error;
pub trait JavascriptInterpreter: Send + Sync {
fn solve_challenge(&self, page_html: &str, host: &str) -> Result<String, InterpreterError>;
fn execute(&self, script: &str, host: &str) -> Result<String, InterpreterError> {
let _ = (script, host);
Err(InterpreterError::Other("execute not implemented".into()))
}
}
#[derive(Debug, Error)]
pub enum InterpreterError {
#[error("javascript execution failed: {0}")]
Execution(String),
#[error("javascript engine error: {0}")]
Other(String),
}
pub type InterpreterResult<T> = Result<T, InterpreterError>;