@venizia/ignis-docs 0.0.5 → 0.0.6-0
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/package.json +1 -1
- package/wiki/best-practices/architecture-decisions.md +0 -8
- package/wiki/best-practices/code-style-standards/control-flow.md +1 -1
- package/wiki/best-practices/performance-optimization.md +3 -3
- package/wiki/best-practices/security-guidelines.md +2 -2
- package/wiki/best-practices/troubleshooting-tips.md +1 -1
- package/wiki/guides/core-concepts/components-guide.md +1 -1
- package/wiki/guides/core-concepts/components.md +2 -2
- package/wiki/guides/core-concepts/dependency-injection.md +1 -1
- package/wiki/guides/core-concepts/services.md +1 -1
- package/wiki/guides/tutorials/building-a-crud-api.md +1 -1
- package/wiki/guides/tutorials/ecommerce-api.md +2 -2
- package/wiki/guides/tutorials/realtime-chat.md +6 -6
- package/wiki/guides/tutorials/testing.md +1 -1
- package/wiki/references/base/bootstrapping.md +0 -2
- package/wiki/references/base/components.md +2 -2
- package/wiki/references/base/controllers.md +0 -1
- package/wiki/references/base/datasources.md +1 -1
- package/wiki/references/base/dependency-injection.md +1 -1
- package/wiki/references/base/filter-system/quick-reference.md +0 -14
- package/wiki/references/base/middlewares.md +0 -8
- package/wiki/references/base/providers.md +0 -9
- package/wiki/references/base/services.md +0 -1
- package/wiki/references/components/authentication/api.md +444 -0
- package/wiki/references/components/authentication/errors.md +177 -0
- package/wiki/references/components/authentication/index.md +571 -0
- package/wiki/references/components/authentication/usage.md +781 -0
- package/wiki/references/components/health-check.md +292 -103
- package/wiki/references/components/index.md +14 -12
- package/wiki/references/components/mail/api.md +505 -0
- package/wiki/references/components/mail/errors.md +176 -0
- package/wiki/references/components/mail/index.md +535 -0
- package/wiki/references/components/mail/usage.md +404 -0
- package/wiki/references/components/request-tracker.md +229 -25
- package/wiki/references/components/socket-io/api.md +1051 -0
- package/wiki/references/components/socket-io/errors.md +119 -0
- package/wiki/references/components/socket-io/index.md +410 -0
- package/wiki/references/components/socket-io/usage.md +322 -0
- package/wiki/references/components/static-asset/api.md +261 -0
- package/wiki/references/components/static-asset/errors.md +89 -0
- package/wiki/references/components/static-asset/index.md +617 -0
- package/wiki/references/components/static-asset/usage.md +364 -0
- package/wiki/references/components/swagger.md +390 -110
- package/wiki/references/components/template/api-page.md +125 -0
- package/wiki/references/components/template/errors-page.md +100 -0
- package/wiki/references/components/template/index.md +104 -0
- package/wiki/references/components/template/setup-page.md +134 -0
- package/wiki/references/components/template/single-page.md +132 -0
- package/wiki/references/components/template/usage-page.md +127 -0
- package/wiki/references/components/websocket/api.md +508 -0
- package/wiki/references/components/websocket/errors.md +123 -0
- package/wiki/references/components/websocket/index.md +453 -0
- package/wiki/references/components/websocket/usage.md +475 -0
- package/wiki/references/helpers/cron/index.md +224 -0
- package/wiki/references/helpers/crypto/index.md +537 -0
- package/wiki/references/helpers/env/index.md +214 -0
- package/wiki/references/helpers/error/index.md +232 -0
- package/wiki/references/helpers/index.md +16 -15
- package/wiki/references/helpers/inversion/index.md +608 -0
- package/wiki/references/helpers/logger/index.md +600 -0
- package/wiki/references/helpers/network/api.md +986 -0
- package/wiki/references/helpers/network/index.md +620 -0
- package/wiki/references/helpers/queue/index.md +589 -0
- package/wiki/references/helpers/redis/index.md +495 -0
- package/wiki/references/helpers/socket-io/api.md +497 -0
- package/wiki/references/helpers/socket-io/index.md +513 -0
- package/wiki/references/helpers/storage/api.md +705 -0
- package/wiki/references/helpers/storage/index.md +583 -0
- package/wiki/references/helpers/template/index.md +66 -0
- package/wiki/references/helpers/template/single-page.md +126 -0
- package/wiki/references/helpers/testing/index.md +510 -0
- package/wiki/references/helpers/types/index.md +512 -0
- package/wiki/references/helpers/uid/index.md +272 -0
- package/wiki/references/helpers/websocket/api.md +736 -0
- package/wiki/references/helpers/websocket/index.md +574 -0
- package/wiki/references/helpers/worker-thread/index.md +470 -0
- package/wiki/references/quick-reference.md +3 -18
- package/wiki/references/utilities/jsx.md +1 -8
- package/wiki/references/utilities/statuses.md +0 -7
- package/wiki/references/components/authentication.md +0 -476
- package/wiki/references/components/mail.md +0 -687
- package/wiki/references/components/socket-io.md +0 -562
- package/wiki/references/components/static-asset.md +0 -1277
- package/wiki/references/helpers/cron.md +0 -108
- package/wiki/references/helpers/crypto.md +0 -132
- package/wiki/references/helpers/env.md +0 -83
- package/wiki/references/helpers/error.md +0 -97
- package/wiki/references/helpers/inversion.md +0 -176
- package/wiki/references/helpers/logger.md +0 -296
- package/wiki/references/helpers/network.md +0 -396
- package/wiki/references/helpers/queue.md +0 -150
- package/wiki/references/helpers/redis.md +0 -142
- package/wiki/references/helpers/socket-io.md +0 -932
- package/wiki/references/helpers/storage.md +0 -665
- package/wiki/references/helpers/testing.md +0 -133
- package/wiki/references/helpers/types.md +0 -167
- package/wiki/references/helpers/uid.md +0 -167
- package/wiki/references/helpers/worker-thread.md +0 -178
package/package.json
CHANGED
|
@@ -141,7 +141,6 @@ export class HealthController extends BaseController {
|
|
|
141
141
|
| **Service** | Single app | Medium | Internal |
|
|
142
142
|
| **Inline** | Single controller | None | None |
|
|
143
143
|
|
|
144
|
-
---
|
|
145
144
|
|
|
146
145
|
## 3. Repository Method Design
|
|
147
146
|
|
|
@@ -203,7 +202,6 @@ export class OrderRepository extends BaseRepository<Order> {
|
|
|
203
202
|
}
|
|
204
203
|
```
|
|
205
204
|
|
|
206
|
-
---
|
|
207
205
|
|
|
208
206
|
## 4. Error Handling Strategy
|
|
209
207
|
|
|
@@ -277,7 +275,6 @@ Controller (catches, formats for API response)
|
|
|
277
275
|
Client (receives formatted error)
|
|
278
276
|
```
|
|
279
277
|
|
|
280
|
-
---
|
|
281
278
|
|
|
282
279
|
## 5. Scaling Decisions
|
|
283
280
|
|
|
@@ -334,7 +331,6 @@ class NotificationService {
|
|
|
334
331
|
| Data | Shared database OK | Need data isolation |
|
|
335
332
|
| Complexity | Keep simple | Worth the overhead |
|
|
336
333
|
|
|
337
|
-
---
|
|
338
334
|
|
|
339
335
|
## 6. Data Access Patterns
|
|
340
336
|
|
|
@@ -384,7 +380,6 @@ const nearby = await db.execute(sql`
|
|
|
384
380
|
`);
|
|
385
381
|
```
|
|
386
382
|
|
|
387
|
-
---
|
|
388
383
|
|
|
389
384
|
## 7. Configuration Strategy
|
|
390
385
|
|
|
@@ -429,7 +424,6 @@ this.component(SwaggerComponent, {
|
|
|
429
424
|
});
|
|
430
425
|
```
|
|
431
426
|
|
|
432
|
-
---
|
|
433
427
|
|
|
434
428
|
## 8. Testing Strategy
|
|
435
429
|
|
|
@@ -454,7 +448,6 @@ this.component(SwaggerComponent, {
|
|
|
454
448
|
--------------
|
|
455
449
|
```
|
|
456
450
|
|
|
457
|
-
---
|
|
458
451
|
|
|
459
452
|
## Quick Reference
|
|
460
453
|
|
|
@@ -479,7 +472,6 @@ this.component(SwaggerComponent, {
|
|
|
479
472
|
| Premature optimization | Start simple, optimize when needed |
|
|
480
473
|
| Over-engineering | YAGNI - build what you need now |
|
|
481
474
|
|
|
482
|
-
---
|
|
483
475
|
|
|
484
476
|
## See Also
|
|
485
477
|
|
|
@@ -241,5 +241,5 @@ import { QueryBuilder } from '../query';
|
|
|
241
241
|
## See Also
|
|
242
242
|
|
|
243
243
|
- [Error Handling](../error-handling) - Comprehensive error patterns
|
|
244
|
-
- [Logging Reference](../../references/helpers/logger) - Logger API
|
|
244
|
+
- [Logging Reference](../../references/helpers/logger/) - Logger API
|
|
245
245
|
- [Function Patterns](./function-patterns) - Method organization
|
|
@@ -32,7 +32,7 @@ Prevent blocking the event loop with Worker Threads:
|
|
|
32
32
|
- Large file/data processing
|
|
33
33
|
- Any synchronous task > 5ms
|
|
34
34
|
|
|
35
|
-
> **Deep Dive:** See [Worker Thread Helper](../references/helpers/worker-thread
|
|
35
|
+
> **Deep Dive:** See [Worker Thread Helper](../references/helpers/worker-thread/) for implementation guide.
|
|
36
36
|
|
|
37
37
|
## 3. Optimize Database Queries
|
|
38
38
|
|
|
@@ -127,7 +127,7 @@ Reduce database load with caching:
|
|
|
127
127
|
|
|
128
128
|
| Cache Type | Use Case | Implementation |
|
|
129
129
|
|-----------|----------|----------------|
|
|
130
|
-
| **Redis** | Distributed cache, session storage | [Redis Helper](../references/helpers/redis
|
|
130
|
+
| **Redis** | Distributed cache, session storage | [Redis Helper](../references/helpers/redis/) |
|
|
131
131
|
| **In-Memory** | Single-process cache | `MemoryStorageHelper` |
|
|
132
132
|
|
|
133
133
|
**Example:**
|
|
@@ -390,7 +390,7 @@ logger.log('info', MSG_ORDER_FILLED);
|
|
|
390
390
|
- Use background flushing to avoid I/O blocking
|
|
391
391
|
- HfLogger uses a lock-free ring buffer (64K entries, 16MB)
|
|
392
392
|
|
|
393
|
-
> **Deep Dive:** See [Logger Helper](../references/helpers/logger
|
|
393
|
+
> **Deep Dive:** See [Logger Helper](../references/helpers/logger/) for complete HfLogger API.
|
|
394
394
|
|
|
395
395
|
## Performance Checklist
|
|
396
396
|
|
|
@@ -68,7 +68,7 @@ const SecureRoute = {
|
|
|
68
68
|
};
|
|
69
69
|
```
|
|
70
70
|
|
|
71
|
-
> **Deep Dive:** See [Authentication Component](../references/components/authentication
|
|
71
|
+
> **Deep Dive:** See [Authentication Component](../references/components/authentication/) for full setup guide.
|
|
72
72
|
|
|
73
73
|
**Access user in protected routes:**
|
|
74
74
|
```typescript
|
|
@@ -462,6 +462,6 @@ Before deploying to production, verify:
|
|
|
462
462
|
|
|
463
463
|
## See Also
|
|
464
464
|
|
|
465
|
-
- [Authentication Component](../references/components/authentication) - JWT setup and configuration
|
|
465
|
+
- [Authentication Component](../references/components/authentication/) - JWT setup and configuration
|
|
466
466
|
- [Common Pitfalls](./common-pitfalls) - Security-related mistakes to avoid
|
|
467
467
|
- [Deployment Strategies](./deployment-strategies) - Secure deployment practices
|
|
@@ -118,7 +118,7 @@ cat .env | grep APP_ENV
|
|
|
118
118
|
- Use `try-catch` blocks to catch and log errors
|
|
119
119
|
- Check database queries with Drizzle's logging: `{ logger: true }`
|
|
120
120
|
|
|
121
|
-
> **Deep Dive:** See [Logger Helper](../references/helpers/logger
|
|
121
|
+
> **Deep Dive:** See [Logger Helper](../references/helpers/logger/) for advanced logging configuration.
|
|
122
122
|
|
|
123
123
|
## 6. Request ID Tracking
|
|
124
124
|
|
|
@@ -501,7 +501,7 @@ export class MyComponent extends BaseComponent {
|
|
|
501
501
|
|
|
502
502
|
- **References:**
|
|
503
503
|
- [BaseComponent API](/references/base/components) - Complete API reference
|
|
504
|
-
- [Authentication Component](/references/components/authentication) - Real-world component example
|
|
504
|
+
- [Authentication Component](/references/components/authentication/) - Real-world component example
|
|
505
505
|
- [Health Check Component](/references/components/health-check) - Simple component example
|
|
506
506
|
|
|
507
507
|
- **Best Practices:**
|
|
@@ -113,10 +113,10 @@ export class Application extends BaseApplication {
|
|
|
113
113
|
|
|
114
114
|
- **References:**
|
|
115
115
|
- [BaseComponent API](/references/base/components) - Complete API reference
|
|
116
|
-
- [Authentication Component](/references/components/authentication) - JWT authentication
|
|
116
|
+
- [Authentication Component](/references/components/authentication/) - JWT authentication
|
|
117
117
|
- [Health Check Component](/references/components/health-check) - Health endpoints
|
|
118
118
|
- [Swagger Component](/references/components/swagger) - API documentation
|
|
119
|
-
- [Socket.IO Component](/references/components/socket-io) - WebSocket support
|
|
119
|
+
- [Socket.IO Component](/references/components/socket-io/) - WebSocket support
|
|
120
120
|
|
|
121
121
|
- **Best Practices:**
|
|
122
122
|
- [Architectural Patterns](/best-practices/architectural-patterns) - Component design patterns
|
|
@@ -258,7 +258,7 @@ The `Application` class extends `Container`, so all container methods (`bind`, `
|
|
|
258
258
|
|
|
259
259
|
- **References:**
|
|
260
260
|
- [Dependency Injection API](/references/base/dependency-injection) - Complete API reference
|
|
261
|
-
- [Inversion Helper](/references/helpers/inversion) - DI container utilities
|
|
261
|
+
- [Inversion Helper](/references/helpers/inversion/) - DI container utilities
|
|
262
262
|
- [Glossary](/guides/reference/glossary#dependency-injection-di) - DI concepts explained
|
|
263
263
|
|
|
264
264
|
- **Tutorials:**
|
|
@@ -94,7 +94,7 @@ This layered architecture makes your application:
|
|
|
94
94
|
- **References:**
|
|
95
95
|
- [BaseService API](/references/base/services) - Complete API reference
|
|
96
96
|
- [Providers](/references/base/providers) - Factory pattern for runtime instantiation
|
|
97
|
-
- [Logger Helper](/references/helpers/logger) - Logging in services
|
|
97
|
+
- [Logger Helper](/references/helpers/logger/) - Logging in services
|
|
98
98
|
|
|
99
99
|
- **Best Practices:**
|
|
100
100
|
- [Architectural Patterns](/best-practices/architectural-patterns) - Service layer design
|
|
@@ -694,7 +694,7 @@ You now have a fully functional CRUD API! Here's what to explore next:
|
|
|
694
694
|
3. [Components](../core-concepts/components.md) - Build reusable modules
|
|
695
695
|
|
|
696
696
|
**Add Features:**
|
|
697
|
-
1. [Authentication](/references/components/authentication) - Add JWT authentication
|
|
697
|
+
1. [Authentication](/references/components/authentication/) - Add JWT authentication
|
|
698
698
|
2. [Custom Routes](/best-practices/api-usage-examples.md) - Beyond CRUD operations
|
|
699
699
|
3. [Relationships](../core-concepts/persistent/) - Link todos to users
|
|
700
700
|
|
|
@@ -1393,7 +1393,7 @@ You've built a complete e-commerce API with:
|
|
|
1393
1393
|
|
|
1394
1394
|
## Next Steps
|
|
1395
1395
|
|
|
1396
|
-
- Add user authentication with [Auth Component](/references/components/authentication)
|
|
1397
|
-
- Add order notifications with [Mail Component](/references/components/mail)
|
|
1396
|
+
- Add user authentication with [Auth Component](/references/components/authentication/)
|
|
1397
|
+
- Add order notifications with [Mail Component](/references/components/mail/)
|
|
1398
1398
|
- Add real-time updates with [Socket.IO](./realtime-chat.md)
|
|
1399
1399
|
- Deploy with [Deployment Guide](/best-practices/deployment-strategies)
|
|
@@ -13,8 +13,8 @@ This tutorial shows you how to build a real-time chat application with rooms, di
|
|
|
13
13
|
## Prerequisites
|
|
14
14
|
|
|
15
15
|
- Completed [Building a CRUD API](./building-a-crud-api.md)
|
|
16
|
-
- Understanding of [Socket.IO Component](/references/components/socket-io)
|
|
17
|
-
- Understanding of [Socket.IO Helper](/references/helpers/socket-io)
|
|
16
|
+
- Understanding of [Socket.IO Component](/references/components/socket-io/)
|
|
17
|
+
- Understanding of [Socket.IO Helper](/references/helpers/socket-io/)
|
|
18
18
|
- Redis for pub/sub (required by `SocketIOServerHelper`)
|
|
19
19
|
|
|
20
20
|
## 1. Project Setup
|
|
@@ -929,7 +929,7 @@ export class ChatService extends BaseService {
|
|
|
929
929
|
```
|
|
930
930
|
|
|
931
931
|
> [!IMPORTANT]
|
|
932
|
-
> **Lazy getter pattern**: `SocketIOServerHelper` is bound via a post-start hook, so it's not available during DI construction. The `private get socketIOHelper()` getter resolves it lazily on first access. See [Socket.IO Component](/references/components/socket-io
|
|
932
|
+
> **Lazy getter pattern**: `SocketIOServerHelper` is bound via a post-start hook, so it's not available during DI construction. The `private get socketIOHelper()` getter resolves it lazily on first access. See [Socket.IO Component](/references/components/socket-io/#step-3-use-in-servicescontrollers) for details.
|
|
933
933
|
|
|
934
934
|
## 6. Application Setup
|
|
935
935
|
|
|
@@ -1512,7 +1512,7 @@ this.bind<RedisHelper>({
|
|
|
1512
1512
|
|
|
1513
1513
|
## Next Steps
|
|
1514
1514
|
|
|
1515
|
-
- Add file/image sharing with [Storage Helper](/references/helpers/storage)
|
|
1515
|
+
- Add file/image sharing with [Storage Helper](/references/helpers/storage/)
|
|
1516
1516
|
- Add push notifications
|
|
1517
1517
|
- Implement read receipts
|
|
1518
1518
|
- Add message reactions
|
|
@@ -1520,6 +1520,6 @@ this.bind<RedisHelper>({
|
|
|
1520
1520
|
|
|
1521
1521
|
## See Also
|
|
1522
1522
|
|
|
1523
|
-
- [Socket.IO Component](/references/components/socket-io) — Component reference
|
|
1524
|
-
- [Socket.IO Helper](/references/helpers/socket-io) — Server + Client helper API
|
|
1523
|
+
- [Socket.IO Component](/references/components/socket-io/) — Component reference
|
|
1524
|
+
- [Socket.IO Helper](/references/helpers/socket-io/) — Server + Client helper API
|
|
1525
1525
|
- [Socket.IO Test Example](https://github.com/VENIZIA-AI/ignis/tree/main/examples/socket-io-test) — Working example with automated test client
|
|
@@ -703,7 +703,7 @@ class CreateAndUpdateAndDeleteHandler extends TestCaseHandler {
|
|
|
703
703
|
|
|
704
704
|
## Next Steps
|
|
705
705
|
|
|
706
|
-
- [Testing Reference](../../references/helpers/testing
|
|
706
|
+
- [Testing Reference](../../references/helpers/testing/) - Complete API documentation
|
|
707
707
|
- [Best Practices](../../best-practices/code-style-standards/) - Code quality standards
|
|
708
708
|
- [Troubleshooting](../../best-practices/troubleshooting-tips.md) - Common issues
|
|
709
709
|
|
|
@@ -589,10 +589,10 @@ export * from './controller';
|
|
|
589
589
|
- [Dependency Injection](/guides/core-concepts/dependency-injection) - Component bindings
|
|
590
590
|
|
|
591
591
|
- **Built-in Components:**
|
|
592
|
-
- [Authentication Component](/references/components/authentication) - JWT authentication
|
|
592
|
+
- [Authentication Component](/references/components/authentication/) - JWT authentication
|
|
593
593
|
- [Health Check Component](/references/components/health-check) - Health endpoints
|
|
594
594
|
- [Swagger Component](/references/components/swagger) - API documentation
|
|
595
|
-
- [Socket.IO Component](/references/components/socket-io) - WebSocket support
|
|
595
|
+
- [Socket.IO Component](/references/components/socket-io/) - WebSocket support
|
|
596
596
|
|
|
597
597
|
- **Best Practices:**
|
|
598
598
|
- [Architectural Patterns](/best-practices/architectural-patterns) - Component design patterns
|
|
@@ -341,7 +341,7 @@ try {
|
|
|
341
341
|
}
|
|
342
342
|
```
|
|
343
343
|
|
|
344
|
-
> **Note:** For most use cases, prefer using `repository.beginTransaction()` which provides a higher-level API. See [Repositories Reference](./repositories
|
|
344
|
+
> **Note:** For most use cases, prefer using `repository.beginTransaction()` which provides a higher-level API. See [Repositories Reference](./repositories/#transactions) for details.
|
|
345
345
|
|
|
346
346
|
This architecture ensures that datasources are configured consistently and that the fully-initialized Drizzle connector, aware of all schemas and relations, is available to repositories for querying.
|
|
347
347
|
|
|
@@ -201,7 +201,7 @@ class UserController {
|
|
|
201
201
|
- [Providers](/references/base/providers) - Factory pattern for dynamic injection
|
|
202
202
|
|
|
203
203
|
- **References:**
|
|
204
|
-
- [Inversion Helper](/references/helpers/inversion) - DI container utilities
|
|
204
|
+
- [Inversion Helper](/references/helpers/inversion/) - DI container utilities
|
|
205
205
|
- [Bootstrapping API](/references/base/bootstrapping) - Auto-discovery and DI
|
|
206
206
|
- [Glossary](/guides/reference/glossary#dependency-injection-di) - DI concepts explained
|
|
207
207
|
|
|
@@ -22,7 +22,6 @@ Complete single-page reference for all IGNIS filter operators. For detailed expl
|
|
|
22
22
|
|
|
23
23
|
**See:** [Comparison Operators Guide](./comparison-operators.md)
|
|
24
24
|
|
|
25
|
-
---
|
|
26
25
|
|
|
27
26
|
## Range Operators
|
|
28
27
|
|
|
@@ -33,7 +32,6 @@ Complete single-page reference for all IGNIS filter operators. For detailed expl
|
|
|
33
32
|
|
|
34
33
|
**See:** [Range Operators Guide](./range-operators.md)
|
|
35
34
|
|
|
36
|
-
---
|
|
37
35
|
|
|
38
36
|
## List Operators
|
|
39
37
|
|
|
@@ -44,7 +42,6 @@ Complete single-page reference for all IGNIS filter operators. For detailed expl
|
|
|
44
42
|
|
|
45
43
|
**See:** [List Operators Guide](./list-operators.md)
|
|
46
44
|
|
|
47
|
-
---
|
|
48
45
|
|
|
49
46
|
## Pattern Matching Operators
|
|
50
47
|
|
|
@@ -65,7 +62,6 @@ Complete single-page reference for all IGNIS filter operators. For detailed expl
|
|
|
65
62
|
|
|
66
63
|
**See:** [Pattern Matching Guide](./pattern-matching.md)
|
|
67
64
|
|
|
68
|
-
---
|
|
69
65
|
|
|
70
66
|
## Null Check Operators
|
|
71
67
|
|
|
@@ -83,7 +79,6 @@ Complete single-page reference for all IGNIS filter operators. For detailed expl
|
|
|
83
79
|
|
|
84
80
|
**See:** [Null Operators Guide](./null-operators.md)
|
|
85
81
|
|
|
86
|
-
---
|
|
87
82
|
|
|
88
83
|
## Logical Operators
|
|
89
84
|
|
|
@@ -106,7 +101,6 @@ Complete single-page reference for all IGNIS filter operators. For detailed expl
|
|
|
106
101
|
|
|
107
102
|
**See:** [Logical Operators Guide](./logical-operators.md)
|
|
108
103
|
|
|
109
|
-
---
|
|
110
104
|
|
|
111
105
|
## PostgreSQL Array Operators
|
|
112
106
|
|
|
@@ -122,7 +116,6 @@ These operators work with PostgreSQL array columns (`varchar[]`, `text[]`, `inte
|
|
|
122
116
|
|
|
123
117
|
**See:** [Array Operators Guide](./array-operators.md)
|
|
124
118
|
|
|
125
|
-
---
|
|
126
119
|
|
|
127
120
|
## JSON/JSONB Operators (PostgreSQL)
|
|
128
121
|
|
|
@@ -166,7 +159,6 @@ All comparison operators work with JSON path queries:
|
|
|
166
159
|
|
|
167
160
|
**See:** [JSON Filtering Guide](./json-filtering.md)
|
|
168
161
|
|
|
169
|
-
---
|
|
170
162
|
|
|
171
163
|
## Fields, Ordering & Pagination
|
|
172
164
|
|
|
@@ -211,7 +203,6 @@ const users = await userRepo.find({
|
|
|
211
203
|
|
|
212
204
|
**See:** [Fields, Ordering & Pagination Guide](./fields-order-pagination.md)
|
|
213
205
|
|
|
214
|
-
---
|
|
215
206
|
|
|
216
207
|
## Default Filters
|
|
217
208
|
|
|
@@ -250,7 +241,6 @@ await userRepo.find({
|
|
|
250
241
|
|
|
251
242
|
**See:** [Default Filter Guide](./default-filter.md)
|
|
252
243
|
|
|
253
|
-
---
|
|
254
244
|
|
|
255
245
|
## Common Filter Patterns
|
|
256
246
|
|
|
@@ -314,7 +304,6 @@ await userRepo.find({
|
|
|
314
304
|
}
|
|
315
305
|
```
|
|
316
306
|
|
|
317
|
-
---
|
|
318
307
|
|
|
319
308
|
## Operator Precedence
|
|
320
309
|
|
|
@@ -339,7 +328,6 @@ Use explicit parentheses (via nested `and`/`or`) for clarity:
|
|
|
339
328
|
}
|
|
340
329
|
```
|
|
341
330
|
|
|
342
|
-
---
|
|
343
331
|
|
|
344
332
|
## Type Safety
|
|
345
333
|
|
|
@@ -371,7 +359,6 @@ await userRepo.find({
|
|
|
371
359
|
});
|
|
372
360
|
```
|
|
373
361
|
|
|
374
|
-
---
|
|
375
362
|
|
|
376
363
|
## Performance Tips
|
|
377
364
|
|
|
@@ -407,7 +394,6 @@ await userRepo.find({
|
|
|
407
394
|
}
|
|
408
395
|
```
|
|
409
396
|
|
|
410
|
-
---
|
|
411
397
|
|
|
412
398
|
## See Also
|
|
413
399
|
|
|
@@ -187,7 +187,6 @@ async getUser(c: TRouteContext) {
|
|
|
187
187
|
}
|
|
188
188
|
```
|
|
189
189
|
|
|
190
|
-
---
|
|
191
190
|
|
|
192
191
|
### Not Found Handler (`notFoundHandler`)
|
|
193
192
|
|
|
@@ -233,7 +232,6 @@ app.notFound(notFoundHandler({
|
|
|
233
232
|
|
|
234
233
|
**Returns:** `NotFoundHandler` - Hono not found handler function
|
|
235
234
|
|
|
236
|
-
---
|
|
237
235
|
|
|
238
236
|
### Request Spy (`RequestSpyMiddleware`)
|
|
239
237
|
|
|
@@ -319,7 +317,6 @@ async example(c: TRouteContext) {
|
|
|
319
317
|
Request spy logs every request detail. Consider disabling or reducing verbosity in production environments with high traffic.
|
|
320
318
|
:::
|
|
321
319
|
|
|
322
|
-
---
|
|
323
320
|
|
|
324
321
|
### Emoji Favicon
|
|
325
322
|
|
|
@@ -372,7 +369,6 @@ app.use(emojiFavicon({ icon: '🌟' })); // Star
|
|
|
372
369
|
SVG favicons are supported in all modern browsers. Fallback to a traditional `.ico` file if you need to support legacy browsers.
|
|
373
370
|
:::
|
|
374
371
|
|
|
375
|
-
---
|
|
376
372
|
|
|
377
373
|
## Creating Custom Middleware
|
|
378
374
|
|
|
@@ -450,7 +446,6 @@ const myMiddleware = app.get(MyMiddleware);
|
|
|
450
446
|
app.use(myMiddleware.value());
|
|
451
447
|
```
|
|
452
448
|
|
|
453
|
-
---
|
|
454
449
|
|
|
455
450
|
## Middleware Order & Priority
|
|
456
451
|
|
|
@@ -505,7 +500,6 @@ app.notFound(notFoundHandler({ logger: app.logger }));
|
|
|
505
500
|
Placing error handler before routes will prevent it from catching route errors. Always register error handlers last.
|
|
506
501
|
:::
|
|
507
502
|
|
|
508
|
-
---
|
|
509
503
|
|
|
510
504
|
## Common Patterns
|
|
511
505
|
|
|
@@ -543,7 +537,6 @@ const apiMiddleware = (): MiddlewareHandler => {
|
|
|
543
537
|
};
|
|
544
538
|
```
|
|
545
539
|
|
|
546
|
-
---
|
|
547
540
|
|
|
548
541
|
## Performance Considerations
|
|
549
542
|
|
|
@@ -568,7 +561,6 @@ Error handlers log every error. For high error rates, consider:
|
|
|
568
561
|
- Error aggregation services (Sentry, Rollbar)
|
|
569
562
|
- Rate-limited logging
|
|
570
563
|
|
|
571
|
-
---
|
|
572
564
|
|
|
573
565
|
## See Also
|
|
574
566
|
|
|
@@ -49,7 +49,6 @@ A **Provider** is a class that implements the Factory pattern, responsible for c
|
|
|
49
49
|
- **Multi-Tenant**: Provide tenant-specific instances
|
|
50
50
|
- **Feature Flags**: Enable/disable features at runtime
|
|
51
51
|
|
|
52
|
-
---
|
|
53
52
|
|
|
54
53
|
## BaseProvider Class
|
|
55
54
|
|
|
@@ -99,7 +98,6 @@ The `value` method is where you implement your factory logic.
|
|
|
99
98
|
- Create and configure instances based on logic
|
|
100
99
|
- Return factories for deferred instantiation
|
|
101
100
|
|
|
102
|
-
---
|
|
103
101
|
|
|
104
102
|
## Provider vs Service
|
|
105
103
|
|
|
@@ -185,7 +183,6 @@ class OrderService extends BaseService {
|
|
|
185
183
|
- **Need to implement business logic?** → Use a Service
|
|
186
184
|
:::
|
|
187
185
|
|
|
188
|
-
---
|
|
189
186
|
|
|
190
187
|
## Creating Custom Providers
|
|
191
188
|
|
|
@@ -297,7 +294,6 @@ export class DatabaseProvider extends BaseProvider<Database> {
|
|
|
297
294
|
}
|
|
298
295
|
```
|
|
299
296
|
|
|
300
|
-
---
|
|
301
297
|
|
|
302
298
|
## Provider Lifecycle
|
|
303
299
|
|
|
@@ -354,7 +350,6 @@ export class FactoryDatabaseProvider extends BaseProvider<Database> {
|
|
|
354
350
|
}
|
|
355
351
|
```
|
|
356
352
|
|
|
357
|
-
---
|
|
358
353
|
|
|
359
354
|
## Real-World Examples
|
|
360
355
|
|
|
@@ -498,7 +493,6 @@ const requestSpy = new RequestSpyMiddleware();
|
|
|
498
493
|
app.use(requestSpy.value());
|
|
499
494
|
```
|
|
500
495
|
|
|
501
|
-
---
|
|
502
496
|
|
|
503
497
|
## Common Patterns
|
|
504
498
|
|
|
@@ -589,7 +583,6 @@ export class CacheProvider extends BaseProvider<ICache> {
|
|
|
589
583
|
}
|
|
590
584
|
```
|
|
591
585
|
|
|
592
|
-
---
|
|
593
586
|
|
|
594
587
|
## Common Pitfalls
|
|
595
588
|
|
|
@@ -664,7 +657,6 @@ value(container: Container): IMailTransport {
|
|
|
664
657
|
}
|
|
665
658
|
```
|
|
666
659
|
|
|
667
|
-
---
|
|
668
660
|
|
|
669
661
|
## Performance Considerations
|
|
670
662
|
|
|
@@ -710,7 +702,6 @@ export class ConfigProvider extends BaseProvider<Config> {
|
|
|
710
702
|
}
|
|
711
703
|
```
|
|
712
704
|
|
|
713
|
-
---
|
|
714
705
|
|
|
715
706
|
## See Also
|
|
716
707
|
|
|
@@ -102,7 +102,6 @@ export class UserService extends BaseService {
|
|
|
102
102
|
|
|
103
103
|
By adhering to this pattern, you keep your code organized, testable, and maintainable. You can easily test `UserService` by providing a mock `UserRepository` without needing a real database connection.
|
|
104
104
|
|
|
105
|
-
---
|
|
106
105
|
|
|
107
106
|
## See Also
|
|
108
107
|
|