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.
- package/CHANGELOG.md +501 -240
- package/README.md +141 -1
- package/dist/cjs/src/cli/index.js +125 -74
- package/dist/cjs/src/cli/index.js.map +4 -4
- package/dist/cjs/src/index.js +66 -25
- package/dist/cjs/src/index.js.map +112 -10
- package/dist/cjs/src/middleware/index.js +28 -2
- package/dist/cjs/src/middleware/index.js.map +79 -4
- package/dist/cjs/src/plugins/index.js +49 -23
- package/dist/cjs/src/plugins/index.js.map +74 -4
- package/dist/cjs/src/testing/index.js +30 -4
- package/dist/cjs/src/testing/index.js.map +80 -7
- package/dist/cjs/src/websocket/index.js +3 -3
- package/dist/cjs/src/websocket/index.js.map +1 -1
- package/dist/esm/src/cli/index.js +561 -22
- package/dist/esm/src/cli/index.js.map +8 -4
- package/dist/esm/src/docs/index.js +6 -6
- package/dist/esm/src/docs/index.js.map +10 -3
- package/dist/esm/src/errors/index.js +3 -2
- package/dist/esm/src/errors/index.js.map +7 -3
- package/dist/esm/src/graphql/index.js +82 -2
- package/dist/esm/src/graphql/index.js.map +18 -3
- package/dist/esm/src/index.js +165 -3
- package/dist/esm/src/index.js.map +202 -6
- package/dist/esm/src/middleware/index.js +28 -2
- package/dist/esm/src/middleware/index.js.map +81 -3
- package/dist/esm/src/plugins/index.js +113 -3
- package/dist/esm/src/plugins/index.js.map +131 -4
- package/dist/esm/src/testing/index.js +42 -2
- package/dist/esm/src/testing/index.js.map +97 -7
- package/dist/esm/src/types/index.js +2 -2
- package/dist/esm/src/types/index.js.map +10 -3
- package/dist/esm/src/validation/index.js +2 -2
- package/dist/esm/src/validation/index.js.map +13 -3
- package/dist/esm/src/websocket/index.js +15 -2
- package/dist/esm/src/websocket/index.js.map +9 -4
- package/dist/types/adapters/base.d.ts +10 -2
- package/dist/types/adapters/base.d.ts.map +1 -1
- package/dist/types/adapters/hono.d.ts +2 -2
- package/dist/types/adapters/hono.d.ts.map +1 -1
- package/dist/types/auth/permissions.d.ts +10 -10
- package/dist/types/auth/session.d.ts +2 -2
- package/dist/types/cache/index.d.ts +9 -0
- package/dist/types/cache/index.d.ts.map +1 -0
- package/dist/types/cache/manager.d.ts +75 -0
- package/dist/types/cache/manager.d.ts.map +1 -0
- package/dist/types/cache/memory-store.d.ts +55 -0
- package/dist/types/cache/memory-store.d.ts.map +1 -0
- package/dist/types/cache/redis-store.d.ts +55 -0
- package/dist/types/cache/redis-store.d.ts.map +1 -0
- package/dist/types/cache/types.d.ts +92 -0
- package/dist/types/cache/types.d.ts.map +1 -0
- package/dist/types/cli/commands/new.d.ts.map +1 -1
- package/dist/types/context/request-context.d.ts +66 -0
- package/dist/types/context/request-context.d.ts.map +1 -0
- package/dist/types/core/application.d.ts +11 -0
- package/dist/types/core/application.d.ts.map +1 -1
- package/dist/types/core/router-compiler.d.ts +1 -1
- package/dist/types/core/router-compiler.d.ts.map +1 -1
- package/dist/types/decorators/cache.d.ts +56 -0
- package/dist/types/decorators/cache.d.ts.map +1 -0
- package/dist/types/decorators/params.d.ts +24 -0
- package/dist/types/decorators/params.d.ts.map +1 -1
- package/dist/types/dependencies/container.d.ts +1 -1
- package/dist/types/dependencies/container.d.ts.map +1 -1
- package/dist/types/index.d.ts +7 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/logging/index.d.ts +10 -0
- package/dist/types/logging/index.d.ts.map +1 -0
- package/dist/types/logging/logger.d.ts +25 -0
- package/dist/types/logging/logger.d.ts.map +1 -0
- package/dist/types/logging/middleware.d.ts +15 -0
- package/dist/types/logging/middleware.d.ts.map +1 -0
- package/dist/types/logging/types.d.ts +22 -0
- package/dist/types/logging/types.d.ts.map +1 -0
- package/dist/types/middleware/cache.d.ts +54 -0
- package/dist/types/middleware/cache.d.ts.map +1 -0
- package/dist/types/middleware/index.d.ts +3 -0
- package/dist/types/middleware/index.d.ts.map +1 -1
- package/dist/types/middleware/request-context.d.ts +55 -0
- package/dist/types/middleware/request-context.d.ts.map +1 -0
- package/dist/types/orm/base-repository.d.ts +77 -0
- package/dist/types/orm/base-repository.d.ts.map +1 -0
- package/dist/types/orm/decorators.d.ts +35 -0
- package/dist/types/orm/decorators.d.ts.map +1 -0
- package/dist/types/orm/drizzle/index.d.ts +6 -0
- package/dist/types/orm/drizzle/index.d.ts.map +1 -0
- package/dist/types/orm/drizzle/plugin.d.ts +165 -0
- package/dist/types/orm/drizzle/plugin.d.ts.map +1 -0
- package/dist/types/orm/drizzle/repository.d.ts +61 -0
- package/dist/types/orm/drizzle/repository.d.ts.map +1 -0
- package/dist/types/orm/drizzle/schema-converter.d.ts +53 -0
- package/dist/types/orm/drizzle/schema-converter.d.ts.map +1 -0
- package/dist/types/orm/drizzle/transaction-manager.d.ts +58 -0
- package/dist/types/orm/drizzle/transaction-manager.d.ts.map +1 -0
- package/dist/types/orm/drizzle/types.d.ts +121 -0
- package/dist/types/orm/drizzle/types.d.ts.map +1 -0
- package/dist/types/orm/index.d.ts +16 -0
- package/dist/types/orm/index.d.ts.map +1 -0
- package/dist/types/orm/pagination.d.ts +147 -0
- package/dist/types/orm/pagination.d.ts.map +1 -0
- package/dist/types/orm/prisma/index.d.ts +6 -0
- package/dist/types/orm/prisma/index.d.ts.map +1 -0
- package/dist/types/orm/prisma/plugin.d.ts +68 -0
- package/dist/types/orm/prisma/plugin.d.ts.map +1 -0
- package/dist/types/orm/prisma/repository.d.ts +70 -0
- package/dist/types/orm/prisma/repository.d.ts.map +1 -0
- package/dist/types/orm/prisma/schema-generator.d.ts +45 -0
- package/dist/types/orm/prisma/schema-generator.d.ts.map +1 -0
- package/dist/types/orm/prisma/transaction-manager.d.ts +32 -0
- package/dist/types/orm/prisma/transaction-manager.d.ts.map +1 -0
- package/dist/types/orm/prisma/types.d.ts +67 -0
- package/dist/types/orm/prisma/types.d.ts.map +1 -0
- package/dist/types/orm/query-builder.d.ts +129 -0
- package/dist/types/orm/query-builder.d.ts.map +1 -0
- package/dist/types/orm/repository-factory.d.ts +130 -0
- package/dist/types/orm/repository-factory.d.ts.map +1 -0
- package/dist/types/orm/transaction-events.d.ts +122 -0
- package/dist/types/orm/transaction-events.d.ts.map +1 -0
- package/dist/types/orm/transaction-interceptor.d.ts +30 -0
- package/dist/types/orm/transaction-interceptor.d.ts.map +1 -0
- package/dist/types/orm/transaction-manager.d.ts +64 -0
- package/dist/types/orm/transaction-manager.d.ts.map +1 -0
- package/dist/types/orm/transaction-plugin.d.ts +117 -0
- package/dist/types/orm/transaction-plugin.d.ts.map +1 -0
- package/dist/types/orm/transaction-propagation.d.ts +49 -0
- package/dist/types/orm/transaction-propagation.d.ts.map +1 -0
- package/dist/types/orm/typeorm/decorators.d.ts +40 -0
- package/dist/types/orm/typeorm/decorators.d.ts.map +1 -0
- package/dist/types/orm/typeorm/index.d.ts +6 -0
- package/dist/types/orm/typeorm/index.d.ts.map +1 -0
- package/dist/types/orm/typeorm/plugin.d.ts +100 -0
- package/dist/types/orm/typeorm/plugin.d.ts.map +1 -0
- package/dist/types/orm/typeorm/repository.d.ts +58 -0
- package/dist/types/orm/typeorm/repository.d.ts.map +1 -0
- package/dist/types/orm/typeorm/transaction-manager.d.ts +48 -0
- package/dist/types/orm/typeorm/transaction-manager.d.ts.map +1 -0
- package/dist/types/orm/typeorm/types.d.ts +139 -0
- package/dist/types/orm/typeorm/types.d.ts.map +1 -0
- package/dist/types/plugins/health.d.ts +75 -0
- package/dist/types/plugins/health.d.ts.map +1 -0
- package/dist/types/plugins/index.d.ts +2 -0
- package/dist/types/plugins/index.d.ts.map +1 -1
- package/dist/types/types/index.d.ts +15 -2
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/types/websocket/index.d.ts +1 -1
- package/dist/types/websocket/index.d.ts.map +1 -1
- package/package.json +22 -2
- package/dist/esm/chunk-2100y16g.js +0 -5
- package/dist/esm/chunk-2100y16g.js.map +0 -10
- package/dist/esm/chunk-5q75d71c.js +0 -4
- package/dist/esm/chunk-5q75d71c.js.map +0 -16
- package/dist/esm/chunk-8dpc6an2.js +0 -7
- package/dist/esm/chunk-8dpc6an2.js.map +0 -10
- package/dist/esm/chunk-9v7atckx.js +0 -5
- package/dist/esm/chunk-9v7atckx.js.map +0 -10
- package/dist/esm/chunk-bvstdn0t.js +0 -60
- package/dist/esm/chunk-bvstdn0t.js.map +0 -10
- package/dist/esm/chunk-ctwpr5gr.js +0 -430
- package/dist/esm/chunk-ctwpr5gr.js.map +0 -10
- package/dist/esm/chunk-dtw2tbsd.js +0 -5
- package/dist/esm/chunk-dtw2tbsd.js.map +0 -12
- package/dist/esm/chunk-ef0vfd27.js +0 -72
- package/dist/esm/chunk-ef0vfd27.js.map +0 -13
- package/dist/esm/chunk-k66rn4fj.js +0 -18
- package/dist/esm/chunk-k66rn4fj.js.map +0 -10
- package/dist/esm/chunk-mky5qqg0.js +0 -5
- package/dist/esm/chunk-mky5qqg0.js.map +0 -10
- package/dist/esm/chunk-mznkhz9c.js +0 -5
- package/dist/esm/chunk-mznkhz9c.js.map +0 -12
- package/dist/esm/chunk-s5z0wb7e.js +0 -5
- package/dist/esm/chunk-s5z0wb7e.js.map +0 -10
- package/dist/esm/chunk-vh4sxcpe.js +0 -6
- package/dist/esm/chunk-vh4sxcpe.js.map +0 -10
- package/dist/esm/chunk-xa333k40.js +0 -7
- package/dist/esm/chunk-xa333k40.js.map +0 -10
- package/dist/esm/chunk-y262e56g.js +0 -5
- package/dist/esm/chunk-y262e56g.js.map +0 -9
- package/dist/esm/chunk-yq3gf9ts.js +0 -5
- 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
|
|