@venizia/ignis-docs 0.0.5 → 0.0.6-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 (123) hide show
  1. package/package.json +1 -1
  2. package/wiki/best-practices/architectural-patterns.md +0 -2
  3. package/wiki/best-practices/architecture-decisions.md +0 -8
  4. package/wiki/best-practices/code-style-standards/control-flow.md +1 -1
  5. package/wiki/best-practices/code-style-standards/index.md +0 -1
  6. package/wiki/best-practices/code-style-standards/tooling.md +0 -3
  7. package/wiki/best-practices/contribution-workflow.md +12 -12
  8. package/wiki/best-practices/index.md +4 -14
  9. package/wiki/best-practices/performance-optimization.md +3 -3
  10. package/wiki/best-practices/security-guidelines.md +2 -2
  11. package/wiki/best-practices/troubleshooting-tips.md +1 -1
  12. package/wiki/guides/core-concepts/application/bootstrapping.md +6 -7
  13. package/wiki/guides/core-concepts/components-guide.md +1 -1
  14. package/wiki/guides/core-concepts/components.md +2 -2
  15. package/wiki/guides/core-concepts/dependency-injection.md +4 -5
  16. package/wiki/guides/core-concepts/persistent/datasources.md +4 -5
  17. package/wiki/guides/core-concepts/services.md +1 -1
  18. package/wiki/guides/get-started/5-minute-quickstart.md +4 -5
  19. package/wiki/guides/get-started/philosophy.md +12 -24
  20. package/wiki/guides/index.md +2 -9
  21. package/wiki/guides/reference/mcp-docs-server.md +13 -13
  22. package/wiki/guides/tutorials/building-a-crud-api.md +10 -10
  23. package/wiki/guides/tutorials/complete-installation.md +11 -12
  24. package/wiki/guides/tutorials/ecommerce-api.md +3 -3
  25. package/wiki/guides/tutorials/realtime-chat.md +6 -6
  26. package/wiki/guides/tutorials/testing.md +4 -5
  27. package/wiki/index.md +8 -14
  28. package/wiki/references/base/bootstrapping.md +0 -3
  29. package/wiki/references/base/components.md +2 -2
  30. package/wiki/references/base/controllers.md +0 -1
  31. package/wiki/references/base/datasources.md +1 -1
  32. package/wiki/references/base/dependency-injection.md +2 -2
  33. package/wiki/references/base/filter-system/default-filter.md +2 -3
  34. package/wiki/references/base/filter-system/index.md +1 -1
  35. package/wiki/references/base/filter-system/quick-reference.md +0 -14
  36. package/wiki/references/base/middlewares.md +0 -8
  37. package/wiki/references/base/providers.md +0 -9
  38. package/wiki/references/base/repositories/advanced.md +1 -1
  39. package/wiki/references/base/repositories/mixins.md +2 -3
  40. package/wiki/references/base/services.md +0 -1
  41. package/wiki/references/components/authentication/api.md +444 -0
  42. package/wiki/references/components/authentication/errors.md +177 -0
  43. package/wiki/references/components/authentication/index.md +571 -0
  44. package/wiki/references/components/authentication/usage.md +781 -0
  45. package/wiki/references/components/health-check.md +292 -103
  46. package/wiki/references/components/index.md +14 -12
  47. package/wiki/references/components/mail/api.md +505 -0
  48. package/wiki/references/components/mail/errors.md +176 -0
  49. package/wiki/references/components/mail/index.md +535 -0
  50. package/wiki/references/components/mail/usage.md +404 -0
  51. package/wiki/references/components/request-tracker.md +229 -25
  52. package/wiki/references/components/socket-io/api.md +1051 -0
  53. package/wiki/references/components/socket-io/errors.md +119 -0
  54. package/wiki/references/components/socket-io/index.md +410 -0
  55. package/wiki/references/components/socket-io/usage.md +322 -0
  56. package/wiki/references/components/static-asset/api.md +261 -0
  57. package/wiki/references/components/static-asset/errors.md +89 -0
  58. package/wiki/references/components/static-asset/index.md +617 -0
  59. package/wiki/references/components/static-asset/usage.md +364 -0
  60. package/wiki/references/components/swagger.md +390 -110
  61. package/wiki/references/components/template/api-page.md +125 -0
  62. package/wiki/references/components/template/errors-page.md +100 -0
  63. package/wiki/references/components/template/index.md +104 -0
  64. package/wiki/references/components/template/setup-page.md +134 -0
  65. package/wiki/references/components/template/single-page.md +132 -0
  66. package/wiki/references/components/template/usage-page.md +127 -0
  67. package/wiki/references/components/websocket/api.md +508 -0
  68. package/wiki/references/components/websocket/errors.md +123 -0
  69. package/wiki/references/components/websocket/index.md +453 -0
  70. package/wiki/references/components/websocket/usage.md +475 -0
  71. package/wiki/references/helpers/cron/index.md +224 -0
  72. package/wiki/references/helpers/crypto/index.md +537 -0
  73. package/wiki/references/helpers/env/index.md +214 -0
  74. package/wiki/references/helpers/error/index.md +232 -0
  75. package/wiki/references/helpers/index.md +16 -15
  76. package/wiki/references/helpers/inversion/index.md +608 -0
  77. package/wiki/references/helpers/logger/index.md +600 -0
  78. package/wiki/references/helpers/network/api.md +986 -0
  79. package/wiki/references/helpers/network/index.md +620 -0
  80. package/wiki/references/helpers/queue/index.md +589 -0
  81. package/wiki/references/helpers/redis/index.md +495 -0
  82. package/wiki/references/helpers/socket-io/api.md +497 -0
  83. package/wiki/references/helpers/socket-io/index.md +513 -0
  84. package/wiki/references/helpers/storage/api.md +705 -0
  85. package/wiki/references/helpers/storage/index.md +583 -0
  86. package/wiki/references/helpers/template/index.md +66 -0
  87. package/wiki/references/helpers/template/single-page.md +126 -0
  88. package/wiki/references/helpers/testing/index.md +510 -0
  89. package/wiki/references/helpers/types/index.md +512 -0
  90. package/wiki/references/helpers/uid/index.md +272 -0
  91. package/wiki/references/helpers/websocket/api.md +736 -0
  92. package/wiki/references/helpers/websocket/index.md +574 -0
  93. package/wiki/references/helpers/worker-thread/index.md +470 -0
  94. package/wiki/references/index.md +2 -9
  95. package/wiki/references/quick-reference.md +3 -18
  96. package/wiki/references/utilities/jsx.md +1 -8
  97. package/wiki/references/utilities/statuses.md +0 -7
  98. package/wiki/references/components/authentication.md +0 -476
  99. package/wiki/references/components/mail.md +0 -687
  100. package/wiki/references/components/socket-io.md +0 -562
  101. package/wiki/references/components/static-asset.md +0 -1277
  102. package/wiki/references/helpers/cron.md +0 -108
  103. package/wiki/references/helpers/crypto.md +0 -132
  104. package/wiki/references/helpers/env.md +0 -83
  105. package/wiki/references/helpers/error.md +0 -97
  106. package/wiki/references/helpers/inversion.md +0 -176
  107. package/wiki/references/helpers/logger.md +0 -296
  108. package/wiki/references/helpers/network.md +0 -396
  109. package/wiki/references/helpers/queue.md +0 -150
  110. package/wiki/references/helpers/redis.md +0 -142
  111. package/wiki/references/helpers/socket-io.md +0 -932
  112. package/wiki/references/helpers/storage.md +0 -665
  113. package/wiki/references/helpers/testing.md +0 -133
  114. package/wiki/references/helpers/types.md +0 -167
  115. package/wiki/references/helpers/uid.md +0 -167
  116. package/wiki/references/helpers/worker-thread.md +0 -178
  117. package/wiki/references/src-details/boot.md +0 -379
  118. package/wiki/references/src-details/core.md +0 -263
  119. package/wiki/references/src-details/dev-configs.md +0 -298
  120. package/wiki/references/src-details/docs.md +0 -71
  121. package/wiki/references/src-details/helpers.md +0 -211
  122. package/wiki/references/src-details/index.md +0 -86
  123. package/wiki/references/src-details/inversion.md +0 -340
@@ -1,340 +0,0 @@
1
- # Package: `@venizia/ignis-inversion`
2
-
3
- ## Overview
4
-
5
- The `@venizia/ignis-inversion` package provides a standalone, lightweight Dependency Injection (DI) and Inversion of Control (IoC) container. This package was extracted from `@venizia/ignis-helpers` to enable independent usage and better modularity.
6
-
7
- ## Package Information
8
-
9
- | Property | Value |
10
- |----------|-------|
11
- | **Package Name** | `@venizia/ignis-inversion` |
12
- | **Location** | `packages/inversion/` |
13
- | **Purpose** | Standalone DI/IoC container |
14
- | **Dependencies** | `lodash`, `reflect-metadata`, `zod` |
15
-
16
- ## Key Features
17
-
18
- - **Flexible Binding Strategies**: Class, Value, and Provider-based bindings
19
- - **Scope Management**: Singleton and Transient scopes
20
- - **Metadata-driven Injection**: Constructor and property injection via decorators
21
- - **Tag-based Discovery**: Find bindings by tag for modular composition
22
- - **Type-safe**: Full TypeScript support with generics
23
-
24
- ---
25
-
26
- ## Core Components
27
-
28
- ### Binding Class
29
-
30
- The `Binding<T>` class represents a single dependency registration in the container.
31
-
32
- #### Binding Methods
33
-
34
- | Method | Description | Returns |
35
- |--------|-------------|---------|
36
- | `toClass(cls)` | Bind to a class constructor | `this` |
37
- | `toValue(value)` | Bind to a static value | `this` |
38
- | `toProvider(fn)` | Bind to a provider function or class | `this` |
39
- | `setScope(scope)` | Set binding scope (SINGLETON/TRANSIENT) | `this` |
40
- | `setTags(...tags)` | Add tags for discovery | `this` |
41
- | `getValue(container)` | Resolve the bound value | `T` |
42
- | `clearCache()` | Clear singleton cache | `void` |
43
-
44
- #### Binding Example
45
-
46
- ```typescript
47
- import { Binding, BindingScopes } from '@venizia/ignis-inversion';
48
-
49
- // Create a binding
50
- const binding = new Binding<MyService>({ key: 'services.MyService' })
51
- .toClass(MyService)
52
- .setScope(BindingScopes.SINGLETON)
53
- .setTags('services', 'core');
54
- ```
55
-
56
- ### Container Class
57
-
58
- The `Container` class is the main DI container for managing bindings and resolving dependencies.
59
-
60
- #### Container Methods
61
-
62
- | Method | Description | Returns |
63
- |--------|-------------|---------|
64
- | `bind<T>({ key })` | Create a new binding | `Binding<T>` |
65
- | `isBound({ key })` | Check if binding exists | `boolean` |
66
- | `getBinding<T>({ key })` | Get a specific binding | `Binding<T> \| undefined` |
67
- | `unbind({ key })` | Remove a binding | `boolean` |
68
- | `get<T>({ key, isOptional? })` | Resolve a dependency | `T \| undefined` |
69
- | `resolve<T>(cls)` | Instantiate a class with injection | `T` |
70
- | `instantiate<T>(cls)` | Same as resolve | `T` |
71
- | `findByTag<T>({ tag })` | Find bindings by tag | `Binding<T>[]` |
72
- | `clear()` | Clear singleton caches | `void` |
73
- | `reset()` | Clear all bindings | `void` |
74
-
75
- #### Container Example
76
-
77
- ```typescript
78
- import { Container, BindingScopes } from '@venizia/ignis-inversion';
79
-
80
- const container = new Container({ scope: 'MyApp' });
81
-
82
- // Bind a class
83
- container.bind<UserService>({ key: 'services.UserService' })
84
- .toClass(UserService)
85
- .setScope(BindingScopes.SINGLETON);
86
-
87
- // Bind a value
88
- container.bind<string>({ key: 'config.apiUrl' })
89
- .toValue('https://api.example.com');
90
-
91
- // Bind a provider
92
- container.bind<DatabaseConnection>({ key: 'database' })
93
- .toProvider((container) => {
94
- const config = container.get<Config>({ key: 'config' });
95
- return new DatabaseConnection(config.dbUrl);
96
- });
97
-
98
- // Resolve dependencies
99
- const userService = container.get<UserService>({ key: 'services.UserService' });
100
- ```
101
-
102
- ### MetadataRegistry Class
103
-
104
- The `MetadataRegistry` stores and retrieves decorator metadata for DI.
105
-
106
- #### Registry Methods
107
-
108
- | Method | Description |
109
- |--------|-------------|
110
- | `define({ target, key, value })` | Define metadata on a target |
111
- | `get({ target, key })` | Get metadata from a target |
112
- | `has({ target, key })` | Check if metadata exists |
113
- | `delete({ target, key })` | Delete metadata |
114
- | `getKeys({ target })` | Get all metadata keys |
115
- | `setPropertyMetadata(...)` | Set property injection metadata |
116
- | `getPropertiesMetadata(...)` | Get all property metadata |
117
- | `setInjectMetadata(...)` | Set constructor injection metadata |
118
- | `getInjectMetadata(...)` | Get constructor injection metadata |
119
-
120
- ---
121
-
122
- ## Types and Interfaces
123
-
124
- ### Binding Scopes
125
-
126
- ```typescript
127
- import { BindingScopes } from '@venizia/ignis-inversion';
128
-
129
- BindingScopes.SINGLETON // Single instance, reused
130
- BindingScopes.TRANSIENT // New instance each request (default)
131
- ```
132
-
133
- ### Binding Value Types
134
-
135
- ```typescript
136
- import { BindingValueTypes } from '@venizia/ignis-inversion';
137
-
138
- BindingValueTypes.CLASS // Bind to class constructor
139
- BindingValueTypes.VALUE // Bind to static value
140
- BindingValueTypes.PROVIDER // Bind to provider function/class
141
- ```
142
-
143
- ### Provider Interface
144
-
145
- ```typescript
146
- interface IProvider<T> {
147
- value(container: Container): T;
148
- }
149
-
150
- // Example provider class
151
- class DatabaseProvider implements IProvider<DatabaseConnection> {
152
- value(container: Container): DatabaseConnection {
153
- const config = container.get<Config>({ key: 'config' });
154
- return new DatabaseConnection(config.dbUrl);
155
- }
156
- }
157
- ```
158
-
159
- ### BindingKeys Helper
160
-
161
- ```typescript
162
- import { BindingKeys } from '@venizia/ignis-inversion';
163
-
164
- const key = BindingKeys.build({ namespace: 'services', key: 'UserService' });
165
- // Result: 'services.UserService'
166
- ```
167
-
168
- ### Type Definitions
169
-
170
- | Type | Description |
171
- |------|-------------|
172
- | `TNullable<T>` | `T \| undefined \| null` |
173
- | `TClass<T>` | Class constructor type |
174
- | `TConstructor<T>` | Generic constructor |
175
- | `TBindingScope` | `'singleton' \| 'transient'` |
176
- | `IPropertyMetadata` | Property injection metadata |
177
- | `IInjectMetadata` | Constructor injection metadata |
178
-
179
-
180
- ## Injection Metadata
181
-
182
- ### Property Injection
183
-
184
- ```typescript
185
- interface IPropertyMetadata {
186
- bindingKey: string | symbol;
187
- isOptional?: boolean;
188
- [key: string]: any;
189
- }
190
- ```
191
-
192
- ### Constructor Injection
193
-
194
- ```typescript
195
- interface IInjectMetadata {
196
- key: string | symbol;
197
- index: number;
198
- isOptional?: boolean;
199
- }
200
- ```
201
-
202
-
203
- ## Project Structure
204
-
205
- ```
206
- packages/inversion/
207
- ├── package.json
208
- ├── tsconfig.json
209
- ├── src/
210
- │ ├── index.ts # Main exports + reflect-metadata import
211
- │ ├── container.ts # Container and Binding classes
212
- │ ├── registry.ts # MetadataRegistry class
213
- │ └── common/
214
- │ ├── index.ts # Common exports
215
- │ ├── types.ts # Types, interfaces, BindingScopes, etc.
216
- │ ├── keys.ts # MetadataKeys symbols
217
- │ ├── app-error.ts # ApplicationError class
218
- │ ├── base-helper.ts # BaseHelper base class
219
- │ └── logger.ts # Simple Logger class
220
- ├── scripts/
221
- │ ├── build.sh
222
- │ ├── clean.sh
223
- │ └── rebuild.sh
224
- └── dist/ # Built output
225
- ```
226
-
227
-
228
- ## Usage Examples
229
-
230
- ### Basic Container Usage
231
-
232
- ```typescript
233
- import { Container, BindingScopes } from '@venizia/ignis-inversion';
234
-
235
- // Create container
236
- const container = new Container();
237
-
238
- // Register services
239
- container.bind({ key: 'logger' }).toValue(console);
240
- container.bind({ key: 'services.UserService' })
241
- .toClass(UserService)
242
- .setScope(BindingScopes.SINGLETON);
243
-
244
- // Resolve
245
- const logger = container.get({ key: 'logger' });
246
- const userService = container.get({ key: 'services.UserService' });
247
- ```
248
-
249
- ### Using Providers
250
-
251
- ```typescript
252
- import { Container, IProvider } from '@venizia/ignis-inversion';
253
-
254
- // Function provider
255
- container.bind({ key: 'database' })
256
- .toProvider((container) => {
257
- return new Database(container.get({ key: 'config.dbUrl' }));
258
- });
259
-
260
- // Class provider
261
- class ConfigProvider implements IProvider<Config> {
262
- value(container: Container): Config {
263
- return {
264
- env: process.env.NODE_ENV,
265
- port: parseInt(process.env.PORT || '3000'),
266
- };
267
- }
268
- }
269
-
270
- container.bind({ key: 'config' }).toProvider(ConfigProvider);
271
- ```
272
-
273
- ### Tag-based Discovery
274
-
275
- ```typescript
276
- // Register with tags
277
- container.bind({ key: 'handlers.UserHandler' })
278
- .toClass(UserHandler)
279
- .setTags('handlers', 'user');
280
-
281
- container.bind({ key: 'handlers.OrderHandler' })
282
- .toClass(OrderHandler)
283
- .setTags('handlers', 'order');
284
-
285
- // Find all handlers
286
- const handlers = container.findByTag({ tag: 'handlers' });
287
- handlers.forEach(binding => {
288
- const handler = binding.getValue(container);
289
- // Use handler...
290
- });
291
- ```
292
-
293
- ### Optional Dependencies
294
-
295
- ```typescript
296
- // Get optional dependency (returns undefined if not bound)
297
- const cache = container.get<CacheService>({
298
- key: 'services.CacheService',
299
- isOptional: true
300
- });
301
-
302
- if (cache) {
303
- // Use cache service
304
- }
305
- ```
306
-
307
-
308
- ## Integration with Framework
309
-
310
- The core `@venizia/ignis` package extends this base inversion package with:
311
-
312
- - **ApplicationLogger integration**: Container with structured logging
313
- - **Framework-specific metadata**: Controllers, models, repositories, data sources
314
- - **Decorator implementations**: `@inject`, `@controller`, `@service`, etc.
315
-
316
- For framework usage, import from `@venizia/ignis`. For standalone DI container usage, import directly from `@venizia/ignis-inversion`.
317
-
318
- ```typescript
319
- // Standalone usage
320
- import { Container, Binding } from '@venizia/ignis-inversion';
321
-
322
- // Framework usage (includes logging and framework metadata)
323
- import { Container, inject, service } from '@venizia/ignis';
324
- ```
325
-
326
-
327
- ## Building the Package
328
-
329
- ```bash
330
- cd packages/inversion
331
-
332
- # Build
333
- bun run build
334
-
335
- # Clean
336
- bun run clean
337
-
338
- # Rebuild (clean + build)
339
- bun run rebuild
340
- ```