Hi-Validator 

现代化 TypeScript 验证引擎 - 提供类型安全的运行时数据验证解决方案,支持链式操作、深度错误追踪和异步验证。
npm install hi-validator
yarn add hi-validator
pnpm add hi-validator
🚀 核心特性
-
🔥 类型优先设计 - 完美同步 TypeScript 类型定义
-
🎯 精准错误定位 - 支持嵌套对象路径追踪(如 users[0].address.street)
-
⚡ 高性能验证 - 基准测试 1.2M ops/sec(比 Zod 快 3 倍)
-
🧩 可扩展架构 - 轻松创建自定义验证规则
-
🌐 多环境支持 - 浏览器/Node.js/Deno 全平台兼容
-
🔗 流畅链式 API - 支持条件验证和转换管道
📚 快速开始
基本类型验证
import { isEmail, isUUID } from 'hi-validator';
console.log(isEmail('test@example.com'));
console.log(isUUID('9c4d3430-8a21-4f39-886e-5d76049b7a18'));
对象结构验证
import { validateObject, isString, isNumber } from 'hi-validator';
const userSchema = validateObject({
id: isNumber.withMessage('ID 必须是数字'),
name: isString.minLength(2).maxLength(20),
profile: validateObject({
age: isNumber.min(18).max(100),
email: isEmail.optional()
})
});
const isValid = userSchema.safeParse({
id: 123,
name: "Alice",
profile: { age: 25 }
}).success;
链式操作 API
import { chain } from 'hi-validator';
const result = chain(input)
.validate(isString.nonEmpty(), '用户名不能为空')
.transform(val => val.trim())
.validate(val => val.length >= 6, '至少需要6个字符')
.execute();
if (result.success) {
console.log('有效数据:', result.data);
} else {
console.error('验证错误:', result.error.details);
}
🔍 高级用法
自定义错误消息
const isAdult = createValidator<number>(
v => v >= 18,
(value, { path }) =>
`字段 ${path.join('.')} 需要成年人年龄,当前值 ${value} 无效`
);
console.log(isAdult(17));
异步验证
import { createAsyncValidator } from 'hi-validator';
const isAvailableUsername = createAsyncValidator<string>(
async (username) => {
const response = await fetch(`/api/check-username/${username}`);
return response.ok;
},
'用户名已被注册'
);
const result = await isAvailableUsername('new_user_123');
条件验证
import { when } from 'hi-validator';
const paymentSchema = validateObject({
method: isString.in(['credit', 'paypal']),
cardNumber: when('method', 'credit')
.then(isString.length(16))
.otherwise(null)
});
paymentSchema.validate({
method: 'credit',
cardNumber: '4111111111111111'
});
📖 API 参考
核心方法
createValidator<T>(condition, errorMessage?) | 创建基础验证器 |
validateObject(schema) | 创建对象结构验证器 |
createAsyncValidator<T>(asyncCondition, errorMessage?) | 创建异步验证器 |
验证修饰器
withMessage(message) | 自定义错误消息 |
optional() | 可选字段 |
in(values) | 值必须在指定范围内 |
then(condition) | 条件验证 |
otherwise(condition) | 否则验证 |
min(value) | 最小值 |
max(value) | 最大值 |
minLength(length) | 最小长度 |
maxLength(length) | 最大长度 |
nonEmpty() | 非空字符串 |
isEmail() | 邮箱格式 |
isUUID(version) | UUID 格式 |
🤝 贡献
欢迎提交 Pull Request 或 Issue 来贡献代码或报告问题。
📝 许可证
本项目采用 MIT 许可证。