import type { IActivityHandler } from "@vertigis/workflow"; /** An interface that defines the inputs of the activity. */ interface MergeObjectsInputs { /** * @description The first array of objects to merge. * @required */ array1: any[]; /** * @description The key in array1 to merge on. * @required */ key1: string; /** * @description The second array of objects to merge. * @required */ array2: any[]; /** * @description The key in array2 to merge on. * @required */ key2: string; /** * @description The key in array2 to merge on. */ returnAll?: boolean; } interface MergeObjectsOutputs { /** * @description The resulting joined array. */ result: any[]; } /** * @displayName Merge Objects * @category Geocortex * @description Merge Objects 1.3 */ export default class MergeObjects implements IActivityHandler { execute(inputs: MergeObjectsInputs): MergeObjectsOutputs { const { array1, key1, array2, key2, returnAll = false } = inputs; const result = array1.map((item1) => { const item2 = array2.find((item) => item[key2] === item1[key1]); return item2 ? { ...item1, ...item2 } : item1; }); return { result: returnAll ? result : result.filter((item) => item[key2] !== undefined) }; } }