Pular para o conteúdo
Bernardo

OPEN SOURCE · 2023

route-schema.

Rotas type-safe para APIs tipadas

A ideia

Na maioria dos codebases TypeScript, URLs são strings com o sistema de tipos desligado. Mudar o nome de um parâmetro num lugar quebra silenciosamente os links construídos em outros nove — uma classe de bug que não deveria existir numa linguagem tipada.

O problema

A solução precisava ser adotável: sem build step, sem arquivos gerados para dessincronizar, sem custo de runtime — ou os times continuariam escrevendo template strings.

Meu papel

Autor e mantenedor.

O que tornou interessante

Inferir tanto a assinatura do builder quanto os tipos dos parâmetros a partir de uma única declaração de rota, sem codegen, empurra os template literal types do TypeScript para o limite prático.

A proposta de valor é a pequenez — cada funcionalidade que adiciona peso de runtime trabalha contra a adoção.

Decisões

Inferência em vez de codegen
Os tipos derivam da própria declaração — não existe build step para manter nem arquivo gerado para dessincronizar da fonte.
Zero runtime por padrão
A camada de tipos faz o trabalho em tempo de compilação; a superfície de runtime é uma pequena função de parse. API pequena, bundle pequeno, adoção fácil.

Resultado

  • Construir uma URL com parâmetro faltando ou errado é erro de compilação, não bug de produção.
  • A biblioteca shipa com menos de 2kB e zero dependências.

O que eu aprendi

O sistema de tipos é uma ferramenta de design, e contenção é uma feature — a melhor biblioteca muitas vezes é a que se recusa a crescer.

Tem um projeto nesse espaço?

Vamos conversar sobre isso