UNPKG

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