From dfa49c1c01d6c1d651270f5d7d5d5539b61a5075 Mon Sep 17 00:00:00 2001 From: Joeri Exelmans Date: Tue, 4 Nov 2025 10:20:51 +0100 Subject: [PATCH] use serde_wasm_bindgen instead --- src/lib.rs | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index b69f1fe..c49b262 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -3,6 +3,7 @@ extern crate argus; extern crate serde_json; extern crate js_sys; extern crate serde; +extern crate serde_wasm_bindgen; use wasm_bindgen::prelude::*; @@ -12,6 +13,7 @@ use argus::signals::interpolation; use std::collections::HashMap; use std::vec; use serde::{Serialize, Deserialize}; +use serde_wasm_bindgen::{from_value, to_value}; use std::time::Duration; // #[wasm_bindgen] @@ -76,21 +78,30 @@ impl<'a> Trace for TraceMap<'a> { // } // } -#[wasm_bindgen(getter_with_clone)] +#[derive(Serialize, Deserialize)] pub struct StateBuddyTraceEntry { simtime: f64, inputEvent: String, outputEvents: Vec, } -#[wasm_bindgen] +#[derive(Serialize, Deserialize)] pub struct StateBuddyTrace { entries: Vec, } +// #[wasm_bindgen] +// impl StateBuddyTrace { +// #[wasm_bindgen(constructor)] +// pub fn new(entries: &Vec) { +// StateBuddyTrace{entries} +// } +// } + #[wasm_bindgen] -pub fn eval_boolean(s: &str, trace: &StateBuddyTrace) -> StateBuddyEvalResult { +pub fn eval_boolean(s: &str, js_trace: JsValue) -> JsValue { + let trace: StateBuddyTrace = from_value(js_trace).expect("fuuuuck"); let mut traceMap = HashMap::<&str, Signal>::new(); for entry in &trace.entries { let value = traceMap.entry(entry.inputEvent.as_str()).or_insert_with(|| Signal::::Sampled { @@ -119,16 +130,16 @@ pub fn eval_boolean(s: &str, trace: &StateBuddyTrace) -> StateBuddyEvalResult { satisfied: *satisfied, }); }); - StateBuddyEvalResult { entries: result } + to_value(&StateBuddyEvalResult { entries: result }).expect("fuuuck") } -#[wasm_bindgen] +#[derive(Serialize, Deserialize)] pub struct StateBuddyEvalResultEntry { timestamp: f64, satisfied: bool, } -#[wasm_bindgen] +#[derive(Serialize, Deserialize)] pub struct StateBuddyEvalResult { entries: Vec, }