@venizia/ignis-docs 0.2.0 → 0.2.1-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.
Files changed (174) hide show
  1. package/README.md +14 -14
  2. package/content/best-practices/api-usage-examples.md +39 -19
  3. package/content/best-practices/architectural-patterns.md +24 -13
  4. package/content/best-practices/architecture-decisions.md +29 -16
  5. package/content/best-practices/code-style-standards/advanced-patterns.md +43 -31
  6. package/content/best-practices/code-style-standards/constants-configuration.md +19 -4
  7. package/content/best-practices/code-style-standards/control-flow.md +33 -1
  8. package/content/best-practices/code-style-standards/documentation.md +28 -8
  9. package/content/best-practices/code-style-standards/function-patterns.md +15 -4
  10. package/content/best-practices/code-style-standards/index.md +7 -2
  11. package/content/best-practices/code-style-standards/naming-conventions.md +27 -3
  12. package/content/best-practices/code-style-standards/route-definitions.md +9 -5
  13. package/content/best-practices/code-style-standards/tooling.md +14 -1
  14. package/content/best-practices/code-style-standards/type-safety.md +39 -6
  15. package/content/best-practices/common-pitfalls.md +59 -35
  16. package/content/best-practices/contribution-workflow.md +8 -4
  17. package/content/best-practices/data-modeling.md +78 -62
  18. package/content/best-practices/deployment-strategies.md +56 -19
  19. package/content/best-practices/error-handling.md +247 -153
  20. package/content/best-practices/index.md +6 -0
  21. package/content/best-practices/performance-optimization.md +26 -13
  22. package/content/best-practices/security-guidelines.md +35 -9
  23. package/content/best-practices/testing-strategies.md +7 -2
  24. package/content/best-practices/troubleshooting-tips.md +27 -17
  25. package/content/extensions/components/api-reference.md +109 -323
  26. package/content/extensions/components/authentication/api.md +489 -602
  27. package/content/extensions/components/authentication/errors.md +135 -498
  28. package/content/extensions/components/authentication/index.md +89 -801
  29. package/content/extensions/components/authentication/usage.md +231 -955
  30. package/content/extensions/components/authorization/api.md +991 -644
  31. package/content/extensions/components/authorization/errors.md +204 -208
  32. package/content/extensions/components/authorization/getting-started.md +227 -0
  33. package/content/extensions/components/authorization/index.md +88 -795
  34. package/content/extensions/components/authorization/usage.md +219 -528
  35. package/content/extensions/components/health-check.md +77 -243
  36. package/content/extensions/components/index.md +24 -90
  37. package/content/extensions/components/mail/api.md +553 -285
  38. package/content/extensions/components/mail/errors.md +76 -62
  39. package/content/extensions/components/mail/index.md +111 -463
  40. package/content/extensions/components/mail/usage.md +139 -173
  41. package/content/extensions/components/request-tracker.md +70 -173
  42. package/content/extensions/components/socket-io/api.md +462 -785
  43. package/content/extensions/components/socket-io/errors.md +49 -51
  44. package/content/extensions/components/socket-io/index.md +69 -372
  45. package/content/extensions/components/socket-io/usage.md +212 -105
  46. package/content/extensions/components/static-asset/api.md +461 -141
  47. package/content/extensions/components/static-asset/errors.md +121 -53
  48. package/content/extensions/components/static-asset/index.md +84 -606
  49. package/content/extensions/components/static-asset/usage.md +184 -299
  50. package/content/extensions/components/template/index.md +3 -3
  51. package/content/extensions/components/websocket/api.md +311 -404
  52. package/content/extensions/components/websocket/errors.md +47 -56
  53. package/content/extensions/components/websocket/index.md +75 -407
  54. package/content/extensions/components/websocket/usage.md +120 -338
  55. package/content/extensions/helpers/cron/index.md +52 -160
  56. package/content/extensions/helpers/crypto/index.md +67 -480
  57. package/content/extensions/helpers/crypto/reference.md +528 -0
  58. package/content/extensions/helpers/env/index.md +64 -178
  59. package/content/extensions/helpers/error/index.md +286 -196
  60. package/content/extensions/helpers/index.md +61 -47
  61. package/content/extensions/helpers/inversion/index.md +76 -550
  62. package/content/extensions/helpers/inversion/reference.md +530 -0
  63. package/content/extensions/helpers/kafka/admin.md +23 -3
  64. package/content/extensions/helpers/kafka/compile-binary.md +83 -52
  65. package/content/extensions/helpers/kafka/consumer.md +65 -28
  66. package/content/extensions/helpers/kafka/examples.md +46 -253
  67. package/content/extensions/helpers/kafka/index.md +55 -617
  68. package/content/extensions/helpers/kafka/producer.md +156 -22
  69. package/content/extensions/helpers/kafka/schema-registry.md +59 -79
  70. package/content/extensions/helpers/logger/hf-logger.md +220 -0
  71. package/content/extensions/helpers/logger/index.md +78 -552
  72. package/content/extensions/helpers/logger/pino.md +105 -0
  73. package/content/extensions/helpers/logger/reference.md +937 -0
  74. package/content/extensions/helpers/network/api.md +276 -195
  75. package/content/extensions/helpers/network/index.md +87 -524
  76. package/content/extensions/helpers/queue/index.md +80 -897
  77. package/content/extensions/helpers/queue/reference.md +494 -0
  78. package/content/extensions/helpers/redis/index.md +86 -640
  79. package/content/extensions/helpers/redis/reference.md +784 -0
  80. package/content/extensions/helpers/secrets/index.md +136 -0
  81. package/content/extensions/helpers/socket-io/api.md +325 -204
  82. package/content/extensions/helpers/socket-io/index.md +79 -429
  83. package/content/extensions/helpers/storage/api.md +584 -464
  84. package/content/extensions/helpers/storage/index.md +80 -573
  85. package/content/extensions/helpers/types/index.md +75 -495
  86. package/content/extensions/helpers/types/reference.md +689 -0
  87. package/content/extensions/helpers/uid/index.md +176 -189
  88. package/content/extensions/helpers/websocket/api.md +366 -214
  89. package/content/extensions/helpers/websocket/index.md +68 -503
  90. package/content/extensions/helpers/worker-thread/index.md +62 -396
  91. package/content/extensions/helpers/worker-thread/reference.md +428 -0
  92. package/content/extensions/index.md +38 -39
  93. package/content/extensions/src-details/mcp-server.md +96 -548
  94. package/content/guides/core-concepts/persistent/datasources.md +2 -2
  95. package/content/guides/core-concepts/persistent/index.md +5 -1
  96. package/content/guides/core-concepts/persistent/models.md +1 -1
  97. package/content/guides/core-concepts/persistent/pglite.md +218 -0
  98. package/content/guides/core-concepts/persistent/postgres-drivers.md +21 -15
  99. package/content/guides/core-concepts/persistent/search-meilisearch.md +22 -12
  100. package/content/guides/core-concepts/persistent/search-typesense.md +28 -16
  101. package/content/guides/core-concepts/persistent/sqlite.md +296 -0
  102. package/content/guides/core-concepts/persistent/transactions.md +12 -11
  103. package/content/guides/core-concepts/secrets-vault.md +177 -0
  104. package/content/guides/core-concepts/services.md +1 -1
  105. package/content/guides/get-started/5-minute-quickstart.md +59 -206
  106. package/content/guides/get-started/philosophy.md +135 -670
  107. package/content/guides/get-started/setup.md +53 -74
  108. package/content/guides/migrations/redis-helpers-migration.md +5 -4
  109. package/content/guides/migrations/scoped-rbac-migration.md +5 -5
  110. package/content/guides/migrations/unified-connectors-migration.md +8 -7
  111. package/content/guides/tutorials/ecommerce-api.md +3 -8
  112. package/content/guides/tutorials/realtime-chat.md +1 -1
  113. package/content/references/base/application.md +64 -22
  114. package/content/references/base/components.md +3 -3
  115. package/content/references/base/connectors.md +79 -136
  116. package/content/references/base/controllers.md +12 -12
  117. package/content/references/base/datasources-reference.md +600 -0
  118. package/content/references/base/datasources.md +84 -444
  119. package/content/references/base/dependency-injection.md +25 -46
  120. package/content/references/base/filter-system/application-usage.md +95 -123
  121. package/content/references/base/filter-system/array-operators.md +33 -43
  122. package/content/references/base/filter-system/comparison-operators.md +55 -63
  123. package/content/references/base/filter-system/default-filter.md +144 -350
  124. package/content/references/base/filter-system/fields-order-pagination.md +116 -148
  125. package/content/references/base/filter-system/index.md +114 -253
  126. package/content/references/base/filter-system/json-filtering.md +52 -181
  127. package/content/references/base/filter-system/list-operators.md +28 -44
  128. package/content/references/base/filter-system/logical-operators.md +69 -114
  129. package/content/references/base/filter-system/null-operators.md +41 -98
  130. package/content/references/base/filter-system/pattern-matching.md +48 -51
  131. package/content/references/base/filter-system/quick-reference.md +93 -196
  132. package/content/references/base/filter-system/range-operators.md +22 -38
  133. package/content/references/base/filter-system/tips.md +70 -133
  134. package/content/references/base/filter-system/use-cases.md +173 -232
  135. package/content/references/base/grpc-controllers.md +53 -17
  136. package/content/references/base/index.md +5 -3
  137. package/content/references/base/middlewares.md +43 -28
  138. package/content/references/base/models-reference.md +886 -0
  139. package/content/references/base/models.md +81 -1452
  140. package/content/references/base/providers.md +8 -8
  141. package/content/references/base/repositories/advanced.md +281 -419
  142. package/content/references/base/repositories/index.md +84 -644
  143. package/content/references/base/repositories/mixins.md +25 -21
  144. package/content/references/base/repositories/relations.md +194 -375
  145. package/content/references/base/repositories/soft-deletable.md +67 -55
  146. package/content/references/base/secrets.md +267 -0
  147. package/content/references/base/services.md +8 -6
  148. package/content/references/configuration/environment-variables.md +73 -21
  149. package/content/references/configuration/index.md +51 -31
  150. package/content/references/index.md +1 -1
  151. package/content/references/quick-reference.md +3 -16
  152. package/content/references/utilities/crypto.md +35 -76
  153. package/content/references/utilities/date.md +33 -73
  154. package/content/references/utilities/duration.md +85 -0
  155. package/content/references/utilities/index.md +6 -2
  156. package/content/references/utilities/jsx-reference.md +298 -0
  157. package/content/references/utilities/jsx.md +82 -525
  158. package/content/references/utilities/module.md +81 -61
  159. package/content/references/utilities/parse.md +34 -64
  160. package/content/references/utilities/performance.md +33 -58
  161. package/content/references/utilities/promise.md +28 -62
  162. package/content/references/utilities/request.md +58 -218
  163. package/content/references/utilities/retry.md +139 -0
  164. package/content/references/utilities/schema.md +43 -137
  165. package/content/references/utilities/statuses-reference.md +361 -0
  166. package/content/references/utilities/statuses.md +63 -667
  167. package/dist/mcp-server/index.js +0 -0
  168. package/dist/mcp-server/tools/github/list-project-files.tool.d.ts +1 -1
  169. package/dist/mcp-server/tools/github/list-project-files.tool.d.ts.map +1 -1
  170. package/dist/mcp-server/tools/github/list-project-files.tool.js +3 -3
  171. package/dist/mcp-server/tools/github/search-code.tool.js +1 -1
  172. package/dist/mcp-server/tools/github/verify-dependencies.tool.js +1 -1
  173. package/dist/mcp-server/tools/github/view-source-file.tool.js +1 -1
  174. package/package.json +24 -23
@@ -1,34 +1,38 @@
1
- # WebSocket -- Error Reference
1
+ ---
2
+ title: WebSocket Component - Error Reference
3
+ description: Error conditions, close codes, and troubleshooting for the WebSocket component
4
+ difficulty: intermediate
5
+ ---
2
6
 
3
- > Error conditions table and troubleshooting guide for the WebSocket component.
7
+ # Error Reference
4
8
 
5
- ## Error Conditions
9
+ Every error condition the WebSocket component and helper can raise, plus fixes for the ones you'll actually hit.
6
10
 
7
- The server can send `error` events or close the connection under the following conditions:
11
+ ## Error conditions
8
12
 
9
13
  | Error Message / Close Code | Trigger | Event Type |
10
14
  |---------------------------|---------|------------|
11
15
  | `"Invalid message format"` | Client sent non-JSON data | `error` event |
12
- | `"Already authenticated"` | Client sent `authenticate` when state is not `UNAUTHORIZED` | `error` event |
16
+ | `"Already authenticated"` | Client sent `authenticate` while state was not `UNAUTHORIZED` | `error` event |
13
17
  | `"Not authenticated"` | Client sent a non-`authenticate`, non-`heartbeat` event while unauthenticated | `error` event |
14
18
  | `"Authentication failed"` | `authenticateFn` returned `null`/`false` | `error` event + close `4003` |
15
- | `"Authentication error"` | `authenticateFn` threw an exception | `error` event + close `4003` |
19
+ | `"Authentication error"` | `authenticateFn` threw | `error` event + close `4003` |
16
20
  | `"Encryption handshake failed"` | `handshakeFn` returned `null`/`false` | `error` event + close `4004` |
17
21
  | Close `4004` (no error event) | `requireEncryption: true` but no `handshakeFn` configured | close `4004` only |
18
- | Close `4001` | Auth timeout (initial: no `authenticate` sent) | close `4001` only |
19
- | Close `4001` | Auth in-progress timeout (`authenticateFn`/`handshakeFn` too slow) | close `4001` only |
20
- | Close `4002` | Heartbeat timeout (no messages within `heartbeatTimeout`) | close `4002` only |
22
+ | Close `4001` | Auth timeout - no `authenticate` sent within `authTimeout` | close `4001` only |
23
+ | Close `4001` | Auth in-progress timeout - `authenticateFn`/`handshakeFn` slower than `authTimeout * 3` | close `4001` only |
24
+ | Close `4002` | Heartbeat timeout - no messages within `heartbeatTimeout` | close `4002` only |
21
25
  | Close `1001` | Server shutdown (`wsHelper.shutdown()`) | close `1001` only |
22
26
  | `"Invalid redis connection!"` | Constructor: `redisConnection` is falsy | thrown `Error` (startup) |
23
27
  | `"WebSocket upgrade failed"` | `server.upgrade()` returned `false` | HTTP `500` response |
24
28
 
25
- ### Component Errors
29
+ ### Component-level errors
26
30
 
27
31
  | Method | Condition | Error Message |
28
32
  |--------|-----------|---------------|
29
33
  | `binding()` | `application` is falsy | `"[binding] Invalid application to bind WebSocketComponent"` |
30
34
  | `binding()` | Node.js runtime detected | `"[WebSocketComponent] Node.js runtime is not supported yet. Please use Bun runtime."` |
31
- | `resolveBindings()` | `REDIS_CONNECTION` not instanceof `AbstractRedisHelper` | `"[WebSocketComponent][resolveBindings] Invalid instance of redisConnection | Please init connection with RedisSingleHelper (single), RedisClusterHelper (cluster), or RedisSentinelHelper (sentinel)"` |
35
+ | `resolveBindings()` | `REDIS_CONNECTION` fails `isRedisHelper()` | `"[WebSocketComponent][resolveBindings] Invalid instance of redisConnection ..."` |
32
36
  | `resolveBindings()` | `AUTHENTICATE_HANDLER` is falsy | `"[WebSocketComponent] Invalid authenticateFn to setup WebSocket server!"` |
33
37
  | `registerBunHook()` | Bun server instance not available | `"[WebSocketComponent] Bun server instance not available!"` |
34
38
 
@@ -36,15 +40,13 @@ The server can send `error` events or close the connection under the following c
36
40
 
37
41
  ### "WebSocket not initialized"
38
42
 
39
- **Cause**: You are trying to use `WebSocketServerHelper` before the server has started (e.g., during DI construction).
40
-
41
- **Fix**: Use the lazy getter pattern shown in [Usage & Examples](./usage). Never `@inject` `WEBSOCKET_INSTANCE` directly in a constructor -- it does not exist yet at construction time.
43
+ - **Cause:** `WebSocketServerHelper` was accessed before the server started - for example during DI construction.
44
+ - **Fix:** Use the lazy getter pattern from [Usage & Examples](./usage). Never `@inject` `WEBSOCKET_INSTANCE` in a constructor - it does not exist yet at that point.
42
45
 
43
46
  ### "Invalid instance of redisConnection"
44
47
 
45
- **Cause**: The value bound to `REDIS_CONNECTION` is not an instance of `AbstractRedisHelper` (i.e. not a `RedisSingleHelper`, `RedisClusterHelper`, or `RedisSentinelHelper`).
46
-
47
- **Fix**: Use one of the concrete topology helpers:
48
+ - **Cause:** The value bound to `REDIS_CONNECTION` is not an `AbstractRedisHelper` instance. It is not a `RedisSingleHelper`, `RedisClusterHelper`, or `RedisSentinelHelper`.
49
+ - **Fix:** Bind one of the concrete topology helpers, not a raw `ioredis` client.
48
50
 
49
51
  ```typescript
50
52
  import { WebSocketBindingKeys } from '@venizia/ignis/websocket';
@@ -53,71 +55,60 @@ import { WebSocketBindingKeys } from '@venizia/ignis/websocket';
53
55
  this.bind({ key: WebSocketBindingKeys.REDIS_CONNECTION })
54
56
  .toValue(new RedisSingleHelper({ name: 'websocket', host, port, password }));
55
57
 
56
- // Wrong -- raw ioredis client
57
- this.bind({ key: WebSocketBindingKeys.REDIS_CONNECTION })
58
- .toValue(new Redis(6379)); // This is NOT an AbstractRedisHelper!
58
+ // Wrong: raw ioredis client, not an AbstractRedisHelper
59
+ this.bind({ key: WebSocketBindingKeys.REDIS_CONNECTION }).toValue(new Redis(6379));
59
60
  ```
60
61
 
61
62
  ### "Invalid authenticateFn to setup WebSocket server!"
62
63
 
63
- **Cause**: No authentication function was bound to `AUTHENTICATE_HANDLER`, or it was bound as `null`.
64
-
65
- **Fix**: Bind a valid authentication function before registering the component:
64
+ - **Cause:** No function bound to `AUTHENTICATE_HANDLER`, or it was bound as `null`.
65
+ - **Fix:** Bind a valid authentication function before registering the component.
66
66
 
67
67
  ```typescript
68
68
  import { WebSocketBindingKeys } from '@venizia/ignis/websocket';
69
69
 
70
- this.bind<TWebSocketAuthenticateFn>({
71
- key: WebSocketBindingKeys.AUTHENTICATE_HANDLER,
72
- }).toValue(async (data) => {
73
- const token = data.token as string;
74
- const user = await verifyJWT(token);
75
- return user ? { userId: user.id } : null;
76
- });
70
+ this.bind<TWebSocketAuthenticateFn>({ key: WebSocketBindingKeys.AUTHENTICATE_HANDLER }).toValue(
71
+ async data => {
72
+ const user = await verifyJWT(data.token as string);
73
+ return user ? { userId: user.id } : null;
74
+ },
75
+ );
77
76
  ```
78
77
 
79
78
  ### "Node.js runtime is not supported yet"
80
79
 
81
- **Cause**: Running the application on Node.js. The WebSocket component only supports Bun.
82
-
83
- **Fix**: Either switch to Bun runtime, or use the [Socket.IO Component](../socket-io/) which supports both Node.js and Bun.
80
+ - **Cause:** Running on Node.js. The WebSocket component only supports Bun.
81
+ - **Fix:** Switch to Bun, or use the [Socket.IO Component](../socket-io/) instead - it supports both runtimes.
84
82
 
85
83
  ### "Bun server instance not available!"
86
84
 
87
- **Cause**: The post-start hook executed but could not obtain the Bun server instance. This typically means the server failed to start.
88
-
89
- **Fix**: Check server startup logs for errors. Ensure `start()` completes successfully before post-start hooks run.
85
+ - **Cause:** The post-start hook ran but could not obtain the Bun server instance - typically the server failed to start.
86
+ - **Fix:** Check server startup logs. Confirm `start()` completes successfully before post-start hooks run.
90
87
 
91
- ### WebSocket connects but messages are not received
88
+ ### WebSocket connects but no messages arrive
92
89
 
93
- **Cause**: Clients must send <code v-pre>{ event: 'authenticate', data: { type: '...', token: '...', publicKey?: '...' } }</code> after connecting. Unauthenticated clients are disconnected after the timeout (default: 5 seconds) and cannot receive messages other than `error` events.
94
-
95
- **Fix**: Ensure your client authenticates immediately after connection:
90
+ - **Cause:** The client never sent `{ event: 'authenticate', data: { ... } }`. Unauthenticated clients are disconnected after `authTimeout` (5s default) and receive only `error` events.
91
+ - **Fix:** Authenticate immediately after the connection opens.
96
92
 
97
93
  ```javascript
98
94
  const ws = new WebSocket('wss://example.com/ws');
99
95
 
100
96
  ws.onopen = () => {
101
- ws.send(JSON.stringify({
102
- event: 'authenticate',
103
- data: { type: 'Bearer', token: 'your-jwt-token' },
104
- }));
97
+ ws.send(JSON.stringify({ event: 'authenticate', data: { type: 'Bearer', token: 'your-jwt-token' } }));
105
98
  };
106
99
 
107
- ws.onmessage = (event) => {
100
+ ws.onmessage = event => {
108
101
  const msg = JSON.parse(event.data);
109
102
  if (msg.event === 'connected') {
110
103
  console.log('Authenticated! Client ID:', msg.data.id);
111
- // Now ready to send/receive events
112
104
  }
113
105
  };
114
106
  ```
115
107
 
116
108
  ### Client disconnected with code 4002
117
109
 
118
- **Cause**: The client did not send any messages (including heartbeat) within the `heartbeatTimeout` period (default: 90 seconds).
119
-
120
- **Fix**: Implement a heartbeat on the client side:
110
+ - **Cause:** No message (including `heartbeat`) arrived within `heartbeatTimeout` (90s default).
111
+ - **Fix:** Send a heartbeat on an interval shorter than the timeout.
121
112
 
122
113
  ```javascript
123
114
  setInterval(() => {
@@ -127,11 +118,11 @@ setInterval(() => {
127
118
  }, 30000);
128
119
  ```
129
120
 
130
- ## See Also
121
+ ## See also
131
122
 
132
- - [Setup & Configuration](./) - Quick reference, imports, setup steps, configuration, and binding keys
133
- - [Usage & Examples](./usage) - Server-side usage, emitter, wire protocol, client tracking, and delivery strategy
134
- - [API Reference](./api) - Architecture, WebSocketEmitter API, and internals
135
- - [WebSocketServerHelper](/extensions/helpers/websocket/) - Helper API documentation
136
- - [Socket.IO Component](../socket-io/) - Node.js-compatible alternative with Socket.IO
137
- - [Bun WebSocket Documentation](https://bun.sh/docs/api/websockets) - Official Bun WebSocket API reference
123
+ - [Overview](./) - quick start, imports, common configuration tasks
124
+ - [Usage & Examples](./usage) - injecting the helper, `WebSocketEmitter`, wire protocol, client tracking, delivery strategy
125
+ - [Full Reference](./api) - binding keys, configuration options, `WebSocketEmitter` API, internals
126
+ - [WebSocketServerHelper](/extensions/helpers/websocket/) - helper API documentation
127
+ - [Socket.IO Component](../socket-io/) - Node.js-compatible alternative
128
+ - [Bun WebSocket Documentation](https://bun.sh/docs/api/websockets) - official Bun WebSocket API reference