jerkjs 2.5.8 → 2.6.1

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.
Files changed (36) hide show
  1. package/CHANGELOG.md +162 -99
  2. package/README.md +113 -190
  3. package/RESULTADOS_WAF.md +63 -0
  4. package/doc-2.5/MANUAL_MODULOS_ADMIN.md +287 -0
  5. package/doc-2.5/QUEUE_CLI_MODULE_MANUAL.md +289 -0
  6. package/doc-2.5/QUEUE_SYSTEM_MANUAL.md +320 -0
  7. package/doc-2.5/ROUTE_CACHE_MODULE_MANUAL.md +205 -0
  8. package/doc-2.5/WAF_MODULE_MANUAL.md +229 -0
  9. package/index.js +12 -3
  10. package/jerk-admin-client/README.md +69 -0
  11. package/jerk-admin-client/package.json +23 -0
  12. package/jerk-admin-client.js +257 -0
  13. package/lib/admin/AdminExtension.js +74 -19
  14. package/lib/admin/modules/ControllerGeneratorModule.js +414 -0
  15. package/lib/admin/modules/QueueManagementModule.js +265 -0
  16. package/lib/admin/modules/RouteCacheModule.js +227 -0
  17. package/lib/admin/modules/RouteManagerModule.js +468 -0
  18. package/lib/admin/modules/STATS_MODULE_README.md +15 -0
  19. package/lib/admin/modules/ViewCacheStatsModule.js +92 -0
  20. package/lib/admin/modules/WAFModule.js +737 -0
  21. package/lib/core/server.js +72 -69
  22. package/lib/middleware/firewall.js +112 -17
  23. package/lib/mvc/viewEngine.js +69 -10
  24. package/lib/queue/GlobalQueueStorage.js +38 -0
  25. package/lib/queue/QueueSystem.js +451 -0
  26. package/lib/queue/admin_example.js +114 -0
  27. package/lib/queue/example.js +268 -0
  28. package/lib/queue/integration.js +109 -0
  29. package/lib/utils/globalViewCacheInfo.js +16 -0
  30. package/lib/utils/globalWAFStats.js +54 -0
  31. package/package.json +2 -2
  32. package/test-colors.js +46 -0
  33. package/test-help-alias.js +31 -0
  34. package/ESTADISTICAS_RENDIMIENTO.md +0 -106
  35. package/debug_hook.js +0 -11
  36. package/docs/CACHE_SYSTEM_MAP.md +0 -206
package/CHANGELOG.md CHANGED
@@ -1,153 +1,216 @@
1
1
  # Changelog
2
2
 
3
+ Todos los cambios relevantes de este framework se documentan en este archivo.
4
+ El versionado sigue SemVer (MAJOR.MINOR.PATCH).
5
+
6
+ ---
7
+
8
+ ## [2.6.1] - 2026-02-12
9
+
10
+ ### Added (CLI / Performance)
11
+ - Cache de rutas integrado al sistema de administración.
12
+ - Comandos: `route-cache`, `cache-stats`, `cache-view`, `cache-dynamic`, `cache-static`, `cache-clear`.
13
+ - Estadísticas de cache (hits/misses).
14
+ - Inspección de rutas dinámicas con visualización de expresiones regulares.
15
+ - Inspección de rutas estáticas exactas.
16
+ - Limpieza selectiva del cache.
17
+ - Salida coloreada en CLI.
18
+ - Alias `?` para `help`.
19
+
20
+ ### Changed (Performance)
21
+ - Optimización del archivo lib/core/server.js para evitar inclusiones innecesarias de módulos en memoria
22
+ - Eliminación de llamadas repetidas a getHooks() sustituidas por this.hooks directamente
23
+ - Implementación de función getErrorHandler() para evitar inclusiones repetidas de ErrorHandler
24
+ - Mejora del rendimiento al evitar operaciones de require() repetidas en tiempo de ejecución
25
+ - Uso más eficiente de la instancia de hooks en lugar de la función getHooks() en varios métodos
26
+
27
+ ---
28
+
29
+ ## [2.6.0] - 2026-02-11
30
+
31
+ ### Added (Queues / Infraestructura)
32
+ - Sistema de colas con múltiples colas concurrentes.
33
+ - Priorización de tareas.
34
+ - Hooks personalizados por cola.
35
+ - Reintentos y fallback configurables.
36
+ - Almacenamiento global compartido.
37
+
38
+ ### Added (CLI)
39
+ - Comandos: `queues`, `queue-info`, `queue-pause`, `queue-resume`, `queue-clear`, `queue-retry-failed`.
40
+ - Monitorización en tiempo real del estado de las colas.
41
+ - Pausa y reanudación individual.
42
+ - Limpieza y reintento de tareas fallidas.
43
+
44
+ ---
45
+
3
46
  ## [2.5.8] - 2026-02-09
4
47
 
5
- ### Added
6
- - Extensión de administración con servidor TCP para monitoreo y gestión del framework
7
- - Módulo de rutas para ver rutas registradas y activas en tiempo de ejecución
8
- - Integración de hooks y filters para extensibilidad de la extensión de administración
9
- - Puerto de administración solo accesible desde localhost para seguridad
10
- - Sistema de módulos extensible para futuras funcionalidades de administración
11
- - Módulo de tiempo (TimeModule) con comandos 'time' y 'date' que muestran hora y fecha en color azul
12
- - Módulo de sistema (SystemModule) con comandos 'sysinfo', 'system' y 'resources' que muestran información del sistema en tabla formateada con color verde
13
- - Módulo de estadísticas (StatsModule) con comandos 'stats', 'statistics', 'requests' y 'endpoints' que muestran métricas del servidor en tiempo real:
14
- - Cantidad de requests procesados mostrando kilobytes
15
- - Cantidad de responses enviadas mostrando kilobytes
16
- - Accesos a las rutas registradas (input y output)
17
- - Endpoints y rutas más accedidas
18
- - Sistema de almacenamiento global de estadísticas para acceso directo y confiable sin depender de hooks
19
- - Sistema de carga de módulos personalizados como submódulos de la extensión de administración
20
- - Soporte para integrar módulos externos sin modificar el core de la extensión de administración
21
- - Hook 'admin_extensions_initialize' para inicializar la extensión de administración después de que el servidor esté completamente iniciado y todas las rutas hayan sido cargadas
22
- - Implementación automática de la extensión de administración usando hooks en lugar de inicialización manual
48
+ ### Added (Admin / Observabilidad)
49
+ - Extensión de administración con servidor TCP (solo localhost).
50
+ - Arquitectura modular extensible.
51
+ - Carga de módulos externos sin modificar el core.
52
+ - Hook `admin_extensions_initialize`.
53
+
54
+ ### Added (Módulos)
55
+ - **TimeModule**: `time`, `date`.
56
+ - **SystemModule**: `sysinfo`, `system`, `resources`.
57
+ - **StatsModule**: métricas de requests/responses/endpoints.
58
+ - **ViewCacheStatsModule**: estadísticas del cache de vistas.
59
+ - **ControllerGeneratorModule**: `generate-controller`, `gen-ctrl`, `new-ctrl`.
60
+ - **RouteManagerModule**: `manage-routes`, `route-manager`, `route-mgmt`.
61
+
62
+ ### Added (DX)
63
+ - Generación interactiva de controladores.
64
+ - Gestión interactiva de rutas.
65
+ - Colores en CLI.
66
+
67
+ ### Added (Performance)
68
+ - Registro global de estadísticas sin depender de hooks.
69
+ - Registro de dependencias entre vistas.
70
+
71
+ ---
23
72
 
24
73
  ## [2.5.7] - 2026-02-08
25
74
 
26
- ### Added
27
- - Implementación de filtros para personalizar las flags de seguridad de las cookies de sesión
28
- - 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
29
- - Soporte para añadir flags de seguridad como `Secure` y `SameSite` a través del sistema de filtros
30
- - Documentación sobre cómo añadir soporte para flags adicionales como `Partitioned`
31
- - Optimización del sistema de enrutamiento con índices por número de segmentos y primer segmento para mejorar el rendimiento de búsqueda de rutas
32
- - Implementación de buckets de rutas basados en aridad (número de segmentos) y prefix hints para reducir el espacio de búsqueda
75
+ ### Added (Security)
76
+ - Filtros `session_cookie_flags` y `session_cookie_destroy_flags`.
77
+ - Soporte para flags `Secure`, `SameSite` y extensiones futuras (ej. `Partitioned`).
33
78
 
34
- ### Changed
35
- - El sistema de sesiones ahora permite la personalización de flags de seguridad mediante filtros
36
- - Mejorada la seguridad predeterminada de las cookies de sesión
37
- - Optimizaciones de rendimiento en el servidor para reducir operaciones redundantes
38
- - Carga anticipada de módulos comunes para evitar cargas repetidas en cada solicitud
39
- - Mejora en el manejo de rutas estáticas para reducir operaciones de normalización repetidas
40
- - Implementación de caché para el método render en la respuesta para evitar redefiniciones innecesarias
79
+ ### Added (Performance)
80
+ - Índices de rutas por número de segmentos y prefijo.
81
+ - Buckets por aridad para reducir espacio de búsqueda.
41
82
 
42
- ## [2.5.6] - 2026-02-08
83
+ ### Changed
84
+ - Seguridad por defecto reforzada en cookies de sesión.
85
+ - Carga anticipada de módulos comunes.
86
+ - Optimización de rutas estáticas.
87
+ - Cache del método `render`.
43
88
 
44
- ## [2.5.5] - 2026-02-08
89
+ ---
45
90
 
46
91
  ## [2.5.4] - 2026-02-08
47
92
 
48
- ### Fixed
49
- - 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
50
- - Solucionado error en el sistema de enrutamiento donde rutas estáticas menos específicas tenían prioridad sobre rutas más específicas
51
- - Arreglado problema con la resolución de rutas absolutas en el manejador de archivos estáticos
52
- - Corregido manejo de caracteres especiales (como guiones '-') en rutas parametrizadas
93
+ ### Fixed (Routing)
94
+ - Resolución incorrecta de rutas estáticas con distinta especificidad.
95
+ - Prioridad incorrecta de rutas menos específicas.
96
+ - Manejo de rutas absolutas en archivos estáticos.
97
+ - Caracteres especiales en rutas parametrizadas.
53
98
 
54
99
  ### Changed
55
- - 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
56
- - Actualizado el sistema de resolución de rutas para usar `path.resolve` en lugar de `path.join` para mejor precisión
57
- - Agregada información de depuración en mensajes de error para facilitar la identificación de problemas de rutas
100
+ - Selección de rutas estáticas por prefijo más largo.
101
+ - Uso de `path.resolve` en lugar de `path.join`.
102
+ - Mensajes de depuración mejorados.
103
+
104
+ ---
58
105
 
59
- ## [2.5.3] - Fecha anterior
106
+ ## [2.5.3]
60
107
 
61
108
  ### Added
62
- - Añadida integración completa con qbuilderjs
63
- - Implementada arquitectura MVC completa con modelos
64
- - Añadido sistema mejorado de carga de rutas desde directorios
65
- - Incorporado sistema mejorado de carga de modelos
109
+ - Integración completa con qbuilderjs.
110
+ - Arquitectura MVC con modelos.
111
+ - Carga automática de rutas y modelos.
66
112
 
67
- ## [2.5.2] - Fecha anterior
113
+ ---
68
114
 
69
- ### Added
70
- - Implementación de sistema de autenticación JWT
71
- - Adición de middleware de autenticación
72
- - Incorporación de sistema de roles y capacidades
115
+ ## [2.5.2]
116
+
117
+ ### Added (Security)
118
+ - Autenticación JWT.
119
+ - Middleware de autenticación.
120
+ - Sistema de roles y capacidades.
73
121
 
74
- ## [2.5.1] - Fecha anterior
122
+ ---
123
+
124
+ ## [2.5.1]
75
125
 
76
126
  ### Fixed
77
- - Corrección de fugas de memoria en el sistema de colas
78
- - Arreglo de problemas de concurrencia en operaciones de base de datos
127
+ - Fugas de memoria en el sistema de colas.
128
+ - Problemas de concurrencia en base de datos.
79
129
 
80
130
  ### Changed
81
- - Mejora en el sistema de logging
82
- - Optimización de consultas a base de datos
131
+ - Logging optimizado.
132
+ - Consultas SQL optimizadas.
133
+
134
+ ---
83
135
 
84
- ## [2.5.0] - Fecha anterior
136
+ ## [2.5.0]
85
137
 
86
138
  ### Added
87
- - Nuevo sistema de modelos con soporte para MariaDB y SQLite
88
- - Implementación de adaptadores para diferentes bases de datos
89
- - Añadido sistema de migraciones de base de datos
139
+ - Nuevo sistema de modelos con soporte MariaDB y SQLite.
140
+ - Adaptadores de base de datos.
141
+ - Migraciones.
90
142
 
91
143
  ### Changed
92
- - Refactorización del sistema de vistas
93
- - Actualización de dependencias
144
+ - Refactorización del sistema de vistas.
145
+ - Actualización de dependencias.
94
146
 
95
- ## [2.4.0] - Fecha anterior
147
+ ---
96
148
 
97
- ### Added
98
- - Implementación de sistema de sesiones
99
- - Adición de middleware de seguridad
100
- - Incorporación de sistema de firewall WAF
149
+ ## [2.4.0]
150
+
151
+ ### Added (Security)
152
+ - Sistema de sesiones.
153
+ - Middleware de seguridad.
154
+ - WAF integrado.
101
155
 
102
156
  ### Fixed
103
- - Corrección de vulnerabilidades XSS
104
- - Arreglo de problemas de inyección SQL
157
+ - Vulnerabilidades XSS.
158
+ - Inyección SQL.
105
159
 
106
- ## [2.3.0] - Fecha anterior
160
+ ---
161
+
162
+ ## [2.3.0]
107
163
 
108
164
  ### Added
109
- - Nuevo QueryBuilder integrado
110
- - Sistema de validación de entradas
111
- - Implementación de sistema de auditoría
165
+ - QueryBuilder integrado.
166
+ - Validación de entradas.
167
+ - Sistema de auditoría.
168
+
169
+ ---
112
170
 
113
- ## [2.2.0] - Fecha anterior
171
+ ## [2.2.0]
114
172
 
115
173
  ### Added
116
- - Implementación de sistema de CORS
117
- - Adición de sistema de limitación de peticiones (rate limiting)
118
- - Incorporación de compresión de respuestas
174
+ - CORS.
175
+ - Rate limiting.
176
+ - Compresión de respuestas.
119
177
 
120
178
  ### Changed
121
- - Mejora en el sistema de enrutamiento
122
- - Optimización de rendimiento
179
+ - Optimización del enrutamiento.
123
180
 
124
- ## [2.1.0] - Fecha anterior
181
+ ---
182
+
183
+ ## [2.1.0]
125
184
 
126
185
  ### Added
127
- - Nuevo sistema de hooks para extensibilidad
128
- - Implementación de sistema de plugins
129
- - Adición de soporte para rutas anidadas
186
+ - Sistema de hooks.
187
+ - Sistema de plugins.
188
+ - Rutas anidadas.
130
189
 
131
190
  ### Fixed
132
- - Corrección de problemas de seguridad
133
- - Arreglo de fugas de memoria
191
+ - Problemas de seguridad.
192
+ - Fugas de memoria.
193
+
194
+ ---
134
195
 
135
- ## [2.0.0] - Fecha anterior
196
+ ## [2.0.0]
136
197
 
137
198
  ### Added
138
- - Arquitectura completamente reescrita
139
- - Nuevo sistema de middleware
140
- - Implementación de sistema de autenticación
141
- - Adición de soporte para HTTPS
199
+ - Reescritura completa de la arquitectura.
200
+ - Nuevo sistema de middleware.
201
+ - Autenticación integrada.
202
+ - Soporte HTTPS.
142
203
 
143
204
  ### Changed
144
- - Cambios importantes en la API
145
- - Mejora en el sistema de manejo de errores
146
- - Actualización de dependencias principales
205
+ - Cambios importantes en la API.
206
+ - Manejo de errores mejorado.
207
+ - Dependencias actualizadas.
208
+
209
+ ---
147
210
 
148
- ## [1.x.x] - Versiones anteriores
211
+ ## [1.x.x]
149
212
 
150
- - Versiones iniciales del framework
151
- - Implementación básica de servidor HTTP
152
- - Sistema inicial de enrutamiento
153
- - Soporte para middleware
213
+ - Versiones iniciales del framework.
214
+ - Servidor HTTP básico.
215
+ - Sistema inicial de enrutamiento.
216
+ - Middleware básico.
package/README.md CHANGED
@@ -1,232 +1,155 @@
1
- ![JERK Framework](jerk2.5.webp)
2
- ##### JERK Framework v2.5.8
1
+ # 🚀 JavascriptEnvironmentRealKit Framework
3
2
 
4
- **JERK Framework** es un framework de desarrollo web completo para Node.js que implementa una arquitectura MVC (Modelo-Vista-Controlador) con soporte para APIs REST, seguridad avanzada, y sistemas de plantillas.
3
+ Un framework backend **rápido, modular y extensible**, diseñado para construir APIs y servicios HTTP de alto rendimiento con enfoque en **rendimiento real, control total y cero dependencias innecesarias**.
5
4
 
6
- ## 🚀 ¡Novedad! Optimización de Rendimiento del Sistema de Enrutamiento
5
+ Pensado para desarrolladores que prefieren **infraestructura directa, predecible y eficiente**, no capas de abstracción pesadas.
7
6
 
8
- **JERK Framework v2.5.7** incluye una optimización del sistema de enrutamiento que mejora drásticamente el rendimiento:
7
+ ---
9
8
 
10
- - **Organización por aridad**: Rutas organizadas por número de segmentos para descartar rápidamente candidatos inválidos
11
- - **Índices por primer segmento**: "Prefix hints" para filtrar rápidamente rutas candidatas
12
- - **Reducción del espacio de búsqueda**: Disminución drástica del número de expresiones regulares evaluadas
13
- - **Resultados impresionantes**: Aumento del rendimiento de 380 a 529+ RPS (39% de mejora) en pruebas con 15,000 solicitudes concurrentes
9
+ ## Principios
14
10
 
15
- Esta optimización permite al framework alcanzar más de 500 solicitudes por segundo en hardware modesto, como un procesador Celeron, gracias a la implementación de buckets de rutas basados en la profundidad de la ruta (número de segmentos) y el primer segmento.
11
+ - Performance first rutas indexadas, cachés y estructuras O(1)
12
+ - Arquitectura modular — hooks, filtros y módulos desacoplados
13
+ - Observabilidad integrada — administración en tiempo real
14
+ - Seguridad por defecto
15
+ - Sin magia oculta — comportamiento explícito y depurable
16
16
 
17
- ## 🔧 Extensión de Administración
17
+ ---
18
18
 
19
- JERK Framework v2.5.7 incluye una extensión de administración que proporciona:
19
+ ## Características principales
20
20
 
21
- - **Servidor TCP de administración**: Accesible solo desde localhost para mayor seguridad
22
- - **Monitoreo en tiempo real**: Visualización de rutas registradas y activas
23
- - **Sistema de módulos**: Arquitectura extensible para futuras funcionalidades de administración
24
- - **Integración con hooks**: Sistema de extensibilidad basado en el sistema de hooks del framework
25
- - **Puerto configurable**: Por defecto en el puerto 9999
26
- - **Módulo de estadísticas**: Visualización de métricas del servidor en tiempo real
21
+ ### 🧭 Enrutamiento de alto rendimiento
22
+ - Índices por segmentos y prefijos
23
+ - Buckets por aridad
24
+ - Rutas estáticas y dinámicas (regex)
25
+ - Cache de rutas con estadísticas de hits/misses
27
26
 
28
- ### Módulo de Estadísticas
27
+ ### 🧩 Sistema modular
28
+ - Hooks y filtros
29
+ - Plugins externos sin modificar el core
30
+ - Carga dinámica de módulos
29
31
 
30
- El módulo de estadísticas (disponible desde v2.5.8) proporciona métricas detalladas del servidor:
32
+ ### 🛠 Consola de administración integrada
33
+ Servidor TCP local para inspección en tiempo real:
31
34
 
32
- - **Cantidad de requests procesados**: Con visualización de kilobytes transferidos
33
- - **Cantidad de responses enviadas**: Con visualización de kilobytes transferidos
34
- - **Accesos a rutas**: Registro de accesos a rutas registradas (input/output)
35
- - **Endpoints y rutas más accedidas**: Visualización de los endpoints y rutas más utilizados
35
+ - rutas activas
36
+ - estadísticas del servidor
37
+ - estado del sistema
38
+ - colas
39
+ - cachés
40
+ - generación de controladores
36
41
 
37
- ### Comandos disponibles en la extensión de administración:
42
+ ### 📬 Sistema de colas
43
+ - Múltiples colas concurrentes
44
+ - Prioridades
45
+ - Reintentos automáticos
46
+ - Fallbacks
47
+ - Pausa / reanudación
48
+ - Limpieza y reintentos manuales
38
49
 
39
- - `stats` o `statistics`: Muestra estadísticas generales del servidor
40
- - `requests`: Muestra estadísticas específicas de solicitudes
41
- - `endpoints`: Muestra estadísticas de endpoints y rutas más accedidas
42
- - `routes`: Muestra rutas registradas y activas
43
- - `time` y `date`: Muestra hora y fecha actual
44
- - `sysinfo`, `system`, `resources`: Muestra información del sistema
50
+ ### 📊 Observabilidad
51
+ - Métricas de requests/responses
52
+ - Endpoints más utilizados
53
+ - Estadísticas de caché de vistas
54
+ - Estado de recursos del sistema
55
+ - Monitorización en tiempo real
45
56
 
46
- ### Uso de la extensión de administración:
57
+ ### 🔐 Seguridad
58
+ - Autenticación JWT
59
+ - Roles y capacidades
60
+ - Middleware de seguridad
61
+ - WAF básico
62
+ - Cookies con flags configurables (`Secure`, `SameSite`, etc.)
63
+ - Protección XSS / SQL Injection
47
64
 
48
- ```javascript
49
- const { APIServer } = require('jerkjs');
65
+ ### 🗄 Base de datos
66
+ - Sistema de modelos
67
+ - QueryBuilder integrado
68
+ - Soporte MariaDB y SQLite
69
+ - Migraciones
50
70
 
51
- const server = new APIServer({ port: 3000 });
71
+ ### 🎨 Developer Experience
72
+ - Generador interactivo de controladores
73
+ - Gestor de rutas
74
+ - CLI coloreada
75
+ - Configuración mínima
52
76
 
53
- // Iniciar la extensión de administración
54
- server.initializeAdminExtension({
55
- port: 9999,
56
- host: '127.0.0.1' // Solo localhost
57
- });
77
+ ---
58
78
 
59
- server.start();
60
- ```
79
+ ## 🧠 Uso
61
80
 
62
- Una vez iniciado, puedes conectarte al servidor de administración usando telnet o nc:
63
- ```bash
64
- telnet localhost 9999
65
- ```
81
+ El framework **no impone comandos mágicos ni wrappers propietarios**.
66
82
 
67
- ## Características Principales
68
-
69
- ### 🚀 Rendimiento Optimizado
70
- - Servidor HTTP/HTTPS de alto rendimiento
71
- - Optimizaciones de rendimiento en el manejo de solicitudes
72
- - Carga anticipada de módulos comunes para evitar operaciones redundantes
73
- - Manejo eficiente de rutas estáticas y dinámicas
74
-
75
- ### 🔐 Seguridad Avanzada
76
- - Sistema de sesiones con cookies seguras personalizables
77
- - Filtros para personalizar flags de seguridad de cookies (`Secure`, `SameSite`, etc.)
78
- - Web Application Firewall (WAF) con detección de patrones de ataque
79
- - Sistema de autenticación con múltiples estrategias (JWT, API Keys, Basic Auth, OAuth2, OpenID Connect)
80
- - Protección contra SQL Injection, XSS y otros ataques comunes
81
-
82
- ### 🏗️ Arquitectura Modular
83
- - Componentes independientes para mayor flexibilidad
84
- - Sistema de hooks y filtros similar al de WordPress
85
- - Soporte para middlewares personalizados
86
- - Arquitectura MVC completa con modelos, vistas y controladores
87
-
88
- ### 📊 Soporte para Bases de Datos
89
- - Adaptadores para diferentes motores de base de datos (Memory, MariaDB/MySQL, SQLite)
90
- - Integración con QueryBuilder externo (qbuilderjs) para construir consultas SQL seguras
91
- - Sistema de modelos con operaciones CRUD completas
92
-
93
- ### 🎨 Motores de Plantillas
94
- - Motor de plantillas con soporte para variables, condiciones, bucles e inclusiones
95
- - Filtros y helpers personalizables
96
- - Soporte para layouts y vistas dinámicas
97
-
98
- ## Instalación
99
-
100
- ```bash
101
- npm install jerkjs
102
- ```
83
+ Se integra directamente en tu binario/servidor, y la administración se realiza a través de:
103
84
 
104
- ## Uso Básico
85
+ - consola TCP local de administración
86
+ - módulos CLI
87
+ - hooks y extensiones
105
88
 
106
- ```javascript
107
- const { APIServer, RouteDirectoryLoader, ViewEngine, ModelManager, MemoryAdapter } = require('jerkjs');
89
+ Consulta la documentación del proyecto para ejemplos específicos de inicialización según tu aplicación.
108
90
 
109
- // Crear instancia del servidor
110
- const server = new APIServer({
111
- port: 3000,
112
- host: 'localhost'
113
- });
91
+ ---
114
92
 
115
- // Configurar motor de vistas
116
- const viewEngine = new ViewEngine({
117
- viewsDir: './views',
118
- defaultLayout: 'layout.html'
119
- });
93
+ ## 🧱 Arquitectura
120
94
 
121
- // Configurar sistema de modelos
122
- const modelManager = new ModelManager();
123
- const memoryAdapter = new MemoryAdapter();
124
- modelManager.registerAdapter('memory', memoryAdapter);
95
+ ```
96
+ Request
97
+
98
+ Router (indexado)
99
+
100
+ Middleware / Hooks
101
+
102
+ Controller
103
+
104
+ View / JSON / Stream
105
+ ```
125
106
 
126
- // Asociar componentes al servidor
127
- server.viewEngine = viewEngine;
128
- server.modelManager = modelManager;
107
+ Componentes desacoplados extensibles → reemplazables.
129
108
 
130
- // Cargar rutas desde directorio
131
- const routeDirectoryLoader = new RouteDirectoryLoader();
132
- routeDirectoryLoader.loadRoutesFromDirectory(server, './routes');
109
+ ---
133
110
 
134
- // Iniciar el servidor
135
- server.start();
136
- ```
111
+ ## 🔌 Extensibilidad
137
112
 
138
- ## Seguridad de Sesiones
139
-
140
- JERK Framework incluye un sistema de sesiones con soporte para personalización de flags de seguridad a través de filtros:
141
-
142
- ```javascript
143
- const { hooks } = require('jerkjs');
144
-
145
- // Personalizar flags de cookies de sesión
146
- hooks.addFilter('session_cookie_flags', (defaultFlags, req, res, sessionId) => {
147
- // Detectar si la solicitud es HTTPS
148
- const isHttps = (req && req.connection && req.connection.encrypted) ||
149
- (req && req.headers && req.headers['x-forwarded-proto'] === 'https');
150
-
151
- let flags = defaultFlags;
152
-
153
- // Agregar la flag Secure si es HTTPS
154
- if (isHttps) {
155
- flags += '; Secure';
156
- }
157
-
158
- // Agregar SameSite según el contexto
159
- flags += '; SameSite=Lax';
160
-
161
- return flags;
162
- });
163
- ```
113
+ Puedes extender sin modificar el core:
164
114
 
165
- ## Componentes Principales
166
-
167
- ### Servidor (APIServer)
168
- - Servidor HTTP/HTTPS básico con soporte para rutas parametrizadas
169
- - Manejo de archivos estáticos con soporte para índices y control de caché
170
- - Sistema de hooks para extensibilidad
171
- - Soporte para middlewares y manejo de cuerpos de solicitud con límites de tamaño
172
-
173
- ### Sistema de Enrutamiento
174
- - Router con soporte para rutas anidadas
175
- - RouteMatcher para coincidencia de rutas parametrizadas con cacheo de expresiones regulares
176
- - Soporte para rutas estáticas y dinámicas con prioridad adecuada
177
-
178
- ### Middleware
179
- - CORS, Autenticación, Sesiones, Validación, Rate Limiting
180
- - Compresión (gzip/deflate) con sistema de hooks
181
- - Firewall (WAF) con detección de patrones de ataque
182
- - Audit Logger para eventos de seguridad
183
-
184
- ### Componentes MVC
185
- - ControllerBase con soporte para vistas, layouts y variables
186
- - ModelBase con operaciones CRUD
187
- - ViewEngine con soporte para filtros, helpers, condiciones, bucles e inclusiones
188
- - ModelManager con soporte para múltiples adaptadores
189
-
190
- ## Sistema de Hooks y Filtros
191
-
192
- El framework incluye un sistema completo de hooks y filtros similar al de WordPress:
193
-
194
- ```javascript
195
- // Registrar una acción
196
- hooks.addAction('firewall_request_blocked', (rule, clientIP, req, res) => {
197
- console.log(`Solicitud bloqueada: ${rule.name} para IP: ${clientIP}`);
198
- });
199
-
200
- // Registrar un filtro
201
- hooks.addFilter('session_create_data', (userData, req) => {
202
- return {
203
- ...userData,
204
- ipAddress: req.headers['x-forwarded-for'] || req.connection.remoteAddress,
205
- createdAt: new Date().toISOString()
206
- };
207
- });
208
- ```
115
+ - módulos de administración
116
+ - hooks personalizados
117
+ - filtros de seguridad
118
+ - middlewares
119
+ - plugins externos
120
+
121
+ ---
122
+
123
+ ## 📈 Rendimiento
124
+
125
+ Optimizado para:
126
+
127
+ - menos asignaciones
128
+ - menos normalización de rutas
129
+ - menos búsquedas lineales
130
+ - más indexación y caché
209
131
 
210
- ## Contribuciones
132
+ Resultado: **menor CPU, menor latencia y mayor throughput**.
211
133
 
212
- Las contribuciones son bienvenidas. Por favor, abre un issue o envía un pull request para sugerir cambios o mejoras.
134
+ ---
213
135
 
214
- ## Licencia
136
+ ## 🗂 Versionado
215
137
 
216
- Este proyecto está licenciado bajo la Apache License 2.0 - ver el archivo LICENSE para más detalles.
138
+ Seguimos **Semantic Versioning (SemVer)**.
217
139
 
218
- ## Autor
140
+ Consulta cambios detallados en:
141
+ 👉 `CHANGELOG.md`
219
142
 
220
- JERK Framework Team / Benjamin Sanhez Cardenas
143
+ ---
221
144
 
222
- ## Repositorio
145
+ ## 🤝 Filosofía
223
146
 
224
- GitLab: https://gitlab.com/bytedogssyndicate1/jerk
147
+ > Menos framework. Más control. Más rendimiento.
225
148
 
226
- ## Informe de Rendimiento del Módulo de Estadísticas
149
+ Diseñado para equipos que prefieren entender el sistema completo en lugar de depender de abstracciones innecesarias.
227
150
 
228
- Para ver el informe detallado de pruebas y rendimiento del módulo de estadísticas, consulte: [ESTADISTICAS_RENDIMIENTO.md](ESTADISTICAS_RENDIMIENTO.md)
151
+ ---
229
152
 
230
- ## Soporte
153
+ ## 📄 Licencia
231
154
 
232
- Para soporte, por favor abre un issue en el repositorio o visita nuestra página web: https://jerk.page.gd/
155
+ APACHE 2.0