UNPKG

takin

Version:

Front end engineering base toolchain and scaffold

90 lines 3.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const zod_1 = require("zod"); function joinValues(array, separator = ' 或 ') { return array .map((val) => (typeof val === 'string' ? `'${val}'` : val)) .join(separator); } /** * 自定义 zod 错误 */ zod_1.z.setErrorMap((issue, ctx) => { let message; switch (issue.code) { case zod_1.ZodIssueCode.invalid_type: if (issue.received === 'undefined') { message = '不能为空'; } else { message = `期望是 ${issue.expected}, 实际是 ${issue.received}`; } break; case zod_1.ZodIssueCode.invalid_literal: message = `无效的字面量, 期望是 ${JSON.stringify(issue.expected)}`; break; case zod_1.ZodIssueCode.unrecognized_keys: message = `对象包含未知属性: ${issue.keys .map((k) => `'${k}'`) .join(', ')}`; break; case zod_1.ZodIssueCode.invalid_union: message = `无效的输入`; break; case zod_1.ZodIssueCode.invalid_union_discriminator: message = `无效的类型识别码, 期望是 ${joinValues(issue.options)}`; break; case zod_1.ZodIssueCode.invalid_enum_value: message = `无效的值. 期望是 ${joinValues(issue.options)}, 实际是 ${typeof ctx.data === 'string' ? `'${ctx.data}'` : ctx.data}`; break; case zod_1.ZodIssueCode.invalid_arguments: message = `无效的函数参数`; break; case zod_1.ZodIssueCode.invalid_return_type: message = `无效的函数返回类型`; break; case zod_1.ZodIssueCode.invalid_date: message = `无效的日期`; break; case zod_1.ZodIssueCode.invalid_string: if (issue.validation !== 'regex') message = `${issue.validation} 无效`; else message = '无效'; break; case zod_1.ZodIssueCode.too_small: if (issue.type === 'array') message = `元素数量 ${issue.inclusive ? `不能少于` : `应多于`} ${issue.minimum} 个`; else if (issue.type === 'string') message = `字符数量 ${issue.inclusive ? `不能少于` : `应多于`} ${issue.minimum} 个`; else if (issue.type === 'number') message = `值应大于 ${issue.inclusive ? `或等于 ` : ``}${issue.minimum}`; else message = '无效的输入'; break; case zod_1.ZodIssueCode.too_big: if (issue.type === 'array') message = `元素数量 ${issue.inclusive ? `不能多于` : `最多为`} ${issue.maximum} 个`; else if (issue.type === 'string') message = `字符数量 ${issue.inclusive ? `不能多于` : `最多为`} ${issue.maximum} 个`; else if (issue.type === 'number') message = `值应小于 ${issue.inclusive ? `或等于 ` : ``}${issue.maximum}`; else message = '无效的输入'; break; case zod_1.ZodIssueCode.custom: message = `无效的输入`; break; case zod_1.ZodIssueCode.invalid_intersection_types: message = `交叉结果无法合并`; break; case zod_1.ZodIssueCode.not_multiple_of: message = `应当为 ${issue.multipleOf} 的倍数`; break; default: message = ctx.defaultError || '校验错误'; throw new Error(message); } return { message }; }); //# sourceMappingURL=customZod.js.map