/** * Reduces one or more LDS errors into a string[] of error messages. * @param {FetchResponse|FetchResponse[]} errors * @return {String[]} Error messages */ export function reduceErrors(errors) { return ( // ensure errors is an array [] .concat(errors) // Remove null/undefined items .filter((error) => !!error) // Extract an error message .map((error) => { // UI API read errors if (Array.isArray(error.body)) { return error.body.map((e) => e.message); } // UI API DML, Apex and network errors else if (error.body && typeof error.body.message === 'string') { return error.body.message; } // JS errors else if (typeof error.message === 'string') { return error.message; } // Unknown error shape so try HTTP status text return error.statusText; }) // Flatten .reduce((prev, curr) => prev.concat(curr), []) // Remove empty strings .filter((message) => !!message) ); }