insitu-js 1.2.0 → 1.3.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 CHANGED
@@ -5,6 +5,34 @@ El versionado sigue SemVer (MAJOR.MINOR.PATCH).
5
5
 
6
6
  ---
7
7
 
8
+ ## [1.3.0] - 2026-02-17
9
+
10
+ ### Soporte para Uploads Binarios y Excepciones en Firewall - Insitu Framework
11
+
12
+ #### Soporte para Uploads Binarios (`lib/core/server.js`)
13
+ - Implementación de `req.rawBody` para almacenar el cuerpo crudo de la solicitud como Buffer
14
+ - Mantenimiento de compatibilidad con `req.body` para comportamiento original (string)
15
+ - Capacidad de manejar uploads de archivos binarios (.tar.gz, imágenes, etc.)
16
+ - Permite que las rutas que procesan archivos binarios accedan al contenido sin conversión a string
17
+
18
+ #### Excepción en Firewall para Rutas de Deploy (`lib/middleware/firewall.js`)
19
+ - Exclusión de rutas `POST /api/admin/apps/deploy` del firewall
20
+ - Las solicitudes de deploy ahora saltan las reglas de seguridad del firewall
21
+ - Permite procesos de despliegue automático sin bloqueos por reglas de seguridad
22
+
23
+ #### Compatibilidad
24
+ - **Retrocompatible:** Sí. Los cambios no afectan funcionalidad existente
25
+ - **Requiere:** Ninguna dependencia adicional
26
+ - **Afecta:** Solo a rutas que acceden a `req.rawBody` y rutas de deploy de administración
27
+
28
+ #### Beneficios Obtenidos
29
+ - Capacidad de subir archivos binarios de cualquier tipo
30
+ - Flexibilidad para manejar contenido crudo en formatos específicos
31
+ - Despliegue automático sin interferencia del firewall
32
+ - Mejor integración con sistemas de CI/CD
33
+
34
+ ---
35
+
8
36
  ## [1.2.0] - 2026-02-16
9
37
 
10
38
  ### Custom Static 404 Response Filter - Insitu Framework
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Manejadores de hooks para aplicaciones (App Server)
3
+ * Implementación para el framework Insitu
4
+ *
5
+ * Este archivo maneja los hooks específicos para la gestión de aplicaciones
6
+ */
7
+
8
+ class AppHooksHandler {
9
+ /**
10
+ * Dispara el hook antes de registrar las rutas de una aplicación
11
+ * @param {Object} server - Instancia del servidor
12
+ * @param {Object} routeConfig - Configuración de la ruta
13
+ * @param {string} appName - Nombre de la aplicación
14
+ * @param {string} version - Versión de la aplicación
15
+ * @returns {Object} - routeConfig modificado
16
+ */
17
+ static handleBeforeAppRouteRegister(server, routeConfig, appName, version) {
18
+ if (server.hooks) {
19
+ // El filtro puede modificar routeConfig
20
+ return server.hooks.applyFilters(
21
+ 'before_app_routes_register',
22
+ routeConfig,
23
+ appName,
24
+ version
25
+ );
26
+ }
27
+ return routeConfig;
28
+ }
29
+
30
+ /**
31
+ * Dispara el hook después de registrar las rutas de una aplicación
32
+ * @param {Object} server - Instancia del servidor
33
+ * @param {Array} routes - Lista de rutas registradas
34
+ * @param {string} appName - Nombre de la aplicación
35
+ * @param {string} version - Versión de la aplicación
36
+ */
37
+ static handleAfterAppRoutesRegister(server, routes, appName, version) {
38
+ if (server.hooks) {
39
+ server.hooks.doAction('after_app_routes_register', routes, appName, version);
40
+ }
41
+ }
42
+
43
+ /**
44
+ * Dispara el hook cuando una ruta de aplicación es registrada
45
+ * @param {Object} server - Instancia del servidor
46
+ * @param {Object} route - Ruta registrada
47
+ * @param {string} appName - Nombre de la aplicación
48
+ * @param {string} version - Versión de la aplicación
49
+ */
50
+ static handleAppRouteRegistered(server, route, appName, version) {
51
+ if (server.hooks) {
52
+ server.hooks.doAction('app_route_registered', route, appName, version);
53
+ }
54
+ }
55
+ }
56
+
57
+ module.exports = AppHooksHandler;
@@ -987,7 +987,18 @@ class APIServer {
987
987
  req.on('end', async () => {
988
988
  try {
989
989
  // Concatenar todos los chunks una sola vez
990
- req.body = Buffer.concat(bodyChunks).toString();
990
+ const rawBuffer = Buffer.concat(bodyChunks);
991
+
992
+ // ============================================
993
+ // BINARY UPLOAD SUPPORT - BlackCoffee
994
+ // ============================================
995
+ // Guardar body raw como Buffer para rutas binarias
996
+ // Esto permite uploads de archivos binarios (.tar.gz, imágenes, etc.)
997
+ req.rawBody = rawBuffer;
998
+ // ============================================
999
+
1000
+ // Convertir a string para req.body (comportamiento original)
1001
+ req.body = rawBuffer.toString();
991
1002
 
992
1003
  // Actualizar estadísticas globales de bytes recibidos
993
1004
  StatsHooksHandler.updateRequestBytes(bodySize);
@@ -399,6 +399,11 @@ class Firewall {
399
399
  */
400
400
  middleware() {
401
401
  return (req, res, next) => {
402
+ // Excluir rutas de administración de deploy
403
+ if (req.method === 'POST' && req.url.startsWith('/api/admin/apps/deploy')) {
404
+ return next(); // Saltar firewall para deploy
405
+ }
406
+
402
407
  // Disparar hook antes de procesar la solicitud
403
408
  const hooks = require('../../index.js').hooks;
404
409
  if (hooks) {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "insitu-js",
3
- "version": "1.2.0",
4
- "description": "Insitu Framework v1.2.0 - A comprehensive framework for building secure and scalable APIs with frontend support, sessions, template engine, integration with qbuilderjs, complete MVC architecture with models, enhanced route loading from directory, improved model loading system, administration extension, queue management system, route cache management module, fixed routing issues with static and parametrized routes, and custom static 404 response filter for personalized HTML templates",
3
+ "version": "1.3.0",
4
+ "description": "Insitu Framework v1.3.0 - A comprehensive framework for building secure and scalable APIs with frontend support, sessions, template engine, integration with qbuilderjs, complete MVC architecture with models, enhanced route loading from directory, improved model loading system, administration extension, queue management system, route cache management module, fixed routing issues with static and parametrized routes, custom static 404 response filter for personalized HTML templates, binary upload support, and firewall exceptions for admin deploy routes",
5
5
  "main": "index.js",
6
6
  "scripts": {
7
7
  "test": "echo \"Error: no test specified\" && exit 1",