insitu-js 1.0.2 → 1.1.0
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 +28 -1
- package/CHANGELOG_1.1.0.md +198 -0
- package/README.md +100 -93
- package/README_es.md +162 -0
- package/after_route_handler_filter_example.md +116 -0
- package/after_route_handler_usage.md +130 -0
- package/async_hooks_promises_guide.md +325 -0
- package/before_route_handler_filter_example.md +97 -0
- package/before_route_handler_usage.md +122 -0
- package/hooks_chaining_conditions_guide.md +261 -0
- package/hooks_filters_documentation.md +493 -0
- package/hooks_filters_documentation_en.md +493 -0
- package/hooks_vs_middlewares_comparison.md +87 -0
- package/index.js +3 -2
- package/lib/admin/AdminExtension.js +7 -0
- package/lib/core/server.js +132 -1
- package/lib/loader/controllerLoader.js +27 -5
- package/package.json +1 -1
- package/router_execution_points.md +74 -0
- package/static_file_hooks_usage.md +222 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,7 +7,7 @@ El versionado sigue SemVer (MAJOR.MINOR.PATCH).
|
|
|
7
7
|
|
|
8
8
|
## [1.0.2] - 2026-02-16
|
|
9
9
|
|
|
10
|
-
### Mejoras en Presentación Visual
|
|
10
|
+
### Mejoras en Presentación Visual, Corrección de Dependencias Circulares y Hooks de Seguimiento - Insitu Framework
|
|
11
11
|
|
|
12
12
|
#### Archivo Nuevo: `lib/utils/colorHelper.js`
|
|
13
13
|
- Creación del módulo `ColorHelper` con códigos ANSI para diferentes colores
|
|
@@ -25,11 +25,38 @@ El versionado sigue SemVer (MAJOR.MINOR.PATCH).
|
|
|
25
25
|
- Creación de una instancia local de `HookSystem` para resolver el problema
|
|
26
26
|
- Solución del warning "Accessing non-existent property 'hooks' of module exports inside circular dependency"
|
|
27
27
|
|
|
28
|
+
#### Nueva Funcionalidad: Hooks de Seguimiento de Solicitudes
|
|
29
|
+
- Implementación de mensaje en color cyan cuando se dispara el hook `request_received`
|
|
30
|
+
- Adición de mensaje en color magenta cuando se dispara el hook `route_not_found` (equivalente a error 404)
|
|
31
|
+
- Manejo seguro de casos donde el objeto `req` podría ser indefinido en el hook `route_not_found`
|
|
32
|
+
|
|
33
|
+
#### Nueva Funcionalidad: Hooks before_route_handler y after_route_handler
|
|
34
|
+
- Implementación de los hooks `before_route_handler` y `after_route_handler` para solicitudes que no sean OPTIONS
|
|
35
|
+
- Soporte para filtros y acciones en ambos hooks
|
|
36
|
+
- Posibilidad de modificar objetos `req` y `res` durante la ejecución de los filtros
|
|
37
|
+
- Aplicación exclusiva a solicitudes que no sean del tipo OPTIONS
|
|
38
|
+
|
|
39
|
+
#### Nueva Funcionalidad: Hooks before_static_file_load y after_static_file_load
|
|
40
|
+
- Implementación de los hooks `before_static_file_load` y `after_static_file_load` para manipulación de archivos estáticos
|
|
41
|
+
- Soporte para filtros y acciones en ambos hooks
|
|
42
|
+
- Posibilidad de modificar objetos `req`, `res`, `filePath` y `staticConfig` durante la ejecución de los filtros
|
|
43
|
+
- Capacidad de modificar el contenido de archivos estáticos a través del parámetro `fileContent` en el hook `after_static_file_load`
|
|
44
|
+
- Aplicación a ambos tipos de carga de archivos estáticos (archivos normales e índices)
|
|
45
|
+
|
|
46
|
+
#### Nueva Funcionalidad: Hooks before_controller_load y after_controller_load
|
|
47
|
+
- Implementación de los hooks `before_controller_load` y `after_controller_load` para manipulación de carga de controladores
|
|
48
|
+
- Soporte para filtros y acciones en ambos hooks
|
|
49
|
+
- Posibilidad de modificar la ruta del controlador en `before_controller_load`
|
|
50
|
+
- Posibilidad de modificar el módulo del controlador en `after_controller_load`
|
|
51
|
+
- Aplicación tanto en el cargador de controladores como en el sistema de rutas
|
|
52
|
+
- Mantenimiento de compatibilidad con los hooks antiguos `pre_controller_load` y `post_controller_load` con notificación de deprecación
|
|
53
|
+
|
|
28
54
|
#### Beneficios Obtenidos
|
|
29
55
|
- Mejora en la presentación visual de la aplicación con colores
|
|
30
56
|
- Eliminación de advertencias técnicas que afectaban la experiencia del usuario
|
|
31
57
|
- Mayor claridad visual en la salida de la consola
|
|
32
58
|
- Resolución de problemas técnicos de arquitectura de módulos
|
|
59
|
+
- Mejor seguimiento y monitoreo de solicitudes entrantes y errores 404
|
|
33
60
|
|
|
34
61
|
---
|
|
35
62
|
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
# Changelog
|
|
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
|
+
## [1.1.0] - 2026-02-16
|
|
9
|
+
|
|
10
|
+
### Nueva Funcionalidad Principal: Sistema Avanzado de Hooks y Filtros - Insitu Framework
|
|
11
|
+
|
|
12
|
+
#### Hooks y Filtros para Manipulación de Rutas
|
|
13
|
+
- Implementación de los hooks `before_route_handler` y `after_route_handler` para manipulación de solicitudes
|
|
14
|
+
- Soporte para filtros y acciones en ambos hooks
|
|
15
|
+
- Posibilidad de modificar objetos `req` y `res` durante la ejecución de los filtros
|
|
16
|
+
- Aplicación exclusiva a solicitudes que no sean del tipo OPTIONS
|
|
17
|
+
|
|
18
|
+
#### Hooks y Filtros para Manipulación de Archivos Estáticos
|
|
19
|
+
- Implementación de los hooks `before_static_file_load` y `after_static_file_load` para manipulación de archivos estáticos
|
|
20
|
+
- Soporte para filtros y acciones en ambos hooks
|
|
21
|
+
- Posibilidad de modificar objetos `req`, `res`, `filePath` y `staticConfig` durante la ejecución de los filtros
|
|
22
|
+
- Capacidad de modificar el contenido de archivos estáticos a través del parámetro `fileContent` en el hook `after_static_file_load`
|
|
23
|
+
- Aplicación a ambos tipos de carga de archivos estáticos (archivos normales e índices)
|
|
24
|
+
|
|
25
|
+
#### Hooks y Filtros para Manipulación de Controladores
|
|
26
|
+
- Implementación de los hooks `before_controller_load` y `after_controller_load` para manipulación de carga de controladores
|
|
27
|
+
- Soporte para filtros y acciones en ambos hooks
|
|
28
|
+
- Posibilidad de modificar la ruta del controlador en `before_controller_load`
|
|
29
|
+
- Posibilidad de modificar el módulo del controlador en `after_controller_load`
|
|
30
|
+
- Aplicación tanto en el cargador de controladores como en el sistema de rutas
|
|
31
|
+
- Mantenimiento de compatibilidad con los hooks antiguos `pre_controller_load` y `post_controller_load` con notificación de deprecación
|
|
32
|
+
|
|
33
|
+
#### Sistema de Filtros Mejorado
|
|
34
|
+
- Soporte para filtros que permiten modificar parámetros en múltiples puntos del framework
|
|
35
|
+
- Sistema de prioridades configurable para el orden de ejecución
|
|
36
|
+
- Integración completa con el sistema de hooks existente
|
|
37
|
+
- Soporte para operaciones asíncronas en filtros
|
|
38
|
+
|
|
39
|
+
#### Mejoras en el Sistema de Hooks
|
|
40
|
+
- Soporte para operaciones asíncronas en hooks
|
|
41
|
+
- Resolución de promesas en la cadena de hooks y filtros
|
|
42
|
+
- Manejo adecuado de errores en operaciones asíncronas
|
|
43
|
+
- Mantenimiento del orden de ejecución incluso con operaciones asíncronas
|
|
44
|
+
|
|
45
|
+
#### Nueva Funcionalidad: Filtro para Personalización de Respuesta 404
|
|
46
|
+
- Implementación del filtro `customize_404_response` para personalizar la respuesta de error 404
|
|
47
|
+
- Soporte para modificar completamente la respuesta 404 o evitar la respuesta estándar
|
|
48
|
+
- Parámetros del filtro: `({ shouldSendDefaultResponse, pathname, req, res }, pathname, req, res)`
|
|
49
|
+
- Posibilidad de enviar respuestas personalizadas en lugar del mensaje estándar de 404
|
|
50
|
+
|
|
51
|
+
#### Beneficios Obtenidos
|
|
52
|
+
- Mayor flexibilidad para extender el comportamiento del framework
|
|
53
|
+
- Control preciso sobre el flujo de ejecución en múltiples puntos
|
|
54
|
+
- Soporte para operaciones asíncronas en hooks y filtros
|
|
55
|
+
- Compatibilidad hacia atrás con hooks existentes
|
|
56
|
+
- Documentación completa de todos los hooks y filtros disponibles
|
|
57
|
+
- Mayor capacidad de personalización sin modificar el núcleo del framework
|
|
58
|
+
- Posibilidad de personalizar completamente la experiencia de usuario ante errores 404
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## [1.0.2] - 2026-02-16
|
|
63
|
+
|
|
64
|
+
### Mejoras en Presentación Visual, Corrección de Dependencias Circulares y Hooks de Seguimiento - Insitu Framework
|
|
65
|
+
|
|
66
|
+
#### Archivo Nuevo: `lib/utils/colorHelper.js`
|
|
67
|
+
- Creación del módulo `ColorHelper` con códigos ANSI para diferentes colores
|
|
68
|
+
- Implementación de métodos para aplicar colores a texto en consola
|
|
69
|
+
- Adición de funciones para combinar múltiples colores en un solo texto
|
|
70
|
+
|
|
71
|
+
#### Archivo Modificado: `index.js`
|
|
72
|
+
- Integración del `ColorHelper` para colorear el logo ASCII art
|
|
73
|
+
- Aplicación de color amarillo al texto de la versión
|
|
74
|
+
- Mantenimiento del formato original del mensaje de bienvenida
|
|
75
|
+
|
|
76
|
+
#### Corrección de Advertencia de Dependencia Circular
|
|
77
|
+
- Modificación de `lib/queue/GlobalQueueStorage.js` para evitar dependencia circular
|
|
78
|
+
- Eliminación de la referencia directa a `framework.hooks` desde `index.js`
|
|
79
|
+
- Creación de una instancia local de `HookSystem` para resolver el problema
|
|
80
|
+
- Solución del warning "Accessing non-existent property 'hooks' of module exports inside circular dependency"
|
|
81
|
+
|
|
82
|
+
#### Nueva Funcionalidad: Hooks de Seguimiento de Solicitudes
|
|
83
|
+
- Implementación de mensaje en color cyan cuando se dispara el hook `request_received`
|
|
84
|
+
- Adición de mensaje en color magenta cuando se dispara el hook `route_not_found` (equivalente a error 404)
|
|
85
|
+
- Manejo seguro de casos donde el objeto `req` podría ser indefinido en el hook `route_not_found`
|
|
86
|
+
|
|
87
|
+
#### Beneficios Obtenidos
|
|
88
|
+
- Mejora en la presentación visual de la aplicación con colores
|
|
89
|
+
- Eliminación de advertencias técnicas que afectaban la experiencia del usuario
|
|
90
|
+
- Mayor claridad visual en la salida de la consola
|
|
91
|
+
- Resolución de problemas técnicos de arquitectura de módulos
|
|
92
|
+
- Mejor seguimiento y monitoreo de solicitudes entrantes y errores 404
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## [1.0.1] - 2026-02-13
|
|
97
|
+
|
|
98
|
+
### Refactorización DRY y Mejoras en el WAF - Insitu Framework
|
|
99
|
+
|
|
100
|
+
#### Archivo Nuevo: `lib/utils/executeMiddleware.js`
|
|
101
|
+
- Creación del módulo centralizado `executeMiddleware` para la ejecución de middlewares
|
|
102
|
+
- Implementación del método reutilizable `executeMiddleware(middleware, req, res, nextFn = null)` con manejo de promesas
|
|
103
|
+
|
|
104
|
+
#### Archivos Modificados:
|
|
105
|
+
- `lib/core/server.js`
|
|
106
|
+
- `lib/loader/routeLoader.js`
|
|
107
|
+
- `lib/core/router.js`
|
|
108
|
+
- `lib/security/globalWAFStats.js`
|
|
109
|
+
- `lib/security/firewall.js`
|
|
110
|
+
- `lib/admin/modules/WAFModule.js`
|
|
111
|
+
|
|
112
|
+
#### Implementación de Método Centralizado executeMiddleware
|
|
113
|
+
- Eliminación de múltiples instancias de código repetido para ejecución de middlewares
|
|
114
|
+
- Reemplazo de lógica local con importación y uso del módulo centralizado
|
|
115
|
+
- Actualización del método `use` en el router para usar el método centralizado
|
|
116
|
+
- Implementación de definición dinámica de métodos HTTP en el router
|
|
117
|
+
|
|
118
|
+
#### Implementación de Funcionalidades de Log y Monitor en el WAF
|
|
119
|
+
- Añadida propiedad `monitoredRequests` al objeto global de estadísticas del WAF
|
|
120
|
+
- Implementación completa de la acción "monitor" en el middleware de firewall
|
|
121
|
+
- Almacenamiento de solicitudes monitoreadas en el mapa global `monitoredRequests`
|
|
122
|
+
- Añadido comando `waf-monitored` al módulo de administración WAF
|
|
123
|
+
- Implementación del método `showMonitoredRequests()` para mostrar solicitudes monitoreadas
|
|
124
|
+
- Actualización del comando `waf-logs` para mostrar solicitudes registradas con acción "log"
|
|
125
|
+
|
|
126
|
+
#### Aplicación del Principio DRY (Don't Repeat Yourself)
|
|
127
|
+
- Creación del método `createAuthenticatedHandler()` para manejar lógica de autenticación
|
|
128
|
+
- Implementación de métodos para respuestas HTTP comunes (`sendJsonResponse()`, `sendForbiddenResponse()`, `sendNotFoundResponse()`, `sendRequestTooLargeResponse()`)
|
|
129
|
+
- Uso del método reutilizable `handleError()` en lugar de llamar directamente a ErrorHandler.handle()
|
|
130
|
+
|
|
131
|
+
#### Mejoras en el Manejo de Errores y Configuración
|
|
132
|
+
- Centralización del manejo de errores con el método `handleError()`
|
|
133
|
+
- Creación del método `isJsonRequest()` para verificar tipo de contenido
|
|
134
|
+
- Implementación del método `setStaticFileHeaders()` para configurar headers de archivos estáticos
|
|
135
|
+
|
|
136
|
+
#### Optimizaciones de Estadísticas y Hooks
|
|
137
|
+
- Método `setupResponseCapture()` para capturar datos de respuesta para estadísticas
|
|
138
|
+
- Método `updateRequestProcessingStats()` para actualizar estadísticas de procesamiento
|
|
139
|
+
- Método `registerRouteAndEndpointStats()` para registrar estadísticas de acceso
|
|
140
|
+
- Métodos para manejar eventos de hooks de solicitud (`handleRouteMatched()`, `handleMiddlewareResponseFinished()`)
|
|
141
|
+
|
|
142
|
+
#### Mejoras en Verificaciones y Validaciones
|
|
143
|
+
- Método `isMiddlewareFunction()` para verificar si un middleware es una función
|
|
144
|
+
- Método `isAsyncFunction()` para verificar si una función es asíncrona
|
|
145
|
+
|
|
146
|
+
#### Beneficios Obtenidos
|
|
147
|
+
- Eliminación significativa de código duplicado
|
|
148
|
+
- Mejor mantenibilidad: cambios en lógica común solo se realizan en un lugar
|
|
149
|
+
- Mayor consistencia en el manejo de operaciones repetitivas
|
|
150
|
+
- Funcionalidad completa de las acciones "log" y "monitor" en el WAF
|
|
151
|
+
- Almacenamiento eficiente de solicitudes registradas y monitoreadas
|
|
152
|
+
- Visibilidad mejorada a través de comandos específicos (`waf-logs`, `waf-monitored`)
|
|
153
|
+
- Reducción de posibles errores por inconsistencias
|
|
154
|
+
- Claridad mejorada del código
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## [1.0.0] - 2026-02-12
|
|
159
|
+
|
|
160
|
+
### Consolidated Release - Insitu Framework
|
|
161
|
+
|
|
162
|
+
#### Framework Renaming
|
|
163
|
+
- Cambio de nombre del framework de "JERK Framework" a "Insitu Framework"
|
|
164
|
+
- Actualización de todos los nombres de paquetes, referencias y documentación
|
|
165
|
+
- Renombrado de archivos y directorios relacionados con el antiguo nombre
|
|
166
|
+
|
|
167
|
+
#### Version Standardization
|
|
168
|
+
- Consolidación de todas las versiones anteriores a la versión única 1.0.0
|
|
169
|
+
- Actualización de todos los números de versión en comentarios, documentación y código
|
|
170
|
+
- Unificación de la numeración de versiones en todos los componentes
|
|
171
|
+
|
|
172
|
+
#### Architecture & Core Features
|
|
173
|
+
- Sistema de enrutamiento avanzado con soporte para rutas estáticas y parametrizadas
|
|
174
|
+
- Arquitectura modular con componentes desacoplados
|
|
175
|
+
- Sistema de hooks y filters para extensibilidad
|
|
176
|
+
- Motor de vistas con soporte para includes, variables y filtros
|
|
177
|
+
- Sistema de modelos con soporte para diferentes adaptadores (memoria, MariaDB, SQLite)
|
|
178
|
+
|
|
179
|
+
#### Security & Performance
|
|
180
|
+
- Firewall WAF integrado con reglas configurables
|
|
181
|
+
- Sistema de autenticación con múltiples estrategias (JWT, API Keys, Sesiones)
|
|
182
|
+
- Sistema de sesiones con cookies seguras
|
|
183
|
+
- Optimizaciones de rendimiento con índices y caché
|
|
184
|
+
- Protección contra ataques XSS y SQL Injection
|
|
185
|
+
|
|
186
|
+
#### Administration & Monitoring
|
|
187
|
+
- Extensión de administración con servidor TCP local
|
|
188
|
+
- Módulos de administración para gestión de rutas, vistas y estadísticas
|
|
189
|
+
- Sistema de colas con soporte para múltiples colas concurrentes
|
|
190
|
+
- Monitorización en tiempo real de métricas del servidor
|
|
191
|
+
|
|
192
|
+
#### Development Experience
|
|
193
|
+
- CLI de administración con autocompletado
|
|
194
|
+
- Generador interactivo de controladores
|
|
195
|
+
- Carga de rutas desde archivos JSON o programáticamente
|
|
196
|
+
- Documentación completa y ejemplos de uso
|
|
197
|
+
|
|
198
|
+
---
|
package/README.md
CHANGED
|
@@ -1,101 +1,108 @@
|
|
|
1
1
|
# 🚀 INSITU - JS Framework
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
A **fast, modular and extensible** backend framework designed to build high-performance HTTP APIs and services with focus on **real performance, full control and zero unnecessary dependencies**.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Built for developers who prefer **direct, predictable and efficient infrastructure**, not heavy abstraction layers.
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
## ⚡
|
|
9
|
+
## ⚡ Principles
|
|
10
10
|
|
|
11
|
-
- Performance first —
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
11
|
+
- Performance first — indexed routes, caches and O(1) structures
|
|
12
|
+
- Modular architecture — hooks, filters and decoupled modules
|
|
13
|
+
- Built-in observability — real-time administration
|
|
14
|
+
- Security by default
|
|
15
|
+
- No hidden magic — explicit and debuggable behavior
|
|
16
16
|
|
|
17
17
|
---
|
|
18
18
|
|
|
19
|
-
## ✨
|
|
20
|
-
|
|
21
|
-
### 🧭
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
|
|
27
|
-
### 🧩
|
|
28
|
-
- Hooks
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
|
|
39
|
-
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
-
|
|
19
|
+
## ✨ Key Features
|
|
20
|
+
|
|
21
|
+
### 🧭 High-performance Routing
|
|
22
|
+
- Segment and prefix indexing
|
|
23
|
+
- Arity buckets
|
|
24
|
+
- Static and dynamic routes (regex)
|
|
25
|
+
- Route caching with hit/miss statistics
|
|
26
|
+
|
|
27
|
+
### 🧩 Modular System
|
|
28
|
+
- Hooks and filters
|
|
29
|
+
- Hook system with support for actions and filters
|
|
30
|
+
- Filters that allow modifying `req`, `res`, routes and file content
|
|
31
|
+
- Configurable priorities for execution order
|
|
32
|
+
- External plugins without modifying the core
|
|
33
|
+
- Dynamic module loading
|
|
34
|
+
- Advanced hooks for route and static file handling
|
|
35
|
+
- `before_route_handler` and `after_route_handler` for request manipulation
|
|
36
|
+
- `before_static_file_load` and `after_static_file_load` for static file manipulation
|
|
37
|
+
- Support for filters that allow modifying `req`, `res` and file content
|
|
38
|
+
|
|
39
|
+
### 🛠 Built-in Administration Console
|
|
40
|
+
Local TCP server for real-time inspection:
|
|
41
|
+
|
|
42
|
+
- active routes
|
|
43
|
+
- server statistics
|
|
44
|
+
- system status
|
|
45
|
+
- queues
|
|
46
|
+
- caches
|
|
47
|
+
- controller generation
|
|
48
|
+
|
|
49
|
+
### 📬 Queue System
|
|
50
|
+
- Multiple concurrent queues
|
|
51
|
+
- Priorities
|
|
52
|
+
- Automatic retries
|
|
46
53
|
- Fallbacks
|
|
47
|
-
-
|
|
48
|
-
-
|
|
49
|
-
|
|
50
|
-
### 📊
|
|
51
|
-
-
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
-
|
|
56
|
-
|
|
57
|
-
### 🔐
|
|
58
|
-
-
|
|
59
|
-
- Roles
|
|
60
|
-
-
|
|
61
|
-
- WAF
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
|
|
65
|
-
### 🗄
|
|
66
|
-
-
|
|
67
|
-
- QueryBuilder
|
|
68
|
-
-
|
|
69
|
-
-
|
|
54
|
+
- Pause / resume
|
|
55
|
+
- Manual cleanup and retries
|
|
56
|
+
|
|
57
|
+
### 📊 Observability
|
|
58
|
+
- Request/response metrics
|
|
59
|
+
- Most used endpoints
|
|
60
|
+
- View cache statistics
|
|
61
|
+
- System resource status
|
|
62
|
+
- Real-time monitoring
|
|
63
|
+
|
|
64
|
+
### 🔐 Security
|
|
65
|
+
- JWT authentication
|
|
66
|
+
- Roles and capabilities
|
|
67
|
+
- Security middleware
|
|
68
|
+
- Basic WAF
|
|
69
|
+
- Configurable cookie flags (`Secure`, `SameSite`, etc.)
|
|
70
|
+
- XSS / SQL Injection protection
|
|
71
|
+
|
|
72
|
+
### 🗄 Database
|
|
73
|
+
- Model system
|
|
74
|
+
- Integrated QueryBuilder
|
|
75
|
+
- MariaDB and SQLite support
|
|
76
|
+
- Migrations
|
|
70
77
|
|
|
71
78
|
### 🎨 Developer Experience
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
- CLI
|
|
75
|
-
-
|
|
79
|
+
- Interactive controller generator
|
|
80
|
+
- Route manager
|
|
81
|
+
- Colored CLI
|
|
82
|
+
- Minimal configuration
|
|
76
83
|
|
|
77
84
|
---
|
|
78
85
|
|
|
79
|
-
## 🧠
|
|
86
|
+
## 🧠 Usage
|
|
80
87
|
|
|
81
|
-
|
|
88
|
+
The framework **does not impose magic commands or proprietary wrappers**.
|
|
82
89
|
|
|
83
|
-
|
|
90
|
+
It integrates directly into your binary/server, and administration is performed through:
|
|
84
91
|
|
|
85
|
-
-
|
|
86
|
-
-
|
|
87
|
-
- hooks
|
|
92
|
+
- local TCP administration console
|
|
93
|
+
- CLI modules
|
|
94
|
+
- hooks and extensions
|
|
88
95
|
|
|
89
|
-
|
|
96
|
+
Check the project documentation for specific initialization examples based on your application.
|
|
90
97
|
|
|
91
98
|
---
|
|
92
99
|
|
|
93
|
-
## 🧱
|
|
100
|
+
## 🧱 Architecture
|
|
94
101
|
|
|
95
102
|
```
|
|
96
103
|
Request
|
|
97
104
|
↓
|
|
98
|
-
Router (
|
|
105
|
+
Router (indexed)
|
|
99
106
|
↓
|
|
100
107
|
Middleware / Hooks
|
|
101
108
|
↓
|
|
@@ -104,52 +111,52 @@ Controller
|
|
|
104
111
|
View / JSON / Stream
|
|
105
112
|
```
|
|
106
113
|
|
|
107
|
-
|
|
114
|
+
Decoupled components → extensible → replaceable.
|
|
108
115
|
|
|
109
116
|
---
|
|
110
117
|
|
|
111
|
-
## 🔌
|
|
118
|
+
## 🔌 Extensibility
|
|
112
119
|
|
|
113
|
-
|
|
120
|
+
You can extend without modifying the core:
|
|
114
121
|
|
|
115
|
-
-
|
|
116
|
-
- hooks
|
|
117
|
-
-
|
|
122
|
+
- administration modules
|
|
123
|
+
- custom hooks
|
|
124
|
+
- security filters
|
|
118
125
|
- middlewares
|
|
119
|
-
- plugins
|
|
126
|
+
- external plugins
|
|
120
127
|
|
|
121
128
|
---
|
|
122
129
|
|
|
123
|
-
## 📈
|
|
130
|
+
## 📈 Performance
|
|
124
131
|
|
|
125
|
-
|
|
132
|
+
Optimized for:
|
|
126
133
|
|
|
127
|
-
-
|
|
128
|
-
-
|
|
129
|
-
-
|
|
130
|
-
-
|
|
134
|
+
- fewer allocations
|
|
135
|
+
- less route normalization
|
|
136
|
+
- fewer linear searches
|
|
137
|
+
- more indexing and caching
|
|
131
138
|
|
|
132
|
-
|
|
139
|
+
Result: **lower CPU, lower latency and higher throughput**.
|
|
133
140
|
|
|
134
141
|
---
|
|
135
142
|
|
|
136
|
-
## 🗂
|
|
143
|
+
## 🗂 Versioning
|
|
137
144
|
|
|
138
|
-
|
|
145
|
+
We follow **Semantic Versioning (SemVer)**.
|
|
139
146
|
|
|
140
|
-
|
|
147
|
+
Check detailed changes at:
|
|
141
148
|
👉 `CHANGELOG.md`
|
|
142
149
|
|
|
143
150
|
---
|
|
144
151
|
|
|
145
|
-
## 🤝
|
|
152
|
+
## 🤝 Philosophy
|
|
146
153
|
|
|
147
|
-
>
|
|
154
|
+
> Less framework. More control. More performance.
|
|
148
155
|
|
|
149
|
-
|
|
156
|
+
Designed for teams that prefer to understand the complete system rather than depend on unnecessary abstractions.
|
|
150
157
|
|
|
151
158
|
---
|
|
152
159
|
|
|
153
|
-
## 📄
|
|
160
|
+
## 📄 License
|
|
154
161
|
|
|
155
|
-
APACHE 2.0
|
|
162
|
+
APACHE 2.0
|
package/README_es.md
ADDED
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
# 🚀 INSITU - JS Framework
|
|
2
|
+
|
|
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**.
|
|
4
|
+
|
|
5
|
+
Pensado para desarrolladores que prefieren **infraestructura directa, predecible y eficiente**, no capas de abstracción pesadas.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## ⚡ Principios
|
|
10
|
+
|
|
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
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## ✨ Características principales
|
|
20
|
+
|
|
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
|
|
26
|
+
|
|
27
|
+
### 🧩 Sistema modular
|
|
28
|
+
- Hooks y filtros
|
|
29
|
+
- Sistema de hooks con soporte para acciones y filtros
|
|
30
|
+
- Filtros que permiten modificar objetos `req`, `res`, rutas y contenido de archivos
|
|
31
|
+
- Prioridades configurables para el orden de ejecución
|
|
32
|
+
- Plugins externos sin modificar el core
|
|
33
|
+
- Carga dinámica de módulos
|
|
34
|
+
- Hooks avanzados para manejo de rutas y archivos estáticos
|
|
35
|
+
- `before_route_handler` y `after_route_handler` para manipulación de solicitudes
|
|
36
|
+
- `before_static_file_load` y `after_static_file_load` para manipulación de archivos estáticos
|
|
37
|
+
- Soporte para filtros que permiten modificar objetos `req`, `res` y contenido de archivos
|
|
38
|
+
|
|
39
|
+
### 🛠 Consola de administración integrada
|
|
40
|
+
Servidor TCP local para inspección en tiempo real:
|
|
41
|
+
|
|
42
|
+
- rutas activas
|
|
43
|
+
- estadísticas del servidor
|
|
44
|
+
- estado del sistema
|
|
45
|
+
- colas
|
|
46
|
+
- cachés
|
|
47
|
+
- generación de controladores
|
|
48
|
+
|
|
49
|
+
### 📬 Sistema de colas
|
|
50
|
+
- Múltiples colas concurrentes
|
|
51
|
+
- Prioridades
|
|
52
|
+
- Reintentos automáticos
|
|
53
|
+
- Fallbacks
|
|
54
|
+
- Pausa / reanudación
|
|
55
|
+
- Limpieza y reintentos manuales
|
|
56
|
+
|
|
57
|
+
### 📊 Observabilidad
|
|
58
|
+
- Métricas de requests/responses
|
|
59
|
+
- Endpoints más utilizados
|
|
60
|
+
- Estadísticas de caché de vistas
|
|
61
|
+
- Estado de recursos del sistema
|
|
62
|
+
- Monitorización en tiempo real
|
|
63
|
+
|
|
64
|
+
### 🔐 Seguridad
|
|
65
|
+
- Autenticación JWT
|
|
66
|
+
- Roles y capacidades
|
|
67
|
+
- Middleware de seguridad
|
|
68
|
+
- WAF básico
|
|
69
|
+
- Cookies con flags configurables (`Secure`, `SameSite`, etc.)
|
|
70
|
+
- Protección XSS / SQL Injection
|
|
71
|
+
|
|
72
|
+
### 🗄 Base de datos
|
|
73
|
+
- Sistema de modelos
|
|
74
|
+
- QueryBuilder integrado
|
|
75
|
+
- Soporte MariaDB y SQLite
|
|
76
|
+
- Migraciones
|
|
77
|
+
|
|
78
|
+
### 🎨 Developer Experience
|
|
79
|
+
- Generador interactivo de controladores
|
|
80
|
+
- Gestor de rutas
|
|
81
|
+
- CLI coloreada
|
|
82
|
+
- Configuración mínima
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## 🧠 Uso
|
|
87
|
+
|
|
88
|
+
El framework **no impone comandos mágicos ni wrappers propietarios**.
|
|
89
|
+
|
|
90
|
+
Se integra directamente en tu binario/servidor, y la administración se realiza a través de:
|
|
91
|
+
|
|
92
|
+
- consola TCP local de administración
|
|
93
|
+
- módulos CLI
|
|
94
|
+
- hooks y extensiones
|
|
95
|
+
|
|
96
|
+
Consulta la documentación del proyecto para ejemplos específicos de inicialización según tu aplicación.
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## 🧱 Arquitectura
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
Request
|
|
104
|
+
↓
|
|
105
|
+
Router (indexado)
|
|
106
|
+
↓
|
|
107
|
+
Middleware / Hooks
|
|
108
|
+
↓
|
|
109
|
+
Controller
|
|
110
|
+
↓
|
|
111
|
+
View / JSON / Stream
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Componentes desacoplados → extensibles → reemplazables.
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## 🔌 Extensibilidad
|
|
119
|
+
|
|
120
|
+
Puedes extender sin modificar el core:
|
|
121
|
+
|
|
122
|
+
- módulos de administración
|
|
123
|
+
- hooks personalizados
|
|
124
|
+
- filtros de seguridad
|
|
125
|
+
- middlewares
|
|
126
|
+
- plugins externos
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## 📈 Rendimiento
|
|
131
|
+
|
|
132
|
+
Optimizado para:
|
|
133
|
+
|
|
134
|
+
- menos asignaciones
|
|
135
|
+
- menos normalización de rutas
|
|
136
|
+
- menos búsquedas lineales
|
|
137
|
+
- más indexación y caché
|
|
138
|
+
|
|
139
|
+
Resultado: **menor CPU, menor latencia y mayor throughput**.
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## 🗂 Versionado
|
|
144
|
+
|
|
145
|
+
Seguimos **Semantic Versioning (SemVer)**.
|
|
146
|
+
|
|
147
|
+
Consulta cambios detallados en:
|
|
148
|
+
👉 `CHANGELOG.md`
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## 🤝 Filosofía
|
|
153
|
+
|
|
154
|
+
> Menos framework. Más control. Más rendimiento.
|
|
155
|
+
|
|
156
|
+
Diseñado para equipos que prefieren entender el sistema completo en lugar de depender de abstracciones innecesarias.
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## 📄 Licencia
|
|
161
|
+
|
|
162
|
+
APACHE 2.0
|