@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.
- package/dist/gobj-js.cjs.js +42 -9
- package/dist/gobj-js.cjs.js.map +1 -1
- package/dist/gobj-js.cjs.min.js +111 -93
- package/dist/gobj-js.cjs.min.js.map +1 -1
- package/dist/gobj-js.es.js +42 -9
- package/dist/gobj-js.es.js.map +1 -1
- package/dist/gobj-js.es.min.js +26 -8
- package/dist/gobj-js.es.min.js.map +1 -1
- package/dist/gobj-js.iife.js +42 -9
- package/dist/gobj-js.iife.js.map +1 -1
- package/dist/gobj-js.iife.min.js +168 -150
- package/dist/gobj-js.iife.min.js.map +1 -1
- package/dist/gobj-js.umd.js +42 -9
- package/dist/gobj-js.umd.js.map +1 -1
- package/dist/gobj-js.umd.min.js +168 -150
- package/dist/gobj-js.umd.min.js.map +1 -1
- package/package.json +1 -1
package/dist/gobj-js.cjs.js
CHANGED
|
@@ -4465,6 +4465,26 @@ function kw_set_dict_value(gobj, kw, path, value) {
|
|
|
4465
4465
|
return 0;
|
|
4466
4466
|
}
|
|
4467
4467
|
/************************************************************
|
|
4468
|
+
* Whether walking `path` meets a value that is neither a dict nor
|
|
4469
|
+
* a list BEFORE its last segment: kw_find_path() logs that one
|
|
4470
|
+
* even when it is not verbose, so a writer that goes on to
|
|
4471
|
+
* kw_set_dict_value() would log it a second time.
|
|
4472
|
+
************************************************************/
|
|
4473
|
+
function path_crosses_a_scalar(kw, path) {
|
|
4474
|
+
let ss = path.split("`");
|
|
4475
|
+
let v = kw;
|
|
4476
|
+
for (let i = 0; i < ss.length - 1; i++) {
|
|
4477
|
+
if (is_array(v)) {
|
|
4478
|
+
const idx = list_segment_index(v, ss[i]);
|
|
4479
|
+
if (idx < 0) return false;
|
|
4480
|
+
v = v[idx];
|
|
4481
|
+
} else v = Object.prototype.hasOwnProperty.call(v, ss[i]) ? v[ss[i]] : void 0;
|
|
4482
|
+
if (v === void 0 || v === null) return false;
|
|
4483
|
+
if (!(is_object(v) || is_array(v))) return true;
|
|
4484
|
+
}
|
|
4485
|
+
return false;
|
|
4486
|
+
}
|
|
4487
|
+
/************************************************************
|
|
4468
4488
|
*
|
|
4469
4489
|
************************************************************/
|
|
4470
4490
|
function kw_set_subdict_value(gobj, kw, path, key, value) {
|
|
@@ -4473,9 +4493,14 @@ function kw_set_subdict_value(gobj, kw, path, key, value) {
|
|
|
4473
4493
|
log_error("kw is not an object");
|
|
4474
4494
|
return -1;
|
|
4475
4495
|
}
|
|
4476
|
-
let subdict =
|
|
4496
|
+
let subdict = kw_find_path(gobj, kw, path, false);
|
|
4497
|
+
if (subdict === void 0) {
|
|
4498
|
+
if (!is_string(path) || path_crosses_a_scalar(kw, path)) return -1;
|
|
4499
|
+
subdict = {};
|
|
4500
|
+
if (kw_set_dict_value(gobj, kw, path, subdict) < 0) return -1;
|
|
4501
|
+
}
|
|
4477
4502
|
if (!is_object(subdict)) {
|
|
4478
|
-
log_error(
|
|
4503
|
+
log_error(`subdict is not an object: '${path}'`);
|
|
4479
4504
|
return -1;
|
|
4480
4505
|
}
|
|
4481
4506
|
set_own_key(subdict, key, value);
|
|
@@ -5198,12 +5223,12 @@ jdb_init(jdb);
|
|
|
5198
5223
|
************************************************************/
|
|
5199
5224
|
function jdb_init(jdb, prefix, duplicate) {
|
|
5200
5225
|
if (duplicate) jdb = json_deep_copy(jdb);
|
|
5201
|
-
let type = kw_get_dict_value(null, jdb, "type", [],
|
|
5202
|
-
kw_get_str(null, jdb, "hook", "data",
|
|
5203
|
-
let schema = kw_get_dict_value(null, jdb, "schema", {},
|
|
5204
|
-
let topics = kw_get_dict_value(null, jdb, "topics", {},
|
|
5226
|
+
let type = kw_get_dict_value(null, jdb, "type", [], kw_flag_t.KW_CREATE);
|
|
5227
|
+
kw_get_str(null, jdb, "hook", "data", kw_flag_t.KW_CREATE);
|
|
5228
|
+
let schema = kw_get_dict_value(null, jdb, "schema", {}, kw_flag_t.KW_CREATE);
|
|
5229
|
+
let topics = kw_get_dict_value(null, jdb, "topics", {}, kw_flag_t.KW_CREATE);
|
|
5205
5230
|
let walk = function(obj, key, value, full_path) {
|
|
5206
|
-
if (key.substring(0, 2) !== "__") kw_get_dict_value(null, topics, full_path, json_deep_copy(type),
|
|
5231
|
+
if (key.substring(0, 2) !== "__") kw_get_dict_value(null, topics, full_path, json_deep_copy(type), kw_flag_t.KW_CREATE);
|
|
5207
5232
|
};
|
|
5208
5233
|
_traverse_dict(schema, walk, prefix);
|
|
5209
5234
|
return jdb;
|
|
@@ -5222,19 +5247,23 @@ function jdb_update(jdb, topic_name, path, kw) {
|
|
|
5222
5247
|
trace_msg(kw);
|
|
5223
5248
|
return null;
|
|
5224
5249
|
}
|
|
5250
|
+
if (!is_string(path)) {
|
|
5251
|
+
log_error(`jdb_update: path must be a string: ${String(path)}`);
|
|
5252
|
+
return null;
|
|
5253
|
+
}
|
|
5225
5254
|
let ids = path.split("`");
|
|
5226
5255
|
let id;
|
|
5227
5256
|
let v = topic;
|
|
5228
5257
|
while (id = ids.shift()) {
|
|
5229
5258
|
if (empty_string(id) || !v) break;
|
|
5230
|
-
if (is_object(v)) v = kw_get_dict_value(null, v, jdb.hook, [],
|
|
5259
|
+
if (is_object(v)) v = kw_get_dict_value(null, v, jdb.hook, [], kw_flag_t.KW_CREATE);
|
|
5231
5260
|
v = _jdb_get(v, null, id, false);
|
|
5232
5261
|
}
|
|
5233
5262
|
if (ids.length === 0 && v) {
|
|
5234
5263
|
if (is_array(v)) v.push(kw);
|
|
5235
5264
|
else if (v["id"] === kw["id"]) json_object_update(v, kw);
|
|
5236
5265
|
else {
|
|
5237
|
-
let v_ = kw_get_dict_value(null, v, jdb.hook, [],
|
|
5266
|
+
let v_ = kw_get_dict_value(null, v, jdb.hook, [], kw_flag_t.KW_CREATE);
|
|
5238
5267
|
let v__ = _jdb_get(v_, jdb.hook, kw["id"], false);
|
|
5239
5268
|
if (v__) json_object_update(v__, kw);
|
|
5240
5269
|
else v_.push(kw);
|
|
@@ -5256,6 +5285,10 @@ function jdb_delete(jdb, topic_name, path, kw) {
|
|
|
5256
5285
|
trace_msg(kw);
|
|
5257
5286
|
return null;
|
|
5258
5287
|
}
|
|
5288
|
+
if (!is_string(path)) {
|
|
5289
|
+
log_error(`jdb_delete: path must be a string: ${String(path)}`);
|
|
5290
|
+
return null;
|
|
5291
|
+
}
|
|
5259
5292
|
let ids = path.split("`");
|
|
5260
5293
|
let id;
|
|
5261
5294
|
let v = topic;
|