jerkjs 2.0.0 → 2.0.2
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 +4 -6
- package/README.md.backup +169 -0
- package/cookies.txt +5 -0
- package/{doc → docs}/EXTENSION_MANUAL.md +9 -12
- package/{doc → docs}/FIREWALL_MANUAL.md +5 -8
- package/{doc → docs}/HOOKS_REFERENCE_IMPROVED.md +4 -7
- package/{doc → docs}/MANUAL_API_SDK.md +7 -10
- package/{doc → docs}/MARIADB_TOKENS_IMPLEMENTATION.md +0 -3
- package/{doc → docs}/MIDDLEWARE_MANUAL.md +6 -9
- package/{doc → docs}/OAUTH2_GOOGLE_MANUAL.md +3 -6
- package/{doc → docs}/frontend-and-sessions.md +6 -9
- package/examples/advanced_example.js +8 -8
- package/examples/basic_example.js +4 -4
- 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/mvc_example/app.js +2 -2
- package/examples/mvc_welcome/README.md +34 -0
- package/examples/mvc_welcome/app.js +50 -0
- package/examples/mvc_welcome/controllers/welcomeController.js +41 -0
- package/examples/mvc_welcome/package.json +26 -0
- package/examples/mvc_welcome/views/home/welcome.html +82 -0
- package/examples/public/README.md +2 -2
- package/examples/public/controllers/mainController.js +1 -1
- package/examples/v2/README.md +2 -2
- package/examples/v2/package.json +3 -3
- package/examples/v2.1_firewall_demo/README.md +2 -2
- package/examples/v2.1_firewall_demo/package.json +3 -3
- package/examples/v2.1_hooks_demo/README.md +4 -4
- package/examples/v2.1_hooks_demo/app.js +1 -1
- package/examples/v2.1_hooks_demo/package.json +3 -3
- package/examples/v2.1_openapi_demo/README.md +2 -2
- package/examples/v2.1_openapi_demo/app.js +1 -1
- package/examples/v2.1_openapi_demo/package.json +3 -3
- package/examples/v2_cors/README.md +1 -1
- package/examples/v2_cors/package.json +3 -3
- package/examples/v2_json_auth/README.md +2 -2
- package/examples/v2_json_auth/package.json +3 -3
- package/examples/v2_mariadb_auth/README.md +2 -2
- package/examples/v2_mariadb_auth/package.json +3 -3
- package/examples/v2_no_auth/README.md +2 -2
- package/examples/v2_no_auth/package.json +3 -3
- package/examples/v2_oauth/README.md +1 -1
- package/examples/v2_oauth/controllers/mainController.js +2 -2
- package/examples/v2_oauth/package.json +3 -3
- package/examples/v2_openapi/README.md +2 -2
- package/examples/v2_openapi/app.js +1 -1
- package/examples/v2_openapi/package.json +3 -3
- package/index.js +3 -3
- package/jerk.jpg +0 -0
- package/lib/core/handler.js +1 -1
- package/lib/core/hooks.js +1 -1
- package/lib/core/router.js +1 -1
- package/lib/core/server.js +1 -1
- package/lib/loader/controllerLoader.js +1 -1
- package/lib/loader/routeLoader.js +1 -1
- package/lib/middleware/auditLogger.js +1 -1
- package/lib/middleware/authenticator.js +1 -1
- package/lib/middleware/compressor.js +1 -1
- package/lib/middleware/cors.js +1 -1
- package/lib/middleware/firewall.js +1 -1
- package/lib/middleware/rateLimiter.js +1 -1
- package/lib/middleware/session.js +1 -1
- package/lib/middleware/validator.js +1 -1
- package/lib/mvc/controllerBase.js +1 -1
- package/lib/mvc/viewEngine.js +1 -1
- package/lib/utils/configParser.js +1 -1
- package/lib/utils/logger.js +1 -1
- package/lib/utils/openapiGenerator.js +1 -1
- package/lib/utils/tokenManager.js +1 -1
- 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/MANUAL_MVC.md +0 -397
- package/generate_token.js +0 -10
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
CHANGED
|
@@ -5,8 +5,6 @@
|
|
|
5
5
|
Visita nuestra página web: https://jerk.page.gd/
|
|
6
6
|
Repositorio oficial: https://gitlab.com/bytedogssyndicate1/jerk/
|
|
7
7
|
|
|
8
|
-
JERK Framework es un framework completo para construir APIs seguras y escalables en Node.js. Proporciona una arquitectura modular con soporte para autenticación, seguridad avanzada, enrutamiento flexible, gestión de sesiones, motor de plantillas MVC y muchas características más.
|
|
9
|
-
|
|
10
8
|
## Características
|
|
11
9
|
|
|
12
10
|
- **Arquitectura Modular**: Componentes independientes para mayor flexibilidad
|
|
@@ -27,13 +25,13 @@ JERK Framework es un framework completo para construir APIs seguras y escalables
|
|
|
27
25
|
## Instalación
|
|
28
26
|
|
|
29
27
|
```bash
|
|
30
|
-
npm install
|
|
28
|
+
npm install jerkjs
|
|
31
29
|
```
|
|
32
30
|
|
|
33
31
|
## Uso Básico
|
|
34
32
|
|
|
35
33
|
```javascript
|
|
36
|
-
const { APIServer, Router, Logger } = require('
|
|
34
|
+
const { APIServer, Router, Logger } = require('jerkjs');
|
|
37
35
|
|
|
38
36
|
// Crear instancia del servidor
|
|
39
37
|
const server = new APIServer({
|
|
@@ -105,7 +103,7 @@ El framework incluye múltiples capas de seguridad:
|
|
|
105
103
|
El framework incluye un sistema de hooks y filters similar al de WordPress:
|
|
106
104
|
|
|
107
105
|
```javascript
|
|
108
|
-
const { hooks } = require('
|
|
106
|
+
const { hooks } = require('jerkjs');
|
|
109
107
|
|
|
110
108
|
// Registrar una acción
|
|
111
109
|
hooks.addAction('firewall_request_blocked', (rule, clientIP, req, res) => {
|
|
@@ -138,7 +136,7 @@ El framework incluye un motor de plantillas profesional con soporte para:
|
|
|
138
136
|
El framework incluye un sistema completo de gestión de sesiones:
|
|
139
137
|
|
|
140
138
|
```javascript
|
|
141
|
-
const { SessionManager } = require('
|
|
139
|
+
const { SessionManager } = require('jerkjs');
|
|
142
140
|
|
|
143
141
|
const sessionManager = new SessionManager({
|
|
144
142
|
secret: 'your-session-secret',
|
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
|
# Manual de Extensión del Framework API SDK
|
|
2
2
|
|
|
3
|
-
Visita nuestra página web: https://jerk.page.gd/
|
|
4
|
-
Repositorio oficial: https://gitlab.com/bytedogssyndicate1/jerk/
|
|
5
|
-
|
|
6
3
|
## Tabla de Contenidos
|
|
7
4
|
|
|
8
5
|
1. [Introducción a la Extensión del Framework](#introducción-a-la-extensión-del-framework)
|
|
@@ -301,7 +298,7 @@ Ahora crearemos un ejemplo que demuestra cómo usar el adaptador de SQLite:
|
|
|
301
298
|
|
|
302
299
|
```javascript
|
|
303
300
|
// examples/v2/sqlite_tokens_example.js
|
|
304
|
-
const {
|
|
301
|
+
const { APISDK, Authenticator, Logger } = require('../../index');
|
|
305
302
|
const jwt = require('jsonwebtoken');
|
|
306
303
|
const SQLiteTokenAdapter = require('../../lib/utils/sqliteTokenAdapter');
|
|
307
304
|
|
|
@@ -325,7 +322,7 @@ tokenAdapter.initialize()
|
|
|
325
322
|
logger.info('✅ Conexión a SQLite establecida');
|
|
326
323
|
|
|
327
324
|
// Crear instancia del servidor
|
|
328
|
-
const server = new
|
|
325
|
+
const server = new APISDK({
|
|
329
326
|
port: 8083,
|
|
330
327
|
host: 'localhost'
|
|
331
328
|
});
|
|
@@ -662,7 +659,7 @@ Agregamos la dependencia de SQLite al package.json:
|
|
|
662
659
|
|
|
663
660
|
```json
|
|
664
661
|
{
|
|
665
|
-
"name": "
|
|
662
|
+
"name": "apisdk",
|
|
666
663
|
"version": "1.0.0",
|
|
667
664
|
"description": "Framework para agilizar la creación de APIs",
|
|
668
665
|
"main": "index.js",
|
|
@@ -696,7 +693,7 @@ Agregamos la dependencia de SQLite al package.json:
|
|
|
696
693
|
|
|
697
694
|
```javascript
|
|
698
695
|
// Actualizar index.js para incluir el adaptador de SQLite
|
|
699
|
-
const
|
|
696
|
+
const APISDK = require('./lib/core/server');
|
|
700
697
|
const Router = require('./lib/core/router');
|
|
701
698
|
const HandlerManager = require('./lib/core/handler');
|
|
702
699
|
const Authenticator = require('./lib/middleware/authenticator');
|
|
@@ -716,7 +713,7 @@ const SQLiteTokenAdapter = require('./lib/utils/sqliteTokenAdapter'); // Nuevo a
|
|
|
716
713
|
|
|
717
714
|
module.exports = {
|
|
718
715
|
// Componentes fundamentales (v1.0)
|
|
719
|
-
|
|
716
|
+
APISDK,
|
|
720
717
|
Router,
|
|
721
718
|
HandlerManager,
|
|
722
719
|
Authenticator,
|
|
@@ -738,7 +735,7 @@ module.exports = {
|
|
|
738
735
|
};
|
|
739
736
|
|
|
740
737
|
// También exportar clases individuales por conveniencia
|
|
741
|
-
module.exports.
|
|
738
|
+
module.exports.APISDK = APIServer;
|
|
742
739
|
```
|
|
743
740
|
|
|
744
741
|
## Guía de Implementación
|
|
@@ -856,14 +853,14 @@ describe('SQLiteTokenAdapter', () => {
|
|
|
856
853
|
|
|
857
854
|
```javascript
|
|
858
855
|
// test_integration.js
|
|
859
|
-
const {
|
|
856
|
+
const { APISDK, Authenticator } = require('./index');
|
|
860
857
|
const SQLiteTokenAdapter = require('./lib/utils/sqliteTokenAdapter');
|
|
861
858
|
|
|
862
859
|
async function testIntegration() {
|
|
863
860
|
const adapter = new SQLiteTokenAdapter({ dbPath: './integration_test.sqlite' });
|
|
864
861
|
await adapter.initialize();
|
|
865
862
|
|
|
866
|
-
const server = new
|
|
863
|
+
const server = new APISDK({ port: 9999 });
|
|
867
864
|
const authenticator = new Authenticator();
|
|
868
865
|
|
|
869
866
|
// Registrar estrategia con SQLite
|
|
@@ -895,7 +892,7 @@ Proporcionar documentación clara sobre cómo usar la extensión:
|
|
|
895
892
|
/**
|
|
896
893
|
* Uso del adaptador de SQLite
|
|
897
894
|
*/
|
|
898
|
-
const {
|
|
895
|
+
const { APISDK, Authenticator, SQLiteTokenAdapter } = require('apisdk');
|
|
899
896
|
|
|
900
897
|
const adapter = new SQLiteTokenAdapter({
|
|
901
898
|
dbPath: './tokens.sqlite',
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
# Manual de Uso del Módulo de Firewall
|
|
2
2
|
|
|
3
|
-
Visita nuestra página web: https://jerk.page.gd/
|
|
4
|
-
Repositorio oficial: https://gitlab.com/bytedogssyndicate1/jerk/
|
|
5
|
-
|
|
6
3
|
## Índice
|
|
7
4
|
1. [Introducción](#introducción)
|
|
8
5
|
2. [Instalación y Configuración](#instalación-y-configuración)
|
|
@@ -22,7 +19,7 @@ El módulo de Firewall es una funcionalidad de seguridad integrada en el framewo
|
|
|
22
19
|
El módulo de firewall está integrado en el framework y se puede importar directamente:
|
|
23
20
|
|
|
24
21
|
```javascript
|
|
25
|
-
const { APIServer, Firewall, Logger } = require('
|
|
22
|
+
const { APIServer, Firewall, Logger } = require('apisdk');
|
|
26
23
|
```
|
|
27
24
|
|
|
28
25
|
## Uso Básico
|
|
@@ -135,7 +132,7 @@ firewall.addRule(
|
|
|
135
132
|
El firewall emite varios eventos que puedes interceptar para extender su comportamiento:
|
|
136
133
|
|
|
137
134
|
```javascript
|
|
138
|
-
const { HookSystem } = require('
|
|
135
|
+
const { HookSystem } = require('apisdk');
|
|
139
136
|
const hooks = new HookSystem();
|
|
140
137
|
|
|
141
138
|
// Hook cuando se recibe una solicitud
|
|
@@ -199,7 +196,7 @@ hooks.addFilter('modify_firewall_decision', (shouldBlock, req, res) => {
|
|
|
199
196
|
Puedes extender la clase Firewall para añadir funcionalidades personalizadas:
|
|
200
197
|
|
|
201
198
|
```javascript
|
|
202
|
-
const { Firewall } = require('
|
|
199
|
+
const { Firewall } = require('apisdk');
|
|
203
200
|
|
|
204
201
|
class CustomFirewall extends Firewall {
|
|
205
202
|
constructor(options = {}) {
|
|
@@ -307,7 +304,7 @@ console.log(status);
|
|
|
307
304
|
### Ejemplo Completo de API con Firewall
|
|
308
305
|
|
|
309
306
|
```javascript
|
|
310
|
-
const { APIServer, Firewall, Logger, HookSystem } = require('
|
|
307
|
+
const { APIServer, Firewall, Logger, HookSystem } = require('apisdk');
|
|
311
308
|
|
|
312
309
|
async function startSecureAPI() {
|
|
313
310
|
// Crear servidor
|
|
@@ -369,7 +366,7 @@ startSecureAPI();
|
|
|
369
366
|
### Ejemplo de Extensión con Hooks
|
|
370
367
|
|
|
371
368
|
```javascript
|
|
372
|
-
const { APIServer, Firewall, Logger, HookSystem } = require('
|
|
369
|
+
const { APIServer, Firewall, Logger, HookSystem } = require('apisdk');
|
|
373
370
|
|
|
374
371
|
// Crear sistema de hooks
|
|
375
372
|
const hooks = new HookSystem();
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
# Sistema de Hooks, Filters y Actions del Framework 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
|
## Índice
|
|
7
4
|
1. [Introducción](#introducción)
|
|
8
5
|
2. [Glosario de Términos](#glosario-de-términos)
|
|
@@ -384,7 +381,7 @@ El framework API SDK JS implementa un sistema de Hooks y Filters similar al sist
|
|
|
384
381
|
### Ejemplo de Uso de Actions
|
|
385
382
|
|
|
386
383
|
```javascript
|
|
387
|
-
const { HookSystem } = require('
|
|
384
|
+
const { HookSystem } = require('apisdk');
|
|
388
385
|
const hooks = new HookSystem();
|
|
389
386
|
|
|
390
387
|
// Registrar un action para registrar solicitudes bloqueadas
|
|
@@ -402,7 +399,7 @@ hooks.addAction('firewall_request_allowed', (req, res) => {
|
|
|
402
399
|
### Ejemplo de Uso de Filters
|
|
403
400
|
|
|
404
401
|
```javascript
|
|
405
|
-
const { HookSystem } = require('
|
|
402
|
+
const { HookSystem } = require('apisdk');
|
|
406
403
|
const hooks = new HookSystem();
|
|
407
404
|
|
|
408
405
|
// Registrar un filter para modificar la huella digital del cliente
|
|
@@ -431,7 +428,7 @@ hooks.addFilter('modify_rate_limit_behavior', (rateLimitConfig, req) => {
|
|
|
431
428
|
### Ejemplo Integrado de Múltiples Hooks
|
|
432
429
|
|
|
433
430
|
```javascript
|
|
434
|
-
const { APIServer, Firewall, HookSystem, Logger } = require('
|
|
431
|
+
const { APIServer, Firewall, HookSystem, Logger } = require('apisdk');
|
|
435
432
|
|
|
436
433
|
async function startSecureAPIWithHooks() {
|
|
437
434
|
const server = new APIServer({ port: 3000 });
|
|
@@ -493,7 +490,7 @@ startSecureAPIWithHooks();
|
|
|
493
490
|
### Ejemplo de Uso de Hooks en el Sistema MVC
|
|
494
491
|
|
|
495
492
|
```javascript
|
|
496
|
-
const { APIServer, Router, ControllerBase, ViewEngine, HookSystem } = require('
|
|
493
|
+
const { APIServer, Router, ControllerBase, ViewEngine, HookSystem } = require('apisdk');
|
|
497
494
|
|
|
498
495
|
// Crear instancia del sistema de hooks
|
|
499
496
|
const hooks = new HookSystem();
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
# Manual para Construir APIs con el Framework API SDK
|
|
2
2
|
|
|
3
|
-
Visita nuestra página web: https://jerk.page.gd/
|
|
4
|
-
Repositorio oficial: https://gitlab.com/bytedogssyndicate1/jerk/
|
|
5
|
-
|
|
6
3
|
## Índice
|
|
7
4
|
1. [Introducción](#introducción)
|
|
8
5
|
2. [Instalación y Configuración](#instalación-y-configuración)
|
|
@@ -34,7 +31,7 @@ const {
|
|
|
34
31
|
Logger,
|
|
35
32
|
TokenManager,
|
|
36
33
|
OpenApiGenerator
|
|
37
|
-
} = require('@
|
|
34
|
+
} = require('@apisdkjs');
|
|
38
35
|
```
|
|
39
36
|
|
|
40
37
|
## Conceptos Fundamentales
|
|
@@ -59,7 +56,7 @@ const {
|
|
|
59
56
|
### Servidor Básico
|
|
60
57
|
|
|
61
58
|
```javascript
|
|
62
|
-
const { APIServer, Router, Logger } = require('@
|
|
59
|
+
const { APIServer, Router, Logger } = require('@apisdkjs');
|
|
63
60
|
|
|
64
61
|
// Crear instancia del servidor
|
|
65
62
|
const server = new APIServer({
|
|
@@ -315,8 +312,8 @@ const tokenPair = tokenManager.generateTokenPair(
|
|
|
315
312
|
Para almacenamiento persistente de tokens, puedes usar adaptadores:
|
|
316
313
|
|
|
317
314
|
```javascript
|
|
318
|
-
const MariaDBTokenAdapter = require('@
|
|
319
|
-
const SQLiteTokenAdapter = require('@
|
|
315
|
+
const MariaDBTokenAdapter = require('@apisdkjs/lib/utils/mariadbTokenAdapter');
|
|
316
|
+
const SQLiteTokenAdapter = require('@apisdkjs/lib/utils/sqliteTokenAdapter');
|
|
320
317
|
|
|
321
318
|
// Usar MariaDB
|
|
322
319
|
const dbAdapter = new MariaDBTokenAdapter({
|
|
@@ -386,7 +383,7 @@ openApiGenerator.addDocumentationRoute(server);
|
|
|
386
383
|
Carga controladores desde archivos:
|
|
387
384
|
|
|
388
385
|
```javascript
|
|
389
|
-
const { ControllerLoader } = require('@
|
|
386
|
+
const { ControllerLoader } = require('@apisdkjs');
|
|
390
387
|
|
|
391
388
|
const controllerLoader = new ControllerLoader();
|
|
392
389
|
|
|
@@ -435,7 +432,7 @@ Define rutas en archivos JSON y cárgalas dinámicamente:
|
|
|
435
432
|
```
|
|
436
433
|
|
|
437
434
|
```javascript
|
|
438
|
-
const { RouteLoader } = require('@
|
|
435
|
+
const { RouteLoader } = require('@apisdkjs');
|
|
439
436
|
|
|
440
437
|
const routeLoader = new RouteLoader();
|
|
441
438
|
const server = new APIServer({ port: 3000 });
|
|
@@ -503,7 +500,7 @@ router.get('/users/:id', (req, res) => {
|
|
|
503
500
|
Usa el ConfigParser para manejar configuraciones:
|
|
504
501
|
|
|
505
502
|
```javascript
|
|
506
|
-
const { ConfigParser } = require('@
|
|
503
|
+
const { ConfigParser } = require('@apisdkjs');
|
|
507
504
|
|
|
508
505
|
const configParser = new ConfigParser();
|
|
509
506
|
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
# Implementación Completa: API SDK Framework v2.0 con Tokens en MariaDB
|
|
2
2
|
|
|
3
|
-
Visita nuestra página web: https://jerk.page.gd/
|
|
4
|
-
Repositorio oficial: https://gitlab.com/bytedogssyndicate1/jerk/
|
|
5
|
-
|
|
6
3
|
## Resumen Ejecutivo
|
|
7
4
|
|
|
8
5
|
Hemos implementado exitosamente una solución completa de gestión de tokens con MariaDB para el API SDK Framework v2.0, demostrando:
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
# Manual de Creación de Middleware para API SDK Framework
|
|
2
2
|
|
|
3
|
-
Visita nuestra página web: https://jerk.page.gd/
|
|
4
|
-
Repositorio oficial: https://gitlab.com/bytedogssyndicate1/jerk/
|
|
5
|
-
|
|
6
3
|
## Tabla de Contenidos
|
|
7
4
|
|
|
8
5
|
1. [Introducción al Middleware](#introducción-al-middleware)
|
|
@@ -286,7 +283,7 @@ module.exports = AuditLogger;
|
|
|
286
283
|
|
|
287
284
|
```javascript
|
|
288
285
|
// examples/v2/audit_middleware_example.js
|
|
289
|
-
const {
|
|
286
|
+
const { APISDK, Logger } = require('../../index');
|
|
290
287
|
const AuditLogger = require('../../lib/middleware/auditLogger');
|
|
291
288
|
|
|
292
289
|
// Crear instancia del logger
|
|
@@ -295,7 +292,7 @@ const logger = new Logger({ level: 'info', timestamp: true });
|
|
|
295
292
|
logger.info('🔐 Iniciando ejemplo con middleware de auditoría');
|
|
296
293
|
|
|
297
294
|
// Crear instancia del servidor
|
|
298
|
-
const server = new
|
|
295
|
+
const server = new APISDK({
|
|
299
296
|
port: 8084,
|
|
300
297
|
host: 'localhost'
|
|
301
298
|
});
|
|
@@ -388,7 +385,7 @@ process.on('SIGINT', gracefulShutdown);
|
|
|
388
385
|
|
|
389
386
|
```javascript
|
|
390
387
|
// test_audit_middleware.js
|
|
391
|
-
const {
|
|
388
|
+
const { APISDK } = require('../index');
|
|
392
389
|
const AuditLogger = require('../lib/middleware/auditLogger');
|
|
393
390
|
const fs = require('fs');
|
|
394
391
|
const path = require('path');
|
|
@@ -397,7 +394,7 @@ async function testAuditMiddleware() {
|
|
|
397
394
|
console.log('🧪 Probando middleware de auditoría...\n');
|
|
398
395
|
|
|
399
396
|
// Crear servidor de prueba
|
|
400
|
-
const server = new
|
|
397
|
+
const server = new APISDK({ port: 9998 });
|
|
401
398
|
|
|
402
399
|
// Crear middleware de auditoría para pruebas
|
|
403
400
|
const auditLogger = new AuditLogger({
|
|
@@ -460,9 +457,9 @@ module.exports = {
|
|
|
460
457
|
|
|
461
458
|
```javascript
|
|
462
459
|
// Ejemplo de uso en una aplicación real
|
|
463
|
-
const { APISDK, AuditLogger } = require('
|
|
460
|
+
const { APISDK, AuditLogger } = require('apisdk');
|
|
464
461
|
|
|
465
|
-
const server = new
|
|
462
|
+
const server = new APISDK({ port: 3000 });
|
|
466
463
|
|
|
467
464
|
// Middleware de auditoría para eventos de seguridad
|
|
468
465
|
const securityAudit = new AuditLogger({
|
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
# Manual para Implementar OAuth 2.0 con Google usando el Framework API SDK
|
|
2
2
|
|
|
3
|
-
Visita nuestra página web: https://jerk.page.gd/
|
|
4
|
-
Repositorio oficial: https://gitlab.com/bytedogssyndicate1/jerk/
|
|
5
|
-
|
|
6
3
|
## Índice
|
|
7
4
|
1. [Introducción](#introducción)
|
|
8
5
|
2. [Requisitos Previos](#requisitos-previos)
|
|
@@ -70,7 +67,7 @@ OAuth 2.0 es un protocolo de autorización que permite a aplicaciones de tercero
|
|
|
70
67
|
### Paso 1: Instalar el Framework API SDK
|
|
71
68
|
|
|
72
69
|
```bash
|
|
73
|
-
npm install
|
|
70
|
+
npm install apisdk
|
|
74
71
|
```
|
|
75
72
|
|
|
76
73
|
### Paso 2: Configurar variables de entorno
|
|
@@ -92,7 +89,7 @@ const {
|
|
|
92
89
|
RouteLoader,
|
|
93
90
|
Logger,
|
|
94
91
|
TokenManager
|
|
95
|
-
} = require('
|
|
92
|
+
} = require('apisdk');
|
|
96
93
|
```
|
|
97
94
|
|
|
98
95
|
## Implementación del Flujo OAuth 2.0
|
|
@@ -345,7 +342,7 @@ const {
|
|
|
345
342
|
Authenticator,
|
|
346
343
|
Router,
|
|
347
344
|
Logger
|
|
348
|
-
} = require('
|
|
345
|
+
} = require('apisdk');
|
|
349
346
|
|
|
350
347
|
const jwt = require('jsonwebtoken');
|
|
351
348
|
|
|
@@ -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('@apisdkjs/apisdkjs');
|
|
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('@apisdkjs/apisdkjs');
|
|
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('@apisdkjs/apisdkjs');
|
|
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('@apisdkjs/apisdkjs');
|
|
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('@apisdkjs/apisdkjs');
|
|
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('@apisdkjs/apisdkjs');
|
|
266
263
|
|
|
267
264
|
async function startServer() {
|
|
268
265
|
const server = new APIServer({
|