rxdeep
Version:
RxJS deep state management
62 lines • 1.94 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __spreadArrays = (this && this.__spreadArrays) || function () {
for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
for (var r = Array(s), k = 0, i = 0; i < il; i++)
for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
r[k] = a[j];
return r;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.reverse = void 0;
var changes_1 = require("./types/changes");
function clean(l) {
if (l[l.length - 1] === undefined) {
l.length--;
clean(l);
}
}
function reverse(change) {
if (changes_1.isLeaf(change.trace)) {
return {
value: change.trace.from,
trace: {
from: change.trace.to,
to: change.trace.from,
}
};
}
else {
var revalue = Array.isArray(change.value) ? __spreadArrays(change.value) : __assign({}, change.value);
var retrace = {
subs: {}
};
for (var key in change.trace.subs) {
var reversed = reverse({
value: change.value ? change.value[key] : undefined,
trace: change.trace.subs[key],
});
revalue[key] = reversed.value;
retrace.subs[key] = reversed.trace;
}
if (Array.isArray(revalue)) {
clean(revalue);
}
return {
value: revalue,
trace: retrace,
};
}
}
exports.reverse = reverse;
//# sourceMappingURL=reverse.js.map