Skip to content

Commit

Permalink
refactor(vm, frontend): turns out that the serde_wasm_bindgen facilit…
Browse files Browse the repository at this point in the history
…ies of TSify are borken...
  • Loading branch information
Ryex committed Jun 1, 2024
1 parent d618f7b commit 6c26a37
Show file tree
Hide file tree
Showing 22 changed files with 1,236 additions and 1,338 deletions.
17 changes: 4 additions & 13 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion ic10emu/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ time = { version = "0.3.36", features = [
"serde",
"local-offset",
] }
tsify = { version = "0.4.5", optional = true, features = ["js"] }
tsify = { version = "0.4.5", optional = true, features = ["json"] }
wasm-bindgen = { version = "0.2.92", optional = true }

[target.'cfg(target_arch = "wasm32")'.dependencies]
Expand Down
5 changes: 4 additions & 1 deletion ic10emu_wasm/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,13 @@ wasm-bindgen-futures = { version = "0.4.42", features = [
] }
wasm-streams = "0.4"
serde-wasm-bindgen = "0.6.5"
serde_path_to_error = "0.1.16"
serde_ignored = "0.1.10"
color-eyre = "0.6.3"
itertools = "0.13.0"
serde = { version = "1.0.202", features = ["derive"] }
serde_with = "3.8.1"
tsify = { version = "0.4.5", features = ["js"] }
tsify = { version = "0.4.5", features = ["json"] }
thiserror = "1.0.61"
serde_derive = "1.0.203"

Expand Down
29 changes: 29 additions & 0 deletions ic10emu_wasm/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,23 @@ impl IntoIterator for CompileErrors {
}
}

use color_eyre::eyre;
pub fn parse_value<'a, T: serde::Deserialize<'a>>(
jd: impl serde::Deserializer<'a>,
) -> Result<T, color_eyre::Report> {
let mut track = serde_path_to_error::Track::new();
let path = serde_path_to_error::Deserializer::new(jd, &mut track);
let mut fun = |path: serde_ignored::Path| {
log!("Found ignored key: {path}");
};
serde_ignored::deserialize(path, &mut fun).map_err(|e| {
eyre::eyre!(
"path: {track} | error = {e}",
track = track.path().to_string(),
)
})
}

#[wasm_bindgen]
impl VMRef {
#[wasm_bindgen(constructor)]
Expand All @@ -120,6 +137,18 @@ impl VMRef {
self.vm.import_template_database(db);
}

#[wasm_bindgen(js_name = "importTemplateDatabaseSerde")]
pub fn import_template_database_serde(&self, db: JsValue) -> Result<(), JsError> {
let parsed_db: BTreeMap<i32, ObjectTemplate> =
parse_value(serde_wasm_bindgen::Deserializer::from(db)).map_err(|err| {
<&dyn std::error::Error as std::convert::Into<JsError>>::into(
std::convert::AsRef::<dyn std::error::Error>::as_ref(&err),
)
})?;
self.vm.import_template_database(parsed_db);
Ok(())
}

#[wasm_bindgen(js_name = "getTemplateDatabase")]
pub fn get_template_database(&self) -> TemplateDatabase {
TemplateDatabase(self.vm.get_template_database())
Expand Down
2 changes: 1 addition & 1 deletion stationeers_data/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,5 @@ phf = "0.11.2"
serde = "1.0.202"
serde_derive = "1.0.202"
strum = { version = "0.26.2", features = ["derive", "phf", "strum_macros"] }
tsify = { version = "0.4.5", optional = true, features = ["js"] }
tsify = { version = "0.4.5", optional = true, features = ["json"] }
wasm-bindgen = { version = "0.2.92", optional = true }
Loading

0 comments on commit 6c26a37

Please sign in to comment.