Repolode
DZakh

DZakh/sury

Biblioteca de schemas para TypeScript e ReScript que valida, interpreta e codifica dados a partir de uma única declaração, usando formatos como JSON, dados de formulário e Protobuf.

Estrelas
494
Forks
15
Issues abertas
18
Último commit
há 3 dias

O que é?

Sury é uma biblioteca de schemas para TypeScript e ReScript. Você declara um modelo de dados uma vez, e o mesmo schema é usado para interpretar entradas não confiáveis como valores tipados, codificar valores tipados de volta em um formato de transmissão e inferir tipos TypeScript a partir da declaração. Os schemas podem ser encadeados para que um formato de transmissão, como uma string base64url ou um texto JSON, seja tratado como uma etapa do pipeline entre a entrada bruta e o modelo.

A biblioteca inclui formatos de transmissão integrados para JSON, strings JSON, dados de formulário, variáveis de ambiente, parâmetros de busca de URL, base64, Uint8Array, Protobuf, File e Blob. Os schemas Protobuf não precisam de arquivos .proto nem de geração de código, e podem gerar um arquivo para outros consumidores. Os schemas também implementam Standard Schema e Standard JSON Schema, e é possível converter JSON Schema nas duas direções.

O projeto gera funções JavaScript especializadas para cada schema em tempo de execução, buscando assim oferecer mais velocidade. Entre as operações disponíveis para um schema estão parse, encode, verificações de construtor, igualdade e comparação; cada uma tem variantes síncronas, baseadas em Promise e que retornam Result.

Recursos principais

  • 01Interpreta e codifica dados a partir de uma única declaração de schema, com inferência de tipos TypeScript.
  • 02Formatos de transmissão integrados para strings JSON, dados de formulário, variáveis de ambiente, Protobuf, base64 e File/Blob.
  • 03É compatível com Standard Schema e pode ser integrado ao tRPC, Hono e outras bibliotecas compatíveis.
  • 04Converte para e de JSON Schema e gera definições .proto a partir de schemas Protobuf.
  • 05Informa todos os problemas de validação com seus caminhos e lança erros para valores que JSON.stringify corromperia silenciosamente.

Casos de uso

  • Validar corpos de requisição e resposta de API em um backend ou cliente TypeScript.
  • Interpretar e montar envios de formulários multipart com campos e arquivos tipados.
  • Ler variáveis de ambiente em uma configuração tipada, com valores padrão e validação.
  • Codificar e decodificar mensagens Protobuf sem precisar manter código gerado.

Início rápido

  1. 1

    Instale o pacote pelo npm

    npm install sury
  2. 2

    Importe a biblioteca no seu código TypeScript e declare um schema

Antes de usar

  • Vários formatos de wire, como S.request, S.response, S.capnp, S.rkyv e S.toon, estão listados como recursos futuros e ainda não estão disponíveis.
  • A importação de JSON Schema passa em cerca de 93% da suíte de testes oficial do draft-07, então alguns schemas podem não ser convertidos por completo.

Tópicos

Perguntas frequentes

O que é sury?
Biblioteca de schemas para TypeScript e ReScript que valida, interpreta e codifica dados a partir de uma única declaração, usando formatos como JSON, dados de formulário e Protobuf. Sury é uma biblioteca de schemas para TypeScript e ReScript. Você declara um modelo de dados uma vez, e o mesmo schema é usado para interpretar entradas não confiáveis como valores tipados, codificar valores tipados de volta em um formato de transmissão e inferir tipos TypeScript a partir da declaração. Os schemas podem ser encadeados para que um formato de transmissão, como uma string base64url ou um texto JSON, seja tratado como uma etapa do pipeline entre a entrada bruta e o modelo.
sury é gratuito? Qual é a licença?
sury é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
sury ainda é mantido?
Manutenção ativa. O último commit de sury foi em 5 de nov. de 2026.
Para que posso usar sury?
Validar corpos de requisição e resposta de API em um backend ou cliente TypeScript. Interpretar e montar envios de formulários multipart com campos e arquivos tipados. Ler variáveis de ambiente em uma configuração tipada, com valores padrão e validação. Codificar e decodificar mensagens Protobuf sem precisar manter código gerado.
Como instalar sury?
Instale o pacote pelo npm: npm install sury Importe a biblioteca no seu código TypeScript e declare um schema
Onde consigo sury?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/DZakh/sury

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados