UNPKG

@schema-hub/zod-error-formatter

Version:

Simple and easy-to-understand zod error messages

48 lines 1.82 kB
const collectionTypes = new Set(['string', 'array', 'set']); const numericTypes = new Set(['bigint', 'number']); function formatInclusivePredicate(issue, inclusiveVariant, nonInclusiveVariant) { if (issue.inclusive === true) { return inclusiveVariant; } return nonInclusiveVariant; } function formatPredicate(issue) { if (issue.exact === true) { return 'exactly'; } if (collectionTypes.has(issue.origin)) { return formatInclusivePredicate(issue, 'at most', 'less than'); } if (numericTypes.has(issue.origin)) { return formatInclusivePredicate(issue, 'less than or equal to', 'less than'); } return formatInclusivePredicate(issue, 'smaller than or equal to', 'smaller than'); } function formatCollectionBoundary(issue) { const singularSuffix = issue.origin === 'string' ? 'character' : 'element'; const suffix = issue.maximum === 1 ? singularSuffix : `${singularSuffix}s`; return `${issue.maximum} ${suffix}`; } function formatCollection(issue) { const predicate = formatPredicate(issue); const boundary = formatCollectionBoundary(issue); return `${issue.origin} must contain ${predicate} ${boundary}`; } function formatNumeric(issue) { const predicate = formatPredicate(issue); return `${issue.origin} must be ${predicate} ${issue.maximum}`; } function formatDate(issue) { const predicate = formatPredicate(issue); return `${issue.origin} must be ${predicate} ${new Date(Number(issue.maximum)).toUTCString()}`; } export function formatTooBigIssueMessage(issue) { if (collectionTypes.has(issue.origin)) { return formatCollection(issue); } if (numericTypes.has(issue.origin)) { return formatNumeric(issue); } return formatDate(issue); } //# sourceMappingURL=too-big.js.map