zod-error
Version:
Utilities to format and customize Zod error messages
55 lines (54 loc) • 3.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getErrorMessage = void 0;
const __1 = require("..");
/**
* Converts a Zod issue to a string message.
* @export
* @param {z.ZodIssue} issue
* @param {number} index
* @param {ErrorMessageOptions} [options]
* @return {*} {string}
*/
function getErrorMessage(issue, index, options) {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
const {} = issue;
const componentDelimeter = (0, __1.getComponentDelimiter)((_a = options === null || options === void 0 ? void 0 : options.delimiter) === null || _a === void 0 ? void 0 : _a.component);
const labels = (0, __1.getComponentLabels)(options);
const components = [];
let codeComponent = `${labels.code}${issue.code}`;
const codeEnabled = (_c = (_b = options === null || options === void 0 ? void 0 : options.code) === null || _b === void 0 ? void 0 : _b.enabled) !== null && _c !== void 0 ? _c : true;
if (codeEnabled) {
if (((_d = options === null || options === void 0 ? void 0 : options.code) === null || _d === void 0 ? void 0 : _d.enabled) && options.code.transform) {
codeComponent = options.code.transform({ component: codeComponent, label: labels.code, value: issue.code });
}
components.push(codeComponent);
}
const pathString = (0, __1.getPathString)(issue.path, options === null || options === void 0 ? void 0 : options.path);
let pathComponent = `${labels.path}${pathString}`;
const pathEnabled = (_f = (_e = options === null || options === void 0 ? void 0 : options.path) === null || _e === void 0 ? void 0 : _e.enabled) !== null && _f !== void 0 ? _f : true;
if (pathEnabled) {
if (((_g = options === null || options === void 0 ? void 0 : options.path) === null || _g === void 0 ? void 0 : _g.enabled) && options.path.transform) {
pathComponent = options.path.transform({ component: pathComponent, label: labels.path, value: pathString });
}
components.push(pathComponent);
}
let messageComponent = `${labels.message}${issue.message}`;
const messageEnabled = (_j = (_h = options === null || options === void 0 ? void 0 : options.message) === null || _h === void 0 ? void 0 : _h.enabled) !== null && _j !== void 0 ? _j : true;
if (messageEnabled) {
if (((_k = options === null || options === void 0 ? void 0 : options.message) === null || _k === void 0 ? void 0 : _k.enabled) && options.message.transform) {
messageComponent = options.message.transform({
component: messageComponent,
label: labels.message,
value: issue.message,
});
}
components.push(messageComponent);
}
const errorMessage = components.join(componentDelimeter);
if (options === null || options === void 0 ? void 0 : options.transform) {
return options.transform({ pathComponent, messageComponent, issue, index, errorMessage, codeComponent });
}
return errorMessage;
}
exports.getErrorMessage = getErrorMessage;