@yuneta/gobj-js 7.13.4 → 7.13.5

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.
@@ -1803,17 +1803,39 @@ var gobjJs = (function(exports) {
1803
1803
  /***************************************************************
1804
1804
  * Walking
1805
1805
  ***************************************************************/
1806
+ /***************************************************************
1807
+ * What a WALK CALLBACK answered, as the number the contract is
1808
+ * written in: -1 stop the walk, 0 descend into the children,
1809
+ * >0 do not descend.
1810
+ *
1811
+ * A javascript callback that simply RETURNS NOTHING is the common
1812
+ * case, and `undefined` is neither `< 0` nor `=== 0`, so the walk
1813
+ * used to read it as "do not descend" and skipped the subtree in
1814
+ * silence. Nothing is 0 here — the neutral answer, the one C gives
1815
+ * when an action has nothing to say.
1816
+ *
1817
+ * A boolean is NOT guessed: `true`/`false` could mean either half of
1818
+ * this contract, so it is reported and taken as 0. A walk that
1819
+ * silently loses a subtree is the thing this whole function exists
1820
+ * to stop.
1821
+ ***************************************************************/
1822
+ function walk_ret(ret) {
1823
+ if (typeof ret === "number" && isFinite(ret)) return ret;
1824
+ if (ret === void 0 || ret === null) return 0;
1825
+ log_error(`walk callback must return a NUMBER (-1 stop, 0 descend, >0 skip children), got ${typeof ret}: taken as 0`);
1826
+ return 0;
1827
+ }
1806
1828
  function rc_walk_by_list(iter_, walk_type, cb_walking, user_data, user_data2) {
1807
1829
  let iter = [...iter_];
1808
1830
  let child;
1809
1831
  if (walk_type & walk_type_t.WALK_LAST2FIRST) for (let i = iter.length; i > 0; i--) {
1810
1832
  child = iter[i - 1];
1811
- let ret = cb_walking(child, user_data, user_data2);
1833
+ let ret = walk_ret(cb_walking(child, user_data, user_data2));
1812
1834
  if (ret < 0) return ret;
1813
1835
  }
1814
1836
  else for (let i = 0; i < iter.length; i++) {
1815
1837
  child = iter[i];
1816
- let ret = cb_walking(child, user_data, user_data2);
1838
+ let ret = walk_ret(cb_walking(child, user_data, user_data2));
1817
1839
  if (ret < 0) return ret;
1818
1840
  }
1819
1841
  return 0;
@@ -1866,12 +1888,12 @@ var gobjJs = (function(exports) {
1866
1888
  child = iter[i - 1];
1867
1889
  ret = rc_walk_by_tree([...child.dl_children], walk_type, cb_walking, user_data, user_data2);
1868
1890
  if (ret < 0) return ret;
1869
- ret = cb_walking(child, user_data, user_data2);
1891
+ ret = walk_ret(cb_walking(child, user_data, user_data2));
1870
1892
  if (ret < 0) return ret;
1871
1893
  }
1872
1894
  else for (let i = 0; i < iter.length; i++) {
1873
1895
  child = iter[i];
1874
- ret = cb_walking(child, user_data, user_data2);
1896
+ ret = walk_ret(cb_walking(child, user_data, user_data2));
1875
1897
  if (ret < 0) return ret;
1876
1898
  else if (ret === 0) {
1877
1899
  ret = rc_walk_by_tree([...child.dl_children], walk_type, cb_walking, user_data, user_data2);
@@ -6436,7 +6458,7 @@ var gobjJs = (function(exports) {
6436
6458
  let iev_kw = iev_msg.kw;
6437
6459
  if (gobj_current_state(gobj) !== "ST_SESSION") {
6438
6460
  if (gobj_has_event(gobj, iev_event, event_flag_t.EVF_PUBLIC_EVENT)) {
6439
- if (gobj_send_event(gobj, iev_event, iev_kw, gobj) === 0) return 0;
6461
+ if (!(gobj_send_event(gobj, iev_event, iev_kw, gobj) < 0)) return 0;
6440
6462
  } else log_error(`${gobj_short_name(gobj)}: event UNKNOWN in not-session state ${iev_event}`);
6441
6463
  close_websocket(gobj);
6442
6464
  return -1;
@@ -6863,6 +6885,7 @@ var gobjJs = (function(exports) {
6863
6885
  exports.treedb_get_field_desc = treedb_get_field_desc;
6864
6886
  exports.treedb_hook_data_size = treedb_hook_data_size;
6865
6887
  exports.vsprintf = vsprintf;
6888
+ exports.walk_type_t = walk_type_t;
6866
6889
  return exports;
6867
6890
  })({});
6868
6891