Registro de Cambios
Registro de Cambios
Sección titulada «Registro de Cambios»Todos los cambios notables de Veloce-TS están documentados en este archivo.
El formato está basado en Keep a Changelog, y este proyecto sigue el Versionado Semántico.
[Unreleased]
Sección titulada «[Unreleased]»[0.4.5] - 2026-03-29
Sección titulada «[0.4.5] - 2026-03-29»Corregido
Sección titulada «Corregido»- CORS en respuestas de error: las respuestas del manejador de errores (401, 422, 500,
application/problem+json, etc.) incluyenAccess-Control-Allow-Originy el resto de cabeceras CORS configuradas, alineadas con las respuestas OK (mergeVeloceCorsHeaders,VELOCE_CORS_HEADERS_KEY,VeloceCorsHeadersSnapshot).
- Mismo parche CORS que en 0.4.4; npm no permite republicar una versión tras
unpublish, así que 0.4.5 es la versión instalable.
[0.4.4] - 2026-03-28
Sección titulada «[0.4.4] - 2026-03-28»No usar: el tarball en npm llegó roto (404). Tras unpublish, el registro bloquea reutilizar ese número. Usa 0.4.5 para el arreglo de CORS.
[0.4.3] - 2026-03-27
Sección titulada «[0.4.3] - 2026-03-27»Añadido
Sección titulada «Añadido»- RFC 9457 (Problem Details): errores por defecto con
Content-Type: application/problem+json, campostype,title,status,detail,instancey extensiones (violations/detailsen validación;debugen 500 solo en desarrollo). VeloceTSConfig.errorResponseFormat:'rfc9457'(defecto) o'legacy'para el JSON{ error, statusCode, details? }anterior.- Helpers exportados:
problemTypeUri,resolveProblemType,resolveProblemTitle,buildProblemInstance,toLegacyErrorBody,sendErrorResponse,PROBLEM_JSON_MEDIA_TYPE,DEFAULT_PROBLEM_TYPE_BASE. HTTPExceptionOptions:problemTypeytitleopcionales enHTTPException.
Cambiado
Sección titulada «Cambiado»- Excepciones de auth usan el formato unificado con tipos de problema
authentication-error/authorization-error.
Documentación
Sección titulada «Documentación»- Cabeceras
@moduleen núcleo, errores, validación, DI, respuestas, logging, middleware, adaptadores, testing y barrels. - Benchmarks actualizados para v0.4.3.
- El cuerpo de error sigue incluyendo
errorystatusCodejunto a los campos RFC 9457. Paraapplication/jsonen errores, usaerrorResponseFormat: 'legacy'.
[0.4.2] - 2026-03-27
Sección titulada «[0.4.2] - 2026-03-27»Corregido
Sección titulada «Corregido»- HealthCheckPlugin: los nombres de los checkers se asignan de forma segura en Bun (
Object.defineProperty+ respaldo) para que no falle al poner.nameen funcionesasync. - Export
@Req: el decorador de parámetro ya se exporta en la entrada principal del paquete (import { Req } from 'veloce-ts').
Documentación
Sección titulada «Documentación»- Guías y referencia API actualizadas para
@Ctx(),@Req()y la API real de HealthCheckPlugin (arraychecks,HealthCheckers.database/memory/disk).
[0.4.1] - 2026-03-27
Sección titulada «[0.4.1] - 2026-03-27»Corregido
Sección titulada «Corregido»include()ya no descarta los campos definidos por decoradores (comostatusCodede@HttpCodeyresponseSchemade@ResponseSchema) al registrar rutas de controladores.
Añadido
Sección titulada «Añadido»- Suite de tests completa (53 tests) que cubre: API funcional, rutas con decoradores, validación de body/query, excepciones HTTP y contenedor DI.
- Logger de respaldo basado en
console: sipinono está instalado, el framework ya no falla al arrancar — usaconsoleautomáticamente.
Cambiado
Sección titulada «Cambiado»pino,pino-prettyeioredismovidos aoptionalDependencies— ya no se instalan automáticamente (~7 MB menos por defecto). Instálalos explícitamente conbun add pino pino-prettyobun add ioredissi los necesitas.winstoneliminado de las dependencias (estaba listado pero nunca fue usado por el framework).- Bundle principal reducido de 444 KB → 408 KB (ESM minificado).
Deprecado
Sección titulada «Deprecado»- Export
FastAPITS: usaVeloceTSo el alias cortoVeloceen su lugar.FastAPITSserá eliminado en v1.0.0.
[0.4.0] - 2026-03-27
Sección titulada «[0.4.0] - 2026-03-27»Esta versión representa la mayor actualización desde el lanzamiento inicial. Se añadieron más de 25 mejoras distribuidas en tres oleadas de trabajo, cubriendo la cadena completa desde la generación de rutas hasta la documentación OpenAPI, el testing, el ORM y la CLI.
🚀 Nuevos Decoradores
Sección titulada «🚀 Nuevos Decoradores»Documentación OpenAPI (shorthand)
Sección titulada «Documentación OpenAPI (shorthand)»Cinco decoradores de una sola línea como alternativa concisa a @ApiDoc({...}):
@Summary(text)— descripción corta visible en la lista de Swagger UI@Description(text)— texto largo en el panel de detalle de la operación@Tag(name)— asigna un tag individual; apilable con múltiples@Tag@Tags(...names)— asigna varios tags en un solo decorador@Deprecated()— marca la ruta como obsoleta (tachado en Swagger UI)
Control de respuesta
Sección titulada «Control de respuesta»@HttpCode(statusCode)— sobreescribe el código HTTP de respuesta del handler@ResponseSchema(schema, statusCode?)— valida y sanitiza la respuesta con un esquema Zod; informa el modelo de respuesta al spec de OpenAPI
Middleware declarativo por ruta
Sección titulada «Middleware declarativo por ruta»@Timeout(ms, message?)— aborta la petición con 408 Request Timeout si el handler supera el límite. Emite el headerX-Timeout-Ms@RateLimit(options)— aplica rate-limiting a nivel de ruta individual. Los headers estándarX-RateLimit-*se envían automáticamente
🛠️ Mejoras al Framework Core
Sección titulada «🛠️ Mejoras al Framework Core»Generador OpenAPI
Sección titulada «Generador OpenAPI»- Auto-tagging: deriva tags automáticamente del primer segmento del path sin necesidad de anotarlos manualmente
- Bearer security scheme: añade
components.securitySchemes.bearerAuthal spec y aplicasecurity: [{ bearerAuth: [] }]en rutas protegidas automáticamente - 401 automático: rutas protegidas reciben una respuesta
401 Unauthorizeddocumentada sin configuración adicional - Soporte de
@HttpCodey@ResponseSchemaen el spec generado
Sistema de Excepciones HTTP
Sección titulada «Sistema de Excepciones HTTP»Seis nuevas clases de excepción:
ConflictException(409),GoneException(410),PayloadTooLargeException(413)UnprocessableEntityException(422),TooManyRequestsException(429),ServiceUnavailableException(503)
Logger estructurado en ErrorHandler
Sección titulada «Logger estructurado en ErrorHandler»- Errores 5xx se registran con
getLogger().errorincluyendo path, método, status y stack - Errores 4xx se registran como
warnen entorno de desarrollo
🧪 TestClient — API fluida y helpers de autenticación
Sección titulada «🧪 TestClient — API fluida y helpers de autenticación»Reescritura completa de TestClient:
TestResponsecon métodos encadenables:expectStatus(),expectOk(),expectCreated(),expectJson(),expectField(),expectHeader(),expectArrayLength()withToken(token),withHeaders(headers)— instancias inmutables con auth pre-configuradaloginAs(credentials, endpoint?)— hace login y retorna cliente autenticadoregisterAndLogin(user, endpoints?)— registra y hace login en una sola llamadaclearAuth()— limpia el token almacenado
🗄️ Drizzle ORM — Integración DI
Sección titulada «🗄️ Drizzle ORM — Integración DI»registerDrizzle(app, db, token?)— registra como singleton en elDIContainer@InjectDB(token?)— decorador de parámetro, alias de@Depends(DB_TOKEN)DB_TOKEN— símbolo por defecto para el token de inyección
📊 Paginación mejorada
Sección titulada «📊 Paginación mejorada»PaginationMetaincluyefromyto(rango 1-based)createCursorPaginatedResultcon nuevo parámetrohadPrevCursorcreateMultiCursorydecodeMultiCursorpara cursores compuestospaginate<T>(data, total, page, limit)— helper standaloneparseCursorQuery()yPaginationHelper.parsePaginationQuery()mejorados
🔌 Express Adapter — Compatibilidad ESM
Sección titulada «🔌 Express Adapter — Compatibilidad ESM»Reescritura completa:
- Carga Express de forma lazy usando
Function('return require')() - Acepta instancia de Express pre-creada como segundo argumento
- Manejo correcto de body raw vs. parseado
- Delega errores al pipeline de Express via
next(err)
🐛 Bug Fixes
Sección titulada «🐛 Bug Fixes»ZodErrorcross-module: añadido fallbackerror.name === 'ZodError'para garantizar 422 en todos los casos- Rutas GET marcadas públicas retornaban 401: corregido con
app.on(['POST', 'PUT', 'DELETE'], ...) - Cache collision en MetadataCompiler: solucionado con IDs únicos por función vía
WeakMap @Cache/@UseMiddlewareperdían metadatos: solucionado actualizando el registro en cada decorador
📋 Mensajes de validación mejorados
Sección titulada «📋 Mensajes de validación mejorados»La respuesta 422 ahora incluye: field (formato items[0].price), received, expected, minimum/maximum
💥 Breaking Changes
Sección titulada «💥 Breaking Changes»Ninguno — todos los cambios son retrocompatibles.
[0.3.3] - 2025-10-31
Sección titulada «[0.3.3] - 2025-10-31»🐛 Bug Fixes Críticos
Sección titulada «🐛 Bug Fixes Críticos»- Serialización de Respuestas JSON: Corregido bug crítico de serialización
- Resolución de Versión CLI: CLI ahora obtiene correctamente la última versión de npm
- Compilación de la Aplicación: Corregida la falta de
await app.compile()en plantillas generadas
🔧 Mejoras CLI
Sección titulada «🔧 Mejoras CLI»- Obtención de versión corregida desde el registro npm
- Todas las plantillas incluyen
await app.compile()
[0.3.2] - 2025-10-31
Sección titulada «[0.3.2] - 2025-10-31»Lanzamiento de parches con correcciones de build internas. Sin cambios funcionales.
[0.3.1] - 2025-10-31
Sección titulada «[0.3.1] - 2025-10-31»🛠️ Mejoras CLI
Sección titulada «🛠️ Mejoras CLI»- Obtención de Última Versión: CLI obtiene automáticamente la última versión desde npm
- Mejor Manejo de Errores: Mensajes más claros y limpieza al fallar la creación de proyectos
- Indicadores de Progreso: Indicadores visuales mejorados durante la creación
- Plantillas: Todas incluyen la llamada obligatoria a
await app.compile()
[0.3.0] - 2025-10-29
Sección titulada «[0.3.0] - 2025-10-29»🚀 Nuevas Características Principales
Sección titulada «🚀 Nuevas Características Principales»Sistema de Caché de Respuestas
Sección titulada «Sistema de Caché de Respuestas»- Caché en Memoria: Caché LRU rápida con limpieza automática
- Caché Redis: Soporte de caché distribuida para despliegues multi-instancia
- Decorador
@Cache(): Caché de respuestas declarativa con configuración flexible de TTL - Decorador
@CacheInvalidate(): Invalidación de caché basada en patrones - Headers
X-Cache: Headers automáticosHIT/MISSen respuestas
Contexto de Petición Mejorado
Sección titulada «Contexto de Petición Mejorado»- IDs de Petición Automáticos: Generación de UUID para cada petición
- Decorador
@RequestId(): Inyecta el ID de petición en métodos del controlador - Decorador
@AbortSignal(): Soporte de cancelación para operaciones largas - Header
X-Request-IDen todas las respuestas
Logging con Pino
Sección titulada «Logging con Pino»- Integración automática del ID de petición en todos los logs
- Loggers hijo con herencia contextual
- Logs JSON estructurados para producción
- Pretty printing para desarrollo
🔧 Nuevo Middleware
Sección titulada «🔧 Nuevo Middleware»createRequestContextMiddleware(),createSimpleRequestIdMiddleware()createCacheMiddleware(),createCacheInvalidationMiddleware()
💥 Breaking Changes
Sección titulada «💥 Breaking Changes»Ninguno — todos los cambios son aditivos y retrocompatibles.
[0.2.6] - 2025-10-15
Sección titulada «[0.2.6] - 2025-10-15»Corregido
Sección titulada «Corregido»- Exportación de Query: Añadida la exportación faltante de
Querydel índice principal - Decoradores de Parámetro:
@Queryde HTTP ahora se exporta correctamente junto a los decoradores de GraphQL
[0.2.5] - 2025-10-15
Sección titulada «[0.2.5] - 2025-10-15»Corregido
Sección titulada «Corregido»- Conflicto de Query en GraphQL: Eliminado el alias conflictivo
Queryde los decoradores GraphQL - Los decoradores GraphQL ahora usan
GQLQuerypara evitar conflictos
Breaking Changes
Sección titulada «Breaking Changes»- Las queries de GraphQL ahora usan
@GQLQueryen lugar de@Query
[0.2.4] - 2025-10-15
Sección titulada «[0.2.4] - 2025-10-15»Corregido
Sección titulada «Corregido»- Decorador
@Query: Ahora maneja parámetros sin esquemas correctamente - Soporta
@Query(),@Query('param')y@Query(Schema)
[0.2.3] - 2025-10-14
Sección titulada «[0.2.3] - 2025-10-14»Corregido
Sección titulada «Corregido»- Exportaciones WebSocket: Corregida la exportación faltante del decorador
@WebSocket
[0.2.2] - 2025-10-14
Sección titulada «[0.2.2] - 2025-10-14»Corregido
Sección titulada «Corregido»- Decoradores GraphQL: Añadidos los alias faltantes
Query,MutationySubscription
[0.2.0] - 2025-10-14
Sección titulada «[0.2.0] - 2025-10-14»🚀 Características Principales Añadidas
Sección titulada «🚀 Características Principales Añadidas»- Sistema de Autenticación Completo: JWT con tokens de acceso/refresco
- Control de Acceso Basado en Roles (RBAC): Roles jerárquicos con sistema de permisos
- Soporte WebSocket en Tiempo Real: Decoradores para WebSocket
- Integración GraphQL: Soporte completo con resolvers y suscripciones
- Herramienta CLI: Scaffolding de proyectos y generación de código
[0.1.0] - 2025-10-12
Sección titulada «[0.1.0] - 2025-10-12»Añadido
Sección titulada «Añadido»- Lanzamiento inicial del framework veloce-ts
- Routing basado en decoradores
- Validación automática con Zod
- Sistema de inyección de dependencias
- Generación automática de documentación OpenAPI
- Soporte para WebSocket y GraphQL
- CLI para scaffolding de proyectos
- Soporte multi-runtime (Bun, Node.js, Deno, Cloudflare Workers)
:::tip Última Versión Recomendamos usar siempre la última versión de Veloce-TS para obtener la mejor experiencia y las últimas funciones. :::
:::note Breaking Changes Los cambios que rompen compatibilidad están claramente marcados en cada lanzamiento. Revisa el registro antes de actualizar a una nueva versión mayor. :::