UNPKG

1.39 kBJavaScriptView Raw
1/**
2Generates a complete message from all errors generated by predicates.
3
4@param errors - The errors generated by the predicates.
5@param isAny - If this function is called from the any argument.
6@hidden
7*/
8export const generateArgumentErrorMessage = (errors, isAny = false) => {
9 const message = [];
10 const errorArray = [...errors.entries()];
11 const anyErrorWithoutOneItemOnly = errorArray.some(([, array]) => array.size !== 1);
12 // If only one error "key" is present, enumerate all of those errors only.
13 if (errorArray.length === 1) {
14 const [, returnedErrors] = errorArray[0];
15 if (!isAny && returnedErrors.size === 1) {
16 const [errorMessage] = returnedErrors;
17 return errorMessage;
18 }
19 for (const entry of returnedErrors) {
20 message.push(`${isAny ? ' - ' : ''}${entry}`);
21 }
22 return message.join('\n');
23 }
24 // If every predicate returns just one error, enumerate them as is.
25 if (!anyErrorWithoutOneItemOnly) {
26 return errorArray.map(([, [item]]) => ` - ${item}`).join('\n');
27 }
28 // Else, iterate through all the errors and enumerate them.
29 for (const [key, value] of errorArray) {
30 message.push(`Errors from the "${key}" predicate:`);
31 for (const entry of value) {
32 message.push(` - ${entry}`);
33 }
34 }
35 return message.join('\n');
36};