Valibot je nová validační knihovna pro JavaScript a TypeScript, navržená tak, aby byla co nejmenší, co nejrychlejší a co nejlépe typovaná. Oproti knihovnám jako Zod nebo Yup nabízí výrazně menší velikost a extrémní výkonnost, přičemž si zachovává přehledné API a silnou typovou kontrolu.
Cílem Valibotu je poskytovat validaci dat na runtime úrovni s co nejnižším dopadem na výkon i velikost výsledného JavaScript bundlu. Valibot je napsaný v čistém TypeScriptu a nemá žádné závislosti. Je tak vhodný pro frontend, backend i edge prostředí.
Základní použití
import { object, string, number, parse } from 'valibot';
const UserSchema = object({
name: string(),
age: number(),
});
const data = parse(UserSchema, {
name: 'Lucie',
age: 28,
});object({...})definuje strukturu objektustring(),number()jsou primitivní validátoryparse()spustí validaci a vrátí typovaný výstup nebo chybu
import * as v from 'valibot';
const LoginSchema = v.object({…});
type LoginData = v.InferOutput<typeof LoginSchema>;
function getLoginData(data: unknown): LoginData {
return v.parse(LoginSchema, data);
}Pokročilé příklady
Volitelné hodnoty a výchozí hodnoty
import { optional, default_ } from 'valibot';
const Schema = object({
isActive: optional(default_(true, boolean())),
});Transformace a extra validace
import * as v from 'valibot' // 1.61kb
const EmailSchema = v.pipe(v.string(), v.email(), v.endsWith('@example.com'));Enum validace
import { literal, union } from 'valibot';
const Role = union([
literal('admin'),
literal('user'),
literal('guest'),
]);Validace polí
import { array, string, minLength } from 'valibot';
const Tags = array(string([minLength(2)]));Vlastní validátor
import { custom } from 'valibot';
const EvenNumber = number([
custom((value) => value % 2 === 0, 'Must be even'),
]);Bezpečné parsování
Valibot podporuje i bezpečné zpracování dat pomocí safeParse():
import { safeParse } from 'valibot';
const result = safeParse(UserSchema, { name: 'Anna', age: 'not-a-number' });
if (!result.success) {
console.log(result.issues); // podrobné chyby
} else {
console.log(result.output); // validovaná data
}Klíčové vlastnosti knihovny
- malá: extrémně malý bundle (méně než 1 kB min+gz), tree-shaking
- rychlá: optimalizovaný pro výkon v runtime validaci
- type-safe: plná integrace s TypeScriptem
- bez závislostí: čistý TypeScript, snadná integrace
- modulární: lze skládat validátory jako stavebnici
Shrnutí
Valibot je validační knihovna nové generace — extrémně rychlá, malá, a přitom typově přesná. Hodí se tam, kde záleží na velikosti balíčku (např. frontend, mobilní web, edge computing), ale i na serveru v prostředích s důrazem na výkon.