@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 +1 -1
- package/package.tar.gz +0 -0
- package/paper-trail/index.js +34 -27
package/package.json
CHANGED
package/package.tar.gz
CHANGED
|
Binary file
|
package/paper-trail/index.js
CHANGED
|
@@ -297,35 +297,42 @@ paperTrail.init = (sequelize, sequelizePackage, optionsArg) => {
|
|
|
297
297
|
);
|
|
298
298
|
}
|
|
299
299
|
|
|
300
|
-
|
|
301
|
-
//
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
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
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
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;
|