@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.
Files changed (161) hide show
  1. package/dist/mcp-server/common/paths.d.ts +4 -2
  2. package/dist/mcp-server/common/paths.d.ts.map +1 -1
  3. package/dist/mcp-server/common/paths.js +8 -6
  4. package/dist/mcp-server/common/paths.js.map +1 -1
  5. package/dist/mcp-server/tools/docs/get-document-content.tool.d.ts +1 -1
  6. package/dist/mcp-server/tools/docs/get-document-content.tool.d.ts.map +1 -1
  7. package/dist/mcp-server/tools/docs/get-document-content.tool.js +7 -7
  8. package/dist/mcp-server/tools/docs/get-document-metadata.tool.js +3 -3
  9. package/dist/mcp-server/tools/docs/get-package-overview.tool.d.ts +1 -1
  10. package/dist/mcp-server/tools/docs/get-package-overview.tool.js +1 -1
  11. package/package.json +1 -1
  12. package/wiki/best-practices/api-usage-examples.md +9 -9
  13. package/wiki/best-practices/architectural-patterns.md +19 -3
  14. package/wiki/best-practices/architecture-decisions.md +6 -6
  15. package/wiki/best-practices/code-style-standards/advanced-patterns.md +1 -1
  16. package/wiki/best-practices/code-style-standards/control-flow.md +1 -1
  17. package/wiki/best-practices/code-style-standards/function-patterns.md +2 -2
  18. package/wiki/best-practices/code-style-standards/index.md +2 -2
  19. package/wiki/best-practices/code-style-standards/naming-conventions.md +1 -1
  20. package/wiki/best-practices/code-style-standards/route-definitions.md +4 -4
  21. package/wiki/best-practices/data-modeling.md +1 -1
  22. package/wiki/best-practices/deployment-strategies.md +1 -1
  23. package/wiki/best-practices/error-handling.md +2 -2
  24. package/wiki/best-practices/performance-optimization.md +3 -3
  25. package/wiki/best-practices/security-guidelines.md +2 -2
  26. package/wiki/best-practices/troubleshooting-tips.md +1 -1
  27. package/wiki/{references → extensions}/components/authentication/api.md +12 -20
  28. package/wiki/{references → extensions}/components/authentication/errors.md +1 -1
  29. package/wiki/{references → extensions}/components/authentication/index.md +5 -8
  30. package/wiki/{references → extensions}/components/authentication/usage.md +20 -36
  31. package/wiki/{references → extensions}/components/authorization/api.md +62 -13
  32. package/wiki/{references → extensions}/components/authorization/errors.md +12 -7
  33. package/wiki/{references → extensions}/components/authorization/index.md +93 -6
  34. package/wiki/{references → extensions}/components/authorization/usage.md +42 -4
  35. package/wiki/{references → extensions}/components/health-check.md +5 -4
  36. package/wiki/{references → extensions}/components/index.md +2 -0
  37. package/wiki/{references → extensions}/components/mail/index.md +1 -1
  38. package/wiki/{references → extensions}/components/request-tracker.md +1 -1
  39. package/wiki/{references → extensions}/components/socket-io/api.md +2 -2
  40. package/wiki/{references → extensions}/components/socket-io/errors.md +2 -0
  41. package/wiki/{references → extensions}/components/socket-io/index.md +24 -20
  42. package/wiki/{references → extensions}/components/socket-io/usage.md +2 -2
  43. package/wiki/{references → extensions}/components/static-asset/api.md +14 -15
  44. package/wiki/{references → extensions}/components/static-asset/errors.md +3 -1
  45. package/wiki/{references → extensions}/components/static-asset/index.md +158 -89
  46. package/wiki/{references → extensions}/components/static-asset/usage.md +8 -5
  47. package/wiki/{references → extensions}/components/swagger.md +3 -3
  48. package/wiki/{references → extensions}/components/template/index.md +4 -4
  49. package/wiki/{references → extensions}/components/template/setup-page.md +1 -1
  50. package/wiki/{references → extensions}/components/template/single-page.md +1 -1
  51. package/wiki/{references → extensions}/components/websocket/api.md +7 -6
  52. package/wiki/{references → extensions}/components/websocket/errors.md +17 -3
  53. package/wiki/{references → extensions}/components/websocket/index.md +17 -11
  54. package/wiki/{references → extensions}/components/websocket/usage.md +2 -2
  55. package/wiki/{references → extensions}/helpers/crypto/index.md +1 -1
  56. package/wiki/{references → extensions}/helpers/env/index.md +9 -5
  57. package/wiki/{references → extensions}/helpers/error/index.md +2 -7
  58. package/wiki/{references → extensions}/helpers/index.md +18 -6
  59. package/wiki/{references → extensions}/helpers/kafka/admin.md +33 -16
  60. package/wiki/extensions/helpers/kafka/consumer.md +384 -0
  61. package/wiki/extensions/helpers/kafka/examples.md +361 -0
  62. package/wiki/extensions/helpers/kafka/index.md +639 -0
  63. package/wiki/{references → extensions}/helpers/kafka/producer.md +100 -96
  64. package/wiki/extensions/helpers/kafka/schema-registry.md +214 -0
  65. package/wiki/{references → extensions}/helpers/logger/index.md +2 -2
  66. package/wiki/{references → extensions}/helpers/queue/index.md +400 -4
  67. package/wiki/{references → extensions}/helpers/storage/api.md +170 -10
  68. package/wiki/{references → extensions}/helpers/storage/index.md +44 -8
  69. package/wiki/{references → extensions}/helpers/template/index.md +1 -1
  70. package/wiki/{references → extensions}/helpers/testing/index.md +4 -4
  71. package/wiki/{references → extensions}/helpers/types/index.md +63 -16
  72. package/wiki/{references → extensions}/helpers/websocket/index.md +1 -1
  73. package/wiki/extensions/index.md +48 -0
  74. package/wiki/guides/core-concepts/application/bootstrapping.md +55 -37
  75. package/wiki/guides/core-concepts/application/index.md +95 -35
  76. package/wiki/guides/core-concepts/components-guide.md +23 -19
  77. package/wiki/guides/core-concepts/components.md +34 -10
  78. package/wiki/guides/core-concepts/dependency-injection.md +99 -34
  79. package/wiki/guides/core-concepts/grpc-controllers.md +295 -0
  80. package/wiki/guides/core-concepts/persistent/datasources.md +27 -8
  81. package/wiki/guides/core-concepts/persistent/models.md +43 -1
  82. package/wiki/guides/core-concepts/persistent/repositories.md +75 -8
  83. package/wiki/guides/core-concepts/persistent/transactions.md +38 -8
  84. package/wiki/guides/core-concepts/{controllers.md → rest-controllers.md} +30 -33
  85. package/wiki/guides/core-concepts/services.md +19 -5
  86. package/wiki/guides/get-started/5-minute-quickstart.md +6 -7
  87. package/wiki/guides/get-started/philosophy.md +1 -1
  88. package/wiki/guides/index.md +2 -2
  89. package/wiki/guides/reference/glossary.md +7 -7
  90. package/wiki/guides/reference/mcp-docs-server.md +1 -1
  91. package/wiki/guides/tutorials/building-a-crud-api.md +2 -2
  92. package/wiki/guides/tutorials/complete-installation.md +17 -14
  93. package/wiki/guides/tutorials/ecommerce-api.md +18 -18
  94. package/wiki/guides/tutorials/realtime-chat.md +8 -8
  95. package/wiki/guides/tutorials/testing.md +2 -2
  96. package/wiki/index.md +4 -3
  97. package/wiki/references/base/application.md +341 -21
  98. package/wiki/references/base/bootstrapping.md +43 -13
  99. package/wiki/references/base/components.md +259 -8
  100. package/wiki/references/base/controllers.md +556 -253
  101. package/wiki/references/base/datasources.md +159 -79
  102. package/wiki/references/base/dependency-injection.md +299 -48
  103. package/wiki/references/base/filter-system/application-usage.md +18 -2
  104. package/wiki/references/base/filter-system/array-operators.md +14 -6
  105. package/wiki/references/base/filter-system/comparison-operators.md +9 -3
  106. package/wiki/references/base/filter-system/default-filter.md +28 -3
  107. package/wiki/references/base/filter-system/fields-order-pagination.md +17 -13
  108. package/wiki/references/base/filter-system/index.md +169 -11
  109. package/wiki/references/base/filter-system/json-filtering.md +51 -18
  110. package/wiki/references/base/filter-system/list-operators.md +4 -3
  111. package/wiki/references/base/filter-system/logical-operators.md +7 -2
  112. package/wiki/references/base/filter-system/null-operators.md +50 -0
  113. package/wiki/references/base/filter-system/quick-reference.md +82 -243
  114. package/wiki/references/base/filter-system/range-operators.md +7 -1
  115. package/wiki/references/base/filter-system/tips.md +34 -7
  116. package/wiki/references/base/filter-system/use-cases.md +6 -5
  117. package/wiki/references/base/grpc-controllers.md +984 -0
  118. package/wiki/references/base/index.md +32 -24
  119. package/wiki/references/base/middleware.md +347 -0
  120. package/wiki/references/base/models.md +390 -46
  121. package/wiki/references/base/providers.md +14 -14
  122. package/wiki/references/base/repositories/advanced.md +84 -69
  123. package/wiki/references/base/repositories/index.md +447 -12
  124. package/wiki/references/base/repositories/mixins.md +103 -98
  125. package/wiki/references/base/repositories/relations.md +129 -45
  126. package/wiki/references/base/repositories/soft-deletable.md +104 -23
  127. package/wiki/references/base/services.md +94 -14
  128. package/wiki/references/index.md +12 -10
  129. package/wiki/references/quick-reference.md +98 -65
  130. package/wiki/references/utilities/crypto.md +21 -4
  131. package/wiki/references/utilities/date.md +25 -7
  132. package/wiki/references/utilities/index.md +26 -24
  133. package/wiki/references/utilities/jsx.md +54 -54
  134. package/wiki/references/utilities/module.md +8 -6
  135. package/wiki/references/utilities/parse.md +16 -9
  136. package/wiki/references/utilities/performance.md +22 -7
  137. package/wiki/references/utilities/promise.md +19 -16
  138. package/wiki/references/utilities/request.md +48 -26
  139. package/wiki/references/utilities/schema.md +69 -6
  140. package/wiki/references/utilities/statuses.md +131 -140
  141. package/wiki/references/helpers/kafka/consumer.md +0 -473
  142. package/wiki/references/helpers/kafka/examples.md +0 -234
  143. package/wiki/references/helpers/kafka/index.md +0 -482
  144. /package/wiki/{references → extensions}/components/mail/api.md +0 -0
  145. /package/wiki/{references → extensions}/components/mail/errors.md +0 -0
  146. /package/wiki/{references → extensions}/components/mail/usage.md +0 -0
  147. /package/wiki/{references → extensions}/components/template/api-page.md +0 -0
  148. /package/wiki/{references → extensions}/components/template/errors-page.md +0 -0
  149. /package/wiki/{references → extensions}/components/template/usage-page.md +0 -0
  150. /package/wiki/{references → extensions}/helpers/cron/index.md +0 -0
  151. /package/wiki/{references → extensions}/helpers/inversion/index.md +0 -0
  152. /package/wiki/{references → extensions}/helpers/network/api.md +0 -0
  153. /package/wiki/{references → extensions}/helpers/network/index.md +0 -0
  154. /package/wiki/{references → extensions}/helpers/redis/index.md +0 -0
  155. /package/wiki/{references → extensions}/helpers/socket-io/api.md +0 -0
  156. /package/wiki/{references → extensions}/helpers/socket-io/index.md +0 -0
  157. /package/wiki/{references → extensions}/helpers/template/single-page.md +0 -0
  158. /package/wiki/{references → extensions}/helpers/uid/index.md +0 -0
  159. /package/wiki/{references → extensions}/helpers/websocket/api.md +0 -0
  160. /package/wiki/{references → extensions}/helpers/worker-thread/index.md +0 -0
  161. /package/wiki/{references → extensions}/src-details/mcp-server.md +0 -0
@@ -11,20 +11,24 @@
11
11
  |------|-------|
12
12
  | **Package** | `@venizia/ignis` (core component) + `@venizia/ignis-helpers` (helper classes) |
13
13
  | **Component** | `WebSocketComponent` |
14
- | **Server Helper** | [`WebSocketServerHelper`](/references/helpers/websocket/) |
14
+ | **Server Helper** | [`WebSocketServerHelper`](/extensions/helpers/websocket/) |
15
15
  | **Emitter Helper** | `WebSocketEmitter` (standalone Redis publisher) |
16
16
  | **Runtimes** | Bun only (throws on Node.js) |
17
17
  | **Scaling** | Redis Pub/Sub (ioredis -- single or Cluster) |
18
18
 
19
19
  #### Import Paths
20
+
21
+ > [!IMPORTANT]
22
+ > `WebSocketComponent` and `WebSocketBindingKeys` are **not** exported from the `@venizia/ignis` barrel. You must import from the `@venizia/ignis/websocket` subpath.
23
+
20
24
  ```typescript
21
- // From core -- component + binding keys only
25
+ // From core -- subpath import (NOT from '@venizia/ignis')
22
26
  import {
23
27
  WebSocketComponent,
24
28
  WebSocketBindingKeys,
25
- } from '@venizia/ignis';
29
+ } from '@venizia/ignis/websocket';
26
30
 
27
- // From helpers -- types, helpers, constants
31
+ // From helpers -- types, helpers, constants (exported from main entry)
28
32
  import {
29
33
  WebSocketServerHelper,
30
34
  WebSocketEmitter,
@@ -53,7 +57,7 @@ import type {
53
57
  ```
54
58
 
55
59
  > [!NOTE]
56
- > `IServerOptions` (the core component's subset type) is **not** exported from `@venizia/ignis`. Only `WebSocketBindingKeys` and `WebSocketComponent` are exported from the core package. All helper types, constants, and classes are imported from `@venizia/ignis-helpers`.
60
+ > `IServerOptions` (the core component's subset type) is **not** exported from `@venizia/ignis` or `@venizia/ignis/websocket`. Only `WebSocketBindingKeys` and `WebSocketComponent` are exported from the core subpath. All helper types, constants, and classes are imported from `@venizia/ignis-helpers`.
57
61
 
58
62
  ### Use Cases
59
63
 
@@ -82,11 +86,11 @@ In your application's `preConfigure()` method, bind the required services and re
82
86
 
83
87
  #### Full Setup Example
84
88
  ```typescript
89
+ import { BaseApplication } from '@venizia/ignis';
85
90
  import {
86
- BaseApplication,
87
91
  WebSocketComponent,
88
92
  WebSocketBindingKeys,
89
- } from '@venizia/ignis';
93
+ } from '@venizia/ignis/websocket';
90
94
  import {
91
95
  RedisHelper,
92
96
  } from '@venizia/ignis-helpers';
@@ -98,7 +102,6 @@ import type {
98
102
  TWebSocketMessageHandler,
99
103
  TWebSocketOutboundTransformer,
100
104
  TWebSocketHandshakeFn,
101
- IWebSocketServerOptions,
102
105
  IBunWebSocketConfig,
103
106
  ValueOrPromise,
104
107
  } from '@venizia/ignis-helpers';
@@ -204,7 +207,7 @@ export class Application extends BaseApplication {
204
207
  }).toValue(handshakeFn);
205
208
 
206
209
  // 9. Server options (optional -- customize defaults)
207
- this.bind<Partial<IWebSocketServerOptions>>({
210
+ this.bind({
208
211
  key: WebSocketBindingKeys.SERVER_OPTIONS,
209
212
  }).toValue({
210
213
  identifier: 'my-app-websocket',
@@ -240,11 +243,14 @@ The core component's `IServerOptions` interface controls the WebSocket server se
240
243
  }
241
244
  ```
242
245
 
246
+ > [!NOTE]
247
+ > The `DEFAULT_SERVER_OPTIONS` in the core component only sets `identifier` and `path`. The remaining defaults (`defaultRooms`, `heartbeatInterval`, `heartbeatTimeout`, `serverOptions`) come from `WebSocketDefaults` applied by the helper constructor.
248
+
243
249
  To customize options, bind a partial options object before registering the component:
244
250
 
245
251
  #### Custom Server Options Example
246
252
  ```typescript
247
- import { WebSocketBindingKeys } from '@venizia/ignis';
253
+ import { WebSocketBindingKeys } from '@venizia/ignis/websocket';
248
254
 
249
255
  this.bind({
250
256
  key: WebSocketBindingKeys.SERVER_OPTIONS,
@@ -448,6 +454,6 @@ Called during authentication when `requireEncryption` is `true`. Receives the sa
448
454
  - [Usage & Examples](./usage) - Server-side usage, emitter, wire protocol, client tracking, and delivery strategy
449
455
  - [API Reference](./api) - Architecture, WebSocketEmitter API, and internals
450
456
  - [Error Reference](./errors) - Error conditions table and troubleshooting
451
- - [WebSocketServerHelper](/references/helpers/websocket/) - Helper API documentation
457
+ - [WebSocketServerHelper](/extensions/helpers/websocket/) - Helper API documentation
452
458
  - [Socket.IO Component](../socket-io/) - Node.js-compatible alternative with Socket.IO
453
459
  - [Bun WebSocket Documentation](https://bun.sh/docs/api/websockets) - Official Bun WebSocket API reference
@@ -10,10 +10,10 @@ Inject `WebSocketServerHelper` to interact with WebSocket:
10
10
  import {
11
11
  BaseService,
12
12
  inject,
13
- WebSocketBindingKeys,
14
13
  CoreBindings,
15
14
  BaseApplication,
16
15
  } from '@venizia/ignis';
16
+ import { WebSocketBindingKeys } from '@venizia/ignis/websocket';
17
17
  import { WebSocketServerHelper } from '@venizia/ignis-helpers';
18
18
 
19
19
  export class NotificationService extends BaseService {
@@ -470,6 +470,6 @@ The helper uses a dual delivery strategy depending on whether encryption is acti
470
470
  - [Setup & Configuration](./) - Quick reference, imports, setup steps, configuration, and binding keys
471
471
  - [API Reference](./api) - Architecture, WebSocketEmitter API, and internals
472
472
  - [Error Reference](./errors) - Error conditions table and troubleshooting
473
- - [WebSocketServerHelper](/references/helpers/websocket/) - Helper API documentation
473
+ - [WebSocketServerHelper](/extensions/helpers/websocket/) - Helper API documentation
474
474
  - [Socket.IO Component](../socket-io/) - Node.js-compatible alternative with Socket.IO
475
475
  - [Bun WebSocket Documentation](https://bun.sh/docs/api/websockets) - Official Bun WebSocket API reference
@@ -531,7 +531,7 @@ const hashed = hash('text', {
531
531
 
532
532
  - **References:**
533
533
  - [Crypto Utility](/references/utilities/crypto) -- Pure crypto utilities
534
- - [Authentication Component](/references/components/authentication/) -- JWT and password verification
534
+ - [Authentication Component](/extensions/components/authentication/) -- JWT and password verification
535
535
 
536
536
  - **Best Practices:**
537
537
  - [Security Guidelines](/best-practices/security-guidelines) -- Cryptographic best practices
@@ -9,14 +9,14 @@ Structured access to application environment variables with prefix filtering, ty
9
9
  | **Package** | `@venizia/ignis-helpers` |
10
10
  | **Classes** | `ApplicationEnvironment`, `Environment` |
11
11
  | **Extends** | `IApplicationEnvironment` (interface) |
12
- | **Singleton** | `applicationEnvironment` -- auto-initialized at module load |
12
+ | **Singleton** | `applicationEnvironment` (alias `Envs`) -- auto-initialized at module load |
13
13
  | **Runtimes** | Both |
14
14
 
15
15
  #### Import Paths
16
16
 
17
17
  ```typescript
18
18
  // Singleton instance (recommended)
19
- import { applicationEnvironment } from '@venizia/ignis-helpers';
19
+ import { applicationEnvironment, Envs } from '@venizia/ignis-helpers';
20
20
 
21
21
  // Classes
22
22
  import { ApplicationEnvironment, Environment } from '@venizia/ignis-helpers';
@@ -29,12 +29,15 @@ import type { IApplicationEnvironment } from '@venizia/ignis-helpers';
29
29
 
30
30
  ### Singleton (Recommended)
31
31
 
32
- A pre-configured `applicationEnvironment` singleton is auto-initialized at module load time. It reads `process.env` and filters keys matching the configured prefix (default: `APP_ENV`).
32
+ A pre-configured `applicationEnvironment` singleton is auto-initialized at module load time. It reads `process.env` and filters keys matching the configured prefix (default: `APP_ENV`). An alias `Envs` is also exported for convenience.
33
33
 
34
34
  ```typescript
35
35
  import { applicationEnvironment } from '@venizia/ignis-helpers';
36
+ // or
37
+ import { Envs } from '@venizia/ignis-helpers';
36
38
 
37
39
  const jwtSecret = applicationEnvironment.get<string>('APP_ENV_JWT_SECRET');
40
+ const jwtSecret2 = Envs.get<string>('APP_ENV_JWT_SECRET');
38
41
  ```
39
42
 
40
43
  > [!TIP]
@@ -68,13 +71,14 @@ The default singleton uses `process.env.APPLICATION_ENV_PREFIX ?? 'APP_ENV'` as
68
71
 
69
72
  ### Reading Variables
70
73
 
71
- Use `get<ReturnType>(key)` to retrieve a typed environment variable. Only keys matching the configured prefix are available.
74
+ Use `get<ReturnType>(key, defaultValue?)` to retrieve a typed environment variable. Only keys matching the configured prefix are available. An optional `defaultValue` is returned when the key is not found.
72
75
 
73
76
  ```typescript
74
77
  import { applicationEnvironment } from '@venizia/ignis-helpers';
75
78
 
76
79
  const jwtSecret = applicationEnvironment.get<string>('APP_ENV_JWT_SECRET');
77
80
  const serverPort = applicationEnvironment.get<string>('APP_ENV_SERVER_PORT');
81
+ const timeout = applicationEnvironment.get<number>('APP_ENV_TIMEOUT', 5000);
78
82
  ```
79
83
 
80
84
  > [!WARNING]
@@ -211,4 +215,4 @@ ALLOW_EMPTY_ENV_VALUE=true
211
215
 
212
216
  - **Other Helpers:**
213
217
  - [Helpers Index](../index) -- All available helpers
214
- - [Logger](/references/helpers/logger/) -- Uses `Environment.COMMON_ENVS` for debug log filtering
218
+ - [Logger](/extensions/helpers/logger/) -- Uses `Environment.COMMON_ENVS` for debug log filtering
@@ -19,9 +19,6 @@ import { ErrorSchema } from '@venizia/ignis-helpers';
19
19
  import type { TError } from '@venizia/ignis-helpers';
20
20
  ```
21
21
 
22
- > [!NOTE]
23
- > `ApplicationError`, `getError`, `ErrorSchema`, and `TError` are also available from `@venizia/ignis-inversion`. Their types are re-exported through `@venizia/ignis` (via `export type *`), but for runtime usage, import directly from `@venizia/ignis-helpers` or `@venizia/ignis-inversion`.
24
-
25
22
  ## Creating an Instance
26
23
 
27
24
  `ApplicationError` extends the native `Error` class with an HTTP `statusCode` and an optional `messageCode` for machine-readable error identification.
@@ -226,7 +223,5 @@ throw getError({
226
223
  - [Controllers](/references/base/controllers) -- Throwing errors in route handlers
227
224
  - [Services](/references/base/services) -- Error handling in business logic
228
225
  - [Middlewares](/references/base/middlewares) -- The `appErrorHandler` middleware
229
- - [Helpers Index](/references/helpers/) -- All available helpers
230
- - [Logger Helper](/references/helpers/logger/) -- Logging errors
231
- - [Error Handling Best Practices](/best-practices/error-handling) -- Patterns and anti-patterns
232
- - [Common Pitfalls](/best-practices/common-pitfalls) -- Frequent error handling mistakes
226
+ - [Helpers Index](/extensions/helpers/) -- All available helpers
227
+ - [Logger Helper](/extensions/helpers/logger/) -- Logging errors
@@ -14,7 +14,7 @@ Reusable classes and functions providing common functionality - designed for eas
14
14
  | [Inversion](./inversion/) | Dependency injection | DI container implementation |
15
15
  | [Logger](./logger/) | Logging | Winston-based, multiple transports, scopes |
16
16
  | [Network](./network/) | Network requests | HTTP, TCP, UDP helpers |
17
- | Kafka <Badge type="warning" text="Experimental" /> | Event streaming | Apache Kafka producer/consumer |
17
+ | [Kafka](./kafka/) | Event streaming | Apache Kafka producer/consumer/admin/schema registry |
18
18
  | [Queue](./queue/) | Message queues | BullMQ, MQTT support |
19
19
  | [Redis](./redis/) | Redis operations | Single/cluster, key-value, hashes, JSON, pub/sub |
20
20
  | [Socket.IO](./socket-io/) | Real-time communication | Socket.IO client/server helpers |
@@ -24,15 +24,27 @@ Reusable classes and functions providing common functionality - designed for eas
24
24
  | [UID](./uid/) | Unique ID generation | Snowflake IDs, Base62 encoding |
25
25
  | [Worker Thread](./worker-thread/) | Worker threads | Node.js worker management |
26
26
 
27
+ ### Subpath Imports
28
+
29
+ Some helpers with optional peer dependencies are only available via subpath imports to ensure proper tree-shaking:
30
+
31
+ | Subpath | Peer Dependency | Description |
32
+ |---------|-----------------|-------------|
33
+ | `@venizia/ignis-helpers/kafka` | `@platformatic/kafka` | Kafka producer/consumer/admin/schema registry |
34
+ | `@venizia/ignis-helpers/bullmq` | `bullmq` | BullMQ job queue |
35
+ | `@venizia/ignis-helpers/mqtt` | `mqtt` | MQTT pub/sub client |
36
+ | `@venizia/ignis-helpers/socket-io` | `socket.io`, `socket.io-client` | Socket.IO server/client |
37
+ | `@venizia/ignis-helpers/minio` | `minio` | MinIO S3-compatible storage |
38
+ | `@venizia/ignis-helpers/bun-s3` | -- | Bun native S3 storage |
39
+ | `@venizia/ignis-helpers/cron` | `cron` | Cron job scheduling |
40
+ | `@venizia/ignis-helpers/axios` | `axios` | Axios HTTP client |
41
+
27
42
  ## See Also
28
43
 
29
44
  - **Related Concepts:**
30
45
  - [Services](/guides/core-concepts/services) - Using helpers in service layer
31
- - [Controllers](/guides/core-concepts/controllers) - Using helpers in controllers
46
+ - [Controllers](/guides/core-concepts/rest-controllers) - Using helpers in controllers
32
47
 
33
48
  - **References:**
34
49
  - [Utilities](/references/utilities/) - Pure utility functions
35
- - [Components](/references/components/) - Framework components
36
-
37
- - **Best Practices:**
38
- - [Code Style Standards](/best-practices/code-style-standards/) - Helper usage patterns
50
+ - [Components](/extensions/components/) - Framework components
@@ -1,13 +1,13 @@
1
1
  # Admin
2
2
 
3
- The `KafkaAdminHelper` is a thin wrapper around `@platformatic/kafka`'s `Admin`. It manages creation, logging, and lifecycle.
3
+ The `KafkaAdminHelper` wraps `@platformatic/kafka`'s `Admin` with health tracking, graceful shutdown, and broker event callbacks. Use `getAdmin()` to access the full Admin API directly.
4
4
 
5
5
  ```typescript
6
- class KafkaAdminHelper extends BaseHelper
6
+ class KafkaAdminHelper extends BaseKafkaHelper<Admin>
7
7
  ```
8
8
 
9
9
  > [!NOTE]
10
- > `KafkaAdminHelper` has **no generic type parameters** the Admin client does not deal with serialized messages.
10
+ > `KafkaAdminHelper` has **no generic type parameters** -- the Admin client does not deal with serialized messages.
11
11
 
12
12
  ## Helper API
13
13
 
@@ -15,13 +15,19 @@ class KafkaAdminHelper extends BaseHelper
15
15
  |--------|-----------|-------------|
16
16
  | `newInstance(opts)` | `static newInstance(opts): KafkaAdminHelper` | Factory method |
17
17
  | `getAdmin()` | `(): Admin` | Access the underlying `Admin` |
18
- | `close()` | `(): Promise<void>` | Close the admin connection |
18
+ | `isHealthy()` | `(): boolean` | `true` when broker connected |
19
+ | `isReady()` | `(): boolean` | Same as `isHealthy()` |
20
+ | `getHealthStatus()` | `(): TKafkaHealthStatus` | `'connected'` \| `'disconnected'` \| `'unknown'` |
21
+ | `close(opts?)` | `(opts?: { isForce?: boolean }): Promise<void>` | Close the admin connection (default: graceful) |
19
22
 
20
- ## IKafkaAdminOpts
23
+ ## IKafkaAdminOptions
21
24
 
22
25
  ```typescript
23
- interface IKafkaAdminOpts extends IKafkaConnectionOptions {
24
- identifier?: string; // Default: 'kafka-admin'
26
+ interface IKafkaAdminOptions extends IKafkaConnectionOptions {
27
+ identifier?: string; // Default: 'kafka-admin'
28
+ shutdownTimeout?: number; // Default: 30000ms
29
+ onBrokerConnect?: TKafkaBrokerEventCallback;
30
+ onBrokerDisconnect?: TKafkaBrokerEventCallback;
25
31
  }
26
32
  ```
27
33
 
@@ -35,23 +41,39 @@ import { KafkaAdminHelper } from '@venizia/ignis-helpers/kafka';
35
41
  const helper = KafkaAdminHelper.newInstance({
36
42
  bootstrapBrokers: ['localhost:9092'],
37
43
  clientId: 'my-admin',
44
+ onBrokerConnect: ({ broker }) => console.log(`Connected to ${broker.host}:${broker.port}`),
45
+ onBrokerDisconnect: ({ broker }) => console.log(`Disconnected from ${broker.host}`),
38
46
  });
39
47
 
40
48
  const admin = helper.getAdmin();
41
49
 
42
- // Create a topic with 3 partitions and 2 replicas
50
+ // Create a topic
43
51
  await admin.createTopics({ topics: ['orders'], partitions: 3, replicas: 2 });
44
52
 
45
53
  // List all topics
46
54
  const topics = await admin.listTopics();
47
55
 
48
- // Describe a consumer group
49
- const groups = await admin.describeGroups({ groups: ['order-processing'] });
56
+ // Health check
57
+ helper.isHealthy(); // true when connected
50
58
 
59
+ // Graceful close
51
60
  await helper.close();
61
+
62
+ // Or force close
63
+ await helper.close({ isForce: true });
52
64
  ```
53
65
 
54
- ---
66
+ ## Graceful Shutdown
67
+
68
+ `close()` uses the base `closeClient()` (which calls `this.client.close()`) with a graceful timeout. If the graceful close exceeds `shutdownTimeout` (default 30s), it automatically force-closes. After `close()`, `healthStatus` is set to `'disconnected'`.
69
+
70
+ ```typescript
71
+ // Graceful (recommended)
72
+ await helper.close();
73
+
74
+ // Force
75
+ await helper.close({ isForce: true });
76
+ ```
55
77
 
56
78
  ## API Reference (`@platformatic/kafka`)
57
79
 
@@ -110,11 +132,6 @@ for (const [groupId, group] of details) {
110
132
  console.log(`Group: ${groupId}, State: ${group.state}`);
111
133
  for (const [memberId, member] of group.members) {
112
134
  console.log(` Member: ${member.clientId} (${member.clientHost})`);
113
- if (member.assignments) {
114
- for (const [topic, assignment] of member.assignments) {
115
- console.log(` ${topic}: partitions ${assignment.partitions.join(', ')}`);
116
- }
117
- }
118
135
  }
119
136
  }
120
137
  ```