1use serde::de::DeserializeOwned;
2use serde::Serialize;
3use wasm_bindgen::JsValue;
4
5use crate::{Error, Result};
6
7pub fn to_js_value<T: Serialize>(value: &T) -> Result<JsValue> {
8 serde_wasm_bindgen::to_value(value)
9 .map_err(|err| Error::RustError(format!("RPC argument serialization failed: {err}")))
10}
11
12pub fn from_js_value<T: DeserializeOwned>(value: JsValue) -> Result<T> {
13 serde_wasm_bindgen::from_value(value)
14 .map_err(|err| Error::RustError(format!("RPC return deserialization failed: {err}")))
15}