Primate 0.40 introduce páginas de ruta, enums en store, esquemas asíncronos y eventos

Fuentes: Primate 0.40: Route pages, store enums, async schemas and events

Primate es un framework web full-stack en TypeScript que unifica rutas, vistas y persistencia. La versión 0.40, disponible como preview, incorpora cuatro novedades principales pensadas para simplificar el desarrollo y reducir código repetitivo.

La primera es el sistema de páginas de ruta colocalizadas (collocated route pages). En lugar de importar un componente desde el directorio views y pasarlo a response.view, una ruta puede renderizar el archivo de frontend situado junto a ella mediante response.page. La ruta se encarga de la carga de datos, la validación, las redirecciones y los códigos de estado, mientras que la página se ocupa del renderizado. El tipo de las props del componente se infiere automáticamente desde la respuesta de la ruta (typeof route.get.Page), eliminando interfaces duplicadas. Los layouts también pueden colocalizarse siguiendo el mismo patrón.

La segunda novedad son los enums en el store. Con p.enum, integrado en el sistema de persistencia, basta una declaración para obtener un campo validado y tipado, respaldado internamente por p.u8. El enum valida pertenencia, genera constantes tipadas (Account.Status.CONFIRMED) y permite conversión inversa nombre↔valor con .nameOf(). Funciona de forma uniforme en SQLite, PostgreSQL y MySQL sin tipos enum propios del dialecto.

En tercer lugar, Primate 0.40 añade esquemas derivados y asíncronos. El método .derive() permite transformar el valor parseado antes de entregarlo al handler (por ejemplo, concatenar nombre y apellido). El constructor p.async() habilita post-procesamiento asíncrono, componible con derives síncronos, y se admite en route.with() para cuerpos y parámetros de ruta.

Finalmente, la versión suma soporte de eventos, completando un conjunto orientado a unificar tipos, validación y renderizado en una sola capa declarativa.