Sobre o projeto

Zod é uma biblioteca de validação que prioriza TypeScript. Você define um esquema, analisa dados com ele e recebe um resultado validado e fortemente tipado. Funciona em Node.js e navegadores modernos, não tem dependências externas e inclui um pacote principal pequeno (cerca de 2kb gzip). A API é imutável: os métodos retornam uma nova instância em vez de modificar o esquema existente. Pode ser usada a partir de TypeScript ou JavaScript puro e inclui conversão integrada para JSON Schema. O uso básico começa com a definição de um esquema, por exemplo, um objeto com um campo string e um campo number. Chamar `.parse` no esquema valida a entrada e retorna um clone profundo fortemente tipado. Se o esquema usar refinamentos ou transformações assíncronos, `.parseAsync()` é necessário. Quando a validação falha, `.parse()` lança um `ZodError` contendo informações granulares sobre o problema, como o tipo esperado, um código de erro, o caminho até o campo problemático e uma mensagem. Para evitar try/catch, `.safeParse()` retorna uma união discriminada com os dados analisados ou o erro; `.safeParseAsync()` cobre esquemas assíncronos. Os tipos podem ser inferidos a partir de esquemas usando `z.infer<>`. Quando os tipos de entrada e saída divergem, por exemplo por meio de `.transform()`, `z.input<>` e `z.output<>` os extraem de forma independente. Um recurso notável é a compilação antecipada. `z.compile(schema)` retorna um clone do esquema com um caminho rápido compilado para entradas válidas, enquanto entradas inválidas recorrem ao analisador normal, mantendo o mesmo relatório de erros. O README relata uma aceleração mediana de 2,4x em um benchmark de 55 esquemas, escalando com a complexidade do esquema (grandes arrays de objetos e objetos com 20 chaves em torno de 9x, objetos aninhados em torno de 4,5x, enquanto um esquema de string simples não ganha nada). A compilação também pode ser ativada globalmente importando `zod/compile` antes dos módulos que definem esquemas. A compilação usa `new Function`, e o modo global é desativado automaticamente quando `z.config({ jitless: true })` é definido, como em ambientes CSP; chamar `z.compile()` diretamente é uma opção explícita. Esquemas com refinamentos ou transformações assíncronos, e algumas outras construções, não podem ser compilados; nesse caso, `z.compile()` retorna o esquema inalterado e ele continua usando o analisador normal, a menos que `{ strict: true }` seja passado para lançar erros específicos. Em entradas inválidas, refinamentos e transformações podem ser executados duas vezes. Derivar um novo esquema a partir de um compilado retorna um esquema não compilado, portanto o esquema final deve ser compilado. A instalação é feita via `npm install zod`. O projeto tem links para a documentação em zod.dev, uma comunidade no Discord e canais sociais. É licenciado sob MIT.