Cleverbrush Schema: رقیب سریعتر Zod
خلاصهٔ کاملتر
این مخزن یه مونوریپو از کتابخونههای TypeScript هست که نویسنده روی درستی و کیفیت تأکید داره: بدون وابستگی زمان اجرا، تایپ سختگیرانه، و تست واحد روی هر پکیج. ستارهٔ این مجموعه پکیج @cleverbrush/schema هست، یه کتابخونهٔ تعریف و اعتبارسنجی schema که API روونش برای هرکی Zod یا Yup کار کرده آشناست.
نکتهٔ اصلی که این مقاله جلو میذاره اینه که با یه بار تعریف schema، چهار تا قابلیت با هم گیرت میاد: استخراج خودکار تایپ TypeScript با InferType، اعتبارسنجی زمان اجرا با .validate()، مپ کردن type-safe شیء، و ساخت خودکار فرم تو React. یعنی دیگه لازم نیست تایپ و ولیدیتور و کانفیگ فرم رو جداگونه و تکراری بنویسی.
const UserSchema = object({
name: string().nonempty().minLength(2),
email: string().email(),
age: number().min(18).optional(),
});
type User = InferType<typeof UserSchema>;
const result = UserSchema.validate({ name: 'Alice', email: 'alice@example.com' });به گفتهٔ نویسنده، سرعت نقطهٔ قوت بزرگشه. تو بنچمارکهایی که با Vitest در برابر Zod v4 گرفته شده، این کتابخونه تو ۱۴ تا از ۱۵ مورد سریعتر بوده و روی دادهٔ نامعتبر تا ۲۰۴ برابر تندتر کار کرده. دلیلش یه بهینهسازی early-exit هست: وقتی یه فیلد نامعتبر میشه، همون اول خطا میگیره و بقیهٔ فیلدها رو دیگه بررسی نمیکنه.
از نظر حجم هم سبکتره؛ نسخهٔ کامل فشردهش حدود ۱۴ کیلوبایته که نویسنده میگه ۳ برابر کوچیکتر از Zod v4 هست. با sub-path importها مثل @cleverbrush/schema/string میتونی فقط همون بخشی که لازم داری رو برداری تا باندل کوچیک بمونه.
به گفتهٔ نویسنده، تفاوت معماری اصلیش چیزیه به اسم PropertyDescriptors: هر schema موقع اجرا یه درخت توصیفگر ساختاریافته میسازه، نه فقط یه تابع ولیدیتور بسته. همینه که اجازه میده mapper سلکتورهای type-safe بده، react-form خودش فیلدها رو بسازه، و خروجی دقیق JSON Schema تولید بشه. با Standard Schema v1 هم مستقیم به tRPC و TanStack Form و React Hook Form و ۵۰ تا ابزار دیگه وصل میشه.
نکات کلیدی:
- یه schema بنویس، همزمان تایپ و اعتبارسنجی و فرم و مپ بگیر
- به گفتهٔ سازنده، تو ۱۴ از ۱۵ بنچمارک از Zod سریعتره (تا ۲۰۴ برابر روی ورودی نامعتبر)
- نسخهٔ کامل حدود ۱۴ کیلوبایت فشرده، حدوداً ۳ برابر سبکتر از Zod v4
- بدون وابستگی زمان اجرا و سازگار با Standard Schema v1
- PropertyDescriptors اون چیزیه که فرمسازی و مپ خودکار رو ممکن میکنه




