@venizia/ignis-docs 0.0.1-4 → 0.0.1-5

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 (100) hide show
  1. package/mcp-server/dist/common/config.d.ts +58 -21
  2. package/mcp-server/dist/common/config.d.ts.map +1 -1
  3. package/mcp-server/dist/common/config.js +67 -12
  4. package/mcp-server/dist/common/config.js.map +1 -1
  5. package/mcp-server/dist/helpers/docs.helper.d.ts +5 -5
  6. package/mcp-server/dist/helpers/docs.helper.d.ts.map +1 -1
  7. package/mcp-server/dist/helpers/docs.helper.js +31 -27
  8. package/mcp-server/dist/helpers/docs.helper.js.map +1 -1
  9. package/mcp-server/dist/helpers/github.helper.d.ts +37 -0
  10. package/mcp-server/dist/helpers/github.helper.d.ts.map +1 -0
  11. package/mcp-server/dist/helpers/github.helper.js +100 -0
  12. package/mcp-server/dist/helpers/github.helper.js.map +1 -0
  13. package/mcp-server/dist/helpers/index.d.ts +1 -0
  14. package/mcp-server/dist/helpers/index.d.ts.map +1 -1
  15. package/mcp-server/dist/helpers/index.js +1 -0
  16. package/mcp-server/dist/helpers/index.js.map +1 -1
  17. package/mcp-server/dist/index.js +60 -32
  18. package/mcp-server/dist/index.js.map +1 -1
  19. package/mcp-server/dist/tools/base.tool.d.ts +6 -10
  20. package/mcp-server/dist/tools/base.tool.d.ts.map +1 -1
  21. package/mcp-server/dist/tools/base.tool.js +3 -5
  22. package/mcp-server/dist/tools/base.tool.js.map +1 -1
  23. package/mcp-server/dist/tools/{get-doc-content.tool.d.ts → docs/get-document-content.tool.d.ts} +4 -4
  24. package/mcp-server/dist/tools/docs/get-document-content.tool.d.ts.map +1 -0
  25. package/mcp-server/dist/tools/{get-doc-content.tool.js → docs/get-document-content.tool.js} +12 -11
  26. package/mcp-server/dist/tools/docs/get-document-content.tool.js.map +1 -0
  27. package/mcp-server/dist/tools/{get-doc-metadata.tool.d.ts → docs/get-document-metadata.tool.d.ts} +4 -4
  28. package/mcp-server/dist/tools/docs/get-document-metadata.tool.d.ts.map +1 -0
  29. package/mcp-server/dist/tools/{get-doc-metadata.tool.js → docs/get-document-metadata.tool.js} +11 -10
  30. package/mcp-server/dist/tools/docs/get-document-metadata.tool.js.map +1 -0
  31. package/mcp-server/dist/tools/docs/get-package-overview.tool.d.ts +50 -0
  32. package/mcp-server/dist/tools/docs/get-package-overview.tool.d.ts.map +1 -0
  33. package/mcp-server/dist/tools/docs/get-package-overview.tool.js +221 -0
  34. package/mcp-server/dist/tools/docs/get-package-overview.tool.js.map +1 -0
  35. package/mcp-server/dist/tools/docs/index.d.ts +7 -0
  36. package/mcp-server/dist/tools/docs/index.d.ts.map +1 -0
  37. package/mcp-server/dist/tools/docs/index.js +23 -0
  38. package/mcp-server/dist/tools/docs/index.js.map +1 -0
  39. package/mcp-server/dist/tools/{list-categories.tool.d.ts → docs/list-categories.tool.d.ts} +2 -2
  40. package/mcp-server/dist/tools/docs/list-categories.tool.d.ts.map +1 -0
  41. package/mcp-server/dist/tools/{list-categories.tool.js → docs/list-categories.tool.js} +7 -6
  42. package/mcp-server/dist/tools/docs/list-categories.tool.js.map +1 -0
  43. package/mcp-server/dist/tools/{list-docs.tool.d.ts → docs/list-documents.tool.d.ts} +4 -4
  44. package/mcp-server/dist/tools/docs/list-documents.tool.d.ts.map +1 -0
  45. package/mcp-server/dist/tools/{list-docs.tool.js → docs/list-documents.tool.js} +10 -9
  46. package/mcp-server/dist/tools/docs/list-documents.tool.js.map +1 -0
  47. package/mcp-server/dist/tools/{search-docs.tool.d.ts → docs/search-documents.tool.d.ts} +4 -4
  48. package/mcp-server/dist/tools/docs/search-documents.tool.d.ts.map +1 -0
  49. package/mcp-server/dist/tools/{search-docs.tool.js → docs/search-documents.tool.js} +19 -18
  50. package/mcp-server/dist/tools/docs/search-documents.tool.js.map +1 -0
  51. package/mcp-server/dist/tools/github/index.d.ts +5 -0
  52. package/mcp-server/dist/tools/github/index.d.ts.map +1 -0
  53. package/mcp-server/dist/tools/github/index.js +21 -0
  54. package/mcp-server/dist/tools/github/index.js.map +1 -0
  55. package/mcp-server/dist/tools/github/list-project-files.tool.d.ts +28 -0
  56. package/mcp-server/dist/tools/github/list-project-files.tool.d.ts.map +1 -0
  57. package/mcp-server/dist/tools/github/list-project-files.tool.js +98 -0
  58. package/mcp-server/dist/tools/github/list-project-files.tool.js.map +1 -0
  59. package/mcp-server/dist/tools/github/search-code.tool.d.ts +42 -0
  60. package/mcp-server/dist/tools/github/search-code.tool.d.ts.map +1 -0
  61. package/mcp-server/dist/tools/github/search-code.tool.js +194 -0
  62. package/mcp-server/dist/tools/github/search-code.tool.js.map +1 -0
  63. package/mcp-server/dist/tools/github/verify-dependencies.tool.d.ts +55 -0
  64. package/mcp-server/dist/tools/github/verify-dependencies.tool.d.ts.map +1 -0
  65. package/mcp-server/dist/tools/github/verify-dependencies.tool.js +167 -0
  66. package/mcp-server/dist/tools/github/verify-dependencies.tool.js.map +1 -0
  67. package/mcp-server/dist/tools/github/view-source-file.tool.d.ts +26 -0
  68. package/mcp-server/dist/tools/github/view-source-file.tool.d.ts.map +1 -0
  69. package/mcp-server/dist/tools/github/view-source-file.tool.js +91 -0
  70. package/mcp-server/dist/tools/github/view-source-file.tool.js.map +1 -0
  71. package/mcp-server/dist/tools/index.d.ts +3 -7
  72. package/mcp-server/dist/tools/index.d.ts.map +1 -1
  73. package/mcp-server/dist/tools/index.js +17 -13
  74. package/mcp-server/dist/tools/index.js.map +1 -1
  75. package/package.json +22 -4
  76. package/wiki/get-started/best-practices/api-usage-examples.md +42 -0
  77. package/wiki/get-started/best-practices/architectural-patterns.md +42 -1
  78. package/wiki/get-started/best-practices/code-style-standards.md +41 -0
  79. package/wiki/get-started/best-practices/contribution-workflow.md +40 -6
  80. package/wiki/get-started/best-practices/data-modeling.md +126 -0
  81. package/wiki/get-started/core-concepts/dependency-injection.md +13 -1
  82. package/wiki/get-started/mcp-docs-server.md +130 -32
  83. package/wiki/get-started/philosophy.md +198 -25
  84. package/wiki/references/base/application.md +5 -5
  85. package/wiki/references/base/controllers.md +3 -1
  86. package/wiki/references/base/dependency-injection.md +6 -5
  87. package/wiki/references/helpers/inversion.md +21 -11
  88. package/wiki/references/src-details/core.md +15 -1
  89. package/wiki/references/src-details/docs.md +19 -9
  90. package/wiki/references/src-details/mcp-server.md +185 -234
  91. package/mcp-server/dist/tools/get-doc-content.tool.d.ts.map +0 -1
  92. package/mcp-server/dist/tools/get-doc-content.tool.js.map +0 -1
  93. package/mcp-server/dist/tools/get-doc-metadata.tool.d.ts.map +0 -1
  94. package/mcp-server/dist/tools/get-doc-metadata.tool.js.map +0 -1
  95. package/mcp-server/dist/tools/list-categories.tool.d.ts.map +0 -1
  96. package/mcp-server/dist/tools/list-categories.tool.js.map +0 -1
  97. package/mcp-server/dist/tools/list-docs.tool.d.ts.map +0 -1
  98. package/mcp-server/dist/tools/list-docs.tool.js.map +0 -1
  99. package/mcp-server/dist/tools/search-docs.tool.d.ts.map +0 -1
  100. package/mcp-server/dist/tools/search-docs.tool.js.map +0 -1
@@ -2,28 +2,107 @@
2
2
 
3
3
  Ignis combines the structured, enterprise-grade development experience of **LoopBack 4** with the speed and simplicity of **Hono**.
4
4
 
5
- ## The Problem
5
+ ## The Landscape
6
6
 
7
- When building REST APIs with Node.js/Bun, developers face a choice:
7
+ When building REST APIs with Node.js/Bun, developers choose from three categories of frameworks, each with genuine strengths:
8
8
 
9
- | Aspect | Minimal Frameworks | Enterprise Frameworks | **Ignis** |
10
- |--------|-------------------|----------------------|-----------|
11
- | **Examples** | Express, Hono, Fastify | NestJS, LoopBack | **Ignis** |
12
- | **Performance** | ⚡ Very fast | 🐌 Slower | ⚡ Very fast (Hono) |
13
- | **Architecture** | ❌ No structure | ✅ Structured | ✅ Structured |
14
- | **Learning Curve** | ✅ Easy | ❌ Steep | ✅ Gradual |
15
- | **Dependency Injection** | ❌ Manual | ✅ Built-in | ✅ Built-in |
16
- | **Boilerplate** | ✅ Minimal | ❌ Heavy | ✅ Moderate |
17
- | **Best For** | Prototypes, tiny APIs | Large enterprise apps | Growing APIs, teams |
9
+ ### Framework Categories
18
10
 
19
- ### Ignis: The Middle Ground
11
+ | Category | Examples | Philosophy |
12
+ |----------|----------|------------|
13
+ | **Minimal** | Express, Hono, Fastify, Koa | Freedom, speed, flexibility |
14
+ | **Enterprise** | NestJS, LoopBack 4, AdonisJS | Structure, patterns, conventions |
15
+ | **Balanced** | Ignis, Ts.ED | Structure with lighter footprint |
20
16
 
21
- Ignis provides the architectural benefits of enterprise frameworks while maintaining Hono's speed:
17
+ ## Honest Comparison
22
18
 
23
- - **Enterprise patterns** (DI, layered architecture) without the bloat
24
- - ✅ **Hono's performance** - one of the fastest frameworks
25
- - **Gradual complexity** - start simple, add structure as you grow
26
- - ✅ **TypeScript-first** with excellent type safety
19
+ ### Performance & Runtime
20
+
21
+ | Framework | Requests/sec | Startup Time | Memory | Multi-Runtime |
22
+ |-----------|-------------|--------------|--------|---------------|
23
+ | **Hono** | ~150k | ~10ms | ~20MB | ✅ Bun, Node, Deno, CF Workers |
24
+ | **Fastify** | ~80k | ~50ms | ~40MB | Node only |
25
+ | **Express** | ~15k | ~100ms | ~50MB | Node only |
26
+ | **NestJS** | ~25k | ~500ms | ~100MB | Node (Bun experimental) |
27
+ | **LoopBack 4** | ~20k | ~800ms | ~120MB | Node only |
28
+ | **Ignis** | ~140k | ~30ms | ~30MB | ✅ Bun, Node |
29
+
30
+ *Benchmarks are approximate and vary by use case.*
31
+
32
+ ### Developer Experience
33
+
34
+ | Aspect | Minimal (Hono/Express) | Enterprise (NestJS/LoopBack) | Ignis |
35
+ |--------|------------------------|------------------------------|-------|
36
+ | **Setup Time** | 5 minutes | 30+ minutes | 10 minutes |
37
+ | **Learning Curve** | Low | High | Medium |
38
+ | **Boilerplate** | Minimal | Heavy | Moderate |
39
+ | **Type Safety** | Manual | Excellent | Excellent |
40
+ | **IDE Support** | Basic | Excellent | Good |
41
+ | **Documentation** | Good | Excellent | Growing |
42
+
43
+ ### Architecture & Patterns
44
+
45
+ | Pattern | Minimal | Enterprise | Ignis |
46
+ |---------|---------|------------|-------|
47
+ | **Dependency Injection** | ❌ Manual/3rd party | ✅ Built-in (complex) | ✅ Built-in (simple) |
48
+ | **Layered Architecture** | ❌ DIY | ✅ Enforced | ✅ Guided |
49
+ | **Repository Pattern** | ❌ DIY | ✅ Built-in | ✅ Built-in |
50
+ | **Validation** | ❌ 3rd party | ✅ Built-in | ✅ Built-in (Zod) |
51
+ | **OpenAPI/Swagger** | ❌ 3rd party | ✅ Built-in | ✅ Built-in |
52
+ | **Authentication** | ❌ DIY | ✅ Modules available | ✅ Built-in component |
53
+
54
+ ### Ecosystem & Maturity
55
+
56
+ | Aspect | Minimal (Hono) | Enterprise (NestJS) | Ignis |
57
+ |--------|----------------|---------------------|-------|
58
+ | **Community Size** | Growing fast | Very large | Small |
59
+ | **npm Downloads** | ~500k/week | ~3M/week | New |
60
+ | **Stack Overflow** | Limited | Extensive | Limited |
61
+ | **Third-party Modules** | Middleware-based | Rich ecosystem | Growing |
62
+ | **Production Battle-tested** | Yes | Yes | Emerging |
63
+ | **Corporate Backing** | Cloudflare | Trilon | Independent |
64
+
65
+ ### Flexibility vs Convention
66
+
67
+ | Aspect | Minimal | Enterprise | Ignis |
68
+ |--------|---------|------------|-------|
69
+ | **Project Structure** | Total freedom | Strict conventions | Guided conventions |
70
+ | **ORM Choice** | Any | TypeORM/Prisma preferred | Drizzle (flexible) |
71
+ | **Testing Approach** | Any | Jest recommended | Any |
72
+ | **Middleware System** | Simple | Complex interceptors | Hono middleware |
73
+ | **Customization** | Unlimited | Plugin-based | Component-based |
74
+
75
+ ## The Middle Ground: Where Ignis Fits
76
+
77
+ ### What Each Approach Excels At
78
+
79
+ **Minimal Frameworks (Hono, Express, Fastify):**
80
+ - ✅ Maximum performance
81
+ - ✅ Complete freedom in architecture
82
+ - ✅ Fastest prototyping
83
+ - ✅ Smallest bundle size
84
+ - ✅ Edge/serverless deployments
85
+ - ⚠️ Architecture decisions left to developer
86
+ - ⚠️ Patterns must be implemented manually
87
+
88
+ **Enterprise Frameworks (NestJS, LoopBack):**
89
+ - ✅ Battle-tested patterns
90
+ - ✅ Comprehensive documentation
91
+ - ✅ Large community & ecosystem
92
+ - ✅ Excellent for large teams
93
+ - ✅ Strong conventions prevent chaos
94
+ - ⚠️ Higher resource consumption
95
+ - ⚠️ Steeper learning curve
96
+ - ⚠️ More boilerplate
97
+
98
+ **Ignis (The Middle Ground):**
99
+ - ✅ Enterprise patterns without the weight
100
+ - ✅ Hono's performance foundation
101
+ - ✅ Gradual complexity adoption
102
+ - ✅ TypeScript-first with Zod validation
103
+ - ⚠️ Smaller community (new framework)
104
+ - ⚠️ Less documentation than mature frameworks
105
+ - ⚠️ Fewer third-party integrations
27
106
 
28
107
  ## Inspired By The Best
29
108
 
@@ -102,17 +181,111 @@ Ignis = LoopBack patterns + Hono performance:
102
181
  - Type-safe database operations
103
182
  - Automatic validation
104
183
 
184
+ ## Choose the Right Tool
185
+
186
+ ### Use Hono/Fastify/Express When:
187
+
188
+ | Scenario | Why It's Better |
189
+ |----------|-----------------|
190
+ | Building a simple webhook handler | No structure overhead needed |
191
+ | Edge/serverless functions | Minimal cold start, tiny bundle |
192
+ | Rapid prototyping | Get something running in minutes |
193
+ | Microservices with 1-5 endpoints | Structure adds unnecessary complexity |
194
+ | You want maximum control | No conventions to follow |
195
+ | Learning web development | Simpler mental model |
196
+
197
+ ### Use NestJS/LoopBack When:
198
+
199
+ | Scenario | Why It's Better |
200
+ |----------|-----------------|
201
+ | Large team (10+ developers) | Strong conventions prevent chaos |
202
+ | Enterprise with strict standards | Mature, battle-tested, auditable |
203
+ | Need extensive ecosystem | Many official and community modules |
204
+ | Complex microservices architecture | Built-in support for messaging, CQRS |
205
+ | Hiring developers easily | Large talent pool familiar with it |
206
+ | Long-term support is critical | Corporate backing, LTS versions |
207
+
208
+ ### Use Ignis When:
209
+
210
+ | Scenario | Why It's Better |
211
+ |----------|-----------------|
212
+ | Medium-sized API (10-100 endpoints) | Right balance of structure and speed |
213
+ | Small team wanting patterns | DI without enterprise complexity |
214
+ | Performance is critical | Hono's speed with structure |
215
+ | Coming from LoopBack/NestJS | Familiar patterns, lighter weight |
216
+ | Bun-first development | Native Bun support |
217
+ | Growing project | Start simple, add complexity gradually |
218
+
105
219
  ## The Trade-off
106
220
 
107
- | You Gain | You Give Up |
108
- |----------|-------------|
109
- | Clear architecture | ~100 lines setup boilerplate |
110
- | Built-in DI, validation, docs | Learning curve for patterns |
111
- | Faster for medium/large projects | Slightly more abstraction than Hono |
112
- | Easier testing | Initial time investment |
113
- | Team scalability | Convention over total freedom |
221
+ Every choice has trade-offs. Here's an honest look:
114
222
 
115
- **Bottom line:** If you're building more than a simple API, the structure pays off in maintainability and productivity.
223
+ ### What You Gain with Ignis
224
+
225
+ | Benefit | Compared To |
226
+ |---------|-------------|
227
+ | ~5x faster than NestJS | Enterprise frameworks |
228
+ | Built-in DI, validation, OpenAPI | Minimal frameworks |
229
+ | Structured codebase | DIY architecture |
230
+ | Easier testing with DI | Manual mocking |
231
+ | Team-friendly patterns | Individual coding styles |
232
+
233
+ ### What You Give Up with Ignis
234
+
235
+ | Trade-off | Compared To |
236
+ |-----------|-------------|
237
+ | ~10% slower than raw Hono | Minimal frameworks |
238
+ | Smaller community | NestJS/Express |
239
+ | Less documentation | Mature frameworks |
240
+ | Learning curve for patterns | No-structure approach |
241
+ | Convention requirements | Total freedom |
242
+
243
+ ### Honest Assessment
244
+
245
+ | Aspect | Ignis Reality |
246
+ |--------|---------------|
247
+ | **Maturity** | New framework, evolving API |
248
+ | **Community** | Small but growing |
249
+ | **Documentation** | Good but not comprehensive |
250
+ | **Production Use** | Early adopters only |
251
+ | **Breaking Changes** | Possible before v1.0 |
252
+ | **Support** | Community-driven |
253
+
254
+ **Bottom line:** Ignis is ideal for developers who want enterprise patterns without enterprise overhead. If you need battle-tested stability and extensive community support, consider NestJS. If you need maximum simplicity, stick with Hono.
255
+
256
+ ## Migration Paths
257
+
258
+ ### From Hono to Ignis
259
+
260
+ If your Hono project grows complex:
261
+
262
+ ```
263
+ 1. Add Ignis as dependency
264
+ 2. Wrap existing Hono app with Ignis Application
265
+ 3. Gradually introduce DI for new features
266
+ 4. Migrate routes to controllers over time
267
+ ```
268
+
269
+ ### From NestJS to Ignis
270
+
271
+ If you want better performance:
272
+
273
+ ```
274
+ 1. Controllers → Ignis Controllers (similar decorators)
275
+ 2. Services → Ignis Services (same pattern)
276
+ 3. Repositories → Ignis Repositories (Drizzle instead of TypeORM)
277
+ 4. Modules → Ignis Components (simpler structure)
278
+ ```
279
+
280
+ ### From Ignis to NestJS
281
+
282
+ If you outgrow Ignis:
283
+
284
+ ```
285
+ 1. Patterns are similar - migration is straightforward
286
+ 2. Main changes: ORM, module system, interceptors
287
+ 3. DI concepts transfer directly
288
+ ```
116
289
 
117
290
  ## Next Steps
118
291
 
@@ -37,11 +37,11 @@ Extends `AbstractApplication` with concrete lifecycle implementations and resour
37
37
 
38
38
  | Method | DI Binding Key Convention |
39
39
  | :--- | :--- |
40
- | `component(MyComponent)` | `components.MyComponent` |
41
- | `controller(MyController)` | `controllers.MyController` |
42
- | `service(MyService)` | `services.MyService` |
43
- | `repository(MyRepository)`| `repositories.MyRepository` |
44
- | `dataSource(MyDataSource)`| `datasources.MyDataSource` |
40
+ | `component(MyComponent, opts?)` | `components.MyComponent` (default) or custom key via `opts.binding` |
41
+ | `controller(MyController, opts?)` | `controllers.MyController` (default) or custom key via `opts.binding` |
42
+ | `service(MyService, opts?)` | `services.MyService` (default) or custom key via `opts.binding` |
43
+ | `repository(MyRepository, opts?)`| `repositories.MyRepository` (default) or custom key via `opts.binding` |
44
+ | `dataSource(MyDataSource, opts?)`| `datasources.MyDataSource` (default) or custom key via `opts.binding` |
45
45
 
46
46
  ### `initialize()` Method Flow
47
47
 
@@ -287,7 +287,9 @@ The `ControllerFactory` provides a static method `defineCrudController` to quick
287
287
 
288
288
  ### `static defineCrudController<EntitySchema>(opts: ICrudControllerOptions<EntitySchema>)`
289
289
 
290
- This factory method returns a `BaseController` class that is already set up with the following standard CRUD endpoints:
290
+ This factory method returns a `BaseController` class that is already set up with the following standard CRUD endpoints.
291
+
292
+ **Note:** The returned class is dynamically named using `controller.name` from the options. This ensures that when registered with `app.controller()`, the class has a proper name for binding keys and debugging (e.g., `ConfigurationController` instead of an anonymous class).
291
293
 
292
294
  | Name | Method | Path | Description |
293
295
  | :--- | :--- | :--- | :--- |
@@ -3,9 +3,10 @@
3
3
  Technical reference for the DI system in Ignis - managing resource lifecycles and dependency resolution.
4
4
 
5
5
  **Files:**
6
- - `packages/core/src/helpers/inversion/container.ts`
7
- - `packages/core/src/base/metadata/injectors.ts`
8
- - `packages/helpers/src/helpers/inversion/registry.ts`
6
+ - `packages/inversion/src/container.ts` (base Container and Binding classes)
7
+ - `packages/helpers/src/helpers/inversion/container.ts` (extended Container with ApplicationLogger)
8
+ - `packages/core/src/base/metadata/injectors.ts` (@inject, @injectable decorators)
9
+ - `packages/helpers/src/helpers/inversion/registry.ts` (MetadataRegistry)
9
10
 
10
11
  ## Quick Reference
11
12
 
@@ -20,7 +21,7 @@ Technical reference for the DI system in Ignis - managing resource lifecycles an
20
21
 
21
22
  Heart of the DI system - registry managing all application resources.
22
23
 
23
- **File:** `packages/core/src/helpers/inversion/container.ts`
24
+ **File:** `packages/inversion/src/container.ts`
24
25
 
25
26
  ### Key Methods
26
27
 
@@ -35,7 +36,7 @@ Heart of the DI system - registry managing all application resources.
35
36
 
36
37
  A `Binding` represents a single registered dependency in the container. It's a fluent API that allows you to specify *how* a dependency should be created and managed.
37
38
 
38
- - **File:** `packages/core/src/helpers/inversion/container.ts`
39
+ - **File:** `packages/inversion/src/container.ts`
39
40
 
40
41
  ### Configuration Methods
41
42
 
@@ -15,14 +15,24 @@ Core DI system enabling loosely coupled, testable, and extensible code.
15
15
 
16
16
  ### Binding Methods
17
17
 
18
- | Method | Purpose | Example |
19
- |--------|---------|---------|
20
- | `app.service(MyService)` | Bind service | Key: `services.MyService` |
21
- | `app.controller(MyController)` | Bind controller | Key: `controllers.MyController` |
22
- | `app.repository(MyRepo)` | Bind repository | Key: `repositories.MyRepo` |
18
+ | Method | Purpose | Default Key |
19
+ |--------|---------|-------------|
20
+ | `app.service(MyService, opts?)` | Bind service | `services.MyService` |
21
+ | `app.controller(MyController, opts?)` | Bind controller | `controllers.MyController` |
22
+ | `app.repository(MyRepo, opts?)` | Bind repository | `repositories.MyRepo` |
23
+ | `app.component(MyComponent, opts?)` | Bind component | `components.MyComponent` |
24
+ | `app.dataSource(MyDS, opts?)` | Bind datasource | `datasources.MyDS` |
23
25
  | `bind().toClass()` | Custom class binding | `bind({ key: 'MyClass' }).toClass(MyClass)` |
24
26
  | `bind().toValue()` | Bind constant value | `bind({ key: 'API_KEY' }).toValue('secret')` |
25
27
 
28
+ All registration methods accept an optional `opts` parameter to customize the binding key:
29
+
30
+ ```typescript
31
+ app.controller(UserController, {
32
+ binding: { namespace: 'controllers', key: 'CustomUserController' }
33
+ });
34
+ ```
35
+
26
36
  ### Binding Scopes
27
37
 
28
38
  | Scope | Behavior |
@@ -41,13 +51,13 @@ Core DI system enabling loosely coupled, testable, and extensible code.
41
51
 
42
52
  Before a dependency can be injected, it must be bound to the container. The `Application` class provides helper methods for binding common resource types:
43
53
 
44
- - `app.component(MyComponent)`
45
- - `app.controller(MyController)`
46
- - `app.service(MyService)`
47
- - `app.repository(MyRepository)`
48
- - `app.dataSource(MyDataSource)`
54
+ - `app.component(MyComponent, opts?)`
55
+ - `app.controller(MyController, opts?)`
56
+ - `app.service(MyService, opts?)`
57
+ - `app.repository(MyRepository, opts?)`
58
+ - `app.dataSource(MyDataSource, opts?)`
49
59
 
50
- These methods automatically create a binding for the class with a conventional key (e.g., `services.MyService`).
60
+ These methods automatically create a binding for the class with a conventional key (e.g., `services.MyService`). Use the optional `opts` parameter to customize binding keys when needed.
51
61
 
52
62
  ### Advanced Binding
53
63
 
@@ -117,7 +117,21 @@ Contains mixins to extend the functionality of core classes, particularly `Abstr
117
117
  | `controller.mixin.ts` | Adds `controller()` and `registerControllers()` methods. |
118
118
  | `repository.mixin.ts` | Adds `dataSource()` and `repository()` methods. |
119
119
  | `service.mixin.ts` | Adds `service()` method. |
120
- | `types.ts` | Defines interfaces for these mixins. |
120
+ | `types.ts` | Defines interfaces and types (`TMixinOpts`, `IComponentMixin`, `IControllerMixin`, etc.). |
121
+
122
+ All registration methods accept an optional `opts?: TMixinOpts` parameter for custom binding configuration:
123
+
124
+ ```typescript
125
+ type TMixinOpts<Args extends AnyObject = any> = {
126
+ binding: { namespace: string; key: string };
127
+ args?: Args;
128
+ };
129
+
130
+ // Example: Custom binding key
131
+ this.controller(UserController, {
132
+ binding: { namespace: 'controllers', key: 'CustomUserController' }
133
+ });
134
+ ```
121
135
 
122
136
  #### `base/models`
123
137
 
@@ -23,24 +23,34 @@ Documentation package housing guides, references, and MCP server for the Ignis f
23
23
 
24
24
  ## Project Structure Overview
25
25
 
26
- Top-level breakdown of the `@packages/docs/` directory:
26
+ Top-level breakdown of the `packages/docs/` directory:
27
27
 
28
- | Folder | Purpose |
29
- | :--------- | :--------------------------------------------------------------------------------- |
30
- | **`mcp`** | Contains the Model Context Protocol (MCP) server implementation for documentation. |
31
- | **`wiki`** | The main documentation content, built using VitePress. |
28
+ | Folder | Purpose |
29
+ | :--------------- | :--------------------------------------------------------------------------------- |
30
+ | **`mcp-server`** | Contains the Model Context Protocol (MCP) server implementation for documentation and code search. |
31
+ | **`wiki`** | The main documentation content, built using VitePress. |
32
32
 
33
33
  ---
34
34
 
35
35
  ## Detailed Sections
36
36
 
37
- ### `mcp`
37
+ ### `mcp-server`
38
38
 
39
- This directory contains the implementation of a Model Context Protocol (MCP) server, which allows external tools to discover and read documentation resources.
39
+ This directory contains the implementation of a Model Context Protocol (MCP) server, which allows external tools (AI assistants) to discover and read documentation resources, as well as search the source code.
40
40
 
41
- | File/Folder | Purpose/Key Details |
42
- | :---------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
41
+ | File/Folder | Purpose/Key Details |
42
+ | :---------- | :------------------ |
43
+ | `index.ts` | Server entry point, tool registration, and CLI argument parsing |
44
+ | `common/config.ts` | `MCPConfigs` class with server, GitHub, search, and Fuse.js settings |
45
+ | `common/paths.ts` | Path resolution for wiki directory |
46
+ | `helpers/docs.helper.ts` | `DocsHelper` for documentation loading, caching, and Fuse.js search |
47
+ | `helpers/github.helper.ts` | `GithubHelper` for GitHub API integration (code search, file fetching) |
48
+ | `helpers/logger.helper.ts` | Logging utilities |
49
+ | `tools/base.tool.ts` | Abstract `BaseTool` class for all MCP tools |
50
+ | `tools/docs/` | Documentation tools: `searchDocs`, `getDocContent`, `listDocs`, `listCategories`, `getDocMetadata`, `getPackageOverview` |
51
+ | `tools/github/` | Code/project tools: `searchCode`, `listProjectFiles`, `viewSourceFile`, `verifyDependencies` |
43
52
 
53
+ For detailed MCP server documentation, see [MCP Server Deep Dive](./mcp-server.md).
44
54
 
45
55
  ### `wiki`
46
56