@venizia/ignis-docs 0.0.7-2 → 0.0.8-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/dist/mcp-server/common/paths.d.ts +4 -2
- package/dist/mcp-server/common/paths.d.ts.map +1 -1
- package/dist/mcp-server/common/paths.js +8 -6
- package/dist/mcp-server/common/paths.js.map +1 -1
- package/dist/mcp-server/tools/docs/get-document-content.tool.d.ts +1 -1
- package/dist/mcp-server/tools/docs/get-document-content.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/docs/get-document-content.tool.js +7 -7
- package/dist/mcp-server/tools/docs/get-document-metadata.tool.js +3 -3
- package/dist/mcp-server/tools/docs/get-package-overview.tool.d.ts +1 -1
- package/dist/mcp-server/tools/docs/get-package-overview.tool.js +1 -1
- package/package.json +1 -1
- package/wiki/best-practices/api-usage-examples.md +9 -9
- package/wiki/best-practices/architectural-patterns.md +19 -3
- package/wiki/best-practices/architecture-decisions.md +6 -6
- package/wiki/best-practices/code-style-standards/advanced-patterns.md +1 -1
- package/wiki/best-practices/code-style-standards/control-flow.md +1 -1
- package/wiki/best-practices/code-style-standards/function-patterns.md +2 -2
- package/wiki/best-practices/code-style-standards/index.md +2 -2
- package/wiki/best-practices/code-style-standards/naming-conventions.md +1 -1
- package/wiki/best-practices/code-style-standards/route-definitions.md +4 -4
- package/wiki/best-practices/data-modeling.md +1 -1
- package/wiki/best-practices/deployment-strategies.md +1 -1
- package/wiki/best-practices/error-handling.md +2 -2
- 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/{references → extensions}/components/authentication/api.md +12 -20
- package/wiki/{references → extensions}/components/authentication/errors.md +1 -1
- package/wiki/{references → extensions}/components/authentication/index.md +5 -8
- package/wiki/{references → extensions}/components/authentication/usage.md +20 -36
- package/wiki/{references → extensions}/components/authorization/api.md +62 -13
- package/wiki/{references → extensions}/components/authorization/errors.md +12 -7
- package/wiki/{references → extensions}/components/authorization/index.md +93 -6
- package/wiki/{references → extensions}/components/authorization/usage.md +42 -4
- package/wiki/{references → extensions}/components/health-check.md +5 -4
- package/wiki/{references → extensions}/components/index.md +2 -0
- package/wiki/{references → extensions}/components/mail/index.md +1 -1
- package/wiki/{references → extensions}/components/request-tracker.md +1 -1
- package/wiki/{references → extensions}/components/socket-io/api.md +2 -2
- package/wiki/{references → extensions}/components/socket-io/errors.md +2 -0
- package/wiki/{references → extensions}/components/socket-io/index.md +24 -20
- package/wiki/{references → extensions}/components/socket-io/usage.md +2 -2
- package/wiki/{references → extensions}/components/static-asset/api.md +14 -15
- package/wiki/{references → extensions}/components/static-asset/errors.md +3 -1
- package/wiki/{references → extensions}/components/static-asset/index.md +158 -89
- package/wiki/{references → extensions}/components/static-asset/usage.md +8 -5
- package/wiki/{references → extensions}/components/swagger.md +3 -3
- package/wiki/{references → extensions}/components/template/index.md +4 -4
- package/wiki/{references → extensions}/components/template/setup-page.md +1 -1
- package/wiki/{references → extensions}/components/template/single-page.md +1 -1
- package/wiki/{references → extensions}/components/websocket/api.md +7 -6
- package/wiki/{references → extensions}/components/websocket/errors.md +17 -3
- package/wiki/{references → extensions}/components/websocket/index.md +17 -11
- package/wiki/{references → extensions}/components/websocket/usage.md +2 -2
- package/wiki/{references → extensions}/helpers/crypto/index.md +1 -1
- package/wiki/{references → extensions}/helpers/env/index.md +9 -5
- package/wiki/{references → extensions}/helpers/error/index.md +2 -7
- package/wiki/{references → extensions}/helpers/index.md +18 -6
- package/wiki/{references → extensions}/helpers/kafka/admin.md +33 -16
- package/wiki/extensions/helpers/kafka/consumer.md +384 -0
- package/wiki/extensions/helpers/kafka/examples.md +361 -0
- package/wiki/extensions/helpers/kafka/index.md +639 -0
- package/wiki/{references → extensions}/helpers/kafka/producer.md +100 -96
- package/wiki/extensions/helpers/kafka/schema-registry.md +214 -0
- package/wiki/{references → extensions}/helpers/logger/index.md +2 -2
- package/wiki/{references → extensions}/helpers/queue/index.md +400 -4
- package/wiki/{references → extensions}/helpers/storage/api.md +170 -10
- package/wiki/{references → extensions}/helpers/storage/index.md +44 -8
- package/wiki/{references → extensions}/helpers/template/index.md +1 -1
- package/wiki/{references → extensions}/helpers/testing/index.md +4 -4
- package/wiki/{references → extensions}/helpers/types/index.md +63 -16
- package/wiki/{references → extensions}/helpers/websocket/index.md +1 -1
- package/wiki/extensions/index.md +48 -0
- package/wiki/guides/core-concepts/application/bootstrapping.md +55 -37
- package/wiki/guides/core-concepts/application/index.md +95 -35
- package/wiki/guides/core-concepts/components-guide.md +23 -19
- package/wiki/guides/core-concepts/components.md +34 -10
- package/wiki/guides/core-concepts/dependency-injection.md +99 -34
- package/wiki/guides/core-concepts/grpc-controllers.md +295 -0
- package/wiki/guides/core-concepts/persistent/datasources.md +27 -8
- package/wiki/guides/core-concepts/persistent/models.md +43 -1
- package/wiki/guides/core-concepts/persistent/repositories.md +75 -8
- package/wiki/guides/core-concepts/persistent/transactions.md +38 -8
- package/wiki/guides/core-concepts/{controllers.md → rest-controllers.md} +30 -33
- package/wiki/guides/core-concepts/services.md +19 -5
- package/wiki/guides/get-started/5-minute-quickstart.md +6 -7
- package/wiki/guides/get-started/philosophy.md +1 -1
- package/wiki/guides/index.md +2 -2
- package/wiki/guides/reference/glossary.md +7 -7
- package/wiki/guides/reference/mcp-docs-server.md +1 -1
- package/wiki/guides/tutorials/building-a-crud-api.md +2 -2
- package/wiki/guides/tutorials/complete-installation.md +17 -14
- package/wiki/guides/tutorials/ecommerce-api.md +18 -18
- package/wiki/guides/tutorials/realtime-chat.md +8 -8
- package/wiki/guides/tutorials/testing.md +2 -2
- package/wiki/index.md +4 -3
- package/wiki/references/base/application.md +341 -21
- package/wiki/references/base/bootstrapping.md +43 -13
- package/wiki/references/base/components.md +259 -8
- package/wiki/references/base/controllers.md +556 -253
- package/wiki/references/base/datasources.md +159 -79
- package/wiki/references/base/dependency-injection.md +299 -48
- package/wiki/references/base/filter-system/application-usage.md +18 -2
- package/wiki/references/base/filter-system/array-operators.md +14 -6
- package/wiki/references/base/filter-system/comparison-operators.md +9 -3
- package/wiki/references/base/filter-system/default-filter.md +28 -3
- package/wiki/references/base/filter-system/fields-order-pagination.md +17 -13
- package/wiki/references/base/filter-system/index.md +169 -11
- package/wiki/references/base/filter-system/json-filtering.md +51 -18
- package/wiki/references/base/filter-system/list-operators.md +4 -3
- package/wiki/references/base/filter-system/logical-operators.md +7 -2
- package/wiki/references/base/filter-system/null-operators.md +50 -0
- package/wiki/references/base/filter-system/quick-reference.md +82 -243
- package/wiki/references/base/filter-system/range-operators.md +7 -1
- package/wiki/references/base/filter-system/tips.md +34 -7
- package/wiki/references/base/filter-system/use-cases.md +6 -5
- package/wiki/references/base/grpc-controllers.md +984 -0
- package/wiki/references/base/index.md +32 -24
- package/wiki/references/base/middleware.md +347 -0
- package/wiki/references/base/models.md +390 -46
- package/wiki/references/base/providers.md +14 -14
- package/wiki/references/base/repositories/advanced.md +84 -69
- package/wiki/references/base/repositories/index.md +447 -12
- package/wiki/references/base/repositories/mixins.md +103 -98
- package/wiki/references/base/repositories/relations.md +129 -45
- package/wiki/references/base/repositories/soft-deletable.md +104 -23
- package/wiki/references/base/services.md +94 -14
- package/wiki/references/index.md +12 -10
- package/wiki/references/quick-reference.md +98 -65
- package/wiki/references/utilities/crypto.md +21 -4
- package/wiki/references/utilities/date.md +25 -7
- package/wiki/references/utilities/index.md +26 -24
- package/wiki/references/utilities/jsx.md +54 -54
- package/wiki/references/utilities/module.md +8 -6
- package/wiki/references/utilities/parse.md +16 -9
- package/wiki/references/utilities/performance.md +22 -7
- package/wiki/references/utilities/promise.md +19 -16
- package/wiki/references/utilities/request.md +48 -26
- package/wiki/references/utilities/schema.md +69 -6
- package/wiki/references/utilities/statuses.md +131 -140
- package/wiki/references/helpers/kafka/consumer.md +0 -473
- package/wiki/references/helpers/kafka/examples.md +0 -234
- package/wiki/references/helpers/kafka/index.md +0 -482
- /package/wiki/{references → extensions}/components/mail/api.md +0 -0
- /package/wiki/{references → extensions}/components/mail/errors.md +0 -0
- /package/wiki/{references → extensions}/components/mail/usage.md +0 -0
- /package/wiki/{references → extensions}/components/template/api-page.md +0 -0
- /package/wiki/{references → extensions}/components/template/errors-page.md +0 -0
- /package/wiki/{references → extensions}/components/template/usage-page.md +0 -0
- /package/wiki/{references → extensions}/helpers/cron/index.md +0 -0
- /package/wiki/{references → extensions}/helpers/inversion/index.md +0 -0
- /package/wiki/{references → extensions}/helpers/network/api.md +0 -0
- /package/wiki/{references → extensions}/helpers/network/index.md +0 -0
- /package/wiki/{references → extensions}/helpers/redis/index.md +0 -0
- /package/wiki/{references → extensions}/helpers/socket-io/api.md +0 -0
- /package/wiki/{references → extensions}/helpers/socket-io/index.md +0 -0
- /package/wiki/{references → extensions}/helpers/template/single-page.md +0 -0
- /package/wiki/{references → extensions}/helpers/uid/index.md +0 -0
- /package/wiki/{references → extensions}/helpers/websocket/api.md +0 -0
- /package/wiki/{references → extensions}/helpers/worker-thread/index.md +0 -0
- /package/wiki/{references → extensions}/src-details/mcp-server.md +0 -0
|
@@ -239,14 +239,17 @@ export class Application extends BaseApplication {
|
|
|
239
239
|
|
|
240
240
|
**Key takeaway:** You'll mostly work in `preConfigure()` when building your app. The other hooks are there when you need them.
|
|
241
241
|
|
|
242
|
-
**Application Lifecycle Hooks:**
|
|
242
|
+
**Application Lifecycle Hooks (execution order):**
|
|
243
243
|
| Hook | Purpose | Usage |
|
|
244
244
|
|------|---------|-------|
|
|
245
245
|
| `getAppInfo()` | Application metadata | Required - used for API docs |
|
|
246
|
-
| `staticConfigure()` | Static file serving | Optional |
|
|
247
|
-
| `
|
|
248
|
-
| `
|
|
246
|
+
| `staticConfigure()` | Static file serving | Optional - runs before DI registration |
|
|
247
|
+
| `preConfigure()` | **Register resources** | **Main hook** - register controllers, services, components, etc. |
|
|
248
|
+
| `registerDataSources()` | Configure datasources | Auto - discovers and configures bound datasources |
|
|
249
|
+
| `registerComponents()` | Configure components | Auto - discovers and configures bound components |
|
|
250
|
+
| `registerControllers()` | Configure controllers | Auto - mounts REST/gRPC routes |
|
|
249
251
|
| `postConfigure()` | Post-initialization | Optional - seed data, background jobs |
|
|
252
|
+
| `setupMiddlewares()` | Global middlewares | Optional - runs after `initialize()`, before server starts |
|
|
250
253
|
|
|
251
254
|
> **Deep Dive:** See [Application Class Reference](../core-concepts/application/) for detailed lifecycle documentation.
|
|
252
255
|
|
|
@@ -256,7 +259,7 @@ Create `src/controllers/hello.controller.ts` - controllers handle HTTP requests
|
|
|
256
259
|
|
|
257
260
|
```typescript
|
|
258
261
|
import {
|
|
259
|
-
|
|
262
|
+
BaseRestController,
|
|
260
263
|
controller,
|
|
261
264
|
api,
|
|
262
265
|
jsonContent,
|
|
@@ -270,7 +273,7 @@ const BASE_PATH = '/hello';
|
|
|
270
273
|
// The @controller decorator registers this class as a controller
|
|
271
274
|
// All routes in this controller will be under /api/hello (remember path.base: '/api')
|
|
272
275
|
@controller({ path: BASE_PATH })
|
|
273
|
-
export class HelloController extends
|
|
276
|
+
export class HelloController extends BaseRestController {
|
|
274
277
|
constructor() {
|
|
275
278
|
super({ scope: HelloController.name, path: BASE_PATH });
|
|
276
279
|
}
|
|
@@ -278,12 +281,12 @@ export class HelloController extends BaseController {
|
|
|
278
281
|
// Required: Override binding() to register routes or dependencies
|
|
279
282
|
override binding() {
|
|
280
283
|
// Option 1: Use bindRoute() or defineRoute() for programmatic route registration
|
|
281
|
-
// this.bindRoute({ method: 'get', path: '/programmatic', handler: this.myHandler });
|
|
284
|
+
// this.bindRoute({ configs: { method: 'get', path: '/programmatic', responses: {...} } }).to({ handler: this.myHandler });
|
|
282
285
|
|
|
283
286
|
// Option 2: Use @api decorator on methods (shown below) - recommended
|
|
284
287
|
}
|
|
285
288
|
|
|
286
|
-
// The @api decorator defines a route
|
|
289
|
+
// The @api decorator defines a route with explicit method. You can also use @get/@post shorthand decorators.
|
|
287
290
|
@api({
|
|
288
291
|
configs: {
|
|
289
292
|
method: HTTP.Methods.GET,
|
|
@@ -303,8 +306,8 @@ export class HelloController extends BaseController {
|
|
|
303
306
|
return c.json({ message: 'Hello, World!' }, HTTP.ResultCodes.RS_2.Ok);
|
|
304
307
|
}
|
|
305
308
|
|
|
306
|
-
// For authenticated endpoints, add '
|
|
307
|
-
// @api({ configs: { method: HTTP.Methods.GET, path: '/secure',
|
|
309
|
+
// For authenticated endpoints, add 'authenticate':
|
|
310
|
+
// @api({ configs: { method: HTTP.Methods.GET, path: '/secure', authenticate: { strategies: [Authentication.STRATEGY_JWT] } } })
|
|
308
311
|
}
|
|
309
312
|
```
|
|
310
313
|
|
|
@@ -312,13 +315,13 @@ export class HelloController extends BaseController {
|
|
|
312
315
|
|
|
313
316
|
| Pattern | Description |
|
|
314
317
|
|---------|-------------|
|
|
315
|
-
| `@controller` | Registers the class as a controller with a base path |
|
|
316
|
-
| `@api` | Defines a route with `method` specified
|
|
317
|
-
| `@get`, `@post`, etc. | Shorthand decorators (
|
|
318
|
+
| `@controller` | Registers the class as a controller with a base path. Supports optional `transport` field (`'rest'` default, `'grpc'`) |
|
|
319
|
+
| `@api` | Defines a route with `method` specified in configs |
|
|
320
|
+
| `@get`, `@post`, etc. | Shorthand decorators that auto-set the HTTP method (recommended) |
|
|
318
321
|
| `binding()` | Required override — use `bindRoute()` or `defineRoute()` for programmatic routes |
|
|
319
322
|
| Zod schemas | Provide automatic validation and OpenAPI docs |
|
|
320
323
|
|
|
321
|
-
> **Deep Dive:** See [Controllers Reference](../core-concepts/controllers.md) for advanced routing patterns and validation.
|
|
324
|
+
> **Deep Dive:** See [Controllers Reference](../core-concepts/rest-controllers.md) for advanced routing patterns and validation.
|
|
322
325
|
|
|
323
326
|
### Create Entry Point
|
|
324
327
|
|
|
@@ -490,7 +490,7 @@ import { getError } from '@venizia/ignis-helpers';
|
|
|
490
490
|
@injectable()
|
|
491
491
|
export class ProductService extends BaseService {
|
|
492
492
|
constructor(
|
|
493
|
-
@inject('repositories.ProductRepository')
|
|
493
|
+
@inject({ key: 'repositories.ProductRepository' })
|
|
494
494
|
private _productRepo: ProductRepository,
|
|
495
495
|
) {
|
|
496
496
|
super({ scope: ProductService.name });
|
|
@@ -563,9 +563,9 @@ interface ICartItem {
|
|
|
563
563
|
@injectable()
|
|
564
564
|
export class CartService extends BaseService {
|
|
565
565
|
constructor(
|
|
566
|
-
@inject('repositories.CartRepository')
|
|
566
|
+
@inject({ key: 'repositories.CartRepository' })
|
|
567
567
|
private _cartRepo: CartRepository,
|
|
568
|
-
@inject('services.ProductService')
|
|
568
|
+
@inject({ key: 'services.ProductService' })
|
|
569
569
|
private _productService: ProductService,
|
|
570
570
|
) {
|
|
571
571
|
super({ scope: CartService.name });
|
|
@@ -715,13 +715,13 @@ interface ICreateOrderInput {
|
|
|
715
715
|
@injectable()
|
|
716
716
|
export class OrderService extends BaseService {
|
|
717
717
|
constructor(
|
|
718
|
-
@inject('repositories.OrderRepository')
|
|
718
|
+
@inject({ key: 'repositories.OrderRepository' })
|
|
719
719
|
private _orderRepo: OrderRepository,
|
|
720
|
-
@inject('services.CartService')
|
|
720
|
+
@inject({ key: 'services.CartService' })
|
|
721
721
|
private _cartService: CartService,
|
|
722
|
-
@inject('services.ProductService')
|
|
722
|
+
@inject({ key: 'services.ProductService' })
|
|
723
723
|
private _productService: ProductService,
|
|
724
|
-
@inject('services.PaymentService')
|
|
724
|
+
@inject({ key: 'services.PaymentService' })
|
|
725
725
|
private _paymentService: PaymentService,
|
|
726
726
|
) {
|
|
727
727
|
super({ scope: OrderService.name });
|
|
@@ -918,7 +918,7 @@ export class PaymentService extends BaseService {
|
|
|
918
918
|
// src/controllers/product.controller.ts
|
|
919
919
|
import { z } from '@hono/zod-openapi';
|
|
920
920
|
import {
|
|
921
|
-
|
|
921
|
+
BaseRestController,
|
|
922
922
|
controller,
|
|
923
923
|
get,
|
|
924
924
|
inject,
|
|
@@ -968,9 +968,9 @@ const ProductRoutes = {
|
|
|
968
968
|
type ProductRoutes = typeof ProductRoutes;
|
|
969
969
|
|
|
970
970
|
@controller({ path: '/products' })
|
|
971
|
-
export class ProductController extends
|
|
971
|
+
export class ProductController extends BaseRestController {
|
|
972
972
|
constructor(
|
|
973
|
-
@inject('services.ProductService')
|
|
973
|
+
@inject({ key: 'services.ProductService' })
|
|
974
974
|
private _productService: ProductService,
|
|
975
975
|
) {
|
|
976
976
|
super({ scope: ProductController.name, path: '/products' });
|
|
@@ -1006,7 +1006,7 @@ export class ProductController extends BaseController {
|
|
|
1006
1006
|
// src/controllers/cart.controller.ts
|
|
1007
1007
|
import { z } from '@hono/zod-openapi';
|
|
1008
1008
|
import {
|
|
1009
|
-
|
|
1009
|
+
BaseRestController,
|
|
1010
1010
|
controller,
|
|
1011
1011
|
get,
|
|
1012
1012
|
post,
|
|
@@ -1083,9 +1083,9 @@ const CartRoutes = {
|
|
|
1083
1083
|
type CartRoutes = typeof CartRoutes;
|
|
1084
1084
|
|
|
1085
1085
|
@controller({ path: '/cart' })
|
|
1086
|
-
export class CartController extends
|
|
1086
|
+
export class CartController extends BaseRestController {
|
|
1087
1087
|
constructor(
|
|
1088
|
-
@inject('services.CartService')
|
|
1088
|
+
@inject({ key: 'services.CartService' })
|
|
1089
1089
|
private _cartService: CartService,
|
|
1090
1090
|
) {
|
|
1091
1091
|
super({ scope: CartController.name, path: '/cart' });
|
|
@@ -1145,7 +1145,7 @@ export class CartController extends BaseController {
|
|
|
1145
1145
|
// src/controllers/order.controller.ts
|
|
1146
1146
|
import { z } from '@hono/zod-openapi';
|
|
1147
1147
|
import {
|
|
1148
|
-
|
|
1148
|
+
BaseRestController,
|
|
1149
1149
|
controller,
|
|
1150
1150
|
get,
|
|
1151
1151
|
post,
|
|
@@ -1223,9 +1223,9 @@ const OrderRoutes = {
|
|
|
1223
1223
|
type OrderRoutes = typeof OrderRoutes;
|
|
1224
1224
|
|
|
1225
1225
|
@controller({ path: '/orders' })
|
|
1226
|
-
export class OrderController extends
|
|
1226
|
+
export class OrderController extends BaseRestController {
|
|
1227
1227
|
constructor(
|
|
1228
|
-
@inject('services.OrderService')
|
|
1228
|
+
@inject({ key: 'services.OrderService' })
|
|
1229
1229
|
private _orderService: OrderService,
|
|
1230
1230
|
) {
|
|
1231
1231
|
super({ scope: OrderController.name, path: '/orders' });
|
|
@@ -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](/
|
|
1397
|
-
- Add order notifications with [Mail Component](/
|
|
1396
|
+
- Add user authentication with [Auth Component](/extensions/components/authentication/)
|
|
1397
|
+
- Add order notifications with [Mail Component](/extensions/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](/
|
|
17
|
-
- Understanding of [Socket.IO Helper](/
|
|
16
|
+
- Understanding of [Socket.IO Component](/extensions/components/socket-io/)
|
|
17
|
+
- Understanding of [Socket.IO Helper](/extensions/helpers/socket-io/)
|
|
18
18
|
- Redis for pub/sub (required by `SocketIOServerHelper`)
|
|
19
19
|
|
|
20
20
|
## 1. Project Setup
|
|
@@ -928,7 +928,7 @@ export class ChatService extends BaseService {
|
|
|
928
928
|
```
|
|
929
929
|
|
|
930
930
|
> [!IMPORTANT]
|
|
931
|
-
> **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](/
|
|
931
|
+
> **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](/extensions/components/socket-io/#step-3-use-in-servicescontrollers) for details.
|
|
932
932
|
|
|
933
933
|
## 6. Application Setup
|
|
934
934
|
|
|
@@ -1127,7 +1127,7 @@ Client connects → 'authenticate' event → authenticateFn() → 'authenticated
|
|
|
1127
1127
|
// src/controllers/chat.controller.ts
|
|
1128
1128
|
import { z } from '@hono/zod-openapi';
|
|
1129
1129
|
import {
|
|
1130
|
-
|
|
1130
|
+
BaseRestController,
|
|
1131
1131
|
controller,
|
|
1132
1132
|
inject,
|
|
1133
1133
|
jsonResponse,
|
|
@@ -1182,7 +1182,7 @@ const ChatRoutes = {
|
|
|
1182
1182
|
} as const;
|
|
1183
1183
|
|
|
1184
1184
|
@controller({ path: '/chat' })
|
|
1185
|
-
export class ChatController extends
|
|
1185
|
+
export class ChatController extends BaseRestController {
|
|
1186
1186
|
constructor(
|
|
1187
1187
|
@inject({
|
|
1188
1188
|
key: BindingKeys.build({
|
|
@@ -1513,7 +1513,7 @@ this.bind<RedisHelper>({
|
|
|
1513
1513
|
|
|
1514
1514
|
## Next Steps
|
|
1515
1515
|
|
|
1516
|
-
- Add file/image sharing with [Storage Helper](/
|
|
1516
|
+
- Add file/image sharing with [Storage Helper](/extensions/helpers/storage/)
|
|
1517
1517
|
- Add push notifications
|
|
1518
1518
|
- Implement read receipts
|
|
1519
1519
|
- Add message reactions
|
|
@@ -1521,6 +1521,6 @@ this.bind<RedisHelper>({
|
|
|
1521
1521
|
|
|
1522
1522
|
## See Also
|
|
1523
1523
|
|
|
1524
|
-
- [Socket.IO Component](/
|
|
1525
|
-
- [Socket.IO Helper](/
|
|
1524
|
+
- [Socket.IO Component](/extensions/components/socket-io/) — Component reference
|
|
1525
|
+
- [Socket.IO Helper](/extensions/helpers/socket-io/) — Server + Client helper API
|
|
1526
1526
|
- [Socket.IO Test Example](https://github.com/VENIZIA-AI/ignis/tree/main/examples/socket-io-test) — Working example with automated test client
|
|
@@ -27,7 +27,7 @@ Since Ignis is just a TypeScript/JavaScript application framework, you can test
|
|
|
27
27
|
|
|
28
28
|
Before starting, ensure you have:
|
|
29
29
|
- A working Ignis application (see [Building a CRUD API](./building-a-crud-api.md))
|
|
30
|
-
- Basic understanding of [Controllers](../core-concepts/controllers.md) and [Repositories](../core-concepts/persistent/)
|
|
30
|
+
- Basic understanding of [Controllers](../core-concepts/rest-controllers.md) and [Repositories](../core-concepts/persistent/)
|
|
31
31
|
|
|
32
32
|
## Quick Examples with Popular Frameworks
|
|
33
33
|
|
|
@@ -702,7 +702,7 @@ class CreateAndUpdateAndDeleteHandler extends TestCaseHandler {
|
|
|
702
702
|
|
|
703
703
|
## Next Steps
|
|
704
704
|
|
|
705
|
-
- [Testing Reference](../../
|
|
705
|
+
- [Testing Reference](../../extensions/helpers/testing/) - Complete API documentation
|
|
706
706
|
- [Best Practices](../../best-practices/code-style-standards/) - Code quality standards
|
|
707
707
|
- [Troubleshooting](../../best-practices/troubleshooting-tips.md) - Common issues
|
|
708
708
|
|
package/wiki/index.md
CHANGED
|
@@ -37,7 +37,7 @@ features:
|
|
|
37
37
|
|
|
38
38
|
- title: Auto-Generated Docs
|
|
39
39
|
details: OpenAPI/Swagger from Zod schemas. Interactive API explorer included with zero config.
|
|
40
|
-
link: /
|
|
40
|
+
link: /extensions/components/swagger
|
|
41
41
|
linkText: View example
|
|
42
42
|
|
|
43
43
|
- title: Type-Safe Database
|
|
@@ -64,13 +64,13 @@ bun add -d typescript @types/bun
|
|
|
64
64
|
```
|
|
65
65
|
|
|
66
66
|
```typescript
|
|
67
|
-
import { BaseApplication,
|
|
67
|
+
import { BaseApplication, BaseRestController, controller, get, jsonContent, SwaggerComponent } from '@venizia/ignis';
|
|
68
68
|
import { HTTP } from '@venizia/ignis-helpers';
|
|
69
69
|
import { z } from '@hono/zod-openapi';
|
|
70
70
|
|
|
71
71
|
// 1. Define your controller
|
|
72
72
|
@controller({ path: '/hello' })
|
|
73
|
-
class HelloController extends
|
|
73
|
+
class HelloController extends BaseRestController {
|
|
74
74
|
constructor() {
|
|
75
75
|
super({ scope: 'HelloController', path: '/hello' });
|
|
76
76
|
}
|
|
@@ -140,6 +140,7 @@ Ready for a step-by-step guide? Follow the [5-minute quickstart →](/guides/get
|
|
|
140
140
|
<li><strong>Enterprise apps</strong> — Teams need clear patterns</li>
|
|
141
141
|
<li><strong>Growing projects</strong> — 10+ endpoints that need structure</li>
|
|
142
142
|
<li><strong>REST APIs</strong> — Full CRUD with validation & docs</li>
|
|
143
|
+
<li><strong>gRPC APIs</strong> — ConnectRPC-based gRPC with decorator support</li>
|
|
143
144
|
<li><strong>Real-time apps</strong> — WebSocket support built-in</li>
|
|
144
145
|
</ul>
|
|
145
146
|
</div>
|