jerkjs 2.5.2 → 2.5.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BENCHMARK_RESULTS.md +60 -0
- package/CHANGELOG.md +87 -137
- package/README.md +108 -454
- package/README_LEGACY.md +513 -0
- package/auditoria_jerkjs.md +91 -0
- package/doc-2.5/SESSION_SECURITY_FLAGS.md +174 -0
- package/doc-2.5/an/303/241lisis-completo-jerk-framework.md +213 -0
- package/doc-2.5/manual-mvc-completo.md +934 -0
- package/docs/MANUAL_CONTROLLER_VIEW_MODEL.md +310 -0
- package/docs/SERVER_OPTIMIZATION_NOTES.md +87 -0
- package/jerk2.5.webp +0 -0
- package/lib/core/server.js +64 -53
- package/lib/middleware/session.js +11 -3
- package/lib/mvc/controllerBase.js +100 -32
- package/lib/router/RouteMatcher.js +45 -10
- package/package.json +13 -5
- package/example-directory-loader.js +0 -46
- package/examples/examples.arj +0 -0
- package/qa/informe_qa_fix_enrutamiento.md +0 -93
- package/utils/find_file_path.sh +0 -36
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# Benchmark de Rendimiento - JERK Framework v2.5.6
|
|
2
|
+
|
|
3
|
+
Fecha: domingo, 8 de febrero de 2026
|
|
4
|
+
|
|
5
|
+
## Servidor JERK Framework v2.5.6
|
|
6
|
+
- Puerto: 9791
|
|
7
|
+
- Framework: JERK Framework v2.5.6
|
|
8
|
+
- Versión que incluye filtros de cookies seguras y optimizaciones de rendimiento en server.js
|
|
9
|
+
- Rendimiento bajo condiciones de alta concurrencia
|
|
10
|
+
|
|
11
|
+
## Pruebas Realizadas
|
|
12
|
+
|
|
13
|
+
### Prueba 1: Alta concurrencia (1000 solicitudes, 50 concurrentes)
|
|
14
|
+
- URL: http://localhost:9791/
|
|
15
|
+
- Document Length: 47067 bytes (~46KB)
|
|
16
|
+
- RPS (Solicitudes por segundo): 650.02
|
|
17
|
+
- Tiempo medio por solicitud: 76.920 ms
|
|
18
|
+
- Transferencia: 29,964.60 KB/s
|
|
19
|
+
- Fallos: 0
|
|
20
|
+
|
|
21
|
+
### Prueba 2: Mayor carga (2000 solicitudes, 100 concurrentes)
|
|
22
|
+
- URL: http://localhost:9791/
|
|
23
|
+
- Document Length: 47067 bytes (~46KB)
|
|
24
|
+
- RPS: 704.44
|
|
25
|
+
- Tiempo medio por solicitud: 141.956 ms
|
|
26
|
+
- Transferencia: 32,473.11 KB/s
|
|
27
|
+
- Fallos: 0
|
|
28
|
+
|
|
29
|
+
### Prueba 3: Endpoint de API (1000 solicitudes, 50 concurrentes)
|
|
30
|
+
- URL: http://localhost:9791/api/endpoints
|
|
31
|
+
- Document Length: 14585 bytes (~14KB)
|
|
32
|
+
- RPS: 1,010.95
|
|
33
|
+
- Tiempo medio por solicitud: 49.458 ms
|
|
34
|
+
- Transferencia: 14,656.85 KB/s
|
|
35
|
+
- Fallos: 0
|
|
36
|
+
|
|
37
|
+
### Prueba 4: Endpoint protegido con autenticación (500 solicitudes, 25 concurrentes)
|
|
38
|
+
- URL: http://localhost:9791/api/tracking/sessions
|
|
39
|
+
- Document Length: 3774 bytes (~3.7KB)
|
|
40
|
+
- RPS: 279.31
|
|
41
|
+
- Tiempo medio por solicitud: 89.507 ms
|
|
42
|
+
- Transferencia: 1,058.59 KB/s
|
|
43
|
+
- Fallos: 0
|
|
44
|
+
|
|
45
|
+
## Análisis de Rendimiento
|
|
46
|
+
|
|
47
|
+
La aplicación JERK Framework demuestra un rendimiento excelente bajo condiciones de alta carga:
|
|
48
|
+
|
|
49
|
+
1. **Escalabilidad**: El sistema mantiene 0% de fallos incluso bajo alta concurrencia
|
|
50
|
+
2. **Eficiencia**: Aproximadamente 700+ RPS con 100 conexiones concurrentes
|
|
51
|
+
3. **Consistencia**: Tiempos de respuesta consistentes incluso bajo carga
|
|
52
|
+
4. **Manejo de autenticación**: El endpoint protegido mantiene buen rendimiento (279 RPS) a pesar de la sobrecarga de autenticación JWT
|
|
53
|
+
5. **Transferencia de datos**: Velocidades de transferencia muy altas (>32MB/s en la prueba más exigente)
|
|
54
|
+
|
|
55
|
+
Estos resultados indican que el framework JERK está bien optimizado para manejar aplicaciones web de alta demanda con buena capacidad de respuesta incluso bajo condiciones de carga intensa.
|
|
56
|
+
|
|
57
|
+
## Usuarios de Prueba
|
|
58
|
+
- Usuario: testuser
|
|
59
|
+
- Contraseña: testpass
|
|
60
|
+
- Token JWT: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjIsInVzZXJuYW1lIjoidGVzdHVzZXIiLCJlbWFpbCI6InRlc3RAZXhhbXBsZS5jb20iLCJpYXQiOjE3NzA1OTQ0MzcsImV4cCI6MTc3MDY4MDgzN30.6Vjz9Ui_rKnifqk3mBzU8kXqzxITjhlM5jwxlk5DUk0
|
package/CHANGELOG.md
CHANGED
|
@@ -1,178 +1,128 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Changelog
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## [2.5.6] - 2026-02-08
|
|
4
4
|
|
|
5
|
-
###
|
|
6
|
-
-
|
|
7
|
-
-
|
|
8
|
-
-
|
|
5
|
+
### Added
|
|
6
|
+
- Implementación de filtros para personalizar las flags de seguridad de las cookies de sesión
|
|
7
|
+
- Añadidos los filtros `session_cookie_flags` y `session_cookie_destroy_flags` para permitir la modificación de las flags de las cookies de sesión
|
|
8
|
+
- Soporte para añadir flags de seguridad como `Secure` y `SameSite` a través del sistema de filtros
|
|
9
|
+
- Documentación sobre cómo añadir soporte para flags adicionales como `Partitioned`
|
|
9
10
|
|
|
10
11
|
### Changed
|
|
11
|
-
-
|
|
12
|
-
-
|
|
12
|
+
- El sistema de sesiones ahora permite la personalización de flags de seguridad mediante filtros
|
|
13
|
+
- Mejorada la seguridad predeterminada de las cookies de sesión
|
|
14
|
+
- Optimizaciones de rendimiento en el servidor para reducir operaciones redundantes
|
|
15
|
+
- Carga anticipada de módulos comunes para evitar cargas repetidas en cada solicitud
|
|
16
|
+
- Mejora en el manejo de rutas estáticas para reducir operaciones de normalización repetidas
|
|
17
|
+
- Implementación de caché para el método render en la respuesta para evitar redefiniciones innecesarias
|
|
18
|
+
|
|
19
|
+
## [2.5.5] - 2026-02-08
|
|
13
20
|
|
|
14
|
-
##
|
|
21
|
+
## [2.5.4] - 2026-02-08
|
|
15
22
|
|
|
16
23
|
### Fixed
|
|
17
|
-
-
|
|
24
|
+
- Corregido problema con rutas estáticas que no se resolvían correctamente cuando existían múltiples rutas estáticas con diferentes niveles de especificidad
|
|
25
|
+
- Solucionado error en el sistema de enrutamiento donde rutas estáticas menos específicas tenían prioridad sobre rutas más específicas
|
|
26
|
+
- Arreglado problema con la resolución de rutas absolutas en el manejador de archivos estáticos
|
|
27
|
+
- Corregido manejo de caracteres especiales (como guiones '-') en rutas parametrizadas
|
|
18
28
|
|
|
19
29
|
### Changed
|
|
20
|
-
-
|
|
30
|
+
- Mejorado el sistema de prioridad de rutas estáticas para que se seleccione la ruta más específica basada en la longitud del prefijo
|
|
31
|
+
- Actualizado el sistema de resolución de rutas para usar `path.resolve` en lugar de `path.join` para mejor precisión
|
|
32
|
+
- Agregada información de depuración en mensajes de error para facilitar la identificación de problemas de rutas
|
|
21
33
|
|
|
22
|
-
##
|
|
34
|
+
## [2.5.3] - Fecha anterior
|
|
23
35
|
|
|
24
36
|
### Added
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
- **Recarga automática de rutas**: Funcionalidad para observar cambios en los archivos de rutas y recargar automáticamente
|
|
30
|
-
- **Manual de uso**: Documentación completa para el nuevo componente RouteDirectoryLoader
|
|
31
|
-
|
|
32
|
-
### Changed
|
|
33
|
-
- **Actualización de la versión a 2.5.0**: Debido a la implementación significativa del componente RouteDirectoryLoader
|
|
34
|
-
- **Exportaciones del framework actualizadas**: Se ha añadido la nueva exportación de RouteDirectoryLoader en el archivo principal index.js
|
|
35
|
-
|
|
36
|
-
## v2.4.1 - 22 de enero de 2026
|
|
37
|
-
|
|
38
|
-
### Changed
|
|
39
|
-
- **QueryBuilder ahora como dependencia externa**: El componente QueryBuilder ha sido removido como parte interna del framework y ahora es una dependencia externa llamada `qbuilderjs`. Esto permite una mayor modularidad y mantenimiento independiente del componente.
|
|
40
|
-
|
|
41
|
-
## v2.3.1 - 21 de enero de 2026
|
|
42
|
-
|
|
43
|
-
### Fixed
|
|
44
|
-
- **Referencias circulares en QueryBuilder**: Se ha corregido un problema de referencias circulares en queryBuilder.js que podía causar problemas de memoria y dificultades en la carga de módulos. La corrección implica cambiar la forma en que se importa el sistema de hooks para evitar la carga circular entre módulos.
|
|
37
|
+
- Añadida integración completa con qbuilderjs
|
|
38
|
+
- Implementada arquitectura MVC completa con modelos
|
|
39
|
+
- Añadido sistema mejorado de carga de rutas desde directorios
|
|
40
|
+
- Incorporado sistema mejorado de carga de modelos
|
|
45
41
|
|
|
46
|
-
##
|
|
42
|
+
## [2.5.2] - Fecha anterior
|
|
47
43
|
|
|
48
44
|
### Added
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
-
-
|
|
52
|
-
- **Adaptador de Consola**: Adaptador de ejemplo para mostrar consultas SQL por consola, útil para pruebas y desarrollo
|
|
53
|
-
- **Middleware de Integración**: Sistema completo para inyectar QueryBuilder en solicitudes HTTP con soporte para configuración de adaptadores, registro de consultas y reglas de seguridad
|
|
54
|
-
- **Sistema de Hooks**: Integración completa con el sistema de hooks de JERK para eventos del QueryBuilder, auditoría de consultas y aplicación de reglas de seguridad
|
|
55
|
-
- **Arquitectura modular**: Estructura de archivos separados para cada componente del QueryBuilder, con dependencias claras entre módulos
|
|
56
|
-
- **Seguridad mejorada**: Prevención de inyección SQL mediante el uso de parámetros y sistema de validación de consultas
|
|
57
|
-
- **Soporte para múltiples operaciones**: Métodos para SELECT, INSERT, UPDATE, DELETE con condiciones WHERE, JOINs, GROUP BY, ORDER BY, LIMIT, OFFSET y funciones de agregación
|
|
45
|
+
- Implementación de sistema de autenticación JWT
|
|
46
|
+
- Adición de middleware de autenticación
|
|
47
|
+
- Incorporación de sistema de roles y capacidades
|
|
58
48
|
|
|
59
|
-
|
|
60
|
-
- **Actualización de la versión a 2.3.0**: Debido a la implementación significativa del componente QueryBuilder
|
|
61
|
-
- **Exportaciones del framework actualizadas**: Se han añadido las nuevas exportaciones del QueryBuilder en el archivo principal index.js
|
|
62
|
-
- **Documentación actualizada**: Se ha añadido una nueva sección en la documentación principal sobre el uso del QueryBuilder
|
|
49
|
+
## [2.5.1] - Fecha anterior
|
|
63
50
|
|
|
64
|
-
|
|
51
|
+
### Fixed
|
|
52
|
+
- Corrección de fugas de memoria en el sistema de colas
|
|
53
|
+
- Arreglo de problemas de concurrencia en operaciones de base de datos
|
|
65
54
|
|
|
66
55
|
### Changed
|
|
67
|
-
-
|
|
68
|
-
-
|
|
69
|
-
- **Soporte para carga perezosa de modelos**: Se ha implementado un sistema de carga perezosa para que los modelos se carguen solo cuando se necesiten, evitando problemas de inicialización temprana
|
|
56
|
+
- Mejora en el sistema de logging
|
|
57
|
+
- Optimización de consultas a base de datos
|
|
70
58
|
|
|
71
|
-
##
|
|
59
|
+
## [2.5.0] - Fecha anterior
|
|
72
60
|
|
|
73
61
|
### Added
|
|
74
|
-
-
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
- **Modelos específicos**: Se han creado modelos específicos para diferentes entidades con métodos especializados para consultas complejas
|
|
78
|
-
- **Integración con sistema de hooks**: Los modelos participan en el sistema de hooks del framework para extensibilidad
|
|
79
|
-
- **Comunicación bidireccional entre modelos y controladores**: Se ha implementado un sistema para que modelos y controladores se comuniquen entre sí
|
|
80
|
-
- **Soporte para consultas avanzadas**: Los modelos incluyen soporte para paginación, filtros, búsqueda global y operaciones CRUD completas
|
|
81
|
-
- **Validación de datos en modelos**: Se ha implementado un sistema de validación de datos específico para cada modelo
|
|
82
|
-
- **Helper loadModel en ControllerBase**: Se ha añadido el método loadModel() para facilitar la carga de modelos en los controladores
|
|
62
|
+
- Nuevo sistema de modelos con soporte para MariaDB y SQLite
|
|
63
|
+
- Implementación de adaptadores para diferentes bases de datos
|
|
64
|
+
- Añadido sistema de migraciones de base de datos
|
|
83
65
|
|
|
84
66
|
### Changed
|
|
85
|
-
-
|
|
86
|
-
-
|
|
87
|
-
- **Mejora en la estructura interna**: La arquitectura ahora sigue completamente el patrón MVC
|
|
67
|
+
- Refactorización del sistema de vistas
|
|
68
|
+
- Actualización de dependencias
|
|
88
69
|
|
|
89
|
-
##
|
|
70
|
+
## [2.4.0] - Fecha anterior
|
|
90
71
|
|
|
91
72
|
### Added
|
|
92
|
-
-
|
|
93
|
-
-
|
|
94
|
-
-
|
|
95
|
-
- **Soporte para layouts en ViewEngine**: Se ha añadido soporte para layouts con placeholder `{{content}}` en el sistema de vistas
|
|
96
|
-
- **Mejoras en el sistema de enrutamiento**: Se han añadido mejoras para reconocer correctamente rutas estáticas como prefijos
|
|
97
|
-
|
|
98
|
-
### Changed
|
|
99
|
-
- **Actualización de documentación**: Se ha actualizado la documentación para reflejar las nuevas funcionalidades de rutas estáticas
|
|
100
|
-
- **Optimización del sistema de rutas**: Mejora en la lógica de coincidencia de rutas para soportar rutas estáticas como prefijos
|
|
101
|
-
|
|
102
|
-
## v2.1.7 - 19 de enero de 2026
|
|
103
|
-
|
|
104
|
-
### Correcciones
|
|
105
|
-
|
|
106
|
-
- **Fix de header Content-Encoding faltante en respuestas comprimidas**: Se corrigió un bug crítico donde el middleware de compresión no enviaba el header `Content-Encoding: gzip` cuando los controladores llamaban directamente a `res.writeHead()` antes de que el middleware pudiera modificar los encabezados. La solución implementa un sistema de captura y posposición de encabezados que asegura que `Content-Encoding` se incluya correctamente en las respuestas comprimidas, permitiendo que los navegadores descompriman automáticamente el contenido.
|
|
107
|
-
|
|
108
|
-
## v2.1.6 - 18 de enero de 2026
|
|
109
|
-
|
|
110
|
-
### Actualizaciones
|
|
111
|
-
|
|
112
|
-
- **Actualización de la biblioteca Hooked Lib a versión 2.0**: Se ha actualizado la biblioteca de hooks existente (@lib/core/hooks.js) a la versión 2.0, que ahora permite implementar patrones de extensibilidad mediante hooks y filtros, similar a los utilizados en WordPress. Incluye soporte para namespaces (namespace::hookName), prioridades, identificadores de callbacks, operaciones síncronas y asíncronas (doActionAsync, applyFiltersAsync), y validación de entradas.
|
|
73
|
+
- Implementación de sistema de sesiones
|
|
74
|
+
- Adición de middleware de seguridad
|
|
75
|
+
- Incorporación de sistema de firewall WAF
|
|
113
76
|
|
|
114
|
-
###
|
|
115
|
-
|
|
116
|
-
-
|
|
117
|
-
|
|
118
|
-
## v2.1.5 - 17 de enero de 2026
|
|
119
|
-
|
|
120
|
-
### Nuevas características
|
|
121
|
-
|
|
122
|
-
- **Implementación completa del sistema MVC**: Se ha completado la implementación del sistema MVC con soporte para controladores que extienden ControllerBase, vistas con procesamiento de variables anidadas en bucles y condiciones, y sistema de layouts. Esta funcionalidad está disponible tanto para aplicaciones que usan `routes.json` como para aquellas que utilizan `addRoute()` directamente.
|
|
123
|
-
|
|
124
|
-
- **Soporte completo para vistas con variables anidadas**: El ViewEngine ahora soporta completamente el procesamiento de variables anidadas en bucles `{{foreach}}` y estructuras condicionales `{{if}}`, permitiendo construir interfaces complejas con datos dinámicos. Esta funcionalidad es accesible tanto en la arquitectura basada en `routes.json` como en la basada en `addRoute()`.
|
|
125
|
-
|
|
126
|
-
- **Ejemplo completo de servidor sin routes.json**: Se ha implementado un ejemplo completo (`@standardA/`) que demuestra cómo usar el framework sin el archivo `routes.json`, utilizando `addRoute()` con todas las funcionalidades equivalentes a las disponibles con `routes.json`.
|
|
127
|
-
|
|
128
|
-
### Mejoras
|
|
129
|
-
|
|
130
|
-
- **Sistema MVC más robusto**: Se ha mejorado la integración entre controladores, vistas y modelos, permitiendo un desarrollo más estructurado y mantenible en ambas arquitecturas (con y sin `routes.json`).
|
|
131
|
-
- **Procesamiento de variables anidadas**: Se ha mejorado el procesamiento de variables como `{{item.property}}` dentro de bucles `{{foreach}}`, permitiendo el uso completo de estructuras de datos complejas en las vistas, tanto en aplicaciones que usan `routes.json` como en aquellas que utilizan `addRoute()` directamente.
|
|
132
|
-
|
|
133
|
-
### Correcciones
|
|
134
|
-
|
|
135
|
-
- **Corrección en el procesamiento de variables anidadas**: Se resolvieron problemas con el procesamiento de variables como `{{item.property}}` dentro de bucles `{{foreach}}`, permitiendo el uso completo de estructuras de datos complejas en las vistas, tanto en la arquitectura con `routes.json` como en la arquitectura sin `routes.json`.
|
|
136
|
-
- **Corrección en el manejo de rutas sin routes.json**: Se resolvió el problema con el sistema de rutas cuando se utiliza `addRoute()` directamente sin el archivo `routes.json`, permitiendo que ambas arquitecturas funcionen correctamente con el sistema MVC y vistas.
|
|
137
|
-
|
|
138
|
-
## v2.1.4 - 17 de enero de 2026
|
|
139
|
-
|
|
140
|
-
### README
|
|
141
|
-
- ** Se agrega información starter kit a README.md
|
|
142
|
-
|
|
143
|
-
### Correcciones
|
|
144
|
-
**Fe de erratas en README.md**: Se corrigió la mención incorrecta de GitHub por GitLab en la sección de contribuciones, manteniendo la coherencia con el repositorio oficial alojado en GitLab.
|
|
77
|
+
### Fixed
|
|
78
|
+
- Corrección de vulnerabilidades XSS
|
|
79
|
+
- Arreglo de problemas de inyección SQL
|
|
145
80
|
|
|
146
|
-
##
|
|
81
|
+
## [2.3.0] - Fecha anterior
|
|
147
82
|
|
|
148
|
-
###
|
|
83
|
+
### Added
|
|
84
|
+
- Nuevo QueryBuilder integrado
|
|
85
|
+
- Sistema de validación de entradas
|
|
86
|
+
- Implementación de sistema de auditoría
|
|
149
87
|
|
|
150
|
-
|
|
88
|
+
## [2.2.0] - Fecha anterior
|
|
151
89
|
|
|
152
|
-
|
|
90
|
+
### Added
|
|
91
|
+
- Implementación de sistema de CORS
|
|
92
|
+
- Adición de sistema de limitación de peticiones (rate limiting)
|
|
93
|
+
- Incorporación de compresión de respuestas
|
|
153
94
|
|
|
154
|
-
|
|
95
|
+
### Changed
|
|
96
|
+
- Mejora en el sistema de enrutamiento
|
|
97
|
+
- Optimización de rendimiento
|
|
155
98
|
|
|
156
|
-
|
|
99
|
+
## [2.1.0] - Fecha anterior
|
|
157
100
|
|
|
158
|
-
|
|
101
|
+
### Added
|
|
102
|
+
- Nuevo sistema de hooks para extensibilidad
|
|
103
|
+
- Implementación de sistema de plugins
|
|
104
|
+
- Adición de soporte para rutas anidadas
|
|
159
105
|
|
|
160
|
-
|
|
106
|
+
### Fixed
|
|
107
|
+
- Corrección de problemas de seguridad
|
|
108
|
+
- Arreglo de fugas de memoria
|
|
161
109
|
|
|
162
|
-
|
|
110
|
+
## [2.0.0] - Fecha anterior
|
|
163
111
|
|
|
164
|
-
###
|
|
112
|
+
### Added
|
|
113
|
+
- Arquitectura completamente reescrita
|
|
114
|
+
- Nuevo sistema de middleware
|
|
115
|
+
- Implementación de sistema de autenticación
|
|
116
|
+
- Adición de soporte para HTTPS
|
|
165
117
|
|
|
166
|
-
|
|
167
|
-
-
|
|
168
|
-
-
|
|
169
|
-
-
|
|
118
|
+
### Changed
|
|
119
|
+
- Cambios importantes en la API
|
|
120
|
+
- Mejora en el sistema de manejo de errores
|
|
121
|
+
- Actualización de dependencias principales
|
|
170
122
|
|
|
171
|
-
|
|
123
|
+
## [1.x.x] - Versiones anteriores
|
|
172
124
|
|
|
173
|
-
-
|
|
174
|
-
-
|
|
175
|
-
-
|
|
176
|
-
-
|
|
177
|
-
- **Corrección crítica del middleware de compresión**: Se resolvió el error "ERR_HTTP_HEADERS_SENT" que ocurría cuando el middleware intentaba modificar encabezados después de que ya habían sido enviados al cliente. Se añadió verificación de `res.headersSent` antes de manipular encabezados.
|
|
178
|
-
-
|
|
125
|
+
- Versiones iniciales del framework
|
|
126
|
+
- Implementación básica de servidor HTTP
|
|
127
|
+
- Sistema inicial de enrutamiento
|
|
128
|
+
- Soporte para middleware
|