veloce-ts 0.2.6 → 0.3.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 (180) hide show
  1. package/CHANGELOG.md +501 -240
  2. package/README.md +141 -1
  3. package/dist/cjs/src/cli/index.js +125 -74
  4. package/dist/cjs/src/cli/index.js.map +4 -4
  5. package/dist/cjs/src/index.js +66 -25
  6. package/dist/cjs/src/index.js.map +112 -10
  7. package/dist/cjs/src/middleware/index.js +28 -2
  8. package/dist/cjs/src/middleware/index.js.map +79 -4
  9. package/dist/cjs/src/plugins/index.js +49 -23
  10. package/dist/cjs/src/plugins/index.js.map +74 -4
  11. package/dist/cjs/src/testing/index.js +30 -4
  12. package/dist/cjs/src/testing/index.js.map +80 -7
  13. package/dist/cjs/src/websocket/index.js +3 -3
  14. package/dist/cjs/src/websocket/index.js.map +1 -1
  15. package/dist/esm/src/cli/index.js +561 -22
  16. package/dist/esm/src/cli/index.js.map +8 -4
  17. package/dist/esm/src/docs/index.js +6 -6
  18. package/dist/esm/src/docs/index.js.map +10 -3
  19. package/dist/esm/src/errors/index.js +3 -2
  20. package/dist/esm/src/errors/index.js.map +7 -3
  21. package/dist/esm/src/graphql/index.js +82 -2
  22. package/dist/esm/src/graphql/index.js.map +18 -3
  23. package/dist/esm/src/index.js +165 -3
  24. package/dist/esm/src/index.js.map +202 -6
  25. package/dist/esm/src/middleware/index.js +28 -2
  26. package/dist/esm/src/middleware/index.js.map +81 -3
  27. package/dist/esm/src/plugins/index.js +113 -3
  28. package/dist/esm/src/plugins/index.js.map +131 -4
  29. package/dist/esm/src/testing/index.js +42 -2
  30. package/dist/esm/src/testing/index.js.map +97 -7
  31. package/dist/esm/src/types/index.js +2 -2
  32. package/dist/esm/src/types/index.js.map +10 -3
  33. package/dist/esm/src/validation/index.js +2 -2
  34. package/dist/esm/src/validation/index.js.map +13 -3
  35. package/dist/esm/src/websocket/index.js +15 -2
  36. package/dist/esm/src/websocket/index.js.map +9 -4
  37. package/dist/types/adapters/base.d.ts +10 -2
  38. package/dist/types/adapters/base.d.ts.map +1 -1
  39. package/dist/types/adapters/hono.d.ts +2 -2
  40. package/dist/types/adapters/hono.d.ts.map +1 -1
  41. package/dist/types/auth/permissions.d.ts +10 -10
  42. package/dist/types/auth/session.d.ts +2 -2
  43. package/dist/types/cache/index.d.ts +9 -0
  44. package/dist/types/cache/index.d.ts.map +1 -0
  45. package/dist/types/cache/manager.d.ts +75 -0
  46. package/dist/types/cache/manager.d.ts.map +1 -0
  47. package/dist/types/cache/memory-store.d.ts +55 -0
  48. package/dist/types/cache/memory-store.d.ts.map +1 -0
  49. package/dist/types/cache/redis-store.d.ts +55 -0
  50. package/dist/types/cache/redis-store.d.ts.map +1 -0
  51. package/dist/types/cache/types.d.ts +92 -0
  52. package/dist/types/cache/types.d.ts.map +1 -0
  53. package/dist/types/cli/commands/new.d.ts.map +1 -1
  54. package/dist/types/context/request-context.d.ts +66 -0
  55. package/dist/types/context/request-context.d.ts.map +1 -0
  56. package/dist/types/core/application.d.ts +11 -0
  57. package/dist/types/core/application.d.ts.map +1 -1
  58. package/dist/types/core/router-compiler.d.ts +1 -1
  59. package/dist/types/core/router-compiler.d.ts.map +1 -1
  60. package/dist/types/decorators/cache.d.ts +56 -0
  61. package/dist/types/decorators/cache.d.ts.map +1 -0
  62. package/dist/types/decorators/params.d.ts +24 -0
  63. package/dist/types/decorators/params.d.ts.map +1 -1
  64. package/dist/types/dependencies/container.d.ts +1 -1
  65. package/dist/types/dependencies/container.d.ts.map +1 -1
  66. package/dist/types/index.d.ts +7 -1
  67. package/dist/types/index.d.ts.map +1 -1
  68. package/dist/types/logging/index.d.ts +10 -0
  69. package/dist/types/logging/index.d.ts.map +1 -0
  70. package/dist/types/logging/logger.d.ts +25 -0
  71. package/dist/types/logging/logger.d.ts.map +1 -0
  72. package/dist/types/logging/middleware.d.ts +15 -0
  73. package/dist/types/logging/middleware.d.ts.map +1 -0
  74. package/dist/types/logging/types.d.ts +22 -0
  75. package/dist/types/logging/types.d.ts.map +1 -0
  76. package/dist/types/middleware/cache.d.ts +54 -0
  77. package/dist/types/middleware/cache.d.ts.map +1 -0
  78. package/dist/types/middleware/index.d.ts +3 -0
  79. package/dist/types/middleware/index.d.ts.map +1 -1
  80. package/dist/types/middleware/request-context.d.ts +55 -0
  81. package/dist/types/middleware/request-context.d.ts.map +1 -0
  82. package/dist/types/orm/base-repository.d.ts +77 -0
  83. package/dist/types/orm/base-repository.d.ts.map +1 -0
  84. package/dist/types/orm/decorators.d.ts +35 -0
  85. package/dist/types/orm/decorators.d.ts.map +1 -0
  86. package/dist/types/orm/drizzle/index.d.ts +6 -0
  87. package/dist/types/orm/drizzle/index.d.ts.map +1 -0
  88. package/dist/types/orm/drizzle/plugin.d.ts +165 -0
  89. package/dist/types/orm/drizzle/plugin.d.ts.map +1 -0
  90. package/dist/types/orm/drizzle/repository.d.ts +61 -0
  91. package/dist/types/orm/drizzle/repository.d.ts.map +1 -0
  92. package/dist/types/orm/drizzle/schema-converter.d.ts +53 -0
  93. package/dist/types/orm/drizzle/schema-converter.d.ts.map +1 -0
  94. package/dist/types/orm/drizzle/transaction-manager.d.ts +58 -0
  95. package/dist/types/orm/drizzle/transaction-manager.d.ts.map +1 -0
  96. package/dist/types/orm/drizzle/types.d.ts +121 -0
  97. package/dist/types/orm/drizzle/types.d.ts.map +1 -0
  98. package/dist/types/orm/index.d.ts +16 -0
  99. package/dist/types/orm/index.d.ts.map +1 -0
  100. package/dist/types/orm/pagination.d.ts +147 -0
  101. package/dist/types/orm/pagination.d.ts.map +1 -0
  102. package/dist/types/orm/prisma/index.d.ts +6 -0
  103. package/dist/types/orm/prisma/index.d.ts.map +1 -0
  104. package/dist/types/orm/prisma/plugin.d.ts +68 -0
  105. package/dist/types/orm/prisma/plugin.d.ts.map +1 -0
  106. package/dist/types/orm/prisma/repository.d.ts +70 -0
  107. package/dist/types/orm/prisma/repository.d.ts.map +1 -0
  108. package/dist/types/orm/prisma/schema-generator.d.ts +45 -0
  109. package/dist/types/orm/prisma/schema-generator.d.ts.map +1 -0
  110. package/dist/types/orm/prisma/transaction-manager.d.ts +32 -0
  111. package/dist/types/orm/prisma/transaction-manager.d.ts.map +1 -0
  112. package/dist/types/orm/prisma/types.d.ts +67 -0
  113. package/dist/types/orm/prisma/types.d.ts.map +1 -0
  114. package/dist/types/orm/query-builder.d.ts +129 -0
  115. package/dist/types/orm/query-builder.d.ts.map +1 -0
  116. package/dist/types/orm/repository-factory.d.ts +130 -0
  117. package/dist/types/orm/repository-factory.d.ts.map +1 -0
  118. package/dist/types/orm/transaction-events.d.ts +122 -0
  119. package/dist/types/orm/transaction-events.d.ts.map +1 -0
  120. package/dist/types/orm/transaction-interceptor.d.ts +30 -0
  121. package/dist/types/orm/transaction-interceptor.d.ts.map +1 -0
  122. package/dist/types/orm/transaction-manager.d.ts +64 -0
  123. package/dist/types/orm/transaction-manager.d.ts.map +1 -0
  124. package/dist/types/orm/transaction-plugin.d.ts +117 -0
  125. package/dist/types/orm/transaction-plugin.d.ts.map +1 -0
  126. package/dist/types/orm/transaction-propagation.d.ts +49 -0
  127. package/dist/types/orm/transaction-propagation.d.ts.map +1 -0
  128. package/dist/types/orm/typeorm/decorators.d.ts +40 -0
  129. package/dist/types/orm/typeorm/decorators.d.ts.map +1 -0
  130. package/dist/types/orm/typeorm/index.d.ts +6 -0
  131. package/dist/types/orm/typeorm/index.d.ts.map +1 -0
  132. package/dist/types/orm/typeorm/plugin.d.ts +100 -0
  133. package/dist/types/orm/typeorm/plugin.d.ts.map +1 -0
  134. package/dist/types/orm/typeorm/repository.d.ts +58 -0
  135. package/dist/types/orm/typeorm/repository.d.ts.map +1 -0
  136. package/dist/types/orm/typeorm/transaction-manager.d.ts +48 -0
  137. package/dist/types/orm/typeorm/transaction-manager.d.ts.map +1 -0
  138. package/dist/types/orm/typeorm/types.d.ts +139 -0
  139. package/dist/types/orm/typeorm/types.d.ts.map +1 -0
  140. package/dist/types/plugins/health.d.ts +75 -0
  141. package/dist/types/plugins/health.d.ts.map +1 -0
  142. package/dist/types/plugins/index.d.ts +2 -0
  143. package/dist/types/plugins/index.d.ts.map +1 -1
  144. package/dist/types/types/index.d.ts +15 -2
  145. package/dist/types/types/index.d.ts.map +1 -1
  146. package/dist/types/websocket/index.d.ts +1 -1
  147. package/dist/types/websocket/index.d.ts.map +1 -1
  148. package/package.json +22 -2
  149. package/dist/esm/chunk-2100y16g.js +0 -5
  150. package/dist/esm/chunk-2100y16g.js.map +0 -10
  151. package/dist/esm/chunk-5q75d71c.js +0 -4
  152. package/dist/esm/chunk-5q75d71c.js.map +0 -16
  153. package/dist/esm/chunk-8dpc6an2.js +0 -7
  154. package/dist/esm/chunk-8dpc6an2.js.map +0 -10
  155. package/dist/esm/chunk-9v7atckx.js +0 -5
  156. package/dist/esm/chunk-9v7atckx.js.map +0 -10
  157. package/dist/esm/chunk-bvstdn0t.js +0 -60
  158. package/dist/esm/chunk-bvstdn0t.js.map +0 -10
  159. package/dist/esm/chunk-ctwpr5gr.js +0 -430
  160. package/dist/esm/chunk-ctwpr5gr.js.map +0 -10
  161. package/dist/esm/chunk-dtw2tbsd.js +0 -5
  162. package/dist/esm/chunk-dtw2tbsd.js.map +0 -12
  163. package/dist/esm/chunk-ef0vfd27.js +0 -72
  164. package/dist/esm/chunk-ef0vfd27.js.map +0 -13
  165. package/dist/esm/chunk-k66rn4fj.js +0 -18
  166. package/dist/esm/chunk-k66rn4fj.js.map +0 -10
  167. package/dist/esm/chunk-mky5qqg0.js +0 -5
  168. package/dist/esm/chunk-mky5qqg0.js.map +0 -10
  169. package/dist/esm/chunk-mznkhz9c.js +0 -5
  170. package/dist/esm/chunk-mznkhz9c.js.map +0 -12
  171. package/dist/esm/chunk-s5z0wb7e.js +0 -5
  172. package/dist/esm/chunk-s5z0wb7e.js.map +0 -10
  173. package/dist/esm/chunk-vh4sxcpe.js +0 -6
  174. package/dist/esm/chunk-vh4sxcpe.js.map +0 -10
  175. package/dist/esm/chunk-xa333k40.js +0 -7
  176. package/dist/esm/chunk-xa333k40.js.map +0 -10
  177. package/dist/esm/chunk-y262e56g.js +0 -5
  178. package/dist/esm/chunk-y262e56g.js.map +0 -9
  179. package/dist/esm/chunk-yq3gf9ts.js +0 -5
  180. package/dist/esm/chunk-yq3gf9ts.js.map +0 -10
package/README.md CHANGED
@@ -69,6 +69,20 @@ Plugin ecosystem
69
69
  - WebSocket
70
70
  - Custom plugins
71
71
 
72
+ ### ⚡ **Performance** (v0.3.0)
73
+ Response caching
74
+ - In-memory & Redis stores
75
+ - Pattern invalidation
76
+ - TTL configuration
77
+ - Auto cache headers
78
+
79
+ ### 🔍 **Observability** (v0.3.0)
80
+ Request tracing
81
+ - Auto UUID tracking
82
+ - Request cancellation
83
+ - Timeout management
84
+ - Structured logging
85
+
72
86
  </td>
73
87
  </tr>
74
88
  </table>
@@ -280,6 +294,102 @@ class UserResolver {
280
294
 
281
295
  </details>
282
296
 
297
+ <details>
298
+ <summary><b>⚡ Response Caching (NEW in v0.3.0)</b></summary>
299
+
300
+ ```typescript
301
+ import { Controller, Get, Post, Cache, CacheInvalidate, Param, Body } from 'veloce-ts';
302
+
303
+ @Controller('/products')
304
+ class ProductController {
305
+ // Cache responses for 5 minutes
306
+ @Get('/')
307
+ @Cache({ ttl: '5m', key: 'products:list' })
308
+ async listProducts() {
309
+ return await db.products.findMany();
310
+ }
311
+
312
+ // Cache with dynamic key based on ID
313
+ @Get('/:id')
314
+ @Cache({ ttl: '10m', key: 'product:{id}' })
315
+ async getProduct(@Param('id') id: string) {
316
+ return await db.products.findOne(id);
317
+ }
318
+
319
+ // Invalidate cache patterns on mutation
320
+ @Post('/')
321
+ @CacheInvalidate(['products:*'])
322
+ async createProduct(@Body(ProductSchema) data: any) {
323
+ return await db.products.create(data);
324
+ }
325
+ }
326
+
327
+ // Or use Redis for distributed caching
328
+ import { RedisCacheStore } from 'veloce-ts/cache';
329
+
330
+ const redisCache = new RedisCacheStore({
331
+ host: 'localhost',
332
+ port: 6379,
333
+ });
334
+
335
+ app.use(createCacheMiddleware({ store: redisCache }));
336
+ ```
337
+
338
+ </details>
339
+
340
+ <details>
341
+ <summary><b>🔍 Request Context & Tracing (NEW in v0.3.0)</b></summary>
342
+
343
+ ```typescript
344
+ import { Controller, Get, RequestId, AbortSignal } from 'veloce-ts';
345
+ import { createRequestContextMiddleware } from 'veloce-ts';
346
+
347
+ // Enable request context middleware
348
+ app.use(createRequestContextMiddleware({
349
+ timeout: 30000, // 30 second timeout
350
+ logging: true // Auto-log all requests
351
+ }));
352
+
353
+ @Controller('/data')
354
+ class DataController {
355
+ // Get unique request ID for tracing
356
+ @Get('/process')
357
+ async processData(@RequestId() requestId: string) {
358
+ logger.info({ requestId }, 'Processing started');
359
+
360
+ // Request ID is automatically included in all logs
361
+ await performHeavyTask();
362
+
363
+ logger.info({ requestId }, 'Processing completed');
364
+ return { requestId, status: 'done' };
365
+ }
366
+
367
+ // Use AbortSignal for cancellation
368
+ @Get('/long-running')
369
+ async longRunning(@AbortSignal() signal: AbortSignal) {
370
+ // Check if request was cancelled
371
+ if (signal.aborted) {
372
+ throw new Error('Request cancelled');
373
+ }
374
+
375
+ // Listen for cancellation
376
+ signal.addEventListener('abort', () => {
377
+ console.log('Request cancelled by client');
378
+ });
379
+
380
+ return await performLongTask();
381
+ }
382
+ }
383
+
384
+ // Request ID is automatically added to response headers as X-Request-ID
385
+ // Example log output:
386
+ // [2025-10-29 10:23:45] [req-id: abc-123-def-456] INFO: Request started GET /data/process
387
+ // [2025-10-29 10:23:45] [req-id: abc-123-def-456] INFO: Processing started
388
+ // [2025-10-29 10:23:46] [req-id: abc-123-def-456] INFO: Processing completed
389
+ ```
390
+
391
+ </details>
392
+
283
393
  ---
284
394
 
285
395
  ## 🛠️ CLI Commands
@@ -336,6 +446,19 @@ app.use(async (c, next) => {
336
446
  app.useCors({ origin: '*' });
337
447
  app.useRateLimit({ windowMs: 15 * 60 * 1000, max: 100 });
338
448
  app.useCompression();
449
+
450
+ // Request context with tracing (v0.3.0)
451
+ import { createRequestContextMiddleware } from 'veloce-ts';
452
+ app.use(createRequestContextMiddleware({
453
+ timeout: 30000,
454
+ logging: true
455
+ }));
456
+
457
+ // Response caching (v0.3.0)
458
+ import { createCacheMiddleware, InMemoryCacheStore } from 'veloce-ts';
459
+ app.use(createCacheMiddleware({
460
+ store: new InMemoryCacheStore({ maxSize: 1000 })
461
+ }));
339
462
  ```
340
463
 
341
464
  ### Error Handling
@@ -417,9 +540,26 @@ app.listen(3000);
417
540
  }
418
541
  ```
419
542
 
543
+ ## 👥 Core Team
544
+
545
+ ### ExcessHawk - Lead Developer & Framework Architect
546
+ <img src="https://i.imgur.com/oogie-boogie-profile.png" alt="ExcessHawk" width="60" height="60" style="border-radius: 50%;">
547
+
548
+ **[@ExcessHawk](https://github.com/ExcessHawk)** - *"Building fast, type-safe web frameworks that developers love to use."*
549
+
550
+ - 🏗️ Core framework architecture and design
551
+ - ⚡ Performance optimizations and benchmarking
552
+ - 🛠️ Developer experience and tooling
553
+ - 🔌 Plugin system and extensibility
554
+
555
+ ### Alfredo Mejia - Project Founder
556
+ **[@AlfredoMejia3001](https://github.com/AlfredoMejia3001)** - Project founder and maintainer
557
+
558
+ ---
559
+
420
560
  ## 🤝 Contributing
421
561
 
422
- Contributions are welcome! Please feel free to submit a Pull Request.
562
+ Contributions are welcome! Please feel free to submit a Pull Request. See our [Contributors Guide](CONTRIBUTORS.md) for more details.
423
563
 
424
564
  ## 📄 License
425
565