Transformer de TypeScript que compila tipos puros em validadores de runtime, serializadores JSON, codecs de Protocol Buffer e geradores de dados aleatórios.
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
Instale o pacote pelo npm
npm install sury - 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
Biblioteca Python de validação de dados que usa type hints para analisar e validar dados, com um core baseado em Rust.
Framework de esquema JSON e servidor padronizados para descrever capacidades, habilidades, domínios e metadados de agentes de IA, permitindo validar e descobrir agentes.
Uma biblioteca rápida de serialização e validação para Python que codifica e decodifica JSON, MessagePack, YAML e TOML usando anotações de tipo padrão.
Componente web para visualizar e editar JSON nos modos árvore, código, texto e visualização, integrado ao seu próprio app web.
Gera modelos tipados e serializadores em várias linguagens a partir de JSON, JSON Schema, TypeScript e consultas GraphQL.