object-deep-compare
Version:
A type-safe collection of comparison methods for objects and arrays in TypeScript/JavaScript
40 lines (39 loc) • 1.36 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.MemoizedCompareProperties = exports.CompareProperties = void 0;
const utils_1 = require("../core/utils");
const memoization_1 = require("../utils/memoization");
/**
* Compares the properties of two objects
* Returns all the different and common properties
*
* @param firstObject - First object to compare
* @param secondObject - Second object to compare
* @return Object containing differences and common properties
*/
const CompareProperties = (firstObject, secondObject) => {
const differences = [];
const common = [];
// Get all unique keys from both objects
const allKeys = new Set([...Object.keys(firstObject), ...Object.keys(secondObject)]);
// Process each key
allKeys.forEach(key => {
const inFirst = (0, utils_1.hasOwn)(firstObject, key);
const inSecond = (0, utils_1.hasOwn)(secondObject, key);
if (inFirst && inSecond) {
common.push(key);
}
else {
differences.push(key);
}
});
return {
differences,
common
};
};
exports.CompareProperties = CompareProperties;
/**
* Memoized version of CompareProperties
*/
exports.MemoizedCompareProperties = (0, memoization_1.Memoize)(exports.CompareProperties, memoization_1.comparePropertiesKeyFn);