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
@@ -0,0 +1,205 @@
1
+ # Manual del Módulo de Cache de Rutas para JERK Framework
2
+
3
+ ## Tabla de Contenidos
4
+ 1. [Introducción](#introducción)
5
+ 2. [Comandos Disponibles](#comandos-disponibles)
6
+ 3. [Uso Básico](#uso-básico)
7
+ 4. [Uso Avanzado](#uso-avanzado)
8
+ 5. [Ejemplos de Uso](#ejemplos-de-uso)
9
+
10
+ ## Introducción
11
+
12
+ El módulo de Cache de Rutas es una extensión del sistema de administración CLI de JERK Framework que permite monitorear y gestionar el cache de rutas del sistema. Proporciona comandos para ver el estado del cache, visualizar su contenido, y limpiarlo cuando sea necesario.
13
+
14
+ ## Comandos Disponibles
15
+
16
+ ### Comandos Generales de Cache de Rutas
17
+ - `route-cache` o `cache-stats`: Muestra estadísticas del cache de rutas
18
+ - `cache-view`: Muestra el contenido completo del cache de rutas
19
+ - `cache-dynamic`: Muestra solo el cache de rutas dinámicas (parametrizadas)
20
+ - `cache-static`: Muestra solo el cache de rutas estáticas (exactas)
21
+ - `cache-clear`: Limpia todo el cache de rutas
22
+
23
+ ## Uso Básico
24
+
25
+ ### Conectar al Sistema de Administración
26
+
27
+ Para acceder al módulo de cache de rutas, primero debes conectarte al sistema de administración:
28
+
29
+ ```bash
30
+ telnet localhost 9999
31
+ ```
32
+
33
+ O alternativamente:
34
+
35
+ ```bash
36
+ nc localhost 9999
37
+ ```
38
+
39
+ ### Ver estadísticas del cache de rutas
40
+
41
+ Comando: `route-cache` o `cache-stats`
42
+
43
+ Este comando muestra estadísticas generales del cache de rutas:
44
+
45
+ ```
46
+ > route-cache
47
+
48
+ === Estadísticas del Cache de Rutas ===
49
+ Rutas dinámicas (parametrizadas) en cache: 5
50
+ Rutas estáticas exactas en cache: 10
51
+ Tamaño total de índices: 15
52
+ Índices válidos: Sí
53
+
54
+ >
55
+ ```
56
+
57
+ ### Ver contenido del cache de rutas
58
+
59
+ Comando: `cache-view`
60
+
61
+ Este comando muestra el contenido completo del cache de rutas:
62
+
63
+ ```
64
+ > cache-view
65
+
66
+ === Contenido del Cache de Rutas ===
67
+
68
+ --- Rutas Dinámicas (Parametrizadas) en Cache ---
69
+ 1. /users/:id -> /^\/users\/([^\/]+?)$/
70
+ 2. /posts/:slug -> /^\/posts\/([^\/]+?)$/
71
+
72
+ --- Rutas Estáticas Exactas en Cache ---
73
+ 1. GET /api/users -> anonymous
74
+ 2. POST /api/users -> anonymous
75
+
76
+ >
77
+ ```
78
+
79
+ ## Uso Avanzado
80
+
81
+ ### Ver solo cache de rutas dinámicas
82
+
83
+ Comando: `cache-dynamic`
84
+
85
+ Muestra únicamente las rutas dinámicas (parametrizadas) en el cache:
86
+
87
+ ```
88
+ > cache-dynamic
89
+
90
+ === Cache de Rutas Dinámicas (Parametrizadas) ===
91
+ 1. Ruta: /users/:id
92
+ Regex: /^\/users\/([^\/]+?)$/
93
+
94
+ 2. Ruta: /posts/:slug
95
+ Regex: /^\/posts\/([^\/]+?)$/
96
+
97
+ Total: 2 rutas dinámicas en cache.
98
+
99
+ >
100
+ ```
101
+
102
+ ### Ver solo cache de rutas estáticas
103
+
104
+ Comando: `cache-static`
105
+
106
+ Muestra únicamente las rutas estáticas (exactas) en el cache:
107
+
108
+ ```
109
+ > cache-static
110
+
111
+ === Cache de Rutas Estáticas (Exactas) ===
112
+ 1. GET /api/users
113
+ Handler: anonymous
114
+ Static: true
115
+
116
+ 2. POST /api/users
117
+ Handler: anonymous
118
+ Static: true
119
+
120
+ Total: 2 rutas estáticas en cache.
121
+
122
+ >
123
+ ```
124
+
125
+ ### Limpiar el cache de rutas
126
+
127
+ Comando: `cache-clear`
128
+
129
+ Elimina todas las entradas del cache de rutas:
130
+
131
+ ```
132
+ > cache-clear
133
+
134
+ === Limpieza del Cache de Rutas ===
135
+ Rutas dinámicas eliminadas: 5
136
+ Rutas estáticas eliminadas: 10
137
+ Cache de rutas limpiado exitosamente.
138
+
139
+ >
140
+ ```
141
+
142
+ ## Ejemplos de Uso
143
+
144
+ ### Ejemplo 1: Diagnóstico de rendimiento
145
+
146
+ Para diagnosticar problemas de rendimiento relacionados con el cache de rutas:
147
+
148
+ ```
149
+ > route-cache
150
+ Rutas dinámicas (parametrizadas) en cache: 50
151
+ Rutas estáticas exactas en cache: 100
152
+ Tamaño total de índices: 150
153
+ Índices válidos: Sí
154
+
155
+ > cache-dynamic
156
+ [Detalles de las 50 rutas dinámicas en cache]
157
+ >
158
+ ```
159
+
160
+ ### Ejemplo 2: Verificación de rutas parametrizadas
161
+
162
+ Para verificar específicamente las rutas parametrizadas en el cache:
163
+
164
+ ```
165
+ > cache-dynamic
166
+ === Cache de Rutas Dinámicas (Parametrizadas) ===
167
+ 1. Ruta: /users/:id
168
+ Regex: /^\/users\/([^\/]+?)$/
169
+
170
+ 2. Ruta: /products/:category/:id
171
+ Regex: /^\/products\/([^\/]+?)\/([^\/]+?)$/
172
+
173
+ Total: 2 rutas dinámicas en cache.
174
+
175
+ >
176
+ ```
177
+
178
+ ## Solución de Problemas
179
+
180
+ ### Problema: Comando no reconocido
181
+
182
+ **Síntoma**: El sistema responde con "Comando desconocido para el módulo de cache de rutas"
183
+
184
+ **Solución**: Verifica que estás usando uno de los comandos válidos: `route-cache`, `cache-stats`, `cache-view`, `cache-dynamic`, `cache-static`, `cache-clear`
185
+
186
+ ### Problema: No se encuentra el componente RouteMatcher
187
+
188
+ **Síntoma**: El sistema responde con "No se encontró el componente RouteMatcher"
189
+
190
+ **Solución**: Asegúrate de que el servidor esté completamente iniciado y que el componente RouteMatcher haya sido correctamente instanciado.
191
+
192
+ ## Compatibilidad
193
+
194
+ - **Versión mínima del framework**: JERK 2.5.8
195
+ - **Puerto de administración**: Por defecto 9999 (configurable)
196
+ - **Acceso**: Solo desde localhost por razones de seguridad
197
+ - **Protocolo**: Conexión TCP con interfaz de línea de comandos
198
+
199
+ ## Autor
200
+
201
+ JERK Framework Team
202
+
203
+ ## Versión
204
+
205
+ v2.6.0
@@ -0,0 +1,229 @@
1
+ # Manual del Módulo WAF (Web Application Firewall) para JERK Framework
2
+
3
+ ## Tabla de Contenidos
4
+ 1. [Introducción](#introducción)
5
+ 2. [Características del WAF](#características-del-waf)
6
+ 3. [Comandos Disponibles](#comandos-disponibles)
7
+ 4. [Estadísticas del Servidor](#estadísticas-del-servidor)
8
+ 5. [Gestión de Reglas X-Headers](#gestión-de-reglas-x-headers)
9
+ 6. [Listas de IPs](#listas-de-ips)
10
+ 7. [Persistencia de Reglas](#persistencia-de-reglas)
11
+ 8. [Ejemplos de Uso](#ejemplos-de-uso)
12
+
13
+ ## Introducción
14
+
15
+ El módulo WAF (Web Application Firewall) es una extensión de la extensión de administración de JERK Framework que permite monitorear, gestionar y proteger tu aplicación web. Proporciona estadísticas en tiempo real, gestión de reglas de seguridad y control de acceso basado en headers X-.
16
+
17
+ ## Características del WAF
18
+
19
+ - **Estadísticas en tiempo real**: Conteo de solicitudes procesadas y respuestas enviadas con medición en kilobytes
20
+ - **Monitoreo de tráfico**: Registro de accesos a rutas y endpoints
21
+ - **Sistema de reglas X-Headers**: Bloqueo basado en headers como X-Forwarded-For, X-Real-IP, etc.
22
+ - **Listas de IPs**: Sistema de whitelist (nunca bloqueadas) y blacklist (siempre bloqueadas)
23
+ - **Persistencia**: Guardado y carga de reglas de seguridad
24
+ - **Interfaz interactiva**: Sistema de comandos para gestión en tiempo real
25
+
26
+ ## Comandos Disponibles
27
+
28
+ ### Comandos Generales de Estadísticas
29
+ - `waf-status` o `waf-stats`: Muestra estadísticas generales del servidor
30
+ - `waf-blocked` o `waf-security`: Muestra estadísticas de seguridad
31
+ - `waf-x-headers`: Muestra reglas de headers X- configuradas
32
+
33
+ ### Comandos de Gestión de Reglas
34
+ - `create-x-rule`: Crea una nueva regla de seguridad basada en headers X-
35
+ - `remove-x-rule`: Remueve una regla de seguridad existente
36
+ - `save-rules`: Guarda todas las reglas a un archivo
37
+ - `load-rules`: Carga reglas desde un archivo
38
+
39
+ ### Comandos de Gestión de IPs
40
+ - `waf-block-ip`: Bloquea temporalmente una IP
41
+ - `waf-unblock-ip`: Desbloquea una IP temporalmente bloqueada
42
+ - `waf-whitelist`: Agrega una IP a la lista blanca
43
+ - `waf-blacklist`: Agrega una IP a la lista negra
44
+
45
+ ## Estadísticas del Servidor
46
+
47
+ ### waf-status / waf-stats
48
+ Muestra las estadísticas generales del servidor:
49
+
50
+ ```
51
+ === Estadísticas del WAF ===
52
+ Solicitudes procesadas: 15
53
+ Solicitudes procesadas (KB): 2.45 KB
54
+ Respuestas enviadas: 15
55
+ Respuestas enviadas (KB): 15.67 KB
56
+ IPs en lista blanca: 2
57
+ IPs en lista negra: 1
58
+ Reglas de seguridad activas: 3
59
+ ```
60
+
61
+ ### Campos de Estadísticas
62
+ - **Solicitudes procesadas**: Número total de solicitudes HTTP procesadas
63
+ - **Solicitudes procesadas (KB)**: Cantidad total de datos recibidos en kilobytes
64
+ - **Respuestas enviadas**: Número total de respuestas HTTP enviadas
65
+ - **Respuestas enviadas (KB)**: Cantidad total de datos enviados en kilobytes
66
+ - **IPs en lista blanca**: Número de IPs que nunca serán bloqueadas
67
+ - **IPs en lista negra**: Número de IPs que siempre serán bloqueadas
68
+ - **Reglas de seguridad activas**: Número de reglas de seguridad activas
69
+
70
+ ## Gestión de Reglas X-Headers
71
+
72
+ ### Crear Regla (`create-x-rule`)
73
+ Proceso interactivo para crear reglas de seguridad basadas en headers X-:
74
+
75
+ 1. **Nombre del header**: Introduce el nombre del header X- (ej: X-Forwarded-For, X-Real-IP)
76
+ 2. **Patrón**: Introduce el patrón para coincidir (cadena o expresión regular)
77
+ 3. **Acción**: Selecciona la acción a tomar:
78
+ - `1` o `block`: Bloquear solicitudes que coincidan
79
+ - `2` o `log`: Registrar solicitudes que coincidan
80
+ - `3` o `monitor`: Monitorear solicitudes que coincidan
81
+ 4. **Razón**: Introduce la razón para la regla (opcional)
82
+
83
+ ### Remover Regla (`remove-x-rule`)
84
+ Proceso interactivo para remover reglas existentes:
85
+ 1. Se muestra una lista numerada de reglas disponibles
86
+ 2. Introduce el número de la regla que deseas remover
87
+ 3. La regla se elimina inmediatamente del sistema
88
+
89
+ ## Listas de IPs
90
+
91
+ ### Whitelist (`waf-whitelist`)
92
+ Agrega una IP a la lista blanca (nunca será bloqueada):
93
+
94
+ ```
95
+ > waf-whitelist
96
+ Introduce la IP a agregar a la lista blanca (ej: 192.168.1.100):
97
+ > 192.168.1.100
98
+ IP 192.168.1.100 agregada a la lista blanca.
99
+ ```
100
+
101
+ ### Blacklist (`waf-blacklist`)
102
+ Agrega una IP a la lista negra (siempre será bloqueada):
103
+
104
+ ```
105
+ > waf-blacklist
106
+ Introduce la IP a agregar a la lista negra (ej: 10.0.0.100):
107
+ > 10.0.0.100
108
+ IP 10.0.0.100 agregada a la lista negra.
109
+ ```
110
+
111
+ ### Bloqueo Temporal (`waf-block-ip`)
112
+ Bloquea temporalmente una IP:
113
+
114
+ ```
115
+ > waf-block-ip
116
+ Introduce la IP a bloquear temporalmente (ej: 192.168.1.100):
117
+ > 192.168.1.200
118
+ IP 192.168.1.200 bloqueada temporalmente.
119
+ ```
120
+
121
+ ## Persistencia de Reglas
122
+
123
+ ### Guardar Reglas (`save-rules`)
124
+ Guarda todas las reglas de seguridad actuales a un archivo JSON:
125
+
126
+ ```
127
+ > save-rules
128
+ ✅ Reglas guardadas exitosamente en: /path/to/waf-rules/waf-rules-timestamp.json
129
+ Total de reglas guardadas: 3
130
+ ```
131
+
132
+ ### Cargar Reglas (`load-rules`)
133
+ Carga reglas de seguridad desde un archivo JSON:
134
+
135
+ ```
136
+ > load-rules
137
+ === Archivos de Reglas Disponibles ===
138
+ 1. waf-rules-1770795262452.json
139
+
140
+ Introduce el número del archivo a cargar (o "cancel" para cancelar):
141
+ > 1
142
+
143
+ ¿Deseas reemplazar las reglas actuales? (sí/no):
144
+ > sí
145
+
146
+ ✅ Reglas cargadas exitosamente desde: /path/to/waf-rules/waf-rules-1770795262452.json
147
+ Total de reglas cargadas: 3
148
+ ```
149
+
150
+ ## Ejemplos de Uso
151
+
152
+ ### Ejemplo 1: Crear Regla para Bloquear IPs Internas
153
+ ```
154
+ > create-x-rule
155
+ === Crear Regla de Header X- ===
156
+ Introduce el nombre del header X- (ej: X-Forwarded-For, X-Real-IP):
157
+ > X-Forwarded-For
158
+ Header seleccionado: X-Forwarded-For
159
+ Introduce el patrón para coincidir (cadena o expresión regular):
160
+ > 192.168.
161
+ Selecciona la acción a tomar:
162
+ 1. block - Bloquear solicitudes que coincidan
163
+ 2. log - Registrar solicitudes que coincidan
164
+ 3. monitor - Monitorear solicitudes que coincidan
165
+ Escribe el número o el nombre de la acción:
166
+ > 1
167
+ Acción seleccionada: block
168
+ Introduce la razón para la regla (opcional):
169
+ > Bloquear IPs internas
170
+ ✅ Regla de header X- creada exitosamente:
171
+ ID: xheader_x_forwarded_for_1770792842636
172
+ Header: x-forwarded-for
173
+ Patrón: 192.168.
174
+ Acción: block
175
+ Razón: Bloquear IPs internas
176
+ ```
177
+
178
+ ### Ejemplo 2: Ver Estadísticas de Seguridad
179
+ ```
180
+ > waf-security
181
+ === Estadísticas de Seguridad del WAF ===
182
+ IPs bloqueadas temporalmente: 2
183
+ Intentos de ataque detectados: 5
184
+ Tipos de ataques detectados: 3
185
+ Registros de seguridad: 10
186
+
187
+ Accesos a rutas (Input/Output):
188
+ GET /: 8 accesos
189
+ POST /api/users: 3 accesos
190
+ GET /api/users: 4 accesos
191
+
192
+ Endpoints más accedidos:
193
+ GET /: 8 hits
194
+ GET /api/users: 4 hits
195
+ POST /api/users: 3 hits
196
+ ```
197
+
198
+ ### Ejemplo 3: Agregar IP a Lista Negra
199
+ ```
200
+ > waf-blacklist
201
+ Introduce la IP a agregar a la lista negra (ej: 10.0.0.100):
202
+ > 10.0.0.100
203
+ IP 10.0.0.100 agregada a la lista negra.
204
+ ```
205
+
206
+ ## Consideraciones de Seguridad
207
+
208
+ - El servidor de administración solo escucha en localhost (127.0.0.1) por defecto
209
+ - Todas las operaciones de bloqueo son inmediatas y afectan al sistema en tiempo real
210
+ - Las reglas de seguridad se aplican antes de que la solicitud llegue a los controladores
211
+ - El sistema de persistencia permite mantener reglas entre reinicios del servidor
212
+
213
+ ## Solución de Problemas
214
+
215
+ ### Las estadísticas no se actualizan
216
+ - Verifica que el middleware de firewall esté activo en tu servidor
217
+ - Asegúrate de que las solicitudes estén pasando por el sistema de firewall
218
+
219
+ ### Las reglas no se aplican
220
+ - Verifica que el firewall esté correctamente integrado en tu pipeline de middlewares
221
+ - Confirma que las reglas se hayan creado correctamente usando `waf-x-headers`
222
+
223
+ ## Autor
224
+
225
+ JERK Framework Team
226
+
227
+ ## Versión
228
+
229
+ v2.5.8
package/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Punto de entrada del framework JERK
3
- * JERK Framework 2.5.1
3
+ * JERK Framework 2.5.8
4
4
  */
5
5
 
6
6
  // Mostrar mensaje de versión al iniciar
@@ -48,10 +48,18 @@ const ModelControllerExample = require('./lib/mvc/ModelControllerExample');
48
48
 
49
49
  // Componentes de manejo de errores
50
50
  const { ErrorHandler, ValidationError, AuthenticationError, DatabaseError } = require('./lib/utils/errorHandler');
51
+
52
+ // Componentes de caché
53
+ const CacheHooks = require('./lib/cache/CacheHooks');
54
+
51
55
  // Componentes del QueryBuilder (v2.3.0) - MODIFICADO PARA USAR QBUILDERJS
52
56
  const QueryBuilder = require('qbuilderjs');
53
57
  // No hay middleware ni hooks ya que se eliminó la implementación interna
54
58
 
59
+ // Componentes de sistema de colas (v2.6.0)
60
+ const QueueSystem = require('./lib/queue/QueueSystem');
61
+ const QueueIntegration = require('./lib/queue/integration');
62
+
55
63
 
56
64
  // Exportar todos los componentes del framework
57
65
  module.exports = {
@@ -97,7 +105,7 @@ module.exports = {
97
105
  // Componentes de modelo (v2.4.0)
98
106
  ModelBase,
99
107
  ModelManager,
100
- // Componentes del QueryBuilder (v2.3.0)
108
+ // Componentes del QueryBuilder (v2.3.0)
101
109
  QueryBuilder,
102
110
  UserModel,
103
111
 
@@ -113,7 +121,14 @@ module.exports = {
113
121
  ErrorHandler,
114
122
  ValidationError,
115
123
  AuthenticationError,
116
- DatabaseError
124
+ DatabaseError,
125
+
126
+ // Componentes de sistema de colas (v2.6.0)
127
+ QueueSystem,
128
+ QueueIntegration,
129
+
130
+ // Componentes de administración (v2.5.7)
131
+ AdminExtension: require('./lib/admin/AdminExtension')
117
132
  };
118
133
 
119
134
  // También exportar clases individuales por conveniencia
@@ -124,4 +139,4 @@ const hooksInstance = new HookSystem();
124
139
  module.exports.hooks = hooksInstance;
125
140
 
126
141
  // Disparar hooks de inicio del framework
127
- hooksInstance.doAction('framework_init');
142
+ hooksInstance.doAction('framework_init');
@@ -0,0 +1,69 @@
1
+ # Cliente CLI para JERK Framework Administration Server
2
+
3
+ Cliente de línea de comandos para interactuar con el servidor de administración de JERK Framework. Permite reutilizar comandos y cuenta con autocompletado.
4
+
5
+ ## Características
6
+
7
+ - **Autocompletado**: Presiona TAB para autocompletar comandos conocidos
8
+ - **Historial de comandos**: Accede a comandos previamente utilizados
9
+ - **Reutilización de comandos**: Reutiliza comandos por número o por texto
10
+ - **Conservación de contexto**: Mantiene el historial entre sesiones
11
+
12
+ ## Instalación
13
+
14
+ El cliente CLI está incluido en el framework JERK y se puede ejecutar directamente:
15
+
16
+ ```bash
17
+ node jerk-admin-client.js
18
+ ```
19
+
20
+ O con parámetros específicos:
21
+
22
+ ```bash
23
+ node jerk-admin-client.js --host 127.0.0.1 --port 9999
24
+ ```
25
+
26
+ ## Comandos del Cliente
27
+
28
+ Además de los comandos del servidor de administración, el cliente CLI incluye comandos especiales:
29
+
30
+ - `history` - Muestra el historial de comandos
31
+ - `clear` - Limpia la pantalla
32
+ - `re <número>` - Reutiliza el comando número n del historial
33
+ - `re <texto>` - Reutiliza el último comando que contiene el texto
34
+ - `help-cli` - Muestra la ayuda del cliente
35
+
36
+ ## Uso
37
+
38
+ 1. Inicia el cliente:
39
+ ```bash
40
+ node jerk-admin-client.js
41
+ ```
42
+
43
+ 2. El cliente se conectará automáticamente al servidor de administración en `localhost:9999`
44
+
45
+ 3. Usa los comandos estándar del servidor de administración:
46
+ - `stats` - Ver estadísticas generales
47
+ - `requests` - Ver estadísticas de solicitudes
48
+ - `endpoints` - Ver endpoints más accedidos
49
+ - `routes` - Ver rutas registradas
50
+ - `help` - Ver todos los comandos disponibles
51
+
52
+ 4. Usa los comandos especiales del cliente para mejorar la experiencia:
53
+ - `history` para ver comandos anteriores
54
+ - `re 3` para reutilizar el tercer comando del historial
55
+ - `re stats` para reutilizar el último comando que contenía "stats"
56
+
57
+ ## Atajos
58
+
59
+ - Presiona `↑` y `↓` para navegar por el historial de comandos
60
+ - Presiona `TAB` para autocompletar comandos
61
+ - Presiona `Ctrl+C` para salir del cliente
62
+
63
+ ## Configuración
64
+
65
+ Por defecto, el cliente intenta conectarse a `localhost:9999`. Puedes especificar un host y puerto diferente usando los argumentos `--host` y `--port`.
66
+
67
+ ## Archivo de Historial
68
+
69
+ El cliente guarda el historial de comandos en `~/.jerk_admin_history` para conservarlo entre sesiones.
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "@jerkjs/admin-client",
3
+ "version": "1.0.0",
4
+ "description": "Cliente CLI para interactuar con el servidor de administración de JERK Framework",
5
+ "main": "jerk-admin-client.js",
6
+ "bin": {
7
+ "jerk-admin": "./jerk-admin-client.js"
8
+ },
9
+ "scripts": {
10
+ "start": "node jerk-admin-client.js",
11
+ "test": "echo \"Error: no test specified\" && exit 1"
12
+ },
13
+ "keywords": [
14
+ "jerkjs",
15
+ "admin",
16
+ "cli",
17
+ "client",
18
+ "framework"
19
+ ],
20
+ "author": "JERK Framework Team",
21
+ "license": "Apache-2.0",
22
+ "dependencies": {}
23
+ }