fix: omit reserved properties in fn return (#417)

This commit is contained in:
stefan-gorules
2025-11-24 12:44:32 +01:00
committed by GitHub
parent f7f8478628
commit f054aa876c
2 changed files with 11 additions and 4 deletions
+6 -4
View File
@@ -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);
}