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.
- package/CHANGELOG.md +162 -99
- package/README.md +113 -190
- package/RESULTADOS_WAF.md +63 -0
- package/doc-2.5/MANUAL_MODULOS_ADMIN.md +287 -0
- package/doc-2.5/QUEUE_CLI_MODULE_MANUAL.md +289 -0
- package/doc-2.5/QUEUE_SYSTEM_MANUAL.md +320 -0
- package/doc-2.5/ROUTE_CACHE_MODULE_MANUAL.md +205 -0
- package/doc-2.5/WAF_MODULE_MANUAL.md +229 -0
- package/index.js +12 -3
- package/jerk-admin-client/README.md +69 -0
- package/jerk-admin-client/package.json +23 -0
- package/jerk-admin-client.js +257 -0
- package/lib/admin/AdminExtension.js +74 -19
- package/lib/admin/modules/ControllerGeneratorModule.js +414 -0
- package/lib/admin/modules/QueueManagementModule.js +265 -0
- package/lib/admin/modules/RouteCacheModule.js +227 -0
- package/lib/admin/modules/RouteManagerModule.js +468 -0
- package/lib/admin/modules/STATS_MODULE_README.md +15 -0
- package/lib/admin/modules/ViewCacheStatsModule.js +92 -0
- package/lib/admin/modules/WAFModule.js +737 -0
- package/lib/core/server.js +72 -69
- package/lib/middleware/firewall.js +112 -17
- package/lib/mvc/viewEngine.js +69 -10
- package/lib/queue/GlobalQueueStorage.js +38 -0
- package/lib/queue/QueueSystem.js +451 -0
- package/lib/queue/admin_example.js +114 -0
- package/lib/queue/example.js +268 -0
- package/lib/queue/integration.js +109 -0
- package/lib/utils/globalViewCacheInfo.js +16 -0
- package/lib/utils/globalWAFStats.js +54 -0
- package/package.json +2 -2
- package/test-colors.js +46 -0
- package/test-help-alias.js +31 -0
- package/ESTADISTICAS_RENDIMIENTO.md +0 -106
- package/debug_hook.js +0 -11
- 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
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
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
|
-
-
|
|
28
|
-
-
|
|
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
|
-
###
|
|
35
|
-
-
|
|
36
|
-
-
|
|
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
|
-
|
|
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
|
-
|
|
89
|
+
---
|
|
45
90
|
|
|
46
91
|
## [2.5.4] - 2026-02-08
|
|
47
92
|
|
|
48
|
-
### Fixed
|
|
49
|
-
-
|
|
50
|
-
-
|
|
51
|
-
-
|
|
52
|
-
-
|
|
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
|
-
-
|
|
56
|
-
-
|
|
57
|
-
-
|
|
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]
|
|
106
|
+
## [2.5.3]
|
|
60
107
|
|
|
61
108
|
### Added
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
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
|
-
|
|
113
|
+
---
|
|
68
114
|
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
-
|
|
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
|
-
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## [2.5.1]
|
|
75
125
|
|
|
76
126
|
### Fixed
|
|
77
|
-
-
|
|
78
|
-
-
|
|
127
|
+
- Fugas de memoria en el sistema de colas.
|
|
128
|
+
- Problemas de concurrencia en base de datos.
|
|
79
129
|
|
|
80
130
|
### Changed
|
|
81
|
-
-
|
|
82
|
-
-
|
|
131
|
+
- Logging optimizado.
|
|
132
|
+
- Consultas SQL optimizadas.
|
|
133
|
+
|
|
134
|
+
---
|
|
83
135
|
|
|
84
|
-
## [2.5.0]
|
|
136
|
+
## [2.5.0]
|
|
85
137
|
|
|
86
138
|
### Added
|
|
87
|
-
- Nuevo sistema de modelos con soporte
|
|
88
|
-
-
|
|
89
|
-
-
|
|
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
|
-
|
|
147
|
+
---
|
|
96
148
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
-
|
|
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
|
-
-
|
|
104
|
-
-
|
|
157
|
+
- Vulnerabilidades XSS.
|
|
158
|
+
- Inyección SQL.
|
|
105
159
|
|
|
106
|
-
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## [2.3.0]
|
|
107
163
|
|
|
108
164
|
### Added
|
|
109
|
-
-
|
|
110
|
-
-
|
|
111
|
-
-
|
|
165
|
+
- QueryBuilder integrado.
|
|
166
|
+
- Validación de entradas.
|
|
167
|
+
- Sistema de auditoría.
|
|
168
|
+
|
|
169
|
+
---
|
|
112
170
|
|
|
113
|
-
## [2.2.0]
|
|
171
|
+
## [2.2.0]
|
|
114
172
|
|
|
115
173
|
### Added
|
|
116
|
-
-
|
|
117
|
-
-
|
|
118
|
-
-
|
|
174
|
+
- CORS.
|
|
175
|
+
- Rate limiting.
|
|
176
|
+
- Compresión de respuestas.
|
|
119
177
|
|
|
120
178
|
### Changed
|
|
121
|
-
-
|
|
122
|
-
- Optimización de rendimiento
|
|
179
|
+
- Optimización del enrutamiento.
|
|
123
180
|
|
|
124
|
-
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## [2.1.0]
|
|
125
184
|
|
|
126
185
|
### Added
|
|
127
|
-
-
|
|
128
|
-
-
|
|
129
|
-
-
|
|
186
|
+
- Sistema de hooks.
|
|
187
|
+
- Sistema de plugins.
|
|
188
|
+
- Rutas anidadas.
|
|
130
189
|
|
|
131
190
|
### Fixed
|
|
132
|
-
-
|
|
133
|
-
-
|
|
191
|
+
- Problemas de seguridad.
|
|
192
|
+
- Fugas de memoria.
|
|
193
|
+
|
|
194
|
+
---
|
|
134
195
|
|
|
135
|
-
## [2.0.0]
|
|
196
|
+
## [2.0.0]
|
|
136
197
|
|
|
137
198
|
### Added
|
|
138
|
-
-
|
|
139
|
-
- Nuevo sistema de middleware
|
|
140
|
-
-
|
|
141
|
-
-
|
|
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
|
-
-
|
|
146
|
-
-
|
|
205
|
+
- Cambios importantes en la API.
|
|
206
|
+
- Manejo de errores mejorado.
|
|
207
|
+
- Dependencias actualizadas.
|
|
208
|
+
|
|
209
|
+
---
|
|
147
210
|
|
|
148
|
-
## [1.x.x]
|
|
211
|
+
## [1.x.x]
|
|
149
212
|
|
|
150
|
-
- Versiones iniciales del framework
|
|
151
|
-
-
|
|
152
|
-
- Sistema inicial de enrutamiento
|
|
153
|
-
-
|
|
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
|
-
|
|
2
|
-
##### JERK Framework v2.5.8
|
|
1
|
+
# 🚀 JavascriptEnvironmentRealKit Framework
|
|
3
2
|
|
|
4
|
-
|
|
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
|
-
|
|
5
|
+
Pensado para desarrolladores que prefieren **infraestructura directa, predecible y eficiente**, no capas de abstracción pesadas.
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
---
|
|
9
8
|
|
|
10
|
-
|
|
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
|
-
|
|
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
|
-
|
|
17
|
+
---
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
## ✨ Características principales
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
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
|
-
###
|
|
27
|
+
### 🧩 Sistema modular
|
|
28
|
+
- Hooks y filtros
|
|
29
|
+
- Plugins externos sin modificar el core
|
|
30
|
+
- Carga dinámica de módulos
|
|
29
31
|
|
|
30
|
-
|
|
32
|
+
### 🛠 Consola de administración integrada
|
|
33
|
+
Servidor TCP local para inspección en tiempo real:
|
|
31
34
|
|
|
32
|
-
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
-
|
|
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
|
-
###
|
|
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
|
-
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
43
|
-
-
|
|
44
|
-
-
|
|
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
|
-
###
|
|
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
|
-
|
|
49
|
-
|
|
65
|
+
### 🗄 Base de datos
|
|
66
|
+
- Sistema de modelos
|
|
67
|
+
- QueryBuilder integrado
|
|
68
|
+
- Soporte MariaDB y SQLite
|
|
69
|
+
- Migraciones
|
|
50
70
|
|
|
51
|
-
|
|
71
|
+
### 🎨 Developer Experience
|
|
72
|
+
- Generador interactivo de controladores
|
|
73
|
+
- Gestor de rutas
|
|
74
|
+
- CLI coloreada
|
|
75
|
+
- Configuración mínima
|
|
52
76
|
|
|
53
|
-
|
|
54
|
-
server.initializeAdminExtension({
|
|
55
|
-
port: 9999,
|
|
56
|
-
host: '127.0.0.1' // Solo localhost
|
|
57
|
-
});
|
|
77
|
+
---
|
|
58
78
|
|
|
59
|
-
|
|
60
|
-
```
|
|
79
|
+
## 🧠 Uso
|
|
61
80
|
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
telnet localhost 9999
|
|
65
|
-
```
|
|
81
|
+
El framework **no impone comandos mágicos ni wrappers propietarios**.
|
|
66
82
|
|
|
67
|
-
|
|
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
|
-
|
|
85
|
+
- consola TCP local de administración
|
|
86
|
+
- módulos CLI
|
|
87
|
+
- hooks y extensiones
|
|
105
88
|
|
|
106
|
-
|
|
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
|
-
|
|
110
|
-
const server = new APIServer({
|
|
111
|
-
port: 3000,
|
|
112
|
-
host: 'localhost'
|
|
113
|
-
});
|
|
91
|
+
---
|
|
114
92
|
|
|
115
|
-
|
|
116
|
-
const viewEngine = new ViewEngine({
|
|
117
|
-
viewsDir: './views',
|
|
118
|
-
defaultLayout: 'layout.html'
|
|
119
|
-
});
|
|
93
|
+
## 🧱 Arquitectura
|
|
120
94
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
95
|
+
```
|
|
96
|
+
Request
|
|
97
|
+
↓
|
|
98
|
+
Router (indexado)
|
|
99
|
+
↓
|
|
100
|
+
Middleware / Hooks
|
|
101
|
+
↓
|
|
102
|
+
Controller
|
|
103
|
+
↓
|
|
104
|
+
View / JSON / Stream
|
|
105
|
+
```
|
|
125
106
|
|
|
126
|
-
|
|
127
|
-
server.viewEngine = viewEngine;
|
|
128
|
-
server.modelManager = modelManager;
|
|
107
|
+
Componentes desacoplados → extensibles → reemplazables.
|
|
129
108
|
|
|
130
|
-
|
|
131
|
-
const routeDirectoryLoader = new RouteDirectoryLoader();
|
|
132
|
-
routeDirectoryLoader.loadRoutesFromDirectory(server, './routes');
|
|
109
|
+
---
|
|
133
110
|
|
|
134
|
-
|
|
135
|
-
server.start();
|
|
136
|
-
```
|
|
111
|
+
## 🔌 Extensibilidad
|
|
137
112
|
|
|
138
|
-
|
|
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
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
-
|
|
169
|
-
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
-
|
|
180
|
-
-
|
|
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
|
-
|
|
132
|
+
Resultado: **menor CPU, menor latencia y mayor throughput**.
|
|
211
133
|
|
|
212
|
-
|
|
134
|
+
---
|
|
213
135
|
|
|
214
|
-
##
|
|
136
|
+
## 🗂 Versionado
|
|
215
137
|
|
|
216
|
-
|
|
138
|
+
Seguimos **Semantic Versioning (SemVer)**.
|
|
217
139
|
|
|
218
|
-
|
|
140
|
+
Consulta cambios detallados en:
|
|
141
|
+
👉 `CHANGELOG.md`
|
|
219
142
|
|
|
220
|
-
|
|
143
|
+
---
|
|
221
144
|
|
|
222
|
-
##
|
|
145
|
+
## 🤝 Filosofía
|
|
223
146
|
|
|
224
|
-
|
|
147
|
+
> Menos framework. Más control. Más rendimiento.
|
|
225
148
|
|
|
226
|
-
|
|
149
|
+
Diseñado para equipos que prefieren entender el sistema completo en lugar de depender de abstracciones innecesarias.
|
|
227
150
|
|
|
228
|
-
|
|
151
|
+
---
|
|
229
152
|
|
|
230
|
-
##
|
|
153
|
+
## 📄 Licencia
|
|
231
154
|
|
|
232
|
-
|
|
155
|
+
APACHE 2.0
|