joi-schema-validator
Version:
A world-class Joi validation error formatter for structured, user-friendly error handling.
30 lines • 1.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.formatError = void 0;
const formatError = (error, messages) => {
return error.details.map((detail) => {
const field = detail.path.join('.'); // Supports nested fields like "address.street"
const type = detail.type;
// Check for field-specific override, e.g., "name.string.min"
const fieldSpecificKey = `${field}.${type}`;
let messageTemplate = messages[fieldSpecificKey] ||
messages[type] ||
`${field} is invalid.`;
// Replace placeholders with actual values from context
if (detail.context) {
Object.entries(detail.context).forEach(([key, value]) => {
messageTemplate = messageTemplate.replace(new RegExp(`{#${key}}`, 'g'), (value === null || value === void 0 ? void 0 : value.toString()) || '');
});
}
// Ensure proper sentence case
messageTemplate =
messageTemplate.charAt(0).toUpperCase() + messageTemplate.slice(1);
return {
field,
type,
message: messageTemplate
};
});
};
exports.formatError = formatError;
//# sourceMappingURL=formatter.js.map