import {ParsedObjectType} from "../../../types/ParsedObjectType"; import {equalTypes} from "../../../comparer/equalTypes"; import {andTypes} from "../../../comparer/andTypes"; export function evaluateObjects(objectTypeA : ParsedObjectType, objectTypeB : ParsedObjectType){ let mergedObject = { _type : objectTypeA._type, items: [...objectTypeA.items] }; objectTypeB.items.forEach((currentItem) => { let sameItemFromMergedObject_ByKey = mergedObject.items.filter((item) => currentItem.key._type == item.key._type && equalTypes(currentItem.key, item.key)); const isThereItemWithTheSameKeyInTheMergedObject = sameItemFromMergedObject_ByKey.length > 0; if (isThereItemWithTheSameKeyInTheMergedObject) { const sameItemInMergedObject = sameItemFromMergedObject_ByKey[0]; const andedType = andTypes(sameItemInMergedObject.value, currentItem.value); const sameObjectIndex = mergedObject.items.indexOf(sameItemInMergedObject); mergedObject.items[sameObjectIndex]["value"] = andedType; } else { mergedObject.items.push(currentItem); } } ) return mergedObject; }