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.
- package/CHANGELOG.md +36 -0
- package/README.md +202 -5
- package/index.js +29 -4
- package/lib/core/server.js +328 -27
- package/lib/loader/routeLoader.js +148 -117
- package/lib/middleware/compressor.js +87 -18
- package/lib/mvc/GenericAdapter.js +136 -0
- package/lib/mvc/MariaDBAdapter.js +315 -0
- package/lib/mvc/MemoryAdapter.js +269 -0
- package/lib/mvc/ModelControllerExample.js +285 -0
- package/lib/mvc/controllerBase.js +60 -0
- package/lib/mvc/modelBase.js +383 -0
- package/lib/mvc/modelManager.js +284 -0
- package/lib/mvc/userModel.js +265 -0
- package/lib/mvc/viewEngine.js +32 -1
- package/lib/utils/mimeType.js +62 -0
- package/package.json +5 -3
- package/JERK_FRAMEWORK_DIAGRAM.txt +0 -492
- package/JERK_FRAMEWORK_DIAGRAM_MERMAID.mmd +0 -124
- package/JERK_FRAMEWORK_DOCUMENTATION.md +0 -527
- package/LICENSE +0 -201
- package/README_EN.md +0 -230
- package/README_PT.md +0 -230
- package/docs/ARQUITECTURA_ROUTES.md +0 -140
- package/docs/EXTENSION_MANUAL.md +0 -955
- package/docs/FIREWALL_MANUAL.md +0 -416
- package/docs/HOOK-2.0.md +0 -512
- package/docs/HOOKS_REFERENCE_IMPROVED.md +0 -596
- package/docs/MANUAL_API_SDK.md +0 -536
- package/docs/MARIADB_TOKENS_IMPLEMENTATION.md +0 -110
- package/docs/MIDDLEWARE_MANUAL.md +0 -518
- package/docs/OAUTH2_GOOGLE_MANUAL.md +0 -405
- package/docs/ROUTING_WITHOUT_JSON_GUIDE.md +0 -454
- package/docs/frontend-and-sessions.md +0 -353
- package/docs/guia_inicio_rapido_jerkjs.md +0 -113
- package/examples/examples.arj +0 -0
- package/standard/CompressionTestController.js +0 -56
- package/standard/HealthController.js +0 -16
- package/standard/HomeController.js +0 -12
- package/standard/ProductController.js +0 -18
- package/standard/README.md +0 -47
- package/standard/UserController.js +0 -23
- package/standard/package.json +0 -22
- package/standard/routes.json +0 -65
- package/standard/server.js +0 -140
- package/standardA/controllers/AuthController.js +0 -82
- package/standardA/controllers/HomeController.js +0 -19
- package/standardA/controllers/UserController.js +0 -41
- package/standardA/server.js +0 -311
- package/standardA/views/auth/dashboard.html +0 -51
- package/standardA/views/auth/login.html +0 -47
- package/standardA/views/index.html +0 -32
- package/standardA/views/users/detail.html +0 -28
- 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`.
|