@yuneta/gobj-js 7.26.7 → 7.26.9

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.
@@ -132,7 +132,7 @@
132
132
  data: l || []
133
133
  };
134
134
  }
135
- var s = "7.0.0a", i = null, _ = null, a = null, u = null, c = null, f = null, g = [], d = Object.create(null), b = Object.create(null), p = null, m = null, h = 0, y = Object.freeze({
135
+ var s = "7.0.0a", i = null, _ = null, a = null, u = null, c = null, f = null, g = [], d = Object.create(null), b = Object.create(null), p = null, m = null, h = 0, E = Object.freeze({
136
136
  DTP_STRING: 1,
137
137
  DTP_BOOLEAN: 2,
138
138
  DTP_INTEGER: 3,
@@ -142,8 +142,8 @@
142
142
  DTP_JSON: 7,
143
143
  DTP_POINTER: 8
144
144
  });
145
- y.DTP_POINTER;
146
- var E = Object.freeze({
145
+ E.DTP_POINTER;
146
+ var y = Object.freeze({
147
147
  SDF_NOTACCESS: 1,
148
148
  SDF_RD: 2,
149
149
  SDF_WR: 4,
@@ -166,7 +166,7 @@
166
166
  SDF_AUTHZ_S: 524288,
167
167
  SDF_AUTHZ_RS: 1048576
168
168
  });
169
- E.SDF_RD, E.SDF_WR, E.SDF_STATS, E.SDF_PERSIST, E.SDF_VOLATIL, E.SDF_RSTATS, E.SDF_PSTATS, E.SDF_WR, E.SDF_PERSIST;
169
+ y.SDF_RD, y.SDF_WR, y.SDF_STATS, y.SDF_PERSIST, y.SDF_VOLATIL, y.SDF_RSTATS, y.SDF_PSTATS, y.SDF_WR, y.SDF_PERSIST;
170
170
  var T = class {
171
171
  constructor(e, t, n = 0, r = null, l = "", o = null, s = null, i = 0, _ = null, a = null, u = null) {
172
172
  this.type = e, this.name = t, this.alias = o, this.flag = n, this.default_value = r, this.header = s, this.fillspace = i, this.description = l, this.json_fn = _, this.schema = a, this.authpth = u;
@@ -223,7 +223,7 @@
223
223
  };
224
224
  var C = 1;
225
225
  function L(e) {
226
- Zn(e) && (e = JSON.stringify(e)), En(" ".repeat(Math.max(1, 2 * h)) + String(e));
226
+ Zn(e) && (e = JSON.stringify(e)), yn(" ".repeat(Math.max(1, 2 * h)) + String(e));
227
227
  }
228
228
  var P = Object.freeze({
229
229
  TRACE_MACHINE: 65536,
@@ -427,19 +427,19 @@
427
427
  function ae(e, t, n) {
428
428
  let r, l = n.default_value;
429
429
  switch (n.type) {
430
- case y.DTP_STRING:
430
+ case E.DTP_STRING:
431
431
  r = String(l);
432
432
  break;
433
- case y.DTP_BOOLEAN:
433
+ case E.DTP_BOOLEAN:
434
434
  r = _r(l);
435
435
  break;
436
- case y.DTP_INTEGER:
436
+ case E.DTP_INTEGER:
437
437
  r = parseInt(l), isNaN(r) && hn(`${et(e)}: attr NaN: ${n.name}`);
438
438
  break;
439
- case y.DTP_REAL:
439
+ case E.DTP_REAL:
440
440
  r = Number(l), isNaN(r) && hn(`${et(e)}: attr NaN: ${n.name}`);
441
441
  break;
442
- case y.DTP_LIST:
442
+ case E.DTP_LIST:
443
443
  if (tr(l)) try {
444
444
  r = JSON.parse(l);
445
445
  } catch (e) {
@@ -448,7 +448,7 @@
448
448
  else r = l;
449
449
  er(r) || (r = []);
450
450
  break;
451
- case y.DTP_DICT:
451
+ case E.DTP_DICT:
452
452
  if (tr(l)) try {
453
453
  r = JSON.parse(l);
454
454
  } catch (e) {
@@ -457,7 +457,7 @@
457
457
  else r = l;
458
458
  Zn(r) || (r = {});
459
459
  break;
460
- case y.DTP_JSON:
460
+ case E.DTP_JSON:
461
461
  if ("" === l || void 0 === l) r = null;
462
462
  else if (tr(l)) try {
463
463
  r = JSON.parse(l);
@@ -466,14 +466,14 @@
466
466
  }
467
467
  else r = l;
468
468
  break;
469
- case y.DTP_POINTER: r = l;
469
+ case E.DTP_POINTER: r = l;
470
470
  }
471
471
  return void 0 === r && (hn(`default_value WRONG, it: ${n.name}, value: ${n.default_value}`), r = null), t[n.name] = r, 0;
472
472
  }
473
473
  function ue(e, t, n, r) {
474
474
  let l;
475
475
  switch (n.type) {
476
- case y.DTP_STRING:
476
+ case E.DTP_STRING:
477
477
  if (null == r) l = "";
478
478
  else if (tr(r)) l = String(r);
479
479
  else {
@@ -481,16 +481,16 @@
481
481
  e && (l = String(e));
482
482
  }
483
483
  break;
484
- case y.DTP_BOOLEAN:
484
+ case E.DTP_BOOLEAN:
485
485
  l = _r(r);
486
486
  break;
487
- case y.DTP_INTEGER:
487
+ case E.DTP_INTEGER:
488
488
  if (l = parseInt(r), isNaN(l)) return hn(`${et(e)}: attr NaN: ${n.name}`), -1;
489
489
  break;
490
- case y.DTP_REAL:
490
+ case E.DTP_REAL:
491
491
  if (l = Number(r), isNaN(l)) return hn(`${et(e)}: attr NaN: ${n.name}`), -1;
492
492
  break;
493
- case y.DTP_LIST:
493
+ case E.DTP_LIST:
494
494
  if (tr(r)) try {
495
495
  l = JSON.parse(r);
496
496
  } catch (e) {
@@ -499,7 +499,7 @@
499
499
  else l = r;
500
500
  if (!er(l)) return hn(`attr must be an array: ${n.name}`), -1;
501
501
  break;
502
- case y.DTP_DICT:
502
+ case E.DTP_DICT:
503
503
  if (tr(r)) try {
504
504
  l = JSON.parse(r);
505
505
  } catch (e) {
@@ -508,7 +508,7 @@
508
508
  else l = r;
509
509
  if (!Zn(l)) return hn(`attr must be an object: ${n.name}`), -1;
510
510
  break;
511
- case y.DTP_JSON:
511
+ case E.DTP_JSON:
512
512
  if (l = r, tr(r)) {
513
513
  const e = r.trim();
514
514
  if (e.startsWith("{") || e.startsWith("[")) try {
@@ -518,7 +518,7 @@
518
518
  }
519
519
  }
520
520
  break;
521
- case y.DTP_POINTER: l = r;
521
+ case E.DTP_POINTER: l = r;
522
522
  }
523
523
  return void 0 === l && hn(`${et(e)}: attr undefined: ${n.name}`), t[n.name] = l, Zn(e.priv) && Object.prototype.hasOwnProperty.call(e.priv, n.name) && (e.priv[n.name] = l), e.obflag & R.obflag_created && !(e.obflag & R.obflag_destroyed) && e.gclass.gmt.mt_writing && e.gclass.gmt.mt_writing(e, n.name), 0;
524
524
  }
@@ -553,7 +553,7 @@
553
553
  const l = r.length;
554
554
  for (let e = 0; e < l; e++) {
555
555
  let n = r[e][0], l = r[e][1], o = r[e][2];
556
- ir(n) || ye(c, t, n, l, o);
556
+ ir(n) || Ee(c, t, n, l, o);
557
557
  }
558
558
  }
559
559
  for (let e = 0; e < t.length; e++) {
@@ -598,17 +598,17 @@
598
598
  function he(e, t) {
599
599
  return e instanceof O ? pe(e, t) ? (hn(`state already exists: ${t}`), -1) : (e.dl_states.push(new A(t)), 0) : (hn("Cannot add state, typeof not GClass"), -1);
600
600
  }
601
- function ye(e, t, n, r, l) {
601
+ function Ee(e, t, n, r, l) {
602
602
  if (!(e instanceof O)) return hn("Cannot add state, typeof not GClass"), -1;
603
603
  if (ir(t)) return hn("state_name EMPTY"), -1;
604
604
  let o = pe(e, t);
605
605
  return o ? me(o, n) ? (hn(`event already exists: gclass ${e.gclass_name}, state ${t}, event ${n}`), -1) : (o.dl_actions.push(new k(n, r, l)), 0) : (hn(`state not found: ${t}`), -1);
606
606
  }
607
- function Ee(e, t, n) {
607
+ function ye(e, t, n) {
608
608
  ir(t) || e.push(new I(t, n));
609
609
  }
610
610
  function Te(e, t, n) {
611
- return e instanceof O ? Ee(e.dl_events, t, n) : (hn("Cannot add state, typeof not GClass"), -1);
611
+ return e instanceof O ? ye(e.dl_events, t, n) : (hn("Cannot add state, typeof not GClass"), -1);
612
612
  }
613
613
  function ve(e, t) {
614
614
  if (!(e instanceof O)) return hn("Cannot add state, typeof not GClass"), 0;
@@ -682,7 +682,7 @@
682
682
  let o = 0;
683
683
  for (const [s, i] of Object.entries(t)) {
684
684
  const t = ge(l.gclass, s, !1);
685
- t ? (-1 === n || t.flag & n) && (t.flag & E.SDF_DEPRECATED && yn(`${et(l)}: Deprecated attribute used in gobj creation: ${s}`), o += ue(l, e, t, i)) : r && (r(l, s), o--);
685
+ t ? (-1 === n || t.flag & n) && (t.flag & y.SDF_DEPRECATED && En(`${et(l)}: Deprecated attribute used in gobj creation: ${s}`), o += ue(l, e, t, i)) : r && (r(l, s), o--);
686
686
  }
687
687
  return o;
688
688
  })(ce(e), r, -1, e.gclass.gclass_flag & w.gcflag_ignore_unknown_attrs ? 0 : ke, e) < 0 && (hn(`${et(e)} json2data() FAILED`), Un(r));
@@ -696,7 +696,7 @@
696
696
  if (!("string" == typeof l || l instanceof S)) return hn(`BAD TYPE of parent: ${l}`), null;
697
697
  if (tr(l)) {
698
698
  const e = l;
699
- if (!(l = we(e))) return yn(`parent service not found: ${e}`), null;
699
+ if (!(l = we(e))) return En(`parent service not found: ${e}`), null;
700
700
  }
701
701
  }
702
702
  if (o & N.gobj_flag_service && we(e, !1)) return hn(`service ALREADY registered: ${t}^${e}`), null;
@@ -759,7 +759,7 @@
759
759
  function Ve(e) {
760
760
  if (ot(e)) return hn("gobj NULL or DESTROYED"), -1;
761
761
  if (!e.running) return hn(`${et(e)}: GObj NOT RUNNING`), -1;
762
- e.playing && (yn(`${et(e)}: GObj stopping without previous pause`), xe(e)), J(e) && L(n("⏹ ⏹ stop: %s", tt(e))), e.running = !1;
762
+ e.playing && (En(`${et(e)}: GObj stopping without previous pause`), xe(e)), J(e) && L(n("⏹ ⏹ stop: %s", tt(e))), e.running = !1;
763
763
  let t = 0;
764
764
  return e.gclass.gmt.mt_stop && (t = e.gclass.gmt.mt_stop(e)), t;
765
765
  }
@@ -775,7 +775,7 @@
775
775
  if (e.disabled) return hn(`${et(e)}: GObj DISABLED`), -1;
776
776
  if (!Ke(e)) {
777
777
  if (e.gclass.gclass_flag & w.gcflag_required_start_to_play) return hn(`${et(e)}: Cannot play, start not done`), -1;
778
- yn(`${et(e)}: GObj playing without previous start`), Pe(e);
778
+ En(`${et(e)}: GObj playing without previous start`), Pe(e);
779
779
  }
780
780
  J(e) && L(n("⏯ ⏯ play: %s", tt(e))), e.playing = !0;
781
781
  let t = 0;
@@ -843,7 +843,7 @@
843
843
  }
844
844
  function it(e, t) {
845
845
  if (!sr(e)) return hn("gobj NULL of bad type"), null;
846
- e.bottom_gobj && t && yn(`${et(e)}: bottom_gobj already set`), e.bottom_gobj = t;
846
+ e.bottom_gobj && t && En(`${et(e)}: bottom_gobj already set`), e.bottom_gobj = t;
847
847
  }
848
848
  function _t(e, t, n) {
849
849
  return sr(e) ? t ? ge(e.gclass, t, n) : e.gclass.attrs_table : (hn("gobj NULL of bad type"), null);
@@ -939,7 +939,7 @@
939
939
  function ht(e, t) {
940
940
  return !ir(t) && !!ge(e.gclass, t, !1);
941
941
  }
942
- function yt(e, t, n) {
942
+ function Et(e, t, n) {
943
943
  let r = e.jn_attrs;
944
944
  if (t in r && Object.prototype.hasOwnProperty.call(r, t)) {
945
945
  let n = r[t];
@@ -947,7 +947,7 @@
947
947
  }
948
948
  return hn(`${et(e)}: GClass Attribute NOT FOUND, attr ${t}`), null;
949
949
  }
950
- function Et(e, t, n) {
950
+ function yt(e, t, n) {
951
951
  let r = {}, l = e.gclass.attrs_table;
952
952
  for (let n = 0; n < l.length; n++) {
953
953
  const o = l[n];
@@ -1134,16 +1134,16 @@
1134
1134
  return null;
1135
1135
  }
1136
1136
  var Wt = [
1137
- j(y.DTP_POINTER, "publisher", 0, null, "publisher gobj"),
1138
- j(y.DTP_POINTER, "subscriber", 0, null, "subscriber gobj"),
1139
- j(y.DTP_STRING, "event", 0, "", "event name subscribed"),
1140
- j(y.DTP_STRING, "renamed_event", 0, "", "rename event name"),
1141
- j(y.DTP_INTEGER, "subs_flag", 0, 0, "subscription flag"),
1142
- j(y.DTP_JSON, "__config__", 0, null, "subscription config"),
1143
- j(y.DTP_JSON, "__global__", 0, null, "global kw, merge in publishing"),
1144
- j(y.DTP_JSON, "__local__", 0, null, "local kw, remove in publishing"),
1145
- j(y.DTP_JSON, "__filter__", 0, null, "filter kw, filter in publishing"),
1146
- j(y.DTP_STRING, "__service__", 0, "", "subscription service"),
1137
+ j(E.DTP_POINTER, "publisher", 0, null, "publisher gobj"),
1138
+ j(E.DTP_POINTER, "subscriber", 0, null, "subscriber gobj"),
1139
+ j(E.DTP_STRING, "event", 0, "", "event name subscribed"),
1140
+ j(E.DTP_STRING, "renamed_event", 0, "", "rename event name"),
1141
+ j(E.DTP_INTEGER, "subs_flag", 0, 0, "subscription flag"),
1142
+ j(E.DTP_JSON, "__config__", 0, null, "subscription config"),
1143
+ j(E.DTP_JSON, "__global__", 0, null, "global kw, merge in publishing"),
1144
+ j(E.DTP_JSON, "__local__", 0, null, "local kw, remove in publishing"),
1145
+ j(E.DTP_JSON, "__filter__", 0, null, "filter kw, filter in publishing"),
1146
+ j(E.DTP_STRING, "__service__", 0, "", "subscription service"),
1147
1147
  v()
1148
1148
  ];
1149
1149
  function xt(e, t) {
@@ -1193,7 +1193,7 @@
1193
1193
  }
1194
1194
  function Jt(e, t, r, l) {
1195
1195
  let o = vr(e, t, "publisher", null, Zt.KW_REQUIRED), s = vr(e, t, "subscriber", null, Zt.KW_REQUIRED), i = Tr(e, t, "event", "", Zt.KW_REQUIRED);
1196
- if (!!(Er(e, t, "subs_flag", null, Zt.KW_REQUIRED) & Gt.__hard_subscription__) && !r) return -1;
1196
+ if (!!(yr(e, t, "subs_flag", null, Zt.KW_REQUIRED) & Gt.__hard_subscription__) && !r) return -1;
1197
1197
  let _ = B(s) || B(o);
1198
1198
  if (Bt(o.dl_subscriptions, t) < 0) return _ && L(n("💜💜👎 unsubscribing event '%s': publisher %s, subscriber'%s', ALREADY REMOVED", i || "", et(o), et(s))), 1;
1199
1199
  _ && (L(n("💜💜👎 unsubscribing event '%s': publisher %s, subscriber'%s'", i || "", et(o), et(s))), vn(t)), o.obflag & R.obflag_destroyed || l || o.gclass.gmt.mt_subscription_deleted && o.gclass.gmt.mt_subscription_deleted(o, t);
@@ -1215,11 +1215,11 @@
1215
1215
  }), ir(t)) t = "";
1216
1216
  else if (!(Ct(e, t, $.EVF_OUTPUT_EVENT) || e.gclass.gclass_flag & w.gcflag_no_check_output_events)) return hn(`event NOT in output event list: ${et(e)}, ${t}`), 0;
1217
1217
  let s = xt(r, t), i = Yt(e.dl_subscriptions, e, t, s.renamed_event, s.kw, l), _ = null;
1218
- for (let t = 0; t < i.length; t++) if (Er(e, i[t], "subs_flag", 0, Zt.KW_REQUIRED) & Gt.__hard_subscription__) {
1218
+ for (let t = 0; t < i.length; t++) if (yr(e, i[t], "subs_flag", 0, Zt.KW_REQUIRED) & Gt.__hard_subscription__) {
1219
1219
  _ = i[t];
1220
1220
  break;
1221
1221
  }
1222
- if (_) return yn(`${et(e)}: Hard subscription REPEATED, the one there is kept and returned (event: ${t}, subscriber: ${et(l)})`), _;
1222
+ if (_) return En(`${et(e)}: Hard subscription REPEATED, the one there is kept and returned (event: ${t}, subscriber: ${et(l)})`), _;
1223
1223
  Qn(i) > 0 && (hn(`${et(e)}: ${Qn(i)} subscription(s) REPEATED, will be deleted and override`), vn(i, "subscription REPEATED"), Ht(e, i, !1));
1224
1224
  let a = function(e, t, n, r) {
1225
1225
  let l = _e(e, Wt);
@@ -1240,11 +1240,11 @@
1240
1240
  } else hn(`${et(e)}: EVENT NOT FOUND (__rename_event_name__: ${s})`);
1241
1241
  }
1242
1242
  if (gr(n, "__hard_subscription__")) {
1243
- let t = yr(e, n, "__hard_subscription__", !1);
1243
+ let t = Er(e, n, "__hard_subscription__", !1);
1244
1244
  Kn(n, "__hard_subscription__"), t && (o |= Gt.__hard_subscription__);
1245
1245
  }
1246
1246
  if (gr(n, "__own_event__")) {
1247
- let t = yr(e, n, "__own_event__", !1);
1247
+ let t = Er(e, n, "__own_event__", !1);
1248
1248
  Kn(n, "__own_event__"), t && (o |= Gt.__own_event__);
1249
1249
  }
1250
1250
  }
@@ -1262,7 +1262,7 @@
1262
1262
  function Ht(e, t, n) {
1263
1263
  let r = [...t], l = 0;
1264
1264
  for (let t = 0; t < r.length; t++) Jt(e, r[t], n, !1) > 0 && l++;
1265
- return l && yn(`${et(e)}: Subscription(s) already removed, nothing to remove (count: ${l})`), 0;
1265
+ return l && En(`${et(e)}: Subscription(s) already removed, nothing to remove (count: ${l})`), 0;
1266
1266
  }
1267
1267
  function zt(e, t, n, r) {
1268
1268
  return null == n && (n = {}), Yt(e.dl_subscriptions, e, t, null, n, r);
@@ -1290,7 +1290,7 @@
1290
1290
  }
1291
1291
  let u = vr(e, a, "subscriber", null, Zt.KW_REQUIRED);
1292
1292
  if (!u || ot(u)) continue;
1293
- let c = Er(e, a, "subs_flag", 0, Zt.KW_REQUIRED), f = Tr(e, a, "event", "", Zt.KW_REQUIRED);
1293
+ let c = yr(e, a, "subs_flag", 0, Zt.KW_REQUIRED), f = Tr(e, a, "event", "", Zt.KW_REQUIRED);
1294
1294
  if (ir(f) || 0 === ur(f, t)) {
1295
1295
  jr(e, a, "__config__", null, 0);
1296
1296
  let l = jr(e, a, "__global__", null, 0), s = jr(e, a, "__local__", null, 0), f = Or(e, a, "__filter__", null, 0), g = a.renamed_event;
@@ -1310,7 +1310,7 @@
1310
1310
  if (_ += m, i++, ot(e)) break;
1311
1311
  }
1312
1312
  }
1313
- return i || l && l.event_flag & $.EVF_NO_WARN_SUBS || yn(`${et(e)}: Publish event WITHOUT subscribers, ev ${t}`), _;
1313
+ return i || l && l.event_flag & $.EVF_NO_WARN_SUBS || En(`${et(e)}: Publish event WITHOUT subscribers, ev ${t}`), _;
1314
1314
  }
1315
1315
  var Zt = Object.freeze({
1316
1316
  KW_REQUIRED: 1,
@@ -1407,11 +1407,11 @@
1407
1407
  let n = mn(e, ...t), r = el();
1408
1408
  tn && (tn === en.error ? cn("error", n) && tn("%c" + r + " ERROR: " + String(n), "color:red") : (cn("error", n) && en.error("%c" + r + " ERROR: " + String(n), "color:red"), tn(`${r} ERROR: ${String(n)}`))), gn("error", n, r);
1409
1409
  }
1410
- function yn(e, ...t) {
1410
+ function En(e, ...t) {
1411
1411
  let n = mn(e, ...t), r = el();
1412
1412
  nn && (nn === en.warn ? cn("warning", n) && nn("%c" + r + " WARNING: " + String(n), "color:yellow") : (cn("warning", n) && en.warn("%c" + r + " WARNING: " + String(n), "color:yellow"), nn(`${r} WARNING: ${String(n)}`))), gn("warning", n, r);
1413
1413
  }
1414
- function En(e, ...t) {
1414
+ function yn(e, ...t) {
1415
1415
  let n = mn(e, ...t), r = el();
1416
1416
  ln && cn("debug", n) && ln("%c" + r + " DEBUG: " + String(n), "color:silver"), gn("debug", n, r);
1417
1417
  }
@@ -1766,7 +1766,7 @@
1766
1766
  else if (s = mr(e, t, l, !0), void 0 === s) return -1;
1767
1767
  return er(s) ? (hn(`${r}kw_delete(): cannot delete an item of a list: '${n}'`), -1) : Zn(s) && Object.prototype.hasOwnProperty.call(s, o) ? (delete s[o], 0) : (hn(`${r}kw_delete(): path not found: '${n}'`), -1);
1768
1768
  }
1769
- function yr(e, t, n, r, l) {
1769
+ function Er(e, t, n, r, l) {
1770
1770
  e && !sr(e) && hn("GObj bad instanceof");
1771
1771
  let o = mr(e, t, n, !1);
1772
1772
  const s = l && l & Zt.KW_REQUIRED, i = l && l & Zt.KW_CREATE, _ = l && l & Zt.KW_EXTRACT, a = l && l & Zt.KW_WILD_NUMBER;
@@ -1787,7 +1787,7 @@
1787
1787
  }
1788
1788
  return _ && hr(e, t, n), u;
1789
1789
  }
1790
- function Er(e, t, n, r, l) {
1790
+ function yr(e, t, n, r, l) {
1791
1791
  e && !sr(e) && hn("GObj bad instanceof");
1792
1792
  let o = mr(e, t, n, !1);
1793
1793
  const s = l && l & Zt.KW_REQUIRED, i = l && l & Zt.KW_CREATE, _ = l && l & Zt.KW_EXTRACT, a = l && l & Zt.KW_WILD_NUMBER;
@@ -1884,8 +1884,24 @@
1884
1884
  }
1885
1885
  function wr(e, t, n, r, l) {
1886
1886
  if (e && !sr(e) && hn("GObj bad instanceof"), !Zn(t)) return hn("kw is not an object"), -1;
1887
- let o = jr(e, t, n, {}, Zt.KW_CREATE);
1888
- return Zn(o) ? (br(o, r, l), 0) : (hn("subdict is not an object"), -1);
1887
+ let o = mr(e, t, n, !1);
1888
+ if (void 0 === o) {
1889
+ if (!tr(n) || function(e, t) {
1890
+ let n = t.split("`"), r = e;
1891
+ for (let e = 0; e < n.length - 1; e++) {
1892
+ if (er(r)) {
1893
+ const t = pr(r, n[e]);
1894
+ if (t < 0) return !1;
1895
+ r = r[t];
1896
+ } else r = Object.prototype.hasOwnProperty.call(r, n[e]) ? r[n[e]] : void 0;
1897
+ if (null == r) return !1;
1898
+ if (!Zn(r) && !er(r)) return !0;
1899
+ }
1900
+ return !1;
1901
+ }(t, n)) return -1;
1902
+ if (o = {}, Sr(e, t, n, o) < 0) return -1;
1903
+ }
1904
+ return Zn(o) ? (br(o, r, l), 0) : (hn(`subdict is not an object: '${n}'`), -1);
1889
1905
  }
1890
1906
  function Nr(e, t, r) {
1891
1907
  let l = "", o = !1;
@@ -2322,9 +2338,9 @@
2322
2338
  return t.is_file && (t.type = "file"), t;
2323
2339
  }
2324
2340
  var bl = [
2325
- j(y.DTP_POINTER, "subscriber", 0, null, "Subscriber of output events"),
2326
- j(y.DTP_BOOLEAN, "periodic", 0, 0, "True for periodic timeouts"),
2327
- j(y.DTP_INTEGER, "msec", 0, 0, "Timeout in milliseconds"),
2341
+ j(E.DTP_POINTER, "subscriber", 0, null, "Subscriber of output events"),
2342
+ j(E.DTP_BOOLEAN, "periodic", 0, 0, "True for periodic timeouts"),
2343
+ j(E.DTP_INTEGER, "msec", 0, 0, "Timeout in milliseconds"),
2328
2344
  v()
2329
2345
  ], pl = {
2330
2346
  periodic: !1,
@@ -2337,7 +2353,7 @@
2337
2353
  Vt(e, "EV_TIMEOUT", {}, e);
2338
2354
  }, l.msec) : l.timer_id = -1, lt(e) ? Vt(nt(e), o, {}, e) : Xt(e, o, {}), l.periodic || -1 !== l.timer_id || Ke(e) && Ve(e), 0;
2339
2355
  }
2340
- var yl = {
2356
+ var El = {
2341
2357
  mt_create: function(e) {
2342
2358
  let t = e.priv;
2343
2359
  const n = Ot(e, "subscriber");
@@ -2362,7 +2378,7 @@
2362
2378
  },
2363
2379
  mt_destroy: function(e) {}
2364
2380
  };
2365
- function El(e, t) {
2381
+ function yl(e, t) {
2366
2382
  return e instanceof S ? "C_TIMER" !== Ze(e) ? (hn("not C_TIMER GObj"), -1) : (Nt(e, "periodic", !1), void Rt(e, "msec", t)) : (hn("not GObj TYPE"), -1);
2367
2383
  }
2368
2384
  function Tl(e, t) {
@@ -2372,28 +2388,28 @@
2372
2388
  return e instanceof S ? "C_TIMER" !== Ze(e) ? (hn("not C_TIMER GObj"), -1) : void Rt(e, "msec", -1) : (hn("not GObj TYPE"), -1);
2373
2389
  }
2374
2390
  var jl = [
2375
- j(y.DTP_BOOLEAN, "changesLost", 0, !1, "Set true to warn about leaving page"),
2376
- j(y.DTP_BOOLEAN, "browser_beforeunload", 0, !1, "Set true to refreshing browser"),
2377
- j(y.DTP_STRING, "__username__", 0, "", "Username"),
2378
- j(y.DTP_STRING, "start_date", 0, "", "Yuno starting date"),
2379
- j(y.DTP_STRING, "node_uuid", 0, "", "uuid of node"),
2380
- j(y.DTP_STRING, "yuno_role", 0, "", "Yuno role"),
2381
- j(y.DTP_STRING, "yuno_id", 0, "", "Yuno Id. Set by agent"),
2382
- j(y.DTP_STRING, "yuno_name", 0, "", "Yuno name. Set by agent"),
2383
- j(y.DTP_STRING, "yuno_tag", 0, "", "Tags of yuno. Set by agent"),
2384
- j(y.DTP_STRING, "yuno_release", 0, "", "Yuno Release. Set by agent"),
2385
- j(y.DTP_STRING, "yuno_version", 0, "", "Yuno version (APP_VERSION)"),
2386
- j(y.DTP_STRING, "yuneta_version", 0, s, "Yuneta version"),
2387
- j(y.DTP_LIST, "required_services", 0, "[]", "Required services"),
2388
- j(y.DTP_DICT, "trace_levels", E.SDF_PERSIST, "{}", "Trace levels"),
2389
- j(y.DTP_DICT, "no_trace_levels", E.SDF_PERSIST, "{}", "No trace levels"),
2390
- j(y.DTP_POINTER, "trace_ievent_callback", 0, null, "Where the traffic trace goes (C_IEVENT_CLI levels ievents/ievents2); console when null"),
2391
- j(y.DTP_BOOLEAN, "developer", 0, !1, "Developer mode enabled"),
2392
- j(y.DTP_INTEGER, "periodic_timeout", 0, "1000", "Timeout periodic, in miliseconds."),
2391
+ j(E.DTP_BOOLEAN, "changesLost", 0, !1, "Set true to warn about leaving page"),
2392
+ j(E.DTP_BOOLEAN, "browser_beforeunload", 0, !1, "Set true to refreshing browser"),
2393
+ j(E.DTP_STRING, "__username__", 0, "", "Username"),
2394
+ j(E.DTP_STRING, "start_date", 0, "", "Yuno starting date"),
2395
+ j(E.DTP_STRING, "node_uuid", 0, "", "uuid of node"),
2396
+ j(E.DTP_STRING, "yuno_role", 0, "", "Yuno role"),
2397
+ j(E.DTP_STRING, "yuno_id", 0, "", "Yuno Id. Set by agent"),
2398
+ j(E.DTP_STRING, "yuno_name", 0, "", "Yuno name. Set by agent"),
2399
+ j(E.DTP_STRING, "yuno_tag", 0, "", "Tags of yuno. Set by agent"),
2400
+ j(E.DTP_STRING, "yuno_release", 0, "", "Yuno Release. Set by agent"),
2401
+ j(E.DTP_STRING, "yuno_version", 0, "", "Yuno version (APP_VERSION)"),
2402
+ j(E.DTP_STRING, "yuneta_version", 0, s, "Yuneta version"),
2403
+ j(E.DTP_LIST, "required_services", 0, "[]", "Required services"),
2404
+ j(E.DTP_DICT, "trace_levels", y.SDF_PERSIST, "{}", "Trace levels"),
2405
+ j(E.DTP_DICT, "no_trace_levels", y.SDF_PERSIST, "{}", "No trace levels"),
2406
+ j(E.DTP_POINTER, "trace_ievent_callback", 0, null, "Where the traffic trace goes (C_IEVENT_CLI levels ievents/ievents2); console when null"),
2407
+ j(E.DTP_BOOLEAN, "developer", 0, !1, "Developer mode enabled"),
2408
+ j(E.DTP_INTEGER, "periodic_timeout", 0, "1000", "Timeout periodic, in miliseconds."),
2393
2409
  v()
2394
2410
  ], Ol = { gobj_timer: null }, Sl = null;
2395
2411
  function wl(e, t, n, r) {
2396
- let l = yt(e, t);
2412
+ let l = Et(e, t);
2397
2413
  return Zn(l) || (l = {}), l[n] = r, St(e, t, l), De(e, t);
2398
2414
  }
2399
2415
  function Nl(e) {
@@ -2410,8 +2426,8 @@
2410
2426
  var Dl = {
2411
2427
  mt_create: function(e) {
2412
2428
  let t = e.priv;
2413
- $t(e, "start_date", el()), $t(e, "node_uuid", nl()), e.priv.gobj_timer = Ce(Xe(e), "C_TIMER", {}, e), t.periodic_timeout = yt(e, "periodic_timeout"), function(e) {
2414
- let t = yt(e, "trace_levels");
2429
+ $t(e, "start_date", el()), $t(e, "node_uuid", nl()), e.priv.gobj_timer = Ce(Xe(e), "C_TIMER", {}, e), t.periodic_timeout = Et(e, "periodic_timeout"), function(e) {
2430
+ let t = Et(e, "trace_levels");
2415
2431
  if (!Zn(t)) return 0;
2416
2432
  let n = t.__global_trace__;
2417
2433
  if (er(n)) {
@@ -2426,7 +2442,7 @@
2426
2442
  } else hn(`${Xe(e)}: trace_levels of ${n} MUST be a list`);
2427
2443
  }
2428
2444
  }(e), function(e) {
2429
- let t = yt(e, "no_trace_levels");
2445
+ let t = Et(e, "no_trace_levels");
2430
2446
  if (!Zn(t)) return 0;
2431
2447
  let n = t.__global_no_trace__;
2432
2448
  if (er(n)) {
@@ -2482,21 +2498,21 @@
2482
2498
  }
2483
2499
  };
2484
2500
  var kl = "ievent_gate_stack", Al = [
2485
- j(y.DTP_STRING, "wanted_yuno_role", E.SDF_RD, "", "wanted yuno role"),
2486
- j(y.DTP_STRING, "wanted_yuno_name", E.SDF_RD, "", "wanted yuno name"),
2487
- j(y.DTP_STRING, "wanted_yuno_service", E.SDF_RD, "", "wanted yuno service"),
2488
- j(y.DTP_STRING, "remote_yuno_role", E.SDF_RD, "", "confirmed remote yuno role"),
2489
- j(y.DTP_STRING, "remote_yuno_name", E.SDF_RD, "", "confirmed remote yuno name"),
2490
- j(y.DTP_STRING, "remote_yuno_service", E.SDF_RD, "", "confirmed remote yuno service"),
2491
- j(y.DTP_STRING, "url", E.SDF_RD, "", "Url to connect"),
2492
- j(y.DTP_STRING, "jwt", E.SDF_PERSIST, "", "JWT"),
2493
- j(y.DTP_STRING, "cert_pem", E.SDF_PERSIST, "", "SSL server certification, PEM str format"),
2494
- j(y.DTP_JSON, "extra_info", E.SDF_RD, "{}", "dict data set by user, added to the identity card msg."),
2495
- j(y.DTP_LIST, "required_services", E.SDF_RD, "[]", "Services this LINK requires (identity card). Empty = the yuno's `required_services`, as before. A yuno with several links to DIFFERENT backends must set it per link: the yuno-wide list is the union, so every backend is told the service names of all the others."),
2496
- j(y.DTP_INTEGER, "timeout_retry", E.SDF_RD, "5000", "First reconnect delay (ms). It BACKS OFF from here, doubling up to timeout_retry_max, and resets when a session is reached"),
2497
- j(y.DTP_INTEGER, "timeout_retry_max", E.SDF_RD, "60000", "Cap of the reconnect backoff (ms). Set it equal to timeout_retry for the old fixed-interval behaviour"),
2498
- j(y.DTP_INTEGER, "timeout_idack", E.SDF_RD, "5000", "timeout waiting idAck"),
2499
- j(y.DTP_POINTER, "subscriber", 0, 0, "subscriber of output-events. If null then subscriber is the parent"),
2501
+ j(E.DTP_STRING, "wanted_yuno_role", y.SDF_RD, "", "wanted yuno role"),
2502
+ j(E.DTP_STRING, "wanted_yuno_name", y.SDF_RD, "", "wanted yuno name"),
2503
+ j(E.DTP_STRING, "wanted_yuno_service", y.SDF_RD, "", "wanted yuno service"),
2504
+ j(E.DTP_STRING, "remote_yuno_role", y.SDF_RD, "", "confirmed remote yuno role"),
2505
+ j(E.DTP_STRING, "remote_yuno_name", y.SDF_RD, "", "confirmed remote yuno name"),
2506
+ j(E.DTP_STRING, "remote_yuno_service", y.SDF_RD, "", "confirmed remote yuno service"),
2507
+ j(E.DTP_STRING, "url", y.SDF_RD, "", "Url to connect"),
2508
+ j(E.DTP_STRING, "jwt", y.SDF_PERSIST, "", "JWT"),
2509
+ j(E.DTP_STRING, "cert_pem", y.SDF_PERSIST, "", "SSL server certification, PEM str format"),
2510
+ j(E.DTP_JSON, "extra_info", y.SDF_RD, "{}", "dict data set by user, added to the identity card msg."),
2511
+ j(E.DTP_LIST, "required_services", y.SDF_RD, "[]", "Services this LINK requires (identity card). Empty = the yuno's `required_services`, as before. A yuno with several links to DIFFERENT backends must set it per link: the yuno-wide list is the union, so every backend is told the service names of all the others."),
2512
+ j(E.DTP_INTEGER, "timeout_retry", y.SDF_RD, "5000", "First reconnect delay (ms). It BACKS OFF from here, doubling up to timeout_retry_max, and resets when a session is reached"),
2513
+ j(E.DTP_INTEGER, "timeout_retry_max", y.SDF_RD, "60000", "Cap of the reconnect backoff (ms). Set it equal to timeout_retry for the old fixed-interval behaviour"),
2514
+ j(E.DTP_INTEGER, "timeout_idack", y.SDF_RD, "5000", "timeout waiting idAck"),
2515
+ j(E.DTP_POINTER, "subscriber", 0, 0, "subscriber of output-events. If null then subscriber is the parent"),
2500
2516
  v()
2501
2517
  ], Il = [
2502
2518
  ["ievents", "Trace inter-events with metadata of kw"],
@@ -2520,7 +2536,7 @@
2520
2536
  function Ul(e) {
2521
2537
  e.priv.websocket && hn("Websocket ALREADY setup");
2522
2538
  const t = jt(e, "url");
2523
- En(`====> Starting WebSocket to '${t}' (${et(e)})`);
2539
+ yn(`====> Starting WebSocket to '${t}' (${et(e)})`);
2524
2540
  const n = ++e.priv.ws_seq;
2525
2541
  let r;
2526
2542
  try {
@@ -2532,7 +2548,7 @@
2532
2548
  code: 1006,
2533
2549
  reason: r.message,
2534
2550
  was_clean: !1
2535
- }, e) < 0 && El(e.priv.gobj_timer, ql(e)), null;
2551
+ }, e) < 0 && yl(e.priv.gobj_timer, ql(e)), null;
2536
2552
  }
2537
2553
  return r ? (r.onopen = () => {
2538
2554
  n !== e.priv.ws_seq || ot(e) || Vt(e, "EV_ON_OPEN", {
@@ -2545,7 +2561,7 @@
2545
2561
  data: r.data
2546
2562
  }, e);
2547
2563
  }, r.onclose = (r) => {
2548
- ot(e) || n === e.priv.ws_seq && (Tt(qe(), "browser_beforeunload") ? yn("Close websocket by unload page") : Vt(e, "EV_ON_CLOSE", {
2564
+ ot(e) || n === e.priv.ws_seq && (Tt(qe(), "browser_beforeunload") ? En("Close websocket by unload page") : Vt(e, "EV_ON_CLOSE", {
2549
2565
  url: t,
2550
2566
  ws_seq: n,
2551
2567
  code: r.code,
@@ -2557,20 +2573,20 @@
2557
2573
  function Fl(e, t = 1e3, n = "") {
2558
2574
  let r = e.priv, l = r.websocket;
2559
2575
  if (r.websocket = null, l && l.readyState !== WebSocket.CLOSED && l.readyState !== WebSocket.CLOSING) {
2560
- En(`Closing WebSocket (Code: ${t}, Reason: "${n}")`);
2576
+ yn(`Closing WebSocket (Code: ${t}, Reason: "${n}")`);
2561
2577
  try {
2562
2578
  l.close(t, n);
2563
2579
  } catch (t) {
2564
2580
  hn(`${et(e)}: Error closing WebSocket: ${t.message}`);
2565
2581
  }
2566
- } else yn("WebSocket is already closed or in the process of closing.");
2582
+ } else En("WebSocket is already closed or in the process of closing.");
2567
2583
  }
2568
2584
  function Vl(e, t, n) {
2569
2585
  let r = el();
2570
2586
  try {
2571
- En("\n" + r + " " + t + "\n"), Un(n);
2587
+ yn("\n" + r + " " + t + "\n"), Un(n);
2572
2588
  } catch (e) {
2573
- En("ERROR in trace_inter_event: " + e);
2589
+ yn("ERROR in trace_inter_event: " + e);
2574
2590
  }
2575
2591
  }
2576
2592
  var Gl = class {
@@ -2582,10 +2598,10 @@
2582
2598
  return function(e, t) {
2583
2599
  let n = e.priv, r = JSON.stringify(t);
2584
2600
  if (Cl(e)) {
2585
- let n = jt(e, "url"), l = Xe(qe()) + " ==> " + n, o = yt(qe(), "trace_ievent_callback");
2601
+ let n = jt(e, "url"), l = Xe(qe()) + " ==> " + n, o = Et(qe(), "trace_ievent_callback");
2586
2602
  o ? o(l, t, 1, r.length) : Vl(0, l, t);
2587
2603
  }
2588
- if (!n.websocket || n.websocket.readyState !== WebSocket.OPEN) return yn(`${et(e)}: send_iev(): websocket not open, message lost`), -1;
2604
+ if (!n.websocket || n.websocket.readyState !== WebSocket.OPEN) return En(`${et(e)}: send_iev(): websocket not open, message lost`), -1;
2589
2605
  try {
2590
2606
  n.websocket.send(r);
2591
2607
  } catch (t) {
@@ -2608,8 +2624,8 @@
2608
2624
  };
2609
2625
  }
2610
2626
  function xl(e) {
2611
- let t = e.priv, n = Je(qe()), r = jt(qe(), "yuno_version"), l = jt(qe(), "yuno_release"), o = jt(qe(), "yuno_tag"), i = yt(e, "required_services");
2612
- i && i.length || (i = yt(qe(), "required_services"));
2627
+ let t = e.priv, n = Je(qe()), r = jt(qe(), "yuno_version"), l = jt(qe(), "yuno_release"), o = jt(qe(), "yuno_tag"), i = Et(e, "required_services");
2628
+ i && i.length || (i = Et(qe(), "required_services"));
2613
2629
  let _ = {
2614
2630
  yuno_role: ze(),
2615
2631
  yuno_id: Qe(),
@@ -2630,7 +2646,7 @@
2630
2646
  language: "undefined" != typeof window ? window.navigator.language : "",
2631
2647
  required_services: i
2632
2648
  };
2633
- return Gr(e, _, kl, Wl(e, Xe(nt(e)), null)), Wr(e, _, "__identity__"), El(t.gobj_timer, vt(e, "timeout_idack")), Ml(e, "EV_IDENTITY_CARD", _);
2649
+ return Gr(e, _, kl, Wl(e, Xe(nt(e)), null)), Wr(e, _, "__identity__"), yl(t.gobj_timer, vt(e, "timeout_idack")), Ml(e, "EV_IDENTITY_CARD", _);
2634
2650
  }
2635
2651
  function Kl(e, t) {
2636
2652
  if (ir(t.event)) return -1;
@@ -2643,16 +2659,16 @@
2643
2659
  return Ke(e) && (l.websocket = Ul(e)), 0;
2644
2660
  }
2645
2661
  function Bl(e, t, n, r) {
2646
- return En("Websocket opened: " + e.priv.url), xl(e), 0;
2662
+ return yn("Websocket opened: " + e.priv.url), xl(e), 0;
2647
2663
  }
2648
2664
  function Jl(e, t, n, r) {
2649
2665
  let l = e.priv, o = n.url;
2650
- return void 0 !== n.ws_seq && n.ws_seq !== l.ws_seq || (bn(), yn(`${et(e)}: WebSocket closed ${o} (Code: ${n.code}, Reason: "${n.reason}", Clean: ${n.was_clean})`), l.websocket && (l.websocket.onopen = null, l.websocket.onmessage = null, l.websocket.onerror = null, l.websocket.onclose = null, l.websocket = null), l.inform_on_close ? (l.inform_on_close = !1, Xt(e, "EV_ON_CLOSE", {
2666
+ return void 0 !== n.ws_seq && n.ws_seq !== l.ws_seq || (bn(), En(`${et(e)}: WebSocket closed ${o} (Code: ${n.code}, Reason: "${n.reason}", Clean: ${n.was_clean})`), l.websocket && (l.websocket.onopen = null, l.websocket.onmessage = null, l.websocket.onerror = null, l.websocket.onclose = null, l.websocket = null), l.inform_on_close ? (l.inform_on_close = !1, Xt(e, "EV_ON_CLOSE", {
2651
2667
  url: o,
2652
2668
  remote_yuno_name: l.remote_yuno_name,
2653
2669
  remote_yuno_role: l.remote_yuno_role,
2654
2670
  remote_yuno_service: l.remote_yuno_service
2655
- })) : Ke(e) && (yn(`${et(e)}: EV_ON_OPEN_ERROR cannot open ${o} (Code: ${n.code}, Reason: "${n.reason}", Clean: ${n.was_clean})`), Xt(e, "EV_ON_OPEN_ERROR", {
2671
+ })) : Ke(e) && (En(`${et(e)}: EV_ON_OPEN_ERROR cannot open ${o} (Code: ${n.code}, Reason: "${n.reason}", Clean: ${n.was_clean})`), Xt(e, "EV_ON_OPEN_ERROR", {
2656
2672
  url: o,
2657
2673
  remote_yuno_name: l.remote_yuno_name,
2658
2674
  remote_yuno_role: l.remote_yuno_role,
@@ -2660,7 +2676,7 @@
2660
2676
  code: n.code,
2661
2677
  reason: n.reason,
2662
2678
  was_clean: n.was_clean
2663
- })), Ke(e) && El(l.gobj_timer, ql(e))), 0;
2679
+ })), Ke(e) && yl(l.gobj_timer, ql(e))), 0;
2664
2680
  }
2665
2681
  function ql(e) {
2666
2682
  let t = e.priv, n = vt(e, "timeout_retry"), r = vt(e, "timeout_retry_max");
@@ -2676,7 +2692,7 @@
2676
2692
  vl(l.gobj_timer);
2677
2693
  let o = Mr(e, n, kl, !0), s = Tr(e, o, "src_yuno", ""), i = Tr(e, o, "src_role", ""), _ = Tr(e, o, "src_service", "");
2678
2694
  $t(e, "remote_yuno_name", s), $t(e, "remote_yuno_role", i), $t(e, "remote_yuno_service", _);
2679
- let a = Er(e, n, "result", -1, 0), u = Tr(e, n, "comment", "", 0), c = Tr(e, n, "username", "", 0), f = Or(e, n, "services_roles", {});
2695
+ let a = yr(e, n, "result", -1, 0), u = Tr(e, n, "comment", "", 0), c = Tr(e, n, "username", "", 0), f = Or(e, n, "services_roles", {});
2680
2696
  if (a < 0) {
2681
2697
  Fl(e);
2682
2698
  let t = {
@@ -2714,21 +2730,21 @@
2714
2730
  try {
2715
2731
  n = JSON.parse(t);
2716
2732
  } catch (t) {
2717
- return yn(`${et(e)}: parsing inter_event json: ${t}`), null;
2733
+ return En(`${et(e)}: parsing inter_event json: ${t}`), null;
2718
2734
  }
2719
- if (!(n instanceof Object)) return yn(`${et(e)}: parsing inter_event: websocket data not a json object`), null;
2735
+ if (!(n instanceof Object)) return En(`${et(e)}: parsing inter_event: websocket data not a json object`), null;
2720
2736
  let r = n.event;
2721
- if (!r) return yn(`${et(e)}: parsing inter_event: no event`), null;
2722
- if ("string" != typeof r) return yn(`${et(e)}: parsing inter_event: event not a string`), null;
2737
+ if (!r) return En(`${et(e)}: parsing inter_event: no event`), null;
2738
+ if ("string" != typeof r) return En(`${et(e)}: parsing inter_event: event not a string`), null;
2723
2739
  let l = n.kw;
2724
2740
  return l ? l instanceof Object ? {
2725
2741
  event: r,
2726
2742
  kw: l || {}
2727
- } : (yn(`${et(e)}: parsing inter_event: kw not a json object`), null) : (yn(`${et(e)}: parsing inter_kw: no kw`), null);
2743
+ } : (En(`${et(e)}: parsing inter_event: kw not a json object`), null) : (En(`${et(e)}: parsing inter_kw: no kw`), null);
2728
2744
  }(e, n.data);
2729
- if (!o) return yn(`${et(e)}: frame dropped from ${l}: ${String(n.data).substring(0, 256)}`), -1;
2745
+ if (!o) return En(`${et(e)}: frame dropped from ${l}: ${String(n.data).substring(0, 256)}`), -1;
2730
2746
  if (Cl(e)) {
2731
- let e = Xe(qe()) + " <== " + l, t = n.data.length, r = yt(qe(), "trace_ievent_callback");
2747
+ let e = Xe(qe()) + " <== " + l, t = n.data.length, r = Et(qe(), "trace_ievent_callback");
2732
2748
  r ? r(e, o, 2, t) : Vl(0, e, o);
2733
2749
  }
2734
2750
  let s = o.event, i = o.kw;
@@ -2742,12 +2758,12 @@
2742
2758
  let _ = xr(e, i), a = Mr(e, i, kl), u = Tr(e, a, "dst_role", "");
2743
2759
  if (u.toLowerCase() !== ze().toLowerCase()) return hn(`"It's not my role, dst_role: ${u}, my_role: ${ze()}`), 0;
2744
2760
  let c = Tr(e, a, "dst_service", "");
2745
- if ("__subscribing__" === _) return yn(`${et(e)}: subscription event ignored, I'm client (service: ${c}, event: ${s})`), -1;
2746
- if ("__unsubscribing__" === _) return yn(`${et(e)}: unsubscription event ignored, I'm client (service: ${c}, event: ${s})`), -1;
2761
+ if ("__subscribing__" === _) return En(`${et(e)}: subscription event ignored, I'm client (service: ${c}, event: ${s})`), -1;
2762
+ if ("__unsubscribing__" === _) return En(`${et(e)}: unsubscription event ignored, I'm client (service: ${c}, event: ${s})`), -1;
2747
2763
  if (It(e, s, $.EVF_PUBLIC_EVENT)) return Vt(e, s, i, e), 0;
2748
2764
  if (!ir(c)) {
2749
2765
  let t = we(c, !1);
2750
- return t ? It(t, s, $.EVF_PUBLIC_EVENT) ? (Vt(t, s, i, e), 0) : (hn(`${et(e)}: Service found but no event or not public, service '${et(t)}', ev '${s}'`), -1) : (yn(`${et(e)}: event for a service that is gone, DROPPED: service '${c}', ev '${s}'`), 0);
2766
+ return t ? It(t, s, $.EVF_PUBLIC_EVENT) ? (Vt(t, s, i, e), 0) : (hn(`${et(e)}: Service found but no event or not public, service '${et(t)}', ev '${s}'`), -1) : (En(`${et(e)}: event for a service that is gone, DROPPED: service '${c}', ev '${s}'`), 0);
2751
2767
  }
2752
2768
  return lt(e) ? Vt(nt(e), s, i, e) : Xt(e, s, i), 0;
2753
2769
  }
@@ -2860,7 +2876,7 @@
2860
2876
  else if (o.length > 0 && "<" === o[0] && function(e) {
2861
2877
  if (Xr.size >= 100) return;
2862
2878
  const t = e.slice(0, 80);
2863
- Xr.has(t) || (Xr.add(t), yn(`createElement2: a string that starts with '<' is TEXT (set_strings_are_text): use html_markup() if it is markup: ${JSON.stringify(t)}`));
2879
+ Xr.has(t) || (Xr.add(t), En(`createElement2: a string that starts with '<' is TEXT (set_strings_are_text): use html_markup() if it is markup: ${JSON.stringify(t)}`));
2864
2880
  }(o), n && _) i.textContent = n(_) || o;
2865
2881
  else i.textContent = o;
2866
2882
  else if (er(o)) {
@@ -2880,20 +2896,20 @@
2880
2896
  let o = Or(null, t, e, l);
2881
2897
  Yn(n, e, o);
2882
2898
  }), n;
2883
- }, e.current_timestamp = el, e.data_type_t = y, e.db_list_persistent_attrs = function(e, t) {
2899
+ }, e.current_timestamp = el, e.data_type_t = E, e.db_list_persistent_attrs = function(e, t) {
2884
2900
  let n = kr(al(e), null, !1), r = {};
2885
2901
  return n && Zn(n) && (r = $r(e, n, t, !1)), r;
2886
2902
  }, e.db_load_persistent_attrs = function(e, t) {
2887
- let n = Et(e, E.SDF_PERSIST), r = kr(al(e), null, !1);
2903
+ let n = yt(e, y.SDF_PERSIST), r = kr(al(e), null, !1);
2888
2904
  if (r && Zn(r)) {
2889
2905
  let l = $r(e, r, t, !1);
2890
- l = $r(e, l, n, !1), wt(e, l, E.SDF_PERSIST);
2906
+ l = $r(e, l, n, !1), wt(e, l, y.SDF_PERSIST);
2891
2907
  }
2892
2908
  }, e.db_remove_persistent_attrs = function(e, t) {
2893
2909
  let n = Dr(e, kr(al(e), null, !1), t, !1);
2894
2910
  0 === zn(n) ? Ir(al(e)) : Ar(al(e), n);
2895
2911
  }, e.db_save_persistent_attrs = function(e, t) {
2896
- let n = $r(e, Et(e, E.SDF_PERSIST), t, !1), r = kr(al(e), null, !1);
2912
+ let n = $r(e, yt(e, y.SDF_PERSIST), t, !1), r = kr(al(e), null, !1);
2897
2913
  return r && Zn(r) && Wn(n, r), Ar(al(e), n);
2898
2914
  }, e.debounce = function(e, t = 0, n = !1) {
2899
2915
  let r = null, l = null, o = null;
@@ -2979,7 +2995,7 @@
2979
2995
  return l;
2980
2996
  }, e.flat_key_join = function(e) {
2981
2997
  return Array.isArray(e) && 0 !== e.length ? e.map((e) => "number" == typeof e ? `[${e}]` : sl(e)).join("`") : "";
2982
- }, e.flat_key_split = il, e.gclass_add_ev_action = ye, e.gclass_add_event_type = Te, e.gclass_add_state = he, e.gclass_check_fsm = je, e.gclass_create = de, e.gclass_event_type = ve, e.gclass_find_by_name = Oe, e.gclass_flag_t = w, e.gclass_unregister = be, e.getPositionRelativeToBody = function(e) {
2998
+ }, e.flat_key_split = il, e.gclass_add_ev_action = Ee, e.gclass_add_event_type = Te, e.gclass_add_state = he, e.gclass_check_fsm = je, e.gclass_create = de, e.gclass_event_type = ve, e.gclass_find_by_name = Oe, e.gclass_flag_t = w, e.gclass_unregister = be, e.getPositionRelativeToBody = function(e) {
2983
2999
  if (!e) return {
2984
3000
  top: 0,
2985
3001
  left: 0,
@@ -3001,7 +3017,7 @@
3001
3017
  }, e.get_function_name = rl, e.get_now = function() {
3002
3018
  return Math.floor(Date.now() / 1e3);
3003
3019
  }, e.gobj_bottom_gobj = st, e.gobj_change_parent = function(e, t) {
3004
- return ot(e) ? (hn("gobj NULL or DESTROYED"), null) : t instanceof S ? (e.parent && e.parent.gclass.gmt.mt_child_removed && e.parent.gclass.gmt.mt_child_removed(e.parent, e), e.parent && ($e(e.parent, e), e.parent = null), Re(t, e), t.gclass.gmt.mt_child_added && (Y(e) && En(n("👦👦🔵 child_added(%s): %s", tt(t), et(e))), t.gclass.gmt.mt_child_added(t, e)), 0) : (hn(`${et(e)}: gobj_change_parent() BAD TYPE of parent`), -1);
3020
+ return ot(e) ? (hn("gobj NULL or DESTROYED"), null) : t instanceof S ? (e.parent && e.parent.gclass.gmt.mt_child_removed && e.parent.gclass.gmt.mt_child_removed(e.parent, e), e.parent && ($e(e.parent, e), e.parent = null), Re(t, e), t.gclass.gmt.mt_child_added && (Y(e) && yn(n("👦👦🔵 child_added(%s): %s", tt(t), et(e))), t.gclass.gmt.mt_child_added(t, e)), 0) : (hn(`${et(e)}: gobj_change_parent() BAD TYPE of parent`), -1);
3005
3021
  }, e.gobj_change_state = Dt, e.gobj_command = function(e, t, r, o) {
3006
3022
  if (ot(e)) return hn("gobj NULL or DESTROYED"), -1;
3007
3023
  if (function(e) {
@@ -3072,7 +3088,7 @@
3072
3088
  }(n, e), n;
3073
3089
  }, e.gobj_match_gobj = bt, e.gobj_name = Xe, e.gobj_parent = nt, e.gobj_pause = xe, e.gobj_play = We, e.gobj_post_event = Ut, e.gobj_posted_events_size = function() {
3074
3090
  return Lt.length;
3075
- }, e.gobj_publish_event = Xt, e.gobj_read_attr = yt, e.gobj_read_attrs = Et, e.gobj_read_bool_attr = Tt, e.gobj_read_integer_attr = vt, e.gobj_read_pointer_attr = Ot, e.gobj_read_str_attr = jt, e.gobj_remove_persistent_attrs = function(e, t) {
3091
+ }, e.gobj_publish_event = Xt, e.gobj_read_attr = Et, e.gobj_read_attrs = yt, e.gobj_read_bool_attr = Tt, e.gobj_read_integer_attr = vt, e.gobj_read_pointer_attr = Ot, e.gobj_read_str_attr = jt, e.gobj_remove_persistent_attrs = function(e, t) {
3076
3092
  return Be(e) ? a ? a(e, t) : -1 : (hn(`${et(e)}: Only gobj services can load/save writable-persistent`), -1);
3077
3093
  }, e.gobj_repr_global_trace_levels = function() {
3078
3094
  return U.map(([e, t, n]) => ({
@@ -3090,7 +3106,7 @@
3090
3106
  o.name && (n && o.flag & n || (-1 === t || o.flag & t) && (ae(e, e.jn_attrs, o), Zn(e.priv) && Object.prototype.hasOwnProperty.call(e.priv, o.name) && (e.priv[o.name] = e.jn_attrs[o.name]), e.gclass.gmt.mt_writing && e.gclass.gmt.mt_writing(e, o.name)));
3091
3107
  }
3092
3108
  return 0;
3093
- }(e, E.SDF_VOLATIL, 0);
3109
+ }(e, y.SDF_VOLATIL, 0);
3094
3110
  }, e.gobj_save_persistent_attrs = De, e.gobj_search_path = mt, e.gobj_send_event = Vt, e.gobj_services = function() {
3095
3111
  let e = [];
3096
3112
  for (const t of Object.keys(b)) qn(e, t);
@@ -3116,7 +3132,7 @@
3116
3132
  const d = [["EV_STATE_CHANGED", $.EVF_SYSTEM_EVENT | $.EVF_OUTPUT_EVENT | $.EVF_NO_WARN_SUBS], [0, 0]];
3117
3133
  for (let e = 0; e < d.length; e++) {
3118
3134
  let t = d[e][0], n = d[e][1];
3119
- Ee(g, t, n);
3135
+ ye(g, t, n);
3120
3136
  }
3121
3137
  return 0;
3122
3138
  }, e.gobj_stats = function(e, t, r, l) {
@@ -3144,7 +3160,7 @@
3144
3160
  let n = s[t], r = Jt(e, n, !1, !1);
3145
3161
  0 === r ? i++ : r < 0 ? _++ : a++;
3146
3162
  }
3147
- return _ ? yn(`${et(e)}: Hard subscription not removed, only gobj_unsubscribe_list() with force removes it (event: ${t}, hard: ${_})`) : i || a || (yn(`${et(e)}: No subscription found`), Un(n, "No subscription found")), 0;
3163
+ return _ ? En(`${et(e)}: Hard subscription not removed, only gobj_unsubscribe_list() with force removes it (event: ${t}, hard: ${_})`) : i || a || (En(`${et(e)}: No subscription found`), Un(n, "No subscription found")), 0;
3148
3164
  }, e.gobj_unsubscribe_list = Ht, e.gobj_walk_gobj_children = at, e.gobj_walk_gobj_children_tree = ut, e.gobj_write_attr = St, e.gobj_write_attrs = wt, e.gobj_write_bool_attr = Nt, e.gobj_write_integer_attr = Rt, e.gobj_write_str_attr = $t, e.gobj_yuno = qe, e.gobj_yuno_id = Qe, e.gobj_yuno_name = He, e.gobj_yuno_role = ze, e.html_markup = function(e) {
3149
3165
  return "string" != typeof e ? (hn("html_markup: not a string, type " + typeof e), new qr("")) : new qr(e);
3150
3166
  }, e.id_index_in_obj_list = Pr, e.index_in_list = tl, e.is_array = er, e.is_boolean = rr, e.is_date = function(e) {
@@ -3168,6 +3184,7 @@
3168
3184
  let l = Or(null, Or(null, e, "topics", null, 0), t, null, 0);
3169
3185
  if (!l) return hn("jdb_delete: topic not found: " + t), null;
3170
3186
  if (ir(r.id)) return hn("jdb_delete: record without id: " + r), Tn(r), null;
3187
+ if (!tr(n)) return hn(`jdb_delete: path must be a string: ${String(n)}`), null;
3171
3188
  let o, s = n.split("`"), i = l;
3172
3189
  for (; (o = s.shift()) && !ir(o) && i;) Zn(i) && (i = Or(null, i, e.hook, null, 0)), i = Yr(i, null, o, !1);
3173
3190
  if (0 === s.length && i) if (er(i)) {
@@ -3190,22 +3207,23 @@
3190
3207
  return Or(null, n, t, null, 0) || (hn("jdb topic not found: " + t), Tn(n), null);
3191
3208
  }, e.jdb_init = function(e, t, n) {
3192
3209
  n && (e = Fn(e));
3193
- let r = Or(null, e, "type", [], 1);
3194
- Tr(null, e, "hook", "data", 1);
3195
- let l = Or(null, e, "schema", {}, 1), o = Or(null, e, "topics", {}, 1);
3210
+ let r = Or(null, e, "type", [], Zt.KW_CREATE);
3211
+ Tr(null, e, "hook", "data", Zt.KW_CREATE);
3212
+ let l = Or(null, e, "schema", {}, Zt.KW_CREATE), o = Or(null, e, "topics", {}, Zt.KW_CREATE);
3196
3213
  return Kr(l, function(e, t, n, l) {
3197
- "__" !== t.substring(0, 2) && Or(null, o, l, Fn(r), 1);
3214
+ "__" !== t.substring(0, 2) && Or(null, o, l, Fn(r), Zt.KW_CREATE);
3198
3215
  }, t), e;
3199
3216
  }, e.jdb_update = function(e, t, n, r) {
3200
3217
  let l = Or(null, Or(null, e, "topics", null, 0), t, null, 0);
3201
3218
  if (!l) return hn("jdb_update: topic not found: " + t), null;
3202
3219
  if (ir(r.id)) return hn("jdb_update: record without id: " + r), Tn(r), null;
3220
+ if (!tr(n)) return hn(`jdb_update: path must be a string: ${String(n)}`), null;
3203
3221
  let o, s = n.split("`"), i = l;
3204
- for (; (o = s.shift()) && !ir(o) && i;) Zn(i) && (i = Or(null, i, e.hook, [], 1)), i = Yr(i, null, o, !1);
3222
+ for (; (o = s.shift()) && !ir(o) && i;) Zn(i) && (i = Or(null, i, e.hook, [], Zt.KW_CREATE)), i = Yr(i, null, o, !1);
3205
3223
  if (0 === s.length && i) if (er(i)) i.push(r);
3206
3224
  else if (i.id === r.id) Gn(i, r);
3207
3225
  else {
3208
- let t = Or(null, i, e.hook, [], 1), n = Yr(t, e.hook, r.id, !1);
3226
+ let t = Or(null, i, e.hook, [], Zt.KW_CREATE), n = Yr(t, e.hook, r.id, !1);
3209
3227
  n ? Gn(n, r) : t.push(r);
3210
3228
  }
3211
3229
  return l;
@@ -3260,7 +3278,7 @@
3260
3278
  if (!n || !er(t)) return r && hn("item NULL or kw_list is not a list"), -1;
3261
3279
  for (let e = 0; e < t.length; e++) if (Vn(n, t[e])) return e;
3262
3280
  return r && hn("item not found in this list"), -1;
3263
- }, e.kw_find_path = mr, e.kw_flag_t = Zt, e.kw_get_bool = yr, e.kw_get_dict = jr, e.kw_get_dict_value = Or, e.kw_get_int = Er, e.kw_get_list = function(e, t, n, r, l) {
3281
+ }, e.kw_find_path = mr, e.kw_flag_t = Zt, e.kw_get_bool = Er, e.kw_get_dict = jr, e.kw_get_dict_value = Or, e.kw_get_int = yr, e.kw_get_list = function(e, t, n, r, l) {
3264
3282
  e && !sr(e) && hn("GObj bad instanceof");
3265
3283
  let o = mr(e, t, n, !1);
3266
3284
  const s = l && l & Zt.KW_REQUIRED, i = l && l & Zt.KW_CREATE, _ = l && l & Zt.KW_EXTRACT;
@@ -3386,10 +3404,10 @@
3386
3404
  else n && n(r.status);
3387
3405
  var e;
3388
3406
  }, r.send();
3389
- }, e.log_debug = En, e.log_error = hn, e.log_info = function(e, ...t) {
3407
+ }, e.log_debug = yn, e.log_error = hn, e.log_info = function(e, ...t) {
3390
3408
  let n = mn(e, ...t), r = el();
3391
3409
  rn && cn("info", n) && rn("%c" + r + " INFO: " + String(n), "color:cyan"), gn("info", n, r);
3392
- }, e.log_warning = yn, e.mask_secrets_inline = kn, e.msg_iev_get_msg_type = xr, e.msg_iev_get_stack = Mr, e.msg_iev_push_stack = Gr, e.msg_iev_read_key = Fr, e.msg_iev_set_msg_type = Wr, e.msg_iev_write_key = Vr, e.node_uuid = nl, e.parseBoolean = _r, e.parseSVG = function(e) {
3410
+ }, e.log_warning = En, e.mask_secrets_inline = kn, e.msg_iev_get_msg_type = xr, e.msg_iev_get_stack = Mr, e.msg_iev_push_stack = Gr, e.msg_iev_read_key = Fr, e.msg_iev_set_msg_type = Wr, e.msg_iev_write_key = Vr, e.node_uuid = nl, e.parseBoolean = _r, e.parseSVG = function(e) {
3393
3411
  return new DOMParser().parseFromString(e, "image/svg+xml").firstChild;
3394
3412
  }, e.refresh_language = function(e, t) {
3395
3413
  if (!or(t)) return void hn("You must supply a translation function");
@@ -3521,7 +3539,7 @@
3521
3539
  ["EV_TIMEOUT", $.EVF_OUTPUT_EVENT],
3522
3540
  ["EV_TIMEOUT_PERIODIC", $.EVF_OUTPUT_EVENT],
3523
3541
  [0, 0]
3524
- ], t, yl, 0, bl, pl, 0, 0, 0, w.gcflag_manual_start)) ? 0 : -1;
3542
+ ], t, El, 0, bl, pl, 0, 0, 0, w.gcflag_manual_start)) ? 0 : -1;
3525
3543
  }("C_TIMER");
3526
3544
  }, e.register_c_yuno = function() {
3527
3545
  return function(e) {
@@ -3537,7 +3555,7 @@
3537
3555
  if (!e) return "";
3538
3556
  const t = String(e).trim();
3539
3557
  return /^javascript:/i.test(t) || /^data:/i.test(t) ? "" : Jr(t);
3540
- }, e.sdata_flag_t = E, e.send_http_json_post = function(e, t, n) {
3558
+ }, e.sdata_flag_t = y, e.send_http_json_post = function(e, t, n) {
3541
3559
  let r = new XMLHttpRequest();
3542
3560
  r.open("POST", e), r.setRequestHeader("Accept", "application/json"), r.setRequestHeader("Content-Type", "application/json"), r.onreadystatechange = function() {
3543
3561
  4 === r.readyState && n(r.status, r.responseText);
@@ -3561,7 +3579,7 @@
3561
3579
  } else on = e;
3562
3580
  }, e.set_remote_log_functions = bn, e.set_strings_are_text = function(e) {
3563
3581
  Qr = !!e;
3564
- }, e.set_timeout = El, e.set_timeout_periodic = Tl, e.sprintf = n, e.stats_parser = function(e, t, n, r) {}, e.str_in_list = Ur, e.strcasecmp = ur, e.strcmp = ar, e.strings_are_text = function() {
3582
+ }, e.set_timeout = yl, e.set_timeout_periodic = Tl, e.sprintf = n, e.stats_parser = function(e, t, n, r) {}, e.str_in_list = Ur, e.strcasecmp = ur, e.strcmp = ar, e.strings_are_text = function() {
3565
3583
  return Qr;
3566
3584
  }, e.strncmp = function(e, t, n) {
3567
3585
  var r = (e + "").substring(0, n), l = (t + "").substring(0, n);
@@ -3611,9 +3629,9 @@
3611
3629
  }, e.timeTracker = function(e = "Time Tracker", t = !1) {
3612
3630
  const n = e, r = performance.now();
3613
3631
  let l = r;
3614
- return t && yn(`--\x3e ${n} - starting`), { mark: (e = "Intermediate", o = "") => {
3632
+ return t && En(`--\x3e ${n} - starting`), { mark: (e = "Intermediate", o = "") => {
3615
3633
  const s = performance.now(), i = (s - l) / 1e3, _ = (s - r) / 1e3;
3616
- return t && yn(`--\x3e ${n} ${e} - partial: ${i} sec, total: ${_} sec, ${o}`), l = s, {
3634
+ return t && En(`--\x3e ${n} ${e} - partial: ${i} sec, total: ${_} sec, ${o}`), l = s, {
3617
3635
  partial: i,
3618
3636
  total: _
3619
3637
  };