jerkjs 2.0.1 → 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.
Files changed (131) hide show
  1. package/README.md +4 -6
  2. package/docs/EXTENSION_MANUAL.md +955 -0
  3. package/docs/FIREWALL_MANUAL.md +416 -0
  4. package/docs/HOOKS_REFERENCE_IMPROVED.md +596 -0
  5. package/docs/MANUAL_API_SDK.md +536 -0
  6. package/docs/MARIADB_TOKENS_IMPLEMENTATION.md +110 -0
  7. package/docs/MIDDLEWARE_MANUAL.md +518 -0
  8. package/docs/OAUTH2_GOOGLE_MANUAL.md +405 -0
  9. package/docs/frontend-and-sessions.md +6 -6
  10. package/examples/advanced/controllers/productController.js +64 -0
  11. package/examples/advanced/controllers/userController.js +85 -0
  12. package/examples/advanced/routes.json +51 -0
  13. package/examples/advanced_example.js +93 -0
  14. package/examples/basic/controllers/userController.js +85 -0
  15. package/examples/basic_example.js +72 -0
  16. package/examples/mvc_example/app.js +138 -0
  17. package/examples/mvc_example/views/home/index.html +26 -0
  18. package/examples/mvc_example/views/home/simple.html +3 -0
  19. package/examples/mvc_example/views/layout.html +23 -0
  20. package/examples/mvc_example/views/test.html +3 -0
  21. package/examples/mvc_example/views/user/invalid.html +6 -0
  22. package/examples/mvc_example/views/user/list.html +36 -0
  23. package/examples/mvc_example/views/user/notfound.html +6 -0
  24. package/examples/mvc_example/views/user/profile.html +11 -0
  25. package/examples/mvc_routes_example/app.js +34 -0
  26. package/examples/mvc_routes_example/controllers/mainController.js +27 -0
  27. package/examples/mvc_routes_example/controllers/productController.js +47 -0
  28. package/examples/mvc_routes_example/controllers/userController.js +76 -0
  29. package/examples/mvc_routes_example/routes.json +30 -0
  30. package/examples/mvc_routes_example/views/layout.html +31 -0
  31. package/examples/mvc_routes_example/views/main/index.html +11 -0
  32. package/examples/mvc_routes_example/views/product/catalog.html +24 -0
  33. package/examples/mvc_routes_example/views/user/invalid.html +6 -0
  34. package/examples/mvc_routes_example/views/user/list.html +40 -0
  35. package/examples/mvc_routes_example/views/user/notfound.html +6 -0
  36. package/examples/mvc_routes_example/views/user/profile.html +18 -0
  37. package/examples/mvc_welcome/README.md +34 -0
  38. package/examples/mvc_welcome/app.js +50 -0
  39. package/examples/mvc_welcome/controllers/welcomeController.js +41 -0
  40. package/examples/mvc_welcome/package.json +26 -0
  41. package/examples/mvc_welcome/views/home/welcome.html +82 -0
  42. package/examples/v2/README.md +72 -0
  43. package/examples/v2/app.js +74 -0
  44. package/examples/v2/app_fixed.js +74 -0
  45. package/examples/v2/controllers/authController.js +64 -0
  46. package/examples/v2/controllers/mainController.js +24 -0
  47. package/examples/v2/controllers/protectedController.js +12 -0
  48. package/examples/v2/controllers/userController.js +16 -0
  49. package/examples/v2/package.json +27 -0
  50. package/examples/v2/routes.json +30 -0
  51. package/examples/v2/test_api.sh +47 -0
  52. package/examples/v2/tokens_example.sqlite +0 -0
  53. package/examples/v2.1_firewall_demo/README.md +113 -0
  54. package/examples/v2.1_firewall_demo/app.js +182 -0
  55. package/examples/v2.1_firewall_demo/package.json +27 -0
  56. package/examples/v2.1_hooks_demo/README.md +85 -0
  57. package/examples/v2.1_hooks_demo/app.js +101 -0
  58. package/examples/v2.1_hooks_demo/controllers/hooksController.js +29 -0
  59. package/examples/v2.1_hooks_demo/controllers/mainController.js +18 -0
  60. package/examples/v2.1_hooks_demo/package.json +27 -0
  61. package/examples/v2.1_hooks_demo/routes.json +16 -0
  62. package/examples/v2.1_openapi_demo/README.md +82 -0
  63. package/examples/v2.1_openapi_demo/app.js +296 -0
  64. package/examples/v2.1_openapi_demo/package.json +26 -0
  65. package/examples/v2_cors/README.md +82 -0
  66. package/examples/v2_cors/app.js +108 -0
  67. package/examples/v2_cors/package.json +23 -0
  68. package/examples/v2_json_auth/README.md +83 -0
  69. package/examples/v2_json_auth/app.js +72 -0
  70. package/examples/v2_json_auth/controllers/authController.js +67 -0
  71. package/examples/v2_json_auth/controllers/mainController.js +16 -0
  72. package/examples/v2_json_auth/controllers/protectedController.js +12 -0
  73. package/examples/v2_json_auth/controllers/tokenController.js +28 -0
  74. package/examples/v2_json_auth/controllers/userController.js +15 -0
  75. package/examples/v2_json_auth/package.json +26 -0
  76. package/examples/v2_json_auth/routes.json +37 -0
  77. package/examples/v2_json_auth/tokens.json +20 -0
  78. package/examples/v2_mariadb_auth/README.md +94 -0
  79. package/examples/v2_mariadb_auth/app.js +81 -0
  80. package/examples/v2_mariadb_auth/controllers/authController.js +95 -0
  81. package/examples/v2_mariadb_auth/controllers/mainController.js +31 -0
  82. package/examples/v2_mariadb_auth/controllers/protectedController.js +12 -0
  83. package/examples/v2_mariadb_auth/controllers/userController.js +17 -0
  84. package/examples/v2_mariadb_auth/package.json +27 -0
  85. package/examples/v2_mariadb_auth/routes.json +37 -0
  86. package/examples/v2_no_auth/README.md +75 -0
  87. package/examples/v2_no_auth/app.js +72 -0
  88. package/examples/v2_no_auth/controllers/healthController.js +14 -0
  89. package/examples/v2_no_auth/controllers/mainController.js +19 -0
  90. package/examples/v2_no_auth/controllers/productController.js +31 -0
  91. package/examples/v2_no_auth/controllers/publicController.js +16 -0
  92. package/examples/v2_no_auth/package.json +22 -0
  93. package/examples/v2_no_auth/routes.json +37 -0
  94. package/examples/v2_oauth/README.md +70 -0
  95. package/examples/v2_oauth/app.js +90 -0
  96. package/examples/v2_oauth/controllers/mainController.js +45 -0
  97. package/examples/v2_oauth/controllers/oauthController.js +247 -0
  98. package/examples/v2_oauth/controllers/protectedController.js +13 -0
  99. package/examples/v2_oauth/controllers/userController.js +17 -0
  100. package/examples/v2_oauth/package.json +26 -0
  101. package/examples/v2_oauth/routes.json +44 -0
  102. package/examples/v2_openapi/README.md +77 -0
  103. package/examples/v2_openapi/app.js +222 -0
  104. package/examples/v2_openapi/controllers/authController.js +52 -0
  105. package/examples/v2_openapi/controllers/mainController.js +26 -0
  106. package/examples/v2_openapi/controllers/productController.js +17 -0
  107. package/examples/v2_openapi/controllers/userController.js +27 -0
  108. package/examples/v2_openapi/package.json +26 -0
  109. package/examples/v2_openapi/routes.json +37 -0
  110. package/index.js +11 -3
  111. package/lib/core/handler.js +1 -1
  112. package/lib/core/hooks.js +1 -1
  113. package/lib/core/router.js +1 -1
  114. package/lib/core/server.js +1 -1
  115. package/lib/loader/controllerLoader.js +1 -1
  116. package/lib/loader/routeLoader.js +1 -1
  117. package/lib/middleware/auditLogger.js +1 -1
  118. package/lib/middleware/authenticator.js +1 -1
  119. package/lib/middleware/compressor.js +1 -1
  120. package/lib/middleware/cors.js +1 -1
  121. package/lib/middleware/firewall.js +1 -1
  122. package/lib/middleware/rateLimiter.js +1 -1
  123. package/lib/middleware/session.js +1 -1
  124. package/lib/middleware/validator.js +1 -1
  125. package/lib/mvc/controllerBase.js +207 -0
  126. package/lib/mvc/viewEngine.js +752 -0
  127. package/lib/utils/configParser.js +1 -1
  128. package/lib/utils/logger.js +1 -1
  129. package/lib/utils/openapiGenerator.js +1 -1
  130. package/lib/utils/tokenManager.js +1 -1
  131. package/package.json +1 -1
@@ -0,0 +1,222 @@
1
+ const {
2
+ APIServer,
3
+ Authenticator,
4
+ RouteLoader,
5
+ Logger,
6
+ OpenApiGenerator,
7
+ TokenManager
8
+ } = require('../../index.js');
9
+
10
+ async function startServer() {
11
+ // Crear instancia del servidor
12
+ const server = new APIServer({
13
+ port: 8092,
14
+ host: 'localhost'
15
+ });
16
+
17
+ // Crear instancia del logger
18
+ const logger = new Logger({ level: 'info' });
19
+
20
+ try {
21
+ // Crear instancia del TokenManager con almacenamiento en memoria
22
+ const tokenManager = new TokenManager({
23
+ storage: 'memory'
24
+ });
25
+
26
+ // Crear instancia del autenticador
27
+ const authenticator = new Authenticator({ logger });
28
+
29
+ // Registrar estrategia de autenticación JWT
30
+ authenticator.use('jwt-openapi', async (req, options = {}) => {
31
+ const authHeader = req.headers.authorization;
32
+ const token = authHeader && authHeader.split(' ')[1]; // Bearer TOKEN
33
+
34
+ if (!token) {
35
+ return false;
36
+ }
37
+
38
+ // Validar el token usando un secreto fijo para este ejemplo
39
+ const secret = 'super-secret-key-for-openapi-example';
40
+ const decoded = tokenManager.validateToken(token, secret);
41
+
42
+ if (decoded) {
43
+ req.user = decoded;
44
+ return true;
45
+ }
46
+
47
+ return false;
48
+ });
49
+
50
+ // Agregar el autenticador al servidor para que pueda ser usado por el RouteLoader
51
+ server.authenticator = authenticator;
52
+
53
+ // Cargar rutas desde archivo JSON
54
+ const routeLoader = new RouteLoader();
55
+ await routeLoader.loadRoutes(server, './routes.json');
56
+
57
+ // Crear instancia del generador de OpenAPI
58
+ const openApiGenerator = new OpenApiGenerator({
59
+ title: 'API de Ejemplo con OpenAPI',
60
+ description: 'Una API de ejemplo que demuestra la funcionalidad OpenAPI del Framework JERK',
61
+ version: '1.0.0',
62
+ servers: [
63
+ { url: 'http://localhost:8092', description: 'Servidor de desarrollo' }
64
+ ]
65
+ });
66
+
67
+ // Agregar esquemas a la documentación
68
+ openApiGenerator.addSchema('User', {
69
+ type: 'object',
70
+ properties: {
71
+ id: { type: 'integer', example: 1 },
72
+ name: { type: 'string', example: 'John Doe' },
73
+ email: { type: 'string', example: 'john@example.com' },
74
+ role: { type: 'string', example: 'user' }
75
+ }
76
+ });
77
+
78
+ openApiGenerator.addSchema('Product', {
79
+ type: 'object',
80
+ properties: {
81
+ id: { type: 'integer', example: 1 },
82
+ name: { type: 'string', example: 'Laptop' },
83
+ price: { type: 'number', example: 999.99 },
84
+ category: { type: 'string', example: 'Electronics' }
85
+ }
86
+ });
87
+
88
+ openApiGenerator.addSchema('ApiResponse', {
89
+ type: 'object',
90
+ properties: {
91
+ success: { type: 'boolean', example: true },
92
+ message: { type: 'string', example: 'Operación exitosa' },
93
+ data: { type: 'object', description: 'Datos de la respuesta' }
94
+ }
95
+ });
96
+
97
+ // Agregar esquema de seguridad
98
+ openApiGenerator.addSecurityScheme('bearerAuth', {
99
+ type: 'http',
100
+ scheme: 'bearer',
101
+ bearerFormat: 'JWT',
102
+ description: 'Autenticación por token JWT'
103
+ });
104
+
105
+ // Agregar rutas a la documentación OpenAPI
106
+ openApiGenerator.addRoute({
107
+ path: '/users',
108
+ method: 'GET',
109
+ config: {
110
+ summary: 'Obtener todos los usuarios',
111
+ description: 'Devuelve una lista de todos los usuarios registrados',
112
+ security: [{ bearerAuth: [] }],
113
+ responses: {
114
+ '200': {
115
+ description: 'Lista de usuarios',
116
+ content: {
117
+ 'application/json': {
118
+ schema: {
119
+ type: 'array',
120
+ items: {
121
+ $ref: '#/components/schemas/User'
122
+ }
123
+ }
124
+ }
125
+ }
126
+ },
127
+ '401': {
128
+ description: 'No autorizado - Token inválido o ausente'
129
+ }
130
+ }
131
+ }
132
+ });
133
+
134
+ openApiGenerator.addRoute({
135
+ path: '/products',
136
+ method: 'GET',
137
+ config: {
138
+ summary: 'Obtener todos los productos',
139
+ description: 'Devuelve una lista de todos los productos disponibles',
140
+ security: [{ bearerAuth: [] }],
141
+ responses: {
142
+ '200': {
143
+ description: 'Lista de productos',
144
+ content: {
145
+ 'application/json': {
146
+ schema: {
147
+ type: 'array',
148
+ items: {
149
+ $ref: '#/components/schemas/Product'
150
+ }
151
+ }
152
+ }
153
+ }
154
+ },
155
+ '401': {
156
+ description: 'No autorizado - Token inválido o ausente'
157
+ }
158
+ }
159
+ }
160
+ });
161
+
162
+ openApiGenerator.addRoute({
163
+ path: '/login',
164
+ method: 'POST',
165
+ config: {
166
+ summary: 'Iniciar sesión',
167
+ description: 'Autenticación de usuario y obtención de token JWT',
168
+ requestBody: {
169
+ content: {
170
+ 'application/json': {
171
+ schema: {
172
+ type: 'object',
173
+ properties: {
174
+ username: { type: 'string', example: 'admin' },
175
+ password: { type: 'string', example: 'password' }
176
+ },
177
+ required: ['username', 'password']
178
+ }
179
+ }
180
+ }
181
+ },
182
+ responses: {
183
+ '200': {
184
+ description: 'Inicio de sesión exitoso',
185
+ content: {
186
+ 'application/json': {
187
+ schema: {
188
+ type: 'object',
189
+ properties: {
190
+ message: { type: 'string', example: 'Inicio de sesión exitoso' },
191
+ token: { type: 'string', example: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' },
192
+ user: { $ref: '#/components/schemas/User' }
193
+ }
194
+ }
195
+ }
196
+ }
197
+ },
198
+ '401': {
199
+ description: 'Credenciales inválidas'
200
+ }
201
+ }
202
+ }
203
+ });
204
+
205
+ // Agregar ruta de documentación al servidor
206
+ openApiGenerator.addDocumentationRoute(server);
207
+
208
+ // Iniciar el servidor
209
+ server.start();
210
+
211
+ logger.info('Servidor iniciado en http://localhost:8092');
212
+ logger.info('Documentación OpenAPI disponible en http://localhost:8092/docs');
213
+ } catch (error) {
214
+ logger.error('Error iniciando el servidor:', error.message);
215
+ process.exit(1);
216
+ }
217
+ }
218
+
219
+ // Iniciar el servidor
220
+ startServer();
221
+
222
+ module.exports = { startServer };
@@ -0,0 +1,52 @@
1
+ const jwt = require('jsonwebtoken');
2
+ const { TokenManager } = require('../../../index.js');
3
+
4
+ // TokenManager para este controlador
5
+ const tokenManager = new TokenManager({
6
+ storage: 'memory'
7
+ });
8
+
9
+ const authController = {
10
+ login: async (req, res) => {
11
+ try {
12
+ const { username, password } = req.body;
13
+
14
+ // Validación simple de credenciales (esto debería ser más robusto en producción)
15
+ if (!username || !password) {
16
+ res.writeHead(400, { 'Content-Type': 'application/json' });
17
+ res.end(JSON.stringify({ error: 'Nombre de usuario y contraseña requeridos' }));
18
+ return;
19
+ }
20
+
21
+ // Simulación de autenticación (en una aplicación real, esto verificaría contra una base de datos)
22
+ if (username === 'admin' && password === 'password') {
23
+ // Generar un token JWT
24
+ const payload = {
25
+ userId: 1,
26
+ username: username,
27
+ role: 'admin'
28
+ };
29
+
30
+ // Secret para firmar el token (en producción, debería estar en variables de entorno)
31
+ const secret = 'super-secret-key-for-openapi-example';
32
+ const token = jwt.sign(payload, secret, { expiresIn: '1h' });
33
+
34
+ res.writeHead(200, { 'Content-Type': 'application/json' });
35
+ res.end(JSON.stringify({
36
+ message: 'Inicio de sesión exitoso',
37
+ token: token,
38
+ user: payload
39
+ }));
40
+ } else {
41
+ res.writeHead(401, { 'Content-Type': 'application/json' });
42
+ res.end(JSON.stringify({ error: 'Credenciales inválidas' }));
43
+ }
44
+ } catch (error) {
45
+ console.error('Error en login:', error);
46
+ res.writeHead(500, { 'Content-Type': 'application/json' });
47
+ res.end(JSON.stringify({ error: 'Error interno del servidor' }));
48
+ }
49
+ }
50
+ };
51
+
52
+ module.exports = authController;
@@ -0,0 +1,26 @@
1
+ const jwt = require('jsonwebtoken');
2
+ const { TokenManager } = require('../../../index.js');
3
+
4
+ // TokenManager para este controlador
5
+ const tokenManager = new TokenManager({
6
+ storage: 'memory'
7
+ });
8
+
9
+ const mainController = {
10
+ home: (req, res) => {
11
+ res.writeHead(200, { 'Content-Type': 'application/json' });
12
+ res.end(JSON.stringify({
13
+ message: 'Bienvenido a la API de ejemplo con funcionalidad OpenAPI',
14
+ endpoints: {
15
+ 'POST /login': 'Iniciar sesión y obtener token',
16
+ 'GET /users': 'Obtener lista de usuarios (requiere token)',
17
+ 'GET /products': 'Obtener lista de productos (requiere token)',
18
+ 'GET /profile': 'Obtener perfil de usuario (requiere token)',
19
+ 'GET /docs': 'Documentación interactiva OpenAPI/Swagger',
20
+ 'GET /openapi.json': 'Especificación OpenAPI'
21
+ }
22
+ }));
23
+ }
24
+ };
25
+
26
+ module.exports = mainController;
@@ -0,0 +1,17 @@
1
+ // Datos de ejemplo de productos
2
+ const products = [
3
+ { id: 1, name: 'Laptop', price: 999.99, category: 'Electronics' },
4
+ { id: 2, name: 'Mouse', price: 29.99, category: 'Electronics' },
5
+ { id: 3, name: 'Keyboard', price: 79.99, category: 'Electronics' },
6
+ { id: 4, name: 'Monitor', price: 299.99, category: 'Electronics' },
7
+ { id: 5, name: 'Webcam', price: 89.99, category: 'Electronics' }
8
+ ];
9
+
10
+ const productController = {
11
+ getProducts: (req, res) => {
12
+ res.writeHead(200, { 'Content-Type': 'application/json' });
13
+ res.end(JSON.stringify(products));
14
+ }
15
+ };
16
+
17
+ module.exports = productController;
@@ -0,0 +1,27 @@
1
+ // Datos de ejemplo de usuarios
2
+ const users = [
3
+ { id: 1, name: 'John Doe', email: 'john@example.com', role: 'admin' },
4
+ { id: 2, name: 'Jane Smith', email: 'jane@example.com', role: 'user' },
5
+ { id: 3, name: 'Robert Johnson', email: 'robert@example.com', role: 'user' }
6
+ ];
7
+
8
+ const userController = {
9
+ getUsers: (req, res) => {
10
+ res.writeHead(200, { 'Content-Type': 'application/json' });
11
+ res.end(JSON.stringify(users));
12
+ },
13
+
14
+ getProfile: (req, res) => {
15
+ res.writeHead(200, { 'Content-Type': 'application/json' });
16
+ res.end(JSON.stringify({
17
+ profile: {
18
+ id: req.user.userId,
19
+ username: req.user.username || 'Usuario',
20
+ role: req.user.role || 'guest'
21
+ },
22
+ message: 'Perfil de usuario obtenido exitosamente'
23
+ }));
24
+ }
25
+ };
26
+
27
+ module.exports = userController;
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "jerk-openapi-example",
3
+ "version": "1.0.0",
4
+ "description": "Ejemplo de API con funcionalidad OpenAPI usando el Framework JERK",
5
+ "main": "app.js",
6
+ "scripts": {
7
+ "start": "node app.js",
8
+ "dev": "nodemon app.js"
9
+ },
10
+ "keywords": [
11
+ "api",
12
+ "sdk",
13
+ "openapi",
14
+ "swagger",
15
+ "documentation",
16
+ "framework"
17
+ ],
18
+ "author": "JERK Framework",
19
+ "license": "MIT",
20
+ "dependencies": {
21
+ "jsonwebtoken": "^9.0.0"
22
+ },
23
+ "devDependencies": {
24
+ "nodemon": "^3.0.0"
25
+ }
26
+ }
@@ -0,0 +1,37 @@
1
+ [
2
+ {
3
+ "path": "/",
4
+ "method": "GET",
5
+ "controller": "./controllers/mainController.js",
6
+ "handler": "home",
7
+ "auth": "none"
8
+ },
9
+ {
10
+ "path": "/login",
11
+ "method": "POST",
12
+ "controller": "./controllers/authController.js",
13
+ "handler": "login",
14
+ "auth": "none"
15
+ },
16
+ {
17
+ "path": "/users",
18
+ "method": "GET",
19
+ "controller": "./controllers/userController.js",
20
+ "handler": "getUsers",
21
+ "auth": "jwt-openapi"
22
+ },
23
+ {
24
+ "path": "/products",
25
+ "method": "GET",
26
+ "controller": "./controllers/productController.js",
27
+ "handler": "getProducts",
28
+ "auth": "jwt-openapi"
29
+ },
30
+ {
31
+ "path": "/profile",
32
+ "method": "GET",
33
+ "controller": "./controllers/userController.js",
34
+ "handler": "getProfile",
35
+ "auth": "jwt-openapi"
36
+ }
37
+ ]
package/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
- * Punto de entrada del framework API SDK
3
- * API SDK Framework v2.0
2
+ * Punto de entrada del framework JERK
3
+ * JERK Framework v2.0
4
4
  */
5
5
 
6
6
  const APIServer = require('./lib/core/server');
@@ -30,6 +30,10 @@ 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
+
33
37
  // Exportar todos los componentes del framework
34
38
  module.exports = {
35
39
  // Componentes fundamentales (v1.0)
@@ -64,7 +68,11 @@ module.exports = {
64
68
 
65
69
  // Componentes de sesión (v2.2.0)
66
70
  SessionManager,
67
- sessionAuth
71
+ sessionAuth,
72
+
73
+ // Componentes MVC (v2.3.0)
74
+ ViewEngine,
75
+ ControllerBase
68
76
  };
69
77
 
70
78
  // También exportar clases individuales por conveniencia
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Gestión de handlers para el framework API SDK
2
+ * Gestión de handlers para el framework JERK
3
3
  * Implementación del componente core/handler.js
4
4
  */
5
5
 
package/lib/core/hooks.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Sistema de Hooks y Filters como el core de WordPress
3
- * Implementación para el Framework API SDK
3
+ * Implementación para el Framework JERK
4
4
  */
5
5
 
6
6
  class HookSystem {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Sistema de enrutamiento avanzado para el framework API SDK
2
+ * Sistema de enrutamiento avanzado para el framework JERK
3
3
  * Implementación extendida del componente core/router.js
4
4
  * Incluye soporte para rutas anidadas y otras mejoras
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Servidor HTTP básico para el framework API SDK
2
+ * Servidor HTTP básico para el framework JERK
3
3
  * Implementación del componente core/server.js
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Carga de controladores para el framework API SDK
2
+ * Carga de controladores para el framework JERK
3
3
  * Implementación del componente loader/controllerLoader.js
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Carga de rutas desde archivos JSON para el framework API SDK
2
+ * Carga de rutas desde archivos JSON para el framework JERK
3
3
  * Implementación del componente loader/routeLoader.js
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Middleware de auditoría para el API SDK Framework
2
+ * Middleware de auditoría para el JERK Framework
3
3
  * Componente: lib/middleware/auditLogger.js
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Middleware de autenticación para el framework API SDK
2
+ * Middleware de autenticación para el framework JERK
3
3
  * Implementación extendida del componente middleware/authenticator.js
4
4
  * Incluye soporte para OAuth2 y OpenID Connect
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Middleware de compresión para el framework API SDK
2
+ * Middleware de compresión para el framework JERK
3
3
  * Implementación del componente middleware/compressor.js
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Middleware de CORS para el framework API SDK
2
+ * Middleware de CORS para el framework JERK
3
3
  * Implementación del componente middleware/cors.js
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Middleware de Firewall para el framework API SDK
2
+ * Middleware de Firewall para el framework JERK
3
3
  * Implementación del componente middleware/firewall.js
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Middleware de Rate Limiting para el framework API SDK
2
+ * Middleware de Rate Limiting para el framework JERK
3
3
  * Implementación del componente middleware/rateLimiter.js
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Middleware de sesión para el framework API SDK
2
+ * Middleware de sesión para el framework JERK
3
3
  * Implementación del componente middleware/session.js
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Middleware de validación para el framework API SDK
2
+ * Middleware de validación para el framework JERK
3
3
  * Implementación del componente middleware/validator.js
4
4
  */
5
5