function mergeConfigurations()

in typescript/lambda-manage-s3-event-notification/lambda/manage-s3-event-notifications.js [29:48]


    function mergeConfigurations(request, inputConfig, currentConfig) {
        const mergedConfig = {}
        for (const [key, value] of Object.entries(currentConfig)) {
            // Default to use existing configuration
            mergedConfig[key] = value;

            const input = inputConfig[key];
            if (input && input.length) {
                // If input configuration exists, merge it with existing configuration
                const inputIds = new Set(input.map(obj => obj.Id));
                if (request == 'Delete') {
                    mergedConfig[key] = value.filter(obj => !inputIds.has(obj.Id));
                } else {
                    const filterConfig = value.filter(obj => !inputIds.has(obj.Id));
                    mergedConfig[key] = filterConfig.concat(input);
                }
            }
        }
        return mergedConfig;
    }