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