@yuneta/gobj-js 7.9.11 → 7.12.0

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.
@@ -88,9 +88,7 @@ var gobjJs = (function(exports) {
88
88
  case "x":
89
89
  arg = (parseInt(arg, 10) >>> 0).toString(16);
90
90
  break;
91
- case "X":
92
- arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase();
93
- break;
91
+ case "X": arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase();
94
92
  }
95
93
  if (re.json.test(ph.type)) output += arg;
96
94
  else {
@@ -778,9 +776,7 @@ var gobjJs = (function(exports) {
778
776
  }
779
777
  else jn_value = svalue;
780
778
  break;
781
- case data_type_t.DTP_POINTER:
782
- jn_value = svalue;
783
- break;
779
+ case data_type_t.DTP_POINTER: jn_value = svalue;
784
780
  }
785
781
  if (jn_value === void 0) {
786
782
  log_error(`default_value WRONG, it: ${it.name}, value: ${it.default_value}`);
@@ -850,9 +846,7 @@ var gobjJs = (function(exports) {
850
846
  return -1;
851
847
  }
852
848
  break;
853
- case data_type_t.DTP_POINTER:
854
- jn_value2 = jn_value_;
855
- break;
849
+ case data_type_t.DTP_POINTER: jn_value2 = jn_value_;
856
850
  }
857
851
  if (jn_value2 === void 0) log_error(`${gobj_short_name(gobj)}: attr undefined: ${it.name}`);
858
852
  sdata[it.name] = jn_value2;
@@ -1131,6 +1125,7 @@ var gobjJs = (function(exports) {
1131
1125
  } catch (e) {}
1132
1126
  if (!gclass) {
1133
1127
  if (verbose) log_error(`gclass not found: ${gclass_name}`);
1128
+ return null;
1134
1129
  }
1135
1130
  return gclass;
1136
1131
  }
@@ -1155,8 +1150,8 @@ var gobjJs = (function(exports) {
1155
1150
  function gobj_find_service(service_name, verbose) {
1156
1151
  service_name = service_name.toLowerCase();
1157
1152
  let service_gobj = __jn_services__[service_name];
1158
- if (!service_gobj && verbose) {
1159
- log_error(`gobj service not found: ${service_name}`);
1153
+ if (!service_gobj) {
1154
+ if (verbose) log_error(`gobj service not found: ${service_name}`);
1160
1155
  return null;
1161
1156
  }
1162
1157
  return service_gobj;
@@ -1416,6 +1411,7 @@ var gobjJs = (function(exports) {
1416
1411
  gobj_stop(gobj);
1417
1412
  }
1418
1413
  gobj.obflag |= obflag_t.obflag_destroying;
1414
+ purge_posted_events(gobj);
1419
1415
  let trace_creation = __trace_gobj_create_delete__(gobj);
1420
1416
  if (trace_creation) trace_machine(sprintf("💔💔⏩ destroying: %s", gobj_full_name(gobj)));
1421
1417
  let parent = gobj_parent(gobj);
@@ -1571,12 +1567,14 @@ var gobjJs = (function(exports) {
1571
1567
  log_error(`${gobj_short_name(gobj)}: GObj DISABLED`);
1572
1568
  return -1;
1573
1569
  }
1574
- if (!gobj_is_running(gobj)) if (!(gobj.gclass.gclass_flag & gclass_flag_t.gcflag_required_start_to_play)) {
1575
- log_warning(`${gobj_short_name(gobj)}: GObj playing without previous start`);
1576
- gobj_start(gobj);
1577
- } else {
1578
- log_error(`${gobj_short_name(gobj)}: Cannot play, start not done`);
1579
- return -1;
1570
+ if (!gobj_is_running(gobj)) {
1571
+ if (!(gobj.gclass.gclass_flag & gclass_flag_t.gcflag_required_start_to_play)) {
1572
+ log_warning(`${gobj_short_name(gobj)}: GObj playing without previous start`);
1573
+ gobj_start(gobj);
1574
+ } else {
1575
+ log_error(`${gobj_short_name(gobj)}: Cannot play, start not done`);
1576
+ return -1;
1577
+ }
1580
1578
  }
1581
1579
  if (__trace_gobj_start_stop__(gobj)) trace_machine(sprintf("⏯ ⏯ play: %s", gobj_full_name(gobj)));
1582
1580
  gobj.playing = true;
@@ -2355,13 +2353,97 @@ var gobjJs = (function(exports) {
2355
2353
  return true;
2356
2354
  }
2357
2355
  /************************************************************
2358
- * post_event, by now only in js
2356
+ * Posted events: gobj_send_event(), but on the next turn
2357
+ *
2358
+ * Same contract as the C side (see gobj.h). It exists to get out of the
2359
+ * stack you are standing on: gobj_publish_event() dispatches synchronously,
2360
+ * so a subscriber action runs inside the publisher's own stack, and
2361
+ * destroying that publisher there dismantles what is still iterating.
2362
+ *
2363
+ * The queue is drained with setTimeout(0) and NOT with queueMicrotask():
2364
+ * a microtask runs before the browser can paint or handle an input, so a
2365
+ * chain of posted events would hold the page exactly the way it used to
2366
+ * hold the event loop in C. A macrotask gives the browser its turn between
2367
+ * one event and the next.
2368
+ *
2369
+ * Delivery is a SNAPSHOT: the events queued when the drain begins are the
2370
+ * ones delivered in it, and whatever an action posts while it runs waits
2371
+ * for the following turn.
2359
2372
  ************************************************************/
2360
- function gobj_post_event(gobj, event, kw, src) {
2361
- setTimeout(() => {
2362
- if (gobj_is_destroying(gobj)) return;
2363
- gobj_send_event(gobj, event, kw, src);
2364
- }, 10);
2373
+ var MAX_POSTED_EVENTS = 1e4;
2374
+ var __dl_posted_events__ = [];
2375
+ var __posted_events_scheduled__ = false;
2376
+ function gobj_post_event(dst, event, kw, src) {
2377
+ if (!dst || !(dst instanceof GObj)) {
2378
+ log_error(`gobj_post_event(): gobj dst NULL, event ${event}`);
2379
+ return -1;
2380
+ }
2381
+ if (dst.obflag & (obflag_t.obflag_destroyed | obflag_t.obflag_destroying)) {
2382
+ log_error(`gobj_post_event(): gobj dst DESTROYING, event ${event}`);
2383
+ return -1;
2384
+ }
2385
+ if (empty_string(event)) {
2386
+ log_error(`gobj_post_event(): event EMPTY`);
2387
+ return -1;
2388
+ }
2389
+ if (!gobj_has_event(dst, event, 0)) {
2390
+ log_error(`gobj_post_event(): event NOT DEFINED in gclass ${gobj_gclass_name(dst)}, event ${event}`);
2391
+ return -1;
2392
+ }
2393
+ if (__dl_posted_events__.length >= MAX_POSTED_EVENTS) {
2394
+ log_error(`gobj_post_event(): too many posted events, this is NOT a work queue, event ${event}, pending ${__dl_posted_events__.length}`);
2395
+ return -1;
2396
+ }
2397
+ __dl_posted_events__.push({
2398
+ dst,
2399
+ event,
2400
+ kw,
2401
+ src
2402
+ });
2403
+ if (is_machine_tracing(dst, event) && !is_machine_not_tracing(src, event)) trace_machine(sprintf("📬 posted(%s%s), ev: %s, pending: %d", !dst.running ? "!!" : "", gobj_short_name(dst), event, __dl_posted_events__.length));
2404
+ if (!__posted_events_scheduled__) {
2405
+ __posted_events_scheduled__ = true;
2406
+ setTimeout(gobj_deliver_posted_events, 0);
2407
+ }
2408
+ return 0;
2409
+ }
2410
+ /************************************************************
2411
+ * How many posted events wait for delivery
2412
+ ************************************************************/
2413
+ function gobj_posted_events_size() {
2414
+ return __dl_posted_events__.length;
2415
+ }
2416
+ /************************************************************
2417
+ * Deliver the posted events. One turn, one snapshot.
2418
+ ************************************************************/
2419
+ function gobj_deliver_posted_events() {
2420
+ __posted_events_scheduled__ = false;
2421
+ let snapshot = __dl_posted_events__;
2422
+ __dl_posted_events__ = [];
2423
+ let delivered = 0;
2424
+ for (let msg of snapshot) {
2425
+ if (msg.dst.obflag & (obflag_t.obflag_destroyed | obflag_t.obflag_destroying)) continue;
2426
+ gobj_send_event(msg.dst, msg.event, msg.kw, msg.src);
2427
+ delivered++;
2428
+ }
2429
+ if (__dl_posted_events__.length > 0 && !__posted_events_scheduled__) {
2430
+ __posted_events_scheduled__ = true;
2431
+ setTimeout(gobj_deliver_posted_events, 0);
2432
+ }
2433
+ return delivered;
2434
+ }
2435
+ /************************************************************
2436
+ * Take a gobj out of the queue of posted events.
2437
+ *
2438
+ * Called from gobj_destroy(), and the two halves are not the same thing:
2439
+ * as DESTINATION the entry is dropped, as SOURCE only the pointer is
2440
+ * cleared -- the destination still wants its event, and it arrives with
2441
+ * src null, which every action already has to accept.
2442
+ ************************************************************/
2443
+ function purge_posted_events(gobj) {
2444
+ if (__dl_posted_events__.length === 0) return;
2445
+ for (let msg of __dl_posted_events__) if (msg.src === gobj) msg.src = null;
2446
+ __dl_posted_events__ = __dl_posted_events__.filter((msg) => msg.dst !== gobj);
2365
2447
  }
2366
2448
  /************************************************************
2367
2449
  * send_event
@@ -2597,7 +2679,7 @@ var gobjJs = (function(exports) {
2597
2679
  log_error(`subscriber NULL: ev ${event}`);
2598
2680
  return 0;
2599
2681
  }
2600
- const IGNORED_KEYS = new Set([
2682
+ const IGNORED_KEYS = /* @__PURE__ */ new Set([
2601
2683
  "__config__",
2602
2684
  "__global__",
2603
2685
  "__local__",
@@ -2653,7 +2735,7 @@ var gobjJs = (function(exports) {
2653
2735
  log_error(`subscriber NULL: ev ${event}`);
2654
2736
  return 0;
2655
2737
  }
2656
- const IGNORED_KEYS = new Set([
2738
+ const IGNORED_KEYS = /* @__PURE__ */ new Set([
2657
2739
  "__config__",
2658
2740
  "__global__",
2659
2741
  "__local__",
@@ -2847,9 +2929,10 @@ var gobjJs = (function(exports) {
2847
2929
  if (tracea > 1) trace_json(kw);
2848
2930
  }
2849
2931
  if (gobj.gclass.gmt.mt_command_parser) return gobj.gclass.gmt.mt_command_parser(gobj, command, kw, src);
2850
- if (gobj.gclass.command_table) if (__global_command_parser_fn__) return __global_command_parser_fn__(gobj, command, kw, src);
2851
- else return build_command_response(gobj, -1, sprintf("%s: global command parser not available", gobj_short_name(gobj)), 0, 0);
2852
- else return build_command_response(gobj, -1, sprintf("%s: command table not available", gobj_short_name(gobj)), 0, 0);
2932
+ if (gobj.gclass.command_table) {
2933
+ if (__global_command_parser_fn__) return __global_command_parser_fn__(gobj, command, kw, src);
2934
+ else return build_command_response(gobj, -1, sprintf("%s: global command parser not available", gobj_short_name(gobj)), 0, 0);
2935
+ } else return build_command_response(gobj, -1, sprintf("%s: command table not available", gobj_short_name(gobj)), 0, 0);
2853
2936
  }
2854
2937
  /************************************************************
2855
2938
  * Exec gobj stats. Return a webix
@@ -2956,22 +3039,26 @@ var gobjJs = (function(exports) {
2956
3039
  function log_error(format) {
2957
3040
  let msg = format_log(format);
2958
3041
  let hora = current_timestamp();
2959
- if (f_error) if (f_error === _console.error) {
2960
- if (__console_output_enabled__) f_error("%c" + hora + " ERROR: " + String(msg), "color:red");
2961
- } else {
2962
- if (__console_output_enabled__) _console.error("%c" + hora + " ERROR: " + String(msg), "color:red");
2963
- f_error(`${hora} ERROR: ${String(msg)}`);
3042
+ if (f_error) {
3043
+ if (f_error === _console.error) {
3044
+ if (__console_output_enabled__) f_error("%c" + hora + " ERROR: " + String(msg), "color:red");
3045
+ } else {
3046
+ if (__console_output_enabled__) _console.error("%c" + hora + " ERROR: " + String(msg), "color:red");
3047
+ f_error(`${hora} ERROR: ${String(msg)}`);
3048
+ }
2964
3049
  }
2965
3050
  emit_log_callback("error", msg, hora);
2966
3051
  }
2967
3052
  function log_warning(format) {
2968
3053
  let msg = format_log(format);
2969
3054
  let hora = current_timestamp();
2970
- if (f_warning) if (f_warning === _console.warn) {
2971
- if (__console_output_enabled__) f_warning("%c" + hora + " WARNING: " + String(msg), "color:yellow");
2972
- } else {
2973
- if (__console_output_enabled__) _console.warn("%c" + hora + " WARNING: " + String(msg), "color:yellow");
2974
- f_warning(`${hora} WARNING: ${String(msg)}`);
3055
+ if (f_warning) {
3056
+ if (f_warning === _console.warn) {
3057
+ if (__console_output_enabled__) f_warning("%c" + hora + " WARNING: " + String(msg), "color:yellow");
3058
+ } else {
3059
+ if (__console_output_enabled__) _console.warn("%c" + hora + " WARNING: " + String(msg), "color:yellow");
3060
+ f_warning(`${hora} WARNING: ${String(msg)}`);
3061
+ }
2975
3062
  }
2976
3063
  emit_log_callback("warning", msg, hora);
2977
3064
  }
@@ -4007,10 +4094,12 @@ var gobjJs = (function(exports) {
4007
4094
  vv["id"] = field_id;
4008
4095
  vv["value"] = v[field_id];
4009
4096
  } else {
4010
- if (!kw_has_key(v, field_value)) if (json_size(v) > 0) field_value = Object.keys(v)[0];
4011
- else {
4012
- log_error("list2options(): object without field value: " + field_value);
4013
- continue;
4097
+ if (!kw_has_key(v, field_value)) {
4098
+ if (json_size(v) > 0) field_value = Object.keys(v)[0];
4099
+ else {
4100
+ log_error("list2options(): object without field value: " + field_value);
4101
+ continue;
4102
+ }
4014
4103
  }
4015
4104
  vv["id"] = v[field_id];
4016
4105
  vv["value"] = v[field_value];
@@ -4326,13 +4415,15 @@ var gobjJs = (function(exports) {
4326
4415
  if (is_object(v)) v = kw_get_dict_value(null, v, jdb.hook, [], 1);
4327
4416
  v = _jdb_get(v, null, id, false);
4328
4417
  }
4329
- if (ids.length === 0 && v) if (is_array(v)) v.push(kw);
4330
- else if (v["id"] === kw["id"]) Object.assign(v, kw);
4331
- else {
4332
- let v_ = kw_get_dict_value(null, v, jdb.hook, [], 1);
4333
- let v__ = _jdb_get(v_, jdb.hook, kw["id"], false);
4334
- if (v__) Object.assign(v__, kw);
4335
- else v_.push(kw);
4418
+ if (ids.length === 0 && v) {
4419
+ if (is_array(v)) v.push(kw);
4420
+ else if (v["id"] === kw["id"]) Object.assign(v, kw);
4421
+ else {
4422
+ let v_ = kw_get_dict_value(null, v, jdb.hook, [], 1);
4423
+ let v__ = _jdb_get(v_, jdb.hook, kw["id"], false);
4424
+ if (v__) Object.assign(v__, kw);
4425
+ else v_.push(kw);
4426
+ }
4336
4427
  }
4337
4428
  return topic;
4338
4429
  }
@@ -4358,13 +4449,15 @@ var gobjJs = (function(exports) {
4358
4449
  if (is_object(v)) v = kw_get_dict_value(null, v, jdb.hook, null, 0);
4359
4450
  v = _jdb_get(v, null, id, false);
4360
4451
  }
4361
- if (ids.length === 0 && v) if (is_array(v)) {
4362
- let idx = id_index_in_obj_list(v, kw["id"]);
4363
- if (idx >= 0) v.splice(idx, 1);
4364
- } else {
4365
- let v_ = kw_get_dict_value(null, v, jdb.hook, null, 0);
4366
- let idx = id_index_in_obj_list(v_, kw["id"]);
4367
- if (idx >= 0) v_.splice(idx, 1);
4452
+ if (ids.length === 0 && v) {
4453
+ if (is_array(v)) {
4454
+ let idx = id_index_in_obj_list(v, kw["id"]);
4455
+ if (idx >= 0) v.splice(idx, 1);
4456
+ } else {
4457
+ let v_ = kw_get_dict_value(null, v, jdb.hook, null, 0);
4458
+ let idx = id_index_in_obj_list(v_, kw["id"]);
4459
+ if (idx >= 0) v_.splice(idx, 1);
4460
+ }
4368
4461
  }
4369
4462
  return topic;
4370
4463
  }
@@ -5091,41 +5184,42 @@ var gobjJs = (function(exports) {
5091
5184
  * }
5092
5185
  ************************************************************/
5093
5186
  function treedb_decoder_fkey(col, fkey) {
5094
- if (is_string(fkey)) if (fkey.indexOf("^") === -1) {
5095
- let fkey_desc = col.fkey;
5096
- if (json_object_size(fkey_desc) !== 1) {
5097
- log_error("bad fkey 1");
5098
- log_error(col);
5099
- log_error(fkey);
5100
- return null;
5101
- }
5102
- let topic_name;
5103
- let hook_name;
5104
- for (const k of Object.keys(fkey_desc)) {
5105
- topic_name = k;
5106
- hook_name = fkey_desc[k];
5107
- break;
5108
- }
5109
- return {
5110
- topic_name,
5111
- id: fkey,
5112
- hook_name
5113
- };
5114
- } else {
5115
- let tt = fkey.split("^");
5116
- if (tt.length !== 3) {
5117
- log_error("bad fkey 2");
5118
- log_error(col);
5119
- log_error(fkey);
5120
- return null;
5187
+ if (is_string(fkey)) {
5188
+ if (fkey.indexOf("^") === -1) {
5189
+ let fkey_desc = col.fkey;
5190
+ if (json_object_size(fkey_desc) !== 1) {
5191
+ log_error("bad fkey 1");
5192
+ log_error(col);
5193
+ log_error(fkey);
5194
+ return null;
5195
+ }
5196
+ let topic_name;
5197
+ let hook_name;
5198
+ for (const k of Object.keys(fkey_desc)) {
5199
+ topic_name = k;
5200
+ hook_name = fkey_desc[k];
5201
+ break;
5202
+ }
5203
+ return {
5204
+ topic_name,
5205
+ id: fkey,
5206
+ hook_name
5207
+ };
5208
+ } else {
5209
+ let tt = fkey.split("^");
5210
+ if (tt.length !== 3) {
5211
+ log_error("bad fkey 2");
5212
+ log_error(col);
5213
+ log_error(fkey);
5214
+ return null;
5215
+ }
5216
+ return {
5217
+ topic_name: tt[0],
5218
+ id: tt[1],
5219
+ hook_name: tt[2]
5220
+ };
5121
5221
  }
5122
- return {
5123
- topic_name: tt[0],
5124
- id: tt[1],
5125
- hook_name: tt[2]
5126
- };
5127
- }
5128
- else if (is_object(fkey)) return {
5222
+ } else if (is_object(fkey)) return {
5129
5223
  topic_name: fkey.topic_name,
5130
5224
  id: fkey.id,
5131
5225
  hook_name: fkey.hook_name
@@ -5167,38 +5261,39 @@ var gobjJs = (function(exports) {
5167
5261
  * }
5168
5262
  ********************************************/
5169
5263
  function treedb_decoder_hook(col, hook) {
5170
- if (is_string(hook)) if (hook.indexOf("^") === -1) {
5171
- let hook_desc = col.hook;
5172
- if (json_object_size(hook_desc) !== 1) {
5173
- log_error("bad hook 1");
5174
- log_error(col);
5175
- log_error(hook);
5176
- return null;
5177
- }
5178
- let topic_name;
5179
- for (let k of Object.keys(hook_desc)) {
5180
- topic_name = k;
5181
- hook_desc[k];
5182
- break;
5183
- }
5184
- return {
5185
- topic_name,
5186
- id: hook
5187
- };
5188
- } else {
5189
- let tt = hook.split("^");
5190
- if (tt.length !== 2) {
5191
- log_error("bad hook 2");
5192
- log_error(col);
5193
- log_error(hook);
5194
- return null;
5264
+ if (is_string(hook)) {
5265
+ if (hook.indexOf("^") === -1) {
5266
+ let hook_desc = col.hook;
5267
+ if (json_object_size(hook_desc) !== 1) {
5268
+ log_error("bad hook 1");
5269
+ log_error(col);
5270
+ log_error(hook);
5271
+ return null;
5272
+ }
5273
+ let topic_name;
5274
+ for (let k of Object.keys(hook_desc)) {
5275
+ topic_name = k;
5276
+ hook_desc[k];
5277
+ break;
5278
+ }
5279
+ return {
5280
+ topic_name,
5281
+ id: hook
5282
+ };
5283
+ } else {
5284
+ let tt = hook.split("^");
5285
+ if (tt.length !== 2) {
5286
+ log_error("bad hook 2");
5287
+ log_error(col);
5288
+ log_error(hook);
5289
+ return null;
5290
+ }
5291
+ return {
5292
+ topic_name: tt[0],
5293
+ id: tt[1]
5294
+ };
5195
5295
  }
5196
- return {
5197
- topic_name: tt[0],
5198
- id: tt[1]
5199
- };
5200
- }
5201
- else if (is_object(hook)) return {
5296
+ } else if (is_object(hook)) return {
5202
5297
  topic_name: hook.topic_name,
5203
5298
  id: hook.id
5204
5299
  };
@@ -5304,9 +5399,7 @@ var gobjJs = (function(exports) {
5304
5399
  case "template":
5305
5400
  field_desc.enum_list = col.template;
5306
5401
  break;
5307
- case "table":
5308
- field_desc.enum_list = col.table;
5309
- break;
5402
+ case "table": field_desc.enum_list = col.table;
5310
5403
  }
5311
5404
  field_desc.type = f;
5312
5405
  } else if (str_in_list(treedb_field_attributes, f)) switch (f) {
@@ -5319,9 +5412,7 @@ var gobjJs = (function(exports) {
5319
5412
  case "required":
5320
5413
  field_desc.is_required = true;
5321
5414
  break;
5322
- case "hidden":
5323
- field_desc.is_hidden = true;
5324
- break;
5415
+ case "hidden": field_desc.is_hidden = true;
5325
5416
  }
5326
5417
  }
5327
5418
  return field_desc;
@@ -5358,9 +5449,7 @@ var gobjJs = (function(exports) {
5358
5449
  case "required":
5359
5450
  field_desc.is_required = true;
5360
5451
  break;
5361
- case "hidden":
5362
- field_desc.is_hidden = true;
5363
- break;
5452
+ case "hidden": field_desc.is_hidden = true;
5364
5453
  }
5365
5454
  }
5366
5455
  if (!field_desc.real_type) field_desc.real_type = "string";
@@ -5384,7 +5473,8 @@ var gobjJs = (function(exports) {
5384
5473
  Object.entries(template).forEach(([field, col]) => {
5385
5474
  let default_value;
5386
5475
  if (is_object(col)) default_value = col.default;
5387
- new_record[field] = kw_get_dict_value(null, kw, field, default_value);
5476
+ let value = kw_get_dict_value(null, kw, field, default_value);
5477
+ new_record[field] = value;
5388
5478
  });
5389
5479
  return new_record;
5390
5480
  }
@@ -5465,7 +5555,6 @@ var gobjJs = (function(exports) {
5465
5555
  if (priv.msec > 0) {
5466
5556
  if (!gobj_is_running(gobj)) gobj_start(gobj);
5467
5557
  } else if (gobj_is_running(gobj)) gobj_stop(gobj);
5468
- break;
5469
5558
  }
5470
5559
  }
5471
5560
  /***************************************************************
@@ -5824,9 +5913,7 @@ var gobjJs = (function(exports) {
5824
5913
  case "remote_yuno_role":
5825
5914
  priv.remote_yuno_role = gobj_read_str_attr(gobj, "remote_yuno_role");
5826
5915
  break;
5827
- case "remote_yuno_service":
5828
- priv.remote_yuno_service = gobj_read_str_attr(gobj, "remote_yuno_service");
5829
- break;
5916
+ case "remote_yuno_service": priv.remote_yuno_service = gobj_read_str_attr(gobj, "remote_yuno_service");
5830
5917
  }
5831
5918
  }
5832
5919
  /***************************************************************
@@ -6368,12 +6455,13 @@ var gobjJs = (function(exports) {
6368
6455
  return 0;
6369
6456
  }
6370
6457
  let gobj_service = gobj_find_service(iev_dst_service, true);
6371
- if (gobj_service) if (gobj_has_event(gobj_service, iev_event, event_flag_t.EVF_PUBLIC_EVENT)) gobj_send_event(gobj_service, iev_event, iev_kw, gobj);
6372
- else {
6373
- log_error(`${gobj_short_name(gobj)}: Service found but no event or not public, service '${gobj_short_name(gobj_service)}', ev '${iev_event}'`);
6374
- return -1;
6375
- }
6376
- else if (gobj_is_pure_child(gobj)) gobj_send_event(gobj_parent(gobj), iev_event, iev_kw, gobj);
6458
+ if (gobj_service) {
6459
+ if (gobj_has_event(gobj_service, iev_event, event_flag_t.EVF_PUBLIC_EVENT)) gobj_send_event(gobj_service, iev_event, iev_kw, gobj);
6460
+ else {
6461
+ log_error(`${gobj_short_name(gobj)}: Service found but no event or not public, service '${gobj_short_name(gobj_service)}', ev '${iev_event}'`);
6462
+ return -1;
6463
+ }
6464
+ } else if (gobj_is_pure_child(gobj)) gobj_send_event(gobj_parent(gobj), iev_event, iev_kw, gobj);
6377
6465
  else gobj_publish_event(gobj, iev_event, iev_kw);
6378
6466
  return 0;
6379
6467
  }
@@ -6578,6 +6666,7 @@ var gobjJs = (function(exports) {
6578
6666
  exports.gobj_create_yuno = gobj_create_yuno;
6579
6667
  exports.gobj_current_state = gobj_current_state;
6580
6668
  exports.gobj_default_service = gobj_default_service;
6669
+ exports.gobj_deliver_posted_events = gobj_deliver_posted_events;
6581
6670
  exports.gobj_destroy = gobj_destroy;
6582
6671
  exports.gobj_find_child = gobj_find_child;
6583
6672
  exports.gobj_find_gobj = gobj_find_gobj;
@@ -6609,6 +6698,7 @@ var gobjJs = (function(exports) {
6609
6698
  exports.gobj_pause = gobj_pause;
6610
6699
  exports.gobj_play = gobj_play;
6611
6700
  exports.gobj_post_event = gobj_post_event;
6701
+ exports.gobj_posted_events_size = gobj_posted_events_size;
6612
6702
  exports.gobj_publish_event = gobj_publish_event;
6613
6703
  exports.gobj_read_attr = gobj_read_attr;
6614
6704
  exports.gobj_read_attrs = gobj_read_attrs;