/**
* Teardowns processes of arrays for staging environments.
* This function iterates through an array of process configurations and
* executes teardown operations for each process. It's designed to be
* used in staging environments to ensure resources are cleaned up properly.
*
* @param {Array<Object>} processes An array of process configuration objects.
* Each object should contain a 'name' property
* and a 'teardown' function.
* @throws {Error} If the input is not an array.
*/
function teardownProcesses(processes) {
if (!Array.isArray(processes)) {
throw new Error("Input must be an array of process configurations.");
}
for (const process of processes) {
if (typeof process !== 'object' || process === null) {
console.warn("Skipping invalid process configuration:", process); //Warn about invalid data
continue;
}
if (typeof process.name !== 'string' || process.name.trim() === "") {
console.warn("Skipping process due to missing or invalid name:", process);
continue;
}
if (typeof process.teardown === 'function') {
try {
// Execute the teardown function for the current process.
console.log(`Teardown for process "${process.name}" started.`);
process.teardown(); // Call the teardown function
console.log(`Teardown for process "${process.name}" completed.`);
} catch (error) {
console.error(`Error during teardown of process "${process.name}":`, error);
}
} else {
console.warn(`Teardown function is missing for process "${process.name}".`);
}
}
}
// Example usage:
// const processes = [
// { name: "process1", teardown: () => console.log("Tearing down process 1...") },
// { name: "process2", teardown: () => console.log("Tearing down process 2...") },
// { name: "process3", teardown: () => { console.log("Tearing down process 3"); throw new Error("Simulated error"); } }, //Example with error
// {name: "", teardown: () => console.log("Tearing down process with empty name")}, //Example with empty name
// null, //Example with invalid data type
// {teardown: "not a function"} //Example with invalid teardown function
// ];
// teardownProcesses(processes);
Add your comment