Skip to content

Commit

Permalink
fix: serde_wasm_bindgen default serializes Hashmap to JS Map
Browse files Browse the repository at this point in the history
  • Loading branch information
wormtql committed Jul 17, 2024
1 parent 838b3da commit cb0d4ec
Show file tree
Hide file tree
Showing 11 changed files with 36 additions and 15 deletions.
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
use serde::Serialize;
use wasm_bindgen::JsValue;
use crate::applications::artifact_best_set::artifact_best_set::calc_artifact_best_set;
use crate::applications::artifact_best_set::type_interface::CalcArtifactBestSetInterface;
Expand Down Expand Up @@ -39,6 +40,7 @@ impl CalcArtifactBestSet {
}
// utils::log!("{:?}", arr);

serde_wasm_bindgen::to_value(&arr).unwrap()
let s = serde_wasm_bindgen::Serializer::new().serialize_maps_as_objects(true);
arr.serialize(&s).unwrap()
}
}
3 changes: 2 additions & 1 deletion mona_wasm/src/applications/bonus_per_stat/interface_wasm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,8 @@ impl BonusPerStat {
// utils::log!("{:?}", result.atk);
// utils::log!("{:?}", result.atk.as_ptr());

serde_wasm_bindgen::to_value(&result).unwrap()
let s = serde_wasm_bindgen::Serializer::new().serialize_maps_as_objects(true);
result.serialize(&s).unwrap()

// WasmOutput {
// atk_ptr: result.atk.as_ptr(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,8 @@ impl CalculatorInterface {
fumo,
);

serde_wasm_bindgen::to_value(&result).unwrap()
let s = serde_wasm_bindgen::Serializer::new().serialize_maps_as_objects(true);
result.serialize(&s).unwrap()
}

pub fn get_transformative_damage(value: JsValue) -> TransformativeDamage {
Expand Down
3 changes: 2 additions & 1 deletion mona_wasm/src/applications/common_interface/get_attribute.rs
Original file line number Diff line number Diff line change
Expand Up @@ -44,5 +44,6 @@ pub fn get_attribute(val: JsValue) -> JsValue {
);

let result = AttributeNoReactive::from(&attribute);
serde_wasm_bindgen::to_value(&result).unwrap()
let s = serde_wasm_bindgen::Serializer::new().serialize_maps_as_objects(true);
result.serialize(&s).unwrap()
}
4 changes: 3 additions & 1 deletion mona_wasm/src/applications/common_interface/mod.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use wasm_bindgen::prelude::*;
use crate::applications::common::{CharacterInterface, TargetFunctionInterface, WeaponInterface};
use mona::artifacts::Artifact;
use serde::Serialize;

pub mod get_attribute;

Expand Down Expand Up @@ -35,6 +36,7 @@ impl CommonInterface {

scores.sort_by(|a, b| b.1.partial_cmp(&a.1).unwrap());

serde_wasm_bindgen::to_value(&scores).unwrap()
let s = serde_wasm_bindgen::Serializer::new().serialize_maps_as_objects(true);
scores.serialize(&s).unwrap()
}
}
17 changes: 12 additions & 5 deletions mona_wasm/src/applications/dsl/dsl_interface.rs
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,10 @@ impl DSLInterface {

// compile
let code_obj = match compile_source_to_code_object(source) {
Err(e) => return serde_wasm_bindgen::to_value(&RunResult::from_compile_error(&e)).unwrap(),
Err(e) => {
let s = serde_wasm_bindgen::Serializer::new().serialize_maps_as_objects(true);
return RunResult::from_compile_error(&e).serialize(&s).unwrap()
}
Ok(v) => v
};

Expand All @@ -100,16 +103,19 @@ impl DSLInterface {

// init
if let Err(e) = env.init_prop() {
return serde_wasm_bindgen::to_value(&RunResult::from_runtime_error(&e)).unwrap();
let s = serde_wasm_bindgen::Serializer::new().serialize_maps_as_objects(true);
return RunResult::from_runtime_error(&e).serialize(&s).unwrap();
}
if let Err(e) = env.init_damage() {
return serde_wasm_bindgen::to_value(&RunResult::from_runtime_error(&e)).unwrap();
let s = serde_wasm_bindgen::Serializer::new().serialize_maps_as_objects(true);
return RunResult::from_runtime_error(&e).serialize(&s).unwrap();
}
utils::log!("{:?}", env.namespace.map.keys());

// execute
if let Err(e) = env.execute() {
return serde_wasm_bindgen::to_value(&RunResult::from_runtime_error(&e)).unwrap();
let s = serde_wasm_bindgen::Serializer::new().serialize_maps_as_objects(true);
return RunResult::from_runtime_error(&e).serialize(&s).unwrap();
}

// get output
Expand All @@ -121,6 +127,7 @@ impl DSLInterface {
output
};

serde_wasm_bindgen::to_value(&ret).unwrap()
let s = serde_wasm_bindgen::Serializer::new().serialize_maps_as_objects(true);
ret.serialize(&s).unwrap()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ impl OptimizeSingleWasm {
100
);

serde_wasm_bindgen::to_value(&result).unwrap()
let s = serde_wasm_bindgen::Serializer::new().serialize_maps_as_objects(true);
result.serialize(&s).unwrap()
}
}
4 changes: 3 additions & 1 deletion mona_wasm/src/applications/potential/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ use crate::applications::common::PotentialFunctionInterface;
use mona::artifacts::Artifact;
use mona::potential_function::potential_function::calc_potential;
use mona::utils::{set_panic_hook};
use serde::Serialize;

pub struct PotentialInterface;

Expand All @@ -29,6 +30,7 @@ impl PotentialInterface {
let mut results = get_potential(&artifacts, &pf_interface);
results.sort_by(|x, y| y.1.partial_cmp(&x.1).unwrap());

serde_wasm_bindgen::to_value(&results).unwrap()
let s = serde_wasm_bindgen::Serializer::new().serialize_maps_as_objects(true);
results.serialize(&s).unwrap()
}
}
4 changes: 3 additions & 1 deletion mona_wasm/src/applications/team_optimize/interface_wasm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ use mona::team::team::Team;
// use mona::team_target::team_targets::{get_default_buff, try_get_team_target_function, try_match_team};
use mona::weapon::Weapon;
use mona::utils;
use serde::Serialize;

pub struct TeamOptimizationWasm;

Expand Down Expand Up @@ -94,7 +95,8 @@ impl TeamOptimizationWasm {
artifacts: results
};

serde_wasm_bindgen::to_value(&ret).unwrap()
let s = serde_wasm_bindgen::Serializer::new().serialize_maps_as_objects(true);
ret.serialize(&s).unwrap()
}

// pub fn optimize_team(val: &JsValue) -> JsValue {
Expand Down
2 changes: 1 addition & 1 deletion src/components/display/AttributePanel/AttributeItem.vue
Original file line number Diff line number Diff line change
Expand Up @@ -61,4 +61,4 @@ export default {
font-weight: bold;
}
}
</style>
</style>
4 changes: 3 additions & 1 deletion src/pages/NewArtifactPlanPage/NewArtifactPlanPage.vue
Original file line number Diff line number Diff line change
Expand Up @@ -1215,7 +1215,9 @@ const getAttributeWasmInterface = computed(() => {
})
const attributeFromWasm = computed(() => {
return mona.CommonInterface.get_attribute(getAttributeWasmInterface.value)
const ret = mona.CommonInterface.get_attribute(getAttributeWasmInterface.value)
// console.log(ret)
return ret
})
Expand Down

0 comments on commit cb0d4ec

Please sign in to comment.