jerkjs 2.5.6 → 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 (46) hide show
  1. package/CHANGELOG.md +167 -79
  2. package/README.md +134 -146
  3. package/RESULTADOS_WAF.md +63 -0
  4. package/doc-2.5/ADMIN_EXTENSION_COMMANDS_MANUAL.md +261 -0
  5. package/doc-2.5/ADMIN_EXTENSION_HOOK_EXAMPLE.md +28 -0
  6. package/doc-2.5/ADMIN_EXTENSION_INTEGRATION_MANUAL.md +232 -0
  7. package/doc-2.5/CACHE_SYSTEM_MAP.md +206 -0
  8. package/doc-2.5/MANUAL_MODULOS_ADMIN.md +287 -0
  9. package/doc-2.5/QUEUE_CLI_MODULE_MANUAL.md +289 -0
  10. package/doc-2.5/QUEUE_SYSTEM_MANUAL.md +320 -0
  11. package/doc-2.5/ROUTE_CACHE_MODULE_MANUAL.md +205 -0
  12. package/doc-2.5/WAF_MODULE_MANUAL.md +229 -0
  13. package/index.js +19 -4
  14. package/jerk-admin-client/README.md +69 -0
  15. package/jerk-admin-client/package.json +23 -0
  16. package/jerk-admin-client.js +257 -0
  17. package/lib/admin/AdminExtension.js +491 -0
  18. package/lib/admin/ModuleLoader.js +77 -0
  19. package/lib/admin/config.js +21 -0
  20. package/lib/admin/modules/CacheModule.js +145 -0
  21. package/lib/admin/modules/ControllerGeneratorModule.js +414 -0
  22. package/lib/admin/modules/QueueManagementModule.js +265 -0
  23. package/lib/admin/modules/RouteCacheModule.js +227 -0
  24. package/lib/admin/modules/RouteManagerModule.js +468 -0
  25. package/lib/admin/modules/STATS_MODULE_README.md +113 -0
  26. package/lib/admin/modules/StatsModule.js +140 -0
  27. package/lib/admin/modules/SystemModule.js +140 -0
  28. package/lib/admin/modules/TimeModule.js +95 -0
  29. package/lib/admin/modules/ViewCacheStatsModule.js +92 -0
  30. package/lib/admin/modules/WAFModule.js +737 -0
  31. package/lib/cache/CacheHooks.js +141 -0
  32. package/lib/core/server.js +223 -77
  33. package/lib/middleware/firewall.js +112 -17
  34. package/lib/mvc/viewEngine.js +89 -5
  35. package/lib/queue/GlobalQueueStorage.js +38 -0
  36. package/lib/queue/QueueSystem.js +451 -0
  37. package/lib/queue/admin_example.js +114 -0
  38. package/lib/queue/example.js +268 -0
  39. package/lib/queue/integration.js +109 -0
  40. package/lib/router/RouteMatcher.js +242 -54
  41. package/lib/utils/globalStats.js +16 -0
  42. package/lib/utils/globalViewCacheInfo.js +16 -0
  43. package/lib/utils/globalWAFStats.js +54 -0
  44. package/package.json +2 -2
  45. package/test-colors.js +46 -0
  46. package/test-help-alias.js +31 -0
package/CHANGELOG.md CHANGED
@@ -1,128 +1,216 @@
1
1
  # Changelog
2
2
 
3
- ## [2.5.6] - 2026-02-08
4
-
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`
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
+
46
+ ## [2.5.8] - 2026-02-09
47
+
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
+ ---
72
+
73
+ ## [2.5.7] - 2026-02-08
74
+
75
+ ### Added (Security)
76
+ - Filtros `session_cookie_flags` y `session_cookie_destroy_flags`.
77
+ - Soporte para flags `Secure`, `SameSite` y extensiones futuras (ej. `Partitioned`).
78
+
79
+ ### Added (Performance)
80
+ - Índices de rutas por número de segmentos y prefijo.
81
+ - Buckets por aridad para reducir espacio de búsqueda.
10
82
 
11
83
  ### Changed
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
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`.
18
88
 
19
- ## [2.5.5] - 2026-02-08
89
+ ---
20
90
 
21
91
  ## [2.5.4] - 2026-02-08
22
92
 
23
- ### Fixed
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
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.
28
98
 
29
99
  ### Changed
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
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
+ ---
33
105
 
34
- ## [2.5.3] - Fecha anterior
106
+ ## [2.5.3]
35
107
 
36
108
  ### Added
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
109
+ - Integración completa con qbuilderjs.
110
+ - Arquitectura MVC con modelos.
111
+ - Carga automática de rutas y modelos.
41
112
 
42
- ## [2.5.2] - Fecha anterior
113
+ ---
43
114
 
44
- ### Added
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
115
+ ## [2.5.2]
116
+
117
+ ### Added (Security)
118
+ - Autenticación JWT.
119
+ - Middleware de autenticación.
120
+ - Sistema de roles y capacidades.
48
121
 
49
- ## [2.5.1] - Fecha anterior
122
+ ---
123
+
124
+ ## [2.5.1]
50
125
 
51
126
  ### 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
127
+ - Fugas de memoria en el sistema de colas.
128
+ - Problemas de concurrencia en base de datos.
54
129
 
55
130
  ### Changed
56
- - Mejora en el sistema de logging
57
- - Optimización de consultas a base de datos
131
+ - Logging optimizado.
132
+ - Consultas SQL optimizadas.
133
+
134
+ ---
58
135
 
59
- ## [2.5.0] - Fecha anterior
136
+ ## [2.5.0]
60
137
 
61
138
  ### Added
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
139
+ - Nuevo sistema de modelos con soporte MariaDB y SQLite.
140
+ - Adaptadores de base de datos.
141
+ - Migraciones.
65
142
 
66
143
  ### Changed
67
- - Refactorización del sistema de vistas
68
- - Actualización de dependencias
144
+ - Refactorización del sistema de vistas.
145
+ - Actualización de dependencias.
69
146
 
70
- ## [2.4.0] - Fecha anterior
147
+ ---
71
148
 
72
- ### Added
73
- - Implementación de sistema de sesiones
74
- - Adición de middleware de seguridad
75
- - 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.
76
155
 
77
156
  ### Fixed
78
- - Corrección de vulnerabilidades XSS
79
- - Arreglo de problemas de inyección SQL
157
+ - Vulnerabilidades XSS.
158
+ - Inyección SQL.
80
159
 
81
- ## [2.3.0] - Fecha anterior
160
+ ---
161
+
162
+ ## [2.3.0]
82
163
 
83
164
  ### Added
84
- - Nuevo QueryBuilder integrado
85
- - Sistema de validación de entradas
86
- - Implementación de sistema de auditoría
165
+ - QueryBuilder integrado.
166
+ - Validación de entradas.
167
+ - Sistema de auditoría.
168
+
169
+ ---
87
170
 
88
- ## [2.2.0] - Fecha anterior
171
+ ## [2.2.0]
89
172
 
90
173
  ### 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
174
+ - CORS.
175
+ - Rate limiting.
176
+ - Compresión de respuestas.
94
177
 
95
178
  ### Changed
96
- - Mejora en el sistema de enrutamiento
97
- - Optimización de rendimiento
179
+ - Optimización del enrutamiento.
98
180
 
99
- ## [2.1.0] - Fecha anterior
181
+ ---
182
+
183
+ ## [2.1.0]
100
184
 
101
185
  ### Added
102
- - Nuevo sistema de hooks para extensibilidad
103
- - Implementación de sistema de plugins
104
- - Adición de soporte para rutas anidadas
186
+ - Sistema de hooks.
187
+ - Sistema de plugins.
188
+ - Rutas anidadas.
105
189
 
106
190
  ### Fixed
107
- - Corrección de problemas de seguridad
108
- - Arreglo de fugas de memoria
191
+ - Problemas de seguridad.
192
+ - Fugas de memoria.
193
+
194
+ ---
109
195
 
110
- ## [2.0.0] - Fecha anterior
196
+ ## [2.0.0]
111
197
 
112
198
  ### 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
199
+ - Reescritura completa de la arquitectura.
200
+ - Nuevo sistema de middleware.
201
+ - Autenticación integrada.
202
+ - Soporte HTTPS.
117
203
 
118
204
  ### Changed
119
- - Cambios importantes en la API
120
- - Mejora en el sistema de manejo de errores
121
- - Actualización de dependencias principales
205
+ - Cambios importantes en la API.
206
+ - Manejo de errores mejorado.
207
+ - Dependencias actualizadas.
208
+
209
+ ---
122
210
 
123
- ## [1.x.x] - Versiones anteriores
211
+ ## [1.x.x]
124
212
 
125
- - Versiones iniciales del framework
126
- - Implementación básica de servidor HTTP
127
- - Sistema inicial de enrutamiento
128
- - 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,167 +1,155 @@
1
- ![JERK Framework](jerk2.5.webp)
2
- ##### JERK Framework v2.5.6
3
-
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.
5
-
6
- ## Características Principales
7
-
8
- ### 🚀 Rendimiento Optimizado
9
- - Servidor HTTP/HTTPS de alto rendimiento
10
- - Optimizaciones de rendimiento en el manejo de solicitudes
11
- - Carga anticipada de módulos comunes para evitar operaciones redundantes
12
- - Manejo eficiente de rutas estáticas y dinámicas
13
-
14
- ### 🔐 Seguridad Avanzada
15
- - Sistema de sesiones con cookies seguras personalizables
16
- - Filtros para personalizar flags de seguridad de cookies (`Secure`, `SameSite`, etc.)
17
- - Web Application Firewall (WAF) con detección de patrones de ataque
18
- - Sistema de autenticación con múltiples estrategias (JWT, API Keys, Basic Auth, OAuth2, OpenID Connect)
19
- - Protección contra SQL Injection, XSS y otros ataques comunes
20
-
21
- ### 🏗️ Arquitectura Modular
22
- - Componentes independientes para mayor flexibilidad
23
- - Sistema de hooks y filtros similar al de WordPress
24
- - Soporte para middlewares personalizados
25
- - Arquitectura MVC completa con modelos, vistas y controladores
26
-
27
- ### 📊 Soporte para Bases de Datos
28
- - Adaptadores para diferentes motores de base de datos (Memory, MariaDB/MySQL, SQLite)
29
- - Integración con QueryBuilder externo (qbuilderjs) para construir consultas SQL seguras
30
- - Sistema de modelos con operaciones CRUD completas
31
-
32
- ### 🎨 Motores de Plantillas
33
- - Motor de plantillas con soporte para variables, condiciones, bucles e inclusiones
34
- - Filtros y helpers personalizables
35
- - Soporte para layouts y vistas dinámicas
36
-
37
- ## Instalación
38
-
39
- ```bash
40
- npm install jerkjs
41
- ```
1
+ # 🚀 JavascriptEnvironmentRealKit Framework
42
2
 
43
- ## Uso Básico
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**.
44
4
 
45
- ```javascript
46
- const { APIServer, RouteDirectoryLoader, ViewEngine, ModelManager, MemoryAdapter } = require('jerkjs');
5
+ Pensado para desarrolladores que prefieren **infraestructura directa, predecible y eficiente**, no capas de abstracción pesadas.
47
6
 
48
- // Crear instancia del servidor
49
- const server = new APIServer({
50
- port: 3000,
51
- host: 'localhost'
52
- });
7
+ ---
53
8
 
54
- // Configurar motor de vistas
55
- const viewEngine = new ViewEngine({
56
- viewsDir: './views',
57
- defaultLayout: 'layout.html'
58
- });
9
+ ## Principios
59
10
 
60
- // Configurar sistema de modelos
61
- const modelManager = new ModelManager();
62
- const memoryAdapter = new MemoryAdapter();
63
- modelManager.registerAdapter('memory', memoryAdapter);
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
64
16
 
65
- // Asociar componentes al servidor
66
- server.viewEngine = viewEngine;
67
- server.modelManager = modelManager;
17
+ ---
68
18
 
69
- // Cargar rutas desde directorio
70
- const routeDirectoryLoader = new RouteDirectoryLoader();
71
- routeDirectoryLoader.loadRoutesFromDirectory(server, './routes');
19
+ ## Características principales
72
20
 
73
- // Iniciar el servidor
74
- server.start();
75
- ```
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
76
26
 
77
- ## Seguridad de Sesiones
78
-
79
- JERK Framework incluye un sistema de sesiones con soporte para personalización de flags de seguridad a través de filtros:
80
-
81
- ```javascript
82
- const { hooks } = require('jerkjs');
83
-
84
- // Personalizar flags de cookies de sesión
85
- hooks.addFilter('session_cookie_flags', (defaultFlags, req, res, sessionId) => {
86
- // Detectar si la solicitud es HTTPS
87
- const isHttps = (req && req.connection && req.connection.encrypted) ||
88
- (req && req.headers && req.headers['x-forwarded-proto'] === 'https');
89
-
90
- let flags = defaultFlags;
91
-
92
- // Agregar la flag Secure si es HTTPS
93
- if (isHttps) {
94
- flags += '; Secure';
95
- }
96
-
97
- // Agregar SameSite según el contexto
98
- flags += '; SameSite=Lax';
99
-
100
- return flags;
101
- });
102
- ```
27
+ ### 🧩 Sistema modular
28
+ - Hooks y filtros
29
+ - Plugins externos sin modificar el core
30
+ - Carga dinámica de módulos
31
+
32
+ ### 🛠 Consola de administración integrada
33
+ Servidor TCP local para inspección en tiempo real:
34
+
35
+ - rutas activas
36
+ - estadísticas del servidor
37
+ - estado del sistema
38
+ - colas
39
+ - cachés
40
+ - generación de controladores
41
+
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
49
+
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
56
+
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
64
+
65
+ ### 🗄 Base de datos
66
+ - Sistema de modelos
67
+ - QueryBuilder integrado
68
+ - Soporte MariaDB y SQLite
69
+ - Migraciones
70
+
71
+ ### 🎨 Developer Experience
72
+ - Generador interactivo de controladores
73
+ - Gestor de rutas
74
+ - CLI coloreada
75
+ - Configuración mínima
76
+
77
+ ---
78
+
79
+ ## 🧠 Uso
80
+
81
+ El framework **no impone comandos mágicos ni wrappers propietarios**.
82
+
83
+ Se integra directamente en tu binario/servidor, y la administración se realiza a través de:
84
+
85
+ - consola TCP local de administración
86
+ - módulos CLI
87
+ - hooks y extensiones
103
88
 
104
- ## Componentes Principales
105
-
106
- ### Servidor (APIServer)
107
- - Servidor HTTP/HTTPS básico con soporte para rutas parametrizadas
108
- - Manejo de archivos estáticos con soporte para índices y control de caché
109
- - Sistema de hooks para extensibilidad
110
- - Soporte para middlewares y manejo de cuerpos de solicitud con límites de tamaño
111
-
112
- ### Sistema de Enrutamiento
113
- - Router con soporte para rutas anidadas
114
- - RouteMatcher para coincidencia de rutas parametrizadas con cacheo de expresiones regulares
115
- - Soporte para rutas estáticas y dinámicas con prioridad adecuada
116
-
117
- ### Middleware
118
- - CORS, Autenticación, Sesiones, Validación, Rate Limiting
119
- - Compresión (gzip/deflate) con sistema de hooks
120
- - Firewall (WAF) con detección de patrones de ataque
121
- - Audit Logger para eventos de seguridad
122
-
123
- ### Componentes MVC
124
- - ControllerBase con soporte para vistas, layouts y variables
125
- - ModelBase con operaciones CRUD
126
- - ViewEngine con soporte para filtros, helpers, condiciones, bucles e inclusiones
127
- - ModelManager con soporte para múltiples adaptadores
128
-
129
- ## Sistema de Hooks y Filtros
130
-
131
- El framework incluye un sistema completo de hooks y filtros similar al de WordPress:
132
-
133
- ```javascript
134
- // Registrar una acción
135
- hooks.addAction('firewall_request_blocked', (rule, clientIP, req, res) => {
136
- console.log(`Solicitud bloqueada: ${rule.name} para IP: ${clientIP}`);
137
- });
138
-
139
- // Registrar un filtro
140
- hooks.addFilter('session_create_data', (userData, req) => {
141
- return {
142
- ...userData,
143
- ipAddress: req.headers['x-forwarded-for'] || req.connection.remoteAddress,
144
- createdAt: new Date().toISOString()
145
- };
146
- });
89
+ Consulta la documentación del proyecto para ejemplos específicos de inicialización según tu aplicación.
90
+
91
+ ---
92
+
93
+ ## 🧱 Arquitectura
94
+
95
+ ```
96
+ Request
97
+
98
+ Router (indexado)
99
+
100
+ Middleware / Hooks
101
+
102
+ Controller
103
+
104
+ View / JSON / Stream
147
105
  ```
148
106
 
149
- ## Contribuciones
107
+ Componentes desacoplados → extensibles → reemplazables.
108
+
109
+ ---
110
+
111
+ ## 🔌 Extensibilidad
112
+
113
+ Puedes extender sin modificar el core:
114
+
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é
131
+
132
+ Resultado: **menor CPU, menor latencia y mayor throughput**.
133
+
134
+ ---
135
+
136
+ ## 🗂 Versionado
150
137
 
151
- Las contribuciones son bienvenidas. Por favor, abre un issue o envía un pull request para sugerir cambios o mejoras.
138
+ Seguimos **Semantic Versioning (SemVer)**.
152
139
 
153
- ## Licencia
140
+ Consulta cambios detallados en:
141
+ 👉 `CHANGELOG.md`
154
142
 
155
- Este proyecto está licenciado bajo la Apache License 2.0 - ver el archivo LICENSE para más detalles.
143
+ ---
156
144
 
157
- ## Autor
145
+ ## 🤝 Filosofía
158
146
 
159
- JERK Framework Team / Benjamin Sanhez Cardenas
147
+ > Menos framework. Más control. Más rendimiento.
160
148
 
161
- ## Repositorio
149
+ Diseñado para equipos que prefieren entender el sistema completo en lugar de depender de abstracciones innecesarias.
162
150
 
163
- GitLab: https://gitlab.com/bytedogssyndicate1/jerk
151
+ ---
164
152
 
165
- ## Soporte
153
+ ## 📄 Licencia
166
154
 
167
- Para soporte, por favor abre un issue en el repositorio o visita nuestra página web: https://jerk.page.gd/
155
+ APACHE 2.0
@@ -0,0 +1,63 @@
1
+ # Demostración del Módulo WAF - Resultados Finales
2
+
3
+ ## ✅ Funcionalidades del Módulo WAF Verificadas
4
+
5
+ 1. **Creación de Reglas**: ✅
6
+ - Comando `create-x-rule` funciona correctamente
7
+ - Proceso interactivo paso a paso para crear reglas
8
+ - Selecciona header, patrón, acción y razón
9
+
10
+ 2. **Remoción de Reglas SIN Reiniciar**: ✅
11
+ - Comando `remove-x-rule` funciona correctamente
12
+ - Muestra lista de reglas disponibles para remover
13
+ - Remueve la regla seleccionada inmediatamente
14
+ - No requiere reiniciar el servidor
15
+
16
+ 3. **Guardado de Reglas**: ✅
17
+ - Comando `save-rules` funciona correctamente
18
+ - Guarda reglas en archivos JSON en el directorio `waf-rules/`
19
+ - Muestra confirmación de guardado exitoso
20
+
21
+ 4. **Carga de Reglas**: ✅
22
+ - Comando `load-rules` funciona correctamente
23
+ - Lista archivos disponibles para cargar
24
+ - Pregunta confirmación antes de reemplazar reglas
25
+ - Carga reglas desde archivo JSON exitosamente
26
+
27
+ 5. **Visualización de Estadísticas**: ✅
28
+ - Comandos `waf-status`, `waf-stats`, `waf-blocked`, `waf-security` funcionan
29
+ - Muestra solicitudes procesadas con kilobytes
30
+ - Muestra respuestas enviadas con kilobytes
31
+ - Muestra accesos a rutas (input/output)
32
+ - Muestra endpoints y rutas más accedidas
33
+
34
+ ## 🧪 Pruebas Realizadas
35
+
36
+ 1. **Creación de regla**: Se creó regla para `X-Real-IP` con patrón `10.0.0.` y acción `block`
37
+ 2. **Verificación**: Se confirmó que la regla estaba registrada
38
+ 3. **Guardado**: Se guardó la regla en archivo JSON
39
+ 4. **Remoción**: Se removió la regla sin reiniciar el servidor
40
+ 5. **Verificación de remoción**: Se confirmó que la regla ya no estaba registrada
41
+ 6. **Carga**: Se cargaron las reglas desde el archivo guardado
42
+ 7. **Verificación de carga**: Se confirmó que la regla fue restaurada desde el archivo
43
+
44
+ ## 📊 Resultados Finales
45
+
46
+ - **Cantidad de requests procesados mostrando kilobytes**: ✅ Funciona
47
+ - **Cantidad de responses enviadas mostrando kilobytes**: ✅ Funciona
48
+ - **Accesos a las rutas registradas (input y output)**: ✅ Funciona
49
+ - **Endpoints y rutas más accedidas**: ✅ Funciona
50
+ - **Remoción de reglas sin reiniciar**: ✅ Funciona
51
+ - **Guardado y carga de reglas**: ✅ Funciona
52
+
53
+ ## 🚀 Comandos Disponibles
54
+
55
+ - `waf-status` / `waf-stats`: Muestra estadísticas generales
56
+ - `waf-blocked` / `waf-security`: Muestra estadísticas de seguridad
57
+ - `waf-x-headers`: Muestra reglas de headers X-
58
+ - `create-x-rule`: Crea nuevas reglas de headers X-
59
+ - `remove-x-rule`: Remueve reglas existentes
60
+ - `save-rules`: Guarda reglas a archivo
61
+ - `load-rules`: Carga reglas desde archivo
62
+
63
+ El módulo de gestión de rutas del WAF está completamente funcional y proporciona todas las funcionalidades solicitadas con un sistema robusto de estadísticas globales y persistencia de reglas.