@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.umd.js
CHANGED
|
@@ -4468,6 +4468,26 @@
|
|
|
4468
4468
|
return 0;
|
|
4469
4469
|
}
|
|
4470
4470
|
/************************************************************
|
|
4471
|
+
* Whether walking `path` meets a value that is neither a dict nor
|
|
4472
|
+
* a list BEFORE its last segment: kw_find_path() logs that one
|
|
4473
|
+
* even when it is not verbose, so a writer that goes on to
|
|
4474
|
+
* kw_set_dict_value() would log it a second time.
|
|
4475
|
+
************************************************************/
|
|
4476
|
+
function path_crosses_a_scalar(kw, path) {
|
|
4477
|
+
let ss = path.split("`");
|
|
4478
|
+
let v = kw;
|
|
4479
|
+
for (let i = 0; i < ss.length - 1; i++) {
|
|
4480
|
+
if (is_array(v)) {
|
|
4481
|
+
const idx = list_segment_index(v, ss[i]);
|
|
4482
|
+
if (idx < 0) return false;
|
|
4483
|
+
v = v[idx];
|
|
4484
|
+
} else v = Object.prototype.hasOwnProperty.call(v, ss[i]) ? v[ss[i]] : void 0;
|
|
4485
|
+
if (v === void 0 || v === null) return false;
|
|
4486
|
+
if (!(is_object(v) || is_array(v))) return true;
|
|
4487
|
+
}
|
|
4488
|
+
return false;
|
|
4489
|
+
}
|
|
4490
|
+
/************************************************************
|
|
4471
4491
|
*
|
|
4472
4492
|
************************************************************/
|
|
4473
4493
|
function kw_set_subdict_value(gobj, kw, path, key, value) {
|
|
@@ -4478,7 +4498,7 @@
|
|
|
4478
4498
|
}
|
|
4479
4499
|
let subdict = kw_find_path(gobj, kw, path, false);
|
|
4480
4500
|
if (subdict === void 0) {
|
|
4481
|
-
if (!is_string(path)) return -1;
|
|
4501
|
+
if (!is_string(path) || path_crosses_a_scalar(kw, path)) return -1;
|
|
4482
4502
|
subdict = {};
|
|
4483
4503
|
if (kw_set_dict_value(gobj, kw, path, subdict) < 0) return -1;
|
|
4484
4504
|
}
|
|
@@ -5206,12 +5226,12 @@
|
|
|
5206
5226
|
************************************************************/
|
|
5207
5227
|
function jdb_init(jdb, prefix, duplicate) {
|
|
5208
5228
|
if (duplicate) jdb = json_deep_copy(jdb);
|
|
5209
|
-
let type = kw_get_dict_value(null, jdb, "type", [],
|
|
5210
|
-
kw_get_str(null, jdb, "hook", "data",
|
|
5211
|
-
let schema = kw_get_dict_value(null, jdb, "schema", {},
|
|
5212
|
-
let topics = kw_get_dict_value(null, jdb, "topics", {},
|
|
5229
|
+
let type = kw_get_dict_value(null, jdb, "type", [], kw_flag_t.KW_CREATE);
|
|
5230
|
+
kw_get_str(null, jdb, "hook", "data", kw_flag_t.KW_CREATE);
|
|
5231
|
+
let schema = kw_get_dict_value(null, jdb, "schema", {}, kw_flag_t.KW_CREATE);
|
|
5232
|
+
let topics = kw_get_dict_value(null, jdb, "topics", {}, kw_flag_t.KW_CREATE);
|
|
5213
5233
|
let walk = function(obj, key, value, full_path) {
|
|
5214
|
-
if (key.substring(0, 2) !== "__") kw_get_dict_value(null, topics, full_path, json_deep_copy(type),
|
|
5234
|
+
if (key.substring(0, 2) !== "__") kw_get_dict_value(null, topics, full_path, json_deep_copy(type), kw_flag_t.KW_CREATE);
|
|
5215
5235
|
};
|
|
5216
5236
|
_traverse_dict(schema, walk, prefix);
|
|
5217
5237
|
return jdb;
|
|
@@ -5239,14 +5259,14 @@
|
|
|
5239
5259
|
let v = topic;
|
|
5240
5260
|
while (id = ids.shift()) {
|
|
5241
5261
|
if (empty_string(id) || !v) break;
|
|
5242
|
-
if (is_object(v)) v = kw_get_dict_value(null, v, jdb.hook, [],
|
|
5262
|
+
if (is_object(v)) v = kw_get_dict_value(null, v, jdb.hook, [], kw_flag_t.KW_CREATE);
|
|
5243
5263
|
v = _jdb_get(v, null, id, false);
|
|
5244
5264
|
}
|
|
5245
5265
|
if (ids.length === 0 && v) {
|
|
5246
5266
|
if (is_array(v)) v.push(kw);
|
|
5247
5267
|
else if (v["id"] === kw["id"]) json_object_update(v, kw);
|
|
5248
5268
|
else {
|
|
5249
|
-
let v_ = kw_get_dict_value(null, v, jdb.hook, [],
|
|
5269
|
+
let v_ = kw_get_dict_value(null, v, jdb.hook, [], kw_flag_t.KW_CREATE);
|
|
5250
5270
|
let v__ = _jdb_get(v_, jdb.hook, kw["id"], false);
|
|
5251
5271
|
if (v__) json_object_update(v__, kw);
|
|
5252
5272
|
else v_.push(kw);
|