jerkjs 2.1.1 → 2.1.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 (170) hide show
  1. package/CHANGELOG.md +3 -2
  2. package/README.md +1 -1
  3. package/examples.arj +0 -0
  4. package/index.js +1 -1
  5. package/lib/middleware/compressor.js +34 -18
  6. package/package.json +1 -1
  7. package/standard/CompressionTestController.js +38 -0
  8. package/standard/HealthController.js +16 -0
  9. package/standard/HomeController.js +12 -0
  10. package/standard/ProductController.js +18 -0
  11. package/standard/README.md +47 -0
  12. package/standard/UserController.js +23 -0
  13. package/standard/package.json +22 -0
  14. package/standard/routes.json +58 -0
  15. package/standard/server.js +140 -0
  16. package/cookies.txt +0 -5
  17. package/examples/advanced/controllers/productController.js +0 -64
  18. package/examples/advanced/controllers/userController.js +0 -85
  19. package/examples/advanced/routes.json +0 -51
  20. package/examples/advanced_example.js +0 -93
  21. package/examples/basic/controllers/userController.js +0 -85
  22. package/examples/basic_example.js +0 -72
  23. package/examples/frontend/README.md +0 -71
  24. package/examples/frontend/app.js +0 -71
  25. package/examples/frontend/controllers/apiController.js +0 -39
  26. package/examples/frontend/controllers/authController.js +0 -220
  27. package/examples/frontend/controllers/formController.js +0 -47
  28. package/examples/frontend/controllers/messageController.js +0 -96
  29. package/examples/frontend/controllers/pageController.js +0 -178
  30. package/examples/frontend/controllers/staticController.js +0 -167
  31. package/examples/frontend/routes.json +0 -90
  32. package/examples/hooks/app.js +0 -136
  33. package/examples/hooks/controllers/authController.js +0 -54
  34. package/examples/hooks/controllers/mainController.js +0 -41
  35. package/examples/hooks/controllers/productController.js +0 -39
  36. package/examples/hooks/controllers/userController.js +0 -69
  37. package/examples/hooks/routes.json +0 -51
  38. package/examples/hooks/views/home.html +0 -50
  39. package/examples/mvc_example/app.js +0 -138
  40. package/examples/mvc_example/views/home/index.html +0 -26
  41. package/examples/mvc_example/views/home/simple.html +0 -3
  42. package/examples/mvc_example/views/layout.html +0 -23
  43. package/examples/mvc_example/views/test.html +0 -3
  44. package/examples/mvc_example/views/user/invalid.html +0 -6
  45. package/examples/mvc_example/views/user/list.html +0 -36
  46. package/examples/mvc_example/views/user/notfound.html +0 -6
  47. package/examples/mvc_example/views/user/profile.html +0 -11
  48. package/examples/mvc_routes_example/app.js +0 -34
  49. package/examples/mvc_routes_example/controllers/mainController.js +0 -27
  50. package/examples/mvc_routes_example/controllers/productController.js +0 -47
  51. package/examples/mvc_routes_example/controllers/userController.js +0 -76
  52. package/examples/mvc_routes_example/routes.json +0 -30
  53. package/examples/mvc_routes_example/views/layout.html +0 -31
  54. package/examples/mvc_routes_example/views/main/index.html +0 -11
  55. package/examples/mvc_routes_example/views/product/catalog.html +0 -24
  56. package/examples/mvc_routes_example/views/user/invalid.html +0 -6
  57. package/examples/mvc_routes_example/views/user/list.html +0 -40
  58. package/examples/mvc_routes_example/views/user/notfound.html +0 -6
  59. package/examples/mvc_routes_example/views/user/profile.html +0 -18
  60. package/examples/mvc_welcome/README.md +0 -34
  61. package/examples/mvc_welcome/app.js +0 -50
  62. package/examples/mvc_welcome/controllers/welcomeController.js +0 -41
  63. package/examples/mvc_welcome/package.json +0 -26
  64. package/examples/mvc_welcome/views/home/welcome.html +0 -82
  65. package/examples/performance_demo/app.js +0 -172
  66. package/examples/performance_demo_with_hooks/README.md +0 -52
  67. package/examples/performance_demo_with_hooks/app.js +0 -290
  68. package/examples/public/README.md +0 -92
  69. package/examples/public/app.js +0 -72
  70. package/examples/public/controllers/healthController.js +0 -20
  71. package/examples/public/controllers/mainController.js +0 -22
  72. package/examples/public/controllers/userController.js +0 -139
  73. package/examples/public/routes.json +0 -51
  74. package/examples/v2/README.md +0 -72
  75. package/examples/v2/app.js +0 -74
  76. package/examples/v2/app_fixed.js +0 -74
  77. package/examples/v2/controllers/authController.js +0 -64
  78. package/examples/v2/controllers/mainController.js +0 -24
  79. package/examples/v2/controllers/protectedController.js +0 -12
  80. package/examples/v2/controllers/userController.js +0 -16
  81. package/examples/v2/package.json +0 -27
  82. package/examples/v2/routes.json +0 -30
  83. package/examples/v2/test_api.sh +0 -47
  84. package/examples/v2/tokens_example.sqlite +0 -0
  85. package/examples/v2.1_firewall_demo/README.md +0 -113
  86. package/examples/v2.1_firewall_demo/app.js +0 -182
  87. package/examples/v2.1_firewall_demo/package.json +0 -27
  88. package/examples/v2.1_hooks_demo/README.md +0 -85
  89. package/examples/v2.1_hooks_demo/app.js +0 -101
  90. package/examples/v2.1_hooks_demo/controllers/hooksController.js +0 -29
  91. package/examples/v2.1_hooks_demo/controllers/mainController.js +0 -18
  92. package/examples/v2.1_hooks_demo/package.json +0 -27
  93. package/examples/v2.1_hooks_demo/routes.json +0 -16
  94. package/examples/v2.1_openapi_demo/README.md +0 -82
  95. package/examples/v2.1_openapi_demo/app.js +0 -296
  96. package/examples/v2.1_openapi_demo/package.json +0 -26
  97. package/examples/v2_cors/README.md +0 -82
  98. package/examples/v2_cors/app.js +0 -108
  99. package/examples/v2_cors/package.json +0 -23
  100. package/examples/v2_json_auth/README.md +0 -83
  101. package/examples/v2_json_auth/app.js +0 -72
  102. package/examples/v2_json_auth/controllers/authController.js +0 -67
  103. package/examples/v2_json_auth/controllers/mainController.js +0 -16
  104. package/examples/v2_json_auth/controllers/protectedController.js +0 -12
  105. package/examples/v2_json_auth/controllers/tokenController.js +0 -28
  106. package/examples/v2_json_auth/controllers/userController.js +0 -15
  107. package/examples/v2_json_auth/package.json +0 -26
  108. package/examples/v2_json_auth/routes.json +0 -37
  109. package/examples/v2_json_auth/tokens.json +0 -20
  110. package/examples/v2_mariadb_auth/README.md +0 -94
  111. package/examples/v2_mariadb_auth/app.js +0 -81
  112. package/examples/v2_mariadb_auth/controllers/authController.js +0 -95
  113. package/examples/v2_mariadb_auth/controllers/mainController.js +0 -31
  114. package/examples/v2_mariadb_auth/controllers/protectedController.js +0 -12
  115. package/examples/v2_mariadb_auth/controllers/userController.js +0 -17
  116. package/examples/v2_mariadb_auth/package.json +0 -27
  117. package/examples/v2_mariadb_auth/routes.json +0 -37
  118. package/examples/v2_no_auth/README.md +0 -75
  119. package/examples/v2_no_auth/app.js +0 -72
  120. package/examples/v2_no_auth/controllers/healthController.js +0 -14
  121. package/examples/v2_no_auth/controllers/mainController.js +0 -19
  122. package/examples/v2_no_auth/controllers/productController.js +0 -31
  123. package/examples/v2_no_auth/controllers/publicController.js +0 -16
  124. package/examples/v2_no_auth/package.json +0 -22
  125. package/examples/v2_no_auth/routes.json +0 -37
  126. package/examples/v2_oauth/README.md +0 -70
  127. package/examples/v2_oauth/app.js +0 -90
  128. package/examples/v2_oauth/controllers/mainController.js +0 -45
  129. package/examples/v2_oauth/controllers/oauthController.js +0 -247
  130. package/examples/v2_oauth/controllers/protectedController.js +0 -13
  131. package/examples/v2_oauth/controllers/userController.js +0 -17
  132. package/examples/v2_oauth/package.json +0 -26
  133. package/examples/v2_oauth/routes.json +0 -44
  134. package/examples/v2_openapi/README.md +0 -77
  135. package/examples/v2_openapi/app.js +0 -222
  136. package/examples/v2_openapi/controllers/authController.js +0 -52
  137. package/examples/v2_openapi/controllers/mainController.js +0 -26
  138. package/examples/v2_openapi/controllers/productController.js +0 -17
  139. package/examples/v2_openapi/controllers/userController.js +0 -27
  140. package/examples/v2_openapi/package.json +0 -26
  141. package/examples/v2_openapi/routes.json +0 -37
  142. package/v2examplle/v2_json_auth/README.md +0 -83
  143. package/v2examplle/v2_json_auth/app.js +0 -72
  144. package/v2examplle/v2_json_auth/controllers/authController.js +0 -67
  145. package/v2examplle/v2_json_auth/controllers/mainController.js +0 -16
  146. package/v2examplle/v2_json_auth/controllers/protectedController.js +0 -12
  147. package/v2examplle/v2_json_auth/controllers/tokenController.js +0 -28
  148. package/v2examplle/v2_json_auth/controllers/userController.js +0 -15
  149. package/v2examplle/v2_json_auth/package.json +0 -26
  150. package/v2examplle/v2_json_auth/routes.json +0 -37
  151. package/v2examplle/v2_json_auth/tokens.json +0 -20
  152. package/v2examplle/v2_mariadb_auth/README.md +0 -94
  153. package/v2examplle/v2_mariadb_auth/app.js +0 -81
  154. package/v2examplle/v2_mariadb_auth/controllers/authController.js +0 -95
  155. package/v2examplle/v2_mariadb_auth/controllers/mainController.js +0 -31
  156. package/v2examplle/v2_mariadb_auth/controllers/protectedController.js +0 -12
  157. package/v2examplle/v2_mariadb_auth/controllers/userController.js +0 -17
  158. package/v2examplle/v2_mariadb_auth/package.json +0 -27
  159. package/v2examplle/v2_mariadb_auth/routes.json +0 -37
  160. package/v2examplle/v2_sqlite_auth/README.md +0 -72
  161. package/v2examplle/v2_sqlite_auth/app.js +0 -74
  162. package/v2examplle/v2_sqlite_auth/app_fixed.js +0 -74
  163. package/v2examplle/v2_sqlite_auth/controllers/authController.js +0 -64
  164. package/v2examplle/v2_sqlite_auth/controllers/mainController.js +0 -24
  165. package/v2examplle/v2_sqlite_auth/controllers/protectedController.js +0 -12
  166. package/v2examplle/v2_sqlite_auth/controllers/userController.js +0 -16
  167. package/v2examplle/v2_sqlite_auth/package.json +0 -27
  168. package/v2examplle/v2_sqlite_auth/routes.json +0 -30
  169. package/v2examplle/v2_sqlite_auth/test_api.sh +0 -47
  170. package/v2examplle/v2_sqlite_auth/tokens_example.sqlite +0 -0
@@ -1,50 +0,0 @@
1
- /**
2
- * Ejemplo de página de bienvenida usando el motor de plantillas MVC de JERK
3
- * Demostración del sistema MVC con vistas y controladores
4
- */
5
-
6
- const { APIServer, Router, Logger } = require('../../index');
7
- const WelcomeController = require('./controllers/welcomeController');
8
-
9
- async function startServer() {
10
- // Crear instancia del servidor
11
- const server = new APIServer({
12
- port: 9002,
13
- host: 'localhost'
14
- });
15
-
16
- // Crear instancia del logger
17
- const logger = new Logger({ level: 'info' });
18
-
19
- // Crear instancia del controlador
20
- const welcomeController = new WelcomeController({
21
- viewsPath: './examples/mvc_welcome/views'
22
- });
23
-
24
- // Definir rutas
25
- const router = new Router();
26
-
27
- router
28
- .get('/', (req, res) => {
29
- welcomeController.setRequestResponse(req, res);
30
- welcomeController.index(req, res);
31
- });
32
-
33
- // Agregar las rutas del router al servidor
34
- const routes = router.getRoutes();
35
- for (const route of routes) {
36
- server.addRoute(route.method, route.path, route.handler);
37
- }
38
-
39
- // Iniciar el servidor
40
- server.start(() => {
41
- logger.info('Servidor de bienvenida MVC iniciado en http://localhost:9002');
42
- logger.info('Ruta disponible:');
43
- logger.info('- http://localhost:9002/ (Página de bienvenida)');
44
- });
45
- }
46
-
47
- // Iniciar el servidor
48
- startServer();
49
-
50
- module.exports = { startServer };
@@ -1,41 +0,0 @@
1
- const { ControllerBase } = require('../../../index');
2
-
3
- class WelcomeController extends ControllerBase {
4
- constructor(options = {}) {
5
- super(options);
6
- }
7
-
8
- index(req, res) {
9
- // Establecer variables para la vista
10
- this.set('title', 'Bienvenido a JERK Framework');
11
- this.set('message', 'El poderoso framework para construir aplicaciones web completas con Node.js');
12
-
13
- // Datos de características del framework
14
- this.set('features', [
15
- {
16
- name: 'Motor MVC',
17
- description: 'Sistema completo de vistas, controladores y modelos'
18
- },
19
- {
20
- name: 'Seguridad',
21
- description: 'Firewall integrado y protección contra ataques'
22
- },
23
- {
24
- name: 'Autenticación',
25
- description: 'Soporte para JWT, OAuth, sesiones y más'
26
- },
27
- {
28
- name: 'Flexibilidad',
29
- description: 'Arquitectura modular y altamente configurable'
30
- }
31
- ]);
32
-
33
- this.set('documentationUrl', 'https://jerk.page.gd/');
34
- this.set('examplesUrl', 'https://gitlab.com/bytedogssyndicate1/jerk');
35
-
36
- // Renderizar la vista
37
- this.render(res, 'home/welcome');
38
- }
39
- }
40
-
41
- module.exports = WelcomeController;
@@ -1,26 +0,0 @@
1
- {
2
- "name": "jerk-mvc-welcome-example",
3
- "version": "1.0.0",
4
- "description": "Ejemplo de página de bienvenida usando el motor de plantillas MVC del framework JERK",
5
- "main": "app.js",
6
- "scripts": {
7
- "start": "node app.js",
8
- "dev": "nodemon app.js"
9
- },
10
- "keywords": [
11
- "jerk",
12
- "mvc",
13
- "template-engine",
14
- "welcome-page",
15
- "nodejs",
16
- "framework"
17
- ],
18
- "author": "JERK Framework Team",
19
- "license": "Apache-2.0",
20
- "dependencies": {
21
- "jerkjs": "^2.0.0"
22
- },
23
- "devDependencies": {
24
- "nodemon": "^3.0.0"
25
- }
26
- }
@@ -1,82 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="es">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>{{title}}</title>
7
- <style>
8
- body {
9
- font-family: Arial, sans-serif;
10
- margin: 0;
11
- padding: 0;
12
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
13
- min-height: 100vh;
14
- display: flex;
15
- align-items: center;
16
- justify-content: center;
17
- }
18
- .container {
19
- background: white;
20
- padding: 2rem;
21
- border-radius: 10px;
22
- box-shadow: 0 10px 30px rgba(0,0,0,0.2);
23
- text-align: center;
24
- max-width: 600px;
25
- width: 90%;
26
- }
27
- h1 {
28
- color: #333;
29
- margin-bottom: 1rem;
30
- }
31
- .message {
32
- font-size: 1.2rem;
33
- color: #666;
34
- margin-bottom: 2rem;
35
- }
36
- .features {
37
- display: grid;
38
- grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
39
- gap: 1rem;
40
- margin: 2rem 0;
41
- }
42
- .feature {
43
- background: #f8f9fa;
44
- padding: 1rem;
45
- border-radius: 5px;
46
- border-left: 4px solid #667eea;
47
- }
48
- .btn {
49
- display: inline-block;
50
- background: #667eea;
51
- color: white;
52
- padding: 0.75rem 1.5rem;
53
- text-decoration: none;
54
- border-radius: 5px;
55
- margin-top: 1rem;
56
- transition: background 0.3s;
57
- }
58
- .btn:hover {
59
- background: #5a6fd8;
60
- }
61
- </style>
62
- </head>
63
- <body>
64
- <div class="container">
65
- <h1>{{title}}</h1>
66
- <div class="message">{{message}}</div>
67
-
68
- <div class="features">
69
- {{foreach:features}}
70
- <div class="feature">
71
- <h3>{{item.name}}</h3>
72
- <p>{{item.description}}</p>
73
- </div>
74
- {{endforeach}}
75
- </div>
76
-
77
- <p>¡Comienza a construir tu aplicación con JERK!</p>
78
- <a href="{{documentationUrl}}" class="btn">Documentación</a>
79
- <a href="{{examplesUrl}}" class="btn">Ejemplos</a>
80
- </div>
81
- </body>
82
- </html>
@@ -1,172 +0,0 @@
1
- const Jerk = require('../../index.js');
2
-
3
- // Crear instancia del servidor con configuraciones de rendimiento
4
- const app = new Jerk({
5
- port: 3000,
6
- host: 'localhost',
7
- enableCompression: true, // Habilitar compresión
8
- maxBodySize: '50mb', // Permitir bodies extensos
9
- enableNestedRoutes: true // Habilitar rutas anidadas
10
- });
11
-
12
- // Middleware de compresión
13
- app.use(require('../../lib/middleware/compressor')());
14
-
15
- // Ruta para probar compresión con respuesta grande
16
- app.get('/api/compression-test', (req, res) => {
17
- // Generar una respuesta grande para demostrar compresión
18
- const largeData = {
19
- message: 'Esta es una respuesta grande para demostrar compresión',
20
- data: Array.from({ length: 1000 }, (_, i) => ({
21
- id: i,
22
- title: `Item ${i}`,
23
- description: `Este es un elemento de prueba número ${i} con información detallada`,
24
- metadata: {
25
- created: new Date().toISOString(),
26
- category: `categoria-${i % 10}`,
27
- tags: [`tag${i % 5}`, `etiqueta${i % 7}`]
28
- }
29
- }))
30
- };
31
-
32
- res.json(largeData);
33
- });
34
-
35
- // Ruta para probar bodies extensos
36
- app.post('/api/large-body', (req, res) => {
37
- const bodySize = JSON.stringify(req.body).length;
38
-
39
- res.json({
40
- message: 'Body recibido exitosamente',
41
- size: bodySize,
42
- status: 'success'
43
- });
44
- });
45
-
46
- // Rutas anidadas para demostrar jerarquía
47
- app.get('/api/users/:userId/posts', (req, res) => {
48
- const { userId } = req.params;
49
-
50
- res.json({
51
- message: `Posts del usuario ${userId}`,
52
- posts: Array.from({ length: 5 }, (_, i) => ({
53
- id: i + 1,
54
- title: `Post ${i + 1} de usuario ${userId}`,
55
- content: 'Contenido del post...'
56
- }))
57
- });
58
- });
59
-
60
- app.get('/api/users/:userId/posts/:postId/comments', (req, res) => {
61
- const { userId, postId } = req.params;
62
-
63
- res.json({
64
- message: `Comentarios del post ${postId} del usuario ${userId}`,
65
- comments: Array.from({ length: 3 }, (_, i) => ({
66
- id: i + 1,
67
- author: `Usuario${i + 1}`,
68
- content: `Comentario ${i + 1} en el post ${postId}`
69
- }))
70
- });
71
- });
72
-
73
- // Ruta para probar diferentes tipos de payloads grandes
74
- app.post('/api/upload-large-data', (req, res) => {
75
- const { dataType, dataSize } = req.body || {};
76
-
77
- let response;
78
- switch(dataType) {
79
- case 'text':
80
- response = {
81
- type: 'text',
82
- content: 'x'.repeat(dataSize || 10000),
83
- message: 'Texto largo generado para pruebas de compresión'
84
- };
85
- break;
86
- case 'json':
87
- response = {
88
- type: 'json',
89
- data: Array.from({ length: dataSize || 1000 }, (_, i) => ({
90
- id: i,
91
- value: Math.random(),
92
- label: `Elemento ${i}`
93
- })),
94
- message: 'JSON grande generado para pruebas de compresión'
95
- };
96
- break;
97
- default:
98
- response = {
99
- type: 'default',
100
- message: 'Tipo de dato no especificado, usando valores por defecto',
101
- sample: Array(100).fill().map((_, i) => `dato_${i}`)
102
- };
103
- }
104
-
105
- res.json(response);
106
- });
107
-
108
- // Endpoint para medir tiempo de respuesta
109
- app.get('/api/performance-test', (req, res) => {
110
- const startTime = Date.now();
111
-
112
- // Simular procesamiento intensivo
113
- const processData = () => {
114
- return Array.from({ length: 50000 }, (_, i) => ({
115
- id: i,
116
- computedValue: Math.sqrt(i) * Math.sin(i),
117
- timestamp: Date.now()
118
- }));
119
- };
120
-
121
- const processedData = processData();
122
- const endTime = Date.now();
123
-
124
- res.json({
125
- message: 'Prueba de rendimiento completada',
126
- processingTime: endTime - startTime,
127
- dataSize: processedData.length,
128
- status: 'success'
129
- });
130
- });
131
-
132
- // Ruta raíz para instrucciones
133
- app.get('/', (req, res) => {
134
- res.send(`
135
- <html>
136
- <head><title>Demo de Rendimiento - JERK Framework</title></head>
137
- <body>
138
- <h1>Demo de Rendimiento - JERK Framework</h1>
139
- <p>Esta demostración muestra las capacidades de rendimiento del framework:</p>
140
- <ul>
141
- <li><strong>Compresión</strong>: <a href="/api/compression-test">/api/compression-test</a> - Respuesta grande comprimida</li>
142
- <li><strong>Body Extensos</strong>: POST a <code>/api/large-body</code> con grandes cantidades de datos</li>
143
- <li><strong>Rutas Anidadas</strong>:
144
- <ul>
145
- <li><a href="/api/users/123/posts">/api/users/:userId/posts</a></li>
146
- <li><a href="/api/users/123/posts/456/comments">/api/users/:userId/posts/:postId/comments</a></li>
147
- </ul>
148
- </li>
149
- <li><strong>Upload de Datos Grandes</strong>: POST a <code>/api/upload-large-data</code> con diferentes tipos de datos</li>
150
- <li><strong>Prueba de Rendimiento</strong>: <a href="/api/performance-test">/api/performance-test</a> - Medición de tiempo de procesamiento</li>
151
- </ul>
152
- <p>Para probar bodies extensos, usa curl o Postman para hacer POST requests a los endpoints correspondientes.</p>
153
- </body>
154
- </html>
155
- `);
156
- });
157
-
158
- // Iniciar el servidor
159
- app.listen(() => {
160
- console.log('Demo de rendimiento iniciado en http://localhost:3000');
161
- console.log('Endpoints disponibles:');
162
- console.log(' GET /api/compression-test - Demo de compresión');
163
- console.log(' POST /api/large-body - Demo de bodies extensos');
164
- console.log(' GET /api/users/:userId/posts - Demo de rutas anidadas');
165
- console.log(' GET /api/users/:userId/posts/:postId/comments - Demo de rutas anidadas profundas');
166
- console.log(' POST /api/upload-large-data - Demo de carga de datos grandes');
167
- console.log(' GET /api/performance-test - Demo de rendimiento');
168
- console.log('');
169
- console.log('Visita http://localhost:3000 para ver la página principal');
170
- });
171
-
172
- module.exports = app;
@@ -1,52 +0,0 @@
1
- # Demo de Rendimiento - JERK Framework
2
-
3
- Este demostración muestra las capacidades de rendimiento del framework JERK, incluyendo:
4
-
5
- ## Características
6
-
7
- - **Compresión de respuestas**: El servidor comprime automáticamente las respuestas grandes para mejorar el rendimiento.
8
- - **Soporte para bodies extensos**: Capacidad para manejar payloads grandes en requests POST.
9
- - **Rutas anidadas**: Soporte para rutas jerárquicas complejas.
10
- - **Verificación de puerto**: El servidor encuentra automáticamente un puerto disponible para evitar conflictos.
11
- - **Visualización de rutas**: Lista interactiva de todas las rutas disponibles usando hooks.
12
-
13
- ## Endpoints
14
-
15
- ### Compresión
16
- - `GET /api/compression-test` - Retorna una respuesta grande para demostrar compresión
17
-
18
- ### Bodies Extensos
19
- - `POST /api/large-body` - Acepta grandes cantidades de datos en el body
20
-
21
- ### Rutas Anidadas
22
- - `GET /api/users/:userId/posts` - Posts de un usuario específico
23
- - `GET /api/users/:userId/posts/:postId/comments` - Comentarios de un post específico
24
-
25
- ### Otros Endpoints
26
- - `POST /api/upload-large-data` - Prueba de carga de datos grandes con diferentes tipos
27
- - `GET /api/performance-test` - Medición de tiempo de procesamiento
28
- - `GET /` - Página principal con instrucciones
29
- - `GET /routes` - Lista interactiva de todas las rutas disponibles
30
-
31
- ## Cómo Ejecutar
32
-
33
- ```bash
34
- cd examples/performance_demo_with_hooks
35
- node app.js
36
- ```
37
-
38
- El servidor se iniciará en un puerto disponible entre 3000 y 3100, y mostrará el puerto asignado en la consola.
39
-
40
- ## Pruebas
41
-
42
- Para probar la compresión, visita `/api/compression-test` y observa cómo se envía una respuesta grande de manera eficiente.
43
-
44
- Para probar bodies extensos, puedes usar curl:
45
-
46
- ```bash
47
- curl -X POST http://localhost:[PUERTO]/api/large-body \
48
- -H "Content-Type: application/json" \
49
- -d '{"data": "'"$(printf 'x%.0s' {1..10000})"'"}'
50
- ```
51
-
52
- Para ver todas las rutas disponibles, visita `/routes` en tu navegador.