mongoose-diff-tracking
Version:
Manage Mongo Collection diff History and versions
66 lines (55 loc) • 1.88 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.retargetToProp = retargetToProp;
exports.retargetToPropWithRestoration = retargetToPropWithRestoration;
var _oadUtils = require('oad-utils');
/**
* Retarget the given UpdateOperation to the given docPath.
*/
function retargetToProp(docPath, _operation) {
var operation = (0, _oadUtils.normalizeUpdateOperation)(_operation);
var newOps = {};
var operatorNames = Object.keys(operation);
var _loop = function _loop(operatorName) {
var operator = operation[operatorName];
// $FlowIssue(newOps-can-have-property-of-operatorName)
newOps[operatorName] = {};
Object.keys(operator).forEach(function (originalDocPath) {
var newDocPath = [docPath, originalDocPath].join('.');
// $FlowIssue(newOps-can-have-new-property)
newOps[operatorName][newDocPath] = operator[originalDocPath];
});
};
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = operatorNames[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var operatorName = _step.value;
_loop(operatorName);
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
return newOps;
}
function retargetToPropWithRestoration(docPath, _operation) {
var operation = retargetToProp(docPath, _operation);
var $restore = operation.$restore || {};
$restore[docPath] = '';
// here we write to the operation (mutable)
return Object.assign(operation, { $restore: $restore });
}