@yuneta/gobj-js 7.26.10 → 7.26.11

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.
@@ -5261,23 +5261,31 @@ var gobjJs = (function(exports) {
5261
5261
  let v = topic;
5262
5262
  while (id = ids.shift()) {
5263
5263
  if (empty_string(id) || !v) break;
5264
- if (is_object(v)) v = kw_get_dict_value(null, v, jdb.hook, [], kw_flag_t.KW_CREATE);
5264
+ if (is_object(v)) v = kw_get_dict_value(null, v, jdb.hook, null, 0);
5265
5265
  v = _jdb_get(v, null, id, false);
5266
5266
  }
5267
5267
  if (!v || ids.length !== 0) {
5268
5268
  log_error(`jdb_update: path not found in topic '${topic_name}': '${path}'`);
5269
5269
  return null;
5270
5270
  }
5271
- if (ids.length === 0 && v) {
5272
- if (is_array(v)) v.push(kw);
5273
- else if (v["id"] === kw["id"]) json_object_update(v, kw);
5274
- else {
5275
- let v_ = kw_get_dict_value(null, v, jdb.hook, [], kw_flag_t.KW_CREATE);
5276
- let v__ = _jdb_get(v_, jdb.hook, kw["id"], false);
5277
- if (v__) json_object_update(v__, kw);
5278
- else v_.push(kw);
5271
+ let list;
5272
+ if (is_array(v)) list = v;
5273
+ else if (v["id"] === kw["id"]) {
5274
+ json_object_update(v, kw);
5275
+ return topic;
5276
+ } else {
5277
+ list = kw_get_dict_value(null, v, jdb.hook, null, 0);
5278
+ if (list === null || list === void 0) {
5279
+ list = [];
5280
+ json_object_set(v, jdb.hook, list);
5281
+ } else if (!is_array(list)) {
5282
+ log_error(`jdb_update: the hook '${jdb.hook}' of '${path}' is not a list in topic '${topic_name}'`);
5283
+ return null;
5279
5284
  }
5280
5285
  }
5286
+ let found = _jdb_get(list, jdb.hook, kw["id"], false);
5287
+ if (found) json_object_update(found, kw);
5288
+ else list.push(kw);
5281
5289
  return topic;
5282
5290
  }
5283
5291
  /********************************************