@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.
- package/dist/gobj-js.cjs.js +231 -141
- package/dist/gobj-js.cjs.js.map +1 -1
- package/dist/gobj-js.cjs.min.js +999 -975
- package/dist/gobj-js.cjs.min.js.map +1 -1
- package/dist/gobj-js.es.js +230 -142
- package/dist/gobj-js.es.js.map +1 -1
- package/dist/gobj-js.es.min.js +1045 -1020
- package/dist/gobj-js.es.min.js.map +1 -1
- package/dist/gobj-js.iife.js +231 -141
- package/dist/gobj-js.iife.js.map +1 -1
- package/dist/gobj-js.iife.min.js +997 -973
- package/dist/gobj-js.iife.min.js.map +1 -1
- package/dist/gobj-js.umd.js +231 -141
- package/dist/gobj-js.umd.js.map +1 -1
- package/dist/gobj-js.umd.min.js +996 -972
- package/dist/gobj-js.umd.min.js.map +1 -1
- package/package.json +4 -4
package/dist/gobj-js.es.js
CHANGED
|
@@ -86,9 +86,7 @@ function sprintf_format(parse_tree, argv) {
|
|
|
86
86
|
case "x":
|
|
87
87
|
arg = (parseInt(arg, 10) >>> 0).toString(16);
|
|
88
88
|
break;
|
|
89
|
-
case "X":
|
|
90
|
-
arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase();
|
|
91
|
-
break;
|
|
89
|
+
case "X": arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase();
|
|
92
90
|
}
|
|
93
91
|
if (re.json.test(ph.type)) output += arg;
|
|
94
92
|
else {
|
|
@@ -776,9 +774,7 @@ function set_default(gobj, sdata, it) {
|
|
|
776
774
|
}
|
|
777
775
|
else jn_value = svalue;
|
|
778
776
|
break;
|
|
779
|
-
case data_type_t.DTP_POINTER:
|
|
780
|
-
jn_value = svalue;
|
|
781
|
-
break;
|
|
777
|
+
case data_type_t.DTP_POINTER: jn_value = svalue;
|
|
782
778
|
}
|
|
783
779
|
if (jn_value === void 0) {
|
|
784
780
|
log_error(`default_value WRONG, it: ${it.name}, value: ${it.default_value}`);
|
|
@@ -848,9 +844,7 @@ function json2item(gobj, sdata, it, jn_value_) {
|
|
|
848
844
|
return -1;
|
|
849
845
|
}
|
|
850
846
|
break;
|
|
851
|
-
case data_type_t.DTP_POINTER:
|
|
852
|
-
jn_value2 = jn_value_;
|
|
853
|
-
break;
|
|
847
|
+
case data_type_t.DTP_POINTER: jn_value2 = jn_value_;
|
|
854
848
|
}
|
|
855
849
|
if (jn_value2 === void 0) log_error(`${gobj_short_name(gobj)}: attr undefined: ${it.name}`);
|
|
856
850
|
sdata[it.name] = jn_value2;
|
|
@@ -1129,6 +1123,7 @@ function gclass_find_by_name(gclass_name, verbose) {
|
|
|
1129
1123
|
} catch (e) {}
|
|
1130
1124
|
if (!gclass) {
|
|
1131
1125
|
if (verbose) log_error(`gclass not found: ${gclass_name}`);
|
|
1126
|
+
return null;
|
|
1132
1127
|
}
|
|
1133
1128
|
return gclass;
|
|
1134
1129
|
}
|
|
@@ -1153,8 +1148,8 @@ function gobj_default_service() {
|
|
|
1153
1148
|
function gobj_find_service(service_name, verbose) {
|
|
1154
1149
|
service_name = service_name.toLowerCase();
|
|
1155
1150
|
let service_gobj = __jn_services__[service_name];
|
|
1156
|
-
if (!service_gobj
|
|
1157
|
-
log_error(`gobj service not found: ${service_name}`);
|
|
1151
|
+
if (!service_gobj) {
|
|
1152
|
+
if (verbose) log_error(`gobj service not found: ${service_name}`);
|
|
1158
1153
|
return null;
|
|
1159
1154
|
}
|
|
1160
1155
|
return service_gobj;
|
|
@@ -1414,6 +1409,7 @@ function gobj_destroy(gobj) {
|
|
|
1414
1409
|
gobj_stop(gobj);
|
|
1415
1410
|
}
|
|
1416
1411
|
gobj.obflag |= obflag_t.obflag_destroying;
|
|
1412
|
+
purge_posted_events(gobj);
|
|
1417
1413
|
let trace_creation = __trace_gobj_create_delete__(gobj);
|
|
1418
1414
|
if (trace_creation) trace_machine(sprintf("💔💔⏩ destroying: %s", gobj_full_name(gobj)));
|
|
1419
1415
|
let parent = gobj_parent(gobj);
|
|
@@ -1569,12 +1565,14 @@ function gobj_play(gobj) {
|
|
|
1569
1565
|
log_error(`${gobj_short_name(gobj)}: GObj DISABLED`);
|
|
1570
1566
|
return -1;
|
|
1571
1567
|
}
|
|
1572
|
-
if (!gobj_is_running(gobj))
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1568
|
+
if (!gobj_is_running(gobj)) {
|
|
1569
|
+
if (!(gobj.gclass.gclass_flag & gclass_flag_t.gcflag_required_start_to_play)) {
|
|
1570
|
+
log_warning(`${gobj_short_name(gobj)}: GObj playing without previous start`);
|
|
1571
|
+
gobj_start(gobj);
|
|
1572
|
+
} else {
|
|
1573
|
+
log_error(`${gobj_short_name(gobj)}: Cannot play, start not done`);
|
|
1574
|
+
return -1;
|
|
1575
|
+
}
|
|
1578
1576
|
}
|
|
1579
1577
|
if (__trace_gobj_start_stop__(gobj)) trace_machine(sprintf("⏯ ⏯ play: %s", gobj_full_name(gobj)));
|
|
1580
1578
|
gobj.playing = true;
|
|
@@ -2353,13 +2351,97 @@ function gobj_has_output_event(gobj, event, event_flag) {
|
|
|
2353
2351
|
return true;
|
|
2354
2352
|
}
|
|
2355
2353
|
/************************************************************
|
|
2356
|
-
*
|
|
2354
|
+
* Posted events: gobj_send_event(), but on the next turn
|
|
2355
|
+
*
|
|
2356
|
+
* Same contract as the C side (see gobj.h). It exists to get out of the
|
|
2357
|
+
* stack you are standing on: gobj_publish_event() dispatches synchronously,
|
|
2358
|
+
* so a subscriber action runs inside the publisher's own stack, and
|
|
2359
|
+
* destroying that publisher there dismantles what is still iterating.
|
|
2360
|
+
*
|
|
2361
|
+
* The queue is drained with setTimeout(0) and NOT with queueMicrotask():
|
|
2362
|
+
* a microtask runs before the browser can paint or handle an input, so a
|
|
2363
|
+
* chain of posted events would hold the page exactly the way it used to
|
|
2364
|
+
* hold the event loop in C. A macrotask gives the browser its turn between
|
|
2365
|
+
* one event and the next.
|
|
2366
|
+
*
|
|
2367
|
+
* Delivery is a SNAPSHOT: the events queued when the drain begins are the
|
|
2368
|
+
* ones delivered in it, and whatever an action posts while it runs waits
|
|
2369
|
+
* for the following turn.
|
|
2357
2370
|
************************************************************/
|
|
2358
|
-
|
|
2359
|
-
|
|
2360
|
-
|
|
2361
|
-
|
|
2362
|
-
|
|
2371
|
+
var MAX_POSTED_EVENTS = 1e4;
|
|
2372
|
+
var __dl_posted_events__ = [];
|
|
2373
|
+
var __posted_events_scheduled__ = false;
|
|
2374
|
+
function gobj_post_event(dst, event, kw, src) {
|
|
2375
|
+
if (!dst || !(dst instanceof GObj)) {
|
|
2376
|
+
log_error(`gobj_post_event(): gobj dst NULL, event ${event}`);
|
|
2377
|
+
return -1;
|
|
2378
|
+
}
|
|
2379
|
+
if (dst.obflag & (obflag_t.obflag_destroyed | obflag_t.obflag_destroying)) {
|
|
2380
|
+
log_error(`gobj_post_event(): gobj dst DESTROYING, event ${event}`);
|
|
2381
|
+
return -1;
|
|
2382
|
+
}
|
|
2383
|
+
if (empty_string(event)) {
|
|
2384
|
+
log_error(`gobj_post_event(): event EMPTY`);
|
|
2385
|
+
return -1;
|
|
2386
|
+
}
|
|
2387
|
+
if (!gobj_has_event(dst, event, 0)) {
|
|
2388
|
+
log_error(`gobj_post_event(): event NOT DEFINED in gclass ${gobj_gclass_name(dst)}, event ${event}`);
|
|
2389
|
+
return -1;
|
|
2390
|
+
}
|
|
2391
|
+
if (__dl_posted_events__.length >= MAX_POSTED_EVENTS) {
|
|
2392
|
+
log_error(`gobj_post_event(): too many posted events, this is NOT a work queue, event ${event}, pending ${__dl_posted_events__.length}`);
|
|
2393
|
+
return -1;
|
|
2394
|
+
}
|
|
2395
|
+
__dl_posted_events__.push({
|
|
2396
|
+
dst,
|
|
2397
|
+
event,
|
|
2398
|
+
kw,
|
|
2399
|
+
src
|
|
2400
|
+
});
|
|
2401
|
+
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));
|
|
2402
|
+
if (!__posted_events_scheduled__) {
|
|
2403
|
+
__posted_events_scheduled__ = true;
|
|
2404
|
+
setTimeout(gobj_deliver_posted_events, 0);
|
|
2405
|
+
}
|
|
2406
|
+
return 0;
|
|
2407
|
+
}
|
|
2408
|
+
/************************************************************
|
|
2409
|
+
* How many posted events wait for delivery
|
|
2410
|
+
************************************************************/
|
|
2411
|
+
function gobj_posted_events_size() {
|
|
2412
|
+
return __dl_posted_events__.length;
|
|
2413
|
+
}
|
|
2414
|
+
/************************************************************
|
|
2415
|
+
* Deliver the posted events. One turn, one snapshot.
|
|
2416
|
+
************************************************************/
|
|
2417
|
+
function gobj_deliver_posted_events() {
|
|
2418
|
+
__posted_events_scheduled__ = false;
|
|
2419
|
+
let snapshot = __dl_posted_events__;
|
|
2420
|
+
__dl_posted_events__ = [];
|
|
2421
|
+
let delivered = 0;
|
|
2422
|
+
for (let msg of snapshot) {
|
|
2423
|
+
if (msg.dst.obflag & (obflag_t.obflag_destroyed | obflag_t.obflag_destroying)) continue;
|
|
2424
|
+
gobj_send_event(msg.dst, msg.event, msg.kw, msg.src);
|
|
2425
|
+
delivered++;
|
|
2426
|
+
}
|
|
2427
|
+
if (__dl_posted_events__.length > 0 && !__posted_events_scheduled__) {
|
|
2428
|
+
__posted_events_scheduled__ = true;
|
|
2429
|
+
setTimeout(gobj_deliver_posted_events, 0);
|
|
2430
|
+
}
|
|
2431
|
+
return delivered;
|
|
2432
|
+
}
|
|
2433
|
+
/************************************************************
|
|
2434
|
+
* Take a gobj out of the queue of posted events.
|
|
2435
|
+
*
|
|
2436
|
+
* Called from gobj_destroy(), and the two halves are not the same thing:
|
|
2437
|
+
* as DESTINATION the entry is dropped, as SOURCE only the pointer is
|
|
2438
|
+
* cleared -- the destination still wants its event, and it arrives with
|
|
2439
|
+
* src null, which every action already has to accept.
|
|
2440
|
+
************************************************************/
|
|
2441
|
+
function purge_posted_events(gobj) {
|
|
2442
|
+
if (__dl_posted_events__.length === 0) return;
|
|
2443
|
+
for (let msg of __dl_posted_events__) if (msg.src === gobj) msg.src = null;
|
|
2444
|
+
__dl_posted_events__ = __dl_posted_events__.filter((msg) => msg.dst !== gobj);
|
|
2363
2445
|
}
|
|
2364
2446
|
/************************************************************
|
|
2365
2447
|
* send_event
|
|
@@ -2595,7 +2677,7 @@ function gobj_subscribe_event(publisher, event, kw, subscriber) {
|
|
|
2595
2677
|
log_error(`subscriber NULL: ev ${event}`);
|
|
2596
2678
|
return 0;
|
|
2597
2679
|
}
|
|
2598
|
-
const IGNORED_KEYS = new Set([
|
|
2680
|
+
const IGNORED_KEYS = /* @__PURE__ */ new Set([
|
|
2599
2681
|
"__config__",
|
|
2600
2682
|
"__global__",
|
|
2601
2683
|
"__local__",
|
|
@@ -2651,7 +2733,7 @@ function gobj_unsubscribe_event(publisher, event, kw, subscriber) {
|
|
|
2651
2733
|
log_error(`subscriber NULL: ev ${event}`);
|
|
2652
2734
|
return 0;
|
|
2653
2735
|
}
|
|
2654
|
-
const IGNORED_KEYS = new Set([
|
|
2736
|
+
const IGNORED_KEYS = /* @__PURE__ */ new Set([
|
|
2655
2737
|
"__config__",
|
|
2656
2738
|
"__global__",
|
|
2657
2739
|
"__local__",
|
|
@@ -2845,9 +2927,10 @@ function gobj_command(gobj, command, kw, src) {
|
|
|
2845
2927
|
if (tracea > 1) trace_json(kw);
|
|
2846
2928
|
}
|
|
2847
2929
|
if (gobj.gclass.gmt.mt_command_parser) return gobj.gclass.gmt.mt_command_parser(gobj, command, kw, src);
|
|
2848
|
-
if (gobj.gclass.command_table)
|
|
2849
|
-
|
|
2850
|
-
|
|
2930
|
+
if (gobj.gclass.command_table) {
|
|
2931
|
+
if (__global_command_parser_fn__) return __global_command_parser_fn__(gobj, command, kw, src);
|
|
2932
|
+
else return build_command_response(gobj, -1, sprintf("%s: global command parser not available", gobj_short_name(gobj)), 0, 0);
|
|
2933
|
+
} else return build_command_response(gobj, -1, sprintf("%s: command table not available", gobj_short_name(gobj)), 0, 0);
|
|
2851
2934
|
}
|
|
2852
2935
|
/************************************************************
|
|
2853
2936
|
* Exec gobj stats. Return a webix
|
|
@@ -2954,22 +3037,26 @@ function format_log(format) {
|
|
|
2954
3037
|
function log_error(format) {
|
|
2955
3038
|
let msg = format_log(format);
|
|
2956
3039
|
let hora = current_timestamp();
|
|
2957
|
-
if (f_error)
|
|
2958
|
-
if (
|
|
2959
|
-
|
|
2960
|
-
|
|
2961
|
-
|
|
3040
|
+
if (f_error) {
|
|
3041
|
+
if (f_error === _console.error) {
|
|
3042
|
+
if (__console_output_enabled__) f_error("%c" + hora + " ERROR: " + String(msg), "color:red");
|
|
3043
|
+
} else {
|
|
3044
|
+
if (__console_output_enabled__) _console.error("%c" + hora + " ERROR: " + String(msg), "color:red");
|
|
3045
|
+
f_error(`${hora} ERROR: ${String(msg)}`);
|
|
3046
|
+
}
|
|
2962
3047
|
}
|
|
2963
3048
|
emit_log_callback("error", msg, hora);
|
|
2964
3049
|
}
|
|
2965
3050
|
function log_warning(format) {
|
|
2966
3051
|
let msg = format_log(format);
|
|
2967
3052
|
let hora = current_timestamp();
|
|
2968
|
-
if (f_warning)
|
|
2969
|
-
if (
|
|
2970
|
-
|
|
2971
|
-
|
|
2972
|
-
|
|
3053
|
+
if (f_warning) {
|
|
3054
|
+
if (f_warning === _console.warn) {
|
|
3055
|
+
if (__console_output_enabled__) f_warning("%c" + hora + " WARNING: " + String(msg), "color:yellow");
|
|
3056
|
+
} else {
|
|
3057
|
+
if (__console_output_enabled__) _console.warn("%c" + hora + " WARNING: " + String(msg), "color:yellow");
|
|
3058
|
+
f_warning(`${hora} WARNING: ${String(msg)}`);
|
|
3059
|
+
}
|
|
2973
3060
|
}
|
|
2974
3061
|
emit_log_callback("warning", msg, hora);
|
|
2975
3062
|
}
|
|
@@ -4005,10 +4092,12 @@ function list2options(list, field_id, field_value) {
|
|
|
4005
4092
|
vv["id"] = field_id;
|
|
4006
4093
|
vv["value"] = v[field_id];
|
|
4007
4094
|
} else {
|
|
4008
|
-
if (!kw_has_key(v, field_value))
|
|
4009
|
-
|
|
4010
|
-
|
|
4011
|
-
|
|
4095
|
+
if (!kw_has_key(v, field_value)) {
|
|
4096
|
+
if (json_size(v) > 0) field_value = Object.keys(v)[0];
|
|
4097
|
+
else {
|
|
4098
|
+
log_error("list2options(): object without field value: " + field_value);
|
|
4099
|
+
continue;
|
|
4100
|
+
}
|
|
4012
4101
|
}
|
|
4013
4102
|
vv["id"] = v[field_id];
|
|
4014
4103
|
vv["value"] = v[field_value];
|
|
@@ -4324,13 +4413,15 @@ function jdb_update(jdb, topic_name, path, kw) {
|
|
|
4324
4413
|
if (is_object(v)) v = kw_get_dict_value(null, v, jdb.hook, [], 1);
|
|
4325
4414
|
v = _jdb_get(v, null, id, false);
|
|
4326
4415
|
}
|
|
4327
|
-
if (ids.length === 0 && v)
|
|
4328
|
-
|
|
4329
|
-
|
|
4330
|
-
|
|
4331
|
-
|
|
4332
|
-
|
|
4333
|
-
|
|
4416
|
+
if (ids.length === 0 && v) {
|
|
4417
|
+
if (is_array(v)) v.push(kw);
|
|
4418
|
+
else if (v["id"] === kw["id"]) Object.assign(v, kw);
|
|
4419
|
+
else {
|
|
4420
|
+
let v_ = kw_get_dict_value(null, v, jdb.hook, [], 1);
|
|
4421
|
+
let v__ = _jdb_get(v_, jdb.hook, kw["id"], false);
|
|
4422
|
+
if (v__) Object.assign(v__, kw);
|
|
4423
|
+
else v_.push(kw);
|
|
4424
|
+
}
|
|
4334
4425
|
}
|
|
4335
4426
|
return topic;
|
|
4336
4427
|
}
|
|
@@ -4356,13 +4447,15 @@ function jdb_delete(jdb, topic_name, path, kw) {
|
|
|
4356
4447
|
if (is_object(v)) v = kw_get_dict_value(null, v, jdb.hook, null, 0);
|
|
4357
4448
|
v = _jdb_get(v, null, id, false);
|
|
4358
4449
|
}
|
|
4359
|
-
if (ids.length === 0 && v)
|
|
4360
|
-
|
|
4361
|
-
|
|
4362
|
-
|
|
4363
|
-
|
|
4364
|
-
|
|
4365
|
-
|
|
4450
|
+
if (ids.length === 0 && v) {
|
|
4451
|
+
if (is_array(v)) {
|
|
4452
|
+
let idx = id_index_in_obj_list(v, kw["id"]);
|
|
4453
|
+
if (idx >= 0) v.splice(idx, 1);
|
|
4454
|
+
} else {
|
|
4455
|
+
let v_ = kw_get_dict_value(null, v, jdb.hook, null, 0);
|
|
4456
|
+
let idx = id_index_in_obj_list(v_, kw["id"]);
|
|
4457
|
+
if (idx >= 0) v_.splice(idx, 1);
|
|
4458
|
+
}
|
|
4366
4459
|
}
|
|
4367
4460
|
return topic;
|
|
4368
4461
|
}
|
|
@@ -5089,41 +5182,42 @@ function treedb_hook_data_size(value) {
|
|
|
5089
5182
|
* }
|
|
5090
5183
|
************************************************************/
|
|
5091
5184
|
function treedb_decoder_fkey(col, fkey) {
|
|
5092
|
-
if (is_string(fkey))
|
|
5093
|
-
|
|
5094
|
-
|
|
5095
|
-
|
|
5096
|
-
|
|
5097
|
-
|
|
5098
|
-
|
|
5099
|
-
|
|
5100
|
-
|
|
5101
|
-
|
|
5102
|
-
|
|
5103
|
-
|
|
5104
|
-
|
|
5105
|
-
|
|
5106
|
-
|
|
5107
|
-
|
|
5108
|
-
|
|
5109
|
-
|
|
5110
|
-
|
|
5111
|
-
|
|
5112
|
-
|
|
5113
|
-
|
|
5114
|
-
|
|
5115
|
-
|
|
5116
|
-
|
|
5117
|
-
|
|
5118
|
-
|
|
5185
|
+
if (is_string(fkey)) {
|
|
5186
|
+
if (fkey.indexOf("^") === -1) {
|
|
5187
|
+
let fkey_desc = col.fkey;
|
|
5188
|
+
if (json_object_size(fkey_desc) !== 1) {
|
|
5189
|
+
log_error("bad fkey 1");
|
|
5190
|
+
log_error(col);
|
|
5191
|
+
log_error(fkey);
|
|
5192
|
+
return null;
|
|
5193
|
+
}
|
|
5194
|
+
let topic_name;
|
|
5195
|
+
let hook_name;
|
|
5196
|
+
for (const k of Object.keys(fkey_desc)) {
|
|
5197
|
+
topic_name = k;
|
|
5198
|
+
hook_name = fkey_desc[k];
|
|
5199
|
+
break;
|
|
5200
|
+
}
|
|
5201
|
+
return {
|
|
5202
|
+
topic_name,
|
|
5203
|
+
id: fkey,
|
|
5204
|
+
hook_name
|
|
5205
|
+
};
|
|
5206
|
+
} else {
|
|
5207
|
+
let tt = fkey.split("^");
|
|
5208
|
+
if (tt.length !== 3) {
|
|
5209
|
+
log_error("bad fkey 2");
|
|
5210
|
+
log_error(col);
|
|
5211
|
+
log_error(fkey);
|
|
5212
|
+
return null;
|
|
5213
|
+
}
|
|
5214
|
+
return {
|
|
5215
|
+
topic_name: tt[0],
|
|
5216
|
+
id: tt[1],
|
|
5217
|
+
hook_name: tt[2]
|
|
5218
|
+
};
|
|
5119
5219
|
}
|
|
5120
|
-
|
|
5121
|
-
topic_name: tt[0],
|
|
5122
|
-
id: tt[1],
|
|
5123
|
-
hook_name: tt[2]
|
|
5124
|
-
};
|
|
5125
|
-
}
|
|
5126
|
-
else if (is_object(fkey)) return {
|
|
5220
|
+
} else if (is_object(fkey)) return {
|
|
5127
5221
|
topic_name: fkey.topic_name,
|
|
5128
5222
|
id: fkey.id,
|
|
5129
5223
|
hook_name: fkey.hook_name
|
|
@@ -5165,38 +5259,39 @@ function treedb_encoder_fkey(col, fkey) {
|
|
|
5165
5259
|
* }
|
|
5166
5260
|
********************************************/
|
|
5167
5261
|
function treedb_decoder_hook(col, hook) {
|
|
5168
|
-
if (is_string(hook))
|
|
5169
|
-
|
|
5170
|
-
|
|
5171
|
-
|
|
5172
|
-
|
|
5173
|
-
|
|
5174
|
-
|
|
5175
|
-
|
|
5176
|
-
|
|
5177
|
-
|
|
5178
|
-
|
|
5179
|
-
|
|
5180
|
-
|
|
5181
|
-
|
|
5182
|
-
|
|
5183
|
-
|
|
5184
|
-
|
|
5185
|
-
|
|
5186
|
-
|
|
5187
|
-
|
|
5188
|
-
|
|
5189
|
-
|
|
5190
|
-
|
|
5191
|
-
|
|
5192
|
-
|
|
5262
|
+
if (is_string(hook)) {
|
|
5263
|
+
if (hook.indexOf("^") === -1) {
|
|
5264
|
+
let hook_desc = col.hook;
|
|
5265
|
+
if (json_object_size(hook_desc) !== 1) {
|
|
5266
|
+
log_error("bad hook 1");
|
|
5267
|
+
log_error(col);
|
|
5268
|
+
log_error(hook);
|
|
5269
|
+
return null;
|
|
5270
|
+
}
|
|
5271
|
+
let topic_name;
|
|
5272
|
+
for (let k of Object.keys(hook_desc)) {
|
|
5273
|
+
topic_name = k;
|
|
5274
|
+
hook_desc[k];
|
|
5275
|
+
break;
|
|
5276
|
+
}
|
|
5277
|
+
return {
|
|
5278
|
+
topic_name,
|
|
5279
|
+
id: hook
|
|
5280
|
+
};
|
|
5281
|
+
} else {
|
|
5282
|
+
let tt = hook.split("^");
|
|
5283
|
+
if (tt.length !== 2) {
|
|
5284
|
+
log_error("bad hook 2");
|
|
5285
|
+
log_error(col);
|
|
5286
|
+
log_error(hook);
|
|
5287
|
+
return null;
|
|
5288
|
+
}
|
|
5289
|
+
return {
|
|
5290
|
+
topic_name: tt[0],
|
|
5291
|
+
id: tt[1]
|
|
5292
|
+
};
|
|
5193
5293
|
}
|
|
5194
|
-
|
|
5195
|
-
topic_name: tt[0],
|
|
5196
|
-
id: tt[1]
|
|
5197
|
-
};
|
|
5198
|
-
}
|
|
5199
|
-
else if (is_object(hook)) return {
|
|
5294
|
+
} else if (is_object(hook)) return {
|
|
5200
5295
|
topic_name: hook.topic_name,
|
|
5201
5296
|
id: hook.id
|
|
5202
5297
|
};
|
|
@@ -5302,9 +5397,7 @@ function treedb_get_field_desc(col) {
|
|
|
5302
5397
|
case "template":
|
|
5303
5398
|
field_desc.enum_list = col.template;
|
|
5304
5399
|
break;
|
|
5305
|
-
case "table":
|
|
5306
|
-
field_desc.enum_list = col.table;
|
|
5307
|
-
break;
|
|
5400
|
+
case "table": field_desc.enum_list = col.table;
|
|
5308
5401
|
}
|
|
5309
5402
|
field_desc.type = f;
|
|
5310
5403
|
} else if (str_in_list(treedb_field_attributes, f)) switch (f) {
|
|
@@ -5317,9 +5410,7 @@ function treedb_get_field_desc(col) {
|
|
|
5317
5410
|
case "required":
|
|
5318
5411
|
field_desc.is_required = true;
|
|
5319
5412
|
break;
|
|
5320
|
-
case "hidden":
|
|
5321
|
-
field_desc.is_hidden = true;
|
|
5322
|
-
break;
|
|
5413
|
+
case "hidden": field_desc.is_hidden = true;
|
|
5323
5414
|
}
|
|
5324
5415
|
}
|
|
5325
5416
|
return field_desc;
|
|
@@ -5356,9 +5447,7 @@ function template_get_field_desc(key, value) {
|
|
|
5356
5447
|
case "required":
|
|
5357
5448
|
field_desc.is_required = true;
|
|
5358
5449
|
break;
|
|
5359
|
-
case "hidden":
|
|
5360
|
-
field_desc.is_hidden = true;
|
|
5361
|
-
break;
|
|
5450
|
+
case "hidden": field_desc.is_hidden = true;
|
|
5362
5451
|
}
|
|
5363
5452
|
}
|
|
5364
5453
|
if (!field_desc.real_type) field_desc.real_type = "string";
|
|
@@ -5382,7 +5471,8 @@ function create_template_record(template, kw) {
|
|
|
5382
5471
|
Object.entries(template).forEach(([field, col]) => {
|
|
5383
5472
|
let default_value;
|
|
5384
5473
|
if (is_object(col)) default_value = col.default;
|
|
5385
|
-
|
|
5474
|
+
let value = kw_get_dict_value(null, kw, field, default_value);
|
|
5475
|
+
new_record[field] = value;
|
|
5386
5476
|
});
|
|
5387
5477
|
return new_record;
|
|
5388
5478
|
}
|
|
@@ -5463,7 +5553,6 @@ function mt_writing$2(gobj, path) {
|
|
|
5463
5553
|
if (priv.msec > 0) {
|
|
5464
5554
|
if (!gobj_is_running(gobj)) gobj_start(gobj);
|
|
5465
5555
|
} else if (gobj_is_running(gobj)) gobj_stop(gobj);
|
|
5466
|
-
break;
|
|
5467
5556
|
}
|
|
5468
5557
|
}
|
|
5469
5558
|
/***************************************************************
|
|
@@ -5822,9 +5911,7 @@ function mt_writing(gobj, path) {
|
|
|
5822
5911
|
case "remote_yuno_role":
|
|
5823
5912
|
priv.remote_yuno_role = gobj_read_str_attr(gobj, "remote_yuno_role");
|
|
5824
5913
|
break;
|
|
5825
|
-
case "remote_yuno_service":
|
|
5826
|
-
priv.remote_yuno_service = gobj_read_str_attr(gobj, "remote_yuno_service");
|
|
5827
|
-
break;
|
|
5914
|
+
case "remote_yuno_service": priv.remote_yuno_service = gobj_read_str_attr(gobj, "remote_yuno_service");
|
|
5828
5915
|
}
|
|
5829
5916
|
}
|
|
5830
5917
|
/***************************************************************
|
|
@@ -6366,12 +6453,13 @@ function ac_on_message(gobj, event, kw, src) {
|
|
|
6366
6453
|
return 0;
|
|
6367
6454
|
}
|
|
6368
6455
|
let gobj_service = gobj_find_service(iev_dst_service, true);
|
|
6369
|
-
if (gobj_service)
|
|
6370
|
-
|
|
6371
|
-
|
|
6372
|
-
|
|
6373
|
-
|
|
6374
|
-
|
|
6456
|
+
if (gobj_service) {
|
|
6457
|
+
if (gobj_has_event(gobj_service, iev_event, event_flag_t.EVF_PUBLIC_EVENT)) gobj_send_event(gobj_service, iev_event, iev_kw, gobj);
|
|
6458
|
+
else {
|
|
6459
|
+
log_error(`${gobj_short_name(gobj)}: Service found but no event or not public, service '${gobj_short_name(gobj_service)}', ev '${iev_event}'`);
|
|
6460
|
+
return -1;
|
|
6461
|
+
}
|
|
6462
|
+
} else if (gobj_is_pure_child(gobj)) gobj_send_event(gobj_parent(gobj), iev_event, iev_kw, gobj);
|
|
6375
6463
|
else gobj_publish_event(gobj, iev_event, iev_kw);
|
|
6376
6464
|
return 0;
|
|
6377
6465
|
}
|
|
@@ -6511,6 +6599,6 @@ function register_c_ievent_cli() {
|
|
|
6511
6599
|
return create_gclass(GCLASS_NAME);
|
|
6512
6600
|
}
|
|
6513
6601
|
//#endregion
|
|
6514
|
-
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_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 };
|
|
6602
|
+
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 };
|
|
6515
6603
|
|
|
6516
6604
|
//# sourceMappingURL=gobj-js.es.js.map
|