mirror of
https://github.com/gorules/zen.git
synced 2026-10-04 00:02:18 +00:00
fix: omit reserved properties in fn return (#417)
This commit is contained in:
@@ -3,7 +3,7 @@ use std::ops::Deref;
|
||||
use std::rc::Rc;
|
||||
use zen_types::variable::Variable;
|
||||
|
||||
const RESERVED_KEYS: &[&str] = &["$nodes"];
|
||||
pub(crate) const ZEN_RESERVED_PROPERTIES: &[&str] = &["$nodes"];
|
||||
|
||||
pub(crate) struct VariableCleaner {
|
||||
visited: HashSet<usize>,
|
||||
@@ -43,7 +43,7 @@ impl VariableCleaner {
|
||||
}
|
||||
|
||||
let mut map = obj.borrow_mut();
|
||||
for key in RESERVED_KEYS {
|
||||
for key in ZEN_RESERVED_PROPERTIES {
|
||||
map.remove(*key);
|
||||
}
|
||||
|
||||
@@ -79,13 +79,15 @@ impl VariableCleaner {
|
||||
}
|
||||
|
||||
let map = obj.borrow();
|
||||
let will_remove_key = map.keys().any(|k| RESERVED_KEYS.contains(&k.as_ref()));
|
||||
let will_remove_key = map
|
||||
.keys()
|
||||
.any(|k| ZEN_RESERVED_PROPERTIES.contains(&k.as_ref()));
|
||||
if !will_remove_key {
|
||||
return Variable::Object(obj.clone());
|
||||
}
|
||||
|
||||
let mut new_map = map.deref().clone();
|
||||
for key in RESERVED_KEYS {
|
||||
for key in ZEN_RESERVED_PROPERTIES {
|
||||
new_map.remove(*key);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
use crate::decision_graph::cleaner::ZEN_RESERVED_PROPERTIES;
|
||||
use crate::nodes::function::v2::error::ResultExt;
|
||||
use ahash::{HashMap, HashMapExt};
|
||||
use nohash_hasher::BuildNoHashHasher;
|
||||
@@ -62,6 +63,10 @@ impl<'js> FromJs<'js> for JsValue {
|
||||
let mut js_object = HashMap::with_capacity(object.len());
|
||||
for p in object.props::<String, QValue>() {
|
||||
let (k, v) = p?;
|
||||
if ZEN_RESERVED_PROPERTIES.contains(&k.as_str()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
js_object.insert(Rc::from(k.as_str()), JsValue::from_js(ctx, v)?.0);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user