jerkjs 2.1.6 → 2.2.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.
Files changed (54) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +202 -5
  3. package/index.js +29 -4
  4. package/lib/core/server.js +328 -27
  5. package/lib/loader/routeLoader.js +148 -117
  6. package/lib/middleware/compressor.js +87 -18
  7. package/lib/mvc/GenericAdapter.js +136 -0
  8. package/lib/mvc/MariaDBAdapter.js +315 -0
  9. package/lib/mvc/MemoryAdapter.js +269 -0
  10. package/lib/mvc/ModelControllerExample.js +285 -0
  11. package/lib/mvc/controllerBase.js +60 -0
  12. package/lib/mvc/modelBase.js +383 -0
  13. package/lib/mvc/modelManager.js +284 -0
  14. package/lib/mvc/userModel.js +265 -0
  15. package/lib/mvc/viewEngine.js +32 -1
  16. package/lib/utils/mimeType.js +62 -0
  17. package/package.json +5 -3
  18. package/JERK_FRAMEWORK_DIAGRAM.txt +0 -492
  19. package/JERK_FRAMEWORK_DIAGRAM_MERMAID.mmd +0 -124
  20. package/JERK_FRAMEWORK_DOCUMENTATION.md +0 -527
  21. package/LICENSE +0 -201
  22. package/README_EN.md +0 -230
  23. package/README_PT.md +0 -230
  24. package/docs/ARQUITECTURA_ROUTES.md +0 -140
  25. package/docs/EXTENSION_MANUAL.md +0 -955
  26. package/docs/FIREWALL_MANUAL.md +0 -416
  27. package/docs/HOOK-2.0.md +0 -512
  28. package/docs/HOOKS_REFERENCE_IMPROVED.md +0 -596
  29. package/docs/MANUAL_API_SDK.md +0 -536
  30. package/docs/MARIADB_TOKENS_IMPLEMENTATION.md +0 -110
  31. package/docs/MIDDLEWARE_MANUAL.md +0 -518
  32. package/docs/OAUTH2_GOOGLE_MANUAL.md +0 -405
  33. package/docs/ROUTING_WITHOUT_JSON_GUIDE.md +0 -454
  34. package/docs/frontend-and-sessions.md +0 -353
  35. package/docs/guia_inicio_rapido_jerkjs.md +0 -113
  36. package/examples/examples.arj +0 -0
  37. package/standard/CompressionTestController.js +0 -56
  38. package/standard/HealthController.js +0 -16
  39. package/standard/HomeController.js +0 -12
  40. package/standard/ProductController.js +0 -18
  41. package/standard/README.md +0 -47
  42. package/standard/UserController.js +0 -23
  43. package/standard/package.json +0 -22
  44. package/standard/routes.json +0 -65
  45. package/standard/server.js +0 -140
  46. package/standardA/controllers/AuthController.js +0 -82
  47. package/standardA/controllers/HomeController.js +0 -19
  48. package/standardA/controllers/UserController.js +0 -41
  49. package/standardA/server.js +0 -311
  50. package/standardA/views/auth/dashboard.html +0 -51
  51. package/standardA/views/auth/login.html +0 -47
  52. package/standardA/views/index.html +0 -32
  53. package/standardA/views/users/detail.html +0 -28
  54. package/standardA/views/users/list.html +0 -36
@@ -1,140 +0,0 @@
1
- # Arquitectura del Sistema de Rutas en JERK Framework
2
-
3
- ## Descripción General
4
-
5
- El sistema de rutas en JERK Framework permite definir endpoints de API mediante dos métodos principales:
6
- 1. Archivo JSON (`routes.json`) - Carga masiva de rutas
7
- 2. Método `addRoute()` - Definición individual de rutas
8
-
9
- ## Componentes Principales
10
-
11
- ### 1. APIServer (lib/core/server.js)
12
-
13
- Componente principal que gestiona las rutas y el ciclo de vida de la solicitud HTTP.
14
-
15
- **Características:**
16
- - Almacena rutas en el array `this.routes`
17
- - Implementa el método `addRoute(method, path, handler)` para definir rutas individuales
18
- - Maneja el enrutamiento en `findRoute(method, pathname)`
19
- - Soporta rutas parametrizadas con conversión a expresiones regulares
20
- - Mantiene un cache de expresiones regulares para rutas parametrizadas
21
- - Ejecuta middlewares antes de los handlers de rutas
22
-
23
- **Método `addRoute`:**
24
- - Recibe: método HTTP, path y handler
25
- - No soporta autenticación por ruta
26
- - No soporta content-type por ruta
27
- - No carga controladores desde archivos externos
28
- - Simplemente registra la ruta en el array
29
-
30
- ### 2. RouteLoader (lib/loader/routeLoader.js)
31
-
32
- Componente encargado de cargar rutas desde archivos JSON.
33
-
34
- **Características:**
35
- - Lee y parsea archivos JSON de rutas
36
- - Valida la estructura del archivo de rutas
37
- - Carga controladores desde archivos externos
38
- - Aplica autenticación por ruta
39
- - Aplica content-type por ruta
40
- - Dispara hooks antes y después de cargar rutas
41
- - Soporta recarga automática de rutas
42
-
43
- **Método `loadSingleRoute`:**
44
- - Carga el módulo del controlador
45
- - Obtiene el handler del controlador
46
- - Aplica content-type si está especificado
47
- - Aplica autenticación si está especificada
48
- - Integra el handler procesado con el servidor usando `server.addRoute`
49
-
50
- ## Funcionalidades Soportadas por routes.json
51
-
52
- ### 1. Estructura Básica
53
- ```json
54
- {
55
- "path": "/ruta/ejemplo",
56
- "method": "GET",
57
- "controller": "./controllers/EjemploController.js",
58
- "handler": "metodoHandler"
59
- }
60
- ```
61
-
62
- ### 2. Content-Type por Ruta
63
- ```json
64
- {
65
- "contentType": "application/json"
66
- }
67
- ```
68
-
69
- ### 3. Autenticación por Ruta
70
- ```json
71
- {
72
- "auth": "jwt",
73
- "authOptions": {
74
- "jwtSecret": "secreto-ejemplo"
75
- }
76
- }
77
- ```
78
-
79
- Tipos de autenticación soportados:
80
- - `jwt` - Autenticación JWT
81
- - `apiKey` - Autenticación por API Key
82
- - `session` - Autenticación por sesión
83
- - Otros tipos registrados en el authenticator
84
-
85
- ### 4. Rutas Parametrizadas
86
- Soporta rutas con parámetros como `/usuarios/:id` que se convierten a expresiones regulares.
87
-
88
- ## Comparativa: routes.json vs addRoute()
89
-
90
- | Característica | routes.json | addRoute() |
91
- |---|---|---|
92
- | Definición de rutas | Masiva (archivo JSON) | Individual |
93
- | Carga de controladores | Automática desde archivos | Manual (función handler) |
94
- | Autenticación por ruta | ✅ Soportada | ❌ No soportada |
95
- | Content-Type por ruta | ✅ Soportado | ❌ No soportado |
96
- | Opciones de autenticación | ✅ Soportadas | ❌ No soportadas |
97
- | Rutas parametrizadas | ✅ Soportadas | ✅ Soportadas |
98
- | Integración con hooks | ✅ Soportada | ❌ No soportada |
99
-
100
- ## Flujo de Procesamiento de Rutas
101
-
102
- ### Para routes.json:
103
- 1. `RouteLoader.loadRoutes()` lee el archivo JSON
104
- 2. Valida la estructura del archivo
105
- 3. Para cada ruta, `loadSingleRoute()`:
106
- - Carga el módulo del controlador
107
- - Obtiene el handler
108
- - Aplica content-type si existe
109
- - Aplica autenticación si existe
110
- - Llama a `server.addRoute()` con el handler procesado
111
- 4. El servidor procesa las solicitudes normalmente
112
-
113
- ### Para addRoute():
114
- 1. Cliente llama directamente `server.addRoute(method, path, handler)`
115
- 2. La ruta se registra directamente en `this.routes`
116
- 3. El servidor procesa las solicitudes normalmente
117
-
118
- ## Problemas Identificados
119
-
120
- ### 1. Incompatibilidad entre ambos sistemas
121
- - No hay coordinación entre rutas definidas vía `routes.json` y `addRoute()`
122
- - Ambos sistemas operan de forma independiente
123
-
124
- ### 2. Diferencia de funcionalidades
125
- - `routes.json` soporta muchas más características que `addRoute()`
126
- - `addRoute()` es mucho más básico
127
-
128
- ## Soluciones Potenciales
129
-
130
- ### 1. Extender el método addRoute()
131
- Modificar `addRoute()` para que acepte un objeto de opciones similar al usado en `routes.json`, permitiendo:
132
- - Especificar content-type
133
- - Configurar autenticación
134
- - Definir opciones de autenticación
135
-
136
- ### 2. Crear un método interno común
137
- Crear un método interno que procese las rutas con todas las funcionalidades y que sea utilizado tanto por `RouteLoader` como por `addRoute()`.
138
-
139
- ### 3. Mantener compatibilidad
140
- Cualquier cambio debe mantener la compatibilidad con el sistema existente de `routes.json`.