@yuneta/gobj-js 7.26.1 → 7.26.3
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 +129 -36
- package/dist/gobj-js.cjs.js.map +1 -1
- package/dist/gobj-js.cjs.min.js +1013 -978
- package/dist/gobj-js.cjs.min.js.map +1 -1
- package/dist/gobj-js.es.js +126 -37
- package/dist/gobj-js.es.js.map +1 -1
- package/dist/gobj-js.es.min.js +394 -357
- package/dist/gobj-js.es.min.js.map +1 -1
- package/dist/gobj-js.iife.js +129 -36
- package/dist/gobj-js.iife.js.map +1 -1
- package/dist/gobj-js.iife.min.js +1070 -1035
- package/dist/gobj-js.iife.min.js.map +1 -1
- package/dist/gobj-js.umd.js +129 -36
- package/dist/gobj-js.umd.js.map +1 -1
- package/dist/gobj-js.umd.min.js +1070 -1035
- package/dist/gobj-js.umd.min.js.map +1 -1
- package/package.json +3 -3
package/dist/gobj-js.iife.js
CHANGED
|
@@ -909,7 +909,7 @@ var gobjJs = (function(exports) {
|
|
|
909
909
|
}
|
|
910
910
|
if (jn_value2 === void 0) log_error(`${gobj_short_name(gobj)}: attr undefined: ${it.name}`);
|
|
911
911
|
sdata[it.name] = jn_value2;
|
|
912
|
-
if (is_object(gobj.priv) &&
|
|
912
|
+
if (is_object(gobj.priv) && Object.prototype.hasOwnProperty.call(gobj.priv, it.name)) gobj.priv[it.name] = jn_value2;
|
|
913
913
|
if (gobj.obflag & obflag_t.obflag_created && !(gobj.obflag & obflag_t.obflag_destroyed)) {
|
|
914
914
|
if (gobj.gclass.gmt.mt_writing) gobj.gclass.gmt.mt_writing(gobj, it.name);
|
|
915
915
|
}
|
|
@@ -2112,7 +2112,7 @@ var gobjJs = (function(exports) {
|
|
|
2112
2112
|
function gobj_read_attr(gobj, name, src) {
|
|
2113
2113
|
let jn_attrs = gobj.jn_attrs;
|
|
2114
2114
|
if (name in jn_attrs) {
|
|
2115
|
-
if (
|
|
2115
|
+
if (Object.prototype.hasOwnProperty.call(jn_attrs, name)) {
|
|
2116
2116
|
let value = jn_attrs[name];
|
|
2117
2117
|
if (gobj.gclass.gmt.mt_reading) return gobj.gclass.gmt.mt_reading(gobj, name, value);
|
|
2118
2118
|
return value;
|
|
@@ -2218,9 +2218,9 @@ var gobjJs = (function(exports) {
|
|
|
2218
2218
|
if (ss.length <= 1) {
|
|
2219
2219
|
let key = path;
|
|
2220
2220
|
if (key in jn_attrs) {
|
|
2221
|
-
if (
|
|
2221
|
+
if (Object.prototype.hasOwnProperty.call(jn_attrs, key)) {
|
|
2222
2222
|
jn_attrs[key] = value;
|
|
2223
|
-
if (is_object(gobj.priv) &&
|
|
2223
|
+
if (is_object(gobj.priv) && Object.prototype.hasOwnProperty.call(gobj.priv, key)) gobj.priv[key] = value;
|
|
2224
2224
|
if (gobj.obflag & obflag_t.obflag_created && !(gobj.obflag & obflag_t.obflag_destroyed)) {
|
|
2225
2225
|
if (gobj.gclass.gmt.mt_writing) gobj.gclass.gmt.mt_writing(gobj, key);
|
|
2226
2226
|
}
|
|
@@ -2241,9 +2241,9 @@ var gobjJs = (function(exports) {
|
|
|
2241
2241
|
}
|
|
2242
2242
|
let jn_attrs = gobj.jn_attrs;
|
|
2243
2243
|
if (key in jn_attrs) {
|
|
2244
|
-
if (
|
|
2244
|
+
if (Object.prototype.hasOwnProperty.call(jn_attrs, key)) {
|
|
2245
2245
|
jn_attrs[key] = value;
|
|
2246
|
-
if (is_object(gobj.priv) &&
|
|
2246
|
+
if (is_object(gobj.priv) && Object.prototype.hasOwnProperty.call(gobj.priv, key)) gobj.priv[key] = value;
|
|
2247
2247
|
if (gobj.obflag & obflag_t.obflag_created && !(gobj.obflag & obflag_t.obflag_destroyed)) {
|
|
2248
2248
|
if (gobj.gclass.gmt.mt_writing) gobj.gclass.gmt.mt_writing(gobj, key);
|
|
2249
2249
|
}
|
|
@@ -2270,7 +2270,7 @@ var gobjJs = (function(exports) {
|
|
|
2270
2270
|
if (exclude_flag && it.flag & exclude_flag) continue;
|
|
2271
2271
|
if (include_flag === -1 || it.flag & include_flag) {
|
|
2272
2272
|
set_default(gobj, gobj.jn_attrs, it);
|
|
2273
|
-
if (is_object(gobj.priv) &&
|
|
2273
|
+
if (is_object(gobj.priv) && Object.prototype.hasOwnProperty.call(gobj.priv, it.name)) gobj.priv[it.name] = gobj.jn_attrs[it.name];
|
|
2274
2274
|
if (gobj.gclass.gmt.mt_writing) gobj.gclass.gmt.mt_writing(gobj, it.name);
|
|
2275
2275
|
}
|
|
2276
2276
|
}
|
|
@@ -2304,7 +2304,7 @@ var gobjJs = (function(exports) {
|
|
|
2304
2304
|
let hs = gobj_hsdata2(gobj, name, false);
|
|
2305
2305
|
if (hs) {
|
|
2306
2306
|
hs[name] = parseBoolean(value);
|
|
2307
|
-
if (is_object(gobj.priv) &&
|
|
2307
|
+
if (is_object(gobj.priv) && Object.prototype.hasOwnProperty.call(gobj.priv, name)) gobj.priv[name] = hs[name];
|
|
2308
2308
|
if (gobj.obflag & obflag_t.obflag_created && !(gobj.obflag & obflag_t.obflag_destroyed)) {
|
|
2309
2309
|
if (gobj.gclass.gmt.mt_writing) gobj.gclass.gmt.mt_writing(gobj, name);
|
|
2310
2310
|
}
|
|
@@ -2320,7 +2320,7 @@ var gobjJs = (function(exports) {
|
|
|
2320
2320
|
let hs = gobj_hsdata2(gobj, name, false);
|
|
2321
2321
|
if (hs) {
|
|
2322
2322
|
hs[name] = parseInt(value);
|
|
2323
|
-
if (is_object(gobj.priv) &&
|
|
2323
|
+
if (is_object(gobj.priv) && Object.prototype.hasOwnProperty.call(gobj.priv, name)) gobj.priv[name] = hs[name];
|
|
2324
2324
|
if (gobj.obflag & obflag_t.obflag_created && !(gobj.obflag & obflag_t.obflag_destroyed)) {
|
|
2325
2325
|
if (gobj.gclass.gmt.mt_writing) gobj.gclass.gmt.mt_writing(gobj, name);
|
|
2326
2326
|
}
|
|
@@ -2336,7 +2336,7 @@ var gobjJs = (function(exports) {
|
|
|
2336
2336
|
let hs = gobj_hsdata2(gobj, name, false);
|
|
2337
2337
|
if (hs) {
|
|
2338
2338
|
hs[name] = String(value);
|
|
2339
|
-
if (is_object(gobj.priv) &&
|
|
2339
|
+
if (is_object(gobj.priv) && Object.prototype.hasOwnProperty.call(gobj.priv, name)) gobj.priv[name] = hs[name];
|
|
2340
2340
|
if (gobj.obflag & obflag_t.obflag_created && !(gobj.obflag & obflag_t.obflag_destroyed)) {
|
|
2341
2341
|
if (gobj.gclass.gmt.mt_writing) gobj.gclass.gmt.mt_writing(gobj, name);
|
|
2342
2342
|
}
|
|
@@ -2724,8 +2724,8 @@ var gobjJs = (function(exports) {
|
|
|
2724
2724
|
kw,
|
|
2725
2725
|
renamed_event: ""
|
|
2726
2726
|
};
|
|
2727
|
-
let kw_match =
|
|
2728
|
-
let config_match =
|
|
2727
|
+
let kw_match = json_object_update({}, kw);
|
|
2728
|
+
let config_match = json_object_update({}, __config__);
|
|
2729
2729
|
kw_match.__config__ = config_match;
|
|
2730
2730
|
let renamed_event = "";
|
|
2731
2731
|
let rename = config_match.__rename_event_name__;
|
|
@@ -2733,7 +2733,7 @@ var gobjJs = (function(exports) {
|
|
|
2733
2733
|
if (event_type) {
|
|
2734
2734
|
renamed_event = event_type.event_name;
|
|
2735
2735
|
delete config_match.__rename_event_name__;
|
|
2736
|
-
if (event && json_size(kw_match.__global__) > 0) kw_match.__global__ =
|
|
2736
|
+
if (event && json_size(kw_match.__global__) > 0) kw_match.__global__ = json_object_update(json_object_update({}, kw_match.__global__), { __original_event_name__: event });
|
|
2737
2737
|
}
|
|
2738
2738
|
delete config_match.__hard_subscription__;
|
|
2739
2739
|
delete config_match.__own_event__;
|
|
@@ -3109,7 +3109,7 @@ var gobjJs = (function(exports) {
|
|
|
3109
3109
|
}
|
|
3110
3110
|
}
|
|
3111
3111
|
let kw2publish = kw;
|
|
3112
|
-
if (json_size(__local__) > 0 || json_size(__global__) > 0) kw2publish =
|
|
3112
|
+
if (json_size(__local__) > 0 || json_size(__global__) > 0) kw2publish = json_object_update({}, kw);
|
|
3113
3113
|
if (json_size(__local__) > 0) kw_pop(kw2publish, __local__);
|
|
3114
3114
|
if (__config__) {}
|
|
3115
3115
|
if (json_size(__global__) > 0) json_object_update(kw2publish, json_deep_copy(__global__));
|
|
@@ -3646,10 +3646,7 @@ var gobjJs = (function(exports) {
|
|
|
3646
3646
|
************************************************************/
|
|
3647
3647
|
function duplicate_objects(...sourceObjects) {
|
|
3648
3648
|
const result = {};
|
|
3649
|
-
for (const obj of sourceObjects)
|
|
3650
|
-
const clonedObj = structuredClone(obj);
|
|
3651
|
-
Object.assign(result, clonedObj);
|
|
3652
|
-
}
|
|
3649
|
+
for (const obj of sourceObjects) json_object_update(result, structuredClone(obj));
|
|
3653
3650
|
return result;
|
|
3654
3651
|
}
|
|
3655
3652
|
/************************************************************
|
|
@@ -4022,6 +4019,13 @@ var gobjJs = (function(exports) {
|
|
|
4022
4019
|
let ss = path.split("`");
|
|
4023
4020
|
let len = ss.length;
|
|
4024
4021
|
for (let i = 0; i < len; i++) {
|
|
4022
|
+
if (is_array(kw)) {
|
|
4023
|
+
if (!/^[0-9]+$/.test(ss[i])) {
|
|
4024
|
+
if (verbose) log_error(`${prefix}path not found: '${path}'`);
|
|
4025
|
+
return;
|
|
4026
|
+
}
|
|
4027
|
+
ss[i] = String(Number(ss[i]));
|
|
4028
|
+
}
|
|
4025
4029
|
if (is_prototype_segment(kw, ss[i])) {
|
|
4026
4030
|
if (verbose) log_error(`${prefix}path not found: '${path}'`);
|
|
4027
4031
|
return;
|
|
@@ -4439,7 +4443,7 @@ var gobjJs = (function(exports) {
|
|
|
4439
4443
|
log_error("subdict is not an object");
|
|
4440
4444
|
return -1;
|
|
4441
4445
|
}
|
|
4442
|
-
subdict
|
|
4446
|
+
set_own_key(subdict, key, value);
|
|
4443
4447
|
return 0;
|
|
4444
4448
|
}
|
|
4445
4449
|
/***************************************************************************
|
|
@@ -4747,7 +4751,7 @@ var gobjJs = (function(exports) {
|
|
|
4747
4751
|
else if (is_array(kw)) for (let i = 0; i < kw.length; i++) {
|
|
4748
4752
|
let kv = kw[i];
|
|
4749
4753
|
let id = kw_get_str(gobj, kv, "id", "", kw_flag_t.KW_REQUIRED);
|
|
4750
|
-
if (!empty_string(id)) new_dict
|
|
4754
|
+
if (!empty_string(id)) set_own_key(new_dict, id, kv);
|
|
4751
4755
|
}
|
|
4752
4756
|
else log_error(`${gobj_short_name(gobj)} kwid_new_dict: data type unknown`);
|
|
4753
4757
|
return new_dict;
|
|
@@ -5193,11 +5197,11 @@ var gobjJs = (function(exports) {
|
|
|
5193
5197
|
}
|
|
5194
5198
|
if (ids.length === 0 && v) {
|
|
5195
5199
|
if (is_array(v)) v.push(kw);
|
|
5196
|
-
else if (v["id"] === kw["id"])
|
|
5200
|
+
else if (v["id"] === kw["id"]) json_object_update(v, kw);
|
|
5197
5201
|
else {
|
|
5198
5202
|
let v_ = kw_get_dict_value(null, v, jdb.hook, [], 1);
|
|
5199
5203
|
let v__ = _jdb_get(v_, jdb.hook, kw["id"], false);
|
|
5200
|
-
if (v__)
|
|
5204
|
+
if (v__) json_object_update(v__, kw);
|
|
5201
5205
|
else v_.push(kw);
|
|
5202
5206
|
}
|
|
5203
5207
|
}
|
|
@@ -5398,6 +5402,68 @@ var gobjJs = (function(exports) {
|
|
|
5398
5402
|
/***************************************************************************
|
|
5399
5403
|
*
|
|
5400
5404
|
***************************************************************************/
|
|
5405
|
+
/***************************************************************************
|
|
5406
|
+
* Markup that createElement2() inserts AS HTML, said out loud.
|
|
5407
|
+
*
|
|
5408
|
+
* createElement2() reads a string that starts with '<' as markup. That
|
|
5409
|
+
* decision depends on the CONTENT of the string, not on who wrote it, so
|
|
5410
|
+
* a value from a backend or typed by a user that starts with '<' runs as
|
|
5411
|
+
* html. html_markup() is the explicit way to ask for markup: the string
|
|
5412
|
+
* is the caller's own (an icon, an svg), never data.
|
|
5413
|
+
*
|
|
5414
|
+
* ['span', {class: 'icon'}, html_markup('<i class="yi-copy"></i>')]
|
|
5415
|
+
*
|
|
5416
|
+
* With set_strings_are_text(true) a plain string is ALWAYS text and
|
|
5417
|
+
* html_markup() is the only way to insert markup.
|
|
5418
|
+
***************************************************************************/
|
|
5419
|
+
var HtmlMarkup = class {
|
|
5420
|
+
constructor(html) {
|
|
5421
|
+
this.html = html;
|
|
5422
|
+
Object.freeze(this);
|
|
5423
|
+
}
|
|
5424
|
+
toString() {
|
|
5425
|
+
return this.html;
|
|
5426
|
+
}
|
|
5427
|
+
};
|
|
5428
|
+
function html_markup(html) {
|
|
5429
|
+
if (typeof html !== "string") {
|
|
5430
|
+
log_error(`html_markup: not a string, type ${typeof html}`);
|
|
5431
|
+
return new HtmlMarkup("");
|
|
5432
|
+
}
|
|
5433
|
+
return new HtmlMarkup(html);
|
|
5434
|
+
}
|
|
5435
|
+
function is_html_markup(v) {
|
|
5436
|
+
return v instanceof HtmlMarkup;
|
|
5437
|
+
}
|
|
5438
|
+
function markup_fragment(markup) {
|
|
5439
|
+
const template = document.createElement("template");
|
|
5440
|
+
template.innerHTML = markup.html.trim();
|
|
5441
|
+
return template.content;
|
|
5442
|
+
}
|
|
5443
|
+
var __strings_are_text__ = false;
|
|
5444
|
+
var __markup_strings_warned__ = /* @__PURE__ */ new Set();
|
|
5445
|
+
/***************************************************************************
|
|
5446
|
+
* The mode of createElement2() for a plain string that starts with '<':
|
|
5447
|
+
* false (default): it is markup, as it always was.
|
|
5448
|
+
* true: it is TEXT; markup is asked for with html_markup().
|
|
5449
|
+
* An app turns it on once its own code and the libraries it mounts pass
|
|
5450
|
+
* every deliberate markup through html_markup(). A string that starts
|
|
5451
|
+
* with '<' is then logged once (a deliberate one not migrated yet, or a
|
|
5452
|
+
* datum that used to run as html).
|
|
5453
|
+
***************************************************************************/
|
|
5454
|
+
function set_strings_are_text(on) {
|
|
5455
|
+
__strings_are_text__ = !!on;
|
|
5456
|
+
}
|
|
5457
|
+
function strings_are_text() {
|
|
5458
|
+
return __strings_are_text__;
|
|
5459
|
+
}
|
|
5460
|
+
function warn_markup_string(content) {
|
|
5461
|
+
if (__markup_strings_warned__.size >= 100) return;
|
|
5462
|
+
const key = content.slice(0, 80);
|
|
5463
|
+
if (__markup_strings_warned__.has(key)) return;
|
|
5464
|
+
__markup_strings_warned__.add(key);
|
|
5465
|
+
log_warning(`createElement2: a string that starts with '<' is TEXT (set_strings_are_text): use html_markup() if it is markup: ${JSON.stringify(key)}`);
|
|
5466
|
+
}
|
|
5401
5467
|
function createOneHtml(htmlString) {
|
|
5402
5468
|
const template = document.createElement("template");
|
|
5403
5469
|
template.innerHTML = htmlString.trim();
|
|
@@ -5559,11 +5625,18 @@ var gobjJs = (function(exports) {
|
|
|
5559
5625
|
* if string begins with '<' then
|
|
5560
5626
|
* it will be converted to HTMLElement
|
|
5561
5627
|
* content = createOneHtml(string)
|
|
5628
|
+
* | html_markup(string): markup, said out loud (any mode)
|
|
5562
5629
|
* ⚠️ So a string is MARKUP when it starts with '<': never
|
|
5563
5630
|
* pass DATA (a value from a backend, a name a user typed)
|
|
5564
5631
|
* as a bare string, or "<img src=x onerror=...>" runs.
|
|
5565
5632
|
* Pass it as a Text node, which is always text:
|
|
5566
5633
|
* ['span', {}, document.createTextNode(value)]
|
|
5634
|
+
* In a LIST of children a node (element, svg, Text) is
|
|
5635
|
+
* appended as it is and a string is always text -- but a
|
|
5636
|
+
* list whose first item is a string is read as ONE
|
|
5637
|
+
* description (the string is its tag).
|
|
5638
|
+
* With set_strings_are_text(true) a plain string is
|
|
5639
|
+
* always text, and markup only comes in html_markup().
|
|
5567
5640
|
* if attrs['i18n'] is not empty then (or 'data-i18n' or 'data_i18next')
|
|
5568
5641
|
* it will be overridden with the translation
|
|
5569
5642
|
* content = translate(attrs['i18n']));
|
|
@@ -5606,18 +5679,26 @@ var gobjJs = (function(exports) {
|
|
|
5606
5679
|
el.setAttribute("data-i18n", data_i18next);
|
|
5607
5680
|
}
|
|
5608
5681
|
} else el.setAttribute(attr, attrs[attr]);
|
|
5609
|
-
if (
|
|
5682
|
+
if (is_html_markup(content)) el.appendChild(markup_fragment(content));
|
|
5683
|
+
else if (is_string(content)) {
|
|
5610
5684
|
content = content.trim();
|
|
5611
|
-
if (content.length > 0 && content[0] === "<") el.appendChild(createOneHtml(content));
|
|
5612
|
-
else
|
|
5613
|
-
|
|
5614
|
-
|
|
5615
|
-
|
|
5685
|
+
if (content.length > 0 && content[0] === "<" && !__strings_are_text__) el.appendChild(createOneHtml(content));
|
|
5686
|
+
else {
|
|
5687
|
+
if (content.length > 0 && content[0] === "<") warn_markup_string(content);
|
|
5688
|
+
if (translate_fn && data_i18next) {
|
|
5689
|
+
let translated = translate_fn(data_i18next);
|
|
5690
|
+
el.textContent = translated ? translated : content;
|
|
5691
|
+
} else el.textContent = content;
|
|
5692
|
+
}
|
|
5616
5693
|
} else if (is_array(content)) {
|
|
5617
5694
|
if (content.length > 0) {
|
|
5618
5695
|
if (is_string(content[0])) el.appendChild(createElement2(content, translate_fn));
|
|
5619
|
-
else for (let child of content) if (Array.isArray(child)
|
|
5620
|
-
|
|
5696
|
+
else for (let child of content) if (Array.isArray(child)) {
|
|
5697
|
+
if (child.length > 0) el.appendChild(createElement2(child, translate_fn));
|
|
5698
|
+
} else if (child instanceof Node) el.appendChild(child);
|
|
5699
|
+
else if (is_html_markup(child)) el.appendChild(markup_fragment(child));
|
|
5700
|
+
else if (is_string(child)) el.appendChild(document.createTextNode(child));
|
|
5701
|
+
else if (child !== null && child !== void 0 && child !== false) log_error(`createElement2: child ignored, type ${typeof child}`);
|
|
5621
5702
|
}
|
|
5622
5703
|
} else if (content instanceof HTMLElement || content instanceof Text || content instanceof SVGElement) el.appendChild(content);
|
|
5623
5704
|
else if (content != null) {
|
|
@@ -6050,12 +6131,12 @@ var gobjJs = (function(exports) {
|
|
|
6050
6131
|
removed: {},
|
|
6051
6132
|
changed: {}
|
|
6052
6133
|
};
|
|
6053
|
-
for (const key of Object.keys(a)) if (!Object.prototype.hasOwnProperty.call(b, key)) diff.removed
|
|
6054
|
-
else if (!flat_value_equal(a[key], b[key])) diff.changed
|
|
6134
|
+
for (const key of Object.keys(a)) if (!Object.prototype.hasOwnProperty.call(b, key)) set_own_key(diff.removed, key, a[key]);
|
|
6135
|
+
else if (!flat_value_equal(a[key], b[key])) set_own_key(diff.changed, key, {
|
|
6055
6136
|
from: a[key],
|
|
6056
6137
|
to: b[key]
|
|
6057
|
-
};
|
|
6058
|
-
for (const key of Object.keys(b)) if (!Object.prototype.hasOwnProperty.call(a, key)) diff.added
|
|
6138
|
+
});
|
|
6139
|
+
for (const key of Object.keys(b)) if (!Object.prototype.hasOwnProperty.call(a, key)) set_own_key(diff.added, key, b[key]);
|
|
6059
6140
|
return diff;
|
|
6060
6141
|
}
|
|
6061
6142
|
/************************************************************
|
|
@@ -7163,7 +7244,7 @@ var gobjJs = (function(exports) {
|
|
|
7163
7244
|
window.console.error(`Not in session`);
|
|
7164
7245
|
return -1;
|
|
7165
7246
|
}
|
|
7166
|
-
kw =
|
|
7247
|
+
kw = json_object_update({}, is_object(kw) ? kw : {});
|
|
7167
7248
|
if (is_object(kw["__md_iev__"])) kw["__md_iev__"] = json_deep_copy(kw["__md_iev__"]);
|
|
7168
7249
|
if (msg_iev_get_stack(gobj, kw, IEVENT_STACK_ID)) {} else {
|
|
7169
7250
|
let jn_ievent_id = build_cli_ievent_request(gobj, gobj_name(src), kw_get_str(gobj, kw, "__service__", 0, 0));
|
|
@@ -7221,6 +7302,13 @@ var gobjJs = (function(exports) {
|
|
|
7221
7302
|
websocket = new WebSocket(url);
|
|
7222
7303
|
} catch (e) {
|
|
7223
7304
|
log_error(`${gobj_short_name(gobj)}: Cannot open WebSocket to '${url}', Error: ${e.message}`);
|
|
7305
|
+
gobj_post_event(gobj, "EV_ON_CLOSE", {
|
|
7306
|
+
url,
|
|
7307
|
+
ws_seq,
|
|
7308
|
+
code: 1006,
|
|
7309
|
+
reason: e.message,
|
|
7310
|
+
was_clean: false
|
|
7311
|
+
}, gobj);
|
|
7224
7312
|
return null;
|
|
7225
7313
|
}
|
|
7226
7314
|
if (!websocket) {
|
|
@@ -7479,6 +7567,7 @@ var gobjJs = (function(exports) {
|
|
|
7479
7567
|
function ac_on_close(gobj, event, kw, src) {
|
|
7480
7568
|
let priv = gobj.priv;
|
|
7481
7569
|
let url = kw.url;
|
|
7570
|
+
if (kw.ws_seq !== void 0 && kw.ws_seq !== priv.ws_seq) return 0;
|
|
7482
7571
|
set_remote_log_functions();
|
|
7483
7572
|
log_warning(`${gobj_short_name(gobj)}: WebSocket closed ${url} (Code: ${kw.code}, Reason: "${kw.reason}", Clean: ${kw.was_clean})`);
|
|
7484
7573
|
if (priv.websocket) {
|
|
@@ -7496,7 +7585,7 @@ var gobjJs = (function(exports) {
|
|
|
7496
7585
|
remote_yuno_role: priv.remote_yuno_role,
|
|
7497
7586
|
remote_yuno_service: priv.remote_yuno_service
|
|
7498
7587
|
});
|
|
7499
|
-
} else {
|
|
7588
|
+
} else if (!gobj_is_running(gobj)) {} else {
|
|
7500
7589
|
log_warning(`${gobj_short_name(gobj)}: EV_ON_OPEN_ERROR cannot open ${url} (Code: ${kw.code}, Reason: "${kw.reason}", Clean: ${kw.was_clean})`);
|
|
7501
7590
|
gobj_publish_event(gobj, "EV_ON_OPEN_ERROR", {
|
|
7502
7591
|
url,
|
|
@@ -7958,6 +8047,7 @@ var gobjJs = (function(exports) {
|
|
|
7958
8047
|
exports.gobj_yuno_id = gobj_yuno_id;
|
|
7959
8048
|
exports.gobj_yuno_name = gobj_yuno_name;
|
|
7960
8049
|
exports.gobj_yuno_role = gobj_yuno_role;
|
|
8050
|
+
exports.html_markup = html_markup;
|
|
7961
8051
|
exports.id_index_in_obj_list = id_index_in_obj_list;
|
|
7962
8052
|
exports.index_in_list = index_in_list;
|
|
7963
8053
|
exports.is_array = is_array;
|
|
@@ -7965,6 +8055,7 @@ var gobjJs = (function(exports) {
|
|
|
7965
8055
|
exports.is_date = is_date;
|
|
7966
8056
|
exports.is_function = is_function;
|
|
7967
8057
|
exports.is_gobj = is_gobj;
|
|
8058
|
+
exports.is_html_markup = is_html_markup;
|
|
7968
8059
|
exports.is_metadata_key = is_metadata_key;
|
|
7969
8060
|
exports.is_null = is_null;
|
|
7970
8061
|
exports.is_number = is_number;
|
|
@@ -8056,6 +8147,7 @@ var gobjJs = (function(exports) {
|
|
|
8056
8147
|
exports.set_console_log_filter = set_console_log_filter;
|
|
8057
8148
|
exports.set_log_callback = set_log_callback;
|
|
8058
8149
|
exports.set_remote_log_functions = set_remote_log_functions;
|
|
8150
|
+
exports.set_strings_are_text = set_strings_are_text;
|
|
8059
8151
|
exports.set_timeout = set_timeout;
|
|
8060
8152
|
exports.set_timeout_periodic = set_timeout_periodic;
|
|
8061
8153
|
exports.sprintf = sprintf;
|
|
@@ -8063,6 +8155,7 @@ var gobjJs = (function(exports) {
|
|
|
8063
8155
|
exports.str_in_list = str_in_list;
|
|
8064
8156
|
exports.strcasecmp = strcasecmp;
|
|
8065
8157
|
exports.strcmp = strcmp;
|
|
8158
|
+
exports.strings_are_text = strings_are_text;
|
|
8066
8159
|
exports.strncmp = strncmp;
|
|
8067
8160
|
exports.strs_in_list = strs_in_list;
|
|
8068
8161
|
exports.strstr = strstr;
|