@yuneta/gobj-js 7.13.3 → 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.
@@ -1579,7 +1579,7 @@ function gobj_play(gobj) {
1579
1579
  let ret = 0;
1580
1580
  if (gobj.gclass.gmt.mt_play) {
1581
1581
  ret = gobj.gclass.gmt.mt_play(gobj);
1582
- if (ret < 0) gobj.playing = false;
1582
+ if (ret < 0 || ret === false) gobj.playing = false;
1583
1583
  }
1584
1584
  return ret;
1585
1585
  }
@@ -1801,17 +1801,39 @@ function gobj_walk_gobj_children_tree(gobj, walk_type, cb_walking, user_data, us
1801
1801
  /***************************************************************
1802
1802
  * Walking
1803
1803
  ***************************************************************/
1804
+ /***************************************************************
1805
+ * What a WALK CALLBACK answered, as the number the contract is
1806
+ * written in: -1 stop the walk, 0 descend into the children,
1807
+ * >0 do not descend.
1808
+ *
1809
+ * A javascript callback that simply RETURNS NOTHING is the common
1810
+ * case, and `undefined` is neither `< 0` nor `=== 0`, so the walk
1811
+ * used to read it as "do not descend" and skipped the subtree in
1812
+ * silence. Nothing is 0 here — the neutral answer, the one C gives
1813
+ * when an action has nothing to say.
1814
+ *
1815
+ * A boolean is NOT guessed: `true`/`false` could mean either half of
1816
+ * this contract, so it is reported and taken as 0. A walk that
1817
+ * silently loses a subtree is the thing this whole function exists
1818
+ * to stop.
1819
+ ***************************************************************/
1820
+ function walk_ret(ret) {
1821
+ if (typeof ret === "number" && isFinite(ret)) return ret;
1822
+ if (ret === void 0 || ret === null) return 0;
1823
+ log_error(`walk callback must return a NUMBER (-1 stop, 0 descend, >0 skip children), got ${typeof ret}: taken as 0`);
1824
+ return 0;
1825
+ }
1804
1826
  function rc_walk_by_list(iter_, walk_type, cb_walking, user_data, user_data2) {
1805
1827
  let iter = [...iter_];
1806
1828
  let child;
1807
1829
  if (walk_type & walk_type_t.WALK_LAST2FIRST) for (let i = iter.length; i > 0; i--) {
1808
1830
  child = iter[i - 1];
1809
- let ret = cb_walking(child, user_data, user_data2);
1831
+ let ret = walk_ret(cb_walking(child, user_data, user_data2));
1810
1832
  if (ret < 0) return ret;
1811
1833
  }
1812
1834
  else for (let i = 0; i < iter.length; i++) {
1813
1835
  child = iter[i];
1814
- let ret = cb_walking(child, user_data, user_data2);
1836
+ let ret = walk_ret(cb_walking(child, user_data, user_data2));
1815
1837
  if (ret < 0) return ret;
1816
1838
  }
1817
1839
  return 0;
@@ -1864,12 +1886,12 @@ function rc_walk_by_tree(iter, walk_type, cb_walking, user_data, user_data2) {
1864
1886
  child = iter[i - 1];
1865
1887
  ret = rc_walk_by_tree([...child.dl_children], walk_type, cb_walking, user_data, user_data2);
1866
1888
  if (ret < 0) return ret;
1867
- ret = cb_walking(child, user_data, user_data2);
1889
+ ret = walk_ret(cb_walking(child, user_data, user_data2));
1868
1890
  if (ret < 0) return ret;
1869
1891
  }
1870
1892
  else for (let i = 0; i < iter.length; i++) {
1871
1893
  child = iter[i];
1872
- ret = cb_walking(child, user_data, user_data2);
1894
+ ret = walk_ret(cb_walking(child, user_data, user_data2));
1873
1895
  if (ret < 0) return ret;
1874
1896
  else if (ret === 0) {
1875
1897
  ret = rc_walk_by_tree([...child.dl_children], walk_type, cb_walking, user_data, user_data2);
@@ -2713,7 +2735,8 @@ function gobj_subscribe_event(publisher, event, kw, subscriber) {
2713
2735
  if (kw) trace_json(kw);
2714
2736
  }
2715
2737
  if (publisher.gclass.gmt.mt_subscription_added) {
2716
- if (publisher.gclass.gmt.mt_subscription_added(publisher, subs) < 0) {
2738
+ let result = publisher.gclass.gmt.mt_subscription_added(publisher, subs);
2739
+ if (result < 0 || result === false) {
2717
2740
  _delete_subscription(publisher, subs, true, true);
2718
2741
  subs = 0;
2719
2742
  }
@@ -2862,7 +2885,7 @@ function gobj_publish_event(publisher, event, kw) {
2862
2885
  if (publisher.gclass.gmt.mt_publication_pre_filter) {
2863
2886
  let topublish = publisher.gclass.gmt.mt_publication_pre_filter(publisher, subs, event, kw);
2864
2887
  if (topublish < 0) break;
2865
- else if (topublish === 0) continue;
2888
+ else if (!topublish) continue;
2866
2889
  }
2867
2890
  let subscriber = kw_get_pointer(publisher, subs, "subscriber", null, kw_flag_t.KW_REQUIRED);
2868
2891
  if (!(subscriber && !gobj_is_destroying(subscriber))) continue;
@@ -6433,7 +6456,7 @@ function ac_on_message(gobj, event, kw, src) {
6433
6456
  let iev_kw = iev_msg.kw;
6434
6457
  if (gobj_current_state(gobj) !== "ST_SESSION") {
6435
6458
  if (gobj_has_event(gobj, iev_event, event_flag_t.EVF_PUBLIC_EVENT)) {
6436
- if (gobj_send_event(gobj, iev_event, iev_kw, gobj) === 0) return 0;
6459
+ if (!(gobj_send_event(gobj, iev_event, iev_kw, gobj) < 0)) return 0;
6437
6460
  } else log_error(`${gobj_short_name(gobj)}: event UNKNOWN in not-session state ${iev_event}`);
6438
6461
  close_websocket(gobj);
6439
6462
  return -1;
@@ -6600,6 +6623,6 @@ function register_c_ievent_cli() {
6600
6623
  return create_gclass(GCLASS_NAME);
6601
6624
  }
6602
6625
  //#endregion
6603
- export { GObj, SDATA, SDATAAUTHZ, SDATACM, SDATACM2, SDATADF, SDATAPM, SDATAPM0, SDATA_END, SDataDesc, YUNETA_VERSION, __yuno__, build_command_response, build_path, build_stats_response, clean_name, clear_timeout, cmp_two_simple_json, command_parser, createElement2, createOneHtml, create_json_record, create_template_record, current_timestamp, data_type_t, db_list_persistent_attrs, db_load_persistent_attrs, db_remove_persistent_attrs, db_save_persistent_attrs, debounce, delete_from_list, duplicate_objects, empty_string, escapeHtml, event_flag_t, gclass_add_ev_action, gclass_add_event_type, gclass_add_state, gclass_check_fsm, gclass_create, gclass_event_type, gclass_find_by_name, gclass_flag_t, gclass_unregister, getPositionRelativeToBody, get_function_name, get_now, gobj_bottom_gobj, gobj_change_parent, gobj_change_state, gobj_command, gobj_create, gobj_create2, gobj_create_default_service, gobj_create_pure_child, gobj_create_service, gobj_create_volatil, gobj_create_yuno, gobj_current_state, gobj_default_service, gobj_deliver_posted_events, gobj_destroy, gobj_find_child, gobj_find_gobj, gobj_find_service, gobj_find_subscribings, gobj_find_subscriptions, gobj_flag_t, gobj_full_name, gobj_gclass_name, gobj_global_trace_level, gobj_has_attr, gobj_has_event, gobj_has_output_event, gobj_hsdata, gobj_is_destroying, gobj_is_playing, gobj_is_pure_child, gobj_is_running, gobj_is_service, gobj_is_volatil, gobj_list_persistent_attrs, gobj_list_subscriptions, gobj_load_persistent_attrs, gobj_match_children, gobj_match_children_tree, gobj_match_gobj, gobj_name, gobj_parent, gobj_pause, gobj_play, gobj_post_event, gobj_posted_events_size, gobj_publish_event, gobj_read_attr, gobj_read_attrs, gobj_read_bool_attr, gobj_read_integer_attr, gobj_read_pointer_attr, gobj_read_str_attr, gobj_remove_persistent_attrs, gobj_repr_global_trace_levels, gobj_reset_volatil_attrs, gobj_save_persistent_attrs, gobj_search_path, gobj_send_event, gobj_services, gobj_set_bottom_gobj, gobj_set_deep_trace, gobj_set_gclass_no_trace, gobj_set_gclass_trace, gobj_set_global_no_trace, gobj_set_global_trace, gobj_set_gobj_no_trace, gobj_set_gobj_trace, gobj_set_trace_machine_format, gobj_short_name, gobj_start, gobj_start_children, gobj_start_tree, gobj_start_up, gobj_stats, gobj_stop, gobj_stop_children, gobj_stop_tree, gobj_subscribe_event, gobj_trace_level, gobj_trace_machine_format, gobj_trace_no_level, gobj_unsubscribe_event, gobj_unsubscribe_list, gobj_walk_gobj_children, gobj_walk_gobj_children_tree, gobj_write_attr, gobj_write_attrs, gobj_write_bool_attr, gobj_write_integer_attr, gobj_write_str_attr, gobj_yuno, gobj_yuno_id, gobj_yuno_name, gobj_yuno_role, id_index_in_obj_list, index_in_list, is_array, is_boolean, is_date, is_function, is_gobj, is_metadata_key, is_null, is_number, is_object, is_private_key, is_pure_number, is_string, jdb_delete, jdb_get, jdb_get_by_idx, jdb_get_topic, jdb_init, jdb_update, json_array_append, json_array_append_new, json_array_extend, json_array_remove, json_array_size, json_deep_copy, json_is_identical, json_object_del, json_object_get, json_object_set, json_object_set_new, json_object_size, json_object_update, json_object_update_existing, json_object_update_missing, json_size, jwt2json, jwtDecode, kw_clone_by_keys, kw_clone_by_not_keys, kw_collect, kw_delete, kw_find_json_in_list, kw_find_path, kw_flag_t, kw_get_bool, kw_get_dict, kw_get_dict_value, kw_get_int, kw_get_list, kw_get_local_storage_value, kw_get_pointer, kw_get_real, kw_get_str, kw_has_key, kw_match_simple, kw_pop, kw_remove_local_storage_value, kw_select, kw_set_dict_value, kw_set_local_storage_value, kw_set_subdict_value, kwid_collect, kwid_find_one_record, kwid_get_ids, kwid_match_id, kwid_new_dict, list2options, load_json_file, log_debug, log_error, log_info, log_warning, msg_iev_get_msg_type, msg_iev_get_stack, msg_iev_push_stack, msg_iev_read_key, msg_iev_set_msg_type, msg_iev_write_key, node_uuid, parseBoolean, parseSVG, refresh_language, register_c_ievent_cli, register_c_timer, register_c_yuno, safeSrc, sdata_flag_t, send_http_json_post, set_console_log_enabled, set_log_callback, set_remote_log_functions, set_timeout, set_timeout_periodic, sprintf, stats_parser, str_in_list, strcasecmp, strcmp, strncmp, strs_in_list, strstr, template_get_field_desc, timeTracker, trace_json, trace_level_t, trace_msg, treedb_decoder_fkey, treedb_decoder_hook, treedb_encoder_fkey, treedb_get_field_desc, treedb_hook_data_size, vsprintf };
6626
+ export { GObj, SDATA, SDATAAUTHZ, SDATACM, SDATACM2, SDATADF, SDATAPM, SDATAPM0, SDATA_END, SDataDesc, YUNETA_VERSION, __yuno__, build_command_response, build_path, build_stats_response, clean_name, clear_timeout, cmp_two_simple_json, command_parser, createElement2, createOneHtml, create_json_record, create_template_record, current_timestamp, data_type_t, db_list_persistent_attrs, db_load_persistent_attrs, db_remove_persistent_attrs, db_save_persistent_attrs, debounce, delete_from_list, duplicate_objects, empty_string, escapeHtml, event_flag_t, gclass_add_ev_action, gclass_add_event_type, gclass_add_state, gclass_check_fsm, gclass_create, gclass_event_type, gclass_find_by_name, gclass_flag_t, gclass_unregister, getPositionRelativeToBody, get_function_name, get_now, gobj_bottom_gobj, gobj_change_parent, gobj_change_state, gobj_command, gobj_create, gobj_create2, gobj_create_default_service, gobj_create_pure_child, gobj_create_service, gobj_create_volatil, gobj_create_yuno, gobj_current_state, gobj_default_service, gobj_deliver_posted_events, gobj_destroy, gobj_find_child, gobj_find_gobj, gobj_find_service, gobj_find_subscribings, gobj_find_subscriptions, gobj_flag_t, gobj_full_name, gobj_gclass_name, gobj_global_trace_level, gobj_has_attr, gobj_has_event, gobj_has_output_event, gobj_hsdata, gobj_is_destroying, gobj_is_playing, gobj_is_pure_child, gobj_is_running, gobj_is_service, gobj_is_volatil, gobj_list_persistent_attrs, gobj_list_subscriptions, gobj_load_persistent_attrs, gobj_match_children, gobj_match_children_tree, gobj_match_gobj, gobj_name, gobj_parent, gobj_pause, gobj_play, gobj_post_event, gobj_posted_events_size, gobj_publish_event, gobj_read_attr, gobj_read_attrs, gobj_read_bool_attr, gobj_read_integer_attr, gobj_read_pointer_attr, gobj_read_str_attr, gobj_remove_persistent_attrs, gobj_repr_global_trace_levels, gobj_reset_volatil_attrs, gobj_save_persistent_attrs, gobj_search_path, gobj_send_event, gobj_services, gobj_set_bottom_gobj, gobj_set_deep_trace, gobj_set_gclass_no_trace, gobj_set_gclass_trace, gobj_set_global_no_trace, gobj_set_global_trace, gobj_set_gobj_no_trace, gobj_set_gobj_trace, gobj_set_trace_machine_format, gobj_short_name, gobj_start, gobj_start_children, gobj_start_tree, gobj_start_up, gobj_stats, gobj_stop, gobj_stop_children, gobj_stop_tree, gobj_subscribe_event, gobj_trace_level, gobj_trace_machine_format, gobj_trace_no_level, gobj_unsubscribe_event, gobj_unsubscribe_list, gobj_walk_gobj_children, gobj_walk_gobj_children_tree, gobj_write_attr, gobj_write_attrs, gobj_write_bool_attr, gobj_write_integer_attr, gobj_write_str_attr, gobj_yuno, gobj_yuno_id, gobj_yuno_name, gobj_yuno_role, id_index_in_obj_list, index_in_list, is_array, is_boolean, is_date, is_function, is_gobj, is_metadata_key, is_null, is_number, is_object, is_private_key, is_pure_number, is_string, jdb_delete, jdb_get, jdb_get_by_idx, jdb_get_topic, jdb_init, jdb_update, json_array_append, json_array_append_new, json_array_extend, json_array_remove, json_array_size, json_deep_copy, json_is_identical, json_object_del, json_object_get, json_object_set, json_object_set_new, json_object_size, json_object_update, json_object_update_existing, json_object_update_missing, json_size, jwt2json, jwtDecode, kw_clone_by_keys, kw_clone_by_not_keys, kw_collect, kw_delete, kw_find_json_in_list, kw_find_path, kw_flag_t, kw_get_bool, kw_get_dict, kw_get_dict_value, kw_get_int, kw_get_list, kw_get_local_storage_value, kw_get_pointer, kw_get_real, kw_get_str, kw_has_key, kw_match_simple, kw_pop, kw_remove_local_storage_value, kw_select, kw_set_dict_value, kw_set_local_storage_value, kw_set_subdict_value, kwid_collect, kwid_find_one_record, kwid_get_ids, kwid_match_id, kwid_new_dict, list2options, load_json_file, log_debug, log_error, log_info, log_warning, msg_iev_get_msg_type, msg_iev_get_stack, msg_iev_push_stack, msg_iev_read_key, msg_iev_set_msg_type, msg_iev_write_key, node_uuid, parseBoolean, parseSVG, refresh_language, register_c_ievent_cli, register_c_timer, register_c_yuno, safeSrc, sdata_flag_t, send_http_json_post, set_console_log_enabled, set_log_callback, set_remote_log_functions, set_timeout, set_timeout_periodic, sprintf, stats_parser, str_in_list, strcasecmp, strcmp, strncmp, strs_in_list, strstr, template_get_field_desc, timeTracker, trace_json, trace_level_t, trace_msg, treedb_decoder_fkey, treedb_decoder_hook, treedb_encoder_fkey, treedb_get_field_desc, treedb_hook_data_size, vsprintf, walk_type_t };
6604
6627
 
6605
6628
  //# sourceMappingURL=gobj-js.es.js.map