@yuneta/gobj-js 7.21.0 → 7.22.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.
- package/README.md +21 -3
- package/dist/gobj-js.cjs.js +239 -47
- package/dist/gobj-js.cjs.js.map +1 -1
- package/dist/gobj-js.cjs.min.js +1379 -1275
- package/dist/gobj-js.cjs.min.js.map +1 -1
- package/dist/gobj-js.es.js +232 -48
- package/dist/gobj-js.es.js.map +1 -1
- package/dist/gobj-js.es.min.js +1222 -1123
- package/dist/gobj-js.es.min.js.map +1 -1
- package/dist/gobj-js.iife.js +239 -47
- package/dist/gobj-js.iife.js.map +1 -1
- package/dist/gobj-js.iife.min.js +1654 -1550
- package/dist/gobj-js.iife.min.js.map +1 -1
- package/dist/gobj-js.umd.js +239 -47
- package/dist/gobj-js.umd.js.map +1 -1
- package/dist/gobj-js.umd.min.js +1648 -1544
- package/dist/gobj-js.umd.min.js.map +1 -1
- package/package.json +1 -1
package/dist/gobj-js.es.js
CHANGED
|
@@ -193,7 +193,7 @@ function build_stats_response(gobj, result, comment, schema, data) {
|
|
|
193
193
|
*
|
|
194
194
|
* Licence: MIT (http://www.opensource.org/licenses/mit-license)
|
|
195
195
|
* Copyright (c) 2014,2024 Niyamaka.
|
|
196
|
-
* Copyright (c) 2025, ArtGins.
|
|
196
|
+
* Copyright (c) 2025-2026, ArtGins.
|
|
197
197
|
*********************************************************************************/
|
|
198
198
|
/**************************************************************************
|
|
199
199
|
* Constants
|
|
@@ -428,6 +428,7 @@ var trace_level_t = Object.freeze({
|
|
|
428
428
|
TRACE_URING_TIME: 536870912,
|
|
429
429
|
TRACE_COMMANDS: 1073741824
|
|
430
430
|
});
|
|
431
|
+
var TRACE_USER_LEVEL = 65535;
|
|
431
432
|
var TRACE_GLOBAL_LEVEL1 = 268369920;
|
|
432
433
|
var s_global_trace_level = [
|
|
433
434
|
[
|
|
@@ -509,17 +510,28 @@ var s_global_trace_level = [
|
|
|
509
510
|
var __global_trace_level__ = 0;
|
|
510
511
|
var __global_trace_no_level__ = 0;
|
|
511
512
|
var __deep_trace__ = 0;
|
|
512
|
-
function level2bit(level) {
|
|
513
|
+
function level2bit(level, s_user_trace_level) {
|
|
513
514
|
for (const [name, bit] of s_global_trace_level) if (name === level) return bit;
|
|
515
|
+
if (Array.isArray(s_user_trace_level)) {
|
|
516
|
+
for (let i = 0; i < s_user_trace_level.length && i < 16; i++) if (s_user_trace_level[i] && s_user_trace_level[i][0] === level) return 1 << i;
|
|
517
|
+
}
|
|
514
518
|
return 0;
|
|
515
519
|
}
|
|
516
|
-
function
|
|
517
|
-
|
|
520
|
+
function bit2level(bitmask, s_user_trace_level) {
|
|
521
|
+
let levels = [];
|
|
522
|
+
for (const [name, bit] of s_global_trace_level) if (bitmask & bit) levels.push(name);
|
|
523
|
+
if (Array.isArray(s_user_trace_level)) {
|
|
524
|
+
for (let i = 0; i < s_user_trace_level.length && i < 16; i++) if (s_user_trace_level[i] && bitmask & 1 << i) levels.push(s_user_trace_level[i][0]);
|
|
525
|
+
}
|
|
526
|
+
return levels;
|
|
527
|
+
}
|
|
528
|
+
function trace_bitmask(level, who, s_user_trace_level) {
|
|
529
|
+
if (empty_string(level)) return s_user_trace_level === void 0 ? TRACE_GLOBAL_LEVEL1 : TRACE_USER_LEVEL;
|
|
518
530
|
if (/^[0-9]+$/.test(String(level))) {
|
|
519
531
|
const n = Number(level);
|
|
520
532
|
if (n) return n;
|
|
521
533
|
}
|
|
522
|
-
const bit = level2bit(String(level));
|
|
534
|
+
const bit = level2bit(String(level), s_user_trace_level);
|
|
523
535
|
if (!bit) {
|
|
524
536
|
log_error(`${who}: trace level NOT FOUND: ${level}`);
|
|
525
537
|
return 0;
|
|
@@ -548,32 +560,30 @@ function gobj_trace_no_level(gobj) {
|
|
|
548
560
|
}
|
|
549
561
|
return bitmask;
|
|
550
562
|
}
|
|
551
|
-
function legacy_yuno_trace_bits() {
|
|
552
|
-
if (!__yuno__ || !__yuno__.jn_attrs) return 0;
|
|
553
|
-
let bits = 0;
|
|
554
|
-
if (gobj_has_attr(__yuno__, "tracing")) {
|
|
555
|
-
const tracing = Number(gobj_read_attr(__yuno__, "tracing")) || 0;
|
|
556
|
-
if (tracing >= 1) bits |= trace_level_t.TRACE_MACHINE;
|
|
557
|
-
if (tracing >= 2) bits |= trace_level_t.TRACE_EV_KW;
|
|
558
|
-
}
|
|
559
|
-
if (gobj_has_attr(__yuno__, "trace_timer") && gobj_read_attr(__yuno__, "trace_timer")) bits |= trace_level_t.TRACE_TIMER;
|
|
560
|
-
if (gobj_has_attr(__yuno__, "trace_creation") && gobj_read_attr(__yuno__, "trace_creation")) bits |= trace_level_t.TRACE_CREATE_DELETE;
|
|
561
|
-
if (gobj_has_attr(__yuno__, "trace_start_stop") && gobj_read_attr(__yuno__, "trace_start_stop")) bits |= trace_level_t.TRACE_START_STOP;
|
|
562
|
-
return bits;
|
|
563
|
-
}
|
|
564
563
|
function __trace_gobj_create_delete__(gobj) {
|
|
565
|
-
return
|
|
564
|
+
return gobj_trace_level(gobj) & trace_level_t.TRACE_CREATE_DELETE;
|
|
565
|
+
}
|
|
566
|
+
function __trace_gobj_subscriptions__(gobj) {
|
|
567
|
+
return gobj_trace_level(gobj) & trace_level_t.TRACE_SUBSCRIPTIONS;
|
|
566
568
|
}
|
|
567
569
|
function __trace_gobj_start_stop__(gobj) {
|
|
568
|
-
return
|
|
570
|
+
return gobj_trace_level(gobj) & trace_level_t.TRACE_START_STOP;
|
|
569
571
|
}
|
|
570
572
|
function __trace_gobj_ev_kw__(gobj) {
|
|
571
|
-
return
|
|
573
|
+
return gobj_trace_level(gobj) & trace_level_t.TRACE_EV_KW;
|
|
572
574
|
}
|
|
573
575
|
function __trace_gobj_states__(gobj) {
|
|
574
576
|
return gobj_trace_level(gobj) & trace_level_t.TRACE_STATES;
|
|
575
577
|
}
|
|
576
578
|
/************************************************************
|
|
579
|
+
* Must trace a command? — the C kernel's is_commands_tracing()
|
|
580
|
+
************************************************************/
|
|
581
|
+
function is_commands_tracing(gobj) {
|
|
582
|
+
if (__deep_trace__ > 1) return true;
|
|
583
|
+
if (!gobj) return false;
|
|
584
|
+
return gobj_trace_level(gobj) & trace_level_t.TRACE_COMMANDS ? true : false;
|
|
585
|
+
}
|
|
586
|
+
/************************************************************
|
|
577
587
|
* Must trace? — the C kernel's is_machine_tracing(), including
|
|
578
588
|
* the two event-specific levels: `timer` and `timer_periodic`
|
|
579
589
|
* light up only for their own event.
|
|
@@ -581,7 +591,7 @@ function __trace_gobj_states__(gobj) {
|
|
|
581
591
|
function is_machine_tracing(gobj, event) {
|
|
582
592
|
if (__deep_trace__ > 1) return true;
|
|
583
593
|
if (!gobj) return false;
|
|
584
|
-
const level = gobj_trace_level(gobj)
|
|
594
|
+
const level = gobj_trace_level(gobj);
|
|
585
595
|
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;
|
|
586
596
|
}
|
|
587
597
|
/************************************************************
|
|
@@ -614,6 +624,49 @@ function gobj_set_global_no_trace(level, set) {
|
|
|
614
624
|
function gobj_global_trace_level() {
|
|
615
625
|
return __global_trace_level__;
|
|
616
626
|
}
|
|
627
|
+
function gobj_global_trace_no_level() {
|
|
628
|
+
return __global_trace_no_level__;
|
|
629
|
+
}
|
|
630
|
+
function gobj_set_global_trace2(bitmask, set) {
|
|
631
|
+
if (set) __global_trace_level__ = (__global_trace_level__ | bitmask) >>> 0;
|
|
632
|
+
else __global_trace_level__ = (__global_trace_level__ & ~bitmask) >>> 0;
|
|
633
|
+
return 0;
|
|
634
|
+
}
|
|
635
|
+
function gobj_set_global_no_trace2(bitmask, set) {
|
|
636
|
+
if (set) __global_trace_no_level__ = (__global_trace_no_level__ | bitmask) >>> 0;
|
|
637
|
+
else __global_trace_no_level__ = (__global_trace_no_level__ & ~bitmask) >>> 0;
|
|
638
|
+
return 0;
|
|
639
|
+
}
|
|
640
|
+
function gobj_get_global_trace_level() {
|
|
641
|
+
return bit2level(__global_trace_level__, null);
|
|
642
|
+
}
|
|
643
|
+
function gobj_get_global_trace_no_level() {
|
|
644
|
+
return bit2level(__global_trace_no_level__, null);
|
|
645
|
+
}
|
|
646
|
+
function gobj_get_gclass_trace_level(gclass) {
|
|
647
|
+
const gclass_ = is_string(gclass) ? gclass_find_by_name(gclass) : gclass;
|
|
648
|
+
if (!gclass_) {
|
|
649
|
+
log_error(`gobj_get_gclass_trace_level: gclass NOT FOUND: ${gclass}`);
|
|
650
|
+
return [];
|
|
651
|
+
}
|
|
652
|
+
return bit2level(gclass_.trace_level | __global_trace_level__, gclass_.s_user_trace_level);
|
|
653
|
+
}
|
|
654
|
+
function gobj_get_gclass_trace_level2(gclass) {
|
|
655
|
+
const gclass_ = is_string(gclass) ? gclass_find_by_name(gclass) : gclass;
|
|
656
|
+
if (!gclass_) {
|
|
657
|
+
log_error(`gobj_get_gclass_trace_level2: gclass NOT FOUND: ${gclass}`);
|
|
658
|
+
return [];
|
|
659
|
+
}
|
|
660
|
+
return bit2level(gclass_.trace_level, gclass_.s_user_trace_level);
|
|
661
|
+
}
|
|
662
|
+
function gobj_get_gclass_trace_no_level(gclass) {
|
|
663
|
+
const gclass_ = is_string(gclass) ? gclass_find_by_name(gclass) : gclass;
|
|
664
|
+
if (!gclass_) {
|
|
665
|
+
log_error(`gobj_get_gclass_trace_no_level: gclass NOT FOUND: ${gclass}`);
|
|
666
|
+
return [];
|
|
667
|
+
}
|
|
668
|
+
return bit2level(gclass_.no_trace_level, gclass_.s_user_trace_level);
|
|
669
|
+
}
|
|
617
670
|
function gobj_set_deep_trace(value) {
|
|
618
671
|
__deep_trace__ = Number(value) || 0;
|
|
619
672
|
return 0;
|
|
@@ -624,7 +677,7 @@ function gobj_set_gclass_trace(gclass, level, set) {
|
|
|
624
677
|
log_error(`gobj_set_gclass_trace: gclass NOT FOUND: ${gclass}`);
|
|
625
678
|
return -1;
|
|
626
679
|
}
|
|
627
|
-
const bitmask = trace_bitmask(level, "gobj_set_gclass_trace");
|
|
680
|
+
const bitmask = level === null ? 4294967295 : trace_bitmask(level, "gobj_set_gclass_trace", gclass_.s_user_trace_level || null);
|
|
628
681
|
if (!bitmask) return -1;
|
|
629
682
|
if (set) gclass_.trace_level |= bitmask;
|
|
630
683
|
else gclass_.trace_level &= ~bitmask;
|
|
@@ -635,7 +688,7 @@ function gobj_set_gobj_trace(gobj, level, set) {
|
|
|
635
688
|
log_error(`gobj_set_gobj_trace: gobj NULL`);
|
|
636
689
|
return -1;
|
|
637
690
|
}
|
|
638
|
-
const bitmask = trace_bitmask(level, "gobj_set_gobj_trace");
|
|
691
|
+
const bitmask = trace_bitmask(level, "gobj_set_gobj_trace", gobj.gclass && gobj.gclass.s_user_trace_level || null);
|
|
639
692
|
if (!bitmask) return -1;
|
|
640
693
|
if (set) gobj.trace_level |= bitmask;
|
|
641
694
|
else gobj.trace_level &= ~bitmask;
|
|
@@ -647,7 +700,7 @@ function gobj_set_gclass_no_trace(gclass, level, set) {
|
|
|
647
700
|
log_error(`gobj_set_gclass_no_trace: gclass NOT FOUND: ${gclass}`);
|
|
648
701
|
return -1;
|
|
649
702
|
}
|
|
650
|
-
const bitmask = trace_bitmask(level, "gobj_set_gclass_no_trace");
|
|
703
|
+
const bitmask = level === null ? 4294967295 : trace_bitmask(level, "gobj_set_gclass_no_trace", gclass_.s_user_trace_level || null);
|
|
651
704
|
if (!bitmask) return -1;
|
|
652
705
|
if (set) gclass_.no_trace_level |= bitmask;
|
|
653
706
|
else gclass_.no_trace_level &= ~bitmask;
|
|
@@ -658,7 +711,7 @@ function gobj_set_gobj_no_trace(gobj, level, set) {
|
|
|
658
711
|
log_error(`gobj_set_gobj_no_trace: gobj NULL`);
|
|
659
712
|
return -1;
|
|
660
713
|
}
|
|
661
|
-
const bitmask = trace_bitmask(level, "gobj_set_gobj_no_trace");
|
|
714
|
+
const bitmask = trace_bitmask(level, "gobj_set_gobj_no_trace", gobj.gclass && gobj.gclass.s_user_trace_level || null);
|
|
662
715
|
if (!bitmask) return -1;
|
|
663
716
|
if (set) gobj.no_trace_level |= bitmask;
|
|
664
717
|
else gobj.no_trace_level &= ~bitmask;
|
|
@@ -2662,7 +2715,7 @@ function _delete_subscription(gobj, subs, force, not_inform) {
|
|
|
2662
2715
|
if (kw_get_int(gobj, subs, "subs_flag", null, kw_flag_t.KW_REQUIRED) & subs_flag_t.__hard_subscription__ ? 1 : 0) {
|
|
2663
2716
|
if (!force) return -1;
|
|
2664
2717
|
}
|
|
2665
|
-
if (
|
|
2718
|
+
if (__trace_gobj_subscriptions__(subscriber) || __trace_gobj_subscriptions__(publisher)) {
|
|
2666
2719
|
trace_machine(sprintf("💜💜👎 unsubscribing event '%s': publisher %s, subscriber'%s'", event ? event : "", gobj_short_name(publisher), gobj_short_name(subscriber)));
|
|
2667
2720
|
trace_json(subs);
|
|
2668
2721
|
}
|
|
@@ -2733,7 +2786,7 @@ function gobj_subscribe_event(publisher, event, kw, subscriber) {
|
|
|
2733
2786
|
}
|
|
2734
2787
|
json_array_append(publisher.dl_subscriptions, subs);
|
|
2735
2788
|
json_array_append(subscriber.dl_subscribings, subs);
|
|
2736
|
-
if (
|
|
2789
|
+
if (__trace_gobj_subscriptions__(subscriber) || __trace_gobj_subscriptions__(publisher)) {
|
|
2737
2790
|
trace_machine(sprintf("💜💜👍 subscribing event '%s', publisher '%s', subscriber %s", event ? event : "", gobj_short_name(publisher), gobj_short_name(subscriber)));
|
|
2738
2791
|
if (kw) trace_json(kw);
|
|
2739
2792
|
}
|
|
@@ -2871,7 +2924,7 @@ function gobj_publish_event(publisher, event, kw) {
|
|
|
2871
2924
|
return -1;
|
|
2872
2925
|
}
|
|
2873
2926
|
}
|
|
2874
|
-
let tracea =
|
|
2927
|
+
let tracea = (__trace_gobj_subscriptions__(publisher) || is_machine_tracing(publisher, event)) && !is_machine_not_tracing(publisher, event);
|
|
2875
2928
|
if (tracea) {
|
|
2876
2929
|
if (__trace_machine_format__ === 1) trace_machine(sprintf("🔝🔝 %s %s%s %s", event ? event : "", !publisher.running ? "!!" : "", gobj_short_name(publisher), publisher.current_state.state_name));
|
|
2877
2930
|
else trace_machine(sprintf("🔝🔝 mach(%s%s^%s), st: %s, ev: %s%s%s", !publisher.running ? "!!" : "", gobj_gclass_name(publisher), gobj_name(publisher), publisher.current_state.state_name, "", event ? event : "", ""));
|
|
@@ -2949,10 +3002,9 @@ function gobj_command(gobj, command, kw, src) {
|
|
|
2949
3002
|
log_error("gobj NULL or DESTROYED");
|
|
2950
3003
|
return -1;
|
|
2951
3004
|
}
|
|
2952
|
-
|
|
2953
|
-
if (tracea) {
|
|
3005
|
+
if (is_commands_tracing(gobj) || is_machine_tracing(gobj, null) && !is_machine_not_tracing(src, null)) {
|
|
2954
3006
|
trace_machine(sprintf("🌀🌀 mach(%s%s), cmd: %s, src: %s", !gobj_is_running(gobj) ? "!!" : "", gobj_short_name(gobj), command, gobj_short_name(src)));
|
|
2955
|
-
if (
|
|
3007
|
+
if (__trace_gobj_ev_kw__(gobj)) trace_json(kw);
|
|
2956
3008
|
}
|
|
2957
3009
|
if (gobj.gclass.gmt.mt_command_parser) return gobj.gclass.gmt.mt_command_parser(gobj, command, kw, src);
|
|
2958
3010
|
if (gobj.gclass.command_table) {
|
|
@@ -6036,7 +6088,7 @@ function clear_timeout(gobj) {
|
|
|
6036
6088
|
*
|
|
6037
6089
|
* The default yuno in js
|
|
6038
6090
|
*
|
|
6039
|
-
* Copyright (c) 2025, ArtGins.
|
|
6091
|
+
* Copyright (c) 2025-2026, ArtGins.
|
|
6040
6092
|
* All Rights Reserved. ****************************************************************************/
|
|
6041
6093
|
/***************************************************************
|
|
6042
6094
|
* Constants
|
|
@@ -6059,15 +6111,9 @@ var attrs_table$1 = [
|
|
|
6059
6111
|
SDATA(data_type_t.DTP_STRING, "yuno_version", 0, "", "Yuno version (APP_VERSION)"),
|
|
6060
6112
|
SDATA(data_type_t.DTP_STRING, "yuneta_version", 0, YUNETA_VERSION, "Yuneta version"),
|
|
6061
6113
|
SDATA(data_type_t.DTP_LIST, "required_services", 0, "[]", "Required services"),
|
|
6062
|
-
SDATA(data_type_t.
|
|
6063
|
-
SDATA(data_type_t.
|
|
6064
|
-
SDATA(data_type_t.
|
|
6065
|
-
SDATA(data_type_t.DTP_POINTER, "trace_ievent_callback", 0, null, "Trace traffic callback"),
|
|
6066
|
-
SDATA(data_type_t.DTP_BOOLEAN, "trace_creation", 0, 0, "Trace creation"),
|
|
6067
|
-
SDATA(data_type_t.DTP_BOOLEAN, "trace_start_stop", 0, 0, "Trace start/stop"),
|
|
6068
|
-
SDATA(data_type_t.DTP_BOOLEAN, "trace_subscriptions", 0, 0, "Trace subscription"),
|
|
6069
|
-
SDATA(data_type_t.DTP_BOOLEAN, "trace_i18n", 0, 0, "Trace i18n"),
|
|
6070
|
-
SDATA(data_type_t.DTP_BOOLEAN, "no_poll", 0, 0, "no poll"),
|
|
6114
|
+
SDATA(data_type_t.DTP_DICT, "trace_levels", sdata_flag_t.SDF_PERSIST, "{}", "Trace levels"),
|
|
6115
|
+
SDATA(data_type_t.DTP_DICT, "no_trace_levels", sdata_flag_t.SDF_PERSIST, "{}", "No trace levels"),
|
|
6116
|
+
SDATA(data_type_t.DTP_POINTER, "trace_ievent_callback", 0, null, "Where the traffic trace goes (C_IEVENT_CLI levels ievents/ievents2); console when null"),
|
|
6071
6117
|
SDATA(data_type_t.DTP_BOOLEAN, "developer", 0, false, "Developer mode enabled"),
|
|
6072
6118
|
SDATA(data_type_t.DTP_INTEGER, "periodic_timeout", 0, "1000", "Timeout periodic, in miliseconds."),
|
|
6073
6119
|
SDATA_END()
|
|
@@ -6086,6 +6132,8 @@ function mt_create$1(gobj) {
|
|
|
6086
6132
|
gobj_write_str_attr(gobj, "node_uuid", node_uuid());
|
|
6087
6133
|
gobj.priv.gobj_timer = gobj_create_pure_child(gobj_name(gobj), "C_TIMER", {}, gobj);
|
|
6088
6134
|
priv.periodic_timeout = gobj_read_attr(gobj, "periodic_timeout");
|
|
6135
|
+
set_user_gclass_traces(gobj);
|
|
6136
|
+
set_user_gclass_no_traces(gobj);
|
|
6089
6137
|
}
|
|
6090
6138
|
/***************************************************************
|
|
6091
6139
|
* Framework Method: Writing
|
|
@@ -6130,8 +6178,135 @@ function mt_destroy$1(gobj) {}
|
|
|
6130
6178
|
* Local Methods
|
|
6131
6179
|
***************************/
|
|
6132
6180
|
/***************************************************************
|
|
6181
|
+
* Restore the trace levels the user persisted.
|
|
6133
6182
|
*
|
|
6183
|
+
* A saved scope REPLACES what is in force: main() sets its defaults
|
|
6184
|
+
* (gobj_set_global_no_trace("timer_periodic"), a gclass it wants quiet)
|
|
6185
|
+
* before the yuno is created, and a default the user turned off must
|
|
6186
|
+
* stay off. A scope is saved whole, empty included (save_global_trace());
|
|
6187
|
+
* a scope never saved keeps main()'s. The C kernel's C_YUNO does the same.
|
|
6134
6188
|
***************************************************************/
|
|
6189
|
+
function set_user_gclass_traces(gobj) {
|
|
6190
|
+
let jn_trace_levels = gobj_read_attr(gobj, "trace_levels");
|
|
6191
|
+
if (!is_object(jn_trace_levels)) return 0;
|
|
6192
|
+
let jn_global = jn_trace_levels["__global_trace__"];
|
|
6193
|
+
if (is_array(jn_global)) {
|
|
6194
|
+
gobj_set_global_trace2(4294967295, false);
|
|
6195
|
+
for (let level of jn_global) gobj_set_global_trace(level, true);
|
|
6196
|
+
}
|
|
6197
|
+
for (const [name, jn_levels] of Object.entries(jn_trace_levels)) {
|
|
6198
|
+
let gclass = gclass_find_by_name(name);
|
|
6199
|
+
if (!gclass) continue;
|
|
6200
|
+
if (!is_array(jn_levels)) {
|
|
6201
|
+
log_error(`${gobj_name(gobj)}: trace_levels of ${name} MUST be a list`);
|
|
6202
|
+
continue;
|
|
6203
|
+
}
|
|
6204
|
+
gobj_set_gclass_trace(gclass, null, false);
|
|
6205
|
+
for (let level of jn_levels) gobj_set_gclass_trace(gclass, level, true);
|
|
6206
|
+
}
|
|
6207
|
+
return 0;
|
|
6208
|
+
}
|
|
6209
|
+
/***************************************************************
|
|
6210
|
+
* Restore the no-trace levels, see set_user_gclass_traces()
|
|
6211
|
+
***************************************************************/
|
|
6212
|
+
function set_user_gclass_no_traces(gobj) {
|
|
6213
|
+
let jn_no_trace_levels = gobj_read_attr(gobj, "no_trace_levels");
|
|
6214
|
+
if (!is_object(jn_no_trace_levels)) return 0;
|
|
6215
|
+
let jn_global = jn_no_trace_levels["__global_no_trace__"];
|
|
6216
|
+
if (is_array(jn_global)) {
|
|
6217
|
+
gobj_set_global_no_trace2(4294967295, false);
|
|
6218
|
+
for (let level of jn_global) gobj_set_global_no_trace(level, true);
|
|
6219
|
+
}
|
|
6220
|
+
for (const [name, jn_levels] of Object.entries(jn_no_trace_levels)) {
|
|
6221
|
+
let gclass = gclass_find_by_name(name);
|
|
6222
|
+
if (!gclass) continue;
|
|
6223
|
+
if (!is_array(jn_levels)) {
|
|
6224
|
+
log_error(`${gobj_name(gobj)}: no_trace_levels of ${name} MUST be a list`);
|
|
6225
|
+
continue;
|
|
6226
|
+
}
|
|
6227
|
+
gobj_set_gclass_no_trace(gclass, null, false);
|
|
6228
|
+
for (let level of jn_levels) gobj_set_gclass_no_trace(gclass, level, true);
|
|
6229
|
+
}
|
|
6230
|
+
return 0;
|
|
6231
|
+
}
|
|
6232
|
+
/***************************************************************
|
|
6233
|
+
* Save a scope WHOLE, from the levels in force (see
|
|
6234
|
+
* set_user_gclass_traces()): a saved scope replaces main()'s, so it
|
|
6235
|
+
* has to carry everything that must be in force.
|
|
6236
|
+
***************************************************************/
|
|
6237
|
+
function save_trace_scope(gobj, attr, scope, levels) {
|
|
6238
|
+
let jn_levels = gobj_read_attr(gobj, attr);
|
|
6239
|
+
if (!is_object(jn_levels)) jn_levels = {};
|
|
6240
|
+
jn_levels[scope] = levels;
|
|
6241
|
+
gobj_write_attr(gobj, attr, jn_levels);
|
|
6242
|
+
return gobj_save_persistent_attrs(gobj, attr);
|
|
6243
|
+
}
|
|
6244
|
+
/***************************************************************
|
|
6245
|
+
* "set" as the C command reads it: TRUE / set / 1, FALSE / reset / 0
|
|
6246
|
+
***************************************************************/
|
|
6247
|
+
function parse_set(value) {
|
|
6248
|
+
if (value === true || value === false) return value;
|
|
6249
|
+
let v = String(value === void 0 || value === null ? "" : value).toLowerCase();
|
|
6250
|
+
if (v === "true" || v === "set") return true;
|
|
6251
|
+
if (v === "false" || v === "reset") return false;
|
|
6252
|
+
if (v === "" || isNaN(Number(v))) return null;
|
|
6253
|
+
return Number(v) ? true : false;
|
|
6254
|
+
}
|
|
6255
|
+
function yuno_prefix() {
|
|
6256
|
+
return `${gobj_yuno_role()}^${gobj_yuno_name()}`;
|
|
6257
|
+
}
|
|
6258
|
+
/***************************
|
|
6259
|
+
* Commands
|
|
6260
|
+
***************************/
|
|
6261
|
+
/***************************************************************
|
|
6262
|
+
* The trace commands of the C kernel's C_YUNO, same names and same
|
|
6263
|
+
* parameters (`level`, `set`, `gclass_name` / `gclass`). Setting a
|
|
6264
|
+
* level saves its scope.
|
|
6265
|
+
***************************************************************/
|
|
6266
|
+
function mt_command_parser(gobj, command, kw, src) {
|
|
6267
|
+
kw = kw || {};
|
|
6268
|
+
switch (command) {
|
|
6269
|
+
case "get-global-trace": return build_command_response(gobj, 0, null, null, gobj_get_global_trace_level());
|
|
6270
|
+
case "get-global-no-trace": return build_command_response(gobj, 0, null, null, gobj_get_global_trace_no_level());
|
|
6271
|
+
case "set-global-trace":
|
|
6272
|
+
case "set-global-no-trace": {
|
|
6273
|
+
let no = command === "set-global-no-trace";
|
|
6274
|
+
let level = kw.level;
|
|
6275
|
+
let set = parse_set(kw.set);
|
|
6276
|
+
if (!level) return build_command_response(gobj, -1, `${yuno_prefix()}: what level?`, null, null);
|
|
6277
|
+
if (set === null) return build_command_response(gobj, -1, `${yuno_prefix()}: bitmask set or re-set?`, null, null);
|
|
6278
|
+
if ((no ? gobj_set_global_no_trace(level, set) : gobj_set_global_trace(level, set)) < 0) return build_command_response(gobj, -1, `${yuno_prefix()}: global trace level not found: ${level}`, null, null);
|
|
6279
|
+
if (no) {
|
|
6280
|
+
save_trace_scope(gobj, "no_trace_levels", "__global_no_trace__", gobj_get_global_trace_no_level());
|
|
6281
|
+
return build_command_response(gobj, 0, null, null, gobj_get_global_trace_no_level());
|
|
6282
|
+
}
|
|
6283
|
+
save_trace_scope(gobj, "trace_levels", "__global_trace__", gobj_get_global_trace_level());
|
|
6284
|
+
return build_command_response(gobj, 0, null, null, gobj_get_global_trace_level());
|
|
6285
|
+
}
|
|
6286
|
+
case "get-gclass-trace":
|
|
6287
|
+
case "get-gclass-no-trace":
|
|
6288
|
+
case "set-gclass-trace":
|
|
6289
|
+
case "set-gclass-no-trace": {
|
|
6290
|
+
let no = command.indexOf("no-trace") >= 0;
|
|
6291
|
+
let gclass_name = kw.gclass_name || kw.gclass || "";
|
|
6292
|
+
let gclass = gclass_find_by_name(gclass_name);
|
|
6293
|
+
if (!gclass) return build_command_response(gobj, -1, `${yuno_prefix()}: what gclass is '${gclass_name}'?`, null, null);
|
|
6294
|
+
if (command.indexOf("get-") === 0) return build_command_response(gobj, 0, null, null, no ? gobj_get_gclass_trace_no_level(gclass) : gobj_get_gclass_trace_level(gclass));
|
|
6295
|
+
let level = kw.level;
|
|
6296
|
+
let set = parse_set(kw.set);
|
|
6297
|
+
if (!level) return build_command_response(gobj, -1, `${yuno_prefix()}: what level?`, null, null);
|
|
6298
|
+
if (set === null) return build_command_response(gobj, -1, `${yuno_prefix()}: bitmask set or re-set?`, null, null);
|
|
6299
|
+
if ((no ? gobj_set_gclass_no_trace(gclass, level, set) : gobj_set_gclass_trace(gclass, level, set)) < 0) return build_command_response(gobj, -1, `${yuno_prefix()}: trace level of ${gclass_name} not found: ${level}`, null, null);
|
|
6300
|
+
if (no) {
|
|
6301
|
+
save_trace_scope(gobj, "no_trace_levels", gclass_name, gobj_get_gclass_trace_no_level(gclass));
|
|
6302
|
+
return build_command_response(gobj, 0, null, null, gobj_get_gclass_trace_no_level(gclass));
|
|
6303
|
+
}
|
|
6304
|
+
save_trace_scope(gobj, "trace_levels", gclass_name, gobj_get_gclass_trace_level2(gclass));
|
|
6305
|
+
return build_command_response(gobj, 0, null, null, gobj_get_gclass_trace_level(gclass));
|
|
6306
|
+
}
|
|
6307
|
+
default: return build_command_response(gobj, -1, `${yuno_prefix()}: command not available: ${command}`, null, null);
|
|
6308
|
+
}
|
|
6309
|
+
}
|
|
6135
6310
|
/***************************
|
|
6136
6311
|
* Actions
|
|
6137
6312
|
***************************/
|
|
@@ -6152,7 +6327,8 @@ var gmt$1 = {
|
|
|
6152
6327
|
mt_stop: mt_stop$1,
|
|
6153
6328
|
mt_destroy: mt_destroy$1,
|
|
6154
6329
|
mt_play,
|
|
6155
|
-
mt_pause
|
|
6330
|
+
mt_pause,
|
|
6331
|
+
mt_command_parser
|
|
6156
6332
|
};
|
|
6157
6333
|
/***************************************************************
|
|
6158
6334
|
* Create the GClass
|
|
@@ -6188,7 +6364,7 @@ function register_c_yuno() {
|
|
|
6188
6364
|
*
|
|
6189
6365
|
* Licence: MIT (http://www.opensource.org/licenses/mit-license)
|
|
6190
6366
|
* Copyright (c) 2014,2024 Niyamaka.
|
|
6191
|
-
* Copyright (c) 2025, ArtGins.
|
|
6367
|
+
* Copyright (c) 2025-2026, ArtGins.
|
|
6192
6368
|
**************************************************************************/
|
|
6193
6369
|
/***************************************************************
|
|
6194
6370
|
* Constants
|
|
@@ -6218,6 +6394,14 @@ var attrs_table = [
|
|
|
6218
6394
|
SDATA(data_type_t.DTP_POINTER, "subscriber", 0, 0, "subscriber of output-events. If null then subscriber is the parent"),
|
|
6219
6395
|
SDATA_END()
|
|
6220
6396
|
];
|
|
6397
|
+
var s_user_trace_level = [
|
|
6398
|
+
["ievents", "Trace inter-events with metadata of kw"],
|
|
6399
|
+
["ievents2", "Trace inter-events with full kw"],
|
|
6400
|
+
["identity-card", "Trace identity_card messages"]
|
|
6401
|
+
];
|
|
6402
|
+
function is_traffic_tracing(gobj) {
|
|
6403
|
+
return gobj_trace_level(gobj) & 3 ? true : false;
|
|
6404
|
+
}
|
|
6221
6405
|
var PRIVATE_DATA = {
|
|
6222
6406
|
url: null,
|
|
6223
6407
|
remote_yuno_name: null,
|
|
@@ -6480,7 +6664,7 @@ function iev_create(event, kw) {
|
|
|
6480
6664
|
function send_iev(gobj, iev) {
|
|
6481
6665
|
let priv = gobj.priv;
|
|
6482
6666
|
let msg = JSON.stringify(iev);
|
|
6483
|
-
if (
|
|
6667
|
+
if (is_traffic_tracing(gobj)) {
|
|
6484
6668
|
let url = gobj_read_str_attr(gobj, "url");
|
|
6485
6669
|
let prefix = gobj_name(gobj_yuno()) + " ==> " + url;
|
|
6486
6670
|
let trace_ievent_callback = gobj_read_attr(gobj_yuno(), "trace_ievent_callback");
|
|
@@ -6774,7 +6958,7 @@ function ac_identity_card_ack(gobj, event, kw, src) {
|
|
|
6774
6958
|
function ac_on_message(gobj, event, kw, src) {
|
|
6775
6959
|
let url = gobj.priv.url;
|
|
6776
6960
|
let iev_msg = iev_create_from_json(gobj, kw.data);
|
|
6777
|
-
if (
|
|
6961
|
+
if (is_traffic_tracing(gobj)) {
|
|
6778
6962
|
let prefix = gobj_name(gobj_yuno()) + " <== " + url;
|
|
6779
6963
|
let size = kw.data.length;
|
|
6780
6964
|
let trace_ievent_callback = gobj_read_attr(gobj_yuno(), "trace_ievent_callback");
|
|
@@ -6947,7 +7131,7 @@ function create_gclass(gclass_name) {
|
|
|
6947
7131
|
["EV_ON_OPEN_ERROR", event_flag_t.EVF_OUTPUT_EVENT | event_flag_t.EVF_NO_WARN_SUBS],
|
|
6948
7132
|
["EV_TIMEOUT", 0],
|
|
6949
7133
|
[null, 0]
|
|
6950
|
-
], states, gmt, 0, attrs_table, PRIVATE_DATA, 0, 0,
|
|
7134
|
+
], states, gmt, 0, attrs_table, PRIVATE_DATA, 0, 0, s_user_trace_level, gclass_flag_t.gcflag_no_check_output_events);
|
|
6951
7135
|
if (!__gclass__) return -1;
|
|
6952
7136
|
return 0;
|
|
6953
7137
|
}
|
|
@@ -6958,6 +7142,6 @@ function register_c_ievent_cli() {
|
|
|
6958
7142
|
return create_gclass(GCLASS_NAME);
|
|
6959
7143
|
}
|
|
6960
7144
|
//#endregion
|
|
6961
|
-
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_json, empty_string, escapeHtml, event_flag_t, flat2json, flat_apply, flat_diff, flat_key_join, flat_key_split, 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, json2flat, 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, kwid_new_list, 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_console_log_filter, 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 };
|
|
7145
|
+
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_json, empty_string, escapeHtml, event_flag_t, flat2json, flat_apply, flat_diff, flat_key_join, flat_key_split, 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_get_gclass_trace_level, gobj_get_gclass_trace_level2, gobj_get_gclass_trace_no_level, gobj_get_global_trace_level, gobj_get_global_trace_no_level, gobj_global_trace_level, gobj_global_trace_no_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_no_trace2, gobj_set_global_trace, gobj_set_global_trace2, 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, json2flat, 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, kwid_new_list, 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_console_log_filter, 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 };
|
|
6962
7146
|
|
|
6963
7147
|
//# sourceMappingURL=gobj-js.es.js.map
|