@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
|
@@ -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`](/
|
|
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 --
|
|
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
|
|
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
|
|
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](/
|
|
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](/
|
|
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](/
|
|
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](/
|
|
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](/
|
|
230
|
-
- [Logger Helper](/
|
|
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
|
|
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](/
|
|
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`
|
|
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
|
|
6
|
+
class KafkaAdminHelper extends BaseKafkaHelper<Admin>
|
|
7
7
|
```
|
|
8
8
|
|
|
9
9
|
> [!NOTE]
|
|
10
|
-
> `KafkaAdminHelper` has **no generic type parameters**
|
|
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
|
-
| `
|
|
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
|
-
##
|
|
23
|
+
## IKafkaAdminOptions
|
|
21
24
|
|
|
22
25
|
```typescript
|
|
23
|
-
interface
|
|
24
|
-
identifier?: string;
|
|
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
|
|
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
|
-
//
|
|
49
|
-
|
|
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
|
```
|