@yuneta/gobj-js 7.26.8 → 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.
- package/dist/gobj-js.cjs.js +28 -8
- package/dist/gobj-js.cjs.js.map +1 -1
- package/dist/gobj-js.cjs.min.js +172 -160
- package/dist/gobj-js.cjs.min.js.map +1 -1
- package/dist/gobj-js.es.js +28 -8
- package/dist/gobj-js.es.js.map +1 -1
- package/dist/gobj-js.es.min.js +19 -7
- package/dist/gobj-js.es.min.js.map +1 -1
- package/dist/gobj-js.iife.js +28 -8
- package/dist/gobj-js.iife.js.map +1 -1
- package/dist/gobj-js.iife.min.js +161 -149
- package/dist/gobj-js.iife.min.js.map +1 -1
- package/dist/gobj-js.umd.js +28 -8
- package/dist/gobj-js.umd.js.map +1 -1
- package/dist/gobj-js.umd.min.js +161 -149
- package/dist/gobj-js.umd.min.js.map +1 -1
- package/package.json +1 -1
package/dist/gobj-js.es.js
CHANGED
|
@@ -4464,6 +4464,26 @@ function kw_set_dict_value(gobj, kw, path, value) {
|
|
|
4464
4464
|
return 0;
|
|
4465
4465
|
}
|
|
4466
4466
|
/************************************************************
|
|
4467
|
+
* Whether walking `path` meets a value that is neither a dict nor
|
|
4468
|
+
* a list BEFORE its last segment: kw_find_path() logs that one
|
|
4469
|
+
* even when it is not verbose, so a writer that goes on to
|
|
4470
|
+
* kw_set_dict_value() would log it a second time.
|
|
4471
|
+
************************************************************/
|
|
4472
|
+
function path_crosses_a_scalar(kw, path) {
|
|
4473
|
+
let ss = path.split("`");
|
|
4474
|
+
let v = kw;
|
|
4475
|
+
for (let i = 0; i < ss.length - 1; i++) {
|
|
4476
|
+
if (is_array(v)) {
|
|
4477
|
+
const idx = list_segment_index(v, ss[i]);
|
|
4478
|
+
if (idx < 0) return false;
|
|
4479
|
+
v = v[idx];
|
|
4480
|
+
} else v = Object.prototype.hasOwnProperty.call(v, ss[i]) ? v[ss[i]] : void 0;
|
|
4481
|
+
if (v === void 0 || v === null) return false;
|
|
4482
|
+
if (!(is_object(v) || is_array(v))) return true;
|
|
4483
|
+
}
|
|
4484
|
+
return false;
|
|
4485
|
+
}
|
|
4486
|
+
/************************************************************
|
|
4467
4487
|
*
|
|
4468
4488
|
************************************************************/
|
|
4469
4489
|
function kw_set_subdict_value(gobj, kw, path, key, value) {
|
|
@@ -4474,7 +4494,7 @@ function kw_set_subdict_value(gobj, kw, path, key, value) {
|
|
|
4474
4494
|
}
|
|
4475
4495
|
let subdict = kw_find_path(gobj, kw, path, false);
|
|
4476
4496
|
if (subdict === void 0) {
|
|
4477
|
-
if (!is_string(path)) return -1;
|
|
4497
|
+
if (!is_string(path) || path_crosses_a_scalar(kw, path)) return -1;
|
|
4478
4498
|
subdict = {};
|
|
4479
4499
|
if (kw_set_dict_value(gobj, kw, path, subdict) < 0) return -1;
|
|
4480
4500
|
}
|
|
@@ -5202,12 +5222,12 @@ jdb_init(jdb);
|
|
|
5202
5222
|
************************************************************/
|
|
5203
5223
|
function jdb_init(jdb, prefix, duplicate) {
|
|
5204
5224
|
if (duplicate) jdb = json_deep_copy(jdb);
|
|
5205
|
-
let type = kw_get_dict_value(null, jdb, "type", [],
|
|
5206
|
-
kw_get_str(null, jdb, "hook", "data",
|
|
5207
|
-
let schema = kw_get_dict_value(null, jdb, "schema", {},
|
|
5208
|
-
let topics = kw_get_dict_value(null, jdb, "topics", {},
|
|
5225
|
+
let type = kw_get_dict_value(null, jdb, "type", [], kw_flag_t.KW_CREATE);
|
|
5226
|
+
kw_get_str(null, jdb, "hook", "data", kw_flag_t.KW_CREATE);
|
|
5227
|
+
let schema = kw_get_dict_value(null, jdb, "schema", {}, kw_flag_t.KW_CREATE);
|
|
5228
|
+
let topics = kw_get_dict_value(null, jdb, "topics", {}, kw_flag_t.KW_CREATE);
|
|
5209
5229
|
let walk = function(obj, key, value, full_path) {
|
|
5210
|
-
if (key.substring(0, 2) !== "__") kw_get_dict_value(null, topics, full_path, json_deep_copy(type),
|
|
5230
|
+
if (key.substring(0, 2) !== "__") kw_get_dict_value(null, topics, full_path, json_deep_copy(type), kw_flag_t.KW_CREATE);
|
|
5211
5231
|
};
|
|
5212
5232
|
_traverse_dict(schema, walk, prefix);
|
|
5213
5233
|
return jdb;
|
|
@@ -5235,14 +5255,14 @@ function jdb_update(jdb, topic_name, path, kw) {
|
|
|
5235
5255
|
let v = topic;
|
|
5236
5256
|
while (id = ids.shift()) {
|
|
5237
5257
|
if (empty_string(id) || !v) break;
|
|
5238
|
-
if (is_object(v)) v = kw_get_dict_value(null, v, jdb.hook, [],
|
|
5258
|
+
if (is_object(v)) v = kw_get_dict_value(null, v, jdb.hook, [], kw_flag_t.KW_CREATE);
|
|
5239
5259
|
v = _jdb_get(v, null, id, false);
|
|
5240
5260
|
}
|
|
5241
5261
|
if (ids.length === 0 && v) {
|
|
5242
5262
|
if (is_array(v)) v.push(kw);
|
|
5243
5263
|
else if (v["id"] === kw["id"]) json_object_update(v, kw);
|
|
5244
5264
|
else {
|
|
5245
|
-
let v_ = kw_get_dict_value(null, v, jdb.hook, [],
|
|
5265
|
+
let v_ = kw_get_dict_value(null, v, jdb.hook, [], kw_flag_t.KW_CREATE);
|
|
5246
5266
|
let v__ = _jdb_get(v_, jdb.hook, kw["id"], false);
|
|
5247
5267
|
if (v__) json_object_update(v__, kw);
|
|
5248
5268
|
else v_.push(kw);
|