@venizia/ignis-docs 0.0.7 → 0.0.8-1
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/helpers/docs.helper.d.ts.map +1 -1
- package/dist/mcp-server/helpers/docs.helper.js +1 -1
- package/dist/mcp-server/helpers/docs.helper.js.map +1 -1
- package/dist/mcp-server/tools/base.tool.d.ts +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/dist/mcp-server/tools/docs/search-documents.tool.d.ts +1 -1
- package/dist/mcp-server/tools/docs/search-documents.tool.js +1 -1
- package/dist/mcp-server/tools/docs/search-documents.tool.js.map +1 -1
- package/dist/mcp-server/tools/github/list-project-files.tool.d.ts +1 -1
- package/dist/mcp-server/tools/github/list-project-files.tool.js +1 -1
- package/dist/mcp-server/tools/github/list-project-files.tool.js.map +1 -1
- package/dist/mcp-server/tools/github/search-code.tool.d.ts +1 -1
- package/dist/mcp-server/tools/github/search-code.tool.js +1 -1
- package/dist/mcp-server/tools/github/search-code.tool.js.map +1 -1
- package/package.json +9 -9
- 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 +13 -1
- package/wiki/{references → extensions}/helpers/kafka/consumer.md +32 -31
- package/wiki/{references → extensions}/helpers/kafka/examples.md +20 -20
- package/wiki/{references → extensions}/helpers/kafka/index.md +61 -54
- package/wiki/{references → extensions}/helpers/kafka/producer.md +21 -20
- package/wiki/{references → extensions}/helpers/kafka/schema-registry.md +25 -25
- 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 +37 -19
- package/wiki/guides/core-concepts/persistent/index.md +6 -6
- package/wiki/guides/core-concepts/persistent/models.md +50 -6
- package/wiki/guides/core-concepts/persistent/repositories.md +83 -8
- package/wiki/guides/core-concepts/persistent/transactions.md +39 -8
- package/wiki/guides/core-concepts/{controllers.md → rest-controllers.md} +32 -35
- package/wiki/guides/core-concepts/services.md +19 -6
- package/wiki/guides/get-started/5-minute-quickstart.md +17 -17
- 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 +45 -39
- package/wiki/guides/tutorials/complete-installation.md +74 -51
- package/wiki/guides/tutorials/ecommerce-api.md +39 -30
- package/wiki/guides/tutorials/realtime-chat.md +12 -13
- 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 +195 -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 → 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
|
@@ -28,7 +28,7 @@ cd ecommerce-api
|
|
|
28
28
|
bun init -y
|
|
29
29
|
|
|
30
30
|
# Install dependencies
|
|
31
|
-
bun add hono @hono/zod-openapi @venizia/ignis
|
|
31
|
+
bun add hono @hono/zod-openapi @venizia/ignis @venizia/ignis-helpers
|
|
32
32
|
bun add drizzle-orm drizzle-zod pg stripe
|
|
33
33
|
bun add -d typescript @types/bun @venizia/dev-configs drizzle-kit @types/pg
|
|
34
34
|
```
|
|
@@ -57,9 +57,19 @@ ecommerce-api/
|
|
|
57
57
|
│ │ ├── order.service.ts
|
|
58
58
|
│ │ └── payment.service.ts
|
|
59
59
|
│ ├── controllers/
|
|
60
|
-
│ │ ├── product
|
|
61
|
-
│ │ ├──
|
|
62
|
-
│ │
|
|
60
|
+
│ │ ├── product/
|
|
61
|
+
│ │ │ ├── definitions.ts
|
|
62
|
+
│ │ │ ├── product.controller.ts
|
|
63
|
+
│ │ │ └── index.ts
|
|
64
|
+
│ │ ├── cart/
|
|
65
|
+
│ │ │ ├── definitions.ts
|
|
66
|
+
│ │ │ ├── cart.controller.ts
|
|
67
|
+
│ │ │ └── index.ts
|
|
68
|
+
│ │ ├── order/
|
|
69
|
+
│ │ │ ├── definitions.ts
|
|
70
|
+
│ │ │ ├── order.controller.ts
|
|
71
|
+
│ │ │ └── index.ts
|
|
72
|
+
│ │ └── index.ts
|
|
63
73
|
│ └── datasources/
|
|
64
74
|
│ └── postgres.datasource.ts
|
|
65
75
|
└── package.json
|
|
@@ -314,7 +324,6 @@ export * from './order.model';
|
|
|
314
324
|
import {
|
|
315
325
|
BaseDataSource,
|
|
316
326
|
datasource,
|
|
317
|
-
TNodePostgresConnector,
|
|
318
327
|
ValueOrPromise,
|
|
319
328
|
} from '@venizia/ignis';
|
|
320
329
|
import { drizzle } from 'drizzle-orm/node-postgres';
|
|
@@ -329,7 +338,7 @@ interface IDSConfigs {
|
|
|
329
338
|
}
|
|
330
339
|
|
|
331
340
|
@datasource({ driver: 'node-postgres' })
|
|
332
|
-
export class PostgresDataSource extends BaseDataSource<
|
|
341
|
+
export class PostgresDataSource extends BaseDataSource<IDSConfigs> {
|
|
333
342
|
constructor() {
|
|
334
343
|
super({
|
|
335
344
|
name: PostgresDataSource.name,
|
|
@@ -490,7 +499,7 @@ import { getError } from '@venizia/ignis-helpers';
|
|
|
490
499
|
@injectable()
|
|
491
500
|
export class ProductService extends BaseService {
|
|
492
501
|
constructor(
|
|
493
|
-
@inject('repositories.ProductRepository')
|
|
502
|
+
@inject({ key: 'repositories.ProductRepository' })
|
|
494
503
|
private _productRepo: ProductRepository,
|
|
495
504
|
) {
|
|
496
505
|
super({ scope: ProductService.name });
|
|
@@ -563,9 +572,9 @@ interface ICartItem {
|
|
|
563
572
|
@injectable()
|
|
564
573
|
export class CartService extends BaseService {
|
|
565
574
|
constructor(
|
|
566
|
-
@inject('repositories.CartRepository')
|
|
575
|
+
@inject({ key: 'repositories.CartRepository' })
|
|
567
576
|
private _cartRepo: CartRepository,
|
|
568
|
-
@inject('services.ProductService')
|
|
577
|
+
@inject({ key: 'services.ProductService' })
|
|
569
578
|
private _productService: ProductService,
|
|
570
579
|
) {
|
|
571
580
|
super({ scope: CartService.name });
|
|
@@ -715,13 +724,13 @@ interface ICreateOrderInput {
|
|
|
715
724
|
@injectable()
|
|
716
725
|
export class OrderService extends BaseService {
|
|
717
726
|
constructor(
|
|
718
|
-
@inject('repositories.OrderRepository')
|
|
727
|
+
@inject({ key: 'repositories.OrderRepository' })
|
|
719
728
|
private _orderRepo: OrderRepository,
|
|
720
|
-
@inject('services.CartService')
|
|
729
|
+
@inject({ key: 'services.CartService' })
|
|
721
730
|
private _cartService: CartService,
|
|
722
|
-
@inject('services.ProductService')
|
|
731
|
+
@inject({ key: 'services.ProductService' })
|
|
723
732
|
private _productService: ProductService,
|
|
724
|
-
@inject('services.PaymentService')
|
|
733
|
+
@inject({ key: 'services.PaymentService' })
|
|
725
734
|
private _paymentService: PaymentService,
|
|
726
735
|
) {
|
|
727
736
|
super({ scope: OrderService.name });
|
|
@@ -915,10 +924,10 @@ export class PaymentService extends BaseService {
|
|
|
915
924
|
### Product Controller
|
|
916
925
|
|
|
917
926
|
```typescript
|
|
918
|
-
// src/controllers/product.controller.ts
|
|
927
|
+
// src/controllers/product/product.controller.ts
|
|
919
928
|
import { z } from '@hono/zod-openapi';
|
|
920
929
|
import {
|
|
921
|
-
|
|
930
|
+
BaseRestController,
|
|
922
931
|
controller,
|
|
923
932
|
get,
|
|
924
933
|
inject,
|
|
@@ -968,9 +977,9 @@ const ProductRoutes = {
|
|
|
968
977
|
type ProductRoutes = typeof ProductRoutes;
|
|
969
978
|
|
|
970
979
|
@controller({ path: '/products' })
|
|
971
|
-
export class ProductController extends
|
|
980
|
+
export class ProductController extends BaseRestController {
|
|
972
981
|
constructor(
|
|
973
|
-
@inject('services.ProductService')
|
|
982
|
+
@inject({ key: 'services.ProductService' })
|
|
974
983
|
private _productService: ProductService,
|
|
975
984
|
) {
|
|
976
985
|
super({ scope: ProductController.name, path: '/products' });
|
|
@@ -1003,10 +1012,10 @@ export class ProductController extends BaseController {
|
|
|
1003
1012
|
### Cart Controller
|
|
1004
1013
|
|
|
1005
1014
|
```typescript
|
|
1006
|
-
// src/controllers/cart.controller.ts
|
|
1015
|
+
// src/controllers/cart/cart.controller.ts
|
|
1007
1016
|
import { z } from '@hono/zod-openapi';
|
|
1008
1017
|
import {
|
|
1009
|
-
|
|
1018
|
+
BaseRestController,
|
|
1010
1019
|
controller,
|
|
1011
1020
|
get,
|
|
1012
1021
|
post,
|
|
@@ -1083,9 +1092,9 @@ const CartRoutes = {
|
|
|
1083
1092
|
type CartRoutes = typeof CartRoutes;
|
|
1084
1093
|
|
|
1085
1094
|
@controller({ path: '/cart' })
|
|
1086
|
-
export class CartController extends
|
|
1095
|
+
export class CartController extends BaseRestController {
|
|
1087
1096
|
constructor(
|
|
1088
|
-
@inject('services.CartService')
|
|
1097
|
+
@inject({ key: 'services.CartService' })
|
|
1089
1098
|
private _cartService: CartService,
|
|
1090
1099
|
) {
|
|
1091
1100
|
super({ scope: CartController.name, path: '/cart' });
|
|
@@ -1142,10 +1151,10 @@ export class CartController extends BaseController {
|
|
|
1142
1151
|
### Order Controller
|
|
1143
1152
|
|
|
1144
1153
|
```typescript
|
|
1145
|
-
// src/controllers/order.controller.ts
|
|
1154
|
+
// src/controllers/order/order.controller.ts
|
|
1146
1155
|
import { z } from '@hono/zod-openapi';
|
|
1147
1156
|
import {
|
|
1148
|
-
|
|
1157
|
+
BaseRestController,
|
|
1149
1158
|
controller,
|
|
1150
1159
|
get,
|
|
1151
1160
|
post,
|
|
@@ -1223,9 +1232,9 @@ const OrderRoutes = {
|
|
|
1223
1232
|
type OrderRoutes = typeof OrderRoutes;
|
|
1224
1233
|
|
|
1225
1234
|
@controller({ path: '/orders' })
|
|
1226
|
-
export class OrderController extends
|
|
1235
|
+
export class OrderController extends BaseRestController {
|
|
1227
1236
|
constructor(
|
|
1228
|
-
@inject('services.OrderService')
|
|
1237
|
+
@inject({ key: 'services.OrderService' })
|
|
1229
1238
|
private _orderService: OrderService,
|
|
1230
1239
|
) {
|
|
1231
1240
|
super({ scope: OrderController.name, path: '/orders' });
|
|
@@ -1265,9 +1274,9 @@ export class OrderController extends BaseController {
|
|
|
1265
1274
|
import { BaseApplication, IApplicationInfo } from '@venizia/ignis';
|
|
1266
1275
|
import { HealthCheckComponent, SwaggerComponent } from '@venizia/ignis';
|
|
1267
1276
|
|
|
1268
|
-
import { ProductController } from './controllers/product
|
|
1269
|
-
import { CartController } from './controllers/cart
|
|
1270
|
-
import { OrderController } from './controllers/order
|
|
1277
|
+
import { ProductController } from './controllers/product';
|
|
1278
|
+
import { CartController } from './controllers/cart';
|
|
1279
|
+
import { OrderController } from './controllers/order';
|
|
1271
1280
|
|
|
1272
1281
|
import { ProductService } from './services/product.service';
|
|
1273
1282
|
import { CartService } from './services/cart.service';
|
|
@@ -1393,7 +1402,7 @@ You've built a complete e-commerce API with:
|
|
|
1393
1402
|
|
|
1394
1403
|
## Next Steps
|
|
1395
1404
|
|
|
1396
|
-
- Add user authentication with [Auth Component](/
|
|
1397
|
-
- Add order notifications with [Mail Component](/
|
|
1405
|
+
- Add user authentication with [Auth Component](/extensions/components/authentication/)
|
|
1406
|
+
- Add order notifications with [Mail Component](/extensions/components/mail/)
|
|
1398
1407
|
- Add real-time updates with [Socket.IO](./realtime-chat.md)
|
|
1399
1408
|
- 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
|
|
@@ -25,7 +25,7 @@ cd chat-api
|
|
|
25
25
|
bun init -y
|
|
26
26
|
|
|
27
27
|
# Install dependencies
|
|
28
|
-
bun add hono @hono/zod-openapi @venizia/ignis
|
|
28
|
+
bun add hono @hono/zod-openapi @venizia/ignis @venizia/ignis-helpers
|
|
29
29
|
bun add drizzle-orm drizzle-zod pg
|
|
30
30
|
bun add -d typescript @types/bun @venizia/dev-configs drizzle-kit @types/pg
|
|
31
31
|
|
|
@@ -241,7 +241,6 @@ export * from './message.model';
|
|
|
241
241
|
import {
|
|
242
242
|
BaseDataSource,
|
|
243
243
|
datasource,
|
|
244
|
-
TNodePostgresConnector,
|
|
245
244
|
ValueOrPromise,
|
|
246
245
|
} from '@venizia/ignis';
|
|
247
246
|
import { drizzle } from 'drizzle-orm/node-postgres';
|
|
@@ -256,7 +255,7 @@ interface IDSConfigs {
|
|
|
256
255
|
}
|
|
257
256
|
|
|
258
257
|
@datasource({ driver: 'node-postgres' })
|
|
259
|
-
export class PostgresDataSource extends BaseDataSource<
|
|
258
|
+
export class PostgresDataSource extends BaseDataSource<IDSConfigs> {
|
|
260
259
|
constructor() {
|
|
261
260
|
super({
|
|
262
261
|
name: PostgresDataSource.name,
|
|
@@ -928,7 +927,7 @@ export class ChatService extends BaseService {
|
|
|
928
927
|
```
|
|
929
928
|
|
|
930
929
|
> [!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](/
|
|
930
|
+
> **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
931
|
|
|
933
932
|
## 6. Application Setup
|
|
934
933
|
|
|
@@ -953,7 +952,7 @@ import {
|
|
|
953
952
|
SocketIOServerHelper,
|
|
954
953
|
} from '@venizia/ignis-helpers';
|
|
955
954
|
import { ChatService } from './services/chat.service';
|
|
956
|
-
import { ChatController } from './controllers/chat
|
|
955
|
+
import { ChatController } from './controllers/chat';
|
|
957
956
|
import { UserRepository } from './repositories/user.repository';
|
|
958
957
|
import { RoomRepository, RoomMemberRepository } from './repositories/room.repository';
|
|
959
958
|
import { MessageRepository, DirectMessageRepository } from './repositories/message.repository';
|
|
@@ -1124,10 +1123,10 @@ Client connects → 'authenticate' event → authenticateFn() → 'authenticated
|
|
|
1124
1123
|
## 7. REST API for Chat History
|
|
1125
1124
|
|
|
1126
1125
|
```typescript
|
|
1127
|
-
// src/controllers/chat.controller.ts
|
|
1126
|
+
// src/controllers/chat/chat.controller.ts
|
|
1128
1127
|
import { z } from '@hono/zod-openapi';
|
|
1129
1128
|
import {
|
|
1130
|
-
|
|
1129
|
+
BaseRestController,
|
|
1131
1130
|
controller,
|
|
1132
1131
|
inject,
|
|
1133
1132
|
jsonResponse,
|
|
@@ -1182,7 +1181,7 @@ const ChatRoutes = {
|
|
|
1182
1181
|
} as const;
|
|
1183
1182
|
|
|
1184
1183
|
@controller({ path: '/chat' })
|
|
1185
|
-
export class ChatController extends
|
|
1184
|
+
export class ChatController extends BaseRestController {
|
|
1186
1185
|
constructor(
|
|
1187
1186
|
@inject({
|
|
1188
1187
|
key: BindingKeys.build({
|
|
@@ -1513,7 +1512,7 @@ this.bind<RedisHelper>({
|
|
|
1513
1512
|
|
|
1514
1513
|
## Next Steps
|
|
1515
1514
|
|
|
1516
|
-
- Add file/image sharing with [Storage Helper](/
|
|
1515
|
+
- Add file/image sharing with [Storage Helper](/extensions/helpers/storage/)
|
|
1517
1516
|
- Add push notifications
|
|
1518
1517
|
- Implement read receipts
|
|
1519
1518
|
- Add message reactions
|
|
@@ -1521,6 +1520,6 @@ this.bind<RedisHelper>({
|
|
|
1521
1520
|
|
|
1522
1521
|
## See Also
|
|
1523
1522
|
|
|
1524
|
-
- [Socket.IO Component](/
|
|
1525
|
-
- [Socket.IO Helper](/
|
|
1523
|
+
- [Socket.IO Component](/extensions/components/socket-io/) — Component reference
|
|
1524
|
+
- [Socket.IO Helper](/extensions/helpers/socket-io/) — Server + Client helper API
|
|
1526
1525
|
- [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>
|