Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 15 additions & 7 deletions src/added/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,25 @@ const addedDiff = (lhs, rhs) => {
const l = properObject(lhs);
const r = properObject(rhs);

return Object.keys(r).reduce((acc, key) => {
if (l.hasOwnProperty(key)) {
const difference = addedDiff(l[key], r[key]);
let changes = {}

if (isObject(difference) && isEmpty(difference)) return acc;
const rKeys = Object.keys(r)

return { ...acc, [key]: difference };
for (let i = 0; i < rKeys.length; i++) {
const key = rKeys[i]

if (!l.hasOwnProperty(key)) {
changes[key] = r[key]
continue
}
const difference = addedDiff(l[key], r[key]);

if (isObject(difference) && isEmpty(difference)) continue;

changes[key] = difference
}

return { ...acc, [key]: r[key] };
}, {});
return changes
};

export default addedDiff;
34 changes: 26 additions & 8 deletions src/arrayDiff/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,18 @@ const diff = (lhs, rhs) => {
const l = properObject(lhs);
const r = properObject(rhs);

const deletedValues = Object.keys(l).reduce((acc, key) => {
return r.hasOwnProperty(key) ? acc : { ...acc, [key]: undefined };
}, {});
let changes = {}

const lKeys = Object.keys(l)

for (let i = 0; i < lKeys.length; i++) {
const key = lKeys[i]

if (!r.hasOwnProperty(key)) {
changes[key] = undefined
}
}


if (isDate(l) || isDate(r)) {
if (l.valueOf() == r.valueOf()) return {};
Expand Down Expand Up @@ -39,15 +48,24 @@ const diff = (lhs, rhs) => {
}, deletedValues);
}

return Object.keys(r).reduce((acc, key) => {
if (!l.hasOwnProperty(key)) return { ...acc, [key]: r[key] }; // return added r key
const rKeys = Object.keys(r)

for (let i = 0; i < rKeys.length; i++) {
const key = rKeys[i]

if (!l.hasOwnProperty(key)) {
changes[key] = r[key]
continue;
}

const difference = diff(l[key], r[key]);

if (isObject(difference) && isEmpty(difference) && !isDate(difference)) return acc; // return no diff
if (isObject(difference) && isEmpty(difference) && !isDate(difference)) continue; // return no diff

changes[key] = difference
}

return { ...acc, [key]: difference }; // return updated key
}, deletedValues);
return changes
};

export default diff;
22 changes: 15 additions & 7 deletions src/deleted/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,25 @@ const deletedDiff = (lhs, rhs) => {
const l = properObject(lhs);
const r = properObject(rhs);

return Object.keys(l).reduce((acc, key) => {
if (r.hasOwnProperty(key)) {
const difference = deletedDiff(l[key], r[key]);
let changes = {}

if (isObject(difference) && isEmpty(difference)) return acc;
const lKeys = Object.keys(l)

return { ...acc, [key]: difference };
for (let i = 0; i < lKeys.length; i++) {
const key = lKeys[i]

if (!r.hasOwnProperty(key)) {
changes[key] = undefined
continue
}
const difference = deletedDiff(l[key], r[key]);

if (isObject(difference) && isEmpty(difference)) continue;

changes[key] = difference
}

return { ...acc, [key]: undefined };
}, {});
return changes
};

export default deletedDiff;
33 changes: 25 additions & 8 deletions src/diff/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,24 +8,41 @@ const diff = (lhs, rhs) => {
const l = properObject(lhs);
const r = properObject(rhs);

const deletedValues = Object.keys(l).reduce((acc, key) => {
return r.hasOwnProperty(key) ? acc : { ...acc, [key]: undefined };
}, {});
let changes = {}

const lKeys = Object.keys(l)

for (let i = 0; i < lKeys.length; i++) {
const key = lKeys[i]

if (!r.hasOwnProperty(key)) {
changes[key] = undefined
}
}

if (isDate(l) || isDate(r)) {
if (l.valueOf() == r.valueOf()) return {};
return r;
}

return Object.keys(r).reduce((acc, key) => {
if (!l.hasOwnProperty(key)) return { ...acc, [key]: r[key] }; // return added r key
const rKeys = Object.keys(r)

for (let i = 0; i < rKeys.length; i++) {
const key = rKeys[i]

if (!l.hasOwnProperty(key)) {
changes[key] = r[key]
continue;
}

const difference = diff(l[key], r[key]);

if (isObject(difference) && isEmpty(difference) && !isDate(difference)) return acc; // return no diff
if (isObject(difference) && isEmpty(difference) && !isDate(difference)) continue; // return no diff

changes[key] = difference
}

return { ...acc, [key]: difference }; // return updated key
}, deletedValues);
return changes
};

export default diff;
23 changes: 15 additions & 8 deletions src/updated/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,25 @@ const updatedDiff = (lhs, rhs) => {
return r;
}

return Object.keys(r).reduce((acc, key) => {

if (l.hasOwnProperty(key)) {
const difference = updatedDiff(l[key], r[key]);
let changes = {}

if (isObject(difference) && isEmpty(difference) && !isDate(difference)) return acc;
const rKeys = Object.keys(r)

return { ...acc, [key]: difference };
}
for (let i = 0; i < rKeys.length; i++){
const key = rKeys[i]

return acc;
}, {});
if (!l.hasOwnProperty(key)) continue

const difference = updatedDiff(l[key], r[key]);

if (isObject(difference) && isEmpty(difference) && !isDate(difference)) continue;

changes[key] = difference

}

return changes
};

export default updatedDiff;