@yuneta/gobj-js 7.8.7 → 7.9.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.
@@ -399,6 +399,269 @@ function trace_machine(msg) {
399
399
  if (is_object(msg)) msg = JSON.stringify(msg);
400
400
  log_debug(tab() + String(msg));
401
401
  }
402
+ /***************************************************************
403
+ * Trace levels
404
+ *
405
+ * The SAME names and the SAME bits as the C kernel (gobj.h's
406
+ * enum + gobj.c's s_global_trace_level), so a level means one
407
+ * thing across the two implementations and a habit learned on
408
+ * one side transfers to the other. The levels that only exist
409
+ * on a node (fs, liburing, gbuffers) keep their bit anyway:
410
+ * dropping them would shift every bit above and break exactly
411
+ * that alignment.
412
+ *
413
+ * 16 higher bits are global, 16 lower bits are per-gclass user
414
+ * levels (`s_user_trace_level` in gclass_create).
415
+ ***************************************************************/
416
+ var trace_level_t = Object.freeze({
417
+ TRACE_MACHINE: 65536,
418
+ TRACE_CREATE_DELETE: 131072,
419
+ TRACE_CREATE_DELETE2: 262144,
420
+ TRACE_SUBSCRIPTIONS: 524288,
421
+ TRACE_START_STOP: 1048576,
422
+ TRACE_EV_KW: 2097152,
423
+ TRACE_AUTHZS: 4194304,
424
+ TRACE_STATES: 8388608,
425
+ TRACE_GBUFFERS: 16777216,
426
+ TRACE_TIMER: 33554432,
427
+ TRACE_FS: 67108864,
428
+ TRACE_URING: 134217728,
429
+ TRACE_TIMER_PERIODIC: 268435456,
430
+ TRACE_URING_TIME: 536870912,
431
+ TRACE_COMMANDS: 1073741824
432
+ });
433
+ var TRACE_GLOBAL_LEVEL1 = 268369920;
434
+ var s_global_trace_level = [
435
+ [
436
+ "machine",
437
+ trace_level_t.TRACE_MACHINE,
438
+ "Trace machine"
439
+ ],
440
+ [
441
+ "create_delete",
442
+ trace_level_t.TRACE_CREATE_DELETE,
443
+ "Trace create/delete of gobjs"
444
+ ],
445
+ [
446
+ "create_delete2",
447
+ trace_level_t.TRACE_CREATE_DELETE2,
448
+ "Trace create/delete of gobjs level 2: with kw"
449
+ ],
450
+ [
451
+ "subscriptions",
452
+ trace_level_t.TRACE_SUBSCRIPTIONS,
453
+ "Trace subscriptions of gobjs"
454
+ ],
455
+ [
456
+ "start_stop",
457
+ trace_level_t.TRACE_START_STOP,
458
+ "Trace start/stop of gobjs"
459
+ ],
460
+ [
461
+ "ev_kw",
462
+ trace_level_t.TRACE_EV_KW,
463
+ "Trace event keywords"
464
+ ],
465
+ [
466
+ "authzs",
467
+ trace_level_t.TRACE_AUTHZS,
468
+ "Trace authorizations"
469
+ ],
470
+ [
471
+ "states",
472
+ trace_level_t.TRACE_STATES,
473
+ "Trace change of states"
474
+ ],
475
+ [
476
+ "gbuffers",
477
+ trace_level_t.TRACE_GBUFFERS,
478
+ "Trace gbuffers"
479
+ ],
480
+ [
481
+ "timer",
482
+ trace_level_t.TRACE_TIMER,
483
+ "Trace timers"
484
+ ],
485
+ [
486
+ "fs",
487
+ trace_level_t.TRACE_FS,
488
+ "Trace file system"
489
+ ],
490
+ [
491
+ "liburing",
492
+ trace_level_t.TRACE_URING,
493
+ "Trace liburing mixins"
494
+ ],
495
+ [
496
+ "timer_periodic",
497
+ trace_level_t.TRACE_TIMER_PERIODIC,
498
+ "Trace periodic timers"
499
+ ],
500
+ [
501
+ "liburing_timer",
502
+ trace_level_t.TRACE_URING_TIME,
503
+ "Trace liburing timer"
504
+ ],
505
+ [
506
+ "commands",
507
+ trace_level_t.TRACE_COMMANDS,
508
+ "Trace commands"
509
+ ]
510
+ ];
511
+ var __global_trace_level__ = 0;
512
+ var __global_trace_no_level__ = 0;
513
+ var __deep_trace__ = 0;
514
+ function level2bit(level) {
515
+ for (const [name, bit] of s_global_trace_level) if (name === level) return bit;
516
+ return 0;
517
+ }
518
+ function trace_bitmask(level, who) {
519
+ if (empty_string(level)) return TRACE_GLOBAL_LEVEL1;
520
+ if (/^[0-9]+$/.test(String(level))) {
521
+ const n = Number(level);
522
+ if (n) return n;
523
+ }
524
+ const bit = level2bit(String(level));
525
+ if (!bit) {
526
+ log_error(`${who}: trace level NOT FOUND: ${level}`);
527
+ return 0;
528
+ }
529
+ return bit;
530
+ }
531
+ /************************************************************
532
+ * The levels in force for a gobj: global, plus its gclass's,
533
+ * plus its own — the union, exactly as the C kernel computes
534
+ * it in gobj_trace_level().
535
+ ************************************************************/
536
+ function gobj_trace_level(gobj) {
537
+ if (__deep_trace__) return 4294967295;
538
+ let bitmask = __global_trace_level__;
539
+ if (gobj) {
540
+ bitmask |= gobj.trace_level || 0;
541
+ if (gobj.gclass) bitmask |= gobj.gclass.trace_level || 0;
542
+ }
543
+ return bitmask;
544
+ }
545
+ function gobj_trace_no_level(gobj) {
546
+ let bitmask = __global_trace_no_level__;
547
+ if (gobj) {
548
+ bitmask |= gobj.no_trace_level || 0;
549
+ if (gobj.gclass) bitmask |= gobj.gclass.no_trace_level || 0;
550
+ }
551
+ return bitmask;
552
+ }
553
+ function legacy_yuno_trace_bits() {
554
+ if (!__yuno__ || !__yuno__.jn_attrs) return 0;
555
+ let bits = 0;
556
+ if (gobj_has_attr(__yuno__, "tracing")) {
557
+ const tracing = Number(gobj_read_attr(__yuno__, "tracing")) || 0;
558
+ if (tracing >= 1) bits |= trace_level_t.TRACE_MACHINE;
559
+ if (tracing >= 2) bits |= trace_level_t.TRACE_EV_KW;
560
+ }
561
+ if (gobj_has_attr(__yuno__, "trace_timer") && gobj_read_attr(__yuno__, "trace_timer")) bits |= trace_level_t.TRACE_TIMER;
562
+ if (gobj_has_attr(__yuno__, "trace_creation") && gobj_read_attr(__yuno__, "trace_creation")) bits |= trace_level_t.TRACE_CREATE_DELETE;
563
+ if (gobj_has_attr(__yuno__, "trace_start_stop") && gobj_read_attr(__yuno__, "trace_start_stop")) bits |= trace_level_t.TRACE_START_STOP;
564
+ return bits;
565
+ }
566
+ function __trace_gobj_create_delete__(gobj) {
567
+ return (gobj_trace_level(gobj) | legacy_yuno_trace_bits()) & trace_level_t.TRACE_CREATE_DELETE;
568
+ }
569
+ function __trace_gobj_start_stop__(gobj) {
570
+ return (gobj_trace_level(gobj) | legacy_yuno_trace_bits()) & trace_level_t.TRACE_START_STOP;
571
+ }
572
+ function __trace_gobj_ev_kw__(gobj) {
573
+ return (gobj_trace_level(gobj) | legacy_yuno_trace_bits()) & trace_level_t.TRACE_EV_KW;
574
+ }
575
+ function __trace_gobj_states__(gobj) {
576
+ return gobj_trace_level(gobj) & trace_level_t.TRACE_STATES;
577
+ }
578
+ /************************************************************
579
+ * Must trace? — the C kernel's is_machine_tracing(), including
580
+ * the two event-specific levels: `timer` and `timer_periodic`
581
+ * light up only for their own event.
582
+ ************************************************************/
583
+ function is_machine_tracing(gobj, event) {
584
+ if (__deep_trace__ > 1) return true;
585
+ if (!gobj) return false;
586
+ const level = gobj_trace_level(gobj) | legacy_yuno_trace_bits();
587
+ return level & trace_level_t.TRACE_MACHINE || level & trace_level_t.TRACE_TIMER_PERIODIC && event === "EV_TIMEOUT_PERIODIC" || level & trace_level_t.TRACE_TIMER && event === "EV_TIMEOUT" ? true : false;
588
+ }
589
+ /************************************************************
590
+ * Must NOT trace? Asked of the SOURCE, so a noisy sender can
591
+ * be silenced without turning the destination off.
592
+ ************************************************************/
593
+ function is_machine_not_tracing(gobj, event) {
594
+ if (__deep_trace__ > 1) return false;
595
+ if (!gobj) return true;
596
+ const level = gobj_trace_no_level(gobj);
597
+ return level & trace_level_t.TRACE_MACHINE || level & trace_level_t.TRACE_TIMER_PERIODIC && event === "EV_TIMEOUT_PERIODIC" || level & trace_level_t.TRACE_TIMER && event === "EV_TIMEOUT" ? true : false;
598
+ }
599
+ /************************************************************
600
+ * The setters — same signatures as the C kernel
601
+ ************************************************************/
602
+ function gobj_set_global_trace(level, set) {
603
+ const bitmask = trace_bitmask(level, "gobj_set_global_trace");
604
+ if (!bitmask) return -1;
605
+ if (set) __global_trace_level__ |= bitmask;
606
+ else __global_trace_level__ &= ~bitmask;
607
+ return 0;
608
+ }
609
+ function gobj_set_global_no_trace(level, set) {
610
+ const bitmask = trace_bitmask(level, "gobj_set_global_no_trace");
611
+ if (!bitmask) return -1;
612
+ if (set) __global_trace_no_level__ |= bitmask;
613
+ else __global_trace_no_level__ &= ~bitmask;
614
+ return 0;
615
+ }
616
+ function gobj_global_trace_level() {
617
+ return __global_trace_level__;
618
+ }
619
+ function gobj_set_deep_trace(value) {
620
+ __deep_trace__ = Number(value) || 0;
621
+ return 0;
622
+ }
623
+ function gobj_set_gclass_trace(gclass, level, set) {
624
+ const gclass_ = is_string(gclass) ? gclass_find_by_name(gclass) : gclass;
625
+ if (!gclass_) {
626
+ log_error(`gobj_set_gclass_trace: gclass NOT FOUND: ${gclass}`);
627
+ return -1;
628
+ }
629
+ const bitmask = trace_bitmask(level, "gobj_set_gclass_trace");
630
+ if (!bitmask) return -1;
631
+ if (set) gclass_.trace_level |= bitmask;
632
+ else gclass_.trace_level &= ~bitmask;
633
+ return 0;
634
+ }
635
+ function gobj_set_gobj_trace(gobj, level, set) {
636
+ if (!gobj) {
637
+ log_error(`gobj_set_gobj_trace: gobj NULL`);
638
+ return -1;
639
+ }
640
+ const bitmask = trace_bitmask(level, "gobj_set_gobj_trace");
641
+ if (!bitmask) return -1;
642
+ if (set) gobj.trace_level |= bitmask;
643
+ else gobj.trace_level &= ~bitmask;
644
+ return 0;
645
+ }
646
+ function gobj_set_gobj_no_trace(gobj, level, set) {
647
+ if (!gobj) {
648
+ log_error(`gobj_set_gobj_no_trace: gobj NULL`);
649
+ return -1;
650
+ }
651
+ const bitmask = trace_bitmask(level, "gobj_set_gobj_no_trace");
652
+ if (!bitmask) return -1;
653
+ if (set) gobj.no_trace_level |= bitmask;
654
+ else gobj.no_trace_level &= ~bitmask;
655
+ return 0;
656
+ }
657
+ function gobj_repr_global_trace_levels() {
658
+ return s_global_trace_level.map(([name, bit, description]) => ({
659
+ name,
660
+ bit,
661
+ description,
662
+ set: __global_trace_level__ & bit ? true : false
663
+ }));
664
+ }
402
665
  /************************************************************
403
666
  * Start up
404
667
  ************************************************************/
@@ -1079,7 +1342,7 @@ function gobj_create2(gobj_name, gclass_name, kw, parent, gobj_flag) {
1079
1342
  let gobj = new GObj(gobj_name, gclass, kw, parent, gobj_flag);
1080
1343
  gobj.jn_attrs = sdata_create(gobj, gclass.attrs_table);
1081
1344
  for (const [key, value] of Object.entries(gobj.jn_attrs)) if (key in gobj.priv) gobj.priv[key] = value;
1082
- let trace_creation = __yuno__ && gobj_read_bool_attr(__yuno__, "trace_creation");
1345
+ let trace_creation = __trace_gobj_create_delete__(gobj);
1083
1346
  if (trace_creation) trace_machine(sprintf("💙💙⏩ creating: %s^%s", gclass.gclass_name, gobj_name));
1084
1347
  if (gobj.gobj_flag & gobj_flag_t.gobj_flag_service) _register_service(gobj);
1085
1348
  if (gobj.gobj_flag & gobj_flag_t.gobj_flag_yuno) __yuno__ = gobj;
@@ -1130,15 +1393,6 @@ function gobj_destroy(gobj) {
1130
1393
  return;
1131
1394
  }
1132
1395
  if (gobj.__refs__ > 0) log_error(`${gobj_short_name(gobj)}: gobj DESTROYING with references: ${gobj.__refs__}`);
1133
- gobj.obflag |= obflag_t.obflag_destroying;
1134
- let trace_creation = __yuno__ && gobj_read_bool_attr(__yuno__, "trace_creation");
1135
- if (trace_creation) trace_machine(sprintf("💔💔⏩ destroying: %s", gobj_full_name(gobj)));
1136
- let parent = gobj_parent(gobj);
1137
- if (parent && parent.gclass.gmt.mt_child_removed) {
1138
- if (trace_creation) trace_machine(sprintf("👦👦🔴 child_removed(%s): %s", gobj_full_name(parent), gobj_short_name(gobj)));
1139
- parent.gclass.gmt.mt_child_removed(parent, gobj);
1140
- }
1141
- if (gobj.gobj_flag & gobj_flag_t.gobj_flag_service) _deregister_service(gobj);
1142
1396
  if (gobj.playing) {
1143
1397
  log_error(`Destroying a PLAYING gobj: ${gobj_full_name(gobj)}`);
1144
1398
  gobj_pause(gobj);
@@ -1147,6 +1401,15 @@ function gobj_destroy(gobj) {
1147
1401
  log_error(`Destroying a RUNNING gobj: ${gobj_full_name(gobj)}`);
1148
1402
  gobj_stop(gobj);
1149
1403
  }
1404
+ gobj.obflag |= obflag_t.obflag_destroying;
1405
+ let trace_creation = __trace_gobj_create_delete__(gobj);
1406
+ if (trace_creation) trace_machine(sprintf("💔💔⏩ destroying: %s", gobj_full_name(gobj)));
1407
+ let parent = gobj_parent(gobj);
1408
+ if (parent && parent.gclass.gmt.mt_child_removed) {
1409
+ if (trace_creation) trace_machine(sprintf("👦👦🔴 child_removed(%s): %s", gobj_full_name(parent), gobj_short_name(gobj)));
1410
+ parent.gclass.gmt.mt_child_removed(parent, gobj);
1411
+ }
1412
+ if (gobj.gobj_flag & gobj_flag_t.gobj_flag_service) _deregister_service(gobj);
1150
1413
  gobj_unsubscribe_list(gobj, gobj.dl_subscriptions, true);
1151
1414
  gobj_unsubscribe_list(gobj, gobj.dl_subscribings, true);
1152
1415
  if (parent) {
@@ -1189,7 +1452,7 @@ function gobj_start(gobj) {
1189
1452
  log_error(`${gobj_short_name(gobj)}: GObj DISABLED`);
1190
1453
  return -1;
1191
1454
  }
1192
- if (__yuno__ && gobj_read_bool_attr(__yuno__, "trace_start_stop")) trace_machine(sprintf("⏺ ⏺ start: %s", gobj_full_name(gobj)));
1455
+ if (__trace_gobj_start_stop__(gobj)) trace_machine(sprintf("⏺ ⏺ start: %s", gobj_full_name(gobj)));
1193
1456
  gobj.running = true;
1194
1457
  let ret = 0;
1195
1458
  if (gobj.gclass.gmt.mt_start) ret = gobj.gclass.gmt.mt_start(gobj);
@@ -1224,7 +1487,7 @@ function gobj_start_tree(gobj) {
1224
1487
  log_error("gobj NULL or DESTROYED");
1225
1488
  return -1;
1226
1489
  }
1227
- if (__yuno__ && gobj_read_bool_attr(__yuno__, "trace_start_stop")) trace_machine(sprintf("⏺ ⏺ ⏺ ⏺ start_tree: %s", gobj_full_name(gobj)));
1490
+ if (__trace_gobj_start_stop__(gobj)) trace_machine(sprintf("⏺ ⏺ ⏺ ⏺ start_tree: %s", gobj_full_name(gobj)));
1228
1491
  if (gobj.gclass.gclass_flag & gclass_flag_t.gcflag_manual_start) return 0;
1229
1492
  else if (gobj.disabled) return 0;
1230
1493
  else if (!gobj.running) gobj_start(gobj);
@@ -1246,7 +1509,7 @@ function gobj_stop(gobj) {
1246
1509
  log_warning(`${gobj_short_name(gobj)}: GObj stopping without previous pause`);
1247
1510
  gobj_pause(gobj);
1248
1511
  }
1249
- if (__yuno__ && gobj_read_bool_attr(__yuno__, "trace_start_stop")) trace_machine(sprintf("⏹ ⏹ stop: %s", gobj_full_name(gobj)));
1512
+ if (__trace_gobj_start_stop__(gobj)) trace_machine(sprintf("⏹ ⏹ stop: %s", gobj_full_name(gobj)));
1250
1513
  gobj.running = false;
1251
1514
  let ret = 0;
1252
1515
  if (gobj.gclass.gmt.mt_stop) ret = gobj.gclass.gmt.mt_stop(gobj);
@@ -1274,7 +1537,7 @@ function gobj_stop_tree(gobj) {
1274
1537
  log_error("gobj NULL or DESTROYED");
1275
1538
  return -1;
1276
1539
  }
1277
- if (__yuno__ && gobj_read_bool_attr(__yuno__, "trace_start_stop")) trace_machine(sprintf("⏹ ⏹ ⏹ ⏹ stop_tree: %s", gobj_full_name(gobj)));
1540
+ if (__trace_gobj_start_stop__(gobj)) trace_machine(sprintf("⏹ ⏹ ⏹ ⏹ stop_tree: %s", gobj_full_name(gobj)));
1278
1541
  if (gobj_is_running(gobj)) gobj_stop(gobj);
1279
1542
  return gobj_walk_gobj_children_tree(gobj, walk_type_t.WALK_TOP2BOTTOM, cb_stop_child, 0, 0);
1280
1543
  }
@@ -1301,7 +1564,7 @@ function gobj_play(gobj) {
1301
1564
  log_error(`${gobj_short_name(gobj)}: Cannot play, start not done`);
1302
1565
  return -1;
1303
1566
  }
1304
- if (__yuno__ && gobj_read_bool_attr(__yuno__, "trace_start_stop")) trace_machine(sprintf("⏯ ⏯ play: %s", gobj_full_name(gobj)));
1567
+ if (__trace_gobj_start_stop__(gobj)) trace_machine(sprintf("⏯ ⏯ play: %s", gobj_full_name(gobj)));
1305
1568
  gobj.playing = true;
1306
1569
  let ret = 0;
1307
1570
  if (gobj.gclass.gmt.mt_play) {
@@ -1322,7 +1585,7 @@ function gobj_pause(gobj) {
1322
1585
  log_error(`${gobj_short_name(gobj)}: GObj NOT PLAYING`);
1323
1586
  return -1;
1324
1587
  }
1325
- if (__yuno__ && gobj_read_bool_attr(__yuno__, "trace_start_stop")) trace_machine(sprintf("⏸ ⏸ pause: %s", gobj_full_name(gobj)));
1588
+ if (__trace_gobj_start_stop__(gobj)) trace_machine(sprintf("⏸ ⏸ pause: %s", gobj_full_name(gobj)));
1326
1589
  gobj.playing = false;
1327
1590
  if (gobj.gclass.gmt.mt_pause) return gobj.gclass.gmt.mt_pause(gobj);
1328
1591
  else return 0;
@@ -1999,6 +2262,9 @@ function gobj_change_state(gobj, state_name) {
1999
2262
  }
2000
2263
  gobj.last_state = gobj.current_state;
2001
2264
  gobj.current_state = new_state;
2265
+ let tracea = is_machine_tracing(gobj, "EV_STATE_CHANGED");
2266
+ let tracea_states = __trace_gobj_states__(gobj) ? true : false;
2267
+ if (tracea || tracea_states) trace_machine(sprintf("🔀🔀 mach(%s%s^%s), new st(%s), prev st(%s)", !gobj.running ? "!!" : "", gobj_gclass_name(gobj), gobj_name(gobj), gobj_current_state(gobj), gobj.last_state.state_name));
2002
2268
  return true;
2003
2269
  }
2004
2270
  /***************************************************************************
@@ -2030,7 +2296,7 @@ function gobj_change_parent(gobj, parent) {
2030
2296
  }
2031
2297
  _add_child(parent, gobj);
2032
2298
  if (parent.mt_child_added) {
2033
- if (__yuno__ && gobj_read_bool_attr(__yuno__, "trace_creation")) log_debug(sprintf("👦👦🔵 child_added(%s): %s", gobj_full_name(parent), gobj_short_name(gobj)));
2299
+ if (__trace_gobj_create_delete__(gobj)) log_debug(sprintf("👦👦🔵 child_added(%s): %s", gobj_full_name(parent), gobj_short_name(gobj)));
2034
2300
  parent.mt_child_added(parent, gobj);
2035
2301
  }
2036
2302
  return 0;
@@ -2100,9 +2366,7 @@ function gobj_send_event(dst, event, kw, src) {
2100
2366
  log_error(`${gobj_short_name(dst)}: current_state NULL`);
2101
2367
  return -1;
2102
2368
  }
2103
- let tracea = 0;
2104
- tracea = __yuno__ && gobj_read_integer_attr(__yuno__, "tracing");
2105
- if (gobj_gclass_name(src) === "C_TIMER") tracea = __yuno__ && gobj_read_integer_attr(__yuno__, "trace_timer");
2369
+ let tracea = is_machine_tracing(dst, event) && !is_machine_not_tracing(src, event);
2106
2370
  __inside__++;
2107
2371
  let event_action = _find_event_action(state, event);
2108
2372
  if (!event_action) {
@@ -2131,7 +2395,7 @@ function gobj_send_event(dst, event, kw, src) {
2131
2395
  trace_machine(sprintf("🔄 mach(%s%s^%s), st: %s, ev: %s%s%s, ac: %s, from(%s%s^%s)", !dst.running ? "!!" : "", gobj_gclass_name(dst), gobj_name(dst), state.state_name, "", event ? event : "", "", action_name, src && !src.running ? "!!" : "", gobj_gclass_name(src), gobj_name(src)));
2132
2396
  }
2133
2397
  if (kw) {
2134
- if (tracea > 1) {
2398
+ if (__trace_gobj_ev_kw__(dst)) {
2135
2399
  if (json_object_size(kw)) trace_json(kw);
2136
2400
  }
2137
2401
  }
@@ -2678,10 +2942,10 @@ function format_log(format) {
2678
2942
  function log_error(format) {
2679
2943
  let msg = format_log(format);
2680
2944
  let hora = current_timestamp();
2681
- if (f_error) if (f_error === window.console.error) {
2945
+ if (f_error) if (f_error === _console.error) {
2682
2946
  if (__console_output_enabled__) f_error("%c" + hora + " ERROR: " + String(msg), "color:red");
2683
2947
  } else {
2684
- if (__console_output_enabled__) window.console.error("%c" + hora + " ERROR: " + String(msg), "color:red");
2948
+ if (__console_output_enabled__) _console.error("%c" + hora + " ERROR: " + String(msg), "color:red");
2685
2949
  f_error(`${hora} ERROR: ${String(msg)}`);
2686
2950
  }
2687
2951
  emit_log_callback("error", msg, hora);
@@ -2689,10 +2953,10 @@ function log_error(format) {
2689
2953
  function log_warning(format) {
2690
2954
  let msg = format_log(format);
2691
2955
  let hora = current_timestamp();
2692
- if (f_warning) if (f_warning === window.console.warn) {
2956
+ if (f_warning) if (f_warning === _console.warn) {
2693
2957
  if (__console_output_enabled__) f_warning("%c" + hora + " WARNING: " + String(msg), "color:yellow");
2694
2958
  } else {
2695
- if (__console_output_enabled__) window.console.warn("%c" + hora + " WARNING: " + String(msg), "color:yellow");
2959
+ if (__console_output_enabled__) _console.warn("%c" + hora + " WARNING: " + String(msg), "color:yellow");
2696
2960
  f_warning(`${hora} WARNING: ${String(msg)}`);
2697
2961
  }
2698
2962
  emit_log_callback("warning", msg, hora);
@@ -6219,6 +6483,6 @@ function register_c_ievent_cli() {
6219
6483
  return create_gclass(GCLASS_NAME);
6220
6484
  }
6221
6485
  //#endregion
6222
- 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_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_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_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_reset_volatil_attrs, gobj_save_persistent_attrs, gobj_search_path, gobj_send_event, gobj_services, gobj_set_bottom_gobj, 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_machine_format, 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_msg, treedb_decoder_fkey, treedb_decoder_hook, treedb_encoder_fkey, treedb_get_field_desc, treedb_hook_data_size, vsprintf };
6486
+ 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_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_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_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 };
6223
6487
 
6224
6488
  //# sourceMappingURL=gobj-js.es.js.map