jerkjs 2.0.0 → 2.0.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.
- package/LICENSE +17 -16
- package/README.md.backup +169 -0
- package/cookies.txt +5 -0
- package/{doc → docs}/frontend-and-sessions.md +6 -9
- package/examples/frontend/README.md +3 -3
- package/examples/frontend/controllers/authController.js +2 -2
- package/examples/frontend/controllers/pageController.js +5 -5
- package/examples/public/README.md +2 -2
- package/examples/public/controllers/mainController.js +1 -1
- package/index.js +2 -10
- package/jerk.jpg +0 -0
- package/package.json +4 -9
- package/v2examplle/v2_json_auth/README.md +2 -2
- package/v2examplle/v2_json_auth/package.json +4 -4
- package/v2examplle/v2_mariadb_auth/README.md +2 -2
- package/v2examplle/v2_mariadb_auth/package.json +4 -4
- package/v2examplle/v2_sqlite_auth/README.md +2 -2
- package/v2examplle/v2_sqlite_auth/package.json +4 -4
- package/doc/EXTENSION_MANUAL.md +0 -958
- package/doc/FIREWALL_MANUAL.md +0 -419
- package/doc/HOOKS_REFERENCE_IMPROVED.md +0 -599
- package/doc/MANUAL_API_SDK.md +0 -539
- package/doc/MANUAL_MVC.md +0 -397
- package/doc/MARIADB_TOKENS_IMPLEMENTATION.md +0 -113
- package/doc/MIDDLEWARE_MANUAL.md +0 -521
- package/doc/OAUTH2_GOOGLE_MANUAL.md +0 -408
- package/examples/advanced/controllers/productController.js +0 -64
- package/examples/advanced/controllers/userController.js +0 -85
- package/examples/advanced/routes.json +0 -51
- package/examples/advanced_example.js +0 -93
- package/examples/basic/controllers/userController.js +0 -85
- package/examples/basic_example.js +0 -72
- package/examples/mvc_example/app.js +0 -138
- package/examples/mvc_example/views/home/index.html +0 -26
- package/examples/mvc_example/views/home/simple.html +0 -3
- package/examples/mvc_example/views/layout.html +0 -23
- package/examples/mvc_example/views/test.html +0 -3
- package/examples/mvc_example/views/user/invalid.html +0 -6
- package/examples/mvc_example/views/user/list.html +0 -36
- package/examples/mvc_example/views/user/notfound.html +0 -6
- package/examples/mvc_example/views/user/profile.html +0 -11
- package/examples/mvc_routes_example/app.js +0 -34
- package/examples/mvc_routes_example/controllers/mainController.js +0 -27
- package/examples/mvc_routes_example/controllers/productController.js +0 -47
- package/examples/mvc_routes_example/controllers/userController.js +0 -76
- package/examples/mvc_routes_example/routes.json +0 -30
- package/examples/mvc_routes_example/views/layout.html +0 -31
- package/examples/mvc_routes_example/views/main/index.html +0 -11
- package/examples/mvc_routes_example/views/product/catalog.html +0 -24
- package/examples/mvc_routes_example/views/user/invalid.html +0 -6
- package/examples/mvc_routes_example/views/user/list.html +0 -40
- package/examples/mvc_routes_example/views/user/notfound.html +0 -6
- package/examples/mvc_routes_example/views/user/profile.html +0 -18
- package/examples/v2/README.md +0 -72
- package/examples/v2/app.js +0 -74
- package/examples/v2/app_fixed.js +0 -74
- package/examples/v2/controllers/authController.js +0 -64
- package/examples/v2/controllers/mainController.js +0 -24
- package/examples/v2/controllers/protectedController.js +0 -12
- package/examples/v2/controllers/userController.js +0 -16
- package/examples/v2/package.json +0 -27
- package/examples/v2/routes.json +0 -30
- package/examples/v2/test_api.sh +0 -47
- package/examples/v2/tokens_example.sqlite +0 -0
- package/examples/v2.1_firewall_demo/README.md +0 -113
- package/examples/v2.1_firewall_demo/app.js +0 -182
- package/examples/v2.1_firewall_demo/package.json +0 -27
- package/examples/v2.1_hooks_demo/README.md +0 -85
- package/examples/v2.1_hooks_demo/app.js +0 -101
- package/examples/v2.1_hooks_demo/controllers/hooksController.js +0 -29
- package/examples/v2.1_hooks_demo/controllers/mainController.js +0 -18
- package/examples/v2.1_hooks_demo/package.json +0 -27
- package/examples/v2.1_hooks_demo/routes.json +0 -16
- package/examples/v2.1_openapi_demo/README.md +0 -82
- package/examples/v2.1_openapi_demo/app.js +0 -296
- package/examples/v2.1_openapi_demo/package.json +0 -26
- package/examples/v2_cors/README.md +0 -82
- package/examples/v2_cors/app.js +0 -108
- package/examples/v2_cors/package.json +0 -23
- package/examples/v2_json_auth/README.md +0 -83
- package/examples/v2_json_auth/app.js +0 -72
- package/examples/v2_json_auth/controllers/authController.js +0 -67
- package/examples/v2_json_auth/controllers/mainController.js +0 -16
- package/examples/v2_json_auth/controllers/protectedController.js +0 -12
- package/examples/v2_json_auth/controllers/tokenController.js +0 -28
- package/examples/v2_json_auth/controllers/userController.js +0 -15
- package/examples/v2_json_auth/package.json +0 -26
- package/examples/v2_json_auth/routes.json +0 -37
- package/examples/v2_json_auth/tokens.json +0 -20
- package/examples/v2_mariadb_auth/README.md +0 -94
- package/examples/v2_mariadb_auth/app.js +0 -81
- package/examples/v2_mariadb_auth/controllers/authController.js +0 -95
- package/examples/v2_mariadb_auth/controllers/mainController.js +0 -31
- package/examples/v2_mariadb_auth/controllers/protectedController.js +0 -12
- package/examples/v2_mariadb_auth/controllers/userController.js +0 -17
- package/examples/v2_mariadb_auth/package.json +0 -27
- package/examples/v2_mariadb_auth/routes.json +0 -37
- package/examples/v2_no_auth/README.md +0 -75
- package/examples/v2_no_auth/app.js +0 -72
- package/examples/v2_no_auth/controllers/healthController.js +0 -14
- package/examples/v2_no_auth/controllers/mainController.js +0 -19
- package/examples/v2_no_auth/controllers/productController.js +0 -31
- package/examples/v2_no_auth/controllers/publicController.js +0 -16
- package/examples/v2_no_auth/package.json +0 -22
- package/examples/v2_no_auth/routes.json +0 -37
- package/examples/v2_oauth/README.md +0 -70
- package/examples/v2_oauth/app.js +0 -90
- package/examples/v2_oauth/controllers/mainController.js +0 -45
- package/examples/v2_oauth/controllers/oauthController.js +0 -247
- package/examples/v2_oauth/controllers/protectedController.js +0 -13
- package/examples/v2_oauth/controllers/userController.js +0 -17
- package/examples/v2_oauth/package.json +0 -26
- package/examples/v2_oauth/routes.json +0 -44
- package/examples/v2_openapi/README.md +0 -77
- package/examples/v2_openapi/app.js +0 -222
- package/examples/v2_openapi/controllers/authController.js +0 -52
- package/examples/v2_openapi/controllers/mainController.js +0 -26
- package/examples/v2_openapi/controllers/productController.js +0 -17
- package/examples/v2_openapi/controllers/userController.js +0 -27
- package/examples/v2_openapi/package.json +0 -26
- package/examples/v2_openapi/routes.json +0 -37
- package/generate_token.js +0 -10
- package/lib/mvc/controllerBase.js +0 -207
- package/lib/mvc/viewEngine.js +0 -752
package/LICENSE
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
Apache License
|
|
2
2
|
Version 2.0, January 2004
|
|
3
3
|
http://www.apache.org/licenses/
|
|
4
4
|
|
|
@@ -100,24 +100,25 @@
|
|
|
100
100
|
(c) You must retain, in the Source form of any Derivative Works
|
|
101
101
|
that You distribute, all copyright, patent, trademark, and
|
|
102
102
|
attribution notices from the Source form of the Work,
|
|
103
|
-
excluding those notices that
|
|
104
|
-
Derivative Works; and
|
|
103
|
+
excluding those notices that do not pertain to any part of
|
|
104
|
+
the Derivative Works; and
|
|
105
105
|
|
|
106
106
|
(d) If the Work includes a "NOTICE" text file as part of its
|
|
107
|
-
distribution, then any Derivative Works that You
|
|
107
|
+
distribution, then any Derivative Works that You distribute must
|
|
108
108
|
include a readable copy of the attribution notices contained
|
|
109
|
-
within such NOTICE file, excluding those notices that
|
|
110
|
-
any part of the Derivative Works, in at least one
|
|
111
|
-
places: within a NOTICE text file distributed
|
|
112
|
-
Derivative Works; within the Source form or
|
|
113
|
-
if provided along with the Derivative Works; or,
|
|
114
|
-
generated by the Derivative Works, if and
|
|
115
|
-
notices normally appear. The contents
|
|
116
|
-
|
|
117
|
-
may add Your own attribution
|
|
118
|
-
|
|
119
|
-
from the Work, provided
|
|
120
|
-
|
|
109
|
+
within such NOTICE file, excluding those notices that do not
|
|
110
|
+
pertain to any part of the Derivative Works, in at least one
|
|
111
|
+
of the following places: within a NOTICE text file distributed
|
|
112
|
+
as part of the Derivative Works; within the Source form or
|
|
113
|
+
documentation, if provided along with the Derivative Works; or,
|
|
114
|
+
within a display generated by the Derivative Works, if and
|
|
115
|
+
wherever such third-party notices normally appear. The contents
|
|
116
|
+
of the NOTICE file are for informational purposes only and
|
|
117
|
+
do not modify the License. You may add Your own attribution
|
|
118
|
+
notices within Derivative Works that You distribute, alongside
|
|
119
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
120
|
+
that such additional attribution notices cannot be construed
|
|
121
|
+
as modifying the License.
|
|
121
122
|
|
|
122
123
|
You may add Your own copyright statement to Your modifications and
|
|
123
124
|
may provide additional or different license terms and conditions
|
package/README.md.backup
ADDED
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# JERK Framework v2.0
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
Visita nuestra página web: https://jerk.page.gd/
|
|
6
|
+
Repositorio oficial: https://gitlab.com/bytedogssyndicate1/jerk/
|
|
7
|
+
|
|
8
|
+
## Características
|
|
9
|
+
|
|
10
|
+
- **Arquitectura Modular**: Componentes independientes para mayor flexibilidad
|
|
11
|
+
- **Seguridad Avanzada**: Firewall integrado (WAF) con detección de ataques
|
|
12
|
+
- **Sistema de Hooks**: Similar al sistema de WordPress para extensibilidad
|
|
13
|
+
- **Autenticación Flexible**: Soporte para JWT, API Keys, Basic Auth, OAuth2, OpenID Connect
|
|
14
|
+
- **Almacenamiento de Tokens**: Soporte para memoria, JSON, SQLite y MariaDB
|
|
15
|
+
- **Enrutamiento Avanzado**: Soporte para rutas parametrizadas y anidadas
|
|
16
|
+
- **Soporte para Frontend**: Capacidad de servir contenido HTML y otros tipos de contenido
|
|
17
|
+
- **Configuración de Content-Type**: Especificación de headers Content-Type en routes.json
|
|
18
|
+
- **Middlewares Integrados**: CORS, rate limiting, compresión, firewall, etc.
|
|
19
|
+
- **Gestión de Controladores**: Carga dinámica de controladores desde archivos
|
|
20
|
+
- **Carga de Rutas**: Definición de rutas desde archivos JSON
|
|
21
|
+
- **Sistema de Sesiones**: Gestión completa de sesiones con soporte para autenticación
|
|
22
|
+
- **Motor de Plantillas MVC**: Sistema profesional de vistas con soporte para filtros, helpers y hooks
|
|
23
|
+
- **Extensibilidad**: Sistema de hooks y filters para personalización
|
|
24
|
+
|
|
25
|
+
## Instalación
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npm install jerkjs
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Uso Básico
|
|
32
|
+
|
|
33
|
+
```javascript
|
|
34
|
+
const { APIServer, Router, Logger } = require('jerkjs');
|
|
35
|
+
|
|
36
|
+
// Crear instancia del servidor
|
|
37
|
+
const server = new APIServer({
|
|
38
|
+
port: 3000,
|
|
39
|
+
host: 'localhost'
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
// Crear instancia del logger
|
|
43
|
+
const logger = new Logger({ level: 'info' });
|
|
44
|
+
|
|
45
|
+
// Definir rutas
|
|
46
|
+
server.addRoute('GET', '/', (req, res) => {
|
|
47
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
48
|
+
res.end(JSON.stringify({ message: '¡Hola Mundo!' }));
|
|
49
|
+
});
|
|
50
|
+
|
|
51
|
+
// Iniciar el servidor
|
|
52
|
+
server.start();
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
## Componentes Principales
|
|
56
|
+
|
|
57
|
+
### APIServer
|
|
58
|
+
Servidor HTTP/HTTPS básico con soporte para rutas parametrizadas, middlewares y configuración avanzada.
|
|
59
|
+
|
|
60
|
+
### Router
|
|
61
|
+
Sistema de enrutamiento avanzado con soporte para rutas anidadas y prefijos.
|
|
62
|
+
|
|
63
|
+
### Authenticator
|
|
64
|
+
Middleware de autenticación con soporte para múltiples métodos (JWT, API Keys, Basic Auth, OAuth2, OpenID Connect).
|
|
65
|
+
|
|
66
|
+
### SecurityEnhancedServer
|
|
67
|
+
Servidor con funcionalidades de seguridad avanzada (WAF) integradas.
|
|
68
|
+
|
|
69
|
+
### RouteLoader
|
|
70
|
+
Carga de rutas desde archivos JSON con soporte para autenticación, controladores y especificación de content-type.
|
|
71
|
+
|
|
72
|
+
### TokenManager
|
|
73
|
+
Gestión de tokens JWT con diferentes tipos de almacenamiento (memoria, JSON, SQLite, MariaDB).
|
|
74
|
+
|
|
75
|
+
### Firewall
|
|
76
|
+
Middleware de firewall con detección de patrones de ataque y listas blancas/negras.
|
|
77
|
+
|
|
78
|
+
### Hooks System
|
|
79
|
+
Sistema de hooks y filters similar al de WordPress para extensibilidad.
|
|
80
|
+
|
|
81
|
+
### SessionManager
|
|
82
|
+
Sistema completo de gestión de sesiones con soporte para autenticación basada en sesiones.
|
|
83
|
+
|
|
84
|
+
### ViewEngine
|
|
85
|
+
Motor de plantillas profesional con soporte para filtros, helpers, condiciones, bucles y hooks.
|
|
86
|
+
|
|
87
|
+
### ControllerBase
|
|
88
|
+
Controlador base que facilita el desarrollo de controladores MVC con soporte para vistas.
|
|
89
|
+
|
|
90
|
+
## Seguridad
|
|
91
|
+
|
|
92
|
+
El framework incluye múltiples capas de seguridad:
|
|
93
|
+
|
|
94
|
+
- **Web Application Firewall (WAF)**: Detección de SQL injection, XSS, path traversal, etc.
|
|
95
|
+
- **Rate Limiting**: Limitación de peticiones por IP o usuario
|
|
96
|
+
- **Firewall**: Bloqueo automático por intentos fallidos
|
|
97
|
+
- **Listas Blancas/Negras**: Control de acceso por IP
|
|
98
|
+
- **Auditoría de Seguridad**: Registro de eventos de seguridad
|
|
99
|
+
- **Autenticación Robusta**: Soporte para múltiples métodos de autenticación
|
|
100
|
+
|
|
101
|
+
## Sistema de Hooks
|
|
102
|
+
|
|
103
|
+
El framework incluye un sistema de hooks y filters similar al de WordPress:
|
|
104
|
+
|
|
105
|
+
```javascript
|
|
106
|
+
const { hooks } = require('jerkjs');
|
|
107
|
+
|
|
108
|
+
// Registrar una acción
|
|
109
|
+
hooks.addAction('firewall_request_blocked', (rule, clientIP, req, res) => {
|
|
110
|
+
console.log(`Solicitud bloqueada: ${rule.name} para IP: ${clientIP}`);
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
// Registrar un filtro
|
|
114
|
+
hooks.addFilter('session_create_data', (userData, req) => {
|
|
115
|
+
return {
|
|
116
|
+
...userData,
|
|
117
|
+
ipAddress: req.headers['x-forwarded-for'] || req.connection.remoteAddress,
|
|
118
|
+
createdAt: new Date().toISOString()
|
|
119
|
+
};
|
|
120
|
+
});
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Motor de Plantillas MVC
|
|
124
|
+
|
|
125
|
+
El framework incluye un motor de plantillas profesional con soporte para:
|
|
126
|
+
|
|
127
|
+
- Variables: `{{variable}}`
|
|
128
|
+
- Condiciones: `{{if variable}}contenido{{endif}}`
|
|
129
|
+
- Bucles: `{{foreach:array}}contenido{{endforeach}}`
|
|
130
|
+
- Inclusiones: `{{include:header}}`
|
|
131
|
+
- Filtros: `{{variable|upper}}`
|
|
132
|
+
- Helpers personalizados
|
|
133
|
+
|
|
134
|
+
## Gestión de Sesiones
|
|
135
|
+
|
|
136
|
+
El framework incluye un sistema completo de gestión de sesiones:
|
|
137
|
+
|
|
138
|
+
```javascript
|
|
139
|
+
const { SessionManager } = require('jerkjs');
|
|
140
|
+
|
|
141
|
+
const sessionManager = new SessionManager({
|
|
142
|
+
secret: 'your-session-secret',
|
|
143
|
+
timeout: 3600000 // 1 hora
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
// Usar como middleware
|
|
147
|
+
server.use(sessionManager.middleware());
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Ejemplos
|
|
151
|
+
|
|
152
|
+
El proyecto incluye varios ejemplos completos:
|
|
153
|
+
|
|
154
|
+
- **v2_json_auth**: Autenticación JWT con tokens almacenados en JSON
|
|
155
|
+
- **v2_mariadb_auth**: Autenticación JWT con tokens almacenados en MariaDB
|
|
156
|
+
- **v2_sqlite_auth**: Autenticación JWT con tokens almacenados en SQLite
|
|
157
|
+
- **public**: API pública de ejemplo con CORS y rate limiting
|
|
158
|
+
- **frontend**: Ejemplo de servidor que combina API y frontend con diferentes content-types
|
|
159
|
+
- **hooks**: Ejemplo de uso del sistema de hooks
|
|
160
|
+
|
|
161
|
+
Para ver los ejemplos completos, visita los directorios `v2examplle/` y `examples/`.
|
|
162
|
+
|
|
163
|
+
## Contribuciones
|
|
164
|
+
|
|
165
|
+
Las contribuciones son bienvenidas. Por favor, abre un issue o envía un pull request en GitHub.
|
|
166
|
+
|
|
167
|
+
## Licencia
|
|
168
|
+
|
|
169
|
+
Apache 2.0
|
package/cookies.txt
ADDED
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
# Frontend y Sesiones con API SDK JS
|
|
2
2
|
|
|
3
|
-
Visita nuestra página web: https://jerk.page.gd/
|
|
4
|
-
Repositorio oficial: https://gitlab.com/bytedogssyndicate1/jerk/
|
|
5
|
-
|
|
6
3
|
## Introducción
|
|
7
4
|
|
|
8
5
|
API SDK JS no solo es un framework para crear APIs, sino que ahora también soporta la creación de aplicaciones web completas con frontend y sistema de sesiones. Esta funcionalidad permite a los desarrolladores crear aplicaciones web completas con autenticación basada en sesiones, almacenamiento de datos y mucho más.
|
|
@@ -50,7 +47,7 @@ El framework ahora puede servir diferentes tipos de contenido:
|
|
|
50
47
|
Para usar el sistema de sesiones, primero debes configurar el middleware en tu aplicación:
|
|
51
48
|
|
|
52
49
|
```javascript
|
|
53
|
-
const { APIServer, SessionManager, Cors } = require('
|
|
50
|
+
const { APIServer, SessionManager, Cors } = require('jerkjs');
|
|
54
51
|
|
|
55
52
|
async function startServer() {
|
|
56
53
|
const server = new APIServer({
|
|
@@ -190,7 +187,7 @@ El sistema de sesiones está completamente integrado con el sistema de hooks, fi
|
|
|
190
187
|
#### Registrar actividad de sesión
|
|
191
188
|
|
|
192
189
|
```javascript
|
|
193
|
-
const { hooks } = require('
|
|
190
|
+
const { hooks } = require('jerkjs');
|
|
194
191
|
|
|
195
192
|
// Registrar cuando se crea una sesión
|
|
196
193
|
hooks.addAction('session_created', (sessionId, sessionData) => {
|
|
@@ -206,7 +203,7 @@ hooks.addAction('session_destroyed', (sessionId, sessionData) => {
|
|
|
206
203
|
#### Modificar datos de sesión antes de crearla
|
|
207
204
|
|
|
208
205
|
```javascript
|
|
209
|
-
const { hooks } = require('
|
|
206
|
+
const { hooks } = require('jerkjs');
|
|
210
207
|
|
|
211
208
|
// Añadir información de IP y fecha a los datos de sesión
|
|
212
209
|
hooks.addFilter('session_create_data', (userData, req) => {
|
|
@@ -221,7 +218,7 @@ hooks.addFilter('session_create_data', (userData, req) => {
|
|
|
221
218
|
#### Personalizar el manejo de autenticación fallida
|
|
222
219
|
|
|
223
220
|
```javascript
|
|
224
|
-
const { hooks } = require('
|
|
221
|
+
const { hooks } = require('jerkjs');
|
|
225
222
|
|
|
226
223
|
// Registrar intentos de acceso no autorizado
|
|
227
224
|
hooks.addAction('session_auth_failed', (req, res, redirectTo) => {
|
|
@@ -238,7 +235,7 @@ hooks.addAction('session_auth_failed', (req, res, redirectTo) => {
|
|
|
238
235
|
#### Extender datos de sesión durante la actualización
|
|
239
236
|
|
|
240
237
|
```javascript
|
|
241
|
-
const { hooks } = require('
|
|
238
|
+
const { hooks } = require('jerkjs');
|
|
242
239
|
|
|
243
240
|
// Añadir marca de tiempo a cada actualización de sesión
|
|
244
241
|
hooks.addFilter('session_update_data', (newData, req, sessionId) => {
|
|
@@ -262,7 +259,7 @@ const {
|
|
|
262
259
|
Logger,
|
|
263
260
|
Cors,
|
|
264
261
|
SessionManager
|
|
265
|
-
} = require('
|
|
262
|
+
} = require('jerkjs');
|
|
266
263
|
|
|
267
264
|
async function startServer() {
|
|
268
265
|
const server = new APIServer({
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Ejemplo Frontend con
|
|
1
|
+
# Ejemplo Frontend con JERK JS
|
|
2
2
|
|
|
3
|
-
Este ejemplo demuestra cómo el Framework
|
|
3
|
+
Este ejemplo demuestra cómo el Framework JERK JS puede utilizarse para servir tanto APIs como contenido HTML para frontends, gracias a la nueva funcionalidad de especificación de content-type en el archivo routes.json.
|
|
4
4
|
|
|
5
5
|
## Características
|
|
6
6
|
|
|
@@ -12,7 +12,7 @@ Este ejemplo demuestra cómo el Framework API SDK JS puede utilizarse para servi
|
|
|
12
12
|
|
|
13
13
|
## Configuración
|
|
14
14
|
|
|
15
|
-
1. Asegúrate de tener instaladas las dependencias del framework
|
|
15
|
+
1. Asegúrate de tener instaladas las dependencias del framework JERK
|
|
16
16
|
2. No se requiere configuración adicional para este ejemplo
|
|
17
17
|
|
|
18
18
|
## Uso
|
|
@@ -51,7 +51,7 @@ const authController = {
|
|
|
51
51
|
</main>
|
|
52
52
|
|
|
53
53
|
<footer>
|
|
54
|
-
<p>© 2026
|
|
54
|
+
<p>© 2026 JERK JS Framework</p>
|
|
55
55
|
</footer>
|
|
56
56
|
</div>
|
|
57
57
|
<script src="/script.js"></script>
|
|
@@ -200,7 +200,7 @@ const authController = {
|
|
|
200
200
|
</main>
|
|
201
201
|
|
|
202
202
|
<footer>
|
|
203
|
-
<p>© 2026
|
|
203
|
+
<p>© 2026 JERK JS Framework</p>
|
|
204
204
|
</footer>
|
|
205
205
|
</div>
|
|
206
206
|
<script src="/script.js"></script>
|
|
@@ -28,7 +28,7 @@ const pageController = {
|
|
|
28
28
|
|
|
29
29
|
<main>
|
|
30
30
|
<section class="hero">
|
|
31
|
-
<h2>Framework
|
|
31
|
+
<h2>Framework JERK JS</h2>
|
|
32
32
|
<p>Esta es una demostración de cómo el framework puede servir tanto APIs como contenido HTML para frontends.</p>
|
|
33
33
|
<p>El content-type de esta página se establece desde el archivo routes.json.</p>
|
|
34
34
|
</section>
|
|
@@ -45,7 +45,7 @@ const pageController = {
|
|
|
45
45
|
</main>
|
|
46
46
|
|
|
47
47
|
<footer>
|
|
48
|
-
<p>© 2026
|
|
48
|
+
<p>© 2026 JERK JS Framework</p>
|
|
49
49
|
</footer>
|
|
50
50
|
</div>
|
|
51
51
|
<script src="/script.js"></script>
|
|
@@ -84,7 +84,7 @@ const pageController = {
|
|
|
84
84
|
<main>
|
|
85
85
|
<section>
|
|
86
86
|
<h2>Nuestro Framework</h2>
|
|
87
|
-
<p>El Framework
|
|
87
|
+
<p>El Framework JERK JS es una solución completa para construir APIs seguras y escalables.</p>
|
|
88
88
|
|
|
89
89
|
<h3>Capacidades Extendidas</h3>
|
|
90
90
|
<p>Ahora también puede servir contenido HTML y otros tipos de contenido gracias a la nueva funcionalidad de especificación de content-type en routes.json.</p>
|
|
@@ -101,7 +101,7 @@ const pageController = {
|
|
|
101
101
|
</main>
|
|
102
102
|
|
|
103
103
|
<footer>
|
|
104
|
-
<p>© 2026
|
|
104
|
+
<p>© 2026 JERK JS Framework</p>
|
|
105
105
|
</footer>
|
|
106
106
|
</div>
|
|
107
107
|
<script src="/script.js"></script>
|
|
@@ -163,7 +163,7 @@ const pageController = {
|
|
|
163
163
|
</main>
|
|
164
164
|
|
|
165
165
|
<footer>
|
|
166
|
-
<p>© 2026
|
|
166
|
+
<p>© 2026 JERK JS Framework</p>
|
|
167
167
|
</footer>
|
|
168
168
|
</div>
|
|
169
169
|
<script src="/script.js"></script>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# API Pública de Ejemplo
|
|
2
2
|
|
|
3
|
-
Este ejemplo demuestra cómo crear una API pública usando el Framework
|
|
3
|
+
Este ejemplo demuestra cómo crear una API pública usando el Framework JERK JS. La API incluye endpoints para gestionar usuarios y está protegida con CORS y rate limiting.
|
|
4
4
|
|
|
5
5
|
## Características
|
|
6
6
|
|
|
@@ -13,7 +13,7 @@ Este ejemplo demuestra cómo crear una API pública usando el Framework API SDK
|
|
|
13
13
|
|
|
14
14
|
## Configuración
|
|
15
15
|
|
|
16
|
-
1. Asegúrate de tener instaladas las dependencias del framework
|
|
16
|
+
1. Asegúrate de tener instaladas las dependencias del framework JERK
|
|
17
17
|
2. No se requiere configuración adicional para esta API pública
|
|
18
18
|
|
|
19
19
|
## Uso
|
|
@@ -4,7 +4,7 @@ const mainController = {
|
|
|
4
4
|
res.end(JSON.stringify({
|
|
5
5
|
message: 'Bienvenido a la API Pública de Ejemplo',
|
|
6
6
|
version: '1.0.0',
|
|
7
|
-
description: 'Esta es una API pública de ejemplo creada con el Framework
|
|
7
|
+
description: 'Esta es una API pública de ejemplo creada con el Framework JERK JS',
|
|
8
8
|
endpoints: {
|
|
9
9
|
'GET /': 'Este mensaje',
|
|
10
10
|
'GET /users': 'Obtener lista de usuarios',
|
package/index.js
CHANGED
|
@@ -30,10 +30,6 @@ const SecurityEnhancedServer = require('./lib/core/securityEnhancedServer');
|
|
|
30
30
|
const Firewall = require('./lib/middleware/firewall');
|
|
31
31
|
const { SessionManager, sessionAuth } = require('./lib/middleware/session');
|
|
32
32
|
|
|
33
|
-
// Componentes MVC
|
|
34
|
-
const ViewEngine = require('./lib/mvc/viewEngine');
|
|
35
|
-
const ControllerBase = require('./lib/mvc/controllerBase');
|
|
36
|
-
|
|
37
33
|
// Exportar todos los componentes del framework
|
|
38
34
|
module.exports = {
|
|
39
35
|
// Componentes fundamentales (v1.0)
|
|
@@ -68,15 +64,11 @@ module.exports = {
|
|
|
68
64
|
|
|
69
65
|
// Componentes de sesión (v2.2.0)
|
|
70
66
|
SessionManager,
|
|
71
|
-
sessionAuth
|
|
72
|
-
|
|
73
|
-
// Componentes MVC (v2.3.0)
|
|
74
|
-
ViewEngine,
|
|
75
|
-
ControllerBase
|
|
67
|
+
sessionAuth
|
|
76
68
|
};
|
|
77
69
|
|
|
78
70
|
// También exportar clases individuales por conveniencia
|
|
79
|
-
module.exports.
|
|
71
|
+
module.exports.JERK = APIServer;
|
|
80
72
|
|
|
81
73
|
// Crear instancia global del sistema de hooks
|
|
82
74
|
module.exports.hooks = new HookSystem();
|
package/jerk.jpg
CHANGED
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jerkjs",
|
|
3
|
-
"version": "2.0.
|
|
4
|
-
"description": "JERK Framework v2.0 - A comprehensive framework for building secure and scalable APIs",
|
|
3
|
+
"version": "2.0.1",
|
|
4
|
+
"description": "JERK Framework v2.0 - A comprehensive framework for building secure and scalable APIs with frontend support, sessions, and template engine",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
@@ -20,11 +20,11 @@
|
|
|
20
20
|
"firewall",
|
|
21
21
|
"waf"
|
|
22
22
|
],
|
|
23
|
-
"author": "JERK Team",
|
|
23
|
+
"author": "JERK Framework Team",
|
|
24
24
|
"license": "Apache-2.0",
|
|
25
25
|
"repository": {
|
|
26
26
|
"type": "git",
|
|
27
|
-
"url": "
|
|
27
|
+
"url": "https://gitlab.com/bytedogssyndicate1/jerk.git"
|
|
28
28
|
},
|
|
29
29
|
"bugs": {
|
|
30
30
|
"url": "https://gitlab.com/bytedogssyndicate1/jerk/issues"
|
|
@@ -38,10 +38,5 @@
|
|
|
38
38
|
},
|
|
39
39
|
"engines": {
|
|
40
40
|
"node": ">=14.0.0"
|
|
41
|
-
},
|
|
42
|
-
"directories": {
|
|
43
|
-
"doc": "doc",
|
|
44
|
-
"example": "examples",
|
|
45
|
-
"lib": "lib"
|
|
46
41
|
}
|
|
47
42
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Ejemplo API con Autenticación JSON
|
|
2
2
|
|
|
3
|
-
Este ejemplo demuestra cómo crear una API con autenticación basada en tokens estáticos almacenados en un archivo JSON utilizando el Framework
|
|
3
|
+
Este ejemplo demuestra cómo crear una API con autenticación basada en tokens estáticos almacenados en un archivo JSON utilizando el Framework JERK.
|
|
4
4
|
|
|
5
5
|
## Características
|
|
6
6
|
|
|
@@ -12,7 +12,7 @@ Este ejemplo demuestra cómo crear una API con autenticación basada en tokens e
|
|
|
12
12
|
|
|
13
13
|
## Configuración
|
|
14
14
|
|
|
15
|
-
1. Asegúrate de tener instaladas las dependencias del framework
|
|
15
|
+
1. Asegúrate de tener instaladas las dependencias del framework JERK
|
|
16
16
|
2. El archivo de tokens `tokens.json` se creará automáticamente al iniciar la aplicación
|
|
17
17
|
|
|
18
18
|
## Uso
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "
|
|
2
|
+
"name": "jerk-json-auth-example",
|
|
3
3
|
"version": "1.0.0",
|
|
4
|
-
"description": "Ejemplo de API con autenticación JSON usando el Framework
|
|
4
|
+
"description": "Ejemplo de API con autenticación JSON usando el Framework JERK",
|
|
5
5
|
"main": "app.js",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"start": "node app.js",
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
"jwt",
|
|
16
16
|
"framework"
|
|
17
17
|
],
|
|
18
|
-
"author": "
|
|
19
|
-
"license": "
|
|
18
|
+
"author": "JERK Framework",
|
|
19
|
+
"license": "Apache-2.0",
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"jsonwebtoken": "^9.0.0"
|
|
22
22
|
},
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Ejemplo API con Autenticación MariaDB
|
|
2
2
|
|
|
3
|
-
Este ejemplo demuestra cómo crear una API con autenticación basada en tokens almacenados en MariaDB utilizando el Framework
|
|
3
|
+
Este ejemplo demuestra cómo crear una API con autenticación basada en tokens almacenados en MariaDB utilizando el Framework JERK.
|
|
4
4
|
|
|
5
5
|
## Características
|
|
6
6
|
|
|
@@ -12,7 +12,7 @@ Este ejemplo demuestra cómo crear una API con autenticación basada en tokens a
|
|
|
12
12
|
|
|
13
13
|
## Configuración
|
|
14
14
|
|
|
15
|
-
1. Asegúrate de tener instaladas las dependencias del framework
|
|
15
|
+
1. Asegúrate de tener instaladas las dependencias del framework JERK
|
|
16
16
|
2. Instala mariadb si aún no está instalado: `npm install mariadb`
|
|
17
17
|
3. Asegúrate de tener MariaDB instalado y en ejecución
|
|
18
18
|
4. Crea la base de datos `token_db` en MariaDB
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "
|
|
2
|
+
"name": "jerk-mariadb-example",
|
|
3
3
|
"version": "1.0.0",
|
|
4
|
-
"description": "Ejemplo de API con autenticación MariaDB usando el Framework
|
|
4
|
+
"description": "Ejemplo de API con autenticación MariaDB usando el Framework JERK",
|
|
5
5
|
"main": "app.js",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"start": "node app.js",
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
"jwt",
|
|
16
16
|
"framework"
|
|
17
17
|
],
|
|
18
|
-
"author": "
|
|
19
|
-
"license": "
|
|
18
|
+
"author": "JERK Framework",
|
|
19
|
+
"license": "Apache-2.0",
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"jsonwebtoken": "^9.0.0",
|
|
22
22
|
"mariadb": "^3.0.0"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Ejemplo API con Autenticación SQLite
|
|
2
2
|
|
|
3
|
-
Este ejemplo demuestra cómo crear una API con autenticación basada en tokens almacenados en SQLite utilizando el Framework
|
|
3
|
+
Este ejemplo demuestra cómo crear una API con autenticación basada en tokens almacenados en SQLite utilizando el Framework JERK.
|
|
4
4
|
|
|
5
5
|
## Características
|
|
6
6
|
|
|
@@ -11,7 +11,7 @@ Este ejemplo demuestra cómo crear una API con autenticación basada en tokens a
|
|
|
11
11
|
|
|
12
12
|
## Configuración
|
|
13
13
|
|
|
14
|
-
1. Asegúrate de tener instaladas las dependencias del framework
|
|
14
|
+
1. Asegúrate de tener instaladas las dependencias del framework JERK
|
|
15
15
|
2. Instala sqlite3 si aún no está instalado: `npm install sqlite3`
|
|
16
16
|
|
|
17
17
|
## Uso
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "
|
|
2
|
+
"name": "jerk-example-v2",
|
|
3
3
|
"version": "1.0.0",
|
|
4
|
-
"description": "Ejemplo de API con autenticación SQLite usando el Framework
|
|
4
|
+
"description": "Ejemplo de API con autenticación SQLite usando el Framework JERK",
|
|
5
5
|
"main": "app.js",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"start": "node app.js",
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
"jwt",
|
|
16
16
|
"framework"
|
|
17
17
|
],
|
|
18
|
-
"author": "
|
|
19
|
-
"license": "
|
|
18
|
+
"author": "JERK Framework",
|
|
19
|
+
"license": "Apache-2.0",
|
|
20
20
|
"dependencies": {
|
|
21
21
|
"jsonwebtoken": "^9.0.0",
|
|
22
22
|
"sqlite3": "^5.1.6"
|