@yuneta/gobj-js 7.26.1 → 7.26.2
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 +49 -30
- package/dist/gobj-js.cjs.js.map +1 -1
- package/dist/gobj-js.cjs.min.js +981 -973
- package/dist/gobj-js.cjs.min.js.map +1 -1
- package/dist/gobj-js.es.js +49 -30
- package/dist/gobj-js.es.js.map +1 -1
- package/dist/gobj-js.es.min.js +176 -169
- package/dist/gobj-js.es.min.js.map +1 -1
- package/dist/gobj-js.iife.js +49 -30
- package/dist/gobj-js.iife.js.map +1 -1
- package/dist/gobj-js.iife.min.js +1037 -1029
- package/dist/gobj-js.iife.min.js.map +1 -1
- package/dist/gobj-js.umd.js +49 -30
- package/dist/gobj-js.umd.js.map +1 -1
- package/dist/gobj-js.umd.min.js +1037 -1029
- package/dist/gobj-js.umd.min.js.map +1 -1
- package/package.json +3 -3
package/dist/gobj-js.es.js
CHANGED
|
@@ -907,7 +907,7 @@ function json2item(gobj, sdata, it, jn_value_) {
|
|
|
907
907
|
}
|
|
908
908
|
if (jn_value2 === void 0) log_error(`${gobj_short_name(gobj)}: attr undefined: ${it.name}`);
|
|
909
909
|
sdata[it.name] = jn_value2;
|
|
910
|
-
if (is_object(gobj.priv) &&
|
|
910
|
+
if (is_object(gobj.priv) && Object.prototype.hasOwnProperty.call(gobj.priv, it.name)) gobj.priv[it.name] = jn_value2;
|
|
911
911
|
if (gobj.obflag & obflag_t.obflag_created && !(gobj.obflag & obflag_t.obflag_destroyed)) {
|
|
912
912
|
if (gobj.gclass.gmt.mt_writing) gobj.gclass.gmt.mt_writing(gobj, it.name);
|
|
913
913
|
}
|
|
@@ -2110,7 +2110,7 @@ function gobj_has_attr(gobj, name) {
|
|
|
2110
2110
|
function gobj_read_attr(gobj, name, src) {
|
|
2111
2111
|
let jn_attrs = gobj.jn_attrs;
|
|
2112
2112
|
if (name in jn_attrs) {
|
|
2113
|
-
if (
|
|
2113
|
+
if (Object.prototype.hasOwnProperty.call(jn_attrs, name)) {
|
|
2114
2114
|
let value = jn_attrs[name];
|
|
2115
2115
|
if (gobj.gclass.gmt.mt_reading) return gobj.gclass.gmt.mt_reading(gobj, name, value);
|
|
2116
2116
|
return value;
|
|
@@ -2216,9 +2216,9 @@ function gobj_write_attr(gobj, path, value, src) {
|
|
|
2216
2216
|
if (ss.length <= 1) {
|
|
2217
2217
|
let key = path;
|
|
2218
2218
|
if (key in jn_attrs) {
|
|
2219
|
-
if (
|
|
2219
|
+
if (Object.prototype.hasOwnProperty.call(jn_attrs, key)) {
|
|
2220
2220
|
jn_attrs[key] = value;
|
|
2221
|
-
if (is_object(gobj.priv) &&
|
|
2221
|
+
if (is_object(gobj.priv) && Object.prototype.hasOwnProperty.call(gobj.priv, key)) gobj.priv[key] = value;
|
|
2222
2222
|
if (gobj.obflag & obflag_t.obflag_created && !(gobj.obflag & obflag_t.obflag_destroyed)) {
|
|
2223
2223
|
if (gobj.gclass.gmt.mt_writing) gobj.gclass.gmt.mt_writing(gobj, key);
|
|
2224
2224
|
}
|
|
@@ -2239,9 +2239,9 @@ function gobj_write_attr(gobj, path, value, src) {
|
|
|
2239
2239
|
}
|
|
2240
2240
|
let jn_attrs = gobj.jn_attrs;
|
|
2241
2241
|
if (key in jn_attrs) {
|
|
2242
|
-
if (
|
|
2242
|
+
if (Object.prototype.hasOwnProperty.call(jn_attrs, key)) {
|
|
2243
2243
|
jn_attrs[key] = value;
|
|
2244
|
-
if (is_object(gobj.priv) &&
|
|
2244
|
+
if (is_object(gobj.priv) && Object.prototype.hasOwnProperty.call(gobj.priv, key)) gobj.priv[key] = value;
|
|
2245
2245
|
if (gobj.obflag & obflag_t.obflag_created && !(gobj.obflag & obflag_t.obflag_destroyed)) {
|
|
2246
2246
|
if (gobj.gclass.gmt.mt_writing) gobj.gclass.gmt.mt_writing(gobj, key);
|
|
2247
2247
|
}
|
|
@@ -2268,7 +2268,7 @@ function sdata_write_default_values(gobj, include_flag, exclude_flag) {
|
|
|
2268
2268
|
if (exclude_flag && it.flag & exclude_flag) continue;
|
|
2269
2269
|
if (include_flag === -1 || it.flag & include_flag) {
|
|
2270
2270
|
set_default(gobj, gobj.jn_attrs, it);
|
|
2271
|
-
if (is_object(gobj.priv) &&
|
|
2271
|
+
if (is_object(gobj.priv) && Object.prototype.hasOwnProperty.call(gobj.priv, it.name)) gobj.priv[it.name] = gobj.jn_attrs[it.name];
|
|
2272
2272
|
if (gobj.gclass.gmt.mt_writing) gobj.gclass.gmt.mt_writing(gobj, it.name);
|
|
2273
2273
|
}
|
|
2274
2274
|
}
|
|
@@ -2302,7 +2302,7 @@ function gobj_write_bool_attr(gobj, name, value) {
|
|
|
2302
2302
|
let hs = gobj_hsdata2(gobj, name, false);
|
|
2303
2303
|
if (hs) {
|
|
2304
2304
|
hs[name] = parseBoolean(value);
|
|
2305
|
-
if (is_object(gobj.priv) &&
|
|
2305
|
+
if (is_object(gobj.priv) && Object.prototype.hasOwnProperty.call(gobj.priv, name)) gobj.priv[name] = hs[name];
|
|
2306
2306
|
if (gobj.obflag & obflag_t.obflag_created && !(gobj.obflag & obflag_t.obflag_destroyed)) {
|
|
2307
2307
|
if (gobj.gclass.gmt.mt_writing) gobj.gclass.gmt.mt_writing(gobj, name);
|
|
2308
2308
|
}
|
|
@@ -2318,7 +2318,7 @@ function gobj_write_integer_attr(gobj, name, value) {
|
|
|
2318
2318
|
let hs = gobj_hsdata2(gobj, name, false);
|
|
2319
2319
|
if (hs) {
|
|
2320
2320
|
hs[name] = parseInt(value);
|
|
2321
|
-
if (is_object(gobj.priv) &&
|
|
2321
|
+
if (is_object(gobj.priv) && Object.prototype.hasOwnProperty.call(gobj.priv, name)) gobj.priv[name] = hs[name];
|
|
2322
2322
|
if (gobj.obflag & obflag_t.obflag_created && !(gobj.obflag & obflag_t.obflag_destroyed)) {
|
|
2323
2323
|
if (gobj.gclass.gmt.mt_writing) gobj.gclass.gmt.mt_writing(gobj, name);
|
|
2324
2324
|
}
|
|
@@ -2334,7 +2334,7 @@ function gobj_write_str_attr(gobj, name, value) {
|
|
|
2334
2334
|
let hs = gobj_hsdata2(gobj, name, false);
|
|
2335
2335
|
if (hs) {
|
|
2336
2336
|
hs[name] = String(value);
|
|
2337
|
-
if (is_object(gobj.priv) &&
|
|
2337
|
+
if (is_object(gobj.priv) && Object.prototype.hasOwnProperty.call(gobj.priv, name)) gobj.priv[name] = hs[name];
|
|
2338
2338
|
if (gobj.obflag & obflag_t.obflag_created && !(gobj.obflag & obflag_t.obflag_destroyed)) {
|
|
2339
2339
|
if (gobj.gclass.gmt.mt_writing) gobj.gclass.gmt.mt_writing(gobj, name);
|
|
2340
2340
|
}
|
|
@@ -2722,8 +2722,8 @@ function _subscription_match_kw(kw, event) {
|
|
|
2722
2722
|
kw,
|
|
2723
2723
|
renamed_event: ""
|
|
2724
2724
|
};
|
|
2725
|
-
let kw_match =
|
|
2726
|
-
let config_match =
|
|
2725
|
+
let kw_match = json_object_update({}, kw);
|
|
2726
|
+
let config_match = json_object_update({}, __config__);
|
|
2727
2727
|
kw_match.__config__ = config_match;
|
|
2728
2728
|
let renamed_event = "";
|
|
2729
2729
|
let rename = config_match.__rename_event_name__;
|
|
@@ -2731,7 +2731,7 @@ function _subscription_match_kw(kw, event) {
|
|
|
2731
2731
|
if (event_type) {
|
|
2732
2732
|
renamed_event = event_type.event_name;
|
|
2733
2733
|
delete config_match.__rename_event_name__;
|
|
2734
|
-
if (event && json_size(kw_match.__global__) > 0) kw_match.__global__ =
|
|
2734
|
+
if (event && json_size(kw_match.__global__) > 0) kw_match.__global__ = json_object_update(json_object_update({}, kw_match.__global__), { __original_event_name__: event });
|
|
2735
2735
|
}
|
|
2736
2736
|
delete config_match.__hard_subscription__;
|
|
2737
2737
|
delete config_match.__own_event__;
|
|
@@ -3107,7 +3107,7 @@ function gobj_publish_event(publisher, event, kw) {
|
|
|
3107
3107
|
}
|
|
3108
3108
|
}
|
|
3109
3109
|
let kw2publish = kw;
|
|
3110
|
-
if (json_size(__local__) > 0 || json_size(__global__) > 0) kw2publish =
|
|
3110
|
+
if (json_size(__local__) > 0 || json_size(__global__) > 0) kw2publish = json_object_update({}, kw);
|
|
3111
3111
|
if (json_size(__local__) > 0) kw_pop(kw2publish, __local__);
|
|
3112
3112
|
if (__config__) {}
|
|
3113
3113
|
if (json_size(__global__) > 0) json_object_update(kw2publish, json_deep_copy(__global__));
|
|
@@ -3644,10 +3644,7 @@ function json_deep_copy(obj) {
|
|
|
3644
3644
|
************************************************************/
|
|
3645
3645
|
function duplicate_objects(...sourceObjects) {
|
|
3646
3646
|
const result = {};
|
|
3647
|
-
for (const obj of sourceObjects)
|
|
3648
|
-
const clonedObj = structuredClone(obj);
|
|
3649
|
-
Object.assign(result, clonedObj);
|
|
3650
|
-
}
|
|
3647
|
+
for (const obj of sourceObjects) json_object_update(result, structuredClone(obj));
|
|
3651
3648
|
return result;
|
|
3652
3649
|
}
|
|
3653
3650
|
/************************************************************
|
|
@@ -4020,6 +4017,13 @@ function kw_find_path(gobj, kw, path, verbose) {
|
|
|
4020
4017
|
let ss = path.split("`");
|
|
4021
4018
|
let len = ss.length;
|
|
4022
4019
|
for (let i = 0; i < len; i++) {
|
|
4020
|
+
if (is_array(kw)) {
|
|
4021
|
+
if (!/^[0-9]+$/.test(ss[i])) {
|
|
4022
|
+
if (verbose) log_error(`${prefix}path not found: '${path}'`);
|
|
4023
|
+
return;
|
|
4024
|
+
}
|
|
4025
|
+
ss[i] = String(Number(ss[i]));
|
|
4026
|
+
}
|
|
4023
4027
|
if (is_prototype_segment(kw, ss[i])) {
|
|
4024
4028
|
if (verbose) log_error(`${prefix}path not found: '${path}'`);
|
|
4025
4029
|
return;
|
|
@@ -4437,7 +4441,7 @@ function kw_set_subdict_value(gobj, kw, path, key, value) {
|
|
|
4437
4441
|
log_error("subdict is not an object");
|
|
4438
4442
|
return -1;
|
|
4439
4443
|
}
|
|
4440
|
-
subdict
|
|
4444
|
+
set_own_key(subdict, key, value);
|
|
4441
4445
|
return 0;
|
|
4442
4446
|
}
|
|
4443
4447
|
/***************************************************************************
|
|
@@ -4745,7 +4749,7 @@ function kwid_new_dict(gobj, kw, path) {
|
|
|
4745
4749
|
else if (is_array(kw)) for (let i = 0; i < kw.length; i++) {
|
|
4746
4750
|
let kv = kw[i];
|
|
4747
4751
|
let id = kw_get_str(gobj, kv, "id", "", kw_flag_t.KW_REQUIRED);
|
|
4748
|
-
if (!empty_string(id)) new_dict
|
|
4752
|
+
if (!empty_string(id)) set_own_key(new_dict, id, kv);
|
|
4749
4753
|
}
|
|
4750
4754
|
else log_error(`${gobj_short_name(gobj)} kwid_new_dict: data type unknown`);
|
|
4751
4755
|
return new_dict;
|
|
@@ -5191,11 +5195,11 @@ function jdb_update(jdb, topic_name, path, kw) {
|
|
|
5191
5195
|
}
|
|
5192
5196
|
if (ids.length === 0 && v) {
|
|
5193
5197
|
if (is_array(v)) v.push(kw);
|
|
5194
|
-
else if (v["id"] === kw["id"])
|
|
5198
|
+
else if (v["id"] === kw["id"]) json_object_update(v, kw);
|
|
5195
5199
|
else {
|
|
5196
5200
|
let v_ = kw_get_dict_value(null, v, jdb.hook, [], 1);
|
|
5197
5201
|
let v__ = _jdb_get(v_, jdb.hook, kw["id"], false);
|
|
5198
|
-
if (v__)
|
|
5202
|
+
if (v__) json_object_update(v__, kw);
|
|
5199
5203
|
else v_.push(kw);
|
|
5200
5204
|
}
|
|
5201
5205
|
}
|
|
@@ -5562,6 +5566,10 @@ parent: document.body
|
|
|
5562
5566
|
* as a bare string, or "<img src=x onerror=...>" runs.
|
|
5563
5567
|
* Pass it as a Text node, which is always text:
|
|
5564
5568
|
* ['span', {}, document.createTextNode(value)]
|
|
5569
|
+
* In a LIST of children a node (element, svg, Text) is
|
|
5570
|
+
* appended as it is and a string is always text -- but a
|
|
5571
|
+
* list whose first item is a string is read as ONE
|
|
5572
|
+
* description (the string is its tag).
|
|
5565
5573
|
* if attrs['i18n'] is not empty then (or 'data-i18n' or 'data_i18next')
|
|
5566
5574
|
* it will be overridden with the translation
|
|
5567
5575
|
* content = translate(attrs['i18n']));
|
|
@@ -5614,8 +5622,11 @@ function createElement2(description, translate_fn) {
|
|
|
5614
5622
|
} else if (is_array(content)) {
|
|
5615
5623
|
if (content.length > 0) {
|
|
5616
5624
|
if (is_string(content[0])) el.appendChild(createElement2(content, translate_fn));
|
|
5617
|
-
else for (let child of content) if (Array.isArray(child)
|
|
5618
|
-
|
|
5625
|
+
else for (let child of content) if (Array.isArray(child)) {
|
|
5626
|
+
if (child.length > 0) el.appendChild(createElement2(child, translate_fn));
|
|
5627
|
+
} else if (child instanceof Node) el.appendChild(child);
|
|
5628
|
+
else if (is_string(child)) el.appendChild(document.createTextNode(child));
|
|
5629
|
+
else if (child !== null && child !== void 0 && child !== false) log_error(`createElement2: child ignored, type ${typeof child}`);
|
|
5619
5630
|
}
|
|
5620
5631
|
} else if (content instanceof HTMLElement || content instanceof Text || content instanceof SVGElement) el.appendChild(content);
|
|
5621
5632
|
else if (content != null) {
|
|
@@ -6048,12 +6059,12 @@ function flat_diff(flat1, flat2) {
|
|
|
6048
6059
|
removed: {},
|
|
6049
6060
|
changed: {}
|
|
6050
6061
|
};
|
|
6051
|
-
for (const key of Object.keys(a)) if (!Object.prototype.hasOwnProperty.call(b, key)) diff.removed
|
|
6052
|
-
else if (!flat_value_equal(a[key], b[key])) diff.changed
|
|
6062
|
+
for (const key of Object.keys(a)) if (!Object.prototype.hasOwnProperty.call(b, key)) set_own_key(diff.removed, key, a[key]);
|
|
6063
|
+
else if (!flat_value_equal(a[key], b[key])) set_own_key(diff.changed, key, {
|
|
6053
6064
|
from: a[key],
|
|
6054
6065
|
to: b[key]
|
|
6055
|
-
};
|
|
6056
|
-
for (const key of Object.keys(b)) if (!Object.prototype.hasOwnProperty.call(a, key)) diff.added
|
|
6066
|
+
});
|
|
6067
|
+
for (const key of Object.keys(b)) if (!Object.prototype.hasOwnProperty.call(a, key)) set_own_key(diff.added, key, b[key]);
|
|
6057
6068
|
return diff;
|
|
6058
6069
|
}
|
|
6059
6070
|
/************************************************************
|
|
@@ -7161,7 +7172,7 @@ function mt_inject_event(gobj, event, kw, src) {
|
|
|
7161
7172
|
window.console.error(`Not in session`);
|
|
7162
7173
|
return -1;
|
|
7163
7174
|
}
|
|
7164
|
-
kw =
|
|
7175
|
+
kw = json_object_update({}, is_object(kw) ? kw : {});
|
|
7165
7176
|
if (is_object(kw["__md_iev__"])) kw["__md_iev__"] = json_deep_copy(kw["__md_iev__"]);
|
|
7166
7177
|
if (msg_iev_get_stack(gobj, kw, IEVENT_STACK_ID)) {} else {
|
|
7167
7178
|
let jn_ievent_id = build_cli_ievent_request(gobj, gobj_name(src), kw_get_str(gobj, kw, "__service__", 0, 0));
|
|
@@ -7219,6 +7230,13 @@ function setup_websocket(gobj) {
|
|
|
7219
7230
|
websocket = new WebSocket(url);
|
|
7220
7231
|
} catch (e) {
|
|
7221
7232
|
log_error(`${gobj_short_name(gobj)}: Cannot open WebSocket to '${url}', Error: ${e.message}`);
|
|
7233
|
+
gobj_post_event(gobj, "EV_ON_CLOSE", {
|
|
7234
|
+
url,
|
|
7235
|
+
ws_seq,
|
|
7236
|
+
code: 1006,
|
|
7237
|
+
reason: e.message,
|
|
7238
|
+
was_clean: false
|
|
7239
|
+
}, gobj);
|
|
7222
7240
|
return null;
|
|
7223
7241
|
}
|
|
7224
7242
|
if (!websocket) {
|
|
@@ -7477,6 +7495,7 @@ function ac_on_open(gobj, event, kw, src) {
|
|
|
7477
7495
|
function ac_on_close(gobj, event, kw, src) {
|
|
7478
7496
|
let priv = gobj.priv;
|
|
7479
7497
|
let url = kw.url;
|
|
7498
|
+
if (kw.ws_seq !== void 0 && kw.ws_seq !== priv.ws_seq) return 0;
|
|
7480
7499
|
set_remote_log_functions();
|
|
7481
7500
|
log_warning(`${gobj_short_name(gobj)}: WebSocket closed ${url} (Code: ${kw.code}, Reason: "${kw.reason}", Clean: ${kw.was_clean})`);
|
|
7482
7501
|
if (priv.websocket) {
|
|
@@ -7494,7 +7513,7 @@ function ac_on_close(gobj, event, kw, src) {
|
|
|
7494
7513
|
remote_yuno_role: priv.remote_yuno_role,
|
|
7495
7514
|
remote_yuno_service: priv.remote_yuno_service
|
|
7496
7515
|
});
|
|
7497
|
-
} else {
|
|
7516
|
+
} else if (!gobj_is_running(gobj)) {} else {
|
|
7498
7517
|
log_warning(`${gobj_short_name(gobj)}: EV_ON_OPEN_ERROR cannot open ${url} (Code: ${kw.code}, Reason: "${kw.reason}", Clean: ${kw.was_clean})`);
|
|
7499
7518
|
gobj_publish_event(gobj, "EV_ON_OPEN_ERROR", {
|
|
7500
7519
|
url,
|