@schema-hub/zod-error-formatter
Version:
Simple and easy-to-understand zod error messages
38 lines • 1.79 kB
JavaScript
import { formatInvalidStringIssueMessage } from './issue-specific/invalid-string.js';
import { formatInvalidTypeIssueMessage } from './issue-specific/invalid-type.js';
import { formatInvalidUnionIssueMessage } from './issue-specific/invalid-union.js';
import { formatInvalidValueIssueMessage } from './issue-specific/invalid-value.js';
import { formatNotMultipleOfIssueMessage } from './issue-specific/not-multiple-of.js';
import { formatTooBigIssueMessage } from './issue-specific/too-big.js';
import { formatTooSmallIssueMessage } from './issue-specific/too-small.js';
import { formatUnrecognizedKeysIssueMessage } from './issue-specific/unrecognized-keys.js';
import { formatPath, isNonEmptyPath } from './path.js';
function formatSimpleMessage(message) {
return () => {
return message;
};
}
const issueCodeToFormatterMap = {
invalid_type: formatInvalidTypeIssueMessage,
invalid_value: formatInvalidValueIssueMessage,
unrecognized_keys: formatUnrecognizedKeysIssueMessage,
too_big: formatTooBigIssueMessage,
too_small: formatTooSmallIssueMessage,
not_multiple_of: formatNotMultipleOfIssueMessage,
invalid_format: formatInvalidStringIssueMessage,
invalid_union: formatInvalidUnionIssueMessage,
custom: formatSimpleMessage('invalid input'),
invalid_key: formatSimpleMessage('invalid key'),
invalid_element: formatSimpleMessage('invalid element')
};
export function formatIssue(issue, input) {
const { path, code = 'custom' } = issue;
const formatter = issueCodeToFormatterMap[code];
const message = formatter(issue, input);
if (isNonEmptyPath(path)) {
const formattedPath = formatPath(path);
return `at ${formattedPath}: ${message}`;
}
return message;
}
//# sourceMappingURL=format-issue.js.map