@yuneta/gobj-js 7.25.6 → 7.25.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2953,11 +2953,10 @@ function gobj_publish_event(publisher, event, kw) {
2953
2953
  let __global__ = kw_get_dict(publisher, subs, "__global__", null, 0);
2954
2954
  let __local__ = kw_get_dict(publisher, subs, "__local__", null, 0);
2955
2955
  let __filter__ = kw_get_dict_value(publisher, subs, "__filter__", null, 0);
2956
- let kw2publish = kw;
2957
2956
  let topublish = 1;
2958
- if (publisher.gclass.gmt.mt_publication_filter) topublish = publisher.gclass.gmt.mt_publication_filter(publisher, event, kw2publish, subscriber);
2957
+ if (publisher.gclass.gmt.mt_publication_filter) topublish = publisher.gclass.gmt.mt_publication_filter(publisher, event, kw, subscriber);
2959
2958
  else if (json_size(__filter__) > 0) {
2960
- topublish = kw_match_simple(kw2publish, __filter__) ? 1 : 0;
2959
+ topublish = kw_match_simple(kw, __filter__) ? 1 : 0;
2961
2960
  if (tracea) {
2962
2961
  trace_machine(sprintf("💜💜🔄%s publishing with filter, event '%s', subscriber'%s', publisher %s", topublish ? "👍" : "👎", event ? event : "", gobj_short_name(subscriber), gobj_short_name(publisher)));
2963
2962
  trace_json(__filter__);
@@ -2971,9 +2970,11 @@ function gobj_publish_event(publisher, event, kw) {
2971
2970
  if (!gobj_has_event(subscriber, ev_.event_name, 0)) continue;
2972
2971
  }
2973
2972
  }
2974
- if (__local__) kw_pop(kw2publish, __local__);
2973
+ let kw2publish = kw;
2974
+ if (json_size(__local__) > 0 || json_size(__global__) > 0) kw2publish = Object.assign({}, kw);
2975
+ if (json_size(__local__) > 0) kw_pop(kw2publish, __local__);
2975
2976
  if (__config__) {}
2976
- if (__global__) json_object_update(kw2publish, __global__);
2977
+ if (json_size(__global__) > 0) json_object_update(kw2publish, json_deep_copy(__global__));
2977
2978
  if (tracea) {
2978
2979
  if (__trace_machine_format__ === 1) trace_machine(sprintf("🔝🔄 %s (%s) %s%s", event ? event : "", event ? event : "", !subscriber.running ? "!!" : "", gobj_short_name(subscriber)));
2979
2980
  else trace_machine(sprintf("🔝🔄 mach(%s%s), st: %s, ev: %s, from(%s%s)", !subscriber.running ? "!!" : "", gobj_short_name(subscriber), gobj_current_state(subscriber), event ? event : "", publisher && !publisher.running ? "!!" : "", gobj_short_name(publisher)));
@@ -3977,7 +3978,12 @@ function kw_set_dict_value(gobj, kw, path, value) {
3977
3978
  let key = ss[i];
3978
3979
  if (i === len - 1) kw[key] = value;
3979
3980
  else {
3980
- if (kw[key] === void 0) kw[key] = {};
3981
+ let seg = kw[key];
3982
+ if (seg === void 0) kw[key] = {};
3983
+ else if (!is_object(seg) && !is_array(seg)) {
3984
+ log_error(`${gobj ? gobj_short_name(gobj) + ": " : ""}kw_set_dict_value(): segment '${key}' is not a dict or a list: '${path}'`);
3985
+ return -1;
3986
+ }
3981
3987
  kw = kw[key];
3982
3988
  }
3983
3989
  }
@@ -6701,7 +6707,8 @@ function mt_inject_event(gobj, event, kw, src) {
6701
6707
  window.console.error(`Not in session`);
6702
6708
  return -1;
6703
6709
  }
6704
- if (!kw) kw = {};
6710
+ kw = Object.assign({}, is_object(kw) ? kw : {});
6711
+ if (is_object(kw["__md_iev__"])) kw["__md_iev__"] = json_deep_copy(kw["__md_iev__"]);
6705
6712
  if (msg_iev_get_stack(gobj, kw, IEVENT_STACK_ID)) {} else {
6706
6713
  let jn_ievent_id = build_cli_ievent_request(gobj, gobj_name(src), kw_get_str(gobj, kw, "__service__", 0, 0));
6707
6714
  json_object_del(kw, "__service__");