@sera4/essentia 1.1.64 → 1.1.65

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sera4/essentia",
3
- "version": "1.1.64",
3
+ "version": "1.1.65",
4
4
  "description": "A library of utilities for Teleporte Web Services",
5
5
  "main": "index.js",
6
6
  "type": "module",
package/package.tar.gz CHANGED
Binary file
@@ -297,35 +297,42 @@ paperTrail.init = (sequelize, sequelizePackage, optionsArg) => {
297
297
  );
298
298
  }
299
299
 
300
- let objectsChanged = new Set();
301
- // if the previous version or new version contain objects; push them onto this list
302
- _.forEach(previousVersion, (value, key) => {
303
- if (typeof(value) === 'object' ) {
304
- objectsChanged.add(key);
305
- // blank it so we can set it equal to ONLY the values changed in the next segment
306
- previousVersion[key] = {};
307
- }
308
- });
309
- _.forEach(currentVersion, (value, key) => {
310
- if (typeof(value) === 'object' ) {
311
- objectsChanged.add(key);
312
- currentVersion[key] = {};
313
- }
314
- });
300
+ // For create/restore, keep full currentVersion (including JSONB/plain objects) so
301
+ // the revision document has complete newValues. For update, blank object values
302
+ // and repopulate only from delta so we store minimal nested changes.
303
+ const blankObjectsAndApplyDelta = !createOperation && !restoreOperation;
304
+
305
+ if (blankObjectsAndApplyDelta) {
306
+ let objectsChanged = new Set();
307
+ // if the previous version or new version contain objects; push them onto this list
308
+ _.forEach(previousVersion, (value, key) => {
309
+ if (typeof(value) === 'object' ) {
310
+ objectsChanged.add(key);
311
+ // blank it so we can set it equal to ONLY the values changed in the next segment
312
+ previousVersion[key] = {};
313
+ }
314
+ });
315
+ _.forEach(currentVersion, (value, key) => {
316
+ if (typeof(value) === 'object' ) {
317
+ objectsChanged.add(key);
318
+ currentVersion[key] = {};
319
+ }
320
+ });
315
321
 
316
322
 
317
- // we don't want to see a full object; we want to see only
318
- // x.y.z -> value
319
- if (delta && objectsChanged.size > 0 ) {
320
- // the format of these are A,E,D,N (added, edited, deleted, new) for the kind
321
- // the array is either the key or key + subkeys ['options','subkey','subkey2'] etc.
322
- // {kind: 'E', path: Array(2), lhs: false, rhs: true}
323
- for (const difference of delta) {
324
- // blank the currentVersion[difference.path[0]]
325
- // and previousVersion[difference.path[0]]
326
- _.set(currentVersion, difference.path, difference.rhs);
327
- _.set(previousVersion, difference.path, difference.lhs);
328
- };
323
+ // we don't want to see a full object; we want to see only
324
+ // x.y.z -> value
325
+ if (delta && objectsChanged.size > 0 ) {
326
+ // the format of these are A,E,D,N (added, edited, deleted, new) for the kind
327
+ // the array is either the key or key + subkeys ['options','subkey','subkey2'] etc.
328
+ // {kind: 'E', path: Array(2), lhs: false, rhs: true}
329
+ for (const difference of delta) {
330
+ // blank the currentVersion[difference.path[0]]
331
+ // and previousVersion[difference.path[0]]
332
+ _.set(currentVersion, difference.path, difference.rhs);
333
+ _.set(previousVersion, difference.path, difference.lhs);
334
+ };
335
+ }
329
336
  }
330
337
 
331
338
  let document;