UNPKG

periodicjs.core.data

Version:

Core data is the ORM wrapping component of periodicjs.core.controller that provides database adapters for commonly used databases (ie. mongo, sql, postgres). Adapters provide a standard set of methods and options regardless of the type of database and so

31 lines (30 loc) 1.24 kB
'use strict'; const jsondiff = require('jsondiffpatch').create({}); const compare = jsondiff.diff.bind(jsondiff); const str2json = require('string-to-json'); const depopulate = require('./depopulate'); const moment = require('moment'); /** * Removes reserved fields from objects and then does a comparison of values * @param {Object} original The original unmodified object * @param {Object} revised The updated object * @param {Boolean} skipDepopulate If true objects will not be depopulated before doing the object comparison * @return {Object} Returns the result of the object comparison */ module.exports = function objectdiff (original, revised, skipDepopulate) { let reservedKeys = ['__v','_id','changes','random','createdat','id']; let clones = { original: Object.assign({}, original), revised: Object.assign({}, revised) }; for (let i = 0; i < reservedKeys.length; i++) { delete clones.original[reservedKeys[i]]; delete clones.revised[reservedKeys[i]]; } if (!skipDepopulate) { clones.original = depopulate(clones.original); clones.revised = depopulate(clones.revised); } let delta = compare(clones.original, clones.revised); return (delta) ? str2json.convert(delta) : {}; };