@featurevisor/core
Version:
Core package of Featurevisor for Node.js usage
71 lines • 2.07 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.checkIfObjectsAreEqual = checkIfObjectsAreEqual;
exports.checkIfArraysAreEqual = checkIfArraysAreEqual;
function checkIfObjectsAreEqual(obj1, obj2) {
if (obj1 === obj2) {
return true;
}
if (typeof obj1 !== "object" || obj1 === null || typeof obj2 !== "object" || obj2 === null) {
return false;
}
const keys1 = Object.keys(obj1);
const keys2 = Object.keys(obj2);
if (keys1.length !== keys2.length) {
return false;
}
for (const key of keys1) {
if (!keys2.includes(key)) {
return false;
}
const val1 = obj1[key];
const val2 = obj2[key];
if (Array.isArray(val1) && Array.isArray(val2)) {
if (!checkIfArraysAreEqual(val1, val2)) {
return false;
}
}
else if (typeof val1 === "object" && typeof val2 === "object") {
if (!checkIfObjectsAreEqual(val1, val2)) {
return false;
}
}
else if (val1 !== val2) {
return false;
}
}
return true;
}
function checkIfArraysAreEqual(arr1, arr2) {
if (arr1 === arr2) {
return true;
}
if (!Array.isArray(arr1) || !Array.isArray(arr2)) {
return false;
}
if (arr1.length !== arr2.length) {
return false;
}
for (let i = 0; i < arr1.length; i++) {
const val1 = arr1[i];
const val2 = arr2[i];
if (Array.isArray(val1) && Array.isArray(val2)) {
if (!checkIfArraysAreEqual(val1, val2)) {
return false;
}
}
else if (typeof val1 === "object" &&
typeof val2 === "object" &&
val1 !== null &&
val2 !== null) {
if (!checkIfObjectsAreEqual(val1, val2)) {
return false;
}
}
else if (val1 !== val2) {
return false;
}
}
return true;
}
//# sourceMappingURL=helpers.js.map