@yuneta/gobj-js 7.7.1 → 7.7.3

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.
@@ -3625,7 +3625,7 @@
3625
3625
  if (is_object(kw)) new_dict = kw;
3626
3626
  else if (is_array(kw)) for (let i = 0; i < kw.length; i++) {
3627
3627
  let kv = kw[i];
3628
- let id = kw_get_str(kv, "id", null, false);
3628
+ let id = kw_get_str(gobj, kv, "id", "", 0);
3629
3629
  if (!empty_string(id)) new_dict[id] = kv;
3630
3630
  }
3631
3631
  else log_error(`${gobj_short_name(gobj)} kwid_new_dict: data type unknown`);
@@ -4916,6 +4916,7 @@
4916
4916
  * is_writable // field writable (no readonly)
4917
4917
  * default_value
4918
4918
  * placeholder
4919
+ * fkey // fkey mapping {topic_name: hook_name}, null if none
4919
4920
  * ]
4920
4921
  *
4921
4922
  * The template is recursive, in values you can set dictionaries, or arrays,
@@ -4985,7 +4986,8 @@
4985
4986
  is_hidden: false,
4986
4987
  default_value: col.default,
4987
4988
  placeholder: col.placeholder,
4988
- fillspace: col.fillspace || 4
4989
+ fillspace: col.fillspace || 4,
4990
+ fkey: col.fkey || null
4989
4991
  };
4990
4992
  if (!col.flag) return field_desc;
4991
4993
  for (let i = 0; i < col.flag.length; i++) {
@@ -5031,7 +5033,8 @@
5031
5033
  is_writable: false,
5032
5034
  is_hidden: false,
5033
5035
  default_value: void 0,
5034
- placeholder: void 0
5036
+ placeholder: void 0,
5037
+ fkey: null
5035
5038
  };
5036
5039
  if (is_string(value)) {
5037
5040
  let values = value.split(".");
@@ -5075,7 +5078,9 @@
5075
5078
  let new_record = {};
5076
5079
  if (!kw) kw = {};
5077
5080
  Object.entries(template).forEach(([field, col]) => {
5078
- new_record[field] = kw_get_dict_value(null, kw, field, kw_get_dict_value(col, "default"));
5081
+ let default_value;
5082
+ if (is_object(col)) default_value = col.default;
5083
+ new_record[field] = kw_get_dict_value(null, kw, field, default_value);
5079
5084
  });
5080
5085
  return new_record;
5081
5086
  }
@@ -5592,7 +5597,7 @@
5592
5597
  ***************************************************************/
5593
5598
  function mt_subscription_added(gobj, subs) {
5594
5599
  let priv = gobj.priv;
5595
- if (gobj_current_state(gobj) !== "ST_SESSION") return 0;
5600
+ if (gobj_current_state(gobj) !== "ST_SESSION" || !priv.websocket) return 0;
5596
5601
  if (priv.inside_on_open) return 0;
5597
5602
  return send_remote_subscription(gobj, subs);
5598
5603
  }
@@ -5601,7 +5606,7 @@
5601
5606
  ***************************************************************/
5602
5607
  function mt_subscription_deleted(gobj, subs) {
5603
5608
  let priv = gobj.priv;
5604
- if (gobj_current_state(gobj) !== "ST_SESSION") return 0;
5609
+ if (gobj_current_state(gobj) !== "ST_SESSION" || !priv.websocket) return 0;
5605
5610
  if (priv.inside_on_open) return 0;
5606
5611
  if (empty_string(subs.event)) return 0;
5607
5612
  let kw = {};
@@ -5722,6 +5727,10 @@
5722
5727
  trace_ievent_callback(prefix, iev, 1, size);
5723
5728
  } else trace_inter_event(gobj, prefix, iev);
5724
5729
  }
5730
+ if (!priv.websocket || priv.websocket.readyState !== WebSocket.OPEN) {
5731
+ log_warning(`${gobj_short_name(gobj)}: send_iev(): websocket not open, message lost`);
5732
+ return -1;
5733
+ }
5725
5734
  try {
5726
5735
  priv.websocket.send(msg);
5727
5736
  } catch (e) {