use wasm_bindgen::prelude::*; // use serde::{Serialize, Deserialize}; use kifu_core::{CoreRequest, CoreResponse}; #[wasm_bindgen] extern "C" { #[wasm_bindgen(js_namespace = console)] pub fn log(s: &str); } /* #[wasm_bindgen] #[derive(Serialize, Deserialize)] pub struct CoreRequest(kifu_core::Request); */ /* #[wasm_bindgen] impl CoreRequest { #[wasm_bindgen(constructor)] pub fn new(request: kifu_core::Request) -> Self { Self(request) } } */ /* Somehow uncommenting this code actually causes the module to not load. Maybe a name conflict? * Don't know. */ /* #[wasm_bindgen] #[derive(Serialize, Deserialize)] pub struct CoreResponse(kifu_core::Response); */ #[wasm_bindgen] #[derive(Debug)] pub struct CoreApp(kifu_core::CoreApp); #[wasm_bindgen] impl CoreApp { #[wasm_bindgen(constructor)] pub fn new() -> Self { Self(kifu_core::CoreApp::new()) } #[wasm_bindgen] pub async fn dispatch(&self, param: &JsValue) -> JsValue { let request: CoreRequest = serde_wasm_bindgen::from_value(param.clone()).unwrap(); serde_wasm_bindgen::to_value(&self.0.dispatch(request).await).unwrap() } }