UNPKG

rxdeep

Version:
57 lines 1.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.change = exports.trace = void 0; function isRaw(v) { return v === null || v === undefined || typeof v === 'number' || typeof v === 'string' || typeof v === 'boolean' || v instanceof Date; } function trace(src, dest) { if (src === dest) { return undefined; } if (!isRaw(src) && !isRaw(dest)) { var tr = { subs: {} }; var seen = new Set(); var changed = false; for (var key in src) { seen.add(key); var subTrace = trace(src[key], dest[key]); if (subTrace) { tr.subs[key] = subTrace; changed = true; } } for (var key in dest) { if (seen.has(key)) { continue; } tr.subs[key] = trace(src[key], dest[key]); changed = true; } if (changed) { return tr; } else { return undefined; } } if (src instanceof Date && dest instanceof Date && +src !== +dest) { return { from: src, to: dest }; } /* istanbul ignore next */ if (src !== dest) { return { from: src, to: dest }; } } exports.trace = trace; function change(src, dest) { var _trace = trace(src, dest); if (_trace) { return { value: dest, trace: _trace }; } } exports.change = change; //# sourceMappingURL=trace.js.map