UNPKG

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
"use strict"; 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);