@venizia/ignis-docs 0.0.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 (123) hide show
  1. package/mcp-server/dist/common/config.d.ts +27 -0
  2. package/mcp-server/dist/common/config.d.ts.map +1 -0
  3. package/mcp-server/dist/common/config.js +27 -0
  4. package/mcp-server/dist/common/config.js.map +1 -0
  5. package/mcp-server/dist/common/index.d.ts +3 -0
  6. package/mcp-server/dist/common/index.d.ts.map +1 -0
  7. package/mcp-server/dist/common/index.js +19 -0
  8. package/mcp-server/dist/common/index.js.map +1 -0
  9. package/mcp-server/dist/common/paths.d.ts +13 -0
  10. package/mcp-server/dist/common/paths.d.ts.map +1 -0
  11. package/mcp-server/dist/common/paths.js +23 -0
  12. package/mcp-server/dist/common/paths.js.map +1 -0
  13. package/mcp-server/dist/helpers/docs.helper.d.ts +81 -0
  14. package/mcp-server/dist/helpers/docs.helper.d.ts.map +1 -0
  15. package/mcp-server/dist/helpers/docs.helper.js +171 -0
  16. package/mcp-server/dist/helpers/docs.helper.js.map +1 -0
  17. package/mcp-server/dist/helpers/index.d.ts +3 -0
  18. package/mcp-server/dist/helpers/index.d.ts.map +1 -0
  19. package/mcp-server/dist/helpers/index.js +19 -0
  20. package/mcp-server/dist/helpers/index.js.map +1 -0
  21. package/mcp-server/dist/helpers/logger.helper.d.ts +7 -0
  22. package/mcp-server/dist/helpers/logger.helper.d.ts.map +1 -0
  23. package/mcp-server/dist/helpers/logger.helper.js +22 -0
  24. package/mcp-server/dist/helpers/logger.helper.js.map +1 -0
  25. package/mcp-server/dist/index.d.ts +3 -0
  26. package/mcp-server/dist/index.d.ts.map +1 -0
  27. package/mcp-server/dist/index.js +62 -0
  28. package/mcp-server/dist/index.js.map +1 -0
  29. package/mcp-server/dist/tools/base.tool.d.ts +98 -0
  30. package/mcp-server/dist/tools/base.tool.d.ts.map +1 -0
  31. package/mcp-server/dist/tools/base.tool.js +47 -0
  32. package/mcp-server/dist/tools/base.tool.js.map +1 -0
  33. package/mcp-server/dist/tools/get-doc-content.tool.d.ts +30 -0
  34. package/mcp-server/dist/tools/get-doc-content.tool.d.ts.map +1 -0
  35. package/mcp-server/dist/tools/get-doc-content.tool.js +127 -0
  36. package/mcp-server/dist/tools/get-doc-content.tool.js.map +1 -0
  37. package/mcp-server/dist/tools/get-doc-metadata.tool.d.ts +40 -0
  38. package/mcp-server/dist/tools/get-doc-metadata.tool.d.ts.map +1 -0
  39. package/mcp-server/dist/tools/get-doc-metadata.tool.js +121 -0
  40. package/mcp-server/dist/tools/get-doc-metadata.tool.js.map +1 -0
  41. package/mcp-server/dist/tools/index.d.ts +8 -0
  42. package/mcp-server/dist/tools/index.d.ts.map +1 -0
  43. package/mcp-server/dist/tools/index.js +18 -0
  44. package/mcp-server/dist/tools/index.js.map +1 -0
  45. package/mcp-server/dist/tools/list-categories.tool.d.ts +20 -0
  46. package/mcp-server/dist/tools/list-categories.tool.d.ts.map +1 -0
  47. package/mcp-server/dist/tools/list-categories.tool.js +105 -0
  48. package/mcp-server/dist/tools/list-categories.tool.js.map +1 -0
  49. package/mcp-server/dist/tools/list-docs.tool.d.ts +32 -0
  50. package/mcp-server/dist/tools/list-docs.tool.d.ts.map +1 -0
  51. package/mcp-server/dist/tools/list-docs.tool.js +121 -0
  52. package/mcp-server/dist/tools/list-docs.tool.js.map +1 -0
  53. package/mcp-server/dist/tools/search-docs.tool.d.ts +32 -0
  54. package/mcp-server/dist/tools/search-docs.tool.d.ts.map +1 -0
  55. package/mcp-server/dist/tools/search-docs.tool.js +120 -0
  56. package/mcp-server/dist/tools/search-docs.tool.js.map +1 -0
  57. package/package.json +102 -0
  58. package/wiki/get-started/5-minute-quickstart.md +266 -0
  59. package/wiki/get-started/best-practices/api-usage-examples.md +222 -0
  60. package/wiki/get-started/best-practices/architectural-patterns.md +129 -0
  61. package/wiki/get-started/best-practices/code-style-standards.md +122 -0
  62. package/wiki/get-started/best-practices/common-pitfalls.md +136 -0
  63. package/wiki/get-started/best-practices/contribution-workflow.md +145 -0
  64. package/wiki/get-started/best-practices/deployment-strategies.md +121 -0
  65. package/wiki/get-started/best-practices/performance-optimization.md +88 -0
  66. package/wiki/get-started/best-practices/security-guidelines.md +97 -0
  67. package/wiki/get-started/best-practices/troubleshooting-tips.md +100 -0
  68. package/wiki/get-started/building-a-crud-api.md +717 -0
  69. package/wiki/get-started/core-concepts/application.md +168 -0
  70. package/wiki/get-started/core-concepts/components.md +96 -0
  71. package/wiki/get-started/core-concepts/controllers.md +441 -0
  72. package/wiki/get-started/core-concepts/dependency-injection.md +160 -0
  73. package/wiki/get-started/core-concepts/persistent.md +591 -0
  74. package/wiki/get-started/core-concepts/services.md +88 -0
  75. package/wiki/get-started/index.md +65 -0
  76. package/wiki/get-started/mcp-docs-server.md +840 -0
  77. package/wiki/get-started/philosophy.md +123 -0
  78. package/wiki/get-started/prerequisites.md +113 -0
  79. package/wiki/get-started/quickstart.md +382 -0
  80. package/wiki/index.md +48 -0
  81. package/wiki/references/base/application.md +67 -0
  82. package/wiki/references/base/components.md +80 -0
  83. package/wiki/references/base/controllers.md +361 -0
  84. package/wiki/references/base/datasources.md +105 -0
  85. package/wiki/references/base/dependency-injection.md +83 -0
  86. package/wiki/references/base/models.md +104 -0
  87. package/wiki/references/base/repositories.md +118 -0
  88. package/wiki/references/base/services.md +97 -0
  89. package/wiki/references/components/authentication.md +224 -0
  90. package/wiki/references/components/health-check.md +190 -0
  91. package/wiki/references/components/index.md +61 -0
  92. package/wiki/references/components/request-tracker.md +35 -0
  93. package/wiki/references/components/socket-io.md +127 -0
  94. package/wiki/references/components/swagger.md +175 -0
  95. package/wiki/references/helpers/cron.md +94 -0
  96. package/wiki/references/helpers/crypto.md +117 -0
  97. package/wiki/references/helpers/env.md +67 -0
  98. package/wiki/references/helpers/error.md +80 -0
  99. package/wiki/references/helpers/index.md +21 -0
  100. package/wiki/references/helpers/inversion.md +141 -0
  101. package/wiki/references/helpers/logger.md +98 -0
  102. package/wiki/references/helpers/network.md +143 -0
  103. package/wiki/references/helpers/queue.md +131 -0
  104. package/wiki/references/helpers/redis.md +121 -0
  105. package/wiki/references/helpers/socket-io.md +103 -0
  106. package/wiki/references/helpers/storage.md +130 -0
  107. package/wiki/references/helpers/testing.md +115 -0
  108. package/wiki/references/helpers/worker-thread.md +162 -0
  109. package/wiki/references/src-details/core.md +249 -0
  110. package/wiki/references/src-details/dev-configs.md +302 -0
  111. package/wiki/references/src-details/docs.md +61 -0
  112. package/wiki/references/src-details/helpers.md +211 -0
  113. package/wiki/references/src-details/inversion.md +345 -0
  114. package/wiki/references/src-details/mcp-server.md +726 -0
  115. package/wiki/references/utilities/crypto.md +39 -0
  116. package/wiki/references/utilities/date.md +72 -0
  117. package/wiki/references/utilities/index.md +12 -0
  118. package/wiki/references/utilities/module.md +40 -0
  119. package/wiki/references/utilities/parse.md +68 -0
  120. package/wiki/references/utilities/performance.md +64 -0
  121. package/wiki/references/utilities/promise.md +83 -0
  122. package/wiki/references/utilities/request.md +66 -0
  123. package/wiki/references/utilities/schema.md +88 -0
@@ -0,0 +1,345 @@
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
+
181
+ ## Injection Metadata
182
+
183
+ ### Property Injection
184
+
185
+ ```typescript
186
+ interface IPropertyMetadata {
187
+ bindingKey: string | symbol;
188
+ isOptional?: boolean;
189
+ [key: string]: any;
190
+ }
191
+ ```
192
+
193
+ ### Constructor Injection
194
+
195
+ ```typescript
196
+ interface IInjectMetadata {
197
+ key: string | symbol;
198
+ index: number;
199
+ isOptional?: boolean;
200
+ }
201
+ ```
202
+
203
+ ---
204
+
205
+ ## Project Structure
206
+
207
+ ```
208
+ packages/inversion/
209
+ ├── package.json
210
+ ├── tsconfig.json
211
+ ├── src/
212
+ │ ├── index.ts # Main exports + reflect-metadata import
213
+ │ ├── container.ts # Container and Binding classes
214
+ │ ├── registry.ts # MetadataRegistry class
215
+ │ └── common/
216
+ │ ├── index.ts # Common exports
217
+ │ ├── types.ts # Types, interfaces, BindingScopes, etc.
218
+ │ ├── keys.ts # MetadataKeys symbols
219
+ │ ├── app-error.ts # ApplicationError class
220
+ │ ├── base-helper.ts # BaseHelper base class
221
+ │ └── logger.ts # Simple Logger class
222
+ ├── scripts/
223
+ │ ├── build.sh
224
+ │ ├── clean.sh
225
+ │ └── rebuild.sh
226
+ └── dist/ # Built output
227
+ ```
228
+
229
+ ---
230
+
231
+ ## Usage Examples
232
+
233
+ ### Basic Container Usage
234
+
235
+ ```typescript
236
+ import { Container, BindingScopes } from '@venizia/ignis-inversion';
237
+
238
+ // Create container
239
+ const container = new Container();
240
+
241
+ // Register services
242
+ container.bind({ key: 'logger' }).toValue(console);
243
+ container.bind({ key: 'services.UserService' })
244
+ .toClass(UserService)
245
+ .setScope(BindingScopes.SINGLETON);
246
+
247
+ // Resolve
248
+ const logger = container.get({ key: 'logger' });
249
+ const userService = container.get({ key: 'services.UserService' });
250
+ ```
251
+
252
+ ### Using Providers
253
+
254
+ ```typescript
255
+ import { Container, IProvider } from '@venizia/ignis-inversion';
256
+
257
+ // Function provider
258
+ container.bind({ key: 'database' })
259
+ .toProvider((container) => {
260
+ return new Database(container.get({ key: 'config.dbUrl' }));
261
+ });
262
+
263
+ // Class provider
264
+ class ConfigProvider implements IProvider<Config> {
265
+ value(container: Container): Config {
266
+ return {
267
+ env: process.env.NODE_ENV,
268
+ port: parseInt(process.env.PORT || '3000'),
269
+ };
270
+ }
271
+ }
272
+
273
+ container.bind({ key: 'config' }).toProvider(ConfigProvider);
274
+ ```
275
+
276
+ ### Tag-based Discovery
277
+
278
+ ```typescript
279
+ // Register with tags
280
+ container.bind({ key: 'handlers.UserHandler' })
281
+ .toClass(UserHandler)
282
+ .setTags('handlers', 'user');
283
+
284
+ container.bind({ key: 'handlers.OrderHandler' })
285
+ .toClass(OrderHandler)
286
+ .setTags('handlers', 'order');
287
+
288
+ // Find all handlers
289
+ const handlers = container.findByTag({ tag: 'handlers' });
290
+ handlers.forEach(binding => {
291
+ const handler = binding.getValue(container);
292
+ // Use handler...
293
+ });
294
+ ```
295
+
296
+ ### Optional Dependencies
297
+
298
+ ```typescript
299
+ // Get optional dependency (returns undefined if not bound)
300
+ const cache = container.get<CacheService>({
301
+ key: 'services.CacheService',
302
+ isOptional: true
303
+ });
304
+
305
+ if (cache) {
306
+ // Use cache service
307
+ }
308
+ ```
309
+
310
+ ---
311
+
312
+ ## Relationship with @venizia/ignis-helpers
313
+
314
+ The `@venizia/ignis-helpers` package extends this base inversion package with:
315
+
316
+ - **ApplicationLogger integration**: Container with structured logging
317
+ - **Framework-specific metadata**: Controllers, models, repositories, data sources
318
+ - **Decorator implementations**: `@inject`, `@controller`, `@service`, etc.
319
+
320
+ For framework usage, import from `@venizia/ignis-helpers` or `@venizia/ignis`. For standalone DI container usage, import directly from `@venizia/ignis-inversion`.
321
+
322
+ ```typescript
323
+ // Standalone usage
324
+ import { Container, Binding } from '@venizia/ignis-inversion';
325
+
326
+ // Framework usage (includes logging and framework metadata)
327
+ import { Container, inject, service } from '@venizia/ignis-helpers';
328
+ ```
329
+
330
+ ---
331
+
332
+ ## Building the Package
333
+
334
+ ```bash
335
+ cd packages/inversion
336
+
337
+ # Build
338
+ bun run build
339
+
340
+ # Clean
341
+ bun run clean
342
+
343
+ # Rebuild (clean + build)
344
+ bun run rebuild
345
+ ```