use std::collections::HashMap;
use serde_json::Value;
use crate::error::JsLanguageError;
#[derive(Debug, Clone, Default)]
pub struct JsExchange {
pub headers: HashMap<String, Value>,
pub body: Value,
pub properties: HashMap<String, Value>,
}
impl JsExchange {
pub fn from_headers_body_properties(
headers: HashMap<String, Value>,
body: Value,
properties: HashMap<String, Value>,
) -> Self {
Self {
headers,
body,
properties,
}
}
}
#[derive(Debug, Clone)]
pub struct JsEvalResult {
pub return_value: Value,
pub headers: HashMap<String, Value>,
pub body: Value,
pub properties: HashMap<String, Value>,
}
pub trait JsEngine: Send + Sync + 'static {
fn eval(&self, source: &str, exchange: JsExchange) -> Result<JsEvalResult, JsLanguageError>;
fn validate(&self, source: &str) -> Result<(), JsLanguageError>;
}