JavaScript

Bibliotecas de schema

Os validadores do Brazilian Utils dentro de um schema do Zod, do Valibot ou do ArkType, ou como um Standard Schema próprio.

Um guia da biblioteca JavaScript. Arquivo original

Funções usadas: CEP: Validar, CNPJ: Validar, CPF: Validar, Telefone: Validar

Um validador entra direto num schema: escolha o documento e a biblioteca. Aqui não roda nada, um schema é o mesmo código em qualquer lugar.

Cada um deles monta o documento sozinho primeiro, para ser reaproveitado onde um schema precisar dele, e depois compõe num formulário. Todos falam Standard Schema, que é como um schema chega a uma biblioteca de formulário, e o toStandardSchema dá essa mesma interface a um validador sem nenhuma biblioteca de schema.

O refine recebe o validador como ele é:

cpf-zod.ts
import { isValidCpf } from "@brazilian-utils/brazilian-utils";
import { z } from "zod";

/** A CPF, reusable wherever a schema needs one. */
export const cpfSchema = z.string().refine(isValidCpf, "Enter a valid CPF");

export const signupSchema = z.object({
  name: z.string().min(1, "Enter your name"),
  cpf: cpfSchema,
});

export type Signup = z.infer<typeof signupSchema>;
cnpj-zod.ts

Carregando o código…

cep-zod.ts

Carregando o código…

phone-zod.ts

Carregando o código…

O check recebe o validador dentro de um pipe:

cpf-valibot.ts

Carregando o código…

cnpj-valibot.ts

Carregando o código…

cep-valibot.ts

Carregando o código…

phone-valibot.ts

Carregando o código…

O narrow recebe ele, e diz o que o valor tem que ser quando recusa:

cpf-arktype.ts

Carregando o código…

cnpj-arktype.ts

Carregando o código…

cep-arktype.ts

Carregando o código…

phone-arktype.ts

Carregando o código…

Sem biblioteca de schema nenhuma: o toStandardSchema dá ao validador a interface que toda biblioteca de formulário fala. O VeeValidate aceita esse schema em rules a partir da versão 5, e o Hono valida um objeto, então a rota embrulha o validador para o corpo JSON.

cpf-standard.ts

Carregando o código…

cnpj-standard.ts

Carregando o código…

cep-standard.ts

Carregando o código…

phone-standard.ts

Carregando o código…

A referência de utilitários documenta o toStandardSchema e os tipos da especificação.