UNPKG

zod-error

Version:

Utilities to format and customize Zod error messages

55 lines (54 loc) 3.08 kB
"use strict"; 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;